From: Guru Das Srinagesh <gurus@codeaurora.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "Linux PWM List" <linux-pwm@vger.kernel.org>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Uwe Kleine-König" <uwe@kleine-koenig.org>,
"Subbaraman Narayanamurthy" <subbaram@codeaurora.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Alexander Shiyan" <shc_work@mail.ru>
Subject: Re: [PATCH v9 04/11] pwm: clps711x: Use 64-bit division macro
Date: Wed, 18 Mar 2020 10:00:10 -0700 [thread overview]
Message-ID: <20200318170010.GA26509@codeaurora.org> (raw)
In-Reply-To: <CAK8P3a2a-QEwFfDE5FbFCVdDS+t9jirgbHWJQQv0i5_OMCYXJg@mail.gmail.com>
On Wed, Mar 18, 2020 at 10:49:34AM +0100, Arnd Bergmann wrote:
> On Wed, Mar 18, 2020 at 12:30 AM Guru Das Srinagesh
> <gurus@codeaurora.org> wrote:
> >
> > On Tue, Mar 17, 2020 at 11:22:06PM +0100, Arnd Bergmann wrote:
> > > > diff --git a/drivers/pwm/pwm-clps711x.c b/drivers/pwm/pwm-clps711x.c
> > > > index 924d39a..ba9500a 100644
> > > > --- a/drivers/pwm/pwm-clps711x.c
> > > > +++ b/drivers/pwm/pwm-clps711x.c
> > > > @@ -43,7 +43,7 @@ static void clps711x_pwm_update_val(struct clps711x_chip *priv, u32 n, u32 v)
> > > > static unsigned int clps711x_get_duty(struct pwm_device *pwm, unsigned int v)
> > > > {
> > > > /* Duty cycle 0..15 max */
> > > > - return DIV_ROUND_CLOSEST(v * 0xf, pwm->args.period);
> > > > + return DIV64_U64_ROUND_CLOSEST(v * 0xf, pwm->args.period);
> > > > }
> > >
> > > Is it actually going to exceed U32_MAX? If not, a type cast may be
> > > more appropriate here than the expensive 64-bit division.
> >
> > With the final change in this patch series, the framework will support
> > periods that exceed U32_MAX. My concern is that using a typecast would
> > mean that in those cases, this driver will not support > U32_MAX values.
> > Using DIV64_U64_ROUND_CLOSEST makes the driver future proof and able to
> > handle > U32_MAX values correctly. What do you think?
>
> Ah, so if the period can actually be larger than U32_MAX, you need to
> handle that case. However, I see that the divident in this code (v * 0xf)
> is still a 32-bit number, so a correct and efficient implementation could be
>
> if (pwm->args.period > (UINT_MAX / 0xf))
Shouldn't the if condition be the following? Or am I missing
something here?
if (pwm->args.period > (UINT_MAX / (v * 0xf)))
^^^^^^^^^
> return 0;
> return DIV_ROUND_CLOSEST(v * 0xf, (u32)pwm->args.period);
Thank you.
Guru Das.
next prev parent reply other threads:[~2020-03-18 17:00 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-17 20:05 [PATCH v9 00/11] Convert PWM period and duty cycle to u64 Guru Das Srinagesh
2020-03-17 20:05 ` [Intel-gfx] " Guru Das Srinagesh
2020-03-17 20:05 ` Guru Das Srinagesh
2020-03-17 20:05 ` Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 01/11] drm/i915: Use 64-bit division macro Guru Das Srinagesh
2020-03-17 20:05 ` [Intel-gfx] " Guru Das Srinagesh
2020-03-17 20:05 ` Guru Das Srinagesh
2020-03-18 19:08 ` Jani Nikula
2020-03-18 19:08 ` Jani Nikula
2020-03-18 19:08 ` [Intel-gfx] " Jani Nikula
2020-03-18 19:08 ` Jani Nikula
2020-03-19 19:35 ` Guru Das Srinagesh
2020-03-19 19:35 ` [Intel-gfx] " Guru Das Srinagesh
2020-03-19 19:35 ` Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 02/11] hwmon: pwm-fan: " Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 03/11] ir-rx51: " Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 04/11] pwm: clps711x: " Guru Das Srinagesh
2020-03-17 22:22 ` Arnd Bergmann
2020-03-17 23:30 ` Guru Das Srinagesh
2020-03-18 9:49 ` Arnd Bergmann
2020-03-18 17:00 ` Guru Das Srinagesh [this message]
2020-03-18 19:38 ` Arnd Bergmann
2020-03-19 20:51 ` Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 05/11] pwm: pwm-imx-tpm: " Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 06/11] pwm: imx27: Use 64-bit division macro and function Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 07/11] pwm: sifive: Use 64-bit division macro Guru Das Srinagesh
2020-03-17 20:05 ` Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 08/11] pwm: stm32-lp: Use %llu format specifier for period Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 09/11] pwm: sun4i: Use 64-bit division function Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 10/11] backlight: pwm_bl: " Guru Das Srinagesh
2020-03-17 20:05 ` Guru Das Srinagesh
2020-03-17 20:05 ` Guru Das Srinagesh
2020-03-17 20:05 ` [PATCH v9 11/11] pwm: core: Convert period and duty cycle to u64 Guru Das Srinagesh
2020-03-18 18:51 ` kbuild test robot
2020-03-18 18:51 ` kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200318170010.GA26509@codeaurora.org \
--to=gurus@codeaurora.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=shc_work@mail.ru \
--cc=subbaram@codeaurora.org \
--cc=thierry.reding@gmail.com \
--cc=uwe@kleine-koenig.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.