Commit a961f9fe authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] hda-codec - Add support of 96kHz back

Added the support of 96kHz sample rate back.  Although the rate isn't
listed in the ACC_PAR_PCM bits but si3054 codecs do support this rate
explicitly.  Now fixed the deteciton code not to check this extra bit.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent bc9f98a9
...@@ -1368,6 +1368,11 @@ static struct hda_rate_tbl rate_bits[] = { ...@@ -1368,6 +1368,11 @@ static struct hda_rate_tbl rate_bits[] = {
{ 96000, SNDRV_PCM_RATE_96000, 0x0800 }, /* 2 x 48 */ { 96000, SNDRV_PCM_RATE_96000, 0x0800 }, /* 2 x 48 */
{ 176400, SNDRV_PCM_RATE_176400, 0x5800 },/* 4 x 44 */ { 176400, SNDRV_PCM_RATE_176400, 0x5800 },/* 4 x 44 */
{ 192000, SNDRV_PCM_RATE_192000, 0x1800 }, /* 4 x 48 */ { 192000, SNDRV_PCM_RATE_192000, 0x1800 }, /* 4 x 48 */
#define AC_PAR_PCM_RATE_BITS 11
/* up to bits 10, 384kHZ isn't supported properly */
/* not autodetected value */
{ 9600, SNDRV_PCM_RATE_KNOT, 0x0400 }, /* 1/5 x 48 */
{ 0 } /* terminator */ { 0 } /* terminator */
}; };
...@@ -1461,7 +1466,7 @@ int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid, ...@@ -1461,7 +1466,7 @@ int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid,
if (ratesp) { if (ratesp) {
u32 rates = 0; u32 rates = 0;
for (i = 0; rate_bits[i].hz; i++) { for (i = 0; i < AC_PAR_PCM_RATE_BITS; i++) {
if (val & (1 << i)) if (val & (1 << i))
rates |= rate_bits[i].alsa_bits; rates |= rate_bits[i].alsa_bits;
} }
...@@ -1555,13 +1560,13 @@ int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid, ...@@ -1555,13 +1560,13 @@ int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid,
} }
rate = format & 0xff00; rate = format & 0xff00;
for (i = 0; rate_bits[i].hz; i++) for (i = 0; i < AC_PAR_PCM_RATE_BITS; i++)
if (rate_bits[i].hda_fmt == rate) { if (rate_bits[i].hda_fmt == rate) {
if (val & (1 << i)) if (val & (1 << i))
break; break;
return 0; return 0;
} }
if (! rate_bits[i].hz) if (i >= AC_PAR_PCM_RATE_BITS)
return 0; return 0;
stream = snd_hda_param_read(codec, nid, AC_PAR_STREAM); stream = snd_hda_param_read(codec, nid, AC_PAR_STREAM);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment