Hi Boris, On 12.10.2015 16:30, Boris Brezillon wrote: > Hi Vladimir, > > On Mon, 12 Oct 2015 15:16:44 +0200 > Nicolas Ferre <nicolas.ferre@xxxxxxxxx> wrote: > >> Le 12/10/2015 14:29, Vladimir Zapolskiy a écrit : >>> 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> >> >> It seems good to me: >> Acked-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxx> >> >> (Adding some people to the Cc: list). >> >> >>> --- >>> 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(-) >>> >>> 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"); >>> >> >> > > I still think it would be cleaner to do what Thierry proposed here [1]. > IMO, embedding the complexity of different error cases depending on the > way PWM devices were defined (OF, pdata, ...) is rather risky and > make the code even more complicated. please correct me if I'm wrong, I suppose Thierry's change fixes Nicolas' commit 68feaca0b13 only, and the intention of my change is to fix an absolutely unrelated problem, see the commit message. So, since still there is a remained chance of getting -EPROBE_DEFER from pwm_get(), e.g. from of_pwm_get() or failed pwmchip_find_by_name() or pwm->chip->ops->request() I don't see how Thierry's change alone may help me to overcome the problem I'm trying to solve here. > Best Regards, > > Boris > > [1]https://lkml.org/lkml/2015/10/5/319 > > -- With best wishes, Vladimir -- 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