Update of /cvsroot/alsa/alsa-kernel/ppc
In directory sc8-pr-cvs1:/tmp/cvs-serv7766

Modified Files:
        burgundy.c 
Log Message:
added the timeout for busy loop.



Index: burgundy.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/ppc/burgundy.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- burgundy.c  16 Aug 2002 15:08:49 -0000      1.10
+++ burgundy.c  17 Jul 2003 16:56:49 -0000      1.11
@@ -23,6 +23,7 @@
 #include <asm/io.h>
 #include <linux/init.h>
 #include <linux/slab.h>
+#include <linux/delay.h>
 #include <sound/core.h>
 #include "pmac.h"
 #include "burgundy.h"
@@ -34,17 +35,27 @@
 inline static void
 snd_pmac_burgundy_busy_wait(pmac_t *chip)
 {
-       while (in_le32(&chip->awacs->codec_ctrl) & MASK_NEWECMD)
-               ;
+       int timeout = 50;
+       while ((in_le32(&chip->awacs->codec_ctrl) & MASK_NEWECMD) && timeout--)
+               udelay(1);
+       if (! timeout)
+               printk(KERN_DEBUG "burgundy_busy_wait: timeout\n");
 }
 
 inline static void
 snd_pmac_burgundy_extend_wait(pmac_t *chip)
 {
-       while (!(in_le32(&chip->awacs->codec_stat) & MASK_EXTEND))
-               ;
-       while (in_le32(&chip->awacs->codec_stat) & MASK_EXTEND)
-               ;
+       int timeout;
+       timeout = 50;
+       while (!(in_le32(&chip->awacs->codec_stat) & MASK_EXTEND) && timeout--)
+               udelay(1);
+       if (! timeout)
+               printk(KERN_DEBUG "burgundy_extend_wait: timeout #1\n");
+       timeout = 50;
+       while ((in_le32(&chip->awacs->codec_stat) & MASK_EXTEND) && timeout--)
+               udelay(1);
+       if (! timeout)
+               printk(KERN_DEBUG "burgundy_extend_wait: timeout #2\n");
 }
 
 static void
@@ -66,7 +77,6 @@
        unsigned val = 0;
        unsigned long flags;
 
-       /* should have timeouts here */
        spin_lock_irqsave(&chip->reg_lock, flags);
 
        out_le32(&chip->awacs->codec_ctrl, addr + 0x100000);
@@ -107,7 +117,6 @@
        unsigned val = 0;
        unsigned long flags;
 
-       /* should have timeouts here */
        spin_lock_irqsave(&chip->reg_lock, flags);
 
        out_le32(&chip->awacs->codec_ctrl, addr + 0x100000);



-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to