Update of /cvsroot/alsa/alsa-kernel/pci In directory sc8-pr-cvs1:/tmp/cvs-serv3576
Modified Files: cs4281.c es1968.c Log Message: clean up PM codes Index: cs4281.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/cs4281.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- cs4281.c 8 May 2003 08:32:35 -0000 1.40 +++ cs4281.c 18 Jun 2003 11:07:21 -0000 1.41 @@ -530,36 +530,27 @@ * common I/O routines */ -static void snd_cs4281_delay(unsigned int delay, int can_schedule) +static void snd_cs4281_delay(unsigned int delay) { if (delay > 999) { - if (can_schedule) { - unsigned long end_time; - delay = (delay * HZ) / 1000000; - if (delay < 1) - delay = 1; - end_time = jiffies + delay; - do { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1); - } while (time_after_eq(end_time, jiffies)); - } else { - delay += 999; - delay /= 1000; - mdelay(delay > 0 ? delay : 1); - } + unsigned long end_time; + delay = (delay * HZ) / 1000000; + if (delay < 1) + delay = 1; + end_time = jiffies + delay; + do { + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1); + } while (time_after_eq(end_time, jiffies)); } else { udelay(delay); } } -inline static void snd_cs4281_delay_long(int can_schedule) +inline static void snd_cs4281_delay_long(void) { - if (can_schedule) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1); - } else - mdelay(10); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1); } static inline void snd_cs4281_pokeBA0(cs4281_t *chip, unsigned long offset, unsigned int val) @@ -1411,7 +1402,7 @@ return snd_cs4281_free(chip); } -static int snd_cs4281_chip_init(cs4281_t *chip, int can_schedule); /* defined below */ +static int snd_cs4281_chip_init(cs4281_t *chip); /* defined below */ #ifdef CONFIG_PM static int snd_cs4281_set_power_state(snd_card_t *card, unsigned int power_state); #endif @@ -1471,7 +1462,7 @@ return -ENOMEM; } - tmp = snd_cs4281_chip_init(chip, 1); + tmp = snd_cs4281_chip_init(chip); if (tmp) { snd_cs4281_free(chip); return tmp; @@ -1493,7 +1484,7 @@ return 0; } -static int snd_cs4281_chip_init(cs4281_t *chip, int can_schedule) +static int snd_cs4281_chip_init(cs4281_t *chip) { unsigned int tmp; int timeout; @@ -1547,7 +1538,7 @@ snd_cs4281_pokeBA0(chip, BA0_SPMC, 0); udelay(50); snd_cs4281_pokeBA0(chip, BA0_SPMC, BA0_SPMC_RSTN); - snd_cs4281_delay(50000, can_schedule); + snd_cs4281_delay(50000); if (chip->dual_codec) snd_cs4281_pokeBA0(chip, BA0_SPMC, BA0_SPMC_RSTN | BA0_SPMC_ASDI2E); @@ -1563,7 +1554,7 @@ * Start the DLL Clock logic. */ snd_cs4281_pokeBA0(chip, BA0_CLKCR1, BA0_CLKCR1_DLLP); - snd_cs4281_delay(50000, can_schedule); + snd_cs4281_delay(50000); snd_cs4281_pokeBA0(chip, BA0_CLKCR1, BA0_CLKCR1_SWCE | BA0_CLKCR1_DLLP); /* @@ -1577,7 +1568,7 @@ */ if (snd_cs4281_peekBA0(chip, BA0_CLKCR1) & BA0_CLKCR1_DLLRDY) goto __ok0; - snd_cs4281_delay_long(can_schedule); + snd_cs4281_delay_long(); } while (timeout-- > 0); snd_printk(KERN_ERR "DLLRDY not seen\n"); @@ -1603,7 +1594,7 @@ */ if (snd_cs4281_peekBA0(chip, BA0_ACSTS) & BA0_ACSTS_CRDY) goto __ok1; - snd_cs4281_delay_long(can_schedule); + snd_cs4281_delay_long(); } while (timeout-- > 0); snd_printk(KERN_ERR "never read codec ready from AC'97 (0x%x)\n", snd_cs4281_peekBA0(chip, BA0_ACSTS)); @@ -1615,7 +1606,7 @@ do { if (snd_cs4281_peekBA0(chip, BA0_ACSTS2) & BA0_ACSTS_CRDY) goto __codec2_ok; - snd_cs4281_delay_long(can_schedule); + snd_cs4281_delay_long(); } while (timeout-- > 0); snd_printk(KERN_INFO "secondary codec doesn't respond. disable it...\n"); chip->dual_codec = 0; @@ -1642,7 +1633,7 @@ */ if ((snd_cs4281_peekBA0(chip, BA0_ACISV) & (BA0_ACISV_SLV(3) | BA0_ACISV_SLV(4))) == (BA0_ACISV_SLV(3) | BA0_ACISV_SLV(4))) goto __ok2; - snd_cs4281_delay_long(can_schedule); + snd_cs4281_delay_long(); } while (timeout-- > 0); snd_printk(KERN_ERR "never read ISV3 and ISV4 from AC'97\n"); @@ -2109,7 +2100,7 @@ ulCLK |= CLKCR1_CKRA; snd_cs4281_pokeBA0(chip, BA0_CLKCR1, ulCLK); - snd_cs4281_chip_init(chip, 0); + snd_cs4281_chip_init(chip); /* restore the status registers */ for (i = 0; i < number_of(saved_regs); i++) @@ -2128,7 +2119,6 @@ snd_power_change_state(card, SNDRV_CTL_POWER_D0); } -#ifndef PCI_OLD_SUSPEND static int snd_cs4281_suspend(struct pci_dev *dev, u32 state) { cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return -ENXIO); @@ -2141,18 +2131,6 @@ cs4281_resume(chip); return 0; } -#else -static void snd_cs4281_suspend(struct pci_dev *dev) -{ - cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return); - cs4281_suspend(chip); -} -static void snd_cs4281_resume(struct pci_dev *dev) -{ - cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return); - cs4281_resume(chip); -} -#endif /* callback */ static int snd_cs4281_set_power_state(snd_card_t *card, unsigned int power_state) Index: es1968.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/es1968.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- es1968.c 8 May 2003 08:32:35 -0000 1.40 +++ es1968.c 18 Jun 2003 11:07:21 -0000 1.41 @@ -654,6 +654,11 @@ return result; } +#define big_mdelay(msec) do {\ + set_current_state(TASK_UNINTERRUPTIBLE);\ + schedule_timeout(((msec) * HZ + 999) / 1000);\ +} while (0) + /* Wait for the codec bus to be free */ static int snd_es1968_ac97_wait(es1968_t *chip) { @@ -2109,7 +2114,7 @@ outw(0x0000, ioaddr + 0x60); /* write 0 to gpio 0 */ udelay(20); outw(0x0001, ioaddr + 0x60); /* write 1 to gpio 1 */ - mdelay(20); + big_mdelay(20); outw(save_68 | 0x1, ioaddr + 0x68); /* now restore .. */ outw((inw(ioaddr + 0x38) & 0xfffc) | 0x1, ioaddr + 0x38); @@ -2125,7 +2130,7 @@ outw(0x0001, ioaddr + 0x60); /* write 1 to gpio */ udelay(20); outw(0x0009, ioaddr + 0x60); /* write 9 to gpio */ - mdelay(500); /* .. ouch.. */ + big_mdelay(500); //outw(inw(ioaddr + 0x38) & 0xfffc, ioaddr + 0x38); outw(inw(ioaddr + 0x3a) & 0xfffc, ioaddr + 0x3a); outw(inw(ioaddr + 0x3c) & 0xfffc, ioaddr + 0x3c); @@ -2151,7 +2156,7 @@ if (w > 10000) { outb(inb(ioaddr + 0x37) | 0x08, ioaddr + 0x37); /* do a software reset */ - mdelay(500); /* oh my.. */ + big_mdelay(500); /* oh my.. */ outb(inb(ioaddr + 0x37) & ~0x08, ioaddr + 0x37); udelay(1); @@ -2459,10 +2464,10 @@ /* start timer again */ if (atomic_read(&chip->bobclient)) snd_es1968_bob_start(chip); + snd_power_change_state(card, SNDRV_CTL_POWER_D0); } -#ifndef PCI_OLD_SUSPEND static int snd_es1968_suspend(struct pci_dev *dev, u32 state) { es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return -ENXIO); @@ -2475,18 +2480,6 @@ es1968_resume(chip); return 0; } -#else -static void snd_es1968_suspend(struct pci_dev *dev) -{ - es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return); - es1968_suspend(chip); -} -static void snd_es1968_resume(struct pci_dev *dev) -{ - es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return); - es1968_resume(chip); -} -#endif /* callback */ static int snd_es1968_set_power_state(snd_card_t *card, unsigned int power_state) ------------------------------------------------------- This SF.Net email is sponsored by: INetU Attention Web Developers & Consultants: Become An INetU Hosting Partner. Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission! INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog