linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / sound / ac97_codec.h
index b45a737..b0b3ea7 100644 (file)
@@ -433,12 +433,6 @@ 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);
@@ -446,7 +440,8 @@ struct snd_ac97_template {
        unsigned short num;     /* number of codec: 0 = primary, 1 = secondary */
        unsigned short addr;    /* physical address of codec [0-3] */
        unsigned int scaps;     /* driver capabilities */
-       const struct snd_ac97_res_table *res_table;     /* static resolution */
+       unsigned int limited_regs; /* allow limited registers only */
+       DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */
 };
 
 struct snd_ac97 {
@@ -461,20 +456,20 @@ struct snd_ac97 {
        struct snd_info_entry *proc_regs;
        unsigned short subsystem_vendor;
        unsigned short subsystem_device;
-       struct mutex reg_mutex;
-       struct mutex page_mutex;        /* mutex for AD18xx multi-codecs and paging (2.3) */
+       struct semaphore reg_mutex;
+       struct semaphore page_mutex;    /* mutex for AD18xx multi-codecs and paging (2.3) */
        unsigned short num;     /* number of codec: 0 = primary, 1 = secondary */
        unsigned short addr;    /* physical address of codec [0-3] */
        unsigned int id;        /* identification of codec */
        unsigned short caps;    /* capabilities (register 0) */
        unsigned short ext_id;  /* extended feature identification (register 28) */
        unsigned short ext_mid; /* extended modem ID (register 3C) */
-       const struct snd_ac97_res_table *res_table;     /* static resolution */
        unsigned int scaps;     /* driver capabilities */
        unsigned int flags;     /* specific code */
        unsigned int rates[6];  /* see AC97_RATES_* defines */
        unsigned int spdif_status;
        unsigned short regs[0x80]; /* register cache */
+       unsigned int limited_regs; /* allow limited registers only */
        DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */
        union {                 /* vendor specific code */
                struct {