leds: lp55xx: enable setting default trigger
authorLinus Walleij <linus.walleij@linaro.org>
Sun, 15 Sep 2013 10:50:17 +0000 (03:50 -0700)
committerBryan Wu <cooloney@gmail.com>
Tue, 22 Oct 2013 17:57:34 +0000 (10:57 -0700)
This enables setting a default trigger on an LP55xx channel,
either from platform data or device tree. This mechanism is
identical to the mechanism for GPIO LEDs and references the
common LEDs device tree bindings.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Milo Kim <milo.kim@ti.com>
Acked-by: Milo Kim <milo.kim@ti.com>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
Documentation/devicetree/bindings/leds/leds-lp55xx.txt
drivers/leds/leds-lp55xx-common.c
include/linux/platform_data/leds-lp55xx.h

index a61727f..d221e75 100644 (file)
@@ -17,12 +17,15 @@ Optional properties:
          2: D1~6 with VOUT, D7~9 with VDD
          3: D1~9 are connected to VOUT
 
-Alternatively, each child can have specific channel name
-- chan-name: Name of each channel name
+Alternatively, each child can have a specific channel name and trigger:
+- chan-name (optional): name of channel
+- linux,default-trigger (optional): see
+  Documentation/devicetree/bindings/leds/common.txt
 
 example 1) LP5521
 3 LED channels, external clock used. Channel names are 'lp5521_pri:channel0',
-'lp5521_pri:channel1' and 'lp5521_pri:channel2'
+'lp5521_pri:channel1' and 'lp5521_pri:channel2', with a heartbeat trigger
+on channel 0.
 
 lp5521@32 {
        compatible = "national,lp5521";
@@ -33,6 +36,7 @@ lp5521@32 {
        chan0 {
                led-cur = /bits/ 8 <0x2f>;
                max-cur = /bits/ 8 <0x5f>;
+               linux,default-trigger = "heartbeat";
        };
 
        chan1 {
index 351825b..075acf5 100644 (file)
@@ -165,6 +165,7 @@ static int lp55xx_init_led(struct lp55xx_led *led,
        led->led_current = pdata->led_config[chan].led_current;
        led->max_current = pdata->led_config[chan].max_current;
        led->chan_nr = pdata->led_config[chan].chan_nr;
+       led->cdev.default_trigger = pdata->led_config[chan].default_trigger;
 
        if (led->chan_nr >= max_channel) {
                dev_err(dev, "Use channel numbers between 0 and %d\n",
@@ -586,6 +587,8 @@ int lp55xx_of_populate_pdata(struct device *dev, struct device_node *np)
                of_property_read_string(child, "chan-name", &cfg[i].name);
                of_property_read_u8(child, "led-cur", &cfg[i].led_current);
                of_property_read_u8(child, "max-cur", &cfg[i].max_current);
+               cfg[i].default_trigger =
+                       of_get_property(child, "linux,default-trigger", NULL);
 
                i++;
        }
index 51a2ff5..c32de4d 100644 (file)
@@ -22,6 +22,7 @@
 
 struct lp55xx_led_config {
        const char *name;
+       const char *default_trigger;
        u8 chan_nr;
        u8 led_current; /* mA x10, 0 if led is not connected */
        u8 max_current;