]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
5917112c SG |
2 | /* |
3 | * Copyright (c) 2015 Google, Inc | |
4 | * Written by Simon Glass <[email protected]> | |
5917112c SG |
5 | */ |
6 | ||
7 | #ifndef __LED_H | |
8 | #define __LED_H | |
9 | ||
10 | /** | |
56e19871 | 11 | * struct led_uc_plat - Platform data the uclass stores about each device |
5917112c SG |
12 | * |
13 | * @label: LED label | |
14 | */ | |
56e19871 | 15 | struct led_uc_plat { |
5917112c SG |
16 | const char *label; |
17 | }; | |
18 | ||
53378dac SG |
19 | /** |
20 | * struct led_uc_priv - Private data the uclass stores about each device | |
21 | * | |
22 | * @period_ms: Flash period in milliseconds | |
23 | */ | |
24 | struct led_uc_priv { | |
25 | int period_ms; | |
26 | }; | |
27 | ||
ddae9fcd SG |
28 | enum led_state_t { |
29 | LEDST_OFF = 0, | |
30 | LEDST_ON = 1, | |
9413ad4f | 31 | LEDST_TOGGLE, |
53378dac SG |
32 | #ifdef CONFIG_LED_BLINK |
33 | LEDST_BLINK, | |
34 | #endif | |
ddae9fcd SG |
35 | |
36 | LEDST_COUNT, | |
37 | }; | |
38 | ||
5917112c SG |
39 | struct led_ops { |
40 | /** | |
ddae9fcd | 41 | * set_state() - set the state of an LED |
5917112c SG |
42 | * |
43 | * @dev: LED device to change | |
ddae9fcd | 44 | * @state: LED state to set |
5917112c SG |
45 | * @return 0 if OK, -ve on error |
46 | */ | |
ddae9fcd | 47 | int (*set_state)(struct udevice *dev, enum led_state_t state); |
8f4b6123 SG |
48 | |
49 | /** | |
50 | * led_get_state() - get the state of an LED | |
51 | * | |
52 | * @dev: LED device to change | |
53 | * @return LED state led_state_t, or -ve on error | |
54 | */ | |
55 | enum led_state_t (*get_state)(struct udevice *dev); | |
53378dac SG |
56 | |
57 | #ifdef CONFIG_LED_BLINK | |
58 | /** | |
59 | * led_set_period() - set the blink period of an LED | |
60 | * | |
61 | * Thie records the period if supported, or returns -ENOSYS if not. | |
62 | * To start the LED blinking, use set_state(). | |
63 | * | |
64 | * @dev: LED device to change | |
65 | * @period_ms: LED blink period in milliseconds | |
66 | * @return 0 if OK, -ve on error | |
67 | */ | |
68 | int (*set_period)(struct udevice *dev, int period_ms); | |
69 | #endif | |
5917112c SG |
70 | }; |
71 | ||
72 | #define led_get_ops(dev) ((struct led_ops *)(dev)->driver->ops) | |
73 | ||
74 | /** | |
75 | * led_get_by_label() - Find an LED device by label | |
76 | * | |
77 | * @label: LED label to look up | |
78 | * @devp: Returns the associated device, if found | |
fb8a5ffc | 79 | * @return 0 if found, -ENODEV if not found, other -ve on error |
5917112c SG |
80 | */ |
81 | int led_get_by_label(const char *label, struct udevice **devp); | |
82 | ||
83 | /** | |
ddae9fcd | 84 | * led_set_state() - set the state of an LED |
5917112c SG |
85 | * |
86 | * @dev: LED device to change | |
ddae9fcd | 87 | * @state: LED state to set |
5917112c SG |
88 | * @return 0 if OK, -ve on error |
89 | */ | |
ddae9fcd | 90 | int led_set_state(struct udevice *dev, enum led_state_t state); |
5917112c | 91 | |
8f4b6123 SG |
92 | /** |
93 | * led_get_state() - get the state of an LED | |
94 | * | |
95 | * @dev: LED device to change | |
96 | * @return LED state led_state_t, or -ve on error | |
97 | */ | |
98 | enum led_state_t led_get_state(struct udevice *dev); | |
99 | ||
53378dac SG |
100 | /** |
101 | * led_set_period() - set the blink period of an LED | |
102 | * | |
103 | * @dev: LED device to change | |
104 | * @period_ms: LED blink period in milliseconds | |
105 | * @return 0 if OK, -ve on error | |
106 | */ | |
107 | int led_set_period(struct udevice *dev, int period_ms); | |
108 | ||
5917112c | 109 | #endif |