Message ID | 20201015093221.720980174@rtp-net.org |
---|---|
State | New |
Headers | show |
Series | [1/1] drivers/net/ethernet/marvell/mvmdio.c: Fix non OF case | expand |
On Thu, Oct 15, 2020 at 11:32:15AM +0200, Arnaud Patard wrote: > commit d934423ac26ed373dfe089734d505dca5ff679b6 upstream. > > Orion5.x systems are still using machine files and not device-tree. > Commit 96cb4342382290c9 ("net: mvmdio: allow up to three clocks to be > specified for orion-mdio") has replaced devm_clk_get() with of_clk_get(), > leading to a oops at boot and not working network, as reported in > https://lists.debian.org/debian-arm/2019/07/msg00088.html and possibly in > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908712. > > Link: https://lists.debian.org/debian-arm/2019/07/msg00088.html > Fixes: 96cb4342382290c9 ("net: mvmdio: allow up to three clocks to be specified for orion-mdio") > Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: David S. Miller <davem@davemloft.net> > What stable tree(s) are you asking for this to be backported to? thanks, greg k-h
On Thu, Oct 15, 2020 at 12:08:00PM +0200, Arnaud Patard wrote: > Greg KH <gregkh@linuxfoundation.org> writes: > > > On Thu, Oct 15, 2020 at 11:32:15AM +0200, Arnaud Patard wrote: > >> commit d934423ac26ed373dfe089734d505dca5ff679b6 upstream. > >> > >> Orion5.x systems are still using machine files and not device-tree. > >> Commit 96cb4342382290c9 ("net: mvmdio: allow up to three clocks to be > >> specified for orion-mdio") has replaced devm_clk_get() with of_clk_get(), > >> leading to a oops at boot and not working network, as reported in > >> https://lists.debian.org/debian-arm/2019/07/msg00088.html and possibly in > >> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908712. > >> > >> Link: https://lists.debian.org/debian-arm/2019/07/msg00088.html > >> Fixes: 96cb4342382290c9 ("net: mvmdio: allow up to three clocks to be specified for orion-mdio") > >> Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> > >> Reviewed-by: Andrew Lunn <andrew@lunn.ch> > >> Signed-off-by: David S. Miller <davem@davemloft.net> > >> > > > > What stable tree(s) are you asking for this to be backported to? > > oops, forgot to put it in the mail subject. It's for 4.19.X, which is > used in Debian stable. Also works on 4.14.y, so I've put it there as well. thanks, greg k-h
Index: linux/drivers/net/ethernet/marvell/mvmdio.c =================================================================== --- linux.orig/drivers/net/ethernet/marvell/mvmdio.c +++ linux/drivers/net/ethernet/marvell/mvmdio.c @@ -319,15 +319,25 @@ static int orion_mdio_probe(struct platf init_waitqueue_head(&dev->smi_busy_wait); - for (i = 0; i < ARRAY_SIZE(dev->clk); i++) { - dev->clk[i] = of_clk_get(pdev->dev.of_node, i); - if (PTR_ERR(dev->clk[i]) == -EPROBE_DEFER) { + if (pdev->dev.of_node) { + for (i = 0; i < ARRAY_SIZE(dev->clk); i++) { + dev->clk[i] = of_clk_get(pdev->dev.of_node, i); + if (PTR_ERR(dev->clk[i]) == -EPROBE_DEFER) { + ret = -EPROBE_DEFER; + goto out_clk; + } + if (IS_ERR(dev->clk[i])) + break; + clk_prepare_enable(dev->clk[i]); + } + } else { + dev->clk[0] = clk_get(&pdev->dev, NULL); + if (PTR_ERR(dev->clk[0]) == -EPROBE_DEFER) { ret = -EPROBE_DEFER; goto out_clk; } - if (IS_ERR(dev->clk[i])) - break; - clk_prepare_enable(dev->clk[i]); + if (!IS_ERR(dev->clk[0])) + clk_prepare_enable(dev->clk[0]); } dev->err_interrupt = platform_get_irq(pdev, 0);