Update of /cvsroot/alsa/alsa-kernel/pcmcia/pdaudiocf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19034/pcmcia/pdaudiocf
Modified Files: pdaudiocf.c pdaudiocf.h pdaudiocf_core.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: pdaudiocf.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pcmcia/pdaudiocf/pdaudiocf.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- pdaudiocf.c 7 Apr 2004 17:48:22 -0000 1.5 +++ pdaudiocf.c 8 Apr 2004 16:35:00 -0000 1.6 @@ -243,10 +243,7 @@ if (err < 0) return err; -#ifdef CONFIG_PM - card->power_state_private_data = pdacf; - card->set_power_state = snd_pdacf_set_power_state; -#endif + snd_card_set_pm_callback(card, snd_pdacf_suspend, snd_pdacf_resume, pdacf); if ((err = snd_card_register(card)) < 0) return err; @@ -371,7 +368,7 @@ link->state |= DEV_SUSPEND; if (chip) { snd_printdd(KERN_DEBUG "snd_pdacf_suspend calling\n"); - snd_pdacf_suspend(chip); + snd_pdacf_suspend(chip->card, 0); } /* Fall through... */ case CS_EVENT_RESET_PHYSICAL: @@ -390,7 +387,7 @@ pcmcia_request_configuration(link->handle, &link->conf); if (chip) { snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n"); - snd_pdacf_resume(chip); + snd_pdacf_resume(chip->card, 0); } } snd_printdd(KERN_DEBUG "resume done!\n"); Index: pdaudiocf.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pcmcia/pdaudiocf/pdaudiocf.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- pdaudiocf.h 6 Mar 2004 16:51:31 -0000 1.4 +++ pdaudiocf.h 8 Apr 2004 16:35:01 -0000 1.5 @@ -136,9 +136,8 @@ int snd_pdacf_ak4117_create(pdacf_t *pdacf); void snd_pdacf_powerdown(pdacf_t *chip); #ifdef CONFIG_PM -void snd_pdacf_suspend(pdacf_t *chip); -void snd_pdacf_resume(pdacf_t *chip); -int snd_pdacf_set_power_state(snd_card_t *card, unsigned int power_state); +int snd_pdacf_suspend(snd_card_t *card, unsigned int state); +int snd_pdacf_resume(snd_card_t *card, unsigned int state); #endif int snd_pdacf_pcm_new(pdacf_t *chip); void pdacf_interrupt(int irq, void *dev, struct pt_regs *regs); Index: pdaudiocf_core.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pcmcia/pdaudiocf/pdaudiocf_core.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pdaudiocf_core.c 20 Mar 2004 19:16:59 -0000 1.2 +++ pdaudiocf_core.c 8 Apr 2004 16:35:01 -0000 1.3 @@ -255,13 +255,11 @@ #ifdef CONFIG_PM -void snd_pdacf_suspend(pdacf_t *chip) +int snd_pdacf_suspend(snd_card_t *card, unsigned int state) { - snd_card_t *card = chip->card; + pdacf_t *chip = snd_magic_cast(pdacf_t, card->pm_private_data, return -EINVAL); u16 val; - if (card->power_state == SNDRV_CTL_POWER_D3hot) - return; snd_pcm_suspend_all(chip->pcm); /* disable interrupts, but use direct write to preserve old register value in chip->regmap */ val = inw(chip->port + PDAUDIOCF_REG_IER); @@ -270,6 +268,7 @@ chip->chip_status |= PDAUDIOCF_STAT_IS_SUSPENDED; /* ignore interrupts from now */ snd_pdacf_powerdown(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); + return 0; } static inline int check_signal(pdacf_t *chip) @@ -277,13 +276,11 @@ return (chip->ak4117->rcs0 & AK4117_UNLCK) == 0; } -void snd_pdacf_resume(pdacf_t *chip) +int snd_pdacf_resume(snd_card_t *card, unsigned int state) { - snd_card_t *card = chip->card; + pdacf_t *chip = snd_magic_cast(pdacf_t, card->pm_private_data, return -EINVAL); int timeout = 40; - if (card->power_state == SNDRV_CTL_POWER_D0) - return; pdacf_reinit(chip, 1); /* wait for AK4117's PLL */ while (timeout-- > 0 && @@ -291,26 +288,6 @@ mdelay(1); chip->chip_status &= ~PDAUDIOCF_STAT_IS_SUSPENDED; snd_power_change_state(card, SNDRV_CTL_POWER_D0); -} - -int snd_pdacf_set_power_state(snd_card_t *card, unsigned int power_state) -{ - pdacf_t *chip = snd_magic_cast(pdacf_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_pdacf_resume(chip); - break; - case SNDRV_CTL_POWER_D3hot: - case SNDRV_CTL_POWER_D3cold: - snd_pdacf_suspend(chip); - break; - default: - return -EINVAL; - } return 0; } - #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