linux/drivers/leds
Milo(Woogyom) Kim 10c06d178d leds-lp55xx: support firmware interface
This patch provides additional device attributes which enable
 loading the firmware. ('select_engine' and 'run_engine')
 To run a LED pattern, two parts of driver should be enabled.

 Common features : lp55xx-common
 ===============================
 Firmware interface for loading LED patterns

 Chip specific features : leds-lp5521, leds-lp5523
 =================================================
 Register addresses for loading firmware data
 Register addresses for running selected engine

 Pattern programming sequence
 ============================
 LP55xx chips have three program engines.
 To load and run a LED pattern, the programming sequence is as follows.
 (1) Select an engine number (1/2/3)
 (2) Set engine mode to load
 (3) Write pattern data into selected area
 (4) Set engine mode to run

 This sequence is almost same as the firmware interface.
 (1) Select an engine number               : 'select_engine' dev attribute
 (2) Mode change to load                   : 'loading' of firmware class
 (3) Write pattern data into selected area : 'data' of firmware class
 (4) Mode change to run                    : 'run_engine' dev attribute

 (1) and (4) are device specific features which provide callback functions
 (2) and (3) are common features.

 For example,
 echo 1 or 2 or 3 > /sys/bus/i2c/devices/xxxx/select_engine
 echo 1 > /sys/class/firmware/lp5521/loading
 echo "4000600040FF6000" > /sys/class/firmware/lp5521/data
 echo 0 > /sys/class/firmware/lp5521/loading
 echo 1 > /sys/bus/i2c/devices/xxxx/run_engine

 As soon as 'loading' is set to 0, registered callback is called.
 Inside the callback, the selected engine is loaded and memory is updated.
 To run programmed pattern, 'run_engine' attribute should be enabled.

 Device specific data structure
 ==============================
 o Firmware callback
   load selected engine and update program memory
 o Run engine
   change the engine mode
 o 'engine_idx' and firmware data, 'fw'
   Those are used in the driver internally with callback functions

Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
2013-02-06 15:59:28 -08:00
..
dell-led.c drivers/leds: Add module.h to files using it implicitly 2011-10-31 19:31:49 -04:00
Kconfig leds-lp55xx: support firmware interface 2013-02-06 15:59:28 -08:00
led-class.c leds: led-class: Fix checkpatch warning 2012-11-27 14:49:25 -08:00
led-core.c leds: delay led_set_brightness if stopping soft-blink 2012-09-11 18:32:40 +08:00
led-triggers.c leds: led-triggers: Fix checkpatch warnings 2012-11-27 14:49:30 -08:00
leds-88pm860x.c leds: leds-88pm860x: drop devm_kfree of devm_kzalloc'd data 2012-11-26 14:28:49 -08:00
leds-adp5520.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-asic3.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-atmel-pwm.c leds: remove use of __devinit 2012-11-28 12:34:57 -08:00
leds-bd2802.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-blinkm.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-clevo-mail.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-cobalt-qube.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-cobalt-raq.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-da903x.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-da9052.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-dac124s085.c leds: convert DAC124S085 LED driver to devm_kzalloc() 2012-07-24 07:52:40 +08:00
leds-fsg.c leds: leds-fsg: use devm_ioremap 2012-11-26 14:28:45 -08:00
leds-gpio-register.c leds: provide helper to register "leds-gpio" devices 2011-05-25 08:39:51 -07:00
leds-gpio.c leds: leds-gpio: set devm_gpio_request_one() flags param correctly 2013-01-02 17:58:41 -08:00
leds-hp6xx.c leds: convert led platform drivers to module_platform_driver 2012-01-10 16:30:48 -08:00
leds-lm355x.c leds: lm355x: rename devAttr to avoid CamelCase 2013-02-01 17:47:06 -08:00
leds-lm3530.c leds: lm3530: Ensure drvdata->enable has correct status if regulator_disable fails 2013-02-01 17:47:06 -08:00
leds-lm3533.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-lm3642.c leds: lm3642: rename devAttr to avoid CamelCase 2013-02-01 17:47:06 -08:00
leds-locomo.c drivers/leds: Add module.h to files using it implicitly 2011-10-31 19:31:49 -04:00
leds-lp55xx-common.c leds-lp55xx: support firmware interface 2013-02-06 15:59:28 -08:00
leds-lp55xx-common.h leds-lp55xx: support firmware interface 2013-02-06 15:59:28 -08:00
leds-lp3944.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-lp5521.c leds-lp55xx: use lp55xx_unregister_leds() 2013-02-06 15:59:28 -08:00
leds-lp5523.c leds-lp55xx: use lp55xx_unregister_leds() 2013-02-06 15:59:28 -08:00
leds-lp8788.c leds-lp8788: fix a parent device in _probe() 2013-02-01 17:47:05 -08:00
leds-lt3593.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-max8997.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-mc13783.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-net48xx.c leds: leds-net48xx: Use linux/io.h instead of asm/io.h 2012-11-27 14:49:28 -08:00
leds-netxbig.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-ns2.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-ot200.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-pca955x.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-pca9532.c leds: pca9532: fix suspect code indent for conditional statements 2013-02-01 17:47:06 -08:00
leds-pca9633.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-pwm.c leds: leds-pwm: Add device tree bindings 2013-02-01 17:47:05 -08:00
leds-rb532.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2012-12-15 12:52:42 -08:00
leds-regulator.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-renesas-tpu.c leds: renesas-tpu: Improve the readability to pick the lowest acceptable rate 2013-02-01 17:47:06 -08:00
leds-s3c24xx.c ARM: samsung: move platform_data definitions 2012-09-19 17:42:18 +02:00
leds-ss4200.c leds: leds-ss4200: use DEFINE_PCI_DEVICE_TABLE 2013-02-01 17:47:06 -08:00
leds-sunfire.c leds: remove use of __devexit 2012-11-28 12:35:06 -08:00
leds-tca6507.c leds/tca6507: Add support for devicetree. 2013-02-01 17:47:04 -08:00
leds-wm831x-status.c leds: wm831x: add missing const 2013-02-01 17:47:06 -08:00
leds-wm8350.c leds: leds-wm8350: Use dev_err instead of printk 2012-11-27 14:49:29 -08:00
leds-wrap.c leds: leds-wrap: Use <linux/io.h> instead of <asm/io.h> 2012-11-27 14:49:30 -08:00
leds.h leds: delay led_set_brightness if stopping soft-blink 2012-09-11 18:32:40 +08:00
ledtrig-backlight.c leds: ledtrig-backlight: Fix checkpatch error 2012-11-27 14:49:30 -08:00
ledtrig-cpu.c ledtrig-cpu: kill useless mutex to fix sleep in atomic context 2012-11-11 12:09:43 -08:00
ledtrig-default-on.c leds: Rename led_set_brightness() to __led_set_brightness() 2012-07-24 07:52:34 +08:00
ledtrig-gpio.c leds: ledtrig-gpio: replace strict_strtoul() with kstrtoul() 2012-11-26 14:28:49 -08:00
ledtrig-heartbeat.c leds: Rename led_set_brightness() to __led_set_brightness() 2012-07-24 07:52:34 +08:00
ledtrig-ide-disk.c ledtrig-ide-disk: use generic one-shot blink api 2012-07-24 07:52:34 +08:00
ledtrig-oneshot.c leds: Rename led_brightness_set() to led_set_brightness() 2012-07-24 07:52:34 +08:00
ledtrig-timer.c leds: Rename led_brightness_set() to led_set_brightness() 2012-07-24 07:52:34 +08:00
ledtrig-transient.c leds: Rename led_set_brightness() to __led_set_brightness() 2012-07-24 07:52:34 +08:00
Makefile leds-lp55xx: add new common driver for lp5521/5523 2013-02-06 15:59:26 -08:00