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 a61727f9a6d171df79a83774b75a1462fea48865..d221e75d90fa86ebbfdb562e33180e390f58ae35 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 351825b96f16b534923b36d97e5fd0ccaacbdf6c..075acf5b9fab7ba668c3d88f236730c209835ae6 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 51a2ff579d60d1763ddd465ac5bf4457272bfb19..c32de4dcec54d12daabf5cb46c7971baeb8d335c 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;
This page took 0.027729 seconds and 5 git commands to generate.