diff options
author | Aleksey Kunitskiy <alexey.kv@gmail.com> | 2009-11-14 08:18:54 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-11-14 08:32:51 -0500 |
commit | 50d40f187f9182ee8caa1b83f80a0e11e2226baa (patch) | |
tree | cfadd8a1eb211ddb0e36aefbe3b1e243c0f22a48 | |
parent | 401de8184a4d94688962b9258fe10ab309ffda9c (diff) |
ALSA: ice1724 - Patch for suspend/resume for ESI Juli@
Add proper suspend/resume code for Juli@ cards. Based on ice1724
suspend/resume work of Igor Chernyshev.
Fixes bug https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4413
Tested on linux-2.6.31.6
Signed-off-by: Aleksey Kunitskiy <alexey.kv@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/ice1712/juli.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sound/pci/ice1712/juli.c b/sound/pci/ice1712/juli.c index fd948bfd9aef..f5020ad99a10 100644 --- a/sound/pci/ice1712/juli.c +++ b/sound/pci/ice1712/juli.c | |||
@@ -504,6 +504,31 @@ static int __devinit juli_add_controls(struct snd_ice1712 *ice) | |||
504 | } | 504 | } |
505 | 505 | ||
506 | /* | 506 | /* |
507 | * suspend/resume | ||
508 | * */ | ||
509 | |||
510 | #ifdef CONFIG_PM | ||
511 | static int juli_resume(struct snd_ice1712 *ice) | ||
512 | { | ||
513 | struct snd_akm4xxx *ak = ice->akm; | ||
514 | struct juli_spec *spec = ice->spec; | ||
515 | /* akm4358 un-reset, un-mute */ | ||
516 | snd_akm4xxx_reset(ak, 0); | ||
517 | /* reinit ak4114 */ | ||
518 | snd_ak4114_reinit(spec->ak4114); | ||
519 | return 0; | ||
520 | } | ||
521 | |||
522 | static int juli_suspend(struct snd_ice1712 *ice) | ||
523 | { | ||
524 | struct snd_akm4xxx *ak = ice->akm; | ||
525 | /* akm4358 reset and soft-mute */ | ||
526 | snd_akm4xxx_reset(ak, 1); | ||
527 | return 0; | ||
528 | } | ||
529 | #endif | ||
530 | |||
531 | /* | ||
507 | * initialize the chip | 532 | * initialize the chip |
508 | */ | 533 | */ |
509 | 534 | ||
@@ -646,6 +671,13 @@ static int __devinit juli_init(struct snd_ice1712 *ice) | |||
646 | ice->set_spdif_clock = juli_set_spdif_clock; | 671 | ice->set_spdif_clock = juli_set_spdif_clock; |
647 | 672 | ||
648 | ice->spdif.ops.open = juli_spdif_in_open; | 673 | ice->spdif.ops.open = juli_spdif_in_open; |
674 | |||
675 | #ifdef CONFIG_PM | ||
676 | ice->pm_resume = juli_resume; | ||
677 | ice->pm_suspend = juli_suspend; | ||
678 | ice->pm_suspend_enabled = 1; | ||
679 | #endif | ||
680 | |||
649 | return 0; | 681 | return 0; |
650 | } | 682 | } |
651 | 683 | ||