Blame view
include/linux/leds.h
18.2 KB
d2912cb15 treewide: Replace... |
1 |
/* SPDX-License-Identifier: GPL-2.0-only */ |
c72a1d608 [PATCH] LED: add ... |
2 3 4 5 6 |
/* * Driver model for leds and led triggers * * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu> * Copyright (C) 2005 Richard Purdie <rpurdie@openedhand.com> |
c72a1d608 [PATCH] LED: add ... |
7 8 9 |
*/ #ifndef __LINUX_LEDS_H_INCLUDED #define __LINUX_LEDS_H_INCLUDED |
bb4e9af03 leds: core: Add s... |
10 |
#include <dt-bindings/leds/common.h> |
20f56758b leds: unify the l... |
11 |
#include <linux/device.h> |
0cb8eb30d leds: class: Add ... |
12 |
#include <linux/kernfs.h> |
af410fc13 [PATCH] make leds... |
13 |
#include <linux/list.h> |
acd899e4f leds: implement s... |
14 |
#include <linux/mutex.h> |
dc47206e5 leds: Fix led tri... |
15 |
#include <linux/rwsem.h> |
047133066 leds: Reorder inc... |
16 |
#include <linux/spinlock.h> |
9067359fa Revert "leds: con... |
17 |
#include <linux/timer.h> |
d23a22a74 leds: delay led_s... |
18 |
#include <linux/workqueue.h> |
af410fc13 [PATCH] make leds... |
19 |
|
c72a1d608 [PATCH] LED: add ... |
20 |
struct device; |
5fd752b6b leds: core: Intro... |
21 |
struct led_pattern; |
699a8c7c4 leds: Add of_led_... |
22 |
struct device_node; |
c72a1d608 [PATCH] LED: add ... |
23 24 25 |
/* * LED Core */ |
c7e4ea68c leds: old enums a... |
26 |
/* This is obsolete/useless. We now support variable maximum brightness. */ |
c72a1d608 [PATCH] LED: add ... |
27 |
enum led_brightness { |
fb5035dbb [PATCH] leds: re-... |
28 |
LED_OFF = 0, |
4e552c8cb leds: add LED_ON ... |
29 |
LED_ON = 1, |
fb5035dbb [PATCH] leds: re-... |
30 31 |
LED_HALF = 127, LED_FULL = 255, |
c72a1d608 [PATCH] LED: add ... |
32 |
}; |
b2b998c0f leds: class: Impr... |
33 34 35 |
struct led_init_data { /* device fwnode handle */ struct fwnode_handle *fwnode; |
bb4e9af03 leds: core: Add s... |
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* * default <color:function> tuple, for backward compatibility * with in-driver hard-coded LED names used as a fallback when * DT "label" property is absent; it should be set to NULL * in new LED class drivers. */ const char *default_label; /* * string to be used for devicename section of LED class device * either for label based LED name composition path or for fwnode * based when devname_mandatory is true */ const char *devicename; /* * indicates if LED name should always comprise devicename section; * only LEDs exposed by drivers of hot-pluggable devices should * set it to true */ bool devname_mandatory; |
b2b998c0f leds: class: Impr... |
55 |
}; |
93690cdf3 leds: trigger: ad... |
56 57 58 |
struct led_hw_trigger_type { int dummy; }; |
c72a1d608 [PATCH] LED: add ... |
59 |
struct led_classdev { |
fb5035dbb [PATCH] leds: re-... |
60 |
const char *name; |
d8082827d leds: make bright... |
61 62 |
enum led_brightness brightness; enum led_brightness max_brightness; |
fb5035dbb [PATCH] leds: re-... |
63 |
int flags; |
c72a1d608 [PATCH] LED: add ... |
64 |
|
859cb7f2a leds: Add suspend... |
65 |
/* Lower 16 bits reflect status */ |
55edd1dad leds: Replace fla... |
66 67 |
#define LED_SUSPENDED BIT(0) #define LED_UNREGISTERING BIT(1) |
859cb7f2a leds: Add suspend... |
68 |
/* Upper 16 bits reflect control information */ |
55edd1dad leds: Replace fla... |
69 70 71 72 73 74 75 |
#define LED_CORE_SUSPENDRESUME BIT(16) #define LED_SYSFS_DISABLE BIT(17) #define LED_DEV_CAP_FLASH BIT(18) #define LED_HW_PLUGGABLE BIT(19) #define LED_PANIC_INDICATOR BIT(20) #define LED_BRIGHT_HW_CHANGED BIT(21) #define LED_RETAIN_AT_SHUTDOWN BIT(22) |
02d31765b led: triggers: Ad... |
76 |
#define LED_INIT_DEFAULT_TRIGGER BIT(23) |
a9c6ce57e led: core: Use at... |
77 78 79 80 81 82 83 84 85 86 |
/* set_brightness_work / blink_timer flags, atomic, private. */ unsigned long work_flags; #define LED_BLINK_SW 0 #define LED_BLINK_ONESHOT 1 #define LED_BLINK_ONESHOT_STOP 2 #define LED_BLINK_INVERT 3 #define LED_BLINK_BRIGHTNESS_CHANGE 4 #define LED_BLINK_DISABLE 5 |
c72a1d608 [PATCH] LED: add ... |
87 |
|
70b2563b3 leds: core: fix m... |
88 89 90 91 |
/* Set LED brightness level * Must not sleep. Use brightness_set_blocking for drivers * that can sleep while setting brightness. */ |
fb5035dbb [PATCH] leds: re-... |
92 93 |
void (*brightness_set)(struct led_classdev *led_cdev, enum led_brightness brightness); |
4d71a4a12 leds: Add support... |
94 95 96 97 |
/* * Set LED brightness level immediately - it can block the caller for * the time required for accessing a LED device register. */ |
437a4240f leds: Rename brig... |
98 99 |
int (*brightness_set_blocking)(struct led_classdev *led_cdev, enum led_brightness brightness); |
29d76dfa2 leds: Add support... |
100 101 |
/* Get LED brightness level */ enum led_brightness (*brightness_get)(struct led_classdev *led_cdev); |
fb5035dbb [PATCH] leds: re-... |
102 |
|
5ada28bf7 led-class: always... |
103 104 105 106 107 |
/* * Activate hardware accelerated blink, delays are in milliseconds * and if both are zero then a sensible default should be chosen. * The call should adjust the timings in that case and if it can't * match the values specified exactly. |
7cfe749fa leds: core: Fix b... |
108 109 |
* Deactivate blinking again when the brightness is set to LED_OFF * via the brightness_set() callback. |
5ada28bf7 led-class: always... |
110 |
*/ |
4c79141d2 leds: Add support... |
111 112 113 |
int (*blink_set)(struct led_classdev *led_cdev, unsigned long *delay_on, unsigned long *delay_off); |
5fd752b6b leds: core: Intro... |
114 115 116 |
int (*pattern_set)(struct led_classdev *led_cdev, struct led_pattern *pattern, u32 len, int repeat); int (*pattern_clear)(struct led_classdev *led_cdev); |
f8a7c6fe1 leds: Convert fro... |
117 |
struct device *dev; |
d0d480cce leds: add led-cla... |
118 |
const struct attribute_group **groups; |
fb5035dbb [PATCH] leds: re-... |
119 |
struct list_head node; /* LED Device list */ |
781a54e76 leds: mark led_cl... |
120 |
const char *default_trigger; /* Trigger to use */ |
c72a1d608 [PATCH] LED: add ... |
121 |
|
5ada28bf7 led-class: always... |
122 |
unsigned long blink_delay_on, blink_delay_off; |
9067359fa Revert "leds: con... |
123 |
struct timer_list blink_timer; |
5ada28bf7 led-class: always... |
124 |
int blink_brightness; |
eb1610b4c led: core: Fix bl... |
125 |
int new_blink_brightness; |
7aea8389a leds: Add LED Fla... |
126 |
void (*flash_resume)(struct led_classdev *led_cdev); |
5ada28bf7 led-class: always... |
127 |
|
d23a22a74 leds: delay led_s... |
128 129 |
struct work_struct set_brightness_work; int delayed_set_value; |
c3bc9956e [PATCH] LED: add ... |
130 |
#ifdef CONFIG_LEDS_TRIGGERS |
c3bc9956e [PATCH] LED: add ... |
131 |
/* Protects the trigger data below */ |
dc47206e5 leds: Fix led tri... |
132 |
struct rw_semaphore trigger_lock; |
c3bc9956e [PATCH] LED: add ... |
133 |
|
fb5035dbb [PATCH] leds: re-... |
134 135 136 |
struct led_trigger *trigger; struct list_head trig_list; void *trigger_data; |
b00961824 leds: add new fie... |
137 138 |
/* true if activated - deactivate routine uses it to do cleanup */ bool activated; |
93690cdf3 leds: trigger: ad... |
139 140 141 |
/* LEDs that have private triggers have this set */ struct led_hw_trigger_type *trigger_type; |
c3bc9956e [PATCH] LED: add ... |
142 |
#endif |
acd899e4f leds: implement s... |
143 |
|
0cb8eb30d leds: class: Add ... |
144 145 146 147 |
#ifdef CONFIG_LEDS_BRIGHTNESS_HW_CHANGED int brightness_hw_changed; struct kernfs_node *brightness_hw_changed_kn; #endif |
acd899e4f leds: implement s... |
148 149 |
/* Ensures consistent access to the LED Flash Class device */ struct mutex led_access; |
c72a1d608 [PATCH] LED: add ... |
150 |
}; |
b2b998c0f leds: class: Impr... |
151 152 153 154 155 156 157 |
/** * led_classdev_register_ext - register a new object of LED class with * init data * @parent: LED controller device this LED is driven by * @led_cdev: the led_classdev structure for this device * @init_data: the LED class device initialization data * |
7c322056e leds: Replace {de... |
158 159 |
* Register a new object of LED class, with name derived from init_data. * |
b2b998c0f leds: class: Impr... |
160 161 |
* Returns: 0 on success or negative error value on failure */ |
ec28a8cfd leds: core: Remov... |
162 |
int led_classdev_register_ext(struct device *parent, |
b2b998c0f leds: class: Impr... |
163 164 |
struct led_classdev *led_cdev, struct led_init_data *init_data); |
7c322056e leds: Replace {de... |
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
/** * led_classdev_register - register a new object of LED class * @parent: LED controller device this LED is driven by * @led_cdev: the led_classdev structure for this device * * Register a new object of LED class, with name derived from the name property * of passed led_cdev argument. * * Returns: 0 on success or negative error value on failure */ static inline int led_classdev_register(struct device *parent, struct led_classdev *led_cdev) { return led_classdev_register_ext(parent, led_cdev, NULL); } |
ec28a8cfd leds: core: Remov... |
181 |
int devm_led_classdev_register_ext(struct device *parent, |
b2b998c0f leds: class: Impr... |
182 183 |
struct led_classdev *led_cdev, struct led_init_data *init_data); |
7c322056e leds: Replace {de... |
184 185 186 187 188 189 |
static inline int devm_led_classdev_register(struct device *parent, struct led_classdev *led_cdev) { return devm_led_classdev_register_ext(parent, led_cdev, NULL); } |
ec28a8cfd leds: core: Remov... |
190 191 192 193 194 |
void led_classdev_unregister(struct led_classdev *led_cdev); void devm_led_classdev_unregister(struct device *parent, struct led_classdev *led_cdev); void led_classdev_suspend(struct led_classdev *led_cdev); void led_classdev_resume(struct led_classdev *led_cdev); |
c72a1d608 [PATCH] LED: add ... |
195 |
|
699a8c7c4 leds: Add of_led_... |
196 197 |
extern struct led_classdev *of_led_get(struct device_node *np, int index); extern void led_put(struct led_classdev *led_cdev); |
e389240ad leds: Add managed... |
198 199 |
struct led_classdev *__must_check devm_of_led_get(struct device *dev, int index); |
699a8c7c4 leds: Add of_led_... |
200 |
|
5ada28bf7 led-class: always... |
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
/** * led_blink_set - set blinking with software fallback * @led_cdev: the LED to start blinking * @delay_on: the time it should be on (in ms) * @delay_off: the time it should ble off (in ms) * * This function makes the LED blink, attempting to use the * hardware acceleration if possible, but falling back to * software blinking if there is no hardware blinking or if * the LED refuses the passed values. * * Note that if software blinking is active, simply calling * led_cdev->brightness_set() will not stop the blinking, * use led_classdev_brightness_set() instead. */ |
ec28a8cfd leds: core: Remov... |
216 217 |
void led_blink_set(struct led_classdev *led_cdev, unsigned long *delay_on, unsigned long *delay_off); |
5ada28bf7 led-class: always... |
218 |
/** |
5bb629c50 leds: add oneshot... |
219 220 221 222 223 224 225 226 227 228 229 230 231 |
* led_blink_set_oneshot - do a oneshot software blink * @led_cdev: the LED to start blinking * @delay_on: the time it should be on (in ms) * @delay_off: the time it should ble off (in ms) * @invert: blink off, then on, leaving the led on * * This function makes the LED blink one time for delay_on + * delay_off time, ignoring the request if another one-shot * blink is already in progress. * * If invert is set, led blinks for delay_off first, then for * delay_on and leave the led on after the on-off cycle. */ |
ec28a8cfd leds: core: Remov... |
232 233 234 |
void led_blink_set_oneshot(struct led_classdev *led_cdev, unsigned long *delay_on, unsigned long *delay_off, int invert); |
5bb629c50 leds: add oneshot... |
235 |
/** |
19cd67e2d leds: Rename led_... |
236 |
* led_set_brightness - set LED brightness |
5ada28bf7 led-class: always... |
237 238 239 240 241 |
* @led_cdev: the LED to set * @brightness: the brightness to set it to * * Set an LED's brightness, and, if necessary, cancel the * software blink timer that implements blinking when the |
1afcadfcd leds: core: Use s... |
242 |
* hardware doesn't. This function is guaranteed not to sleep. |
5ada28bf7 led-class: always... |
243 |
*/ |
ec28a8cfd leds: core: Remov... |
244 245 |
void led_set_brightness(struct led_classdev *led_cdev, enum led_brightness brightness); |
13ae79bbe leds: core: Drive... |
246 247 248 249 |
/** * led_set_brightness_sync - set LED brightness synchronously * @led_cdev: the LED to set |
9cc93be7b leds: core: Fix l... |
250 |
* @value: the brightness to set it to |
13ae79bbe leds: core: Drive... |
251 252 253 254 255 256 257 |
* * Set an LED's brightness immediately. This function will block * the caller for the time required for accessing device registers, * and it can sleep. * * Returns: 0 on success or negative error value on failure */ |
ec28a8cfd leds: core: Remov... |
258 259 |
int led_set_brightness_sync(struct led_classdev *led_cdev, enum led_brightness value); |
13ae79bbe leds: core: Drive... |
260 |
|
3ef7de530 leds: Improve and... |
261 262 263 264 265 266 267 268 269 |
/** * led_update_brightness - update LED brightness * @led_cdev: the LED to query * * Get an LED's current brightness and update led_cdev->brightness * member with the obtained value. * * Returns: 0 on success or negative error value on failure */ |
ec28a8cfd leds: core: Remov... |
270 |
int led_update_brightness(struct led_classdev *led_cdev); |
5ada28bf7 led-class: always... |
271 |
|
acd899e4f leds: implement s... |
272 |
/** |
8e1f45612 leds: Add helper ... |
273 274 275 276 277 278 279 280 281 |
* led_get_default_pattern - return default pattern * * @led_cdev: the LED to get default pattern for * @size: pointer for storing the number of elements in returned array, * modified only if return != NULL * * Return: Allocated array of integers with default pattern from device tree * or NULL. Caller is responsible for kfree(). */ |
ec28a8cfd leds: core: Remov... |
282 |
u32 *led_get_default_pattern(struct led_classdev *led_cdev, unsigned int *size); |
8e1f45612 leds: Add helper ... |
283 284 |
/** |
acd899e4f leds: implement s... |
285 286 287 288 289 |
* led_sysfs_disable - disable LED sysfs interface * @led_cdev: the LED to set * * Disable the led_cdev's sysfs interface. */ |
ec28a8cfd leds: core: Remov... |
290 |
void led_sysfs_disable(struct led_classdev *led_cdev); |
acd899e4f leds: implement s... |
291 292 293 294 295 296 297 |
/** * led_sysfs_enable - enable LED sysfs interface * @led_cdev: the LED to set * * Enable the led_cdev's sysfs interface. */ |
ec28a8cfd leds: core: Remov... |
298 |
void led_sysfs_enable(struct led_classdev *led_cdev); |
acd899e4f leds: implement s... |
299 300 |
/** |
bb4e9af03 leds: core: Add s... |
301 302 |
* led_compose_name - compose LED class device name * @dev: LED controller device object |
9cc93be7b leds: core: Fix l... |
303 |
* @init_data: the LED class device initialization data |
bb4e9af03 leds: core: Add s... |
304 305 306 307 308 309 310 311 |
* @led_classdev_name: composed LED class device name * * Create LED class device name basing on the provided init_data argument. * The name can have <devicename:color:function> or <color:function>. * form, depending on the init_data configuration. * * Returns: 0 on success or negative error value on failure */ |
ec28a8cfd leds: core: Remov... |
312 313 |
int led_compose_name(struct device *dev, struct led_init_data *init_data, char *led_classdev_name); |
bb4e9af03 leds: core: Add s... |
314 315 |
/** |
acd899e4f leds: implement s... |
316 317 318 319 320 321 322 323 324 |
* led_sysfs_is_disabled - check if LED sysfs interface is disabled * @led_cdev: the LED to query * * Returns: true if the led_cdev's sysfs interface is disabled. */ static inline bool led_sysfs_is_disabled(struct led_classdev *led_cdev) { return led_cdev->flags & LED_SYSFS_DISABLE; } |
c3bc9956e [PATCH] LED: add ... |
325 326 327 |
/* * LED Triggers */ |
39f7e08af leds: trigger: us... |
328 329 330 |
/* Registration functions for simple triggers */ #define DEFINE_LED_TRIGGER(x) static struct led_trigger *x; #define DEFINE_LED_TRIGGER_GLOBAL(x) struct led_trigger *x; |
c3bc9956e [PATCH] LED: add ... |
331 332 333 334 335 336 |
#ifdef CONFIG_LEDS_TRIGGERS #define TRIG_NAME_MAX 50 struct led_trigger { /* Trigger Properties */ |
fb5035dbb [PATCH] leds: re-... |
337 |
const char *name; |
2282e125a leds: triggers: l... |
338 |
int (*activate)(struct led_classdev *led_cdev); |
fb5035dbb [PATCH] leds: re-... |
339 |
void (*deactivate)(struct led_classdev *led_cdev); |
c3bc9956e [PATCH] LED: add ... |
340 |
|
93690cdf3 leds: trigger: ad... |
341 342 |
/* LED-private triggers have this set */ struct led_hw_trigger_type *trigger_type; |
c3bc9956e [PATCH] LED: add ... |
343 |
/* LEDs under control by this trigger (for simple triggers) */ |
fb5035dbb [PATCH] leds: re-... |
344 345 |
rwlock_t leddev_list_lock; struct list_head led_cdevs; |
c3bc9956e [PATCH] LED: add ... |
346 347 |
/* Link to next registered trigger */ |
fb5035dbb [PATCH] leds: re-... |
348 |
struct list_head next_trig; |
a7e7a3156 leds: triggers: a... |
349 350 |
const struct attribute_group **groups; |
c3bc9956e [PATCH] LED: add ... |
351 |
}; |
a7e7a3156 leds: triggers: a... |
352 353 354 355 356 357 358 359 |
/* * Currently the attributes in struct led_trigger::groups are added directly to * the LED device. As this might change in the future, the following * macros abstract getting the LED device and its trigger_data from the dev * parameter passed to the attribute accessor functions. */ #define led_trigger_get_led(dev) ((struct led_classdev *)dev_get_drvdata((dev))) #define led_trigger_get_drvdata(dev) (led_get_trigger_data(led_trigger_get_led(dev))) |
c3bc9956e [PATCH] LED: add ... |
360 |
/* Registration functions for complex triggers */ |
ec28a8cfd leds: core: Remov... |
361 362 363 |
int led_trigger_register(struct led_trigger *trigger); void led_trigger_unregister(struct led_trigger *trigger); int devm_led_trigger_register(struct device *dev, |
9534cc31d leds: core: add m... |
364 |
struct led_trigger *trigger); |
c3bc9956e [PATCH] LED: add ... |
365 |
|
ec28a8cfd leds: core: Remov... |
366 |
void led_trigger_register_simple(const char *name, |
c3bc9956e [PATCH] LED: add ... |
367 |
struct led_trigger **trigger); |
ec28a8cfd leds: core: Remov... |
368 369 370 371 372 373 374 375 376 377 378 |
void led_trigger_unregister_simple(struct led_trigger *trigger); void led_trigger_event(struct led_trigger *trigger, enum led_brightness event); void led_trigger_blink(struct led_trigger *trigger, unsigned long *delay_on, unsigned long *delay_off); void led_trigger_blink_oneshot(struct led_trigger *trigger, unsigned long *delay_on, unsigned long *delay_off, int invert); void led_trigger_set_default(struct led_classdev *led_cdev); int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trigger); void led_trigger_remove(struct led_classdev *led_cdev); |
20f56758b leds: unify the l... |
379 |
|
9acc560de leds: triggers: n... |
380 381 382 383 384 |
static inline void led_set_trigger_data(struct led_classdev *led_cdev, void *trigger_data) { led_cdev->trigger_data = trigger_data; } |
20f56758b leds: unify the l... |
385 386 387 388 |
static inline void *led_get_trigger_data(struct led_classdev *led_cdev) { return led_cdev->trigger_data; } |
057407c73 led: Add dependen... |
389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 |
/** * led_trigger_rename_static - rename a trigger * @name: the new trigger name * @trig: the LED trigger to rename * * Change a LED trigger name by copying the string passed in * name into current trigger name, which MUST be large * enough for the new string. * * Note that name must NOT point to the same string used * during LED registration, as that could lead to races. * * This is meant to be used on triggers with statically * allocated name. */ |
ec28a8cfd leds: core: Remov... |
404 |
void led_trigger_rename_static(const char *name, struct led_trigger *trig); |
c3bc9956e [PATCH] LED: add ... |
405 |
|
a0b750768 leds: triggers: d... |
406 407 408 |
#define module_led_trigger(__led_trigger) \ module_driver(__led_trigger, led_trigger_register, \ led_trigger_unregister) |
c3bc9956e [PATCH] LED: add ... |
409 |
#else |
39f7e08af leds: trigger: us... |
410 411 |
/* Trigger has no members */ struct led_trigger {}; |
c3bc9956e [PATCH] LED: add ... |
412 |
|
39f7e08af leds: trigger: us... |
413 414 415 416 417 418 |
/* Trigger inline empty functions */ static inline void led_trigger_register_simple(const char *name, struct led_trigger **trigger) {} static inline void led_trigger_unregister_simple(struct led_trigger *trigger) {} static inline void led_trigger_event(struct led_trigger *trigger, enum led_brightness event) {} |
8890624a4 arcnet: com20020-... |
419 420 421 422 423 424 425 |
static inline void led_trigger_blink(struct led_trigger *trigger, unsigned long *delay_on, unsigned long *delay_off) {} static inline void led_trigger_blink_oneshot(struct led_trigger *trigger, unsigned long *delay_on, unsigned long *delay_off, int invert) {} |
20f56758b leds: unify the l... |
426 |
static inline void led_trigger_set_default(struct led_classdev *led_cdev) {} |
2282e125a leds: triggers: l... |
427 428 429 430 431 |
static inline int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trigger) { return 0; } |
20f56758b leds: unify the l... |
432 |
static inline void led_trigger_remove(struct led_classdev *led_cdev) {} |
9acc560de leds: triggers: n... |
433 |
static inline void led_set_trigger_data(struct led_classdev *led_cdev) {} |
20f56758b leds: unify the l... |
434 435 436 437 |
static inline void *led_get_trigger_data(struct led_classdev *led_cdev) { return NULL; } |
39f7e08af leds: trigger: us... |
438 |
#endif /* CONFIG_LEDS_TRIGGERS */ |
2bfb646cd [PATCH] LED: Add ... |
439 440 |
/* Trigger specific functions */ |
eb25cb995 leds: convert IDE... |
441 |
#ifdef CONFIG_LEDS_TRIGGER_DISK |
ec28a8cfd leds: core: Remov... |
442 |
void ledtrig_disk_activity(bool write); |
2bfb646cd [PATCH] LED: Add ... |
443 |
#else |
d1ed7c558 leds: Extends dis... |
444 |
static inline void ledtrig_disk_activity(bool write) {} |
2bfb646cd [PATCH] LED: Add ... |
445 |
#endif |
4b721174c leds: trigger: In... |
446 |
#ifdef CONFIG_LEDS_TRIGGER_MTD |
ec28a8cfd leds: core: Remov... |
447 |
void ledtrig_mtd_activity(void); |
4b721174c leds: trigger: In... |
448 449 450 |
#else static inline void ledtrig_mtd_activity(void) {} #endif |
48a1d032c leds: add camera ... |
451 |
#if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE) |
ec28a8cfd leds: core: Remov... |
452 453 |
void ledtrig_flash_ctrl(bool on); void ledtrig_torch_ctrl(bool on); |
48a1d032c leds: add camera ... |
454 455 456 457 |
#else static inline void ledtrig_flash_ctrl(bool on) {} static inline void ledtrig_torch_ctrl(bool on) {} #endif |
f46e9203d leds: Add support... |
458 459 460 461 462 |
/* * Generic LED platform data for describing LED names and default triggers. */ struct led_info { const char *name; |
326bb8a5a leds: Make defaul... |
463 |
const char *default_trigger; |
f46e9203d leds: Add support... |
464 465 466 467 468 469 470 |
int flags; }; struct led_platform_data { int num_leds; struct led_info *leds; }; |
bb4e9af03 leds: core: Add s... |
471 472 473 474 475 476 477 478 |
struct led_properties { u32 color; bool color_present; const char *function; u32 func_enum; bool func_enum_present; const char *label; }; |
68620e594 leds: gpio: intro... |
479 480 481 482 |
struct gpio_desc; typedef int (*gpio_blink_set_t)(struct gpio_desc *desc, int state, unsigned long *delay_on, unsigned long *delay_off); |
22e03f3b5 leds: Add generic... |
483 484 485 |
/* For the leds-gpio driver */ struct gpio_led { const char *name; |
326bb8a5a leds: Make defaul... |
486 |
const char *default_trigger; |
22e03f3b5 leds: Add generic... |
487 |
unsigned gpio; |
ed88bae69 leds: Add options... |
488 489 |
unsigned active_low : 1; unsigned retain_state_suspended : 1; |
80d6737b2 leds: gpio: Suppo... |
490 |
unsigned panic_indicator : 1; |
ed88bae69 leds: Add options... |
491 |
unsigned default_state : 2; |
f5808ac15 leds: gpio: Allow... |
492 |
unsigned retain_state_shutdown : 1; |
ed88bae69 leds: Add options... |
493 |
/* default_state should be one of LEDS_GPIO_DEFSTATE_(ON|OFF|KEEP) */ |
5c51277a9 leds: leds-gpio: ... |
494 |
struct gpio_desc *gpiod; |
22e03f3b5 leds: Add generic... |
495 |
}; |
2146325df leds: leds-gpio: ... |
496 497 498 |
#define LEDS_GPIO_DEFSTATE_OFF 0 #define LEDS_GPIO_DEFSTATE_ON 1 #define LEDS_GPIO_DEFSTATE_KEEP 2 |
22e03f3b5 leds: Add generic... |
499 500 501 |
struct gpio_led_platform_data { int num_leds; |
9517f925f leds: make *struc... |
502 |
const struct gpio_led *leds; |
2146325df leds: leds-gpio: ... |
503 504 505 |
#define GPIO_LED_NO_BLINK_LOW 0 /* No blink GPIO state low */ #define GPIO_LED_NO_BLINK_HIGH 1 /* No blink GPIO state high */ |
9517f925f leds: make *struc... |
506 |
#define GPIO_LED_BLINK 2 /* Please, blink */ |
68620e594 leds: gpio: intro... |
507 |
gpio_blink_set_t gpio_blink_set; |
22e03f3b5 leds: Add generic... |
508 |
}; |
fca23e47d leds: Add no-op g... |
509 |
#ifdef CONFIG_NEW_LEDS |
4440673a9 leds: provide hel... |
510 511 |
struct platform_device *gpio_led_register_device( int id, const struct gpio_led_platform_data *pdata); |
fca23e47d leds: Add no-op g... |
512 513 514 515 516 517 518 |
#else static inline struct platform_device *gpio_led_register_device( int id, const struct gpio_led_platform_data *pdata) { return 0; } #endif |
22e03f3b5 leds: Add generic... |
519 |
|
8f88731d0 led-triggers: cre... |
520 521 522 523 524 525 526 527 |
enum cpu_led_event { CPU_LED_IDLE_START, /* CPU enters idle */ CPU_LED_IDLE_END, /* CPU idle ends */ CPU_LED_START, /* Machine starts, especially resume */ CPU_LED_STOP, /* Machine stops, especially suspend */ CPU_LED_HALTED, /* Machine shutdown */ }; #ifdef CONFIG_LEDS_TRIGGER_CPU |
ec28a8cfd leds: core: Remov... |
528 |
void ledtrig_cpu(enum cpu_led_event evt); |
8f88731d0 led-triggers: cre... |
529 530 531 532 533 534 |
#else static inline void ledtrig_cpu(enum cpu_led_event evt) { return; } #endif |
0cb8eb30d leds: class: Add ... |
535 |
#ifdef CONFIG_LEDS_BRIGHTNESS_HW_CHANGED |
ec28a8cfd leds: core: Remov... |
536 |
void led_classdev_notify_brightness_hw_changed( |
0cb8eb30d leds: class: Add ... |
537 538 539 540 541 |
struct led_classdev *led_cdev, enum led_brightness brightness); #else static inline void led_classdev_notify_brightness_hw_changed( struct led_classdev *led_cdev, enum led_brightness brightness) { } #endif |
5fd752b6b leds: core: Intro... |
542 543 544 545 546 547 548 549 550 |
/** * struct led_pattern - pattern interval settings * @delta_t: pattern interval delay, in milliseconds * @brightness: pattern interval brightness */ struct led_pattern { u32 delta_t; int brightness; }; |
faa2541f5 leds: trigger: In... |
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 |
enum led_audio { LED_AUDIO_MUTE, /* master mute LED */ LED_AUDIO_MICMUTE, /* mic mute LED */ 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 |
c72a1d608 [PATCH] LED: add ... |
570 |
#endif /* __LINUX_LEDS_H_INCLUDED */ |