diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-03-15 07:52:54 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-03-22 04:38:46 -0500 |
commit | 7c5706bb33687ce82f30d9ac06dd1bdf71b2262e (patch) | |
tree | e27123653733102519235d209e5c4de6be206b4f | |
parent | 4ccb4a4387b3ed8c5a03862ef1e6f7be484ade25 (diff) |
[ALSA] ac97 - Allow drivers to set static volume resolution table
Modules: AC97 Codec
Add the pointer to a static volume resolution table to ac97 template,
so that the drivers can define the volume resolution, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | include/sound/ac97_codec.h | 13 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 1 |
2 files changed, 8 insertions, 6 deletions
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h index 9036d25e1bac..dee766c17e9c 100644 --- a/include/sound/ac97_codec.h +++ b/include/sound/ac97_codec.h | |||
@@ -433,6 +433,12 @@ struct snd_ac97_bus { | |||
433 | struct snd_info_entry *proc; | 433 | struct snd_info_entry *proc; |
434 | }; | 434 | }; |
435 | 435 | ||
436 | /* static resolution table */ | ||
437 | struct snd_ac97_res_table { | ||
438 | unsigned short reg; /* register */ | ||
439 | unsigned short bits; /* resolution bitmask */ | ||
440 | }; | ||
441 | |||
436 | struct snd_ac97_template { | 442 | struct snd_ac97_template { |
437 | void *private_data; | 443 | void *private_data; |
438 | void (*private_free) (struct snd_ac97 *ac97); | 444 | void (*private_free) (struct snd_ac97 *ac97); |
@@ -442,12 +448,7 @@ struct snd_ac97_template { | |||
442 | unsigned int scaps; /* driver capabilities */ | 448 | unsigned int scaps; /* driver capabilities */ |
443 | unsigned int limited_regs; /* allow limited registers only */ | 449 | unsigned int limited_regs; /* allow limited registers only */ |
444 | DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */ | 450 | DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */ |
445 | }; | 451 | const struct snd_ac97_res_table *res_table; /* static resolution */ |
446 | |||
447 | /* static resolution table */ | ||
448 | struct snd_ac97_res_table { | ||
449 | unsigned short reg; /* register */ | ||
450 | unsigned short bits; /* resolution bitmask */ | ||
451 | }; | 452 | }; |
452 | 453 | ||
453 | struct snd_ac97 { | 454 | struct snd_ac97 { |
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 38b6c65d40c3..c5bbdcbf5422 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -1868,6 +1868,7 @@ int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template, | |||
1868 | ac97->scaps = template->scaps; | 1868 | ac97->scaps = template->scaps; |
1869 | ac97->limited_regs = template->limited_regs; | 1869 | ac97->limited_regs = template->limited_regs; |
1870 | memcpy(ac97->reg_accessed, template->reg_accessed, sizeof(ac97->reg_accessed)); | 1870 | memcpy(ac97->reg_accessed, template->reg_accessed, sizeof(ac97->reg_accessed)); |
1871 | ac97->res_table = template->res_table; | ||
1871 | bus->codec[ac97->num] = ac97; | 1872 | bus->codec[ac97->num] = ac97; |
1872 | mutex_init(&ac97->reg_mutex); | 1873 | mutex_init(&ac97->reg_mutex); |
1873 | mutex_init(&ac97->page_mutex); | 1874 | mutex_init(&ac97->page_mutex); |