From 1619496436087ded318042cbc8c1a5b0513c2b7f Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 26 Apr 2014 21:49:55 -0500 Subject: add cubietruck u-boot image --- 0023-sunxi-add-gmac-Ethernet-support.patch | 168 +++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 0023-sunxi-add-gmac-Ethernet-support.patch (limited to '0023-sunxi-add-gmac-Ethernet-support.patch') diff --git a/0023-sunxi-add-gmac-Ethernet-support.patch b/0023-sunxi-add-gmac-Ethernet-support.patch new file mode 100644 index 0000000..df7fbbe --- /dev/null +++ b/0023-sunxi-add-gmac-Ethernet-support.patch @@ -0,0 +1,168 @@ +From 4b39387594767ac865caa8710d1be39e869926e3 Mon Sep 17 00:00:00 2001 +From: Ian Campbell +Date: Fri, 18 Apr 2014 19:05:47 +0100 +Subject: [PATCH 23/36] sunxi: add gmac Ethernet support + +Add support for the GMAC Ethernet controller on Allwinner A20 (sun7i) +processors. Enable for the Cubietruck. + +Signed-off-by: Chen-Yu Tsai +Signed-off-by: Jens Kuske +Signed-off-by: Ian Campbell +--- + arch/arm/cpu/armv7/sunxi/board.c | 15 +++++++++++++++ + boards.cfg | 2 +- + drivers/net/Makefile | 1 + + drivers/net/sunxi_gmac.c | 34 ++++++++++++++++++++++++++++++++++ + include/configs/sunxi-common.h | 26 ++++++++++++++++++++++++++ + include/netdev.h | 1 + + 6 files changed, 78 insertions(+), 1 deletion(-) + create mode 100644 drivers/net/sunxi_gmac.c + +diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c +index b5c0cb7..9755320 100644 +--- a/arch/arm/cpu/armv7/sunxi/board.c ++++ b/arch/arm/cpu/armv7/sunxi/board.c +@@ -11,6 +11,8 @@ + */ + + #include ++#include ++#include + #include + #ifdef CONFIG_SPL_BUILD + #include +@@ -86,3 +88,16 @@ void enable_caches(void) + dcache_enable(); + } + #endif ++ ++#if defined(CONFIG_SUNXI_GMAC) ++/* ++ * Initializes on-chip ethernet controllers. ++ * to override, implement board_eth_init() ++ */ ++int cpu_eth_init(bd_t *bis) ++{ ++ sunxi_gmac_initialize(bis); ++ ++ return 0; ++} ++#endif +diff --git a/boards.cfg b/boards.cfg +index 306f891..ddc3c86 100644 +--- a/boards.cfg ++++ b/boards.cfg +@@ -372,7 +372,7 @@ Active arm armv7 rmobile renesas lager + Active arm armv7 s5pc1xx samsung goni s5p_goni - Mateusz Zalega + Active arm armv7 s5pc1xx samsung smdkc100 smdkc100 - Minkyu Kang + Active arm armv7 socfpga altera socfpga socfpga_cyclone5 - - +-Active arm armv7 sunxi - sunxi Cubietruck_FEL sun7i:CUBIETRUCK,SPL_FEL - ++Active arm armv7 sunxi - sunxi Cubietruck_FEL sun7i:CUBIETRUCK,SPL_FEL,SUNXI_GMAC,RGMII - + Active arm armv7 u8500 st-ericsson snowball snowball - Mathieu Poirier + Active arm armv7 u8500 st-ericsson u8500 u8500_href - - + Active arm armv7 vf610 freescale vf610twr vf610twr vf610twr:IMX_CONFIG=board/freescale/vf610twr/imximage.cfg Alison Wang +diff --git a/drivers/net/Makefile b/drivers/net/Makefile +index 7f9ce90..2300c00 100644 +--- a/drivers/net/Makefile ++++ b/drivers/net/Makefile +@@ -51,6 +51,7 @@ obj-$(CONFIG_SH_ETHER) += sh_eth.o + obj-$(CONFIG_SMC91111) += smc91111.o + obj-$(CONFIG_SMC911X) += smc911x.o + obj-$(CONFIG_SUNXI_WEMAC) += sunxi_wemac.o ++obj-$(CONFIG_SUNXI_GMAC) += sunxi_gmac.o + obj-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o + obj-$(CONFIG_TSEC_ENET) += tsec.o fsl_mdio.o + obj-$(CONFIG_DRIVER_TI_CPSW) += cpsw.o +diff --git a/drivers/net/sunxi_gmac.c b/drivers/net/sunxi_gmac.c +new file mode 100644 +index 0000000..15cd1fb +--- /dev/null ++++ b/drivers/net/sunxi_gmac.c +@@ -0,0 +1,34 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int sunxi_gmac_initialize(bd_t *bis) ++{ ++ int pin; ++ struct sunxi_ccm_reg *const ccm = ++ (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; ++ ++ /* Set up clock gating */ ++ setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC); ++ ++ /* Set MII clock */ ++ setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII | ++ CCM_GMAC_CTRL_GPIT_RGMII); ++ ++ /* Configure pin mux settings for GMAC */ ++ for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) { ++ /* skip unused pins in RGMII mode */ ++ if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14)) ++ continue; ++ sunxi_gpio_set_cfgpin(pin, SUN7I_GPA0_GMAC); ++ sunxi_gpio_set_drv(pin, 3); ++ } ++ ++ designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII); ++ ++ return 0; ++} +diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h +index 3f7e314..b76c3b0 100644 +--- a/include/configs/sunxi-common.h ++++ b/include/configs/sunxi-common.h +@@ -127,6 +127,32 @@ + + #define CONFIG_CONS_INDEX 1 /* UART0 */ + ++#ifdef CONFIG_SUNXI_GMAC ++#define CONFIG_DESIGNWARE_ETH /* GMAC can use designware driver */ ++#define CONFIG_DW_AUTONEG ++#define CONFIG_PHY_GIGE /* GMAC can use gigabit PHY */ ++#define CONFIG_PHY_ADDR 1 ++#define CONFIG_MII /* MII PHY management */ ++#define CONFIG_PHYLIB ++#endif ++ ++#ifdef CONFIG_CMD_NET ++#define CONFIG_CMD_NFS ++#define CONFIG_CMD_SNTP ++#define CONFIG_TIMESTAMP /* Needed by SNTP */ ++#define CONFIG_CMD_DNS ++#define CONFIG_NETCONSOLE ++#define CONFIG_BOOTP_NISDOMAIN ++#define CONFIG_BOOTP_BOOTFILESIZE ++#define CONFIG_BOOTP_DNS2 ++#define CONFIG_BOOTP_SEND_HOSTNAME ++#define CONFIG_BOOTP_NTPSERVER ++#define CONFIG_BOOTP_TIMEOFFSET ++#define CONFIG_BOOTP_MAY_FAIL ++#define CONFIG_BOOTP_SERVERIP ++#define CONFIG_BOOTP_DHCP_REQUEST_DELAY 50000 ++#endif ++ + #if !defined CONFIG_ENV_IS_IN_MMC && \ + !defined CONFIG_ENV_IS_IN_NAND && \ + !defined CONFIG_ENV_IS_IN_FAT && \ +diff --git a/include/netdev.h b/include/netdev.h +index 32b5073..fc4a2f8 100644 +--- a/include/netdev.h ++++ b/include/netdev.h +@@ -79,6 +79,7 @@ int sh_eth_initialize(bd_t *bis); + int skge_initialize(bd_t *bis); + int smc91111_initialize(u8 dev_num, int base_addr); + int smc911x_initialize(u8 dev_num, int base_addr); ++int sunxi_gmac_initialize(bd_t *bis); + int sunxi_wemac_initialize(bd_t *bis); + int tsi108_eth_initialize(bd_t *bis); + int uec_standard_init(bd_t *bis); +-- +1.9.0 + -- cgit