On Friday, April 18, 2014 at 08:05:47 PM, Ian Campbell wrote: > Add support for the GMAC Ethernet controller on Allwinner A20 (sun7i) > processors. Enable for the Cubietruck. > > Signed-off-by: Chen-Yu Tsai <w...@csie.org> > Signed-off-by: Jens Kuske <jensku...@gmail.com> > Signed-off-by: Ian Campbell <i...@hellion.org.uk> > --- > v3: Based on c89867dca2e9 "sunxi: clocks: clock_get_pll5 > prototype and coding style". > > v2: Based on u-boot-sunxi.git#sunxi d9aa5dd3d15c "sunxi: mmc: > checkpatch whitespace fixes" with v2014.04-rc2 merged in: > - drop accidentally doubled hunk > - use gpio setup functions > - moved before mmc patches > > v1: Based on u-boot-sunxi.git#sunxi commit d854c4de2f57 "arm: Handle > .gnu.hash section in ldscripts" vs v2014.01. > --- > 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)
This is something line ifdef CONFIG_CMD_NET > +/* > + * Initializes on-chip ethernet controllers. > + * to override, implement board_eth_init() > + */ > +int cpu_eth_init(bd_t *bis) > +{ > + sunxi_gmac_initialize(bis); And this is CONFIG_SUNXI_GMAC ... what if I wanted to enable USB ethernet or such ? > + > + return 0; Handle possible failures of sunxi_gmac_initialize() and propagate the return value please. [...] > +int sunxi_gmac_initialize(bd_t *bis) Stick this into arch/arm/sunxi/... , there's no need to keep it in drivers/net/ as it's no real driver, but just a glue. > +{ > + 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; DTTO here, designware_initialize() might fail ... > +} > 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 Do you really need this ? > +#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 Just delete this BOOTP nonsense. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot