ASoC: msmcobalt: Update machine driver to support 32 bit format
Update msmcobalt machine driver to support S32LE format. Also add support of 384Khz for USB_AUDIO_RX. Change-Id: I576bd9c3c776ad5c24a15adf1447a9206dc61b89 Signed-off-by: Ashish Jain <ashishj@codeaurora.org>
This commit is contained in:
parent
eb6adca118
commit
c88c6f97ce
1 changed files with 33 additions and 2 deletions
|
@ -254,7 +254,8 @@ static const char *const slim_tx_ch_text[] = {"One", "Two", "Three", "Four",
|
||||||
"Five", "Six", "Seven",
|
"Five", "Six", "Seven",
|
||||||
"Eight"};
|
"Eight"};
|
||||||
static const char *const vi_feed_ch_text[] = {"One", "Two"};
|
static const char *const vi_feed_ch_text[] = {"One", "Two"};
|
||||||
static char const *bit_format_text[] = {"S16_LE", "S24_LE", "S24_3LE"};
|
static char const *bit_format_text[] = {"S16_LE", "S24_LE", "S24_3LE",
|
||||||
|
"S32_LE"};
|
||||||
static char const *ext_disp_bit_format_text[] = {"S16_LE", "S24_LE"};
|
static char const *ext_disp_bit_format_text[] = {"S16_LE", "S24_LE"};
|
||||||
static char const *slim_sample_rate_text[] = {"KHZ_8", "KHZ_16",
|
static char const *slim_sample_rate_text[] = {"KHZ_8", "KHZ_16",
|
||||||
"KHZ_32", "KHZ_44P1", "KHZ_48",
|
"KHZ_32", "KHZ_44P1", "KHZ_48",
|
||||||
|
@ -269,7 +270,7 @@ static char const *ch_text[] = {"Two", "Three", "Four", "Five",
|
||||||
static char const *usb_sample_rate_text[] = {"KHZ_8", "KHZ_11P025",
|
static char const *usb_sample_rate_text[] = {"KHZ_8", "KHZ_11P025",
|
||||||
"KHZ_16", "KHZ_22P05",
|
"KHZ_16", "KHZ_22P05",
|
||||||
"KHZ_32", "KHZ_44P1", "KHZ_48",
|
"KHZ_32", "KHZ_44P1", "KHZ_48",
|
||||||
"KHZ_96", "KHZ_192"};
|
"KHZ_96", "KHZ_192", "KHZ_384"};
|
||||||
static char const *ext_disp_sample_rate_text[] = {"KHZ_48", "KHZ_96",
|
static char const *ext_disp_sample_rate_text[] = {"KHZ_48", "KHZ_96",
|
||||||
"KHZ_192"};
|
"KHZ_192"};
|
||||||
static const char *const auxpcm_rate_text[] = {"KHZ_8", "KHZ_16"};
|
static const char *const auxpcm_rate_text[] = {"KHZ_8", "KHZ_16"};
|
||||||
|
@ -511,6 +512,9 @@ static int slim_get_bit_format_val(int bit_format)
|
||||||
int val = 0;
|
int val = 0;
|
||||||
|
|
||||||
switch (bit_format) {
|
switch (bit_format) {
|
||||||
|
case SNDRV_PCM_FORMAT_S32_LE:
|
||||||
|
val = 3;
|
||||||
|
break;
|
||||||
case SNDRV_PCM_FORMAT_S24_3LE:
|
case SNDRV_PCM_FORMAT_S24_3LE:
|
||||||
val = 2;
|
val = 2;
|
||||||
break;
|
break;
|
||||||
|
@ -539,6 +543,9 @@ static int slim_get_bit_format(int val)
|
||||||
case 2:
|
case 2:
|
||||||
bit_fmt = SNDRV_PCM_FORMAT_S24_3LE;
|
bit_fmt = SNDRV_PCM_FORMAT_S24_3LE;
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
bit_fmt = SNDRV_PCM_FORMAT_S32_LE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
bit_fmt = SNDRV_PCM_FORMAT_S16_LE;
|
bit_fmt = SNDRV_PCM_FORMAT_S16_LE;
|
||||||
break;
|
break;
|
||||||
|
@ -876,6 +883,9 @@ static int usb_audio_rx_sample_rate_get(struct snd_kcontrol *kcontrol,
|
||||||
int sample_rate_val;
|
int sample_rate_val;
|
||||||
|
|
||||||
switch (usb_rx_cfg.sample_rate) {
|
switch (usb_rx_cfg.sample_rate) {
|
||||||
|
case SAMPLING_RATE_384KHZ:
|
||||||
|
sample_rate_val = 9;
|
||||||
|
break;
|
||||||
case SAMPLING_RATE_192KHZ:
|
case SAMPLING_RATE_192KHZ:
|
||||||
sample_rate_val = 8;
|
sample_rate_val = 8;
|
||||||
break;
|
break;
|
||||||
|
@ -916,6 +926,9 @@ static int usb_audio_rx_sample_rate_put(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
switch (ucontrol->value.integer.value[0]) {
|
switch (ucontrol->value.integer.value[0]) {
|
||||||
|
case 9:
|
||||||
|
usb_rx_cfg.sample_rate = SAMPLING_RATE_384KHZ;
|
||||||
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
usb_rx_cfg.sample_rate = SAMPLING_RATE_192KHZ;
|
usb_rx_cfg.sample_rate = SAMPLING_RATE_192KHZ;
|
||||||
break;
|
break;
|
||||||
|
@ -958,6 +971,9 @@ static int usb_audio_rx_format_get(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
switch (usb_rx_cfg.bit_format) {
|
switch (usb_rx_cfg.bit_format) {
|
||||||
|
case SNDRV_PCM_FORMAT_S32_LE:
|
||||||
|
ucontrol->value.integer.value[0] = 3;
|
||||||
|
break;
|
||||||
case SNDRV_PCM_FORMAT_S24_3LE:
|
case SNDRV_PCM_FORMAT_S24_3LE:
|
||||||
ucontrol->value.integer.value[0] = 2;
|
ucontrol->value.integer.value[0] = 2;
|
||||||
break;
|
break;
|
||||||
|
@ -982,6 +998,9 @@ static int usb_audio_rx_format_put(struct snd_kcontrol *kcontrol,
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
switch (ucontrol->value.integer.value[0]) {
|
switch (ucontrol->value.integer.value[0]) {
|
||||||
|
case 3:
|
||||||
|
usb_rx_cfg.bit_format = SNDRV_PCM_FORMAT_S32_LE;
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
usb_rx_cfg.bit_format = SNDRV_PCM_FORMAT_S24_3LE;
|
usb_rx_cfg.bit_format = SNDRV_PCM_FORMAT_S24_3LE;
|
||||||
break;
|
break;
|
||||||
|
@ -1024,6 +1043,9 @@ static int usb_audio_tx_sample_rate_get(struct snd_kcontrol *kcontrol,
|
||||||
int sample_rate_val;
|
int sample_rate_val;
|
||||||
|
|
||||||
switch (usb_tx_cfg.sample_rate) {
|
switch (usb_tx_cfg.sample_rate) {
|
||||||
|
case SAMPLING_RATE_384KHZ:
|
||||||
|
sample_rate_val = 9;
|
||||||
|
break;
|
||||||
case SAMPLING_RATE_192KHZ:
|
case SAMPLING_RATE_192KHZ:
|
||||||
sample_rate_val = 8;
|
sample_rate_val = 8;
|
||||||
break;
|
break;
|
||||||
|
@ -1066,6 +1088,9 @@ static int usb_audio_tx_sample_rate_put(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
switch (ucontrol->value.integer.value[0]) {
|
switch (ucontrol->value.integer.value[0]) {
|
||||||
|
case 9:
|
||||||
|
usb_tx_cfg.sample_rate = SAMPLING_RATE_384KHZ;
|
||||||
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
usb_tx_cfg.sample_rate = SAMPLING_RATE_192KHZ;
|
usb_tx_cfg.sample_rate = SAMPLING_RATE_192KHZ;
|
||||||
break;
|
break;
|
||||||
|
@ -1108,6 +1133,9 @@ static int usb_audio_tx_format_get(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
switch (usb_tx_cfg.bit_format) {
|
switch (usb_tx_cfg.bit_format) {
|
||||||
|
case SNDRV_PCM_FORMAT_S32_LE:
|
||||||
|
ucontrol->value.integer.value[0] = 3;
|
||||||
|
break;
|
||||||
case SNDRV_PCM_FORMAT_S24_3LE:
|
case SNDRV_PCM_FORMAT_S24_3LE:
|
||||||
ucontrol->value.integer.value[0] = 2;
|
ucontrol->value.integer.value[0] = 2;
|
||||||
break;
|
break;
|
||||||
|
@ -1132,6 +1160,9 @@ static int usb_audio_tx_format_put(struct snd_kcontrol *kcontrol,
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
switch (ucontrol->value.integer.value[0]) {
|
switch (ucontrol->value.integer.value[0]) {
|
||||||
|
case 3:
|
||||||
|
usb_tx_cfg.bit_format = SNDRV_PCM_FORMAT_S32_LE;
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
usb_tx_cfg.bit_format = SNDRV_PCM_FORMAT_S24_3LE;
|
usb_tx_cfg.bit_format = SNDRV_PCM_FORMAT_S24_3LE;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue