clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies
authorDevi Priya <quic_devipriy@quicinc.com>
Fri, 1 Sep 2023 07:36:40 +0000 (13:06 +0530)
committerBjorn Andersson <andersson@kernel.org>
Wed, 20 Sep 2023 03:04:15 +0000 (20:04 -0700)
commitf7b7d30158cff246667273bd2a62fc93ee0725d2
treed2907cc1e8922b9ed7aa09d75118011b78d3c70d
parent4afda5f6bcdf673ef2556fcfa458daf3a5a648d8
clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies

If the parent clock rate is greater than unsigned long max/2 then
integer overflow happens when calculating the clock rate on 32-bit systems.
As RCG2 uses half integer dividers, the clock rate is first being
multiplied by 2 which will overflow the unsigned long max value.
Hence, replace the common pattern of doing 64-bit multiplication
and then a do_div() call with simpler mult_frac call.

Fixes: bcd61c0f535a ("clk: qcom: Add support for root clock generators (RCGs)")
Signed-off-by: Devi Priya <quic_devipriy@quicinc.com>
Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org>
Link: https://lore.kernel.org/r/20230901073640.4973-1-quic_devipriy@quicinc.com
[bjorn: Also drop unnecessary {} around single statements]
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/clk/qcom/clk-rcg2.c