xref: /rk3399_rockchip-uboot/include/led.h (revision 8f4b612333ee0381eedf767c1c005a830886df27)
15917112cSSimon Glass /*
25917112cSSimon Glass  * Copyright (c) 2015 Google, Inc
35917112cSSimon Glass  * Written by Simon Glass <sjg@chromium.org>
45917112cSSimon Glass  *
55917112cSSimon Glass  * SPDX-License-Identifier:	GPL-2.0+
65917112cSSimon Glass  */
75917112cSSimon Glass 
85917112cSSimon Glass #ifndef __LED_H
95917112cSSimon Glass #define __LED_H
105917112cSSimon Glass 
115917112cSSimon Glass /**
1256e19871SSimon Glass  * struct led_uc_plat - Platform data the uclass stores about each device
135917112cSSimon Glass  *
145917112cSSimon Glass  * @label:	LED label
155917112cSSimon Glass  */
1656e19871SSimon Glass struct led_uc_plat {
175917112cSSimon Glass 	const char *label;
185917112cSSimon Glass };
195917112cSSimon Glass 
20ddae9fcdSSimon Glass enum led_state_t {
21ddae9fcdSSimon Glass 	LEDST_OFF = 0,
22ddae9fcdSSimon Glass 	LEDST_ON = 1,
23ddae9fcdSSimon Glass 
24ddae9fcdSSimon Glass 	LEDST_COUNT,
25ddae9fcdSSimon Glass };
26ddae9fcdSSimon Glass 
275917112cSSimon Glass struct led_ops {
285917112cSSimon Glass 	/**
29ddae9fcdSSimon Glass 	 * set_state() - set the state of an LED
305917112cSSimon Glass 	 *
315917112cSSimon Glass 	 * @dev:	LED device to change
32ddae9fcdSSimon Glass 	 * @state:	LED state to set
335917112cSSimon Glass 	 * @return 0 if OK, -ve on error
345917112cSSimon Glass 	 */
35ddae9fcdSSimon Glass 	int (*set_state)(struct udevice *dev, enum led_state_t state);
36*8f4b6123SSimon Glass 
37*8f4b6123SSimon Glass 	/**
38*8f4b6123SSimon Glass 	 * led_get_state() - get the state of an LED
39*8f4b6123SSimon Glass 	 *
40*8f4b6123SSimon Glass 	 * @dev:	LED device to change
41*8f4b6123SSimon Glass 	 * @return LED state led_state_t, or -ve on error
42*8f4b6123SSimon Glass 	 */
43*8f4b6123SSimon Glass 	enum led_state_t (*get_state)(struct udevice *dev);
445917112cSSimon Glass };
455917112cSSimon Glass 
465917112cSSimon Glass #define led_get_ops(dev)	((struct led_ops *)(dev)->driver->ops)
475917112cSSimon Glass 
485917112cSSimon Glass /**
495917112cSSimon Glass  * led_get_by_label() - Find an LED device by label
505917112cSSimon Glass  *
515917112cSSimon Glass  * @label:	LED label to look up
525917112cSSimon Glass  * @devp:	Returns the associated device, if found
53fb8a5ffcSSimon Glass  * @return 0 if found, -ENODEV if not found, other -ve on error
545917112cSSimon Glass  */
555917112cSSimon Glass int led_get_by_label(const char *label, struct udevice **devp);
565917112cSSimon Glass 
575917112cSSimon Glass /**
58ddae9fcdSSimon Glass  * led_set_state() - set the state of an LED
595917112cSSimon Glass  *
605917112cSSimon Glass  * @dev:	LED device to change
61ddae9fcdSSimon Glass  * @state:	LED state to set
625917112cSSimon Glass  * @return 0 if OK, -ve on error
635917112cSSimon Glass  */
64ddae9fcdSSimon Glass int led_set_state(struct udevice *dev, enum led_state_t state);
655917112cSSimon Glass 
66*8f4b6123SSimon Glass /**
67*8f4b6123SSimon Glass  * led_get_state() - get the state of an LED
68*8f4b6123SSimon Glass  *
69*8f4b6123SSimon Glass  * @dev:	LED device to change
70*8f4b6123SSimon Glass  * @return LED state led_state_t, or -ve on error
71*8f4b6123SSimon Glass  */
72*8f4b6123SSimon Glass enum led_state_t led_get_state(struct udevice *dev);
73*8f4b6123SSimon Glass 
745917112cSSimon Glass #endif
75