mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 19:49:33 -04:00
Merge tag 'leds-next-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
Pull LED updates from Lee Jones:
"Core Frameworks:
- Ensure seldom updated triggers have a brightness value before first
update
New Device Support:
- Add support for Simatic IPC Device BX_59A to IPC LEDs Core
- Add support for Qualcomm PMI8950 PWM to LPG Core
New Functionality:
- Add a bunch of new LED function identifiers
- Add support for High Resolution Timers in LED Trigger Patten
Fix-ups:
- Shift out Audio Trigger to the Sound subsystem
- Convert suitable calls to devm_* managed resources
- Device Tree binding adaptions/conversions/creation
- Remove superfluous code/variables/attributes and simplify overall
- Use/convert to new/better APIs/helpers/MACROs instead of
hand-rolling implementations
Bug Fixes:
- Repair enabling Torch Mode from V4L2 on the second LED
- Ensure PWM is disabled when suspending"
* tag 'leds-next-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds: (28 commits)
leds: mt6370: Remove unused field 'reg_cfgs' from 'struct mt6370_priv'
leds: lp50xx: Remove unused field 'num_of_banked_leds' from 'struct lp50xx'
leds: lp50xx: Remove unused field 'bank_modules' from 'struct lp50xx_led'
leds: aat1290: Remove unused field 'torch_brightness' from 'struct aat1290_led'
leds: sun50i-a100: Use match_string() helper to simplify the code
leds: pwm: Disable PWM when going to suspend
leds: trigger: pattern: Add support for hrtimer
leds: mt6360: Fix the second LED can not enable torch mode by V4L2
dt-bindings: leds: leds-qcom-lpg: Add support for PMI8950 PWM
leds: qcom-lpg: Add support for PMI8950 PWM
leds: apu: Remove duplicate DMI lookup data
leds: trigger: netdev: Remove not needed call to led_set_brightness in deactivate
dt-bindings: leds: Add LED_FUNCTION_SPEED_* for link speed on LAN/WAN
dt-bindings: leds: Add LED_FUNCTION_MOBILE for mobile network
leds: simatic-ipc-leds-gpio: Add support for module BX-59A
dt-bindings: leds: qcom-lpg: Document PM6150L compatible
dt-bindings: leds: pca963x: Convert text bindings to YAML
leds: an30259a: Use devm_mutex_init() for mutex initialization
leds: mlxreg: Use devm_mutex_init() for mutex initialization
leds: nic78bx: Use devm API to cleanup module's resources
...
This commit is contained in:
@@ -91,11 +91,14 @@
|
||||
#define LED_FUNCTION_INDICATOR "indicator"
|
||||
#define LED_FUNCTION_LAN "lan"
|
||||
#define LED_FUNCTION_MAIL "mail"
|
||||
#define LED_FUNCTION_MOBILE "mobile"
|
||||
#define LED_FUNCTION_MTD "mtd"
|
||||
#define LED_FUNCTION_PANIC "panic"
|
||||
#define LED_FUNCTION_PROGRAMMING "programming"
|
||||
#define LED_FUNCTION_RX "rx"
|
||||
#define LED_FUNCTION_SD "sd"
|
||||
#define LED_FUNCTION_SPEED_LAN "speed-lan"
|
||||
#define LED_FUNCTION_SPEED_WAN "speed-wan"
|
||||
#define LED_FUNCTION_STANDBY "standby"
|
||||
#define LED_FUNCTION_TORCH "torch"
|
||||
#define LED_FUNCTION_TX "tx"
|
||||
|
||||
@@ -455,6 +455,9 @@ struct led_trigger {
|
||||
int (*activate)(struct led_classdev *led_cdev);
|
||||
void (*deactivate)(struct led_classdev *led_cdev);
|
||||
|
||||
/* Brightness set by led_trigger_event */
|
||||
enum led_brightness brightness;
|
||||
|
||||
/* LED-private triggers have this set */
|
||||
struct led_hw_trigger_type *trigger_type;
|
||||
|
||||
@@ -508,6 +511,12 @@ static inline void *led_get_trigger_data(struct led_classdev *led_cdev)
|
||||
return led_cdev->trigger_data;
|
||||
}
|
||||
|
||||
static inline enum led_brightness
|
||||
led_trigger_get_brightness(const struct led_trigger *trigger)
|
||||
{
|
||||
return trigger ? trigger->brightness : LED_OFF;
|
||||
}
|
||||
|
||||
#define module_led_trigger(__led_trigger) \
|
||||
module_driver(__led_trigger, led_trigger_register, \
|
||||
led_trigger_unregister)
|
||||
@@ -544,6 +553,12 @@ static inline void *led_get_trigger_data(struct led_classdev *led_cdev)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline enum led_brightness
|
||||
led_trigger_get_brightness(const struct led_trigger *trigger)
|
||||
{
|
||||
return LED_OFF;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_LEDS_TRIGGERS */
|
||||
|
||||
/* Trigger specific enum */
|
||||
@@ -690,18 +705,4 @@ enum led_audio {
|
||||
NUM_AUDIO_LEDS
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_LEDS_TRIGGER_AUDIO)
|
||||
enum led_brightness ledtrig_audio_get(enum led_audio type);
|
||||
void ledtrig_audio_set(enum led_audio type, enum led_brightness state);
|
||||
#else
|
||||
static inline enum led_brightness ledtrig_audio_get(enum led_audio type)
|
||||
{
|
||||
return LED_OFF;
|
||||
}
|
||||
static inline void ledtrig_audio_set(enum led_audio type,
|
||||
enum led_brightness state)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_LEDS_H_INCLUDED */
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/mutex_types.h>
|
||||
|
||||
struct device;
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
# define __DEP_MAP_MUTEX_INITIALIZER(lockname) \
|
||||
, .dep_map = { \
|
||||
@@ -117,6 +119,31 @@ do { \
|
||||
} while (0)
|
||||
#endif /* CONFIG_PREEMPT_RT */
|
||||
|
||||
#ifdef CONFIG_DEBUG_MUTEXES
|
||||
|
||||
int __devm_mutex_init(struct device *dev, struct mutex *lock);
|
||||
|
||||
#else
|
||||
|
||||
static inline int __devm_mutex_init(struct device *dev, struct mutex *lock)
|
||||
{
|
||||
/*
|
||||
* When CONFIG_DEBUG_MUTEXES is off mutex_destroy() is just a nop so
|
||||
* no really need to register it in the devm subsystem.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define devm_mutex_init(dev, mutex) \
|
||||
({ \
|
||||
typeof(mutex) mutex_ = (mutex); \
|
||||
\
|
||||
mutex_init(mutex_); \
|
||||
__devm_mutex_init(dev, mutex_); \
|
||||
})
|
||||
|
||||
/*
|
||||
* See kernel/locking/mutex.c for detailed documentation of these APIs.
|
||||
* Also see Documentation/locking/mutex-design.rst.
|
||||
|
||||
Reference in New Issue
Block a user