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