From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lothar =?UTF-8?B?V2HDn21hbm4=?= Date: Thu, 7 Sep 2017 08:01:27 +0200 Subject: [U-Boot] video: ipu_common: fix build error In-Reply-To: References: <1461809273-4603-1-git-send-email-van.freenix@gmail.com> <7275421f-e4b0-0be4-a856-b9b4159b6845@cox.net> <20170906011619.GA12592@linux-7smt.suse> Message-ID: <20170907080127.1ab8b29d@karo-electronics.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: quoted-printable To: u-boot@lists.denx.de Hi, On Wed, 6 Sep 2017 10:34:33 -0700 Eric Nelson wrote: > Thanks Peng. >=20 > On 09/05/2017 06:16 PM, Peng Fan wrote: > > 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 =3D (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 =3D 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 n= ot. > >>> 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? > >=20 > > We already have "parent_rate =3D (unsigned long long)clk->parent->rate = * 16;" > > in this function. > >=20 >=20 > Hmmm. So this patch also fixed a bug, since we previously had > **two** multiply-by-16's: > No! The 'second' multiply by 16 used the clk->parent->rate, not the 'parent_rate' which was multiplied by 16... | parent_rate =3D (unsigned long long)clk->parent->rate * 16; [...] | clk->rate =3D (u64)(clk->parent->rate * 16) / div; Lothar Wa=C3=9Fmann