diff options
| author | Tim Harvey <[email protected]> | 2022-11-30 09:42:45 -0800 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2023-02-02 14:22:08 -0500 |
| commit | c5868fcd25c670f5c4e37afca2c5eaddadd218b4 (patch) | |
| tree | d6f89e3bbeeebcae1e255b593a227e8b24a71829 /net | |
| parent | f54002d774d1cd215a0f12da7a3c06f539ae92ea (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 <[email protected]>
Reviewed-by: Ramon Fried <[email protected]>
Reviewed-by: Vladimir Oltean <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
Diffstat (limited to 'net')
| -rw-r--r-- | net/dsa-uclass.c | 11 |
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), |
