From 86722ab0bba39a540e1690745fbb574240b3fa12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Wed, 8 Mar 2017 12:38:43 +0100 Subject: kernel: fix of_node handling in LEDs core code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This backports fixes for setting of_node and making it possible to read extra info from DT. This was partially fixed by: [PATCH] leds: leds-gpio: Set of_node for created LED devices but it didn't work during initialization. Signed-off-by: Rafał Miłecki --- ...se-OF-variant-of-LED-registering-function.patch | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 target/linux/generic/patches-4.4/085-0005-leds-gpio-use-OF-variant-of-LED-registering-function.patch (limited to 'target/linux/generic/patches-4.4/085-0005-leds-gpio-use-OF-variant-of-LED-registering-function.patch') diff --git a/target/linux/generic/patches-4.4/085-0005-leds-gpio-use-OF-variant-of-LED-registering-function.patch b/target/linux/generic/patches-4.4/085-0005-leds-gpio-use-OF-variant-of-LED-registering-function.patch new file mode 100644 index 0000000000..159fae84f4 --- /dev/null +++ b/target/linux/generic/patches-4.4/085-0005-leds-gpio-use-OF-variant-of-LED-registering-function.patch @@ -0,0 +1,60 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Mon, 6 Mar 2017 06:19:45 +0100 +Subject: [PATCH] leds: gpio: use OF variant of LED registering function +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In leds-gpio we support LEDs specified in DT so we should use +(devm_)of_led_classdev_register. This allows passing DT node as argument +for use by the LED subsystem. + +Signed-off-by: Rafał Miłecki +Acked-by: Pavel Machek +Signed-off-by: Jacek Anaszewski +--- + drivers/leds/leds-gpio.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/leds/leds-gpio.c ++++ b/drivers/leds/leds-gpio.c +@@ -87,7 +87,7 @@ static int gpio_blink_set(struct led_cla + + static int create_gpio_led(const struct gpio_led *template, + struct gpio_led_data *led_dat, struct device *parent, +- gpio_blink_set_t blink_set) ++ struct device_node *np, gpio_blink_set_t blink_set) + { + int ret, state; + +@@ -143,7 +143,7 @@ static int create_gpio_led(const struct + + INIT_WORK(&led_dat->work, gpio_led_work); + +- return devm_led_classdev_register(parent, &led_dat->cdev); ++ return devm_of_led_classdev_register(parent, np, &led_dat->cdev); + } + + static void delete_gpio_led(struct gpio_led_data *led) +@@ -219,7 +219,7 @@ static struct gpio_leds_priv *gpio_leds_ + if (fwnode_property_present(child, "retain-state-suspended")) + led.retain_state_suspended = 1; + +- ret = create_gpio_led(&led, led_dat, dev, NULL); ++ ret = create_gpio_led(&led, led_dat, dev, np, NULL); + if (ret < 0) { + fwnode_handle_put(child); + goto err; +@@ -256,9 +256,9 @@ static int gpio_led_probe(struct platfor + + priv->num_leds = pdata->num_leds; + for (i = 0; i < priv->num_leds; i++) { +- ret = create_gpio_led(&pdata->leds[i], +- &priv->leds[i], +- &pdev->dev, pdata->gpio_blink_set); ++ ret = create_gpio_led(&pdata->leds[i], &priv->leds[i], ++ &pdev->dev, NULL, ++ pdata->gpio_blink_set); + if (ret < 0) + return ret; + } -- cgit v1.2.3