Commit d86d0193 authored by Rene Herman's avatar Rene Herman Committed by Jaroslav Kysela

[ALSA] alsa-kernel: schedule_timeout() fixes

Fix schedule_timeout() use in alsa-kernel. Mostly just
	schedule_timeout(1) --> schedule_timeout_uninterruptible(1)
The wavefront_synth one fixes the surrounding loop as well. In ymfpci_main,
delete a superfluous set_current_state() and in soc/soc-dapm.c replace an
_interruptible with _uninterruptible in some debug code; it's not waiting
for signals.

Signed-off-by: Rene Herman <rene.herman>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent b44ef2f1
...@@ -401,7 +401,7 @@ static int obp_startup_ack(struct soundscape *s, unsigned timeout) ...@@ -401,7 +401,7 @@ static int obp_startup_ack(struct soundscape *s, unsigned timeout)
unsigned long flags; unsigned long flags;
unsigned char x; unsigned char x;
schedule_timeout(1); schedule_timeout_uninterruptible(1);
spin_lock_irqsave(&s->lock, flags); spin_lock_irqsave(&s->lock, flags);
x = inb(HOST_DATA_IO(s->io_base)); x = inb(HOST_DATA_IO(s->io_base));
...@@ -428,7 +428,7 @@ static int host_startup_ack(struct soundscape *s, unsigned timeout) ...@@ -428,7 +428,7 @@ static int host_startup_ack(struct soundscape *s, unsigned timeout)
unsigned long flags; unsigned long flags;
unsigned char x; unsigned char x;
schedule_timeout(1); schedule_timeout_uninterruptible(1);
spin_lock_irqsave(&s->lock, flags); spin_lock_irqsave(&s->lock, flags);
x = inb(HOST_DATA_IO(s->io_base)); x = inb(HOST_DATA_IO(s->io_base));
......
...@@ -1768,7 +1768,7 @@ snd_wavefront_interrupt_bits (int irq) ...@@ -1768,7 +1768,7 @@ snd_wavefront_interrupt_bits (int irq)
static void __devinit static void __devinit
wavefront_should_cause_interrupt (snd_wavefront_t *dev, wavefront_should_cause_interrupt (snd_wavefront_t *dev,
int val, int port, int timeout) int val, int port, unsigned long timeout)
{ {
wait_queue_t wait; wait_queue_t wait;
...@@ -1779,11 +1779,9 @@ wavefront_should_cause_interrupt (snd_wavefront_t *dev, ...@@ -1779,11 +1779,9 @@ wavefront_should_cause_interrupt (snd_wavefront_t *dev,
dev->irq_ok = 0; dev->irq_ok = 0;
outb (val,port); outb (val,port);
spin_unlock_irq(&dev->irq_lock); spin_unlock_irq(&dev->irq_lock);
while (1) { while (!dev->irq_ok && time_before(jiffies, timeout)) {
if ((timeout = schedule_timeout(timeout)) == 0) schedule_timeout_uninterruptible(1);
return; barrier();
if (dev->irq_ok)
return;
} }
} }
......
...@@ -555,7 +555,7 @@ static unsigned int azx_rirb_get_response(struct hda_codec *codec) ...@@ -555,7 +555,7 @@ static unsigned int azx_rirb_get_response(struct hda_codec *codec)
} }
if (!chip->rirb.cmds) if (!chip->rirb.cmds)
return chip->rirb.res; /* the last value */ return chip->rirb.res; /* the last value */
schedule_timeout(1); schedule_timeout_uninterruptible(1);
} while (time_after_eq(timeout, jiffies)); } while (time_after_eq(timeout, jiffies));
if (chip->msi) { if (chip->msi) {
......
...@@ -2090,7 +2090,7 @@ static int snd_via82xx_chip_init(struct via82xx *chip) ...@@ -2090,7 +2090,7 @@ static int snd_via82xx_chip_init(struct via82xx *chip)
pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval); pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval);
if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */ if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */
break; break;
schedule_timeout(1); schedule_timeout_uninterruptible(1);
} while (time_before(jiffies, end_time)); } while (time_before(jiffies, end_time));
if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY) if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY)
...@@ -2109,7 +2109,7 @@ static int snd_via82xx_chip_init(struct via82xx *chip) ...@@ -2109,7 +2109,7 @@ static int snd_via82xx_chip_init(struct via82xx *chip)
chip->ac97_secondary = 1; chip->ac97_secondary = 1;
goto __ac97_ok2; goto __ac97_ok2;
} }
schedule_timeout(1); schedule_timeout_uninterruptible(1);
} while (time_before(jiffies, end_time)); } while (time_before(jiffies, end_time));
/* This is ok, the most of motherboards have only one codec */ /* This is ok, the most of motherboards have only one codec */
......
...@@ -983,7 +983,7 @@ static int snd_via82xx_chip_init(struct via82xx_modem *chip) ...@@ -983,7 +983,7 @@ static int snd_via82xx_chip_init(struct via82xx_modem *chip)
pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval); pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval);
if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */ if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */
break; break;
schedule_timeout(1); schedule_timeout_uninterruptible(1);
} while (time_before(jiffies, end_time)); } while (time_before(jiffies, end_time));
if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY) if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY)
...@@ -1001,7 +1001,7 @@ static int snd_via82xx_chip_init(struct via82xx_modem *chip) ...@@ -1001,7 +1001,7 @@ static int snd_via82xx_chip_init(struct via82xx_modem *chip)
chip->ac97_secondary = 1; chip->ac97_secondary = 1;
goto __ac97_ok2; goto __ac97_ok2;
} }
schedule_timeout(1); schedule_timeout_uninterruptible(1);
} while (time_before(jiffies, end_time)); } while (time_before(jiffies, end_time));
/* This is ok, the most of motherboards have only one codec */ /* This is ok, the most of motherboards have only one codec */
......
...@@ -84,7 +84,6 @@ static int snd_ymfpci_codec_ready(struct snd_ymfpci *chip, int secondary) ...@@ -84,7 +84,6 @@ static int snd_ymfpci_codec_ready(struct snd_ymfpci *chip, int secondary)
do { do {
if ((snd_ymfpci_readw(chip, reg) & 0x8000) == 0) if ((snd_ymfpci_readw(chip, reg) & 0x8000) == 0)
return 0; return 0;
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout_uninterruptible(1); schedule_timeout_uninterruptible(1);
} while (time_before(jiffies, end_time)); } while (time_before(jiffies, end_time));
snd_printk(KERN_ERR "codec_ready: codec %i is not ready [0x%x]\n", secondary, snd_ymfpci_readw(chip, reg)); snd_printk(KERN_ERR "codec_ready: codec %i is not ready [0x%x]\n", secondary, snd_ymfpci_readw(chip, reg));
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
#define POP_DEBUG 0 #define POP_DEBUG 0
#if POP_DEBUG #if POP_DEBUG
#define POP_TIME 500 /* 500 msecs - change if pop debug is too fast */ #define POP_TIME 500 /* 500 msecs - change if pop debug is too fast */
#define pop_wait(time) schedule_timeout_interruptible(msecs_to_jiffies(time)) #define pop_wait(time) schedule_timeout_uninterruptible(msecs_to_jiffies(time))
#define pop_dbg(format, arg...) printk(format, ## arg); pop_wait(POP_TIME) #define pop_dbg(format, arg...) printk(format, ## arg); pop_wait(POP_TIME)
#else #else
#define pop_dbg(format, arg...) #define pop_dbg(format, arg...)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment