Linux PWM subsystem development
 help / color / mirror / Atom feed
From: Daniel Thompson <daniel.thompson@linaro.org>
To: Claudiu Beznea <Claudiu.Beznea@microchip.com>
Cc: mark.rutland@arm.com, milo.kim@ti.com,
	linux-fbdev@vger.kernel.org, sean@mess.org,
	devicetree@vger.kernel.org, airlied@linux.ie,
	mturquette@baylibre.com, kamil@wypas.org,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	thierry.reding@gmail.com, alexandre.belloni@free-electrons.com,
	pavel@ucw.cz, lee.jones@linaro.org, linux-clk@vger.kernel.org,
	linux-leds@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	shc_work@mail.ru, corbet@lwn.net, linux-doc@vger.kernel.org,
	linux@armlinux.org.uk, krzk@kernel.org, kgene@kernel.org,
	linux-input@vger.kernel.org, linux@roeck-us.net,
	linux-media@vger.kernel.org, linux-pwm@vger.kernel.org,
	jdelvare@suse.com, b.zolnierkie@samsung.com,
	intel-gfx@lists.freedesktop.org, robh+dt@kernel.org,
	jacek.anaszewski@gmail.com, rodrigo.vivi@intel.com,
	mchehab@kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-hwmon@vger.kernel.org
Subject: Re: [PATCH v3 05/10] pwm: add PWM mode to pwm_config()
Date: Tue, 27 Feb 2018 15:38:12 +0000	[thread overview]
Message-ID: <20180227153812.txt2vsdygfnobo33@oak.lan> (raw)
In-Reply-To: <8e1d3b30-3543-56fd-7be6-7fe6edcb40d9@microchip.com>

On Tue, Feb 27, 2018 at 01:40:58PM +0200, Claudiu Beznea wrote:
> On 27.02.2018 12:54, Daniel Thompson wrote:
> > On Mon, Feb 26, 2018 at 04:24:15PM +0200, Claudiu Beznea wrote:
> >> On 26.02.2018 11:57, Jani Nikula wrote:
> >>> On Thu, 22 Feb 2018, Daniel Thompson <daniel.thompson@linaro.org> wrote:
> >>>> On Thu, Feb 22, 2018 at 02:01:16PM +0200, Claudiu Beznea wrote:
> >>>>> Add PWM mode to pwm_config() function. The drivers which uses pwm_config()
> >>>>> were adapted to this change.
> >>>>>
> >>>>> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> >>>>> ---
> >>>>>  arch/arm/mach-s3c24xx/mach-rx1950.c  | 11 +++++++++--
> >>>>>  drivers/bus/ts-nbus.c                |  2 +-
> >>>>>  drivers/clk/clk-pwm.c                |  3 ++-
> >>>>>  drivers/gpu/drm/i915/intel_panel.c   | 17 ++++++++++++++---
> >>>>>  drivers/hwmon/pwm-fan.c              |  2 +-
> >>>>>  drivers/input/misc/max77693-haptic.c |  2 +-
> >>>>>  drivers/input/misc/max8997_haptic.c  |  6 +++++-
> >>>>>  drivers/leds/leds-pwm.c              |  5 ++++-
> >>>>>  drivers/media/rc/ir-rx51.c           |  5 ++++-
> >>>>>  drivers/media/rc/pwm-ir-tx.c         |  5 ++++-
> >>>>>  drivers/video/backlight/lm3630a_bl.c |  4 +++-
> >>>>>  drivers/video/backlight/lp855x_bl.c  |  4 +++-
> >>>>>  drivers/video/backlight/lp8788_bl.c  |  5 ++++-
> >>>>>  drivers/video/backlight/pwm_bl.c     | 11 +++++++++--
> >>>>>  drivers/video/fbdev/ssd1307fb.c      |  3 ++-
> >>>>>  include/linux/pwm.h                  |  6 ++++--
> >>>>>  16 files changed, 70 insertions(+), 21 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/video/backlight/lm3630a_bl.c b/drivers/video/backlight/lm3630a_bl.c
> >>>>> index 2030a6b77a09..696fa25dafd2 100644
> >>>>> --- a/drivers/video/backlight/lm3630a_bl.c
> >>>>> +++ b/drivers/video/backlight/lm3630a_bl.c
> >>>>> @@ -165,8 +165,10 @@ static void lm3630a_pwm_ctrl(struct lm3630a_chip *pchip, int br, int br_max)
> >>>>>  {
> >>>>>  	unsigned int period = pchip->pdata->pwm_period;
> >>>>>  	unsigned int duty = br * period / br_max;
> >>>>> +	struct pwm_caps caps = { };
> >>>>>  
> >>>>> -	pwm_config(pchip->pwmd, duty, period);
> >>>>> +	pwm_get_caps(pchip->pwmd->chip, pchip->pwmd, &caps);
> >>>>> +	pwm_config(pchip->pwmd, duty, period, BIT(ffs(caps.modes) - 1));
> >>>>
> >>>> Well... I admit I've only really looked at the patches that impact 
> >>>> backlight but dispersing this really odd looking bit twiddling 
> >>>> throughout the kernel doesn't strike me a great API design.
> >>>>
> >>>> IMHO callers should not be required to find the first set bit in
> >>>> some specially crafted set of capability bits simply to get sane 
> >>>> default behaviour.
> >>>
> >>> Agreed. IMHO the regular use case becomes rather tedious, ugly, and
> >>> error prone.
> >>
> >> Using simply PWM_MODE(NORMAL) instead of BIT(ffs(caps.modes) - 1) would be OK
> >> from your side?
> >>
> >> Or, what about using a function like pwm_mode_first() to get the first supported
> >> mode by PWM channel?
> >>
> >> Or, would you prefer to solve this inside pwm_config() function, let's say, in
> >> case an invalid mode is passed as argument, to let pwm_config() to choose the
> >> first available PWM mode for PWM channel passed as argument?
> > 
> > What is it that actually needs solving?
> > 
> > If a driver requests normal mode and the PWM driver cannot support it
> > why not just return an error an move on.
> Because, simply, I wasn't aware of what these PWM client drivers needs for.

I'm afraid you have confused me here.

Didn't you just *add* the whole concept of PWM caps with your patches?
How could any existing call site expect anything except normal mode.
Until now there has been no possiblity to request anything else.


> > Put another way, what is the use case for secretly adopting a mode the
> > caller didn't want? Under what circumstances is this a good thing?
> No one... But I wasn't aware of what the PWM clients needs for from their PWM
> controllers. At this moment having BIT(ffs(caps.modes)) instead of
> PWM_MODE(NORMAL) is mostly the same since all the driver that has not explicitly
> registered PWM caps will use PWM normal mode.
> 
> I will use PWM_MODE(NORMAL) instead of this in all the cases if this is OK from
> your side.
> 
> Thank you,
> Claudiu Beznea
> > 
> > 
> > Daniel.
> > 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-02-27 15:38 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22 12:01 [PATCH v3 00/10] extend PWM framework to support PWM modes Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 01/10] pwm: extend PWM framework with " Claudiu Beznea
2018-02-24 20:49   ` kbuild test robot
2018-02-26  8:11     ` Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 02/10] pwm: clps711x: populate PWM mode in of_xlate function Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 03/10] pwm: cros-ec: " Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 04/10] pwm: pxa: " Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 05/10] pwm: add PWM mode to pwm_config() Claudiu Beznea
2018-02-22 12:33   ` Daniel Thompson
2018-02-22 13:21     ` Claudiu Beznea
2018-02-26  9:57     ` Jani Nikula
2018-02-26 14:24       ` Claudiu Beznea
2018-02-27 10:54         ` Daniel Thompson
2018-02-27 11:40           ` Claudiu Beznea
2018-02-27 15:38             ` Daniel Thompson [this message]
2018-02-27 16:15               ` Claudiu Beznea
2018-02-22 13:01   ` Sean Young
2018-02-22 13:23     ` Claudiu Beznea
2018-02-28 19:44   ` Thierry Reding
2018-02-28 20:04     ` Jani Nikula
2018-03-02  9:28       ` Claudiu Beznea
2018-03-02  9:19     ` Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 06/10] pwm: add PWM modes Claudiu Beznea
2018-02-22 17:28   ` Andy Shevchenko
2018-02-22 17:42     ` Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 07/10] pwm: atmel: add pwm capabilities Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 08/10] pwm: add push-pull mode support Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 09/10] pwm: add documentation for pwm push-pull mode Claudiu Beznea
2018-02-22 12:01 ` [PATCH v3 10/10] pwm: atmel: add push-pull mode support Claudiu Beznea

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=20180227153812.txt2vsdygfnobo33@oak.lan \
    --to=daniel.thompson@linaro.org \
    --cc=Claudiu.Beznea@microchip.com \
    --cc=airlied@linux.ie \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jacek.anaszewski@gmail.com \
    --cc=jdelvare@suse.com \
    --cc=kamil@wypas.org \
    --cc=kgene@kernel.org \
    --cc=krzk@kernel.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=linux@roeck-us.net \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@kernel.org \
    --cc=milo.kim@ti.com \
    --cc=mturquette@baylibre.com \
    --cc=pavel@ucw.cz \
    --cc=robh+dt@kernel.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=sean@mess.org \
    --cc=shc_work@mail.ru \
    --cc=thierry.reding@gmail.com \
    /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