xref: /rk3399_rockchip-uboot/include/led.h (revision 9413ad4f0def2e06a5042106a6e1650a1aa03a5a)
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,
23*9413ad4fSSimon Glass 	LEDST_TOGGLE,
24ddae9fcdSSimon Glass 
25ddae9fcdSSimon Glass 	LEDST_COUNT,
26ddae9fcdSSimon Glass };
27ddae9fcdSSimon Glass 
285917112cSSimon Glass struct led_ops {
295917112cSSimon Glass 	/**
30ddae9fcdSSimon Glass 	 * set_state() - set the state of an LED
315917112cSSimon Glass 	 *
325917112cSSimon Glass 	 * @dev:	LED device to change
33ddae9fcdSSimon Glass 	 * @state:	LED state to set
345917112cSSimon Glass 	 * @return 0 if OK, -ve on error
355917112cSSimon Glass 	 */
36ddae9fcdSSimon Glass 	int (*set_state)(struct udevice *dev, enum led_state_t state);
378f4b6123SSimon Glass 
388f4b6123SSimon Glass 	/**
398f4b6123SSimon Glass 	 * led_get_state() - get the state of an LED
408f4b6123SSimon Glass 	 *
418f4b6123SSimon Glass 	 * @dev:	LED device to change
428f4b6123SSimon Glass 	 * @return LED state led_state_t, or -ve on error
438f4b6123SSimon Glass 	 */
448f4b6123SSimon Glass 	enum led_state_t (*get_state)(struct udevice *dev);
455917112cSSimon Glass };
465917112cSSimon Glass 
475917112cSSimon Glass #define led_get_ops(dev)	((struct led_ops *)(dev)->driver->ops)
485917112cSSimon Glass 
495917112cSSimon Glass /**
505917112cSSimon Glass  * led_get_by_label() - Find an LED device by label
515917112cSSimon Glass  *
525917112cSSimon Glass  * @label:	LED label to look up
535917112cSSimon Glass  * @devp:	Returns the associated device, if found
54fb8a5ffcSSimon Glass  * @return 0 if found, -ENODEV if not found, other -ve on error
555917112cSSimon Glass  */
565917112cSSimon Glass int led_get_by_label(const char *label, struct udevice **devp);
575917112cSSimon Glass 
585917112cSSimon Glass /**
59ddae9fcdSSimon Glass  * led_set_state() - set the state of an LED
605917112cSSimon Glass  *
615917112cSSimon Glass  * @dev:	LED device to change
62ddae9fcdSSimon Glass  * @state:	LED state to set
635917112cSSimon Glass  * @return 0 if OK, -ve on error
645917112cSSimon Glass  */
65ddae9fcdSSimon Glass int led_set_state(struct udevice *dev, enum led_state_t state);
665917112cSSimon Glass 
678f4b6123SSimon Glass /**
688f4b6123SSimon Glass  * led_get_state() - get the state of an LED
698f4b6123SSimon Glass  *
708f4b6123SSimon Glass  * @dev:	LED device to change
718f4b6123SSimon Glass  * @return LED state led_state_t, or -ve on error
728f4b6123SSimon Glass  */
738f4b6123SSimon Glass enum led_state_t led_get_state(struct udevice *dev);
748f4b6123SSimon Glass 
755917112cSSimon Glass #endif
76