From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Date: Wed, 6 Sep 2017 09:16:22 +0800 Subject: [U-Boot] video: ipu_common: fix build error In-Reply-To: <7275421f-e4b0-0be4-a856-b9b4159b6845@cox.net> References: <1461809273-4603-1-git-send-email-van.freenix@gmail.com> <7275421f-e4b0-0be4-a856-b9b4159b6845@cox.net> Message-ID: <20170906011619.GA12592@linux-7smt.suse> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Eric, On Mon, Sep 04, 2017 at 07:48:56PM -0700, Eric Nelson wrote: >Hi Peng, > >Can you tell that I'm hunting a bug in an old version? > >I'm seeing a **very** intermittent regression between U-Boot >versions 2015.07 and 2016.05 and happened to spot something >in this patch. > >On 04/27/2016 07:07 PM, Peng Fan wrote: >>Some toolchains fail to build >>"clk->rate = (u64)(clk->parent->rate * 16) / div;" >>And the cast usage is wrong. >> >>Use the following code to fix the issue, >>" >> do_div(parent_rate, div); >> clk->rate = parent_rate; >>" >> >>Reported-by: Peter Robinson >>Signed-off-by: Peng Fan >>Cc: Stefano Babic >>Cc: Fabio Estevam >>Cc: Tom Rini >>Cc: Anatolij Gustschin >>Cc: Peter Robinson >>Reviewed-by: Tom Rini >>Tested-by: Peter Robinson >>--- >> >>Hi Peter, >> >> Please help test this patch to see whether this fix your issue or not. >> Thanks for pointing out this issue. >> >>Thanks, >>Peng. >> >> drivers/video/ipu_common.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >>diff --git a/drivers/video/ipu_common.c b/drivers/video/ipu_common.c >>index 36d4b23..5676a0f 100644 >>--- a/drivers/video/ipu_common.c >>+++ b/drivers/video/ipu_common.c >>@@ -352,7 +352,9 @@ static int ipu_pixel_clk_set_rate(struct clk *clk, unsigned long rate) >> */ >> __raw_writel((div / 16) << 16, DI_BS_CLKGEN1(clk->id)); > >Did we lose a multiply by 16 in this change? We already have "parent_rate = (unsigned long long)clk->parent->rate * 16;" in this function. Thanks, Peng. > >>- clk->rate = (u64)(clk->parent->rate * 16) / div; >>+ do_div(parent_rate, div); >>+ >>+ clk->rate = parent_rate; >> return 0; >> } >> > >Please advise, > > >Eric