summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2011-10-12 23:23:22 +0000
committerWolfgang Denk <wd@denx.de>2011-10-23 23:32:44 +0200
commitc1044a1ec182be4c9c0b64d42ac9bf8f623d3f68 (patch)
tree9ea920a92f164ca1dfb3ede5a3fa369edf9daf7f
parent9b94755af9552ce3cbecfdd2f9f1fa2b322d825a (diff)
downloadu-boot-imx-c1044a1ec182be4c9c0b64d42ac9bf8f623d3f68.zip
u-boot-imx-c1044a1ec182be4c9c0b64d42ac9bf8f623d3f68.tar.gz
u-boot-imx-c1044a1ec182be4c9c0b64d42ac9bf8f623d3f68.tar.bz2
net: emaclite: Move RX/TX ping pong initialization to
Init RX/TX ping pong directly from board not in the driver. Signed-off-by: Michal Simek <monstr@monstr.eu>
-rw-r--r--board/xilinx/microblaze-generic/microblaze-generic.c18
-rw-r--r--drivers/net/xilinx_emaclite.c11
-rw-r--r--include/netdev.h3
3 files changed, 18 insertions, 14 deletions
diff --git a/board/xilinx/microblaze-generic/microblaze-generic.c b/board/xilinx/microblaze-generic/microblaze-generic.c
index 183e4dc..9b2952f 100644
--- a/board/xilinx/microblaze-generic/microblaze-generic.c
+++ b/board/xilinx/microblaze-generic/microblaze-generic.c
@@ -71,12 +71,18 @@ int fsl_init2 (void) {
int board_eth_init(bd_t *bis)
{
- /*
- * This board either has PCI NICs or uses the CPU's TSECs
- * pci_eth_init() will return 0 if no NICs found, so in that case
- * returning -1 will force cpu_eth_init() to be called.
- */
+ int ret = 0;
#ifdef CONFIG_XILINX_EMACLITE
- return xilinx_emaclite_initialize(bis, XILINX_EMACLITE_BASEADDR);
+ u32 txpp = 0;
+ u32 rxpp = 0;
+# ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
+ txpp = 1;
+# endif
+# ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG
+ rxpp = 1;
+# endif
+ ret |= xilinx_emaclite_initialize(bis, XILINX_EMACLITE_BASEADDR,
+ txpp, rxpp);
#endif
+ return ret;
}
diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c
index ac3dae1..9791b9a 100644
--- a/drivers/net/xilinx_emaclite.c
+++ b/drivers/net/xilinx_emaclite.c
@@ -342,7 +342,8 @@ static int emaclite_recv(struct eth_device *dev)
}
-int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr)
+int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr,
+ int txpp, int rxpp)
{
struct eth_device *dev;
struct xemaclite *emaclite;
@@ -359,12 +360,8 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr)
dev->priv = emaclite;
-#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
- emaclite->txpp = 1;
-#endif
-#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG
- emaclite->rxpp = 1;
-#endif
+ emaclite->txpp = txpp;
+ emaclite->rxpp = rxpp;
sprintf(dev->name, "Xelite.%lx", base_addr);
diff --git a/include/netdev.h b/include/netdev.h
index a624677..54b52a5 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -97,7 +97,8 @@ int uli526x_initialize(bd_t *bis);
int armada100_fec_register(unsigned long base_addr);
int xilinx_axiemac_initialize(bd_t *bis, unsigned long base_addr,
unsigned long dma_addr);
-int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr);
+int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr,
+ int txpp, int rxpp);
/* Boards with PCI network controllers can call this from their board_eth_init()
* function to initialize whatever's on board.