* Re: [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate()
@ 2020-12-25 7:15 Kever Yang
2021-01-13 9:16 ` Uwe Kleine-König
0 siblings, 1 reply; 4+ messages in thread
From: Kever Yang @ 2020-12-25 7:15 UTC (permalink / raw)
To: Simon South
Cc: tpiepho, thierry.reding, u.kleine-koenig, Robin Murphy,
lee.jones, Heiko Stuebner, bbrezillon, linux-pwm,
linux-arm-kernel, linux-rockchip, David Wu, steven.liu
[-- Attachment #1: Type: text/plain, Size: 2483 bytes --]
+ David and Steven,
Hi Steven,
please help to review this patch set.
Thanks
- Kever
Simon South <simon@simonsouth.net> 于2020年12月24日周四 上午12:01写道:
> The documentation for clk_get_rate() in include/linux/clk.h states the
> function's result is valid only for a clock source that has been
> enabled. However, the Rockchip PWM driver uses this function in two places
> to query the rate of a clock without first ensuring it is enabled.
>
> Fix this by modifying rockchip_pwm_get_state() and rockchip_pwm_apply() so
> they enable a device's PWM clock before querying its rate (in the latter
> case, the querying is actually done in rockchip_pwm_config()) and disable
> the clock again before returning.
>
> Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Signed-off-by: Simon South <simon@simonsouth.net>
> ---
> drivers/pwm/pwm-rockchip.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c
> index 02da7370db70..44425eeb4e81 100644
> --- a/drivers/pwm/pwm-rockchip.c
> +++ b/drivers/pwm/pwm-rockchip.c
> @@ -72,6 +72,10 @@ static void rockchip_pwm_get_state(struct pwm_chip
> *chip,
> if (ret)
> return;
>
> + ret = clk_enable(pc->clk);
> + if (ret)
> + return;
> +
> clk_rate = clk_get_rate(pc->clk);
>
> tmp = readl_relaxed(pc->base + pc->data->regs.period);
> @@ -90,6 +94,7 @@ static void rockchip_pwm_get_state(struct pwm_chip *chip,
> else
> state->polarity = PWM_POLARITY_NORMAL;
>
> + clk_disable(pc->clk);
> clk_disable(pc->pclk);
> }
>
> @@ -189,6 +194,10 @@ static int rockchip_pwm_apply(struct pwm_chip *chip,
> struct pwm_device *pwm,
> if (ret)
> return ret;
>
> + ret = clk_enable(pc->clk);
> + if (ret)
> + return ret;
> +
> pwm_get_state(pwm, &curstate);
> enabled = curstate.enabled;
>
> @@ -208,6 +217,7 @@ static int rockchip_pwm_apply(struct pwm_chip *chip,
> struct pwm_device *pwm,
> }
>
> out:
> + clk_disable(pc->clk);
> clk_disable(pc->pclk);
>
> return ret;
> --
> 2.29.2
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>
[-- Attachment #2: Type: text/html, Size: 3476 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate()
2020-12-25 7:15 [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate() Kever Yang
@ 2021-01-13 9:16 ` Uwe Kleine-König
0 siblings, 0 replies; 4+ messages in thread
From: Uwe Kleine-König @ 2021-01-13 9:16 UTC (permalink / raw)
To: Kever Yang; +Cc: Simon South, linux-pwm, David Wu, steven.liu
[-- Attachment #1: Type: text/plain, Size: 489 bytes --]
Hi Kever,
[stripped recipients a bit]
On Fri, Dec 25, 2020 at 03:15:12PM +0800, Kever Yang wrote:
> + David and Steven,
>
> Hi Steven,
> please help to review this patch set.
I wonder if a private message would have been enough instead of seven
identical mails to a massive set of people.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate()
2020-12-23 16:01 ` [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate() Simon South
@ 2021-01-13 7:54 ` Uwe Kleine-König
0 siblings, 0 replies; 4+ messages in thread
From: Uwe Kleine-König @ 2021-01-13 7:54 UTC (permalink / raw)
To: Simon South
Cc: tpiepho, thierry.reding, robin.murphy, lee.jones, heiko,
bbrezillon, linux-pwm, linux-arm-kernel, linux-rockchip
[-- Attachment #1: Type: text/plain, Size: 993 bytes --]
On Wed, Dec 23, 2020 at 11:01:09AM -0500, Simon South wrote:
> The documentation for clk_get_rate() in include/linux/clk.h states the
> function's result is valid only for a clock source that has been
> enabled. However, the Rockchip PWM driver uses this function in two places
> to query the rate of a clock without first ensuring it is enabled.
>
> Fix this by modifying rockchip_pwm_get_state() and rockchip_pwm_apply() so
> they enable a device's PWM clock before querying its rate (in the latter
> case, the querying is actually done in rockchip_pwm_config()) and disable
> the clock again before returning.
>
> Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Signed-off-by: Simon South <simon@simonsouth.net>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate()
2020-12-23 16:01 [PATCH v3 0/7] pwm: rockchip: Eliminate potential race condition when probing Simon South
@ 2020-12-23 16:01 ` Simon South
2021-01-13 7:54 ` Uwe Kleine-König
0 siblings, 1 reply; 4+ messages in thread
From: Simon South @ 2020-12-23 16:01 UTC (permalink / raw)
To: tpiepho, thierry.reding, u.kleine-koenig, robin.murphy,
lee.jones, heiko, bbrezillon, linux-pwm, linux-arm-kernel,
linux-rockchip
Cc: simon
The documentation for clk_get_rate() in include/linux/clk.h states the
function's result is valid only for a clock source that has been
enabled. However, the Rockchip PWM driver uses this function in two places
to query the rate of a clock without first ensuring it is enabled.
Fix this by modifying rockchip_pwm_get_state() and rockchip_pwm_apply() so
they enable a device's PWM clock before querying its rate (in the latter
case, the querying is actually done in rockchip_pwm_config()) and disable
the clock again before returning.
Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Simon South <simon@simonsouth.net>
---
drivers/pwm/pwm-rockchip.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c
index 02da7370db70..44425eeb4e81 100644
--- a/drivers/pwm/pwm-rockchip.c
+++ b/drivers/pwm/pwm-rockchip.c
@@ -72,6 +72,10 @@ static void rockchip_pwm_get_state(struct pwm_chip *chip,
if (ret)
return;
+ ret = clk_enable(pc->clk);
+ if (ret)
+ return;
+
clk_rate = clk_get_rate(pc->clk);
tmp = readl_relaxed(pc->base + pc->data->regs.period);
@@ -90,6 +94,7 @@ static void rockchip_pwm_get_state(struct pwm_chip *chip,
else
state->polarity = PWM_POLARITY_NORMAL;
+ clk_disable(pc->clk);
clk_disable(pc->pclk);
}
@@ -189,6 +194,10 @@ static int rockchip_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
if (ret)
return ret;
+ ret = clk_enable(pc->clk);
+ if (ret)
+ return ret;
+
pwm_get_state(pwm, &curstate);
enabled = curstate.enabled;
@@ -208,6 +217,7 @@ static int rockchip_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
}
out:
+ clk_disable(pc->clk);
clk_disable(pc->pclk);
return ret;
--
2.29.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-01-13 9:17 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-25 7:15 [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate() Kever Yang
2021-01-13 9:16 ` Uwe Kleine-König
-- strict thread matches above, loose matches on Subject: below --
2020-12-23 16:01 [PATCH v3 0/7] pwm: rockchip: Eliminate potential race condition when probing Simon South
2020-12-23 16:01 ` [PATCH v3 7/7] pwm: rockchip: Enable clock before calling clk_get_rate() Simon South
2021-01-13 7:54 ` Uwe Kleine-König
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).