Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 6556
b: refs/heads/master
c: befdf31
h: refs/heads/master
v: v3
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed Aug 30, 2005
1 parent f9584b6 commit 49f6459
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9d8f53f2bba3c2c06e1e78126222aecf91f8ecdd
refs/heads/master: befdf316eaba02ed52284fb78a8027ff35c6a736
29 changes: 18 additions & 11 deletions trunk/sound/pci/hda/hda_codec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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 */
};

/**
Expand All @@ -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;
}
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 49f6459

Please sign in to comment.