]> git.baikalelectronics.ru Git - kernel.git/commit
clk: zynqmp: Fix divider2 calculation
authorTejas Patel <tejas.patel@xilinx.com>
Mon, 2 Mar 2020 21:50:41 +0000 (13:50 -0800)
committerStephen Boyd <sboyd@kernel.org>
Wed, 27 May 2020 00:59:02 +0000 (17:59 -0700)
commit14fd8689e38a4b75491377f8572851ee82308108
tree65a970bb261db49d59bded26dba1f9f504cb738e
parent8b54042c5b281a03c44f9e44bda7480460e2934e
clk: zynqmp: Fix divider2 calculation

zynqmp_get_divider2_val() calculates, divider value of type DIV2 clock,
considering best possible combination of DIV1 and DIV2.

To find best possible values of DIV1 and DIV2, DIV1's parent rate
should be consider and not DIV2's parent rate since it would rate of
div1 clock. Consider a below topology,

out_clk->div2_clk->div1_clk->fixed_parent

where out_clk = (fixed_parent/div1_clk) / div2_clk, so parent clock
of div1_clk (i.e. out_clk) should be divided by div1_clk and div2_clk.

Existing code divides parent rate of div2_clk's clock instead of
div1_clk's parent rate, which is wrong.

Fix the same by considering div1's parent clock rate.

Fixes: 8161fd65e84a ("clk: zynqmp: Fix divider calculation")
Signed-off-by: Tejas Patel <tejas.patel@xilinx.com>
Signed-off-by: Jolly Shah <jolly.shah@xilinx.com>
Link: https://lkml.kernel.org/r/1583185843-20707-3-git-send-email-jolly.shah@xilinx.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/zynqmp/divider.c