aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-03-15 07:52:54 -0500
committerJaroslav Kysela <perex@suse.cz>2006-03-22 04:38:46 -0500
commit7c5706bb33687ce82f30d9ac06dd1bdf71b2262e (patch)
treee27123653733102519235d209e5c4de6be206b4f
parent4ccb4a4387b3ed8c5a03862ef1e6f7be484ade25 (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.h13
-rw-r--r--sound/pci/ac97/ac97_codec.c1
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 */
437struct snd_ac97_res_table {
438 unsigned short reg; /* register */
439 unsigned short bits; /* resolution bitmask */
440};
441
436struct snd_ac97_template { 442struct 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 */
448struct snd_ac97_res_table {
449 unsigned short reg; /* register */
450 unsigned short bits; /* resolution bitmask */
451}; 452};
452 453
453struct snd_ac97 { 454struct 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);