Hi Adam, Thanks for your patch! On Wed, Jun 30, 2021 at 7:30 PM Adam Ford <aford173@xxxxxxxxx> 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? > > 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 <aford173@xxxxxxxxx> > > 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@xxxxxxxxxxxxxx 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