Re: [PATCH v2 0/5] clk: rockchip: pll: fixes and simplification of maths in RK3588 frac PLL

Quentin Schulz via U-Boot <[email protected]>
Newsgroups gmane.comp.boot-loaders.u-boot.general,gmane.comp.boot-loaders.u-boot
Message-ID <[email protected]>
Hi Alexey,

On 7/29/26 4:22 PM, Alexey Charkov wrote:
> Hi Quentin,
> 
> On Thu, Jul 23, 2026 at 7:04 PM Alexey Charkov <[email protected]> wrote:
>>
>> Current fractional PLL code for RK3588 (also applies to RK3576) has two
>> issues causing it to overshoot the requested frequency for some negative
>> values of the fractional coefficient: one due to rounding, the other due
>> to treating -32768 as an invalid value where it is actually valid. It
>> also overflows the calculation of the fractional PLL rate when reading
>> it back, causing the function to return wrong PLL frequencies for non-
>> trivial values of the fractional coefficient.
>>
>> Fix all three, and also use native signed integer arithmetics to avoid
>> manual bitwise operations on the unsigned representation of the fractional
>> coefficient, which simplifies the code and makes it easier to read.
>>
>> Signed-off-by: Alexey Charkov <[email protected]>
>> ---
>> Changes in v2:
>> - Pass a pointer to the full table entry to rockchip_rk3588_pll_k_get()
>>    to make it the single source of truth for both m and k in the fractional
>>    PLL auto-calculation path (thanks Quentin)
>> - Do the unsigned->signed conversion in a single patch instead of
>>    scattering it across several smaller changes (thanks Quentin)
>> - Use s16 to hold the value of k in the rate table, in line with what
>>    the hardware uses and also with my similar change submitted to Linux
>> - Add a comment in code with the actual clock rate formulas for easier
>>    future reference
>> - Link to v1: https://patch.msgid.link/[email protected]
>>
>> To: [email protected]
>> To: Elaine Zhang <[email protected]>
>> To: Jagan Teki <[email protected]>
>> Cc: Lukasz Majewski <[email protected]>
>> Cc: Simon Glass <[email protected]>
>> Cc: Philipp Tomsich <[email protected]>
>> Cc: Kever Yang <[email protected]>
>> Cc: Tom Rini <[email protected]>
>> Cc: Alexey Charkov <[email protected]>
>> Cc: Quentin Schulz <[email protected]>
>> Cc: Ilias Apalodimas <[email protected]>
>> Cc: Jonas Karlman <[email protected]>
>> Cc: Finley Xiao <[email protected]>
>>
>> ---
>> Alexey Charkov (5):
>>        clk: rockchip: pll: drop misleading fout in rockchip_rk3588_pll_k_get()
>>        clk: rockchip: pll: fix rounding of negative k in RK3588 frac PLL
>>        clk: rockchip: pll: fix RK3588 frac PLL result for k=-32768
>>        clk: rockchip: pll: let rockchip_rk3588_pll_k_get update m directly
>>        clk: rockchip: pll: fix overflow and drop manual two's complement on RK3588/RK3576
>>
>>   arch/arm/include/asm/arch-rockchip/clock.h |  8 +--
>>   drivers/clk/rockchip/clk_pll.c             | 86 +++++++++++++-----------------
>>   2 files changed, 41 insertions(+), 53 deletions(-)
> 
> I see that Heiko applied the Linux version of related patches [1]. Is
> this one good to go, or would you like any changes first?
> 

I'll be waiting on 
https://lore.kernel.org/u-boot/[email protected]/ 
to get merged first and then I'll pick this up. Don't hesitate to ping 
me as soon as it gets merged so I don't forget.

Thanks for working this out with the Linux kernel and looking at fixing 
U-Boot's div64/math64 :)

Cheers,
Quentin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.