summaryrefslogtreecommitdiffstats
path: root/0023-sunxi-add-gmac-Ethernet-support.patch
diff options
context:
space:
mode:
authorDennis Gilmore <dennis@ausil.us>2014-04-26 21:49:55 -0500
committerDennis Gilmore <dennis@ausil.us>2014-04-26 21:49:55 -0500
commit1619496436087ded318042cbc8c1a5b0513c2b7f (patch)
tree111d7e2d85a06de381d91c66d971a70d53302db8 /0023-sunxi-add-gmac-Ethernet-support.patch
parent0454bb3cbb683f2e5f15d473893ea6645cbc1293 (diff)
downloaduboot-tools-1619496436087ded318042cbc8c1a5b0513c2b7f.tar.gz
uboot-tools-1619496436087ded318042cbc8c1a5b0513c2b7f.tar.xz
uboot-tools-1619496436087ded318042cbc8c1a5b0513c2b7f.zip
add cubietruck u-boot image
Diffstat (limited to '0023-sunxi-add-gmac-Ethernet-support.patch')
-rw-r--r--0023-sunxi-add-gmac-Ethernet-support.patch168
1 files changed, 168 insertions, 0 deletions
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 <ijc@hellion.org.uk>
+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 <wens@csie.org>
+Signed-off-by: Jens Kuske <jenskuske@gmail.com>
+Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
+---
+ 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 <common.h>
++#include <netdev.h>
++#include <miiphy.h>
+ #include <serial.h>
+ #ifdef CONFIG_SPL_BUILD
+ #include <spl.h>
+@@ -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 <m.zalega@samsung.com>
+ Active arm armv7 s5pc1xx samsung smdkc100 smdkc100 - Minkyu Kang <mk7.kang@samsung.com>
+ 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 <mathieu.poirier@linaro.org>
+ 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 <b18965@freescale.com>
+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 <common.h>
++#include <netdev.h>
++#include <miiphy.h>
++#include <asm/gpio.h>
++#include <asm/io.h>
++#include <asm/arch/clock.h>
++#include <asm/arch/gpio.h>
++
++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
+