leds: lp55xx: initialise output direction from dts
authorMerlijn Wajer <merlijn@wizzup.org>
Sun, 12 Dec 2021 22:40:07 +0000 (23:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:04:21 +0000 (11:04 +0100)
[ Upstream commit 9e87a8da747bf72365abb79e6f64fcca955b4f56 ]

Commit a5d3d1adc95f ("leds: lp55xx: Initialize enable GPIO direction to
output") attempts to fix this, but the fix did not work since at least
for the Nokia N900 the value needs to be set to HIGH, per the device
tree. So rather than hardcoding the value to a potentially invalid value
for some devices, let's set direction in lp55xx_init_device.

Fixes: a5d3d1adc95f ("leds: lp55xx: Initialize enable GPIO direction to output")
Fixes: 92a81562e695 ("leds: lp55xx: Add multicolor framework support to lp55xx")
Fixes: ac219bf3c9bd ("leds: lp55xx: Convert to use GPIO descriptors")
Signed-off-by: Merlijn Wajer <merlijn@wizzup.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/leds/leds-lp55xx-common.c

index d1657c46ee2f81e44a1b6389d33f2a19972350bc..9fdfc1b9a1a0cb3e4106a2d89abe3d02b2a8815e 100644 (file)
@@ -439,6 +439,8 @@ int lp55xx_init_device(struct lp55xx_chip *chip)
                return -EINVAL;
 
        if (pdata->enable_gpiod) {
+               gpiod_direction_output(pdata->enable_gpiod, 0);
+
                gpiod_set_consumer_name(pdata->enable_gpiod, "LP55xx enable");
                gpiod_set_value(pdata->enable_gpiod, 0);
                usleep_range(1000, 2000); /* Keep enable down at least 1ms */
@@ -694,7 +696,7 @@ struct lp55xx_platform_data *lp55xx_of_populate_pdata(struct device *dev,
        of_property_read_u8(np, "clock-mode", &pdata->clock_mode);
 
        pdata->enable_gpiod = devm_gpiod_get_optional(dev, "enable",
-                                                     GPIOD_OUT_LOW);
+                                                     GPIOD_ASIS);
        if (IS_ERR(pdata->enable_gpiod))
                return ERR_CAST(pdata->enable_gpiod);