diff options
author | Uwe Kleine-König <u.kleine-koenig@baylibre.com> | 2025-04-01 13:29:00 +0300 |
---|---|---|
committer | Uwe Kleine-König <ukleinek@kernel.org> | 2025-04-04 10:23:39 +0300 |
commit | e7327c193014a4d8666e9c1cda09cf2c060518e8 (patch) | |
tree | c0702469a4eba72d31c1e4fe5c8378d97929720c /drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | |
parent | 7ca59947b5fcf94e7ea4029d1bd0f7c41500a161 (diff) | |
download | linux-e7327c193014a4d8666e9c1cda09cf2c060518e8.tar.xz |
pwm: rcar: Improve register calculation
There were several issues in the function rcar_pwm_set_counter():
- The u64 values period_ns and duty_ns were cast to int on function
call which might loose bits on 32 bit architectures.
Fix: Make parameters to rcar_pwm_set_counter() u64
- The algorithm divided by the result of a division which looses
precision.
Fix: Make use of mul_u64_u64_div_u64()
- The calculated values were just masked to fit the respective register
fields which again might loose bits.
Fix: Explicitly check for overlow
Implement the respective fixes.
A side effect of fixing the 2nd issue is that there is no division by 0
if clk_get_rate() returns 0.
Fixes: ed6c1476bf7f ("pwm: Add support for R-Car PWM Timer")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/ab3dac794b2216cc1cc56d65c93dd164f8bd461b.1743501688.git.u.kleine-koenig@baylibre.com
[ukleinek: Added an explicit #include <linux/bitfield.h> to please the
0day build bot]
Link: https://lore.kernel.org/oe-kbuild-all/202504031354.VJtxScP5-lkp@intel.com/
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c')
0 files changed, 0 insertions, 0 deletions