On Mon, 12 Oct 2015, Vladimir Zapolskiy wrote: > Platform PWM backlight data provided by board's device tree should be > complete enough to successfully request a pwm device using pwm_get() > API. This change fixes a bug, when an arbitrary (first found) PWM is > connected to a "pwm-backlight" compatible device, when explicit PWM > device reference is not given. > > Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt > already describes "pwms" as a required property, instead of blind > selection of a potentially wrong PWM reject legacy PWM device > registration request, leave legacy API only for non-dt cases. > > Based on initial implementation done by Dmitry Eremin-Solenikov. > > Reported-by: Dmitry Eremin-Solenikov <dbaryshkov@xxxxxxxxx> > Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@xxxxxxxxxx> > Acked-by: Thierry Reding <thierry.reding@xxxxxxxxx> > Acked-by: Lee Jones <lee.jones@xxxxxxxxxx> > --- > The change is based on lee-backlight/for-backlight-next > > Changes from v1 to v2: > * rebased on top of Nicolas' commit > 68feaca0b13 ("backlight: pwm: Handle EPROBE_DEFER while requesting the PWM") > > Links to previous discussions of the change: > * https://patchwork.ozlabs.org/patch/483993/ > * https://patchwork.ozlabs.org/patch/398849/ > > drivers/video/backlight/pwm_bl.c | 19 +++++++++---------- > 1 file changed, 9 insertions(+), 10 deletions(-) Applied, thanks. > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c > index eff379b..ae3c6b6 100644 > --- a/drivers/video/backlight/pwm_bl.c > +++ b/drivers/video/backlight/pwm_bl.c > @@ -271,19 +271,18 @@ static int pwm_backlight_probe(struct platform_device *pdev) > } > > pb->pwm = devm_pwm_get(&pdev->dev, NULL); > - if (IS_ERR(pb->pwm)) { > - ret = PTR_ERR(pb->pwm); > - if (ret == -EPROBE_DEFER) > - goto err_alloc; > - > + if (IS_ERR(pb->pwm) && PTR_ERR(pb->pwm) != -EPROBE_DEFER > + && !pdev->dev.of_node) { > dev_err(&pdev->dev, "unable to request PWM, trying legacy API\n"); > pb->legacy = true; > pb->pwm = pwm_request(data->pwm_id, "pwm-backlight"); > - if (IS_ERR(pb->pwm)) { > - dev_err(&pdev->dev, "unable to request legacy PWM\n"); > - ret = PTR_ERR(pb->pwm); > - goto err_alloc; > - } > + } > + > + if (IS_ERR(pb->pwm)) { > + ret = PTR_ERR(pb->pwm); > + if (ret != -EPROBE_DEFER) > + dev_err(&pdev->dev, "unable to request PWM\n"); > + goto err_alloc; > } > > dev_dbg(&pdev->dev, "got pwm for backlight\n"); -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html