]> rtime.felk.cvut.cz Git - zynq/linux.git/commit
clk: zynqmp: Fix divider calculation
authorRajan Vaja <rajan.vaja@xilinx.com>
Thu, 28 Mar 2019 13:05:56 +0000 (06:05 -0700)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 28 Mar 2019 14:32:22 +0000 (15:32 +0100)
commit62cb26afb1c37f34332733e35fa67cf2654f905b
treed8ff5dda29dfba51a2f19a57e43736683e340ee1
parentded94ed61f10b1889333f52560ae27b2226d4a7d
clk: zynqmp: Fix divider calculation

Linux doesn't know maximum value of divisor that it can support.
zynqmp_clk_divider_round_rate() returns actual divider value
after calculating from parent rate and desired rate, even though
that rate is not supported by single divider of hardware. It is
also possible that such divisor value can be achieved through 2
different dividers. As, Linux tries to set such divisor value(out
of range) in single divider set divider is getting failed.

Fix the same by computing best possible combination of two
divisors which provides more accurate clock rate.

Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
Reviewed-by: Shubhrajyoti Datta <Shubhrajyoti.datta@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/clk/zynqmp/divider.c
include/linux/firmware/xlnx-zynqmp.h