Update of /cvsroot/alsa/alsa-kernel/isa/ad1848 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19034/isa/ad1848
Modified Files: ad1848_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: ad1848_lib.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/isa/ad1848/ad1848_lib.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- ad1848_lib.c 6 Mar 2004 16:51:29 -0000 1.34 +++ ad1848_lib.c 8 Apr 2004 16:34:59 -0000 1.35 @@ -647,12 +647,12 @@ } #ifdef CONFIG_PM -static void snd_ad1848_suspend(ad1848_t *chip) { - - snd_card_t *card = chip->card; +static int snd_ad1848_suspend(snd_card_t *card, unsigned int state) +{ + ad1848_t *chip = snd_magic_cast(ad1848_t, card->pm_private_data, return -EINVAL); if (card->power_state == SNDRV_CTL_POWER_D3hot) - return; + return 0; snd_pcm_suspend_all(chip->pcm); /* FIXME: save registers? */ @@ -661,14 +661,15 @@ snd_ad1848_thinkpad_twiddle(chip, 0); snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); + return 0; } -static void snd_ad1848_resume(ad1848_t *chip) { - - snd_card_t *card = chip->card; +static int snd_ad1848_resume(snd_card_t *card, unsigned int state) +{ + ad1848_t *chip = snd_magic_cast(ad1848_t, card->pm_private_data, return -EINVAL); if (card->power_state == SNDRV_CTL_POWER_D0) - return; + return 0; if (chip->thinkpad_flag) snd_ad1848_thinkpad_twiddle(chip, 1); @@ -676,43 +677,8 @@ /* FIXME: restore registers? */ snd_power_change_state(card, SNDRV_CTL_POWER_D0); -} - -/* callback for control API */ -static int snd_ad1848_set_power_state(snd_card_t *card, unsigned int power_state) -{ - ad1848_t *chip = (ad1848_t *) card->power_state_private_data; - switch (power_state) { - case SNDRV_CTL_POWER_D0: - case SNDRV_CTL_POWER_D1: - case SNDRV_CTL_POWER_D2: - snd_ad1848_resume(chip); - break; - case SNDRV_CTL_POWER_D3hot: - case SNDRV_CTL_POWER_D3cold: - snd_ad1848_suspend(chip); - break; - default: - return -EINVAL; - } return 0; } - -static int snd_ad1848_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data) -{ - ad1848_t *chip = snd_magic_cast(ad1848_t, dev->data, return 0); - - switch (rqst) { - case PM_SUSPEND: - snd_ad1848_suspend(chip); - break; - case PM_RESUME: - snd_ad1848_resume(chip); - break; - } - return 0; -} - #endif /* CONFIG_PM */ static int snd_ad1848_probe(ad1848_t * chip) @@ -891,10 +857,6 @@ static int snd_ad1848_free(ad1848_t *chip) { -#ifdef CONFIG_PM - if (chip->thinkpad_pmstate) - pm_unregister(chip->thinkpad_pmstate); -#endif if (chip->res_port) { release_resource(chip->res_port); kfree_nocheck(chip->res_port); @@ -973,14 +935,7 @@ chip->thinkpad_flag = 1; chip->hardware = AD1848_HW_DETECT; /* reset */ snd_ad1848_thinkpad_twiddle(chip, 1); -#ifdef CONFIG_PM - chip->thinkpad_pmstate = pm_register(PM_ISA_DEV, 0, snd_ad1848_pm_callback); - if (chip->thinkpad_pmstate) { - chip->thinkpad_pmstate->data = chip; - card->set_power_state = snd_ad1848_set_power_state; /* callback */ - card->power_state_private_data = chip; - } -#endif + snd_card_set_isa_pm_callback(card, snd_ad1848_suspend, snd_ad1848_resume, chip); } if (snd_ad1848_probe(chip) < 0) { ------------------------------------------------------- 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