led: led_gpio: add "default-state" apply

It follows kernel led gpio initialization.

Change-Id: I8c4af429f03bd373e76cd0607306950a2dce33de
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
Joseph Chen 2019-02-13 16:29:00 +08:00 committed by Jianhong Chen
parent b3b8e4f06e
commit 19066e9932
1 changed files with 19 additions and 1 deletions

View File

@ -60,11 +60,29 @@ static int led_gpio_probe(struct udevice *dev)
{
struct led_uc_plat *uc_plat = dev_get_uclass_platdata(dev);
struct led_gpio_priv *priv = dev_get_priv(dev);
const char *state;
int ret;
/* Ignore the top-level LED node */
if (!uc_plat->label)
return 0;
return gpio_request_by_name(dev, "gpios", 0, &priv->gpio, GPIOD_IS_OUT);
ret = gpio_request_by_name(dev, "gpios", 0, &priv->gpio, GPIOD_IS_OUT);
if (ret) {
printf("Failed to request gpios of led '%s'\n", uc_plat->label);
return ret;
}
/* Apply default state */
state = dev_read_prop(dev, "default-state", NULL);
if (state) {
if (!strcmp(state, "on"))
ret = gpio_led_set_state(dev, LEDST_ON);
else if (!strcmp(state, "off"))
ret = gpio_led_set_state(dev, LEDST_OFF);
}
return ret;
}
static int led_gpio_remove(struct udevice *dev)