* [PATCH 0/3] net: sun8i-emac: Allwinner D1 Support @ 2022-07-15 5:20 Samuel Holland 2022-07-15 5:20 ` [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug Samuel Holland ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Samuel Holland @ 2022-07-15 5:20 UTC (permalink / raw) To: u-boot, Jagan Teki, Andre Przywara Cc: Samuel Holland, Joe Hershberger, Ramon Fried D1 is a RISC-V SoC containing an EMAC compatible with the A64 EMAC. However, there are a couple of issues with the driver preventing it being built for RISC-V. These are resolved by patches 2-3. Patch 1 is a general cleanup. Samuel Holland (3): net: sun8i-emac: Downgrade printf during probe to debug net: sun8i-emac: Drop use of arch-specific header net: sun8i-emac: Use common syscon setup for R40 drivers/net/sun8i_emac.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) -- 2.35.1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug 2022-07-15 5:20 [PATCH 0/3] net: sun8i-emac: Allwinner D1 Support Samuel Holland @ 2022-07-15 5:20 ` Samuel Holland 2022-07-16 17:00 ` Andre Przywara 2022-07-15 5:20 ` [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header Samuel Holland 2022-07-15 5:20 ` [PATCH 3/3] net: sun8i-emac: Use common syscon setup for R40 Samuel Holland 2 siblings, 1 reply; 9+ messages in thread From: Samuel Holland @ 2022-07-15 5:20 UTC (permalink / raw) To: u-boot, Jagan Teki, Andre Przywara Cc: Samuel Holland, Joe Hershberger, Ramon Fried This just prints the PHY mode taken from the devicetree. It does not need to be printed during every boot. Signed-off-by: Samuel Holland <samuel@sholland.org> --- drivers/net/sun8i_emac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c index 2220f84b6978..a4b3492b7647 100644 --- a/drivers/net/sun8i_emac.c +++ b/drivers/net/sun8i_emac.c @@ -857,7 +857,7 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1); pdata->phy_interface = dev_read_phy_mode(dev); - printf("phy interface%d\n", pdata->phy_interface); + debug("phy interface %d\n", pdata->phy_interface); if (pdata->phy_interface == PHY_INTERFACE_MODE_NA) return -EINVAL; -- 2.35.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug 2022-07-15 5:20 ` [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug Samuel Holland @ 2022-07-16 17:00 ` Andre Przywara 2022-08-06 17:38 ` Ramon Fried 0 siblings, 1 reply; 9+ messages in thread From: Andre Przywara @ 2022-07-16 17:00 UTC (permalink / raw) To: Samuel Holland; +Cc: u-boot, Jagan Teki, Joe Hershberger, Ramon Fried On Fri, 15 Jul 2022 00:20:56 -0500 Samuel Holland <samuel@sholland.org> wrote: > This just prints the PHY mode taken from the devicetree. It does not > need to be printed during every boot. That's true, but I think a more important reason is that it spoils the output, doesn't it? It reads: Net: phy interface9 eth0: ethernet@1c30000 at the moment, but I guess the intention was just: Net: eth0: ethernet@1c30000 So given that, and the fact that "interface9" is not really helpful, that looks alright to me. > Signed-off-by: Samuel Holland <samuel@sholland.org> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Thanks, Andre > --- > > drivers/net/sun8i_emac.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c > index 2220f84b6978..a4b3492b7647 100644 > --- a/drivers/net/sun8i_emac.c > +++ b/drivers/net/sun8i_emac.c > @@ -857,7 +857,7 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) > priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1); > > pdata->phy_interface = dev_read_phy_mode(dev); > - printf("phy interface%d\n", pdata->phy_interface); > + debug("phy interface %d\n", pdata->phy_interface); > if (pdata->phy_interface == PHY_INTERFACE_MODE_NA) > return -EINVAL; > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug 2022-07-16 17:00 ` Andre Przywara @ 2022-08-06 17:38 ` Ramon Fried 0 siblings, 0 replies; 9+ messages in thread From: Ramon Fried @ 2022-08-06 17:38 UTC (permalink / raw) To: Andre Przywara Cc: Samuel Holland, U-Boot Mailing List, Jagan Teki, Joe Hershberger On Sat, Jul 16, 2022 at 8:02 PM Andre Przywara <andre.przywara@arm.com> wrote: > > On Fri, 15 Jul 2022 00:20:56 -0500 > Samuel Holland <samuel@sholland.org> wrote: > > > This just prints the PHY mode taken from the devicetree. It does not > > need to be printed during every boot. > > That's true, but I think a more important reason is that it spoils the > output, doesn't it? It reads: > Net: phy interface9 > eth0: ethernet@1c30000 > at the moment, but I guess the intention was just: > Net: eth0: ethernet@1c30000 > > So given that, and the fact that "interface9" is not really helpful, > that looks alright to me. > > > Signed-off-by: Samuel Holland <samuel@sholland.org> > > Reviewed-by: Andre Przywara <andre.przywara@arm.com> > > Thanks, > Andre > > --- > > > > drivers/net/sun8i_emac.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c > > index 2220f84b6978..a4b3492b7647 100644 > > --- a/drivers/net/sun8i_emac.c > > +++ b/drivers/net/sun8i_emac.c > > @@ -857,7 +857,7 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) > > priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1); > > > > pdata->phy_interface = dev_read_phy_mode(dev); > > - printf("phy interface%d\n", pdata->phy_interface); > > + debug("phy interface %d\n", pdata->phy_interface); > > if (pdata->phy_interface == PHY_INTERFACE_MODE_NA) > > return -EINVAL; > > > Reviewed-by: Ramon Fried <rfried.dev@gmail.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header 2022-07-15 5:20 [PATCH 0/3] net: sun8i-emac: Allwinner D1 Support Samuel Holland 2022-07-15 5:20 ` [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug Samuel Holland @ 2022-07-15 5:20 ` Samuel Holland 2022-07-18 10:03 ` Andre Przywara 2022-08-06 17:39 ` Ramon Fried 2022-07-15 5:20 ` [PATCH 3/3] net: sun8i-emac: Use common syscon setup for R40 Samuel Holland 2 siblings, 2 replies; 9+ messages in thread From: Samuel Holland @ 2022-07-15 5:20 UTC (permalink / raw) To: u-boot, Jagan Teki, Andre Przywara Cc: Samuel Holland, Joe Hershberger, Ramon Fried This header is not used since commit abdbefba2a4e ("net: sun8i_emac: Use consistent clock bitfield definitions"). Dropping it allows the driver to be architecture-independent. Signed-off-by: Samuel Holland <samuel@sholland.org> --- drivers/net/sun8i_emac.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c index a4b3492b7647..9cca8fa4e0a1 100644 --- a/drivers/net/sun8i_emac.c +++ b/drivers/net/sun8i_emac.c @@ -16,7 +16,6 @@ #include <asm/global_data.h> #include <asm/gpio.h> #include <asm/io.h> -#include <asm/arch/clock.h> #include <common.h> #include <clk.h> #include <dm.h> -- 2.35.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header 2022-07-15 5:20 ` [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header Samuel Holland @ 2022-07-18 10:03 ` Andre Przywara 2022-08-06 17:39 ` Ramon Fried 1 sibling, 0 replies; 9+ messages in thread From: Andre Przywara @ 2022-07-18 10:03 UTC (permalink / raw) To: Samuel Holland; +Cc: u-boot, Jagan Teki, Joe Hershberger, Ramon Fried On Fri, 15 Jul 2022 00:20:57 -0500 Samuel Holland <samuel@sholland.org> wrote: Hi, > This header is not used since commit abdbefba2a4e ("net: sun8i_emac: Use > consistent clock bitfield definitions"). Dropping it allows the driver > to be architecture-independent. Yes, we don't need this header anymore (all boards compile fine without it), and indeed it seems to be this commit you mentioned that changed that. > Signed-off-by: Samuel Holland <samuel@sholland.org> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Cheers, Andre > drivers/net/sun8i_emac.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c > index a4b3492b7647..9cca8fa4e0a1 100644 > --- a/drivers/net/sun8i_emac.c > +++ b/drivers/net/sun8i_emac.c > @@ -16,7 +16,6 @@ > #include <asm/global_data.h> > #include <asm/gpio.h> > #include <asm/io.h> > -#include <asm/arch/clock.h> > #include <common.h> > #include <clk.h> > #include <dm.h> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header 2022-07-15 5:20 ` [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header Samuel Holland 2022-07-18 10:03 ` Andre Przywara @ 2022-08-06 17:39 ` Ramon Fried 1 sibling, 0 replies; 9+ messages in thread From: Ramon Fried @ 2022-08-06 17:39 UTC (permalink / raw) To: Samuel Holland Cc: U-Boot Mailing List, Jagan Teki, Andre Przywara, Joe Hershberger On Fri, Jul 15, 2022 at 8:21 AM Samuel Holland <samuel@sholland.org> wrote: > > This header is not used since commit abdbefba2a4e ("net: sun8i_emac: Use > consistent clock bitfield definitions"). Dropping it allows the driver > to be architecture-independent. > > Signed-off-by: Samuel Holland <samuel@sholland.org> > --- > > drivers/net/sun8i_emac.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c > index a4b3492b7647..9cca8fa4e0a1 100644 > --- a/drivers/net/sun8i_emac.c > +++ b/drivers/net/sun8i_emac.c > @@ -16,7 +16,6 @@ > #include <asm/global_data.h> > #include <asm/gpio.h> > #include <asm/io.h> > -#include <asm/arch/clock.h> > #include <common.h> > #include <clk.h> > #include <dm.h> > -- > 2.35.1 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] net: sun8i-emac: Use common syscon setup for R40 2022-07-15 5:20 [PATCH 0/3] net: sun8i-emac: Allwinner D1 Support Samuel Holland 2022-07-15 5:20 ` [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug Samuel Holland 2022-07-15 5:20 ` [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header Samuel Holland @ 2022-07-15 5:20 ` Samuel Holland 2022-07-15 9:24 ` Jagan Teki 2 siblings, 1 reply; 9+ messages in thread From: Samuel Holland @ 2022-07-15 5:20 UTC (permalink / raw) To: u-boot, Jagan Teki, Andre Przywara Cc: Samuel Holland, Joe Hershberger, Ramon Fried While R40 puts the EMAC syscon register at a different address from other variants, the relevant portion of the register's layout is the same. Factor out the register offset so the same code can be shared by all variants. This matches what the Linux driver does. This change provides two benefits beyond the simplification: - R40 boards now respect the RX delays from the devicetree - This resolves a warning on architectures where readl/writel expect the address to have a pointer type, not phys_addr_t. Signed-off-by: Samuel Holland <samuel@sholland.org> --- drivers/net/sun8i_emac.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c index 9cca8fa4e0a1..75ecb58e1e45 100644 --- a/drivers/net/sun8i_emac.c +++ b/drivers/net/sun8i_emac.c @@ -162,7 +162,7 @@ struct emac_eth_dev { enum emac_variant variant; void *mac_reg; - phys_addr_t sysctl_reg; + void *sysctl_reg; struct phy_device *phydev; struct mii_dev *bus; struct clk tx_clk; @@ -317,18 +317,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata, { u32 reg; - if (priv->variant == R40_GMAC) { - /* Select RGMII for R40 */ - reg = readl(priv->sysctl_reg + 0x164); - reg |= SC_ETCS_INT_GMII | - SC_EPIT | - (CONFIG_GMAC_TX_DELAY << SC_ETXDC_OFFSET); - - writel(reg, priv->sysctl_reg + 0x164); - return 0; - } - - reg = readl(priv->sysctl_reg + 0x30); + reg = readl(priv->sysctl_reg); reg = sun8i_emac_set_syscon_ephy(priv, reg); @@ -369,7 +358,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata, reg |= ((pdata->rx_delay_ps / 100) << SC_ERXDC_OFFSET) & SC_ERXDC_MASK; - writel(reg, priv->sysctl_reg + 0x30); + writel(reg, priv->sysctl_reg); return 0; } @@ -792,6 +781,7 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) struct sun8i_eth_pdata *sun8i_pdata = dev_get_plat(dev); struct eth_pdata *pdata = &sun8i_pdata->eth_pdata; struct emac_eth_dev *priv = dev_get_priv(dev); + phys_addr_t syscon_base; const fdt32_t *reg; int node = dev_of_offset(dev); int offset = 0; @@ -837,13 +827,18 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) __func__); return -EINVAL; } - priv->sysctl_reg = fdt_translate_address((void *)gd->fdt_blob, - offset, reg); - if (priv->sysctl_reg == FDT_ADDR_T_NONE) { + + syscon_base = fdt_translate_address((void *)gd->fdt_blob, offset, reg); + if (syscon_base == FDT_ADDR_T_NONE) { debug("%s: Cannot find syscon base address\n", __func__); return -EINVAL; } + if (priv->variant == R40_GMAC) + priv->sysctl_reg = (void *)syscon_base + 0x164; + else + priv->sysctl_reg = (void *)syscon_base + 0x30; + pdata->phy_interface = -1; priv->phyaddr = -1; priv->use_internal_phy = false; -- 2.35.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] net: sun8i-emac: Use common syscon setup for R40 2022-07-15 5:20 ` [PATCH 3/3] net: sun8i-emac: Use common syscon setup for R40 Samuel Holland @ 2022-07-15 9:24 ` Jagan Teki 0 siblings, 0 replies; 9+ messages in thread From: Jagan Teki @ 2022-07-15 9:24 UTC (permalink / raw) To: Samuel Holland; +Cc: u-boot, Andre Przywara, Joe Hershberger, Ramon Fried On Fri, Jul 15, 2022 at 10:51 AM Samuel Holland <samuel@sholland.org> wrote: > > While R40 puts the EMAC syscon register at a different address from > other variants, the relevant portion of the register's layout is the > same. Factor out the register offset so the same code can be shared > by all variants. This matches what the Linux driver does. > > This change provides two benefits beyond the simplification: > - R40 boards now respect the RX delays from the devicetree > - This resolves a warning on architectures where readl/writel > expect the address to have a pointer type, not phys_addr_t. > > Signed-off-by: Samuel Holland <samuel@sholland.org> > --- > > drivers/net/sun8i_emac.c | 29 ++++++++++++----------------- > 1 file changed, 12 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c > index 9cca8fa4e0a1..75ecb58e1e45 100644 > --- a/drivers/net/sun8i_emac.c > +++ b/drivers/net/sun8i_emac.c > @@ -162,7 +162,7 @@ struct emac_eth_dev { > > enum emac_variant variant; > void *mac_reg; > - phys_addr_t sysctl_reg; > + void *sysctl_reg; > struct phy_device *phydev; > struct mii_dev *bus; > struct clk tx_clk; > @@ -317,18 +317,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata, > { > u32 reg; > > - if (priv->variant == R40_GMAC) { > - /* Select RGMII for R40 */ > - reg = readl(priv->sysctl_reg + 0x164); > - reg |= SC_ETCS_INT_GMII | > - SC_EPIT | > - (CONFIG_GMAC_TX_DELAY << SC_ETXDC_OFFSET); > - > - writel(reg, priv->sysctl_reg + 0x164); > - return 0; > - } > - > - reg = readl(priv->sysctl_reg + 0x30); > + reg = readl(priv->sysctl_reg); > > reg = sun8i_emac_set_syscon_ephy(priv, reg); > > @@ -369,7 +358,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata, > reg |= ((pdata->rx_delay_ps / 100) << SC_ERXDC_OFFSET) > & SC_ERXDC_MASK; > > - writel(reg, priv->sysctl_reg + 0x30); > + writel(reg, priv->sysctl_reg); > > return 0; > } > @@ -792,6 +781,7 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) > struct sun8i_eth_pdata *sun8i_pdata = dev_get_plat(dev); > struct eth_pdata *pdata = &sun8i_pdata->eth_pdata; > struct emac_eth_dev *priv = dev_get_priv(dev); > + phys_addr_t syscon_base; > const fdt32_t *reg; > int node = dev_of_offset(dev); > int offset = 0; > @@ -837,13 +827,18 @@ static int sun8i_emac_eth_of_to_plat(struct udevice *dev) > __func__); > return -EINVAL; > } > - priv->sysctl_reg = fdt_translate_address((void *)gd->fdt_blob, > - offset, reg); > - if (priv->sysctl_reg == FDT_ADDR_T_NONE) { > + > + syscon_base = fdt_translate_address((void *)gd->fdt_blob, offset, reg); > + if (syscon_base == FDT_ADDR_T_NONE) { > debug("%s: Cannot find syscon base address\n", __func__); > return -EINVAL; > } > > + if (priv->variant == R40_GMAC) > + priv->sysctl_reg = (void *)syscon_base + 0x164; > + else > + priv->sysctl_reg = (void *)syscon_base + 0x30; > + Better to get syscon fields from driver data as this driver support DM. Jagan. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-08-06 17:39 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-07-15 5:20 [PATCH 0/3] net: sun8i-emac: Allwinner D1 Support Samuel Holland 2022-07-15 5:20 ` [PATCH 1/3] net: sun8i-emac: Downgrade printf during probe to debug Samuel Holland 2022-07-16 17:00 ` Andre Przywara 2022-08-06 17:38 ` Ramon Fried 2022-07-15 5:20 ` [PATCH 2/3] net: sun8i-emac: Drop use of arch-specific header Samuel Holland 2022-07-18 10:03 ` Andre Przywara 2022-08-06 17:39 ` Ramon Fried 2022-07-15 5:20 ` [PATCH 3/3] net: sun8i-emac: Use common syscon setup for R40 Samuel Holland 2022-07-15 9:24 ` Jagan Teki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).