Skip to content
Snippets Groups Projects
Commit 0c9c99a2 authored by Michal Simek's avatar Michal Simek Committed by Tom Rini
Browse files

net: emaclite: Fix OF initialization


- Add xilinx_emaclite_of_init to netdev.h
- Remove global data pointer from the driver
- Add better handling for error state.

Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
parent eeb72e67
No related branches found
No related tags found
No related merge requests found
...@@ -14,8 +14,6 @@ ...@@ -14,8 +14,6 @@
#include <asm/io.h> #include <asm/io.h>
#include <fdtdec.h> #include <fdtdec.h>
DECLARE_GLOBAL_DATA_PTR;
#undef DEBUG #undef DEBUG
#define ENET_ADDR_LENGTH 6 #define ENET_ADDR_LENGTH 6
...@@ -364,24 +362,27 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr, ...@@ -364,24 +362,27 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr,
} }
#ifdef CONFIG_OF_CONTROL #ifdef CONFIG_OF_CONTROL
int xilinx_emaclite_init(bd_t *bis) int xilinx_emaclite_of_init(const void *blob)
{ {
int offset = 0; int offset = 0;
u32 ret = 0; u32 ret = 0;
u32 reg; u32 reg;
do { do {
offset = fdt_node_offset_by_compatible(gd->fdt_blob, offset, offset = fdt_node_offset_by_compatible(blob, offset,
"xlnx,xps-ethernetlite-1.00.a"); "xlnx,xps-ethernetlite-1.00.a");
if (offset != -1) { if (offset != -1) {
reg = fdtdec_get_addr(gd->fdt_blob, offset, "reg"); reg = fdtdec_get_addr(blob, offset, "reg");
if (reg != FDT_ADDR_T_NONE) { if (reg != FDT_ADDR_T_NONE) {
u32 rxpp = fdtdec_get_int(gd->fdt_blob, offset, u32 rxpp = fdtdec_get_int(blob, offset,
"xlnx,rx-ping-pong", 0); "xlnx,rx-ping-pong", 0);
u32 txpp = fdtdec_get_int(gd->fdt_blob, offset, u32 txpp = fdtdec_get_int(blob, offset,
"xlnx,tx-ping-pong", 0); "xlnx,tx-ping-pong", 0);
ret |= xilinx_emaclite_initialize(bis, reg, ret |= xilinx_emaclite_initialize(NULL, reg,
txpp, rxpp); txpp, rxpp);
} else {
debug("EMACLITE: Can't get base address\n");
return -1;
} }
} }
} while (offset != -1); } while (offset != -1);
......
...@@ -86,6 +86,7 @@ int uli526x_initialize(bd_t *bis); ...@@ -86,6 +86,7 @@ int uli526x_initialize(bd_t *bis);
int armada100_fec_register(unsigned long base_addr); int armada100_fec_register(unsigned long base_addr);
int xilinx_axiemac_initialize(bd_t *bis, unsigned long base_addr, int xilinx_axiemac_initialize(bd_t *bis, unsigned long base_addr,
unsigned long dma_addr); unsigned long dma_addr);
int xilinx_emaclite_of_init(const void *blob);
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); int txpp, int rxpp);
int xilinx_ll_temac_eth_init(bd_t *bis, unsigned long base_addr, int flags, int xilinx_ll_temac_eth_init(bd_t *bis, unsigned long base_addr, int flags,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment