diff options
author | Ravi Gunasekaran <r-gunasekaran@ti.com> | 2022-10-10 16:26:54 +0530 |
---|---|---|
committer | Anand Gadiyar <gadiyar@ti.com> | 2022-10-11 09:09:42 -0500 |
commit | 98726e3f84a8bd3b70efdc7ad72f29d099f6831f (patch) | |
tree | 2cea47fc23bd61974a9ad4b48f10a2bfe1e7d1d9 /drivers | |
parent | 8e63b071d47297e009f7429b10244292d6e1dffd (diff) |
net: ti: icssg-prueth: Enable MDIO manual mode
For the TI SoCs affected by errata i2329, enable MDIO manual
mode by default
Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ti/icssg_prueth.c | 20 | ||||
-rw-r--r-- | drivers/net/ti/icssg_prueth.h | 1 |
2 files changed, 20 insertions, 1 deletions
diff --git a/drivers/net/ti/icssg_prueth.c b/drivers/net/ti/icssg_prueth.c index 965f9353a3..3f283831a6 100644 --- a/drivers/net/ti/icssg_prueth.c +++ b/drivers/net/ti/icssg_prueth.c @@ -113,7 +113,7 @@ static int icssg_mdio_init(struct udevice *dev) prueth->bus = cpsw_mdio_init(dev->name, prueth->mdio_base, prueth->mdio_freq, clk_get_rate(&prueth->mdiofck), - false); + prueth->mdio_manual_mode); if (!prueth->bus) return -EFAULT; @@ -487,6 +487,20 @@ static int prueth_config_rgmiidelay(struct prueth *prueth, return 0; } +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 prueth_probe(struct udevice *dev) { struct prueth *prueth; @@ -625,6 +639,10 @@ static int prueth_probe(struct udevice *dev) return ret; } + prueth->mdio_manual_mode = false; + if (soc_device_match(k3_mdio_soc_data)) + prueth->mdio_manual_mode = true; + ret = icssg_mdio_init(dev); if (ret) return ret; diff --git a/drivers/net/ti/icssg_prueth.h b/drivers/net/ti/icssg_prueth.h index 2a5b2241f9..1698dafc00 100644 --- a/drivers/net/ti/icssg_prueth.h +++ b/drivers/net/ti/icssg_prueth.h @@ -65,6 +65,7 @@ struct prueth { u32 rx_pend; int slice; bool is_sr1; + bool mdio_manual_mode; }; /* config helpers */ |