On Sat, Jul 06, 2019 at 05:19:00PM +0200, jo...@solid-run.com wrote: > From: Josua Mayer <jo...@solid-run.com> > > Defer probing of the orion-mdio interface when enabling of either of the > clocks defer probing.
Hi Josua I'm having trouble parsing that sentence. How about: Defer probing of the orion-mdio interface when getting a clock returns EPROBE_DEFER. Otherwise: Reviewed-by: Andrew Lunn <and...@lunn.ch> Andrew This avoids locking up the Armada 8k SoC when mdio > is used before all clocks have been enabled. > > Signed-off-by: Josua Mayer <jo...@solid-run.com> > --- > drivers/net/ethernet/marvell/mvmdio.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/net/ethernet/marvell/mvmdio.c > b/drivers/net/ethernet/marvell/mvmdio.c > index 89a99bf8e87b..1034013426ad 100644 > --- a/drivers/net/ethernet/marvell/mvmdio.c > +++ b/drivers/net/ethernet/marvell/mvmdio.c > @@ -321,6 +321,10 @@ static int orion_mdio_probe(struct platform_device *pdev) > > for (i = 0; i < ARRAY_SIZE(dev->clk); i++) { > dev->clk[i] = of_clk_get(pdev->dev.of_node, i); > + if (dev->clk[i] == PTR_ERR(-EPROBE_DEFER)) { > + ret = -EPROBE_DEFER; > + goto out_clk; > + } > if (IS_ERR(dev->clk[i])) > break; > clk_prepare_enable(dev->clk[i]); > @@ -366,6 +370,7 @@ static int orion_mdio_probe(struct platform_device *pdev) > if (dev->err_interrupt > 0) > writel(0, dev->regs + MVMDIO_ERR_INT_MASK); > > +out_clk: > for (i = 0; i < ARRAY_SIZE(dev->clk); i++) { > if (IS_ERR(dev->clk[i])) > break; > -- > 2.16.4 >