
On Wed, Mar 30, 2022 at 1:52 AM Tim Harvey tharvey@gateworks.com wrote:
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
net/dsa-uclass.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/net/dsa-uclass.c b/net/dsa-uclass.c index 9ff55a02fb23..07edc584daf3 100644 --- a/net/dsa-uclass.c +++ b/net/dsa-uclass.c @@ -466,8 +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; priv->cpu_port = pdata->cpu_port;
@@ -480,6 +478,15 @@ static int dsa_pre_probe(struct udevice *dev) uclass_find_device_by_ofnode(UCLASS_ETH, pdata->master_node, &priv->master_dev);
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,
@@ -489,13 +496,14 @@ static int dsa_pre_probe(struct udevice *dev) }
return 0;
-} +};
UCLASS_DRIVER(dsa) = { .id = UCLASS_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),
-- 2.17.1
Reviewed-by: Ramon Fried rfried.dev@gmail.com