filogic: Add LED driver for GCA230718
authorRoland Reinl <reinlroland+github@gmail.com>
Tue, 26 Dec 2023 07:31:15 +0000 (08:31 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Mon, 8 Jul 2024 20:51:11 +0000 (22:51 +0200)
commitc43900349752721feb83d002dd34c66bf99f94f8
tree83a97ad9b59ad15b2e3715174cbc39e8c24efbe4
parentcb2cda24e7fdcdd4850c5aec6c76416ce7f89491
filogic: Add LED driver for GCA230718

Add basic support for the LED driver for GCA230718.

 - I didn't find any documentation or driver for it, so the information below is purely based on my investigations
 - If there is already I driver for it, please tell me. Maybe I didn't search enough
 - I implemented a kernel module (leds-gca230718) to access the LEDs via DTS
 - The LED controller supports PWM for brightness control and ramp control for smooth blinking. This is not implemented in the driver
 - The LED controller supports toggling (on -> off -> on -> off) where the brightness of the LEDs can be set individually for each on cycle
 - Until now, only simple active/inactive control is implemented (like when the LEDs would have been connected via GPIO)
 - Controlling the LEDs requires three sequences sent to the chip. Each sequence consists of
   - A reset command (0x81 0xE4) written to register 0x00
   - A control command (for example 0x0C 0x02 0x01 0x00 0x00 0x00 0xFF 0x01 0x00 0x00 0x00 0xFF 0x87 written to register 0x03)
 - The reset command is always the same
 - In the control command
   - byte 0 is always the same
   - byte 1 (0x02 in the example above) must be changed in every sequence: 0x02 -> 0x01 -> 0x03)
   - byte 2 is set to 0x01 which disables toggling. 0x02 would be LED toggling without ramp control, 0x03 would be toggling with ramp control
   - byte 3 to 6 define the brightness values for the LEDs (R,G,B,W) for the first on cycle when toggling
   - byte 7 defines the toggling frequency (if toggling enabled)
   - byte 8 to 11 define the brightness values for the LEDs (R,G,B,W) for the second on cycle when toggling
   - byte 12 is constant 0x87

Signed-off-by: Roland Reinl <reinlroland+github@gmail.com>
(cherry picked from commit 0682974aa8da4855ca373d195cb6365913fc1f8e)
package/kernel/leds-gca230718/Makefile [new file with mode: 0644]
package/kernel/leds-gca230718/src/Makefile [new file with mode: 0644]
package/kernel/leds-gca230718/src/leds-gca230718.c [new file with mode: 0644]