aboutsummaryrefslogtreecommitdiff
path: root/package/kernel/leds-gca230718/src/leds-gca230718.c
Commit message (Collapse)AuthorAge
* package: kernel: leds-gca230718: fix build with Linux 6.6Daniel Golle2024-04-12
| | | | | | | | | | | Starting with Linux 6.3 the .probe call no longer got the id parameter, see also commit torvalds/linux@03c835f498b5 ("i2c: Switch .probe() to not take an id parameter"). As the parameter is anyway unused by the driver, drop it when building the GCA230718 LED driver for newer kernels. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* filogic: Add LED driver for GCA230718Roland Reinl2024-03-31
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>