[alsa-devel] [PATCH] sscape: fix incorrect timeout after microcode upload
Takashi Iwai
tiwai at suse.de
Tue Jan 13 07:53:40 CET 2009
At Mon, 12 Jan 2009 21:25:04 +0100,
Krzysztof Helt wrote:
>
> From: Krzysztof Helt <krzysztof.h1 at wp.pl>
>
> 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
>
More information about the Alsa-devel
mailing list