[ALSA] hda-codec - Code clean up

HDA Codec driver
Use struct instead of array to improve the readability of hda_codec.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2005-08-22 13:57:55 +02:00 committed by Jaroslav Kysela
parent 9d8f53f2bb
commit befdf316ea
1 changed files with 18 additions and 11 deletions

View File

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