|
@@ -989,11 +989,41 @@ static int em28xx_audio_fini(struct em28xx *dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int em28xx_audio_suspend(struct em28xx *dev)
|
|
|
+{
|
|
|
+ if (dev == NULL)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ if (!dev->has_alsa_audio)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ em28xx_info("Suspending audio extension");
|
|
|
+ em28xx_deinit_isoc_audio(dev);
|
|
|
+ atomic_set(&dev->stream_started, 0);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int em28xx_audio_resume(struct em28xx *dev)
|
|
|
+{
|
|
|
+ if (dev == NULL)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ if (!dev->has_alsa_audio)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ em28xx_info("Resuming audio extension");
|
|
|
+ /* Nothing to do other than schedule_work() ?? */
|
|
|
+ schedule_work(&dev->wq_trigger);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static struct em28xx_ops audio_ops = {
|
|
|
.id = EM28XX_AUDIO,
|
|
|
.name = "Em28xx Audio Extension",
|
|
|
.init = em28xx_audio_init,
|
|
|
.fini = em28xx_audio_fini,
|
|
|
+ .suspend = em28xx_audio_suspend,
|
|
|
+ .resume = em28xx_audio_resume,
|
|
|
};
|
|
|
|
|
|
static int __init em28xx_alsa_register(void)
|