net: gem: Add OF initialization support
Gem can be directly initialized from DTB. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
		
							parent
							
								
									7450a7f730
								
							
						
					
					
						commit
						f88a6869a1
					
				|  | @ -12,6 +12,8 @@ | |||
| #include <common.h> | ||||
| #include <net.h> | ||||
| #include <config.h> | ||||
| #include <fdtdec.h> | ||||
| #include <libfdt.h> | ||||
| #include <malloc.h> | ||||
| #include <asm/io.h> | ||||
| #include <phy.h> | ||||
|  | @ -534,3 +536,43 @@ int zynq_gem_initialize(bd_t *bis, int base_addr, int phy_addr, u32 emio) | |||
| 
 | ||||
| 	return 1; | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_OF_CONTROL | ||||
| int zynq_gem_of_init(const void *blob) | ||||
| { | ||||
| 	int offset = 0; | ||||
| 	u32 ret = 0; | ||||
| 	u32 reg, phy_reg; | ||||
| 
 | ||||
| 	debug("ZYNQ GEM: Initialization\n"); | ||||
| 
 | ||||
| 	do { | ||||
| 		offset = fdt_node_offset_by_compatible(blob, offset, | ||||
| 					"xlnx,ps7-ethernet-1.00.a"); | ||||
| 		if (offset != -1) { | ||||
| 			reg = fdtdec_get_addr(blob, offset, "reg"); | ||||
| 			if (reg != FDT_ADDR_T_NONE) { | ||||
| 				offset = fdtdec_lookup_phandle(blob, offset, | ||||
| 							       "phy-handle"); | ||||
| 				if (offset != -1) | ||||
| 					phy_reg = fdtdec_get_addr(blob, offset, | ||||
| 								  "reg"); | ||||
| 				else | ||||
| 					phy_reg = 0; | ||||
| 
 | ||||
| 				debug("ZYNQ GEM: addr %x, phyaddr %x\n", | ||||
| 				      reg, phy_reg); | ||||
| 
 | ||||
| 				ret |= zynq_gem_initialize(NULL, reg, | ||||
| 							   phy_reg, 0); | ||||
| 
 | ||||
| 			} else { | ||||
| 				debug("ZYNQ GEM: Can't get base address\n"); | ||||
| 				return -1; | ||||
| 			} | ||||
| 		} | ||||
| 	} while (offset != -1); | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| #endif | ||||
|  |  | |||
|  | @ -91,6 +91,7 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr, | |||
| 							int txpp, int rxpp); | ||||
| int xilinx_ll_temac_eth_init(bd_t *bis, unsigned long base_addr, int flags, | ||||
| 						unsigned long ctrl_addr); | ||||
| int zynq_gem_of_init(const void *blob); | ||||
| int zynq_gem_initialize(bd_t *bis, int base_addr, int phy_addr, u32 emio); | ||||
| /*
 | ||||
|  * As long as the Xilinx xps_ll_temac ethernet driver has not its own interface | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue