backlight: pwm_bl: Fix GPIO out for unimplemented .get_direction()
Commit7613c92231
("backlight: pwm_bl: Move the checks for initial power state to a separate function") not just moved some code, but made slight changes in semantics. If a gpiochip doesn't implement the optional .get_direction() callback, gpiod_get_direction always returns -EINVAL, which is never equal to GPIOF_DIR_IN, leading to the GPIO not being configured for output. To avoid this, invert the test and check for not GPIOF_DIR_OUT instead, like the original code did. This restores the display on r8a7740/armadillo. Fixes:7613c92231
("backlight: pwm_bl: Move the checks for initial power state to a separate function") Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Philipp Zabel <p.zabel@pengutronix.de> Acked-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
This commit is contained in:
Родитель
4f7d029b9b
Коммит
892c7788c7
|
@ -297,14 +297,15 @@ static int pwm_backlight_probe(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
/*
|
||||
* If the GPIO is configured as input, change the direction to output
|
||||
* and set the GPIO as active.
|
||||
* If the GPIO is not known to be already configured as output, that
|
||||
* is, if gpiod_get_direction returns either GPIOF_DIR_IN or -EINVAL,
|
||||
* change the direction to output and set the GPIO as active.
|
||||
* Do not force the GPIO to active when it was already output as it
|
||||
* could cause backlight flickering or we would enable the backlight too
|
||||
* early. Leave the decision of the initial backlight state for later.
|
||||
*/
|
||||
if (pb->enable_gpio &&
|
||||
gpiod_get_direction(pb->enable_gpio) == GPIOF_DIR_IN)
|
||||
gpiod_get_direction(pb->enable_gpio) != GPIOF_DIR_OUT)
|
||||
gpiod_direction_output(pb->enable_gpio, 1);
|
||||
|
||||
pb->power_supply = devm_regulator_get(&pdev->dev, "power");
|
||||
|
|
Загрузка…
Ссылка в новой задаче