From: Thierry Reding <thierry.reding@gmail.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Tony Lindgren <tony@atomide.com>,
Eric Miao <eric.y.miao@gmail.com>,
Haojian Zhuang <haojian.zhuang@gmail.com>,
Ben Dooks <ben-linux@fluff.org>,
Kukjin Kim <kgene.kim@samsung.com>,
Simon Horman <horms@verge.net.au>,
Magnus Damm <magnus.damm@gmail.com>,
Guan Xuetao <gxt@mprc.pku.edu.cn>,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-omap@vger.kernel.org, openezx-devel@lists.openezx.org,
linux-samsung-soc@vger.kernel.org, linux-sh@vger.kernel.org,
linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 08/10] pwm-backlight: Use new enable_gpio field
Date: Tue, 1 Oct 2013 22:49:26 +0200 [thread overview]
Message-ID: <20131001204925.GC9201@ulmo.nvidia.com> (raw)
In-Reply-To: <524B16E8.5080506@wwwdotorg.org>
[-- Attachment #1: Type: text/plain, Size: 3471 bytes --]
On Tue, Oct 01, 2013 at 12:39:36PM -0600, Stephen Warren wrote:
> On 09/23/2013 03:41 PM, Thierry Reding wrote:
> > Make use of the new enable_gpio field and allow it to be set from DT as
> > well. Now that all legacy users of platform data have been converted to
> > initialize this field to an invalid value, it is safe to use the field
> > from the driver.
>
> > diff --git a/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt b/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt
>
> > Optional properties:
>
> > + - enable-gpios: a list of GPIOs to enable and disable the backlight
>
> That seems to imply that multiple GPIOs are legal. Was that intended? If
> not, I would suggest:
>
> - enable-gpios: contains a single GPIO specifier for the GPIO which
> enables/disables the backlight. See [1] for the format.
>
> >
> > [0]: Documentation/devicetree/bindings/pwm/pwm.txt
> + [1]: Documentation/devicetree/bindings/gpio/gpio.txt
Yes, that sounds better. Indeed only a single GPIO is supported. Adding
more than one would require representing the timing between the two and
that will take us back to where we left off with the power sequences.
> > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
>
> > @@ -51,12 +55,27 @@ static void pwm_backlight_power_on(struct pwm_bl_data *pb, int brightness,
> > pb->lth_brightness;
> >
> > pwm_config(pb->pwm, duty_cycle, pb->period);
> > +
> > + if (gpio_is_valid(pb->enable_gpio)) {
> > + if (pb->enable_gpio_flags & PWM_BACKLIGHT_GPIO_ACTIVE_LOW)
> > + gpio_set_value(pb->enable_gpio, 0);
> > + else
> > + gpio_set_value(pb->enable_gpio, 1);
> > + }
>
> Feel completely free to ignore this, but when the difference in two
> code-paths is solely in function parameters, I prefer to calculate the
> parameter inside the if statement, then call the function outside the
> conditional code, to highlight the common/different parts:
>
> int value;
>
> /* or an if statement for the next 1 line, if you don't like ?: */
> value = (pb->enable_gpio_flags & PWM_BACKLIGHT_GPIO_ACTIVE_LOW) ? 0 : 1;
> gpio_set_value((pb->enable_gpio, value);
I actually tried that, but it looked cluttered, so I opted for the
alternative. Not that this matters all that much, because beginning with
3.13 the GPIO subsystem should be able to handle the active low flag
internally using the new gpiod_*() API. I plan on converting the driver
to use that during the next cycle.
> > @@ -148,11 +168,10 @@ static int pwm_backlight_parse_dt(struct device *dev,
>
> > + data->enable_gpio = of_get_named_gpio_flags(node, "enable-gpios", 0,
> > + &flags);
> > + if (gpio_is_valid(data->enable_gpio) && (flags & OF_GPIO_ACTIVE_LOW))
> > + data->enable_gpio_flags |= PWM_BACKLIGHT_GPIO_ACTIVE_LOW;
>
> This doesn't seem to handle deferred probe correctly; I would expect
> something more like:
>
> data->enable_gpio = of_get_named_gpio_flags(...);
> if (data->enable_gpio == -EPROBE_DEFERRED)
> return data->enable_gpio;
> if (gpio_is_valid(...))
> ...
> return 0;
>
> I suppose it's possible that the value filters down to
> gpio_request_one() and this actually does work out OK, but that feels
> very accidental/implicit to me.
Yes, I think it does indeed propagate to gpio_request_one(), but you're
right, it should be caught explicitly.
Thierry
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
next prev parent reply other threads:[~2013-10-01 20:49 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-23 21:40 [PATCH 00/10] pwm-backlight: Add GPIO and power supply support Thierry Reding
2013-09-23 21:40 ` [PATCH 01/10] pwm-backlight: Refactor backlight power on/off Thierry Reding
[not found] ` <1379972467-11243-2-git-send-email-treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-10-01 18:26 ` Stephen Warren
2013-10-01 20:34 ` Thierry Reding
2013-09-23 21:40 ` [PATCH 02/10] pwm-backlight: Add optional enable GPIO Thierry Reding
2013-09-23 21:41 ` [PATCH 03/10] ARM: OMAP: Initialize PWM backlight enable_gpio field Thierry Reding
2013-09-23 21:41 ` [PATCH 04/10] ARM: pxa: " Thierry Reding
2013-09-23 21:41 ` [PATCH 05/10] ARM: SAMSUNG: " Thierry Reding
2013-10-01 18:31 ` Stephen Warren
[not found] ` <524B14E8.5040302-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-10-01 20:43 ` Thierry Reding
[not found] ` <20131001204335.GB9201-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2013-10-01 20:58 ` Stephen Warren
2013-10-01 21:23 ` Thierry Reding
2013-09-23 21:41 ` [PATCH 06/10] ARM: shmobile: " Thierry Reding
2013-09-25 5:40 ` Simon Horman
2013-09-23 21:41 ` [PATCH 07/10] unicore32: " Thierry Reding
[not found] ` <1379972467-11243-1-git-send-email-treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-09-23 21:41 ` [PATCH 08/10] pwm-backlight: Use new " Thierry Reding
[not found] ` <1379972467-11243-9-git-send-email-treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-10-01 18:39 ` Stephen Warren
2013-10-01 20:49 ` Thierry Reding [this message]
2013-09-23 21:41 ` [PATCH 09/10] pwm-backlight: Use an optional power supply Thierry Reding
2013-10-01 18:43 ` Stephen Warren
2013-10-01 20:53 ` Thierry Reding
2013-10-01 20:59 ` Stephen Warren
2013-10-01 21:31 ` Thierry Reding
2013-10-02 10:35 ` Mark Brown
2013-09-23 21:41 ` [PATCH 10/10] pwm-backlight: Allow backlight to remain disabled on boot Thierry Reding
2013-10-01 18:50 ` Stephen Warren
2013-10-01 21:14 ` Thierry Reding
2013-10-02 17:45 ` Thierry Reding
2013-09-24 8:14 ` [PATCH 00/10] pwm-backlight: Add GPIO and power supply support Simon Horman
[not found] ` <20130924081446.GA11981-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2013-09-24 9:00 ` Thierry Reding
2013-09-25 5:39 ` Simon Horman
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=20131001204925.GC9201@ulmo.nvidia.com \
--to=thierry.reding@gmail.com \
--cc=ben-linux@fluff.org \
--cc=devicetree@vger.kernel.org \
--cc=eric.y.miao@gmail.com \
--cc=gxt@mprc.pku.edu.cn \
--cc=haojian.zhuang@gmail.com \
--cc=horms@verge.net.au \
--cc=ijc+devicetree@hellion.org.uk \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mark.rutland@arm.com \
--cc=openezx-devel@lists.openezx.org \
--cc=pawel.moll@arm.com \
--cc=rob.herring@calxeda.com \
--cc=swarren@wwwdotorg.org \
--cc=tony@atomide.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;
as well as URLs for NNTP newsgroup(s).