[PATCH 2/2] pwm: atmel: Improve duty cycle calculation in .apply()
Thierry Reding
thierry.reding at gmail.com
Fri Apr 23 18:07:32 BST 2021
On Tue, Apr 20, 2021 at 11:51:18AM +0200, Uwe Kleine-König wrote:
> In the calculation of the register value determining the duty cycle the
> requested period is used instead of the actually implemented period which
> results in suboptimal settings.
>
> The following example assumes an input clock of 133333333 Hz on one of
> the SoCs with 16 bit period.
>
> When the following state is to be applied:
>
> .period = 414727681
> .duty_cycle = 652806
>
> the following register values used to be calculated:
>
> PRES = 10
> CPRD = 54000
> CDTY = 53916
>
> which yields an actual duty cycle of a bit more than 645120 ns.
>
> The setting
>
> PRES = 10
> CPRD = 54000
> CDTY = 53915
>
> however yields a duty of 652800 ns which is between the current result
> and the requested value and so is a better approximation.
>
> The reason for this error is that for the calculation of CDTY the
> requested period was used instead of the actually implemented one.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> ---
> drivers/pwm/pwm-atmel.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
Applied, thanks.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210423/25b2aeb0/attachment-0001.sig>
More information about the linux-arm-kernel
mailing list