lkml.org 
[lkml]   [2021]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] pwm: Use div64_ul instead of do_div
    Hello,

    On Wed, Nov 17, 2021 at 02:04:26AM +0000, cgel.zte@gmail.com wrote:
    > From: Changcheng Deng <deng.changcheng@zte.com.cn>
    >
    > do_div() does a 64-by-32 division. If the divisor is unsigned long, using
    > div64_ul can avoid truncation to 32-bit.

    After some research I understood your commit log. I'd write:

    do_div() does a 64-by-32 division. Here the divsor is an
    unsigned long which on some platforms is 64 bit wide. So use
    div64_ul instead of do_div to avoid a possible truncation.

    The priority of this patch seems to be low, as the device seems to exist
    only on (32bit) arm.

    > diff --git a/drivers/pwm/pwm-atmel-hlcdc.c b/drivers/pwm/pwm-atmel-hlcdc.c
    > index a43b2babc809..1ae3d73b9832 100644
    > --- a/drivers/pwm/pwm-atmel-hlcdc.c
    > +++ b/drivers/pwm/pwm-atmel-hlcdc.c
    > @@ -60,7 +60,7 @@ static int atmel_hlcdc_pwm_apply(struct pwm_chip *c, struct pwm_device *pwm,
    > return -EINVAL;
    >
    > clk_period_ns = (u64)NSEC_PER_SEC * 256;
    > - do_div(clk_period_ns, clk_freq);
    > + div64_ul(clk_period_ns, clk_freq);

    This must be

    clk_period_ns = div64_ul(clk_period_ns, clk_freq);

    as div64_ul has a different calling convention than do_div. Same problem
    in the next hunk.

    Best regards
    Uwe

    --
    Pengutronix e.K. | Uwe Kleine-König |
    Industrial Linux Solutions | https://www.pengutronix.de/ |
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2021-11-17 12:25    [W:2.707 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site