Update of /cvsroot/alsa/alsa-kernel/ppc
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22330

Modified Files:
        pmac.c pmac.h 
Log Message:
fixed the suspend/resume with the new ALSA common callbacks.


Index: pmac.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/ppc/pmac.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- pmac.c      17 Mar 2004 08:07:01 -0000      1.26
+++ pmac.c      15 Apr 2004 16:23:18 -0000      1.27
@@ -42,7 +42,6 @@
 #if defined(CONFIG_PM) && defined(CONFIG_PMAC_PBOOK)
 static int snd_pmac_register_sleep_notifier(pmac_t *chip);
 static int snd_pmac_unregister_sleep_notifier(pmac_t *chip);
-static int snd_pmac_set_power_state(snd_card_t *card, unsigned int power_state);
 #endif
 
 
@@ -1197,13 +1196,10 @@
  * Save state when going to sleep, restore it afterwards.
  */
 
-static void snd_pmac_suspend(pmac_t *chip)
+static int snd_pmac_suspend(snd_card_t *card, unsigned int state)
 {
+       pmac_t *chip = snd_magic_cast(pmac_t, card->pm_private_data, return -EINVAL);
        unsigned long flags;
-       snd_card_t *card = chip->card;
-
-       if (card->power_state == SNDRV_CTL_POWER_D3hot)
-               return;
 
        if (chip->suspend)
                chip->suspend(chip);
@@ -1219,14 +1215,12 @@
                disable_irq(chip->rx_irq);
        snd_pmac_sound_feature(chip, 0);
        snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+       return 0;
 }
 
-static void snd_pmac_resume(pmac_t *chip)
+static int snd_pmac_resume(snd_card_t *card, unsigned int state)
 {
-       snd_card_t *card = chip->card;
-
-       if (card->power_state == SNDRV_CTL_POWER_D0)
-               return;
+       pmac_t *chip = snd_magic_cast(pmac_t, card->pm_private_data, return -EINVAL);
 
        snd_pmac_sound_feature(chip, 1);
        if (chip->resume)
@@ -1248,6 +1242,7 @@
                enable_irq(chip->rx_irq);
 
        snd_power_change_state(card, SNDRV_CTL_POWER_D0);
+       return 0;
 }
 
 /* the chip is stored statically by snd_pmac_register_sleep_notifier
@@ -1264,10 +1259,10 @@
 
        switch (when) {
        case PBOOK_SLEEP_NOW:
-               snd_pmac_suspend(chip);
+               snd_pmac_suspend(chip->card, 0);
                break;
        case PBOOK_WAKE:
-               snd_pmac_resume(chip);
+               snd_pmac_resume(chip->card, 0);
                break;
        }
        return PBOOK_SLEEP_OK;
@@ -1286,14 +1281,12 @@
        }
        sleeping_pmac = chip;
        pmu_register_sleep_notifier(&snd_pmac_sleep_notifier);
-       chip->sleep_registered = 1;
+       snd_card_set_pm_callback(chip->card, snd_pmac_suspend, snd_pmac_resume, chip);
        return 0;
 }
                                                    
 static int snd_pmac_unregister_sleep_notifier(pmac_t *chip)
 {
-       if (! chip->sleep_registered)
-               return 0;
        /* should be protected here.. */
        if (sleeping_pmac != chip)
                return -ENODEV;
@@ -1302,24 +1295,4 @@
        return 0;
 }
 
-/* callback */
-static int snd_pmac_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-       pmac_t *chip = snd_magic_cast(pmac_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_pmac_resume(chip);
-               break;
-       case SNDRV_CTL_POWER_D3hot:
-       case SNDRV_CTL_POWER_D3cold:
-               snd_pmac_suspend(chip);
-               break;
-       default:
-               return -EINVAL;
-       }
-       return 0;
-}
-
 #endif /* CONFIG_PM && CONFIG_PMAC_PBOOK */

Index: pmac.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/ppc/pmac.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- pmac.h      18 Jun 2003 11:09:58 -0000      1.12
+++ pmac.h      15 Apr 2004 16:23:18 -0000      1.13
@@ -162,7 +162,6 @@
        void (*update_automute)(pmac_t *chip, int do_notify);
        int (*detect_headphone)(pmac_t *chip);
 #ifdef CONFIG_PMAC_PBOOK
-       unsigned int sleep_registered : 1;
        void (*suspend)(pmac_t *chip);
        void (*resume)(pmac_t *chip);
 #endif



-------------------------------------------------------
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

Reply via email to