On Mon, Sep 19, 2022 at 11:14 PM Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > > Hello, > > On Mon, Sep 19, 2022 at 03:39:15PM -0700, Olof Johansson wrote: > > When the PWM driver was changed to disable clocks if no PWMs are enabled, > > it ended up also disabling the shared parent with the UART, since the > > UART doesn't do any clock enablement on its own. > > > > To avoid these surprises, add clk_prepare_enable/clk_disable_unprepare > > calls. > > > > Fixes: ace41d7564e655 ("pwm: sifive: Ensure the clk is enabled exactly once per running PWM") > > Cc: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > > Cc: Emil Renner Berthing <emil.renner.berthing@xxxxxxxxxxxxx> > > Cc: Palmer Dabbelt <palmer@xxxxxxxxxxx> > > Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx> > > Signed-off-by: Olof Johansson <olof@xxxxxxxxx> > > --- > > drivers/tty/serial/sifive.c | 14 ++++++++++---- > > 1 file changed, 10 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c > > index 5c3a07546a58..751f98068806 100644 > > --- a/drivers/tty/serial/sifive.c > > +++ b/drivers/tty/serial/sifive.c > > @@ -950,23 +950,28 @@ static int sifive_serial_probe(struct platform_device *pdev) > > dev_err(&pdev->dev, "unable to find controller clock\n"); > > return PTR_ERR(clk); > > } > > + clk_prepare_enable(clk); > > The return code of clk_prepare_enable() must be checked. Also there is a > simpler patch to fix that problem. I didn't test but I expect just doing > > diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c > index 5c3a07546a58..4b1d4fe8458e 100644 > --- a/drivers/tty/serial/sifive.c > +++ b/drivers/tty/serial/sifive.c > @@ -945,7 +945,7 @@ static int sifive_serial_probe(struct platform_device *pdev) > return PTR_ERR(base); > } > > - clk = devm_clk_get(&pdev->dev, NULL); > + clk = devm_clk_get_enabled(&pdev->dev, NULL); > if (IS_ERR(clk)) { > dev_err(&pdev->dev, "unable to find controller clock\n"); > return PTR_ERR(clk); > > would be enough and also cares for disabling the clock on remove. Yep, thanks for pointing that out. v2 sent out (after test). -Olof