[PATCH 1/2] AC97 plugin suspend/resume

From: Liam Girdwood
Date: Tue Jan 04 2005 - 09:56:55 EST


This patch adds suspend and resume support to OSS AC97 plugins.

Changes :-

o added suspend/resume callbacks to struct ac97_driver
o added suspend/resume handlers to ac97_codec.c

Signed-off-by: Liam Girdwood <liam.girdwood@xxxxxxxxxxxxxxxx>

Liam
--- a/sound/oss/ac97_codec.c 2004-12-24 21:34:00.000000000 +0000
+++ b/sound/oss/ac97_codec.c 2004-12-08 17:08:42.000000000 +0000
@@ -1391,6 +1421,33 @@

EXPORT_SYMBOL(ac97_restore_state);

+int ac97_suspend(struct ac97_codec *codec, int state)
+{
+ struct ac97_driver *driver;
+ int ret = 0;
+
+ down(&codec_sem);
+ driver = codec->driver;
+ if (driver != NULL && driver->suspend)
+ ret = driver->suspend(codec, state);
+ up(&codec_sem);
+
+ return ret;
+}
+EXPORT_SYMBOL(ac97_suspend);
+
+void ac97_resume(struct ac97_codec *codec)
+{
+ struct ac97_driver *driver;
+
+ down(&codec_sem);
+ driver = codec->driver;
+ if (driver != NULL && driver->resume)
+ driver->resume(codec);
+ up(&codec_sem);
+}
+EXPORT_SYMBOL(ac97_resume);
+
/**
* ac97_register_driver - register a codec helper
* @driver: Driver handler
--- a/include/linux/ac97_codec.h 2004-12-24 21:33:50.000000000 +0000
+++ b/include/linux/ac97_codec.h 2004-12-08 13:28:42.000000000 +0000
@@ -299,6 +300,8 @@
extern unsigned int ac97_set_dac_rate(struct ac97_codec *codec, unsigned int rate);
extern int ac97_save_state(struct ac97_codec *codec);
extern int ac97_restore_state(struct ac97_codec *codec);
+extern int ac97_suspend(struct ac97_codec *codec, int state);
+extern void ac97_resume(struct ac97_codec *codec);

extern struct ac97_codec *ac97_alloc_codec(void);
extern void ac97_release_codec(struct ac97_codec *codec);
@@ -310,6 +313,8 @@
u32 codec_mask;
int (*probe) (struct ac97_codec *codec, struct ac97_driver *driver);
void (*remove) (struct ac97_codec *codec, struct ac97_driver *driver);
+ int (*suspend) (struct ac97_codec *codec, int state);
+ void (*resume) (struct ac97_codec *codec);
};

extern int ac97_register_driver(struct ac97_driver *driver);