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);
        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 {
 
        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);