diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-11-17 16:06:05 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-01-03 12:27:22 +0100 |
commit | 0ed1cad172176a4595f82e8cd9055938ad54bd4b (patch) | |
tree | b00296e5a061c90debfc4fa8c5303f75042456bc /sound/drivers | |
parent | 597c3c96691c861e837f9024084b4943fa5fc0fd (diff) | |
download | lwn-0ed1cad172176a4595f82e8cd9055938ad54bd4b.tar.gz lwn-0ed1cad172176a4595f82e8cd9055938ad54bd4b.zip |
[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) /* * suspend */ -static int snd_vx_suspend(struct snd_card *card, pm_message_t state) +int snd_vx_suspend(struct vx_core *chip, pm_message_t state) { - struct vx_core *chip = card->pm_private_data; unsigned int i; - snd_assert(chip, return -EINVAL); - + snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot); chip->chip_status |= VX_STAT_IN_SUSPEND; for (i = 0; i < chip->hw->num_codecs; i++) snd_pcm_suspend_all(chip->pcm[i]); @@ -726,13 +724,10 @@ static int snd_vx_suspend(struct snd_card *card, pm_message_t state) /* * resume */ -static int snd_vx_resume(struct snd_card *card) +int snd_vx_resume(struct vx_core *chip) { - struct vx_core *chip = card->pm_private_data; int i, err; - snd_assert(chip, return -EINVAL); - chip->chip_status &= ~VX_STAT_CHIP_INIT; for (i = 0; i < 4; i++) { @@ -748,6 +743,7 @@ static int snd_vx_resume(struct snd_card *card) chip->chip_status |= VX_STAT_CHIP_INIT; chip->chip_status &= ~VX_STAT_IN_SUSPEND; + snd_power_change_state(chip->card, SNDRV_CTL_POWER_D0); return 0; } @@ -789,8 +785,6 @@ struct vx_core *snd_vx_create(struct snd_card *card, struct snd_vx_hardware *hw, strcpy(card->driver, hw->name); sprintf(card->shortname, "Digigram %s", hw->name); - snd_card_set_pm_callback(card, snd_vx_suspend, snd_vx_resume, chip); - vx_proc_init(chip); return chip; @@ -822,3 +816,7 @@ EXPORT_SYMBOL(snd_vx_irq_handler); EXPORT_SYMBOL(snd_vx_dsp_boot); EXPORT_SYMBOL(snd_vx_dsp_load); EXPORT_SYMBOL(snd_vx_load_boot_image); +#ifdef CONFIG_PM +EXPORT_SYMBOL(snd_vx_suspend); +EXPORT_SYMBOL(snd_vx_resume); +#endif |