Re: [PATCH 1/1] pwm: Convert period and duty cycle to u64

From: Guru Das Srinagesh
Date: Thu Oct 17 2019 - 02:03:18 EST


On Wed, Oct 16, 2019 at 12:15:39PM +0200, Thierry Reding wrote:
> On Tue, Oct 15, 2019 at 07:11:39PM -0700, Guru Das Srinagesh wrote:
> > Because period and duty cycle are defined as ints with units of
> > nanoseconds, the maximum time duration that can be set is limited to
> > ~2.147 seconds. Change their definitions to u64 so that higher durations
> > may be set.
> >
> > Signed-off-by: Guru Das Srinagesh <gurus@xxxxxxxxxxxxxx>
> > ---
> > drivers/pwm/core.c | 4 ++--
> > drivers/pwm/sysfs.c | 10 +++++-----
> > include/linux/pwm.h | 16 ++++++++--------
> > 3 files changed, 15 insertions(+), 15 deletions(-)
>
> Actually, we can't do that without further preparatory work. The reason
> is that consumers use the period and duty_cycle members in computations
> of their own, which lead to errors such as this:
>
> armv7l-unknown-linux-gnueabihf-ld: drivers/video/backlight/pwm_bl.o: in function `pwm_backlight_probe':
> pwm_bl.c:(.text+0x3b0): undefined reference to `__aeabi_uldivmod'
>
> So I think we need to audit all consumers carefully and make sure that
> they use do_div() where necessary to avoid such errors.
>
> Thierry

Hi Thierry,

I would like to try doing the preparatory work by fixing the errors seen
in consumers so that this u64 patch may be applied without issues.

Before sending the patch, I tried "make"-ing for arm, arm64 and i386
architectures to check for compilation/linking errors and encountered
none. I see that the above error arises from using a cross-compiler for
arm v7, which I haven't tried yet.

Could you please provide details of the compile tests that you run at
your end? I could then try to reproduce the errors you see in the
consumer drivers and fix them. Please do share any other ideas or
suggestions you may have in this regard.

Thank you.

Guru Das.