Update of /cvsroot/alsa/alsa-kernel/pci/cs46xx In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19034/pci/cs46xx
Modified Files: cs46xx.c cs46xx_lib.c Log Message: Clean up of power-management codes. - moved commonly used codes to the core layer. - using the unified suspend/resume callbacks for PCI and ISA - added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks() as the registration functions. Index: cs46xx.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/cs46xx/cs46xx.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- cs46xx.c 7 Apr 2004 17:48:19 -0000 1.25 +++ cs46xx.c 8 Apr 2004 16:35:00 -0000 1.26 @@ -158,31 +158,14 @@ return err; } - pci_set_drvdata(pci, chip); + pci_set_drvdata(pci, card); dev++; return 0; } -#ifdef CONFIG_PM -static int snd_card_cs46xx_suspend(struct pci_dev *pci, u32 state) -{ - cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return -ENXIO); - snd_cs46xx_suspend(chip); - return 0; -} -static int snd_card_cs46xx_resume(struct pci_dev *pci) -{ - cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return -ENXIO); - snd_cs46xx_resume(chip); - return 0; -} -#endif - static void __devexit snd_card_cs46xx_remove(struct pci_dev *pci) { - cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return); - if (chip) - snd_card_free(chip->card); + snd_card_free(pci_get_drvdata(pci)); pci_set_drvdata(pci, NULL); } @@ -191,10 +174,7 @@ .id_table = snd_cs46xx_ids, .probe = snd_card_cs46xx_probe, .remove = __devexit_p(snd_card_cs46xx_remove), -#ifdef CONFIG_PM - .suspend = snd_card_cs46xx_suspend, - .resume = snd_card_cs46xx_resume, -#endif + SND_PCI_PM_CALLBACKS }; static int __init alsa_card_cs46xx_init(void) Index: cs46xx_lib.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/cs46xx/cs46xx_lib.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 --- cs46xx_lib.c 6 Mar 2004 16:51:30 -0000 1.71 +++ cs46xx_lib.c 8 Apr 2004 16:35:00 -0000 1.72 @@ -3784,14 +3784,11 @@ * APM support */ #ifdef CONFIG_PM -void snd_cs46xx_suspend(cs46xx_t *chip) +static int snd_cs46xx_suspend(snd_card_t *card, unsigned int state) { + cs46xx_t *chip = snd_magic_cast(cs46xx_t, card->pm_private_data, return -EINVAL); int amp_saved; - snd_card_t *card = chip->card; - - if (card->power_state == SNDRV_CTL_POWER_D3hot) - return; snd_pcm_suspend_all(chip->pcm); // chip->ac97_powerdown = snd_cs46xx_codec_read(chip, AC97_POWER_CONTROL); // chip->ac97_general_purpose = snd_cs46xx_codec_read(chip, BA0_AC97_GENERAL_PURPOSE); @@ -3803,16 +3800,14 @@ chip->active_ctrl(chip, -chip->amplifier); chip->amplifier = amp_saved; /* restore the status */ snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); + return 0; } -void snd_cs46xx_resume(cs46xx_t *chip) +static int snd_cs46xx_resume(snd_card_t *card, unsigned int state) { - snd_card_t *card = chip->card; + cs46xx_t *chip = snd_magic_cast(cs46xx_t, card->pm_private_data, return -EINVAL); int amp_saved; - if (card->power_state == SNDRV_CTL_POWER_D0) - return; - pci_enable_device(chip->pci); amp_saved = chip->amplifier; chip->amplifier = 0; @@ -3839,25 +3834,6 @@ chip->active_ctrl(chip, -1); /* disable CLKRUN */ chip->amplifier = amp_saved; snd_power_change_state(card, SNDRV_CTL_POWER_D0); -} - -static int snd_cs46xx_set_power_state(snd_card_t *card, unsigned int power_state) -{ - cs46xx_t *chip = snd_magic_cast(cs46xx_t, card->power_state_private_data, return -ENXIO); - - switch (power_state) { - case SNDRV_CTL_POWER_D0: - case SNDRV_CTL_POWER_D1: - case SNDRV_CTL_POWER_D2: - snd_cs46xx_resume(chip); - break; - case SNDRV_CTL_POWER_D3hot: - case SNDRV_CTL_POWER_D3cold: - snd_cs46xx_suspend(chip); - break; - default: - return -EINVAL; - } return 0; } #endif /* CONFIG_PM */ @@ -4010,10 +3986,7 @@ snd_cs46xx_proc_init(card, chip); -#ifdef CONFIG_PM - card->set_power_state = snd_cs46xx_set_power_state; - card->power_state_private_data = chip; -#endif + snd_card_set_pm_callback(card, snd_cs46xx_suspend, snd_cs46xx_resume, chip); if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { snd_cs46xx_free(chip); ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog