diff options
author | Michal Simek <monstr@monstr.eu> | 2011-10-12 23:23:22 +0000 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-10-23 23:32:44 +0200 |
commit | c1044a1ec182be4c9c0b64d42ac9bf8f623d3f68 (patch) | |
tree | 9ea920a92f164ca1dfb3ede5a3fa369edf9daf7f | |
parent | 9b94755af9552ce3cbecfdd2f9f1fa2b322d825a (diff) | |
download | u-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.c | 18 | ||||
-rw-r--r-- | drivers/net/xilinx_emaclite.c | 11 | ||||
-rw-r--r-- | include/netdev.h | 3 |
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. |