summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRavi Gunasekaran <r-gunasekaran@ti.com>2022-10-10 16:26:54 +0530
committerAnand Gadiyar <gadiyar@ti.com>2022-10-11 09:09:42 -0500
commit98726e3f84a8bd3b70efdc7ad72f29d099f6831f (patch)
tree2cea47fc23bd61974a9ad4b48f10a2bfe1e7d1d9 /drivers
parent8e63b071d47297e009f7429b10244292d6e1dffd (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.c20
-rw-r--r--drivers/net/ti/icssg_prueth.h1
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 */