Re: [PATCH v4 10/10] pwm-backlight: Add rudimentary device tree support
From: Stephen Warren <hidden>
Date: 2012-03-20 02:59:59
Also in:
linux-arm-kernel, linux-tegra
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.
quoted hunk
+++ 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.
+ - 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. ...
+ 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?
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.