All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sscape: fix incorrect timeout after microcode upload
@ 2009-01-12 16:54 Krzysztof Helt
  2009-01-12 17:01 ` Takashi Iwai
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Helt @ 2009-01-12 16:54 UTC (permalink / raw)
  To: Alsa-devel; +Cc: Takashi Iwai, Theodore Allen, Rene Herman

From: Krzysztof Helt <krzysztof.h1@wp.pl>

A comment states that one should wait up to 5 secs
while a waiting loop waits only 5 system ticks.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
---
Ted tested that patch and it allowed him uploading
a microcode into the Soundscape Elite. However,
midi does not work for him yet.

 sound/isa/sscape.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
index bc44916..347a880 100644
--- a/sound/isa/sscape.c
+++ b/sound/isa/sscape.c
@@ -393,19 +393,19 @@ 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);
+
+	while (time_before(jiffies, end_time)) {
 		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;
+		msleep(10);
 	} /* while */
 
 	return 0;
@@ -420,19 +420,19 @@ 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);
+
+	while (time_before(jiffies, end_time)) {
 		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;
+		msleep(10);
 	} /* while */
 
 	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


-----------------------------------------------------------------------
Promocja w Speak Up. Kwartal angielskiego za darmo. 
3 miesiace nauki gratis. Sprawdz teraz! >> http://link.interia.pl/f2019

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-01-17 16:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-12 16:54 [PATCH] sscape: fix incorrect timeout after microcode upload Krzysztof Helt
2009-01-12 17:01 ` Takashi Iwai
2009-01-12 19:07   ` [PATCH] serato phono patch LCID Fire
2009-01-13  7:14     ` Takashi Iwai
2009-01-17 15:57       ` LCID Fire
2009-01-17 16:01         ` LCID Fire
2009-01-12 20:25   ` [PATCH] sscape: fix incorrect timeout after microcode upload Krzysztof Helt
2009-01-13  6:53     ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.