aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds
diff options
context:
space:
mode:
authorMilo Kim <milo.kim@ti.com>2013-11-21 01:14:34 -0500
committerBryan Wu <cooloney@gmail.com>2014-01-27 20:28:48 -0500
commit93ad8a1d59a35ef7b489a83552daee6506f47815 (patch)
tree06a2f03a7b613da719200780ff03e1c027ce5a90 /drivers/leds
parent28c9266b38a00a07497daad0237f7fa154652ece (diff)
leds: lp5523: Support LED MUX configuration on running a pattern
There are two ways to run a pattern in LP5523. One is using legacy sysfs files such as 'enginex_mode','enginex_load' and 'enginex_leds'. ('x' is from 1 to 3). Among them, 'enginex_leds' are used for selecting specific LED channel MUX. (MUX means which LEDs are used for running a pattern from LED 1 to 9.) The other way is using the firmware interface. In this mode, the default LED MUX strings are used. In other words, LED MUX is not configurable on the fly. This patch enables dynamic LED MUX configuration when the firmware is loaded. By accessing the sysfs file 'enginex_leds', the LED channels can be configured. To synchronize the operation mode, each engine mode should be set to 'LOAD'. The documentation is updated as well. Cc: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Milo Kim <milo.kim@ti.com> Signed-off-by: Bryan Wu <cooloney@gmail.com>
Diffstat (limited to 'drivers/leds')
-rw-r--r--drivers/leds/leds-lp55xx-common.c2
1 files changed, 2 insertions, 0 deletions
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);