Move coloured led API to status_led.h
[oweals/u-boot.git] / drivers / inca-ip_sw.c
index f8fe52ea26db9def4535bcce7eac9272b2b59598..e4aaed6afbc6c1709987c5fbc3226cc0a5487525 100644 (file)
@@ -26,8 +26,8 @@
 
 #include <common.h>
 
-#if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI) \
-       && defined(CONFIG_INCA_IP_SWITCH)
+#if defined(CONFIG_CMD_NET) \
+       && defined(CONFIG_NET_MULTI) && defined(CONFIG_INCA_IP_SWITCH)
 
 #include <malloc.h>
 #include <net.h>
 
 
 #define DELAY  udelay(10000)
+  /* Sometimes the store word instruction hangs while writing to one
+   * of the Switch registers. Moving the instruction into a separate
+   * function somehow makes the problem go away.
+   */
+static void SWORD(volatile u32 * reg, u32 value)
+{
+       *reg = value;
+}
 
 #define DMA_WRITE_REG(reg, value) *((volatile u32 *)reg) = (u32)value;
 #define DMA_READ_REG(reg, value)    value = (u32)*((volatile u32*)reg)
 #define SW_WRITE_REG(reg, value)   \
-       *((volatile u32*)reg) = (u32)value;\
+       SWORD(reg, value);\
        DELAY;\
-       *((volatile u32*)reg) = (u32)value;
+       SWORD(reg, value);
 
 #define SW_READ_REG(reg, value)           \
        value = (u32)*((volatile u32*)reg);\