summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2008-09-04 22:13:37 +0200
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-09-07 18:32:58 +0200
commitb0dbcf511c4bd10350902e79a1bdd4f5dcca66b6 (patch)
treeabb222b999fbb700ea728f010d0dace578cb7e62
parentMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 (diff)
downloadlinux-b0dbcf511c4bd10350902e79a1bdd4f5dcca66b6.tar.xz
linux-b0dbcf511c4bd10350902e79a1bdd4f5dcca66b6.zip
[NET] smc91x: provide configurable leds
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>
-rw-r--r--drivers/net/smc91x.c9
-rw-r--r--drivers/net/smc91x.h2
-rw-r--r--include/linux/smc91x.h2
3 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index 2040965d7724..ceed2f69216a 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -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");
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index 997e7f1d5c6e..8322e7f37af5 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -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 */
diff --git a/include/linux/smc91x.h b/include/linux/smc91x.h
index 3827b922ba1f..ed25483d25d9 100644
--- a/include/linux/smc91x.h
+++ b/include/linux/smc91x.h
@@ -18,6 +18,8 @@
struct smc91x_platdata {
unsigned long flags;
+ unsigned char leda;
+ unsigned char ledb;
};
#endif /* __SMC91X_H__ */