summaryrefslogtreecommitdiff
path: root/include/linux/ac97_codec.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/ac97_codec.h')
-rw-r--r--include/linux/ac97_codec.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/include/linux/ac97_codec.h b/include/linux/ac97_codec.h
index 6936d00ab649..986599666c2b 100644
--- a/include/linux/ac97_codec.h
+++ b/include/linux/ac97_codec.h
@@ -152,8 +152,7 @@ struct ac97_codec {
int dev_mixer;
int type;
- /* codec specific init/reset routines, used mainly for 4 or 6 channel support */
- int (*codec_init) (struct ac97_codec *codec);
+ struct ac97_ops *codec_ops;
/* controller specific lower leverl ac97 accessing routines */
u16 (*codec_read) (struct ac97_codec *codec, u8 reg);
@@ -184,6 +183,20 @@ struct ac97_codec {
int (*modem_ioctl)(struct ac97_codec *codec, unsigned int cmd, unsigned long arg);
};
+/*
+ * Operation structures for each known AC97 chip
+ */
+
+struct ac97_ops
+{
+ /* Initialise */
+ int (*init)(struct ac97_codec *c);
+ /* Amplifier control */
+ int (*amplifier)(struct ac97_codec *codec, int on);
+ /* Digital mode control */
+ int (*digital)(struct ac97_codec *codec, int format);
+};
+
extern int ac97_read_proc (char *page_out, char **start, off_t off,
int count, int *eof, void *data);
extern int ac97_probe_codec(struct ac97_codec *);