linux-pwm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Guru Das Srinagesh <gurus@codeaurora.org>
To: linux-pwm@vger.kernel.org
Cc: "Kate Stewart" <kstewart@linuxfoundation.org>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	linux-fbdev@vger.kernel.org, "David Airlie" <airlied@linux.ie>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
	"Kamil Debski" <kamil@wypas.org>,
	dri-devel@lists.freedesktop.org,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Atish Patra" <atish.patra@wdc.com>,
	"Thierry Reding" <thierry.reding@gmail.com>,
	linux-riscv@lists.infradead.org,
	"Lee Jones" <lee.jones@linaro.org>,
	linux-clk@vger.kernel.org,
	"Ville Syrjälä" <ville.syrjala@linux.intel.com>,
	"Alexandre Torgue" <alexandre.torgue@st.com>,
	"Guru Das Srinagesh" <gurus@codeaurora.org>,
	"Daniel Thompson" <daniel.thompson@linaro.org>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Alexander Shiyan" <shc_work@mail.ru>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Chen-Yu Tsai" <wens@csie.org>
Subject: [PATCH v8 00/12] Convert PWM period and duty cycle to u64
Date: Tue, 10 Mar 2020 18:41:09 -0700	[thread overview]
Message-ID: <cover.1583889178.git.gurus@codeaurora.org> (raw)

Because period and duty cycle are defined in the PWM framework structs as ints
with units of nanoseconds, the maximum time duration that can be set is limited
to ~2.147 seconds. Consequently, applications desiring to set greater time
periods via the PWM framework are not be able to do so - like, for instance,
causing an LED to blink at an interval of 5 seconds.

Redefining the period and duty cycle struct members in the core PWM framework
structs as u64 values will enable larger time durations to be set and solve
this problem. Such a change to the framework mandates that drivers using these
struct members (and corresponding helper functions) also be modified correctly
in order to prevent compilation errors.

This patch series introduces the changes to all the drivers first, followed by
the framework change at the very end so that when the latter is applied, all
the drivers are in good shape and there are no compilation errors.



Changes from v7:
  - Changed commit messages of all patches to be brief and to the point.
  - Added explanation of change in cover letter.
  - Dropped change to pwm-sti.c as upon review it was unnecessary as struct
    pwm_capture is not being modified in the PWM core.

Changes from v6:
  - Split out the driver changes out into separate patches, one patch per file
    for ease of reviewing.

Changes from v5:
  - Dropped the conversion of struct pwm_capture to u64 for reasons mentioned
    in https://www.spinics.net/lists/linux-pwm/msg11541.html

Changes from v4:
  - Split the patch into two: one for changes to the drivers, and the actual
    switch to u64 for ease of reverting should the need arise.
  - Re-examined the patch and made the following corrections:
      * intel_panel.c:
	DIV64_U64_ROUND_UP -> DIV_ROUND_UP_ULL (as only the numerator would be
	64-bit in this case).
      * pwm-sti.c:
	do_div -> div_u64 (do_div is optimized only for x86 architectures, and
	div_u64's comment block suggests to use this as much as possible).

Changes from v3:
  - Rebased to current tip of for-next.

Changes from v2:
  - Fixed %u -> %llu in a dev_dbg in pwm-stm32-lp.c, thanks to kbuild test robot
  - Added a couple of fixes to pwm-imx-tpm.c and pwm-sifive.c

Changes from v1:
  - Fixed compilation errors seen when compiling for different archs.

v1:
  - Reworked the change pushed upstream earlier [1] so as to not add an
    extension to an obsolete API. With this change, pwm_ops->apply() can be
    used to set pwm_state parameters as usual.
    [1] https://lore.kernel.org/lkml/20190916140048.GB7488@ulmo/



Cc: Lee Jones <lee.jones@linaro.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Jingoo Han <jingoohan1@gmail.com>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: linux-fbdev@vger.kernel.org
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Fabrice Gasnier <fabrice.gasnier@st.com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: linux-riscv@lists.infradead.org
Cc: Yash Shah <yash.shah@sifive.com>
Cc: Atish Patra <atish.patra@wdc.com>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Alexander Shiyan <shc_work@mail.ru>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Richard Fontana <rfontana@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Allison Randal <allison@lohutok.net>
Cc: linux-media@vger.kernel.org
Cc: Kamil Debski <kamil@wypas.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Jean Delvare <jdelvare@suse.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-hwmon@vger.kernel.org
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: linux-clk@vger.kernel.org



Guru Das Srinagesh (12):
  clk: pwm: Use 64-bit division function
  drm/i915: Use 64-bit division macro
  hwmon: pwm-fan: Use 64-bit division macro
  ir-rx51: Use 64-bit division macro
  pwm: clps711x: Use 64-bit division macro
  pwm: pwm-imx-tpm: Use 64-bit division macro
  pwm: imx27: Use 64-bit division macro and function
  pwm: sifive: Use 64-bit division macro
  pwm: stm32-lp: Use %llu format specifier for period
  pwm: sun4i: Use 64-bit division function
  backlight: pwm_bl: Use 64-bit division function
  pwm: core: Convert period and duty cycle to u64

 drivers/clk/clk-pwm.c                      |  2 +-
 drivers/gpu/drm/i915/display/intel_panel.c |  2 +-
 drivers/hwmon/pwm-fan.c                    |  2 +-
 drivers/media/rc/ir-rx51.c                 |  3 ++-
 drivers/pwm/core.c                         |  4 ++--
 drivers/pwm/pwm-clps711x.c                 |  2 +-
 drivers/pwm/pwm-imx-tpm.c                  |  2 +-
 drivers/pwm/pwm-imx27.c                    |  5 ++---
 drivers/pwm/pwm-sifive.c                   |  2 +-
 drivers/pwm/pwm-stm32-lp.c                 |  2 +-
 drivers/pwm/pwm-sun4i.c                    |  2 +-
 drivers/pwm/sysfs.c                        |  8 ++++----
 drivers/video/backlight/pwm_bl.c           |  3 ++-
 include/linux/pwm.h                        | 12 ++++++------
 14 files changed, 26 insertions(+), 25 deletions(-)

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

             reply	other threads:[~2020-03-11  1:41 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-11  1:41 Guru Das Srinagesh [this message]
2020-03-11  1:41 ` [PATCH v8 01/12] clk: pwm: Use 64-bit division function Guru Das Srinagesh
2020-03-11 16:58   ` David Laight
2020-03-12  2:09     ` Guru Das Srinagesh
2020-03-12  9:14       ` David Laight
2020-03-12 19:09         ` Guru Das Srinagesh
2020-03-19 20:53           ` Guru Das Srinagesh
2020-04-09  2:40         ` Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 02/12] drm/i915: Use 64-bit division macro Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 03/12] hwmon: pwm-fan: " Guru Das Srinagesh
2020-03-11 15:08   ` Guenter Roeck
2020-03-11  1:41 ` [PATCH v8 04/12] ir-rx51: " Guru Das Srinagesh
2020-03-11  2:11   ` Sean Young
2020-03-11  1:41 ` [PATCH v8 05/12] pwm: clps711x: " Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 06/12] pwm: pwm-imx-tpm: " Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 07/12] pwm: imx27: Use 64-bit division macro and function Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 08/12] pwm: sifive: Use 64-bit division macro Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 09/12] pwm: stm32-lp: Use %llu format specifier for period Guru Das Srinagesh
2020-03-11  1:41 ` [PATCH v8 10/12] pwm: sun4i: Use 64-bit division function Guru Das Srinagesh
2020-03-11  3:35   ` Chen-Yu Tsai
2020-03-11  1:41 ` [PATCH v8 11/12] backlight: pwm_bl: " Guru Das Srinagesh
2020-03-11 10:05   ` Daniel Thompson
2020-03-11  1:41 ` [PATCH v8 12/12] pwm: core: Convert period and duty cycle to u64 Guru Das Srinagesh

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=cover.1583889178.git.gurus@codeaurora.org \
    --to=gurus@codeaurora.org \
    --cc=airlied@linux.ie \
    --cc=alexandre.torgue@st.com \
    --cc=atish.patra@wdc.com \
    --cc=daniel.thompson@linaro.org \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=kamil@wypas.org \
    --cc=kstewart@linuxfoundation.org \
    --cc=lee.jones@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mchehab@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=shc_work@mail.ru \
    --cc=thierry.reding@gmail.com \
    --cc=ville.syrjala@linux.intel.com \
    --cc=wens@csie.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).