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. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |
Attachment:
signature.asc
Description: PGP signature