Loading sound/pci/hda/hda_codec.c +18 −11 Original line number Diff line number Diff line Loading @@ -1163,7 +1163,13 @@ int snd_hda_build_controls(struct hda_bus *bus) /* * stream formats */ static unsigned int rate_bits[][3] = { struct hda_rate_tbl { unsigned int hz; unsigned int alsa_bits; unsigned int hda_fmt; }; static struct hda_rate_tbl rate_bits[] = { /* rate in Hz, ALSA rate bitmask, HDA format value */ /* autodetected value used in snd_hda_query_supported_pcm */ Loading @@ -1181,7 +1187,8 @@ static unsigned int rate_bits[][3] = { /* not autodetected value */ { 9600, SNDRV_PCM_RATE_KNOT, 0x0400 }, /* 1/5 x 48 */ { 0 } { 0 } /* terminator */ }; /** Loading @@ -1203,12 +1210,12 @@ unsigned int snd_hda_calc_stream_format(unsigned int rate, int i; unsigned int val = 0; for (i = 0; rate_bits[i][0]; i++) if (rate_bits[i][0] == rate) { val = rate_bits[i][2]; for (i = 0; rate_bits[i].hz; i++) if (rate_bits[i].hz == rate) { val = rate_bits[i].hda_fmt; break; } if (! rate_bits[i][0]) { if (! rate_bits[i].hz) { snd_printdd("invalid rate %d\n", rate); return 0; } Loading Loading @@ -1271,9 +1278,9 @@ int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid, if (ratesp) { u32 rates = 0; for (i = 0; rate_bits[i][0]; i++) { for (i = 0; rate_bits[i].hz; i++) { if (val & (1 << i)) rates |= rate_bits[i][1]; rates |= rate_bits[i].alsa_bits; } *ratesp = rates; } Loading Loading @@ -1365,13 +1372,13 @@ int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid, } rate = format & 0xff00; for (i = 0; rate_bits[i][0]; i++) if (rate_bits[i][2] == rate) { for (i = 0; rate_bits[i].hz; i++) if (rate_bits[i].hda_fmt == rate) { if (val & (1 << i)) break; return 0; } if (! rate_bits[i][0]) if (! rate_bits[i].hz) return 0; stream = snd_hda_param_read(codec, nid, AC_PAR_STREAM); Loading Loading
sound/pci/hda/hda_codec.c +18 −11 Original line number Diff line number Diff line Loading @@ -1163,7 +1163,13 @@ int snd_hda_build_controls(struct hda_bus *bus) /* * stream formats */ static unsigned int rate_bits[][3] = { struct hda_rate_tbl { unsigned int hz; unsigned int alsa_bits; unsigned int hda_fmt; }; static struct hda_rate_tbl rate_bits[] = { /* rate in Hz, ALSA rate bitmask, HDA format value */ /* autodetected value used in snd_hda_query_supported_pcm */ Loading @@ -1181,7 +1187,8 @@ static unsigned int rate_bits[][3] = { /* not autodetected value */ { 9600, SNDRV_PCM_RATE_KNOT, 0x0400 }, /* 1/5 x 48 */ { 0 } { 0 } /* terminator */ }; /** Loading @@ -1203,12 +1210,12 @@ unsigned int snd_hda_calc_stream_format(unsigned int rate, int i; unsigned int val = 0; for (i = 0; rate_bits[i][0]; i++) if (rate_bits[i][0] == rate) { val = rate_bits[i][2]; for (i = 0; rate_bits[i].hz; i++) if (rate_bits[i].hz == rate) { val = rate_bits[i].hda_fmt; break; } if (! rate_bits[i][0]) { if (! rate_bits[i].hz) { snd_printdd("invalid rate %d\n", rate); return 0; } Loading Loading @@ -1271,9 +1278,9 @@ int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid, if (ratesp) { u32 rates = 0; for (i = 0; rate_bits[i][0]; i++) { for (i = 0; rate_bits[i].hz; i++) { if (val & (1 << i)) rates |= rate_bits[i][1]; rates |= rate_bits[i].alsa_bits; } *ratesp = rates; } Loading Loading @@ -1365,13 +1372,13 @@ int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid, } rate = format & 0xff00; for (i = 0; rate_bits[i][0]; i++) if (rate_bits[i][2] == rate) { for (i = 0; rate_bits[i].hz; i++) if (rate_bits[i].hda_fmt == rate) { if (val & (1 << i)) break; return 0; } if (! rate_bits[i][0]) if (! rate_bits[i].hz) return 0; stream = snd_hda_param_read(codec, nid, AC_PAR_STREAM); Loading