xref: /rk3399_rockchip-uboot/include/led.h (revision ddae9fcddc48d1e624c941148d0df5a4fc7d7d5c)
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 
20*ddae9fcdSSimon Glass enum led_state_t {
21*ddae9fcdSSimon Glass 	LEDST_OFF = 0,
22*ddae9fcdSSimon Glass 	LEDST_ON = 1,
23*ddae9fcdSSimon Glass 
24*ddae9fcdSSimon Glass 	LEDST_COUNT,
25*ddae9fcdSSimon Glass };
26*ddae9fcdSSimon Glass 
275917112cSSimon Glass struct led_ops {
285917112cSSimon Glass 	/**
29*ddae9fcdSSimon Glass 	 * set_state() - set the state of an LED
305917112cSSimon Glass 	 *
315917112cSSimon Glass 	 * @dev:	LED device to change
32*ddae9fcdSSimon Glass 	 * @state:	LED state to set
335917112cSSimon Glass 	 * @return 0 if OK, -ve on error
345917112cSSimon Glass 	 */
35*ddae9fcdSSimon Glass 	int (*set_state)(struct udevice *dev, enum led_state_t state);
365917112cSSimon Glass };
375917112cSSimon Glass 
385917112cSSimon Glass #define led_get_ops(dev)	((struct led_ops *)(dev)->driver->ops)
395917112cSSimon Glass 
405917112cSSimon Glass /**
415917112cSSimon Glass  * led_get_by_label() - Find an LED device by label
425917112cSSimon Glass  *
435917112cSSimon Glass  * @label:	LED label to look up
445917112cSSimon Glass  * @devp:	Returns the associated device, if found
45fb8a5ffcSSimon Glass  * @return 0 if found, -ENODEV if not found, other -ve on error
465917112cSSimon Glass  */
475917112cSSimon Glass int led_get_by_label(const char *label, struct udevice **devp);
485917112cSSimon Glass 
495917112cSSimon Glass /**
50*ddae9fcdSSimon Glass  * led_set_state() - set the state of an LED
515917112cSSimon Glass  *
525917112cSSimon Glass  * @dev:	LED device to change
53*ddae9fcdSSimon Glass  * @state:	LED state to set
545917112cSSimon Glass  * @return 0 if OK, -ve on error
555917112cSSimon Glass  */
56*ddae9fcdSSimon Glass int led_set_state(struct udevice *dev, enum led_state_t state);
575917112cSSimon Glass 
585917112cSSimon Glass #endif
59