1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- From bff23714bc36a1322d0f14519022df0d1a4b21f3 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
- Date: Fri, 8 Jul 2016 14:53:38 +0200
- Subject: [PATCH] leds: leds-gpio: Set of_node for created LED devices
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- When working with Device Tree we iterate over children of "gpio-leds"
- compatible node and create LED device for each of them. We take care of
- all common DT properties (label, default trigger, state, etc.), however
- some triggers may want to support more of them.
- It could be useful for timer trigger to support setting delay on/off
- values with Device Tree property. Or for transient trigger to support
- e.g. duration property.
- We obviously should handle such properties in triggers, not in generic
- code. To let trigger drivers read properties from DT node we need to set
- of_node to point the relevant node. This change allows using all kind of
- of helpers in e.g. "activate" callbacks.
- Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
- Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
- ---
- drivers/leds/leds-gpio.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
- --- a/drivers/leds/leds-gpio.c
- +++ b/drivers/leds/leds-gpio.c
- @@ -182,6 +182,7 @@ static struct gpio_leds_priv *gpio_leds_
- return ERR_PTR(-ENOMEM);
-
- device_for_each_child_node(dev, child) {
- + struct gpio_led_data *led_dat = &priv->leds[priv->num_leds];
- struct gpio_led led = {};
- const char *state = NULL;
-
- @@ -220,12 +221,12 @@ 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, &priv->leds[priv->num_leds],
- - dev, NULL);
- + ret = create_gpio_led(&led, led_dat, dev, NULL);
- if (ret < 0) {
- fwnode_handle_put(child);
- goto err;
- }
- + led_dat->cdev.dev->of_node = np;
- priv->num_leds++;
- }
-
|