Hello,

 This change makes the PHY interrupt actually work as intended on the 
SWARM board, where the CFE firmware leaves the GPIO line at the power-on 
polarity, which is suitable for active-high interrupts, but not quite so 
for this one (the "interrupt force" bit in the PHY works much better for 
stress-testing interrupt handling; use that one instead if needed).

 Please consider.

  Maciej

Signed-off-by: Maciej W. Rozycki <[EMAIL PROTECTED]>

patch-mips-2.6.18-20060920-swarm-setup-15
diff -up --recursive --new-file 
linux-mips-2.6.18-20060920.macro/arch/mips/sibyte/swarm/setup.c 
linux-mips-2.6.18-20060920/arch/mips/sibyte/swarm/setup.c
--- linux-mips-2.6.18-20060920.macro/arch/mips/sibyte/swarm/setup.c     
2006-07-12 04:59:56.000000000 +0000
+++ linux-mips-2.6.18-20060920/arch/mips/sibyte/swarm/setup.c   2006-09-28 
02:37:31.000000000 +0000
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2000, 2001, 2002, 2003, 2004 Broadcom Corporation
  * Copyright (C) 2004 by Ralf Baechle ([EMAIL PROTECTED])
+ * Copyright (c) 2006  Maciej W. Rozycki
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -106,6 +107,8 @@ int swarm_be_handler(struct pt_regs *reg
 
 void __init plat_mem_setup(void)
 {
+       u64 invert;
+
 #if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
        bcm1480_setup();
 #elif defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X)
@@ -114,6 +117,16 @@ void __init plat_mem_setup(void)
 #error invalid SiByte board configuation
 #endif
 
+       /*
+        * The PHY interrupt on the SWARM is active low,
+        * but CFE gets it wrong (or not at all, probably).
+        */
+#ifdef K_GPIO_PHY
+       invert = __raw_readq(IOADDR(A_GPIO_INPUT_INVERT));
+       invert |= 1 << K_GPIO_PHY;
+       __raw_writeq(invert, IOADDR(A_GPIO_INPUT_INVERT));
+#endif
+
        panic_timeout = 5;  /* For debug.  */
 
        board_time_init = swarm_time_init;
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to