diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-11-17 10:06:05 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-01-03 06:27:22 -0500 |
commit | 0ed1cad172176a4595f82e8cd9055938ad54bd4b (patch) | |
tree | b00296e5a061c90debfc4fa8c5303f75042456bc /sound/drivers | |
parent | 597c3c96691c861e837f9024084b4943fa5fc0fd (diff) |
[ALSA] vx-driver - Fix PM support
Fix PM support on VX drivers (vxpocket and vx222).
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/drivers')
-rw-r--r-- | sound/drivers/vx/vx_core.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sound/drivers/vx/vx_core.c b/sound/drivers/vx/vx_core.c index 5abf42351772..43f615d7a545 100644 --- a/sound/drivers/vx/vx_core.c +++ b/sound/drivers/vx/vx_core.c | |||
@@ -709,13 +709,11 @@ int snd_vx_dsp_load(struct vx_core *chip, const struct firmware *dsp) | |||
709 | /* | 709 | /* |
710 | * suspend | 710 | * suspend |
711 | */ | 711 | */ |
712 | static int snd_vx_suspend(struct snd_card *card, pm_message_t state) | 712 | int snd_vx_suspend(struct vx_core *chip, pm_message_t state) |
713 | { | 713 | { |
714 | struct vx_core *chip = card->pm_private_data; | ||
715 | unsigned int i; | 714 | unsigned int i; |
716 | 715 | ||
717 | snd_assert(chip, return -EINVAL); | 716 | snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot); |
718 | |||
719 | chip->chip_status |= VX_STAT_IN_SUSPEND; | 717 | chip->chip_status |= VX_STAT_IN_SUSPEND; |
720 | for (i = 0; i < chip->hw->num_codecs; i++) | 718 | for (i = 0; i < chip->hw->num_codecs; i++) |
721 | snd_pcm_suspend_all(chip->pcm[i]); | 719 | snd_pcm_suspend_all(chip->pcm[i]); |
@@ -726,13 +724,10 @@ static int snd_vx_suspend(struct snd_card *card, pm_message_t state) | |||
726 | /* | 724 | /* |
727 | * resume | 725 | * resume |
728 | */ | 726 | */ |
729 | static int snd_vx_resume(struct snd_card *card) | 727 | int snd_vx_resume(struct vx_core *chip) |
730 | { | 728 | { |
731 | struct vx_core *chip = card->pm_private_data; | ||
732 | int i, err; | 729 | int i, err; |
733 | 730 | ||
734 | snd_assert(chip, return -EINVAL); | ||
735 | |||
736 | chip->chip_status &= ~VX_STAT_CHIP_INIT; | 731 | chip->chip_status &= ~VX_STAT_CHIP_INIT; |
737 | 732 | ||
738 | for (i = 0; i < 4; i++) { | 733 | for (i = 0; i < 4; i++) { |
@@ -748,6 +743,7 @@ static int snd_vx_resume(struct snd_card *card) | |||
748 | chip->chip_status |= VX_STAT_CHIP_INIT; | 743 | chip->chip_status |= VX_STAT_CHIP_INIT; |
749 | chip->chip_status &= ~VX_STAT_IN_SUSPEND; | 744 | chip->chip_status &= ~VX_STAT_IN_SUSPEND; |
750 | 745 | ||
746 | snd_power_change_state(chip->card, SNDRV_CTL_POWER_D0); | ||
751 | return 0; | 747 | return 0; |
752 | } | 748 | } |
753 | 749 | ||
@@ -789,8 +785,6 @@ struct vx_core *snd_vx_create(struct snd_card *card, struct snd_vx_hardware *hw, | |||
789 | strcpy(card->driver, hw->name); | 785 | strcpy(card->driver, hw->name); |
790 | sprintf(card->shortname, "Digigram %s", hw->name); | 786 | sprintf(card->shortname, "Digigram %s", hw->name); |
791 | 787 | ||
792 | snd_card_set_pm_callback(card, snd_vx_suspend, snd_vx_resume, chip); | ||
793 | |||
794 | vx_proc_init(chip); | 788 | vx_proc_init(chip); |
795 | 789 | ||
796 | return chip; | 790 | return chip; |
@@ -822,3 +816,7 @@ EXPORT_SYMBOL(snd_vx_irq_handler); | |||
822 | EXPORT_SYMBOL(snd_vx_dsp_boot); | 816 | EXPORT_SYMBOL(snd_vx_dsp_boot); |
823 | EXPORT_SYMBOL(snd_vx_dsp_load); | 817 | EXPORT_SYMBOL(snd_vx_dsp_load); |
824 | EXPORT_SYMBOL(snd_vx_load_boot_image); | 818 | EXPORT_SYMBOL(snd_vx_load_boot_image); |
819 | #ifdef CONFIG_PM | ||
820 | EXPORT_SYMBOL(snd_vx_suspend); | ||
821 | EXPORT_SYMBOL(snd_vx_resume); | ||
822 | #endif | ||