OpenCloudOS-Kernel/drivers
David Rivshin 9d7cffaf99 leds: Add driver for the ISSI IS31FL32xx family of LED controllers
The IS31FL32xx family of LED controllers are I2C devices with multiple
constant-current channels, each with independent 256-level PWM control.

Datasheets: http://www.issi.com/US/product-analog-fxled-driver.shtml

This has been tested on the IS31FL3236 and IS31FL3216, on an ARM
(TI am335x) platform.

The programming paradigm of these devices is similar in the following
ways:
 - All registers are 8 bit
 - All LED control registers are write-only
 - Each LED channel has a PWM register (0-255)
 - PWM register writes are shadowed until an Update register is poked
 - All have a concept of Software Shutdown, which disables output

However, there are some differences in devices:
 - 3236/3235 have a separate Control register for each LED,
   (3218/3216 pack the enable bits into fewer registers)
 - 3236/3235 have a per-channel current divisor setting
 - 3236/3235 have a Global Control register that can turn off all LEDs
 - 3216 is unique in a number of ways
    - OUT9-OUT16 can be configured as GPIOs instead of LED controls
    - LEDs can be programmed with an 8-frame animation, with
      programmable delay between frames
    - LEDs can be modulated by an input audio signal
    - Max output current can be adjusted from 1/4 to 2x globally
    - Has a Configuration register instead of a Shutdown register

This driver currently only supports the base PWM control function
of these devices. The following features of these devices are not
implemented, although it should be possible to add them in the future:
 - All devices are capable of going into a lower-power "software
   shutdown" mode.
 - The is31fl3236 and is31fl3235 can reduce the max output current
   per-channel with a divisor of 1, 2, 3, or 4.
 - The is31fl3216 can use some LED channels as GPIOs instead.
 - The is31fl3216 can animate LEDs in hardware.
 - The is31fl3216 can modulate LEDs according to an audio input.
 - The is31fl3216 can reduce/increase max output current globally.

Signed-off-by: David Rivshin <drivshin@allworx.com>
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
2016-03-14 09:22:21 +01:00
..
accessibility
acpi ACPICA: Revert "Parser: Fix for SuperName method invocation" 2016-03-08 22:58:38 +01:00
amba
android drivers: android: correct the size of struct binder_uintptr_t for BC_DEAD_BINDER_DONE 2016-02-20 15:43:56 -08:00
ata ata: ahci: don't mark HotPlugCapable Ports as external/removable 2016-02-29 16:17:57 -05:00
atm atm: solos-pci: use to_pci_dev() 2015-12-29 15:32:24 -05:00
auxdisplay
base device property: fwnode->secondary may contain ERR_PTR(-ENODEV) 2016-03-09 01:07:43 +01:00
bcma GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
block null_blk: oops when initializing without lightnvm 2016-02-11 08:56:09 -07:00
bluetooth Bluetooth: btmrvl: don't send data to firmware while processing suspend 2016-01-06 16:37:14 +01:00
bus vexpress fixes for v4.5 2016-02-01 12:27:18 -08:00
cdrom cdrom: don't open-code memdup_user() 2016-01-06 08:25:24 -05:00
char drivers: char: random: add get_random_long() 2016-02-27 10:28:52 -08:00
clk clk: ti: omap3+: dpll: use non-locking version of clk_get_rate 2016-02-22 14:03:02 -08:00
clocksource Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-31 15:49:06 -08:00
connector connector: bump skb->users before callback invocation 2016-01-04 21:46:45 -05:00
cpufreq cpufreq: mediatek: allow building as a module 2016-03-01 02:43:05 +01:00
cpuidle Merge branches 'pm-cpuidle', 'pm-cpufreq', 'pm-domains' and 'pm-sleep' 2016-01-29 21:45:17 +01:00
crypto crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init() 2016-02-06 15:23:56 +08:00
dca
devfreq PM / devfreq: tegra: Set freq in rate callback 2016-02-23 14:27:42 +09:00
dio
dma dmaengine: at_xdmac: fix residue computation 2016-03-10 16:32:36 +05:30
dma-buf
edac EDAC, sb_edac: Fix logic when computing DIMM sizes on Xeon Phi 2016-03-07 19:07:40 +01:00
eisa
extcon
firewire
firmware efi: Add pstore variables to the deletion whitelist 2016-02-16 12:48:18 +00:00
fmc
fpga
gpio gpio: rcar: Add Runtime PM handling for interrupts 2016-02-25 15:46:27 +01:00
gpu Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux 2016-03-11 16:19:23 -08:00
hid asm-generic changes for 4.5 2016-01-20 17:30:20 -08:00
hsi HSI: omap_ssi_port: fix handling of_get_named_gpio result 2016-01-07 16:07:54 +01:00
hv char/misc patches for 4.5-rc1 2016-01-13 10:23:36 -08:00
hwmon hwmon: (gpio-fan) Remove un-necessary speed_index lookup for thermal hook 2016-02-19 17:14:25 -08:00
hwspinlock drivers/hwspinlock: fix race between radix tree insertion and lookup 2016-02-03 08:28:43 -08:00
hwtracing
i2c i2c: brcmstb: allocate correct amount of memory for regmap 2016-03-01 19:16:45 +01:00
ide drivers/ide: make ide-scan-pci.c driver explicitly non-modular 2016-01-18 14:12:33 -05:00
idle
iio Second set of IIO fixes for the 4.5 cycle. These ones are mostly 2016-02-01 13:08:26 -08:00
infiniband Additional 4.5-rc6 fixes 2016-03-04 18:06:49 -08:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-02-10 12:21:57 -08:00
iommu iommu/vt-d: Use BUS_NOTIFY_REMOVED_DEVICE in hotplug path 2016-02-29 23:55:16 +01:00
ipack
irqchip irqchip/gicv3-its: Avoid cache flush beyond ITS_BASERn memory size 2016-02-17 17:39:05 +00:00
isdn ser_gigaset: use container_of() instead of detour 2016-02-19 15:52:41 -05:00
leds leds: Add driver for the ISSI IS31FL32xx family of LED controllers 2016-03-14 09:22:21 +01:00
lguest lguest: Map switcher text R/O 2016-01-12 12:17:28 +01:00
lightnvm lightnvm: allow to force mm initialization 2016-02-04 09:19:45 -07:00
macintosh
mailbox mailbox: Fix dependencies for !HAS_IOMEM archs 2016-02-02 16:47:14 +05:30
mcb
md dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq paths 2016-02-21 20:27:50 -05:00
media [media] media-device: map new functions into old types for legacy API 2016-03-10 15:10:59 -03:00
memory ARM: SoC driver updates for v4.5 2016-01-20 18:42:30 -08:00
memstick memstick: use sector_div instead of do_div 2016-01-20 17:09:18 -08:00
message
mfd thermal: allow u8500-thermal driver to be a module 2016-02-09 14:18:23 -08:00
misc powerpc fixes for 4.5 #4 2016-03-06 11:08:06 -08:00
mmc mmc: omap_hsmmc: Fix PM regression with deferred probe for pm_runtime_reinit 2016-02-15 14:10:48 +01:00
mtd Late MTD fix for v4.5: 2016-03-11 16:34:18 -08:00
net ppp: release rtnl mutex when interface creation fails 2016-03-07 16:11:31 -05:00
nfc nfc: pn544: Remove i2c client gpio irq configuration 2015-12-29 19:06:23 +01:00
ntb NTB: Fix macro parameter conflict with field name 2016-01-21 19:53:10 -05:00
nubus
nvdimm nvdimm: use 'u64' for pfn flags 2016-02-23 17:17:20 -08:00
nvme nvme: fix max_segments integer truncation 2016-03-03 14:43:10 -07:00
nvmem nvmem: qfprom: Specify LE device endianness 2016-02-07 23:09:13 -08:00
of of_mdio: fix kernel-doc for of_phy_connect() 2016-03-01 17:41:40 -05:00
oprofile wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
parisc parisc: convert to dma_map_ops 2016-01-20 17:09:18 -08:00
parport parport: avoid assignment in if 2016-01-03 16:32:59 -08:00
pci PCI updates for v4.5: 2016-03-09 13:28:27 -08:00
pcmcia
perf
phy phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload 2016-02-10 11:46:01 +05:30
pinctrl pinctrl: samsung: fix SMP race condition 2016-02-15 20:45:50 +01:00
platform intel_scu_ipcutil: underflow in scu_reg_access() 2016-01-30 09:40:35 -08:00
pnp PNP: Add Haswell-ULT to Intel MCH size workaround 2016-02-03 01:00:29 +01:00
power power: bq27xxx_battery: Restore device name 2016-02-21 20:49:34 +01:00
powercap Merge branch 'powercap' 2016-01-12 01:12:40 +01:00
pps
ps3
ptp ptp: ixp46x: use helpers for converting ns to timespec 2016-01-29 12:38:59 -08:00
pwm pwm: Mark all devices as "might sleep" 2016-01-21 15:04:59 +01:00
rapidio rapidio: use kobj_to_dev() 2016-01-20 17:09:18 -08:00
ras
regulator regulator: Update for v4.5 2016-01-15 12:14:47 -08:00
remoteproc virtio: make find_vqs() checkpatch.pl-friendly 2016-01-12 20:47:06 +02:00
reset
rpmsg virtio: make find_vqs() checkpatch.pl-friendly 2016-01-12 20:47:06 +02:00
rtc RTC for 4.5 2016-01-18 12:10:45 -08:00
s390 s390/dasd: fix diag 0x250 inline assembly 2016-03-02 06:43:48 -06:00
sbus convert a bunch of open-coded instances of memdup_user_nul() 2016-01-04 10:26:58 -05:00
scsi ipr: Fix regression when loading firmware 2016-02-26 17:26:02 -05:00
sfi
sh drivers: sh: Restore legacy clock domain on SuperH platforms 2016-02-25 09:05:19 +09:00
sn
soc ARM: SoC support for Tegra platforms for v4.5 2016-01-22 17:30:52 -08:00
spi Merge remote-tracking branch 'spi/fix/rockchip' into spi-linus 2016-03-10 10:42:24 +07:00
spmi
ssb ssb: host_soc depends on sprom 2016-02-26 12:47:32 +02:00
staging media fixes for v4.5-rc7 2016-03-05 12:32:34 -08:00
target target: Drop incorrect ABORT_TASK put for completed commands 2016-03-05 20:24:47 -08:00
tc
thermal thermal: cpu_cooling: fix out of bounds access in time_in_idle 2016-02-11 07:13:29 -08:00
thunderbolt
tty Revert "8250: uniphier: allow modular build with 8250 console" 2016-02-07 18:22:54 -08:00
uio
usb USB-serial fixes for v4.5-rc7 2016-03-03 12:37:21 -08:00
uwb
vfio vfio: fix ioctl error handling 2016-02-28 07:38:52 -07:00
vhost vhost: fix error path in vhost_init_used() 2016-03-02 17:01:49 +02:00
video fbcon: set a default value to blink interval 2016-02-26 13:19:55 +02:00
virt
virtio virtio-pci: read the right virtio_pci_notify_cap field 2016-03-02 17:01:49 +02:00
vlynq
vme
w1
watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc 2016-03-01 08:57:34 -08:00
xen Xen bug fixes for 4.5-rc5 2016-02-22 13:57:01 -08:00
zorro
Kconfig
Makefile