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 | ||