Message ID | 20220922095124.22274-3-r-gunasekaran@ti.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Series | Implement workaround for errata i2329 | expand |
On Thu, Sep 22, 2022 at 12:51 PM Ravi Gunasekaran <r-gunasekaran@ti.com> wrote: > > For the TI SoCs affected by errata i2329, enable MDIO manual > mode by default > > Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com> > --- > drivers/net/ti/am65-cpsw-nuss.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ti/am65-cpsw-nuss.c b/drivers/net/ti/am65-cpsw-nuss.c > index 29c0422961..5ef04e3d83 100644 > --- a/drivers/net/ti/am65-cpsw-nuss.c > +++ b/drivers/net/ti/am65-cpsw-nuss.c > @@ -21,6 +21,7 @@ > #include <net.h> > #include <phy.h> > #include <power-domain.h> > +#include <soc.h> > #include <linux/bitops.h> > #include <linux/soc/ti/ti-udma.h> > > @@ -127,6 +128,8 @@ struct am65_cpsw_priv { > bool has_phy; > ofnode phy_node; > u32 phy_addr; > + > + bool mdio_manual_mode; > }; > > #ifdef PKTSIZE_ALIGN > @@ -541,6 +544,20 @@ static const struct eth_ops am65_cpsw_ops = { > .read_rom_hwaddr = am65_cpsw_read_rom_hwaddr, > }; > > +static const struct soc_attr k3_mdio_soc_data[] = { > + { .family = "AM62X", .revision = "SR1.0" }, > + { .family = "AM64X", .revision = "SR1.0" }, > + { .family = "AM64X", .revision = "SR2.0" }, > + { .family = "AM65X", .revision = "SR1.0" }, > + { .family = "AM65X", .revision = "SR2.0" }, > + { .family = "J7200", .revision = "SR1.0" }, > + { .family = "J7200", .revision = "SR2.0" }, > + { .family = "J721E", .revision = "SR1.0" }, > + { .family = "J721E", .revision = "SR1.1" }, > + { .family = "J721S2", .revision = "SR1.0" }, > + { /* sentinel */ }, > +}; > + > static int am65_cpsw_mdio_init(struct udevice *dev) > { > struct am65_cpsw_priv *priv = dev_get_priv(dev); > @@ -553,7 +570,7 @@ static int am65_cpsw_mdio_init(struct udevice *dev) > cpsw_common->mdio_base, > cpsw_common->bus_freq, > clk_get_rate(&cpsw_common->fclk), > - false); > + priv->mdio_manual_mode); > if (!cpsw_common->bus) > return -EFAULT; > > @@ -658,6 +675,10 @@ static int am65_cpsw_port_probe(struct udevice *dev) > sprintf(portname, "%s%s", dev->parent->name, dev->name); > device_set_name(dev, portname); > > + priv->mdio_manual_mode = false; > + if (soc_device_match(k3_mdio_soc_data)) > + priv->mdio_manual_mode = true; > + > ret = am65_cpsw_ofdata_parse_phy(dev); > if (ret) > goto out; > -- > 2.17.1 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
On Thu, Sep 22, 2022 at 03:21:24PM +0530, Ravi Gunasekaran wrote: > For the TI SoCs affected by errata i2329, enable MDIO manual > mode by default > > Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com> > Reviewed-by: Ramon Fried <rfried.dev@gmail.com> Applied to u-boot/master, thanks!
diff --git a/drivers/net/ti/am65-cpsw-nuss.c b/drivers/net/ti/am65-cpsw-nuss.c index 29c0422961..5ef04e3d83 100644 --- a/drivers/net/ti/am65-cpsw-nuss.c +++ b/drivers/net/ti/am65-cpsw-nuss.c @@ -21,6 +21,7 @@ #include <net.h> #include <phy.h> #include <power-domain.h> +#include <soc.h> #include <linux/bitops.h> #include <linux/soc/ti/ti-udma.h> @@ -127,6 +128,8 @@ struct am65_cpsw_priv { bool has_phy; ofnode phy_node; u32 phy_addr; + + bool mdio_manual_mode; }; #ifdef PKTSIZE_ALIGN @@ -541,6 +544,20 @@ static const struct eth_ops am65_cpsw_ops = { .read_rom_hwaddr = am65_cpsw_read_rom_hwaddr, }; +static const struct soc_attr k3_mdio_soc_data[] = { + { .family = "AM62X", .revision = "SR1.0" }, + { .family = "AM64X", .revision = "SR1.0" }, + { .family = "AM64X", .revision = "SR2.0" }, + { .family = "AM65X", .revision = "SR1.0" }, + { .family = "AM65X", .revision = "SR2.0" }, + { .family = "J7200", .revision = "SR1.0" }, + { .family = "J7200", .revision = "SR2.0" }, + { .family = "J721E", .revision = "SR1.0" }, + { .family = "J721E", .revision = "SR1.1" }, + { .family = "J721S2", .revision = "SR1.0" }, + { /* sentinel */ }, +}; + static int am65_cpsw_mdio_init(struct udevice *dev) { struct am65_cpsw_priv *priv = dev_get_priv(dev); @@ -553,7 +570,7 @@ static int am65_cpsw_mdio_init(struct udevice *dev) cpsw_common->mdio_base, cpsw_common->bus_freq, clk_get_rate(&cpsw_common->fclk), - false); + priv->mdio_manual_mode); if (!cpsw_common->bus) return -EFAULT; @@ -658,6 +675,10 @@ static int am65_cpsw_port_probe(struct udevice *dev) sprintf(portname, "%s%s", dev->parent->name, dev->name); device_set_name(dev, portname); + priv->mdio_manual_mode = false; + if (soc_device_match(k3_mdio_soc_data)) + priv->mdio_manual_mode = true; + ret = am65_cpsw_ofdata_parse_phy(dev); if (ret) goto out;
For the TI SoCs affected by errata i2329, enable MDIO manual mode by default Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com> --- drivers/net/ti/am65-cpsw-nuss.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-)