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. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html