diff options
Diffstat (limited to 'include/sound/ac97_codec.h')
| -rw-r--r-- | include/sound/ac97_codec.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h index b0b3ea7b365e..b45a73712748 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); |
| @@ -440,8 +446,7 @@ struct snd_ac97_template { | |||
| 440 | unsigned short num; /* number of codec: 0 = primary, 1 = secondary */ | 446 | unsigned short num; /* number of codec: 0 = primary, 1 = secondary */ |
| 441 | unsigned short addr; /* physical address of codec [0-3] */ | 447 | unsigned short addr; /* physical address of codec [0-3] */ |
| 442 | unsigned int scaps; /* driver capabilities */ | 448 | unsigned int scaps; /* driver capabilities */ |
| 443 | unsigned int limited_regs; /* allow limited registers only */ | 449 | const struct snd_ac97_res_table *res_table; /* static resolution */ |
| 444 | DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */ | ||
| 445 | }; | 450 | }; |
| 446 | 451 | ||
| 447 | struct snd_ac97 { | 452 | struct snd_ac97 { |
| @@ -456,20 +461,20 @@ struct snd_ac97 { | |||
| 456 | struct snd_info_entry *proc_regs; | 461 | struct snd_info_entry *proc_regs; |
| 457 | unsigned short subsystem_vendor; | 462 | unsigned short subsystem_vendor; |
| 458 | unsigned short subsystem_device; | 463 | unsigned short subsystem_device; |
| 459 | struct semaphore reg_mutex; | 464 | struct mutex reg_mutex; |
| 460 | struct semaphore page_mutex; /* mutex for AD18xx multi-codecs and paging (2.3) */ | 465 | struct mutex page_mutex; /* mutex for AD18xx multi-codecs and paging (2.3) */ |
| 461 | unsigned short num; /* number of codec: 0 = primary, 1 = secondary */ | 466 | unsigned short num; /* number of codec: 0 = primary, 1 = secondary */ |
| 462 | unsigned short addr; /* physical address of codec [0-3] */ | 467 | unsigned short addr; /* physical address of codec [0-3] */ |
| 463 | unsigned int id; /* identification of codec */ | 468 | unsigned int id; /* identification of codec */ |
| 464 | unsigned short caps; /* capabilities (register 0) */ | 469 | unsigned short caps; /* capabilities (register 0) */ |
| 465 | unsigned short ext_id; /* extended feature identification (register 28) */ | 470 | unsigned short ext_id; /* extended feature identification (register 28) */ |
| 466 | unsigned short ext_mid; /* extended modem ID (register 3C) */ | 471 | unsigned short ext_mid; /* extended modem ID (register 3C) */ |
| 472 | const struct snd_ac97_res_table *res_table; /* static resolution */ | ||
| 467 | unsigned int scaps; /* driver capabilities */ | 473 | unsigned int scaps; /* driver capabilities */ |
| 468 | unsigned int flags; /* specific code */ | 474 | unsigned int flags; /* specific code */ |
| 469 | unsigned int rates[6]; /* see AC97_RATES_* defines */ | 475 | unsigned int rates[6]; /* see AC97_RATES_* defines */ |
| 470 | unsigned int spdif_status; | 476 | unsigned int spdif_status; |
| 471 | unsigned short regs[0x80]; /* register cache */ | 477 | unsigned short regs[0x80]; /* register cache */ |
| 472 | unsigned int limited_regs; /* allow limited registers only */ | ||
| 473 | DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */ | 478 | DECLARE_BITMAP(reg_accessed, 0x80); /* bit flags */ |
| 474 | union { /* vendor specific code */ | 479 | union { /* vendor specific code */ |
| 475 | struct { | 480 | struct { |
