[ALSA] ac97 - Allow drivers to set static volume resolution table
authorTakashi Iwai <tiwai@suse.de>
Wed, 15 Mar 2006 12:52:54 +0000 (13:52 +0100)
committerJaroslav Kysela <perex@suse.cz>
Wed, 22 Mar 2006 09:38:46 +0000 (10:38 +0100)
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>
include/sound/ac97_codec.h
sound/pci/ac97/ac97_codec.c

index 9036d25..dee766c 100644 (file)
@@ -433,6 +433,12 @@ struct snd_ac97_bus {
        struct snd_info_entry *proc;
 };
 
+/* static resolution table */
+struct snd_ac97_res_table {
+       unsigned short reg;     /* register */
+       unsigned short bits;    /* resolution bitmask */
+};
+
 struct snd_ac97_template {
        void *private_data;
        void (*private_free) (struct snd_ac97 *ac97);
@@ -442,12 +448,7 @@ struct snd_ac97_template {
        unsigned int scaps;     /* driver capabilities */
        unsigned int limited_regs; /* allow limited registers only */
        DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */
-};
-
-/* static resolution table */
-struct snd_ac97_res_table {
-       unsigned short reg;     /* register */
-       unsigned short bits;    /* resolution bitmask */
+       const struct snd_ac97_res_table *res_table;     /* static resolution */
 };
 
 struct snd_ac97 {
index 38b6c65..c5bbdcb 100644 (file)
@@ -1868,6 +1868,7 @@ int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template,
        ac97->scaps = template->scaps;
        ac97->limited_regs = template->limited_regs;
        memcpy(ac97->reg_accessed, template->reg_accessed, sizeof(ac97->reg_accessed));
+       ac97->res_table = template->res_table;
        bus->codec[ac97->num] = ac97;
        mutex_init(&ac97->reg_mutex);
        mutex_init(&ac97->page_mutex);