AC97 plugin suspend/resume
PATCH RESEND 1/1 AC97 plugin suspend/resume
Hi Alan,
Please disregard the previous AC97 suspend/resume patch.
Changes:-
- Add suspend/resume methods to the ac97 codec plugin driver structure.
- Add code to ac97_codec to allow these methods to be safely called for the specified codec.
Signed-off-by Russell King <[email protected]>
Liam
sound/oss/ac97_codec.c +27 -0
@@ -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
include/linux/ac97_codec.h +4 -0
@@ -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);