diff options
| -rw-r--r-- | drivers/leds/leds-gpio.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index b3c5d9d6a42b..868e6fc17cba 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c | |||
| @@ -170,6 +170,7 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev) | |||
| 170 | struct fwnode_handle *child; | 170 | struct fwnode_handle *child; |
| 171 | struct gpio_leds_priv *priv; | 171 | struct gpio_leds_priv *priv; |
| 172 | int count, ret; | 172 | int count, ret; |
| 173 | struct device_node *np; | ||
| 173 | 174 | ||
| 174 | count = device_get_child_node_count(dev); | 175 | count = device_get_child_node_count(dev); |
| 175 | if (!count) | 176 | if (!count) |
| @@ -189,7 +190,16 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev) | |||
| 189 | goto err; | 190 | goto err; |
| 190 | } | 191 | } |
| 191 | 192 | ||
| 192 | fwnode_property_read_string(child, "label", &led.name); | 193 | np = of_node(child); |
| 194 | |||
| 195 | if (fwnode_property_present(child, "label")) { | ||
| 196 | fwnode_property_read_string(child, "label", &led.name); | ||
| 197 | } else { | ||
| 198 | if (IS_ENABLED(CONFIG_OF) && !led.name && np) | ||
| 199 | led.name = np->name; | ||
| 200 | if (!led.name) | ||
| 201 | return ERR_PTR(-EINVAL); | ||
| 202 | } | ||
| 193 | fwnode_property_read_string(child, "linux,default-trigger", | 203 | fwnode_property_read_string(child, "linux,default-trigger", |
| 194 | &led.default_trigger); | 204 | &led.default_trigger); |
| 195 | 205 | ||
