mx6qsabresd: Add Ethernet support
PATCH 1/1 mx6qsabresd: Add Ethernet support
From: Fabio Estevam <[email protected]>
mx6qsabresd has a AR8031 Gigabit PHY.
Add support for it.
Also increase CONFIG_SYS_MALLOC_LEN so that FEC buffer allocation does not fail.
Tested on 1Gbp and 100Mbps networks.
--- board/freescale/mx6qsabresd/mx6qsabresd.c | 76 +++++++++++++++++++++++++++++ include/configs/mx6qsabresd.h | 17 ++++++- 2 files changed, 91 insertions(+), 2 deletions(-)
board/freescale/mx6qsabresd/mx6qsabresd.c +76 -0
@@ -56,6 +56,36 @@ iomux_v3_cfg_t uart1_pads[] = { MX6Q_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), }; +iomux_v3_cfg_t enet_pads[] = { +MX6Q_PAD_ENET_MDIO__ENET_MDIO |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_ENET_MDC__ENET_MDC |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_TXC__ENET_RGMII_TXC |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_TD0__ENET_RGMII_TD0 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_TD1__ENET_RGMII_TD1 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_TD2__ENET_RGMII_TD2 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_TD3__ENET_RGMII_TD3 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_RXC__ENET_RGMII_RXC |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_RD0__ENET_RGMII_RD0 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_RD1__ENET_RGMII_RD1 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_RD2__ENET_RGMII_RD2 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_RD3__ENET_RGMII_RD3 |MUX_PAD_CTRL (ENET_PAD_CTRL ), +MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL |MUX_PAD_CTRL (ENET_PAD_CTRL ), +/* AR8031 PHY Reset */ +MX6Q_PAD_ENET_CRS_DV__GPIO_1_25 |MUX_PAD_CTRL (NO_PAD_CTRL ), +}; + +static void setup_iomux_enet (void ) +{ +imx_iomux_v3_setup_multiple_pads (enet_pads,ARRAY_SIZE (enet_pads)); + +/* Reset AR8031 PHY */ +gpio_direction_output (IMX_GPIO_NR (1 ,25 ) ,0 ); +udelay (500 ); +gpio_set_value (IMX_GPIO_NR (1 ,25 ),1 ); +} +iomux_v3_cfg_t usdhc3_pads[] = {MX6Q_PAD_SD3_CLK__USDHC3_CLK |MUX_PAD_CTRL (USDHC_PAD_CTRL ),MX6Q_PAD_SD3_CMD__USDHC3_CMD |MUX_PAD_CTRL (USDHC_PAD_CTRL ),
@@ -90,6 +120,52 @@ int board_mmc_init(bd_t *bis) }#endif +int mx6_rgmii_rework (struct phy_device *phydev) +{ +unsigned short val; + +/* To enable AR8031 ouput a 125MHz clk from CLK_25M */ +phy_write (phydev,MDIO_DEVAD_NONE ,0xd ,0x7 ); +phy_write (phydev,MDIO_DEVAD_NONE ,0xe ,0x8016 ); +phy_write (phydev,MDIO_DEVAD_NONE ,0xd ,0x4007 ); + + val =phy_read (phydev,MDIO_DEVAD_NONE ,0xe ); + val &=0xffe3 ; + val |=0x18 ; +phy_write (phydev,MDIO_DEVAD_NONE ,0xe , val); + +/* introduce tx clock delay */ +phy_write (phydev,MDIO_DEVAD_NONE ,0x1d ,0x5 ); + val =phy_read (phydev,MDIO_DEVAD_NONE ,0x1e ); + val |=0x0100 ; +phy_write (phydev,MDIO_DEVAD_NONE ,0x1e , val); + +return 0 ; +} + +int board_phy_config (struct phy_device *phydev) +{ +mx6_rgmii_rework (phydev); + +if (phydev->drv->config) + phydev->drv->config (phydev); + +return 0 ; +} + +int board_eth_init (bd_t *bis) +{ +int ret; + +setup_iomux_enet (); + + ret =cpu_eth_init (bis); +if (ret) +printf ("FEC MXC: %s:failed\n" , __func__); + +return 0 ; +} +u32 get_board_rev (void ) {return 0x63000 ;
include/configs/mx6qsabresd.h +15 -2
@@ -33,9 +33,8 @@#define CONFIG_REVISION_TAG /* Size of malloc() pool */ -#define CONFIG_SYS_MALLOC_LEN CONFIG_ENV_SIZE +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 2 * 1024 * 1024) -#define CONFIG_ARCH_CPU_INIT #define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_MXC_GPIO
@@ -55,6 +54,20 @@#define CONFIG_CMD_FAT #define CONFIG_DOS_PARTITION +#define CONFIG_CMD_PING +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_MII +#define CONFIG_CMD_NET +#define CONFIG_FEC_MXC +#define CONFIG_MII +#define IMX_FEC_BASE ENET_BASE_ADDR +#define CONFIG_FEC_XCV_TYPE RGMII +#define CONFIG_ETHPRIME "FEC" +#define CONFIG_FEC_MXC_PHYADDR 1 + +#define CONFIG_PHYLIB +#define CONFIG_PHY_ATHEROS +/* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE #define CONFIG_CONS_INDEX 1
Signature · 1 line
1.7.9.5
PATCH 1/1 mx6qsabresd: Add Ethernet support
Quoted 6 lines · On Wed, 19 Sep 2012 00:24:23 -0300 Fabio Estevam <[email protected]> wrote:
From: Fabio Estevam <[email protected]>
mx6qsabresd has a AR8031 Gigabit PHY.
Add support for it.
Quoted 7 lines
Also increase
CONFIG_SYS_MALLOC_LENso that FEC buffer allocation does not fail.Tested on 1Gbp and 100Mbps networks.
Suggested-by Kim Phillips <[email protected]>Signed-off-by Fabio Estevam <[email protected]>---
Kim
PATCH 1/1 mx6qsabresd: Add Ethernet support
In reply to Fabio EstevamQuoted 6 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
mx6qsabresd has a AR8031 Gigabit PHY.
Add support for it.
Quoted 7 lines
Also increase
CONFIG_SYS_MALLOC_LENso that FEC buffer allocation does not fail.Tested on 1Gbp and 100Mbps networks.
Suggested-by Kim Phillips <[email protected]>Signed-off-by Fabio Estevam <[email protected]>---
Applied to u-boot-imx, next branch.
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================