diff options
-rw-r--r-- | Documentation/leds/leds-lp55xx.txt | 10 | ||||
-rw-r--r-- | drivers/leds/leds-lp55xx-common.c | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/Documentation/leds/leds-lp55xx.txt b/Documentation/leds/leds-lp55xx.txt index 82713ff92eb3..bcea12a0c584 100644 --- a/Documentation/leds/leds-lp55xx.txt +++ b/Documentation/leds/leds-lp55xx.txt | |||
@@ -73,6 +73,10 @@ select_engine : Select which engine is used for running program | |||
73 | run_engine : Start program which is loaded via the firmware interface | 73 | run_engine : Start program which is loaded via the firmware interface |
74 | firmware : Load program data | 74 | firmware : Load program data |
75 | 75 | ||
76 | In case of LP5523, one more command is required, 'enginex_leds'. | ||
77 | It is used for selecting LED output(s) at each engine number. | ||
78 | In more details, please refer to 'leds-lp5523.txt'. | ||
79 | |||
76 | For example, run blinking pattern in engine #1 of LP5521 | 80 | For example, run blinking pattern in engine #1 of LP5521 |
77 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine | 81 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine |
78 | echo 1 > /sys/class/firmware/lp5521/loading | 82 | echo 1 > /sys/class/firmware/lp5521/loading |
@@ -81,10 +85,12 @@ echo 0 > /sys/class/firmware/lp5521/loading | |||
81 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | 85 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine |
82 | 86 | ||
83 | For example, run blinking pattern in engine #3 of LP55231 | 87 | For example, run blinking pattern in engine #3 of LP55231 |
88 | Two LEDs are configured as pattern output channels. | ||
84 | echo 3 > /sys/bus/i2c/devices/xxxx/select_engine | 89 | echo 3 > /sys/bus/i2c/devices/xxxx/select_engine |
85 | echo 1 > /sys/class/firmware/lp55231/loading | 90 | echo 1 > /sys/class/firmware/lp55231/loading |
86 | echo "9d0740ff7e0040007e00a0010000" > /sys/class/firmware/lp55231/data | 91 | echo "9d0740ff7e0040007e00a0010000" > /sys/class/firmware/lp55231/data |
87 | echo 0 > /sys/class/firmware/lp55231/loading | 92 | echo 0 > /sys/class/firmware/lp55231/loading |
93 | echo "000001100" > /sys/bus/i2c/devices/xxxx/engine3_leds | ||
88 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | 94 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine |
89 | 95 | ||
90 | To start blinking patterns in engine #2 and #3 simultaneously, | 96 | To start blinking patterns in engine #2 and #3 simultaneously, |
@@ -99,17 +105,19 @@ done | |||
99 | echo 1 > /sys/class/leds/red/device/run_engine | 105 | echo 1 > /sys/class/leds/red/device/run_engine |
100 | 106 | ||
101 | Here is another example for LP5523. | 107 | Here is another example for LP5523. |
108 | Full LED strings are selected by 'engine2_leds'. | ||
102 | echo 2 > /sys/bus/i2c/devices/xxxx/select_engine | 109 | echo 2 > /sys/bus/i2c/devices/xxxx/select_engine |
103 | echo 1 > /sys/class/firmware/lp5523/loading | 110 | echo 1 > /sys/class/firmware/lp5523/loading |
104 | echo "9d80400004ff05ff437f0000" > /sys/class/firmware/lp5523/data | 111 | echo "9d80400004ff05ff437f0000" > /sys/class/firmware/lp5523/data |
105 | echo 0 > /sys/class/firmware/lp5523/loading | 112 | echo 0 > /sys/class/firmware/lp5523/loading |
113 | echo "111111111" > /sys/bus/i2c/devices/xxxx/engine2_leds | ||
106 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | 114 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine |
107 | 115 | ||
108 | As soon as 'loading' is set to 0, registered callback is called. | 116 | As soon as 'loading' is set to 0, registered callback is called. |
109 | Inside the callback, the selected engine is loaded and memory is updated. | 117 | Inside the callback, the selected engine is loaded and memory is updated. |
110 | To run programmed pattern, 'run_engine' attribute should be enabled. | 118 | To run programmed pattern, 'run_engine' attribute should be enabled. |
111 | 119 | ||
112 | The pattern sqeuence of LP8501 is same as LP5523. | 120 | The pattern sqeuence of LP8501 is similar to LP5523. |
113 | However pattern data is specific. | 121 | However pattern data is specific. |
114 | Ex 1) Engine 1 is used | 122 | Ex 1) Engine 1 is used |
115 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine | 123 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine |
diff --git a/drivers/leds/leds-lp55xx-common.c b/drivers/leds/leds-lp55xx-common.c index 9acc6bb7deef..88317b4f7bf3 100644 --- a/drivers/leds/leds-lp55xx-common.c +++ b/drivers/leds/leds-lp55xx-common.c | |||
@@ -210,6 +210,7 @@ static void lp55xx_firmware_loaded(const struct firmware *fw, void *context) | |||
210 | { | 210 | { |
211 | struct lp55xx_chip *chip = context; | 211 | struct lp55xx_chip *chip = context; |
212 | struct device *dev = &chip->cl->dev; | 212 | struct device *dev = &chip->cl->dev; |
213 | enum lp55xx_engine_index idx = chip->engine_idx; | ||
213 | 214 | ||
214 | if (!fw) { | 215 | if (!fw) { |
215 | dev_err(dev, "firmware request failed\n"); | 216 | dev_err(dev, "firmware request failed\n"); |
@@ -219,6 +220,7 @@ static void lp55xx_firmware_loaded(const struct firmware *fw, void *context) | |||
219 | /* handling firmware data is chip dependent */ | 220 | /* handling firmware data is chip dependent */ |
220 | mutex_lock(&chip->lock); | 221 | mutex_lock(&chip->lock); |
221 | 222 | ||
223 | chip->engines[idx - 1].mode = LP55XX_ENGINE_LOAD; | ||
222 | chip->fw = fw; | 224 | chip->fw = fw; |
223 | if (chip->cfg->firmware_cb) | 225 | if (chip->cfg->firmware_cb) |
224 | chip->cfg->firmware_cb(chip); | 226 | chip->cfg->firmware_cb(chip); |