diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2025-01-22 09:19:36 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2025-01-22 09:19:36 -0800 |
| commit | 11a7b03346e2ac4bf13783d409dd7ec0ecf1f3ac (patch) | |
| tree | 557c1aa470f58f7d50224389a26c1b89f9aeb8dc /drivers/platform | |
| parent | 909fd2b89f2edab8ec440a67dcf8627614e272b6 (diff) | |
| parent | daefd7fbd544671ad0b9c2a815d7f5e3d2f0365c (diff) | |
| download | linux-next-11a7b03346e2ac4bf13783d409dd7ec0ecf1f3ac.tar.gz linux-next-11a7b03346e2ac4bf13783d409dd7ec0ecf1f3ac.zip | |
Merge tag 'leds-next-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
Pull LED updates from Lee Jones:
- Allow struct bin_attribute instances to be placed in read-only memory
for enhanced protection
- Fix a memory leak in the cht-wcove driver by using
devm_led_classdev_register()
- Fix an OF node reference leak in the netxbig driver
- Ensure PWM is disabled properly in pwm-multicolor suspend
- Add support for Texas Instruments LP8864, LP8864S, LP8866
LED-backlight drivers
- Add support for STMicroelectronics's LED1202 12-channel LED driver
- Convert LP8860 bindings to YAML format
- Add bindings for the TI LP8864/LP8866 LED drivers
- Add LED1202 LED controller bindings
- Fix path to color definitions in leds-class-multicolor.yaml
- Add pm660l compatible to qcom,spmi-flash-led bindings
- Extend cznic,turris-omnia-leds binding with interrupts property
- Add documentation for the STMicroelectronics LED1202 driver
- Add entry for AAEON UP board FPGA drivers in MAINTAINERS
- Fix a wrong format specifier in the ledtrig-activity driver
- Fix a bug in the lp8860 driver where only half of the EEPROM was
written
* tag 'leds-next-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds: (28 commits)
leds: triggers: Constify 'struct bin_attribute'
leds: cht-wcove: Use devm_led_classdev_register() to avoid memory leak
leds: lp8864: Add support for Texas Instruments LP8864, LP8864S, LP8866 LED-backlights
dt-bindings: leds: Convert LP8860 into YAML format
leds: Add LED1202 I2C driver
dt-bindings: leds: Add LED1202 LED Controller
Documentation:leds: Add leds-st1202.rst
leds: pwm-multicolor: Disable PWM when going to suspend
leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata()
turris-omnia-mcu-interface.h: Move macro definitions outside of enums
MAINTAINERS: Add entry for AAEON UP board FPGA drivers
leds: Add AAEON UP board LED driver
leds: trigger: netdev: Check offload ability on interface up
leds: turris-omnia: Use uppercase first letter in all comments
leds: turris-omnia: Use dev_err_probe() where appropriate
leds: turris-omnia: Inform about missing LED gamma correction feature in the MCU driver
platform: cznic: turris-omnia-mcu: Inform about missing LED panel brightness change interrupt feature
leds: turris-omnia: Notify sysfs on MCU global LEDs brightness change
leds: turris-omnia: Document driver private structures
dt-bindings: leds: cznic,turris-omnia-leds: Allow interrupts property
...
Diffstat (limited to 'drivers/platform')
| -rw-r--r-- | drivers/platform/cznic/turris-omnia-mcu-base.c | 3 | ||||
| -rw-r--r-- | drivers/platform/cznic/turris-omnia-mcu.h | 130 |
2 files changed, 3 insertions, 130 deletions
diff --git a/drivers/platform/cznic/turris-omnia-mcu-base.c b/drivers/platform/cznic/turris-omnia-mcu-base.c index 58f9afae2867..770e680b96f9 100644 --- a/drivers/platform/cznic/turris-omnia-mcu-base.c +++ b/drivers/platform/cznic/turris-omnia-mcu-base.c @@ -52,6 +52,7 @@ int omnia_cmd_write_read(const struct i2c_client *client, return 0; } +EXPORT_SYMBOL_GPL(omnia_cmd_write_read); static int omnia_get_version_hash(struct omnia_mcu *mcu, bool bootloader, char version[static OMNIA_FW_VERSION_HEX_LEN]) @@ -257,6 +258,8 @@ static int omnia_mcu_read_features(struct omnia_mcu *mcu) _DEF_FEAT(NEW_INT_API, "new interrupt API"), _DEF_FEAT(POWEROFF_WAKEUP, "poweroff and wakeup"), _DEF_FEAT(TRNG, "true random number generator"), + _DEF_FEAT(BRIGHTNESS_INT, "LED panel brightness change interrupt"), + _DEF_FEAT(LED_GAMMA_CORRECTION, "LED gamma correction"), #undef _DEF_FEAT }; struct i2c_client *client = mcu->client; diff --git a/drivers/platform/cznic/turris-omnia-mcu.h b/drivers/platform/cznic/turris-omnia-mcu.h index 2b13e28ee323..088541be3f4c 100644 --- a/drivers/platform/cznic/turris-omnia-mcu.h +++ b/drivers/platform/cznic/turris-omnia-mcu.h @@ -8,7 +8,6 @@ #ifndef __TURRIS_OMNIA_MCU_H #define __TURRIS_OMNIA_MCU_H -#include <linux/bitops.h> #include <linux/completion.h> #include <linux/gpio/driver.h> #include <linux/hw_random.h> @@ -17,8 +16,6 @@ #include <linux/types.h> #include <linux/watchdog.h> #include <linux/workqueue.h> -#include <asm/byteorder.h> -#include <linux/unaligned.h> struct i2c_client; struct rtc_device; @@ -93,133 +90,6 @@ struct omnia_mcu { #endif }; -int omnia_cmd_write_read(const struct i2c_client *client, - void *cmd, unsigned int cmd_len, - void *reply, unsigned int reply_len); - -static inline int omnia_cmd_write(const struct i2c_client *client, void *cmd, - unsigned int len) -{ - return omnia_cmd_write_read(client, cmd, len, NULL, 0); -} - -static inline int omnia_cmd_write_u8(const struct i2c_client *client, u8 cmd, - u8 val) -{ - u8 buf[2] = { cmd, val }; - - return omnia_cmd_write(client, buf, sizeof(buf)); -} - -static inline int omnia_cmd_write_u16(const struct i2c_client *client, u8 cmd, - u16 val) -{ - u8 buf[3]; - - buf[0] = cmd; - put_unaligned_le16(val, &buf[1]); - - return omnia_cmd_write(client, buf, sizeof(buf)); -} - -static inline int omnia_cmd_write_u32(const struct i2c_client *client, u8 cmd, - u32 val) -{ - u8 buf[5]; - - buf[0] = cmd; - put_unaligned_le32(val, &buf[1]); - - return omnia_cmd_write(client, buf, sizeof(buf)); -} - -static inline int omnia_cmd_read(const struct i2c_client *client, u8 cmd, - void *reply, unsigned int len) -{ - return omnia_cmd_write_read(client, &cmd, 1, reply, len); -} - -static inline unsigned int -omnia_compute_reply_length(unsigned long mask, bool interleaved, - unsigned int offset) -{ - if (!mask) - return 0; - - return ((__fls(mask) >> 3) << interleaved) + 1 + offset; -} - -/* Returns 0 on success */ -static inline int omnia_cmd_read_bits(const struct i2c_client *client, u8 cmd, - unsigned long bits, unsigned long *dst) -{ - __le32 reply; - int err; - - if (!bits) { - *dst = 0; - return 0; - } - - err = omnia_cmd_read(client, cmd, &reply, - omnia_compute_reply_length(bits, false, 0)); - if (err) - return err; - - *dst = le32_to_cpu(reply) & bits; - - return 0; -} - -static inline int omnia_cmd_read_bit(const struct i2c_client *client, u8 cmd, - unsigned long bit) -{ - unsigned long reply; - int err; - - err = omnia_cmd_read_bits(client, cmd, bit, &reply); - if (err) - return err; - - return !!reply; -} - -static inline int omnia_cmd_read_u32(const struct i2c_client *client, u8 cmd, - u32 *dst) -{ - __le32 reply; - int err; - - err = omnia_cmd_read(client, cmd, &reply, sizeof(reply)); - if (err) - return err; - - *dst = le32_to_cpu(reply); - - return 0; -} - -static inline int omnia_cmd_read_u16(const struct i2c_client *client, u8 cmd, - u16 *dst) -{ - __le16 reply; - int err; - - err = omnia_cmd_read(client, cmd, &reply, sizeof(reply)); - if (err) - return err; - - *dst = le16_to_cpu(reply); - - return 0; -} - -static inline int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd, - u8 *reply) -{ - return omnia_cmd_read(client, cmd, reply, sizeof(*reply)); -} - #ifdef CONFIG_TURRIS_OMNIA_MCU_GPIO extern const u8 omnia_int_to_gpio_idx[32]; extern const struct attribute_group omnia_mcu_gpio_group; |
