Re: [PATCH 2/3] usb: renesas_usbhs: Enable support for more than two clks
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2021-07-01 09:07:39
Also in:
linux-renesas-soc, linux-usb, lkml
Hi Adam, Thanks for your patch! On Wed, Jun 30, 2021 at 7:30 PM Adam Ford [off-list ref] wrote:
The RZ/G2 boards expect there to be an external clock reference for USBHS controller, but this could be set by a programmable clock. For those devices using a programmable clock, there need to be two additional clocks beyond the internal reference clocks: rcar-usb2-clock-sel to specify we using an external clock, and the external reference clock itself.
Something is missing in the above sentence?
quoted hunk ↗ jump to hunk
Make this driver dynamically enable all the clocks assigned to it instead of only enabling the first one or two clocks. Signed-off-by: Adam Ford <redacted>diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c index 3af91b2b8f76..255e4bd68ed3 100644 --- a/drivers/usb/renesas_usbhs/common.c +++ b/drivers/usb/renesas_usbhs/common.c@@ -297,6 +297,8 @@ static bool usbhsc_is_multi_clks(struct usbhs_priv *priv) static int usbhsc_clk_get(struct device *dev, struct usbhs_priv *priv) { + unsigned int i; + if (!usbhsc_is_multi_clks(priv)) return 0;@@ -309,11 +311,13 @@ static int usbhsc_clk_get(struct device *dev, struct usbhs_priv *priv) * To backward compatibility with old DT, this driver checks the return * value if it's -ENOENT or not. */ - priv->clks[1] = of_clk_get(dev_of_node(dev), 1); - if (PTR_ERR(priv->clks[1]) == -ENOENT) - priv->clks[1] = NULL; - else if (IS_ERR(priv->clks[1])) - return PTR_ERR(priv->clks[1]); + for (i = 1; i < ARRAY_SIZE(priv->clks); i++) { + priv->clks[1] = of_clk_get(dev->of_node, i); + if (PTR_ERR(priv->clks[i]) == -ENOENT) + priv->clks[i] = NULL; + else if (IS_ERR(priv->clks[i])) + return PTR_ERR(priv->clks[i]); + }
This is identical to the current code, as ARRAY_SIZE(priv->clks) == 2. Probably you wanted to increase usbhs_priv.clks[], too? Does it make sense to start using the clk_bulk*() API?
return 0;
}
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds