[NET] smc91x: provide configurable leds
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Thu, 4 Sep 2008 20:13:37 +0000 (21:13 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 7 Sep 2008 16:32:58 +0000 (17:32 +0100)
This patch provides a mechanism for platforms to be able to supply the
LED configuration via platform data, rather than having to hard code
it in smc91x.h.

Acked-by: Eric Miao <eric.y.miao@gmail.com>
Acked-by: Nicolas Pitre <nico@cam.org>
Acked-by: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/net/smc91x.c
drivers/net/smc91x.h
include/linux/smc91x.h

index 2040965d7724bc29fd0cc92532ca9e65dded071c..ceed2f69216a8b70a0c3bd9c6c0964b1ef1af3a2 100644 (file)
@@ -1520,7 +1520,9 @@ smc_open(struct net_device *dev)
        /* Setup the default Register Modes */
        lp->tcr_cur_mode = TCR_DEFAULT;
        lp->rcr_cur_mode = RCR_DEFAULT;
-       lp->rpc_cur_mode = RPC_DEFAULT;
+       lp->rpc_cur_mode = RPC_DEFAULT |
+                               lp->cfg.leda << RPC_LSXA_SHFT |
+                               lp->cfg.ledb << RPC_LSXB_SHFT;
 
        /*
         * If we are not using a MII interface, we need to
@@ -2157,6 +2159,11 @@ static int smc_drv_probe(struct platform_device *pdev)
                lp->cfg.flags |= (nowait) ? SMC91X_NOWAIT : 0;
        }
 
+       if (!lp->cfg.leda && !lp->cfg.ledb) {
+               lp->cfg.leda = RPC_LSA_DEFAULT;
+               lp->cfg.ledb = RPC_LSB_DEFAULT;
+       }
+
        ndev->dma = (unsigned char)-1;
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs");
index 997e7f1d5c6e496b42bd602baf473f16acfd45e2..8322e7f37af5c870092b5f2fae94bfe3e0fc3be5 100644 (file)
@@ -794,7 +794,7 @@ smc_pxa_dma_irq(int dma, void *dummy)
 #define RPC_LSB_DEFAULT RPC_LED_FD
 #endif
 
-#define RPC_DEFAULT (RPC_ANEG | (RPC_LSA_DEFAULT << RPC_LSXA_SHFT) | (RPC_LSB_DEFAULT << RPC_LSXB_SHFT) | RPC_SPEED | RPC_DPLX)
+#define RPC_DEFAULT (RPC_ANEG | RPC_SPEED | RPC_DPLX)
 
 
 /* Bank 0 0x0C is reserved */
index 3827b922ba1f8b2d9f688cac0e3095c747793690..ed25483d25d90e7608f2e9cf9b0c47a34f8fef0f 100644 (file)
@@ -18,6 +18,8 @@
 
 struct smc91x_platdata {
        unsigned long flags;
+       unsigned char leda;
+       unsigned char ledb;
 };
 
 #endif /* __SMC91X_H__ */