At Mon, 12 Jan 2009 21:25:04 +0100, Krzysztof Helt wrote: > > From: Krzysztof Helt <krzysztof.h1@xxxxx> > > A comment states that one should wait up to 5 secs > while a waiting loop waits only 5 system ticks. Thanks, applied now. (BTW, don't forget a sign-off at each version.) Takashi > --- > This is a second version of the patch with while loops > changed to do-while ones. > > sound/isa/sscape.c | 24 ++++++++++++------------ > 1 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c > index bc44916..6a7f842 100644 > --- a/sound/isa/sscape.c > +++ b/sound/isa/sscape.c > @@ -393,20 +393,20 @@ static int sscape_wait_dma_unsafe(unsigned io_base, enum GA_REG reg, unsigned ti > */ > static int obp_startup_ack(struct soundscape *s, unsigned timeout) > { > - while (timeout != 0) { > + unsigned long end_time = jiffies + msecs_to_jiffies(timeout); > + > + do { > unsigned long flags; > unsigned char x; > > - schedule_timeout_uninterruptible(1); > - > spin_lock_irqsave(&s->lock, flags); > x = inb(HOST_DATA_IO(s->io_base)); > spin_unlock_irqrestore(&s->lock, flags); > if ((x & 0xfe) == 0xfe) > return 1; > > - --timeout; > - } /* while */ > + msleep(10); > + } while (time_before(jiffies, end_time)); > > return 0; > } > @@ -420,20 +420,20 @@ static int obp_startup_ack(struct soundscape *s, unsigned timeout) > */ > static int host_startup_ack(struct soundscape *s, unsigned timeout) > { > - while (timeout != 0) { > + unsigned long end_time = jiffies + msecs_to_jiffies(timeout); > + > + do { > unsigned long flags; > unsigned char x; > > - schedule_timeout_uninterruptible(1); > - > spin_lock_irqsave(&s->lock, flags); > x = inb(HOST_DATA_IO(s->io_base)); > spin_unlock_irqrestore(&s->lock, flags); > if (x == 0xfe) > return 1; > > - --timeout; > - } /* while */ > + msleep(10); > + } while (time_before(jiffies, end_time)); > > return 0; > } > @@ -529,10 +529,10 @@ static int upload_dma_data(struct soundscape *s, > * give it 5 seconds (max) ... > */ > ret = 0; > - if (!obp_startup_ack(s, 5)) { > + if (!obp_startup_ack(s, 5000)) { > snd_printk(KERN_ERR "sscape: No response from on-board processor after upload\n"); > ret = -EAGAIN; > - } else if (!host_startup_ack(s, 5)) { > + } else if (!host_startup_ack(s, 5000)) { > snd_printk(KERN_ERR "sscape: SoundScape failed to initialise\n"); > ret = -EAGAIN; > } > -- > 1.5.2.2 > > > ---------------------------------------------------------------------- > Speak Up. Angielski szybko i skutecznie. 3 miesiace nauki gratis. > Sprawdz. >> http://link.interia.pl/f2019 > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel