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.

> +  - 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.
_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to