aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorTim Harvey2022-11-30 09:42:45 -0800
committerTom Rini2023-02-02 14:22:08 -0500
commitc5868fcd25c670f5c4e37afca2c5eaddadd218b4 (patch)
treed6f89e3bbeeebcae1e255b593a227e8b24a71829 /net
parentf54002d774d1cd215a0f12da7a3c06f539ae92ea (diff)
net: dsa: move cpu port probe to dsa_post_probe
In order to ensure that a DSA driver probe gets called before dsa_ops->port_probe move the port_probe of the cpu_port to a post-probe function. Signed-off-by: Tim Harvey <tharvey@gateworks.com> Reviewed-by: Ramon Fried <rfried.dev@gmail.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Fabio Estevam <festevam@denx.de>
Diffstat (limited to 'net')
-rw-r--r--net/dsa-uclass.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/net/dsa-uclass.c b/net/dsa-uclass.c
index 5b7046432ff..5759cedcbec 100644
--- a/net/dsa-uclass.c
+++ b/net/dsa-uclass.c
@@ -466,7 +466,6 @@ static int dsa_pre_probe(struct udevice *dev)
{
struct dsa_pdata *pdata = dev_get_uclass_plat(dev);
struct dsa_priv *priv = dev_get_uclass_priv(dev);
- struct dsa_ops *ops = dsa_get_ops(dev);
int err;
priv->num_ports = pdata->num_ports;
@@ -482,6 +481,15 @@ static int dsa_pre_probe(struct udevice *dev)
if (err)
return err;
+ return 0;
+}
+
+static int dsa_post_probe(struct udevice *dev)
+{
+ struct dsa_priv *priv = dev_get_uclass_priv(dev);
+ struct dsa_ops *ops = dsa_get_ops(dev);
+ int err;
+
/* Simulate a probing event for the CPU port */
if (ops->port_probe) {
err = ops->port_probe(dev, priv->cpu_port,
@@ -498,6 +506,7 @@ UCLASS_DRIVER(dsa) = {
.name = "dsa",
.post_bind = dsa_post_bind,
.pre_probe = dsa_pre_probe,
+ .post_probe = dsa_post_probe,
.per_device_auto = sizeof(struct dsa_priv),
.per_device_plat_auto = sizeof(struct dsa_pdata),
.per_child_plat_auto = sizeof(struct dsa_port_pdata),