linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V3 1/8] clk: vc5: Prevent division by zero on unconfigured outputs
@ 2017-07-09 13:28 Marek Vasut
  2017-07-09 13:28 ` [PATCH V3 2/8] clk: vc5: Fix trivial typo Marek Vasut
                   ` (7 more replies)
  0 siblings, 8 replies; 16+ messages in thread
From: Marek Vasut @ 2017-07-09 13:28 UTC (permalink / raw)
  To: linux-clk
  Cc: Marek Vasut, Stephen Boyd, Alexey Firago, Michael Turquette,
	Laurent Pinchart, linux-renesas-soc

In case the initial values of the FOD registers are not configured in
the OTP or by the bootloader, it is possible that the FOD registers
will contain zeroes. The code in vc5_fod_recalc_rate() immediately
feeds the FOD divider value obtained from the FOD registers into the
div64_u64() and if the FOD divider value is zero, triggers division
by zero exception.

Check if the FOD divider value is zero and return the frequency of
the FOD output as 0 Hz if it is so. This prevents the division by
zero exception.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Alexey Firago <alexey_firago@mentor.com>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: linux-renesas-soc@vger.kernel.org
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
on Salvator-XS with the display LVDS output.
---
V2: None
V3: None
---
 drivers/clk/clk-versaclock5.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk-versaclock5.c
index ea7d552a2f2b..60bf4afb51bd 100644
--- a/drivers/clk/clk-versaclock5.c
+++ b/drivers/clk/clk-versaclock5.c
@@ -426,6 +426,10 @@ static unsigned long vc5_fod_recalc_rate(struct clk_hw *hw,
 	div_frc = (od_frc[0] << 22) | (od_frc[1] << 14) |
 		  (od_frc[2] << 6) | (od_frc[3] >> 2);
 
+	/* Avoid division by zero if the output is not configured. */
+	if ((div_int == 0) && (div_frc == 0))
+		return 0;
+
 	/* The PLL divider has 12 integer bits and 30 fractional bits */
 	return div64_u64((u64)f_in << 24ULL, ((u64)div_int << 24ULL) + div_frc);
 }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2017-07-12 23:10 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-09 13:28 [PATCH V3 1/8] clk: vc5: Prevent division by zero on unconfigured outputs Marek Vasut
2017-07-09 13:28 ` [PATCH V3 2/8] clk: vc5: Fix trivial typo Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-09 13:28 ` [PATCH V3 3/8] clk: vc5: Do not warn about disabled output buffer input muxes Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-09 13:28 ` [PATCH V3 4/8] clk: vc5: Configure the output buffer input mux on prepare Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-09 13:28 ` [PATCH V3 5/8] clk: vc5: Split clock input mux and predivider Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-09 13:28 ` [PATCH V3 6/8] clk: vc5: Add support for the input frequency doubler Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-09 13:28 ` [PATCH V3 7/8] clk: vc5: Add bindings for IDT VersaClock 5P49V6901 Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-09 13:28 ` [PATCH V3 8/8] clk: vc5: Add support " Marek Vasut
2017-07-12 23:10   ` Stephen Boyd
2017-07-12 23:10 ` [PATCH V3 1/8] clk: vc5: Prevent division by zero on unconfigured outputs Stephen Boyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).