Explorar o código

[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>
Russell King %!s(int64=16) %!d(string=hai) anos
pai
achega
b0dbcf511c
Modificáronse 3 ficheiros con 11 adicións e 2 borrados
  1. 8 1
      drivers/net/smc91x.c
  2. 1 1
      drivers/net/smc91x.h
  3. 2 0
      include/linux/smc91x.h

+ 8 - 1
drivers/net/smc91x.c

@@ -1520,7 +1520,9 @@ smc_open(struct net_device *dev)
 	/* Setup the default Register Modes */
 	/* Setup the default Register Modes */
 	lp->tcr_cur_mode = TCR_DEFAULT;
 	lp->tcr_cur_mode = TCR_DEFAULT;
 	lp->rcr_cur_mode = RCR_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
 	 * 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;
 		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;
 	ndev->dma = (unsigned char)-1;
 
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs");
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs");

+ 1 - 1
drivers/net/smc91x.h

@@ -794,7 +794,7 @@ smc_pxa_dma_irq(int dma, void *dummy)
 #define RPC_LSB_DEFAULT RPC_LED_FD
 #define RPC_LSB_DEFAULT RPC_LED_FD
 #endif
 #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 */
 /* Bank 0 0x0C is reserved */

+ 2 - 0
include/linux/smc91x.h

@@ -18,6 +18,8 @@
 
 
 struct smc91x_platdata {
 struct smc91x_platdata {
 	unsigned long flags;
 	unsigned long flags;
+	unsigned char leda;
+	unsigned char ledb;
 };
 };
 
 
 #endif /* __SMC91X_H__ */
 #endif /* __SMC91X_H__ */