Message ID | 20200618190524.21272-4-festevam@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [1/4] phy: atheros: ar8035: Fix clock output calculation | expand |
Hi Fabio, Thanks for your debug and fix. Small nits below. On Thu, Jun 18 2020, Fabio Estevam wrote: > Migration to DM_ETH is mandatory, so convert mx6cuboxi to Ethernet > Driver Model. > > This also brings the benefit of restoring Ethernet functionality. > > Reported-by: Tom Rini <trini at konsulko.com> > Signed-off-by: Fabio Estevam <festevam at gmail.com> > --- > board/solidrun/mx6cuboxi/mx6cuboxi.c | 123 ++++----------------------- > configs/mx6cuboxi_defconfig | 4 + > include/configs/mx6cuboxi.h | 6 -- > 3 files changed, 21 insertions(+), 112 deletions(-) > > diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c > index 94707bccb2..225fea2cb2 100644 > --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c > +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c > @@ -17,7 +17,6 @@ > #include <image.h> > #include <init.h> > #include <log.h> > -#include <net.h> > #include <asm/arch/clock.h> > #include <asm/arch/imx-regs.h> > #include <asm/arch/iomux.h> > @@ -34,7 +33,6 @@ > #include <fsl_esdhc_imx.h> > #include <malloc.h> > #include <miiphy.h> Do we still need this header? > -#include <netdev.h> > #include <asm/arch/crm_regs.h> > #include <asm/io.h> > #include <asm/arch/sys_proto.h> > @@ -237,110 +235,6 @@ int board_mmc_init(bd_t *bis) > return 0; > } > > -static iomux_v3_cfg_t const enet_pads[] = { > - IOMUX_PADS(PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL)), The definitions of these ENET_PAD_CTRL* macros can go away as well. baruch > - IOMUX_PADS(PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - /* AR8035 reset */ > - IOMUX_PADS(PAD_KEY_ROW4__GPIO4_IO15 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > - /* AR8035 interrupt */ > - IOMUX_PADS(PAD_DI0_PIN2__GPIO4_IO18 | MUX_PAD_CTRL(NO_PAD_CTRL)), ...
On Thu, Jun 18, 2020 at 04:05:24PM -0300, Fabio Estevam wrote: > Migration to DM_ETH is mandatory, so convert mx6cuboxi to Ethernet > Driver Model. > > This also brings the benefit of restoring Ethernet functionality. > > Reported-by: Tom Rini <trini at konsulko.com> > Signed-off-by: Fabio Estevam <festevam at gmail.com> Tested-by: Tom Rini <trini at konsulko.com>
Hi Fabio, On Thu, 18 Jun 2020 at 22:07, Fabio Estevam <festevam at gmail.com> wrote: > > Migration to DM_ETH is mandatory, so convert mx6cuboxi to Ethernet > Driver Model. > > This also brings the benefit of restoring Ethernet functionality. > > Reported-by: Tom Rini <trini at konsulko.com> > Signed-off-by: Fabio Estevam <festevam at gmail.com> > --- > board/solidrun/mx6cuboxi/mx6cuboxi.c | 123 ++++----------------------- > configs/mx6cuboxi_defconfig | 4 + > include/configs/mx6cuboxi.h | 6 -- > 3 files changed, 21 insertions(+), 112 deletions(-) > > diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c > index 94707bccb2..225fea2cb2 100644 > --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c > +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c > @@ -17,7 +17,6 @@ > #include <image.h> > #include <init.h> > #include <log.h> > -#include <net.h> > #include <asm/arch/clock.h> > #include <asm/arch/imx-regs.h> > #include <asm/arch/iomux.h> > @@ -34,7 +33,6 @@ > #include <fsl_esdhc_imx.h> > #include <malloc.h> > #include <miiphy.h> > -#include <netdev.h> > #include <asm/arch/crm_regs.h> > #include <asm/io.h> > #include <asm/arch/sys_proto.h> > @@ -237,110 +235,6 @@ int board_mmc_init(bd_t *bis) > return 0; > } > > -static iomux_v3_cfg_t const enet_pads[] = { > - IOMUX_PADS(PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - /* AR8035 reset */ > - IOMUX_PADS(PAD_KEY_ROW4__GPIO4_IO15 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > - /* AR8035 interrupt */ > - IOMUX_PADS(PAD_DI0_PIN2__GPIO4_IO18 | MUX_PAD_CTRL(NO_PAD_CTRL)), > - /* GPIO16 -> AR8035 25MHz */ > - IOMUX_PADS(PAD_GPIO_16__ENET_REF_CLK | MUX_PAD_CTRL(NO_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(NO_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */ > - IOMUX_PADS(PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL_CLK)), > - IOMUX_PADS(PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > - IOMUX_PADS(PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > - IOMUX_PADS(PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL)), > - IOMUX_PADS(PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > - IOMUX_PADS(PAD_ENET_RXD0__GPIO1_IO27 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > - IOMUX_PADS(PAD_ENET_RXD1__GPIO1_IO26 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), > -}; > - > -static void setup_iomux_enet(void) > -{ > - struct gpio_desc desc; > - int ret; > - > - SETUP_IOMUX_PADS(enet_pads); > - > - ret = dm_gpio_lookup_name("GPIO4_15", &desc); > - if (ret) { > - printf("%s: phy reset lookup failed\n", __func__); > - return; > - } > - > - ret = dm_gpio_request(&desc, "phy-reset"); > - if (ret) { > - printf("%s: phy reset request failed\n", __func__); > - return; > - } > - > - gpio_direction_output(ETH_PHY_RESET, 0); > - mdelay(10); > - gpio_set_value(ETH_PHY_RESET, 1); > - udelay(100); > - > - gpio_free_list_nodev(&desc, 1); > -} > - > -int board_phy_config(struct phy_device *phydev) > -{ > - if (phydev->drv->config) > - phydev->drv->config(phydev); > - > - return 0; > -} > - > -/* On Cuboxi Ethernet PHY can be located at addresses 0x0 or 0x4 */ > -#define ETH_PHY_MASK ((1 << 0x0) | (1 << 0x4)) > - > -int board_eth_init(bd_t *bis) > -{ > - struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR; > - struct mii_dev *bus; > - struct phy_device *phydev; > - > - int ret = enable_fec_anatop_clock(0, ENET_25MHZ); > - if (ret) > - return ret; > - > - /* set gpr1[ENET_CLK_SEL] */ > - setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK); > - > - setup_iomux_enet(); > - > - bus = fec_get_miibus(IMX_FEC_BASE, -1); > - if (!bus) > - return -EINVAL; > - > - phydev = phy_find_by_mask(bus, ETH_PHY_MASK, PHY_INTERFACE_MODE_RGMII); > - if (!phydev) { > - ret = -EINVAL; > - goto free_bus; > - } > - > - debug("using phy at address %d\n", phydev->addr); > - ret = fec_probe(bis, -1, IMX_FEC_BASE, bus, phydev); > - if (ret) > - goto free_phydev; > - > - return 0; > - > -free_phydev: > - free(phydev); > -free_bus: > - free(bus); > - return ret; > -} > - > #ifdef CONFIG_VIDEO_IPUV3 > static void do_enable_hdmi(struct display_info_t const *dev) > { > @@ -433,6 +327,21 @@ static int setup_display(void) > } > #endif /* CONFIG_VIDEO_IPUV3 */ > > +static int setup_fec(void) > +{ > + struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR; > + int ret; > + > + ret = enable_fec_anatop_clock(0, ENET_25MHZ); > + if (ret) > + return ret; > + > + /* set gpr1[ENET_CLK_SEL] */ > + setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK); > + > + return 0; > +} > + > int board_early_init_f(void) > { > setup_iomux_uart(); > @@ -440,6 +349,8 @@ int board_early_init_f(void) > #ifdef CONFIG_CMD_SATA > setup_sata(); > #endif > + setup_fec(); > + > return 0; > } > > diff --git a/configs/mx6cuboxi_defconfig b/configs/mx6cuboxi_defconfig > index df7e4611a0..3f43fb7ad0 100644 > --- a/configs/mx6cuboxi_defconfig > +++ b/configs/mx6cuboxi_defconfig > @@ -50,6 +50,10 @@ CONFIG_DM_MMC=y > CONFIG_FSL_USDHC=y > CONFIG_PHYLIB=y > CONFIG_PHY_ATHEROS=y > +CONFIG_DM_ETH=y > +CONFIG_DM_MDIO=y I wasn't going to nitpick, but since Baruch started giving some more relevant feedback, I figured I could as well: Does this board make any use of DM_MDIO? Doesn't look like it. > +CONFIG_FEC_MXC=y > +CONFIG_RGMII=y > CONFIG_MII=y > CONFIG_PINCTRL=y > CONFIG_PINCTRL_IMX6=y > diff --git a/include/configs/mx6cuboxi.h b/include/configs/mx6cuboxi.h > index 2ccf44e573..96f79e6b58 100644 > --- a/include/configs/mx6cuboxi.h > +++ b/include/configs/mx6cuboxi.h > @@ -29,12 +29,6 @@ > #define CONFIG_LBA48 > #endif > > -/* Ethernet Configuration */ > -#define CONFIG_FEC_MXC > -#define IMX_FEC_BASE ENET_BASE_ADDR > -#define CONFIG_FEC_XCV_TYPE RGMII > -#define CONFIG_FEC_MXC_PHYADDR 0 > - > /* Framebuffer */ > #define CONFIG_VIDEO_BMP_RLE8 > #define CONFIG_SPLASH_SCREEN > -- > 2.17.1 > Thanks, -Vladimir
diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c index 94707bccb2..225fea2cb2 100644 --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c @@ -17,7 +17,6 @@ #include <image.h> #include <init.h> #include <log.h> -#include <net.h> #include <asm/arch/clock.h> #include <asm/arch/imx-regs.h> #include <asm/arch/iomux.h> @@ -34,7 +33,6 @@ #include <fsl_esdhc_imx.h> #include <malloc.h> #include <miiphy.h> -#include <netdev.h> #include <asm/arch/crm_regs.h> #include <asm/io.h> #include <asm/arch/sys_proto.h> @@ -237,110 +235,6 @@ int board_mmc_init(bd_t *bis) return 0; } -static iomux_v3_cfg_t const enet_pads[] = { - IOMUX_PADS(PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL)), - /* AR8035 reset */ - IOMUX_PADS(PAD_KEY_ROW4__GPIO4_IO15 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), - /* AR8035 interrupt */ - IOMUX_PADS(PAD_DI0_PIN2__GPIO4_IO18 | MUX_PAD_CTRL(NO_PAD_CTRL)), - /* GPIO16 -> AR8035 25MHz */ - IOMUX_PADS(PAD_GPIO_16__ENET_REF_CLK | MUX_PAD_CTRL(NO_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(NO_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL)), - /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */ - IOMUX_PADS(PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL_CLK)), - IOMUX_PADS(PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), - IOMUX_PADS(PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), - IOMUX_PADS(PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL)), - IOMUX_PADS(PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), - IOMUX_PADS(PAD_ENET_RXD0__GPIO1_IO27 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), - IOMUX_PADS(PAD_ENET_RXD1__GPIO1_IO26 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD)), -}; - -static void setup_iomux_enet(void) -{ - struct gpio_desc desc; - int ret; - - SETUP_IOMUX_PADS(enet_pads); - - ret = dm_gpio_lookup_name("GPIO4_15", &desc); - if (ret) { - printf("%s: phy reset lookup failed\n", __func__); - return; - } - - ret = dm_gpio_request(&desc, "phy-reset"); - if (ret) { - printf("%s: phy reset request failed\n", __func__); - return; - } - - gpio_direction_output(ETH_PHY_RESET, 0); - mdelay(10); - gpio_set_value(ETH_PHY_RESET, 1); - udelay(100); - - gpio_free_list_nodev(&desc, 1); -} - -int board_phy_config(struct phy_device *phydev) -{ - if (phydev->drv->config) - phydev->drv->config(phydev); - - return 0; -} - -/* On Cuboxi Ethernet PHY can be located at addresses 0x0 or 0x4 */ -#define ETH_PHY_MASK ((1 << 0x0) | (1 << 0x4)) - -int board_eth_init(bd_t *bis) -{ - struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR; - struct mii_dev *bus; - struct phy_device *phydev; - - int ret = enable_fec_anatop_clock(0, ENET_25MHZ); - if (ret) - return ret; - - /* set gpr1[ENET_CLK_SEL] */ - setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK); - - setup_iomux_enet(); - - bus = fec_get_miibus(IMX_FEC_BASE, -1); - if (!bus) - return -EINVAL; - - phydev = phy_find_by_mask(bus, ETH_PHY_MASK, PHY_INTERFACE_MODE_RGMII); - if (!phydev) { - ret = -EINVAL; - goto free_bus; - } - - debug("using phy at address %d\n", phydev->addr); - ret = fec_probe(bis, -1, IMX_FEC_BASE, bus, phydev); - if (ret) - goto free_phydev; - - return 0; - -free_phydev: - free(phydev); -free_bus: - free(bus); - return ret; -} - #ifdef CONFIG_VIDEO_IPUV3 static void do_enable_hdmi(struct display_info_t const *dev) { @@ -433,6 +327,21 @@ static int setup_display(void) } #endif /* CONFIG_VIDEO_IPUV3 */ +static int setup_fec(void) +{ + struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR; + int ret; + + ret = enable_fec_anatop_clock(0, ENET_25MHZ); + if (ret) + return ret; + + /* set gpr1[ENET_CLK_SEL] */ + setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK); + + return 0; +} + int board_early_init_f(void) { setup_iomux_uart(); @@ -440,6 +349,8 @@ int board_early_init_f(void) #ifdef CONFIG_CMD_SATA setup_sata(); #endif + setup_fec(); + return 0; } diff --git a/configs/mx6cuboxi_defconfig b/configs/mx6cuboxi_defconfig index df7e4611a0..3f43fb7ad0 100644 --- a/configs/mx6cuboxi_defconfig +++ b/configs/mx6cuboxi_defconfig @@ -50,6 +50,10 @@ CONFIG_DM_MMC=y CONFIG_FSL_USDHC=y CONFIG_PHYLIB=y CONFIG_PHY_ATHEROS=y +CONFIG_DM_ETH=y +CONFIG_DM_MDIO=y +CONFIG_FEC_MXC=y +CONFIG_RGMII=y CONFIG_MII=y CONFIG_PINCTRL=y CONFIG_PINCTRL_IMX6=y diff --git a/include/configs/mx6cuboxi.h b/include/configs/mx6cuboxi.h index 2ccf44e573..96f79e6b58 100644 --- a/include/configs/mx6cuboxi.h +++ b/include/configs/mx6cuboxi.h @@ -29,12 +29,6 @@ #define CONFIG_LBA48 #endif -/* Ethernet Configuration */ -#define CONFIG_FEC_MXC -#define IMX_FEC_BASE ENET_BASE_ADDR -#define CONFIG_FEC_XCV_TYPE RGMII -#define CONFIG_FEC_MXC_PHYADDR 0 - /* Framebuffer */ #define CONFIG_VIDEO_BMP_RLE8 #define CONFIG_SPLASH_SCREEN
Migration to DM_ETH is mandatory, so convert mx6cuboxi to Ethernet Driver Model. This also brings the benefit of restoring Ethernet functionality. Reported-by: Tom Rini <trini at konsulko.com> Signed-off-by: Fabio Estevam <festevam at gmail.com> --- board/solidrun/mx6cuboxi/mx6cuboxi.c | 123 ++++----------------------- configs/mx6cuboxi_defconfig | 4 + include/configs/mx6cuboxi.h | 6 -- 3 files changed, 21 insertions(+), 112 deletions(-)