ARM: zynqmp: Wire up ethernet controllers
authorMichal Simek <michal.simek@xilinx.com>
Thu, 23 Jul 2015 10:03:55 +0000 (12:03 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 28 Jul 2015 09:56:27 +0000 (11:56 +0200)
Wire up ethernet controllers and enable MII and BOOTP options.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/include/asm/arch-zynqmp/hardware.h
arch/arm/include/asm/arch-zynqmp/sys_proto.h
board/xilinx/zynqmp/zynqmp.c
include/configs/xilinx_zynqmp.h

index 15bd519bfbe1733f269d9fa118a77894933157c1..5d191e848cca1db0075840f96861ae60ad13e926 100644 (file)
 #define ZYNQ_SERIAL_BASEADDR0  0xFF000000
 #define ZYNQ_SERIAL_BASEADDR1  0xFF001000
 
+#define ZYNQ_GEM_BASEADDR0     0xFF0B0000
+#define ZYNQ_GEM_BASEADDR1     0xFF0C0000
+#define ZYNQ_GEM_BASEADDR2     0xFF0D0000
+#define ZYNQ_GEM_BASEADDR3     0xFF0E0000
+
 #define ZYNQ_SPI_BASEADDR0     0xFF040000
 #define ZYNQ_SPI_BASEADDR1     0xFF050000
 
index 3ca15cb6e58844845824f9fcfecd20ac21cfe167..f5c90d11dc40abb2a834c25d538710110c1dbd39 100644 (file)
@@ -8,6 +8,11 @@
 #ifndef _ASM_ARCH_SYS_PROTO_H
 #define _ASM_ARCH_SYS_PROTO_H
 
+/* Setup clk for network */
+static inline void zynq_slcr_gem_clk_setup(u32 gem_id, unsigned long clk_rate)
+{
+}
+
 int zynq_sdhci_init(unsigned long regbase);
 int zynq_slcr_get_mio_pin_status(const char *periph);
 
index f5ff64d988e5b902d6a02ffb99f93276da865555..fb43cb0b9aa26d682e7be090c9f638cc5841b13f 100644 (file)
@@ -51,6 +51,31 @@ void reset_cpu(ulong addr)
 {
 }
 
+int board_eth_init(bd_t *bis)
+{
+       u32 ret = 0;
+
+#if defined(CONFIG_ZYNQ_GEM)
+# if defined(CONFIG_ZYNQ_GEM0)
+       ret |= zynq_gem_initialize(bis, ZYNQ_GEM_BASEADDR0,
+                                               CONFIG_ZYNQ_GEM_PHY_ADDR0, 0);
+# endif
+# if defined(CONFIG_ZYNQ_GEM1)
+       ret |= zynq_gem_initialize(bis, ZYNQ_GEM_BASEADDR1,
+                                               CONFIG_ZYNQ_GEM_PHY_ADDR1, 0);
+# endif
+# if defined(CONFIG_ZYNQ_GEM2)
+       ret |= zynq_gem_initialize(bis, ZYNQ_GEM_BASEADDR2,
+                                               CONFIG_ZYNQ_GEM_PHY_ADDR2, 0);
+# endif
+# if defined(CONFIG_ZYNQ_GEM3)
+       ret |= zynq_gem_initialize(bis, ZYNQ_GEM_BASEADDR3,
+                                               CONFIG_ZYNQ_GEM_PHY_ADDR3, 0);
+# endif
+#endif
+       return ret;
+}
+
 #ifdef CONFIG_CMD_MMC
 int board_mmc_init(bd_t *bd)
 {
index 8cb276ca709dbc79886efd86eb2754590924cfa6..9ed8771ff50744e9f67efaa846012be34c2669ac 100644 (file)
 #define CONFIG_CMD_ELF
 #define CONFIG_MP
 
+#define CONFIG_CMD_MII
+
+/* BOOTP options */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_MAY_FAIL
+#define CONFIG_BOOTP_SERVERIP
+
 /* SPI */
 #ifdef CONFIG_ZYNQ_SPI
 # define CONFIG_SPI_FLASH_SST
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_SYS_MAXARGS             64
 
+/* Ethernet driver */
+#if defined(CONFIG_ZYNQ_GEM0) || defined(CONFIG_ZYNQ_GEM1) || \
+       defined(CONFIG_ZYNQ_GEM2) || defined(CONFIG_ZYNQ_GEM3)
+# define CONFIG_NET_MULTI
+# define CONFIG_ZYNQ_GEM
+# define CONFIG_MII
+# define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
+# define CONFIG_PHYLIB
+# define CONFIG_PHY_MARVELL
+#endif
+
 /* I2C */
 #if defined(CONFIG_SYS_I2C_ZYNQ)
 # define CONFIG_CMD_I2C