From: Thierry Reding <thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: Mark Brown
<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>,
Ryan Mallon <rmallon-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
Colin Cross <ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>,
Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
Richard Purdie <rpurdie-Fm38FmjxZ/leoWH0uzbU5w@public.gmane.org>,
Matthias Kaehlcke
<matthias-RprLehDfhQ3k1uMJSBkQmQ@public.gmane.org>,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Eric Miao <eric.y.miao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Kurt Van Dijck <kurt.van.dijck-/BeEPy95v10@public.gmane.org>
Subject: Re: [PATCH v4 10/10] pwm-backlight: Add rudimentary device tree support
Date: Tue, 20 Mar 2012 09:39:44 +0100 [thread overview]
Message-ID: <20120320083943.GA20249@avionic-0098.adnet.avionic-design.de> (raw)
In-Reply-To: <4F67F2AF.3020404-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 3301 bytes --]
* Stephen Warren wrote:
> On 03/14/2012 09:56 AM, Thierry Reding wrote:
> > This commit adds very basic support for device tree probing. Currently,
> > only a PWM and a list of distinct brightness levels can be specified.
> > Enabling or disabling backlight power via GPIOs is not yet supported.
> >
> > A pointer to the exit() callback is stored in the driver data to keep it
> > around until the driver is unloaded.
>
> > +++ b/Documentation/devicetree/bindings/video/backlight/pwm-backlight
>
> > +pwm-backlight bindings
> > +
> > +Required properties:
> > + - compatible: "pwm-backlight"
> > + - pwm: OF device-tree PWM specification
> > + - num-brightness-levels: number of distinct brightness levels
> > + - brightness-levels: array of distinct brightness levels
>
> I assume the values in this array are 0 (darkest/off) to 255 (max
> brightness)? The doc should probably specify this.
Typically yes. Although I haven't tested this it should work for pretty much
any range starting from 0 because the last value will be used to interpolate
("scale") the PWM duty cycle. So it really is 0 (darkest/off) to <last item>
(max brightness). I should document this, of course.
> > + - default-brightness-level: the default brightness level
>
> Likewise, this is an index into the default-brightness-level? Again,
> it'd be best to explicitly state this.
Yes. Correct.
> ...
> > + brightness-levels = <0 4 8 16 32 64 128 255>;
> > + default-brightness-level = <6>;
>
>
> > +static int pwm_backlight_parse_dt(struct device *dev,
> > + struct platform_pwm_backlight_data *data)
> ...
> > + ret = of_property_read_u32(node, "default-brightness-level",
> > + &value);
> > + if (ret < 0)
> > + goto free;
>
> Range-check that against max_brightness?
Yes, that would be good. I guess logging a warning and falling back to
max_brightness would be the proper action?
> > static int pwm_backlight_probe(struct platform_device *pdev)
> ...
> > - pb->pwm = pwm_request(data->pwm_id, "backlight");
> > - if (IS_ERR(pb->pwm)) {
> > - dev_err(&pdev->dev, "unable to request PWM for backlight\n");
> > - ret = PTR_ERR(pb->pwm);
> > - goto err_alloc;
> > - } else
> > - dev_dbg(&pdev->dev, "got pwm for backlight\n");
> > + if (!pb->pwm) {
> > + pb->pwm = pwm_request(data->pwm_id, "backlight");
> > + if (IS_ERR(pb->pwm)) {
> > + dev_err(&pdev->dev, "unable to request PWM for backlight\n");
> > + ret = PTR_ERR(pb->pwm);
> > + goto err_alloc;
> > + } else
> > + dev_dbg(&pdev->dev, "got pwm for backlight\n");
> > + }
>
> Hmmm. It'd be more consistent if pwm_backlight_parse_dt() called
> something like of_pwm_get() instead of of_pwm_request(), so that this
> code could always call pwm_request() on the PWM and hence operate the
> same irrespective of DT vs non-DT. GPIOs work that way at least.
That's actually what the initial patch had. Unfortunately that's pretty much
the opposite direction of where the PWM framework is headed because it would
involve getting a global index to request the PWM. I think in the long run it
would be much better to get rid of pwm_request() altogether and unify by
having the non-DT case request the PWM device on a per-chip basis.
Thierry
[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 192 bytes --]
_______________________________________________
devicetree-discuss mailing list
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
https://lists.ozlabs.org/listinfo/devicetree-discuss
WARNING: multiple messages have this Message-ID (diff)
From: thierry.reding@avionic-design.de (Thierry Reding)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 10/10] pwm-backlight: Add rudimentary device tree support
Date: Tue, 20 Mar 2012 09:39:44 +0100 [thread overview]
Message-ID: <20120320083943.GA20249@avionic-0098.adnet.avionic-design.de> (raw)
In-Reply-To: <4F67F2AF.3020404@wwwdotorg.org>
* Stephen Warren wrote:
> On 03/14/2012 09:56 AM, Thierry Reding wrote:
> > This commit adds very basic support for device tree probing. Currently,
> > only a PWM and a list of distinct brightness levels can be specified.
> > Enabling or disabling backlight power via GPIOs is not yet supported.
> >
> > A pointer to the exit() callback is stored in the driver data to keep it
> > around until the driver is unloaded.
>
> > +++ b/Documentation/devicetree/bindings/video/backlight/pwm-backlight
>
> > +pwm-backlight bindings
> > +
> > +Required properties:
> > + - compatible: "pwm-backlight"
> > + - pwm: OF device-tree PWM specification
> > + - num-brightness-levels: number of distinct brightness levels
> > + - brightness-levels: array of distinct brightness levels
>
> I assume the values in this array are 0 (darkest/off) to 255 (max
> brightness)? The doc should probably specify this.
Typically yes. Although I haven't tested this it should work for pretty much
any range starting from 0 because the last value will be used to interpolate
("scale") the PWM duty cycle. So it really is 0 (darkest/off) to <last item>
(max brightness). I should document this, of course.
> > + - default-brightness-level: the default brightness level
>
> Likewise, this is an index into the default-brightness-level? Again,
> it'd be best to explicitly state this.
Yes. Correct.
> ...
> > + brightness-levels = <0 4 8 16 32 64 128 255>;
> > + default-brightness-level = <6>;
>
>
> > +static int pwm_backlight_parse_dt(struct device *dev,
> > + struct platform_pwm_backlight_data *data)
> ...
> > + ret = of_property_read_u32(node, "default-brightness-level",
> > + &value);
> > + if (ret < 0)
> > + goto free;
>
> Range-check that against max_brightness?
Yes, that would be good. I guess logging a warning and falling back to
max_brightness would be the proper action?
> > static int pwm_backlight_probe(struct platform_device *pdev)
> ...
> > - pb->pwm = pwm_request(data->pwm_id, "backlight");
> > - if (IS_ERR(pb->pwm)) {
> > - dev_err(&pdev->dev, "unable to request PWM for backlight\n");
> > - ret = PTR_ERR(pb->pwm);
> > - goto err_alloc;
> > - } else
> > - dev_dbg(&pdev->dev, "got pwm for backlight\n");
> > + if (!pb->pwm) {
> > + pb->pwm = pwm_request(data->pwm_id, "backlight");
> > + if (IS_ERR(pb->pwm)) {
> > + dev_err(&pdev->dev, "unable to request PWM for backlight\n");
> > + ret = PTR_ERR(pb->pwm);
> > + goto err_alloc;
> > + } else
> > + dev_dbg(&pdev->dev, "got pwm for backlight\n");
> > + }
>
> Hmmm. It'd be more consistent if pwm_backlight_parse_dt() called
> something like of_pwm_get() instead of of_pwm_request(), so that this
> code could always call pwm_request() on the PWM and hence operate the
> same irrespective of DT vs non-DT. GPIOs work that way at least.
That's actually what the initial patch had. Unfortunately that's pretty much
the opposite direction of where the PWM framework is headed because it would
involve getting a global index to request the PWM. I think in the long run it
would be much better to get rid of pwm_request() altogether and unify by
having the non-DT case request the PWM device on a per-chip basis.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120320/89ee5a2d/attachment.sig>
next prev parent reply other threads:[~2012-03-20 8:39 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-14 15:56 [PATCH v4 00/10] Add PWM framework and device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 01/10] PWM: add pwm framework support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-2-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-14 20:52 ` Lars-Peter Clausen
2012-03-14 20:52 ` Lars-Peter Clausen
[not found] ` <4F610517.7090006-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2012-03-14 20:57 ` Thierry Reding
2012-03-14 20:57 ` Thierry Reding
2012-03-16 7:19 ` Shawn Guo
2012-03-16 7:19 ` Shawn Guo
[not found] ` <20120316071951.GB7758-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-03-16 7:28 ` Thierry Reding
2012-03-16 7:28 ` Thierry Reding
2012-03-20 1:55 ` Stephen Warren
2012-03-20 1:55 ` Stephen Warren
[not found] ` <4F67E38F.6080300-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 5:59 ` Thierry Reding
2012-03-20 5:59 ` Thierry Reding
[not found] ` <1331740593-10807-1-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-14 15:56 ` [PATCH v4 02/10] pwm: Allow chips to support multiple PWMs Thierry Reding
2012-03-14 15:56 ` Thierry Reding
2012-03-14 20:42 ` H Hartley Sweeten
2012-03-14 20:42 ` H Hartley Sweeten
2012-03-14 20:49 ` Thierry Reding
2012-03-14 20:49 ` Thierry Reding
2012-03-15 0:42 ` H Hartley Sweeten
2012-03-15 0:42 ` H Hartley Sweeten
2012-03-14 15:56 ` [PATCH v4 03/10] pwm: Add device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-4-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-14 20:11 ` Sascha Hauer
2012-03-14 20:11 ` Sascha Hauer
[not found] ` <20120314201138.GU3852-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-14 20:46 ` Thierry Reding
2012-03-14 20:46 ` Thierry Reding
2012-03-15 8:40 ` Arnd Bergmann
2012-03-15 8:40 ` Arnd Bergmann
[not found] ` <201203150840.42659.arnd-r2nGTMty4D4@public.gmane.org>
2012-03-15 10:29 ` Mark Brown
2012-03-15 10:29 ` Mark Brown
[not found] ` <20120315102944.GB3138-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-03-15 12:44 ` Arnd Bergmann
2012-03-15 12:44 ` Arnd Bergmann
2012-03-20 2:12 ` Stephen Warren
2012-03-20 2:12 ` Stephen Warren
[not found] ` <4F67E7A3.3090603-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 5:51 ` Thierry Reding
2012-03-20 5:51 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 04/10] ARM: tegra: Fix PWM clock programming Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-5-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-20 2:15 ` Stephen Warren
2012-03-20 2:15 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 05/10] ARM: tegra: Provide clock for only one PWM controller Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-6-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-20 2:18 ` Stephen Warren
2012-03-20 2:18 ` Stephen Warren
[not found] ` <4F67E8E4.7000604-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 8:44 ` Thierry Reding
2012-03-20 8:44 ` Thierry Reding
[not found] ` <20120320084403.GB20249-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-20 15:27 ` Stephen Warren
2012-03-20 15:27 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 06/10] pwm: Add NVIDIA Tegra SoC support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-7-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-16 8:00 ` Shawn Guo
2012-03-16 8:00 ` Shawn Guo
[not found] ` <20120316080025.GD7758-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-03-16 8:21 ` Thierry Reding
2012-03-16 8:21 ` Thierry Reding
2012-03-20 2:35 ` Stephen Warren
2012-03-20 2:35 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 07/10] pwm: tegra: Add device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-8-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-20 2:42 ` Stephen Warren
2012-03-20 2:42 ` Stephen Warren
[not found] ` <4F67EE9A.6080101-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 8:48 ` Thierry Reding
2012-03-20 8:48 ` Thierry Reding
[not found] ` <20120320084807.GC20249-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-20 15:33 ` Stephen Warren
2012-03-20 15:33 ` Stephen Warren
[not found] ` <4F68A32D.1000402-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 15:44 ` Thierry Reding
2012-03-20 15:44 ` Thierry Reding
2012-04-04 7:04 ` Shawn Guo
2012-04-04 7:04 ` Shawn Guo
[not found] ` <20120404070432.GF7264-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-04-04 18:33 ` Stephen Warren
2012-04-04 18:33 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 08/10] pwm: Add Blackfin support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 09/10] pwm: Add PXA support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-10-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-15 0:13 ` Ryan Mallon
2012-03-15 0:13 ` Ryan Mallon
[not found] ` <4F61343A.80103-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-03-15 6:56 ` Thierry Reding
2012-03-15 6:56 ` Thierry Reding
[not found] ` <20120315065631.GB20502-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-03-15 9:05 ` Sascha Hauer
2012-03-15 9:05 ` Sascha Hauer
[not found] ` <20120315090540.GW3852-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-15 9:21 ` Thierry Reding
2012-03-15 9:21 ` Thierry Reding
[not found] ` <20120315092134.GA29841-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-15 9:45 ` Sascha Hauer
2012-03-15 9:45 ` Sascha Hauer
2012-03-16 8:12 ` Shawn Guo
2012-03-16 8:12 ` Shawn Guo
[not found] ` <20120316081222.GE7758-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-03-16 8:29 ` Thierry Reding
2012-03-16 8:29 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 10/10] pwm-backlight: Add rudimentary device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-11-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-15 8:48 ` Arnd Bergmann
2012-03-15 8:48 ` Arnd Bergmann
2012-03-20 2:59 ` Stephen Warren
2012-03-20 2:59 ` Stephen Warren
[not found] ` <4F67F2AF.3020404-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 8:39 ` Thierry Reding [this message]
2012-03-20 8:39 ` Thierry Reding
[not found] ` <20120320083943.GA20249-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-20 15:27 ` Stephen Warren
2012-03-20 15:27 ` Stephen Warren
[not found] ` <4F68A1C8.5080608-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 15:43 ` Thierry Reding
2012-03-20 15:43 ` Thierry Reding
[not found] ` <20120320154330.GA8651-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-03-20 15:56 ` Stephen Warren
2012-03-20 15:56 ` Stephen Warren
[not found] ` <4F68A899.3030009-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 16:08 ` Mark Brown
2012-03-20 16:08 ` Mark Brown
2012-03-14 23:19 ` [PATCH v4 00/10] Add PWM framework and " H Hartley Sweeten
2012-03-14 23:19 ` H Hartley Sweeten
2012-03-15 6:41 ` Thierry Reding
2012-03-15 6:41 ` Thierry Reding
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=20120320083943.GA20249@avionic-0098.adnet.avionic-design.de \
--to=thierry.reding-rm9k5ik7kjkj5m59nbduvrnah6klmebb@public.gmane.org \
--cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
--cc=ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=eric.y.miao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=kurt.van.dijck-/BeEPy95v10@public.gmane.org \
--cc=lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matthias-RprLehDfhQ3k1uMJSBkQmQ@public.gmane.org \
--cc=rmallon-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
--cc=rpurdie-Fm38FmjxZ/leoWH0uzbU5w@public.gmane.org \
--cc=s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.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.