1 /* 2 * Copyright (c) 2015 Google, Inc 3 * Written by Simon Glass <sjg@chromium.org> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 #ifndef __LED_H 9 #define __LED_H 10 11 /** 12 * struct led_uc_plat - Platform data the uclass stores about each device 13 * 14 * @label: LED label 15 */ 16 struct led_uc_plat { 17 const char *label; 18 }; 19 20 enum led_state_t { 21 LEDST_OFF = 0, 22 LEDST_ON = 1, 23 24 LEDST_COUNT, 25 }; 26 27 struct led_ops { 28 /** 29 * set_state() - set the state of an LED 30 * 31 * @dev: LED device to change 32 * @state: LED state to set 33 * @return 0 if OK, -ve on error 34 */ 35 int (*set_state)(struct udevice *dev, enum led_state_t state); 36 37 /** 38 * led_get_state() - get the state of an LED 39 * 40 * @dev: LED device to change 41 * @return LED state led_state_t, or -ve on error 42 */ 43 enum led_state_t (*get_state)(struct udevice *dev); 44 }; 45 46 #define led_get_ops(dev) ((struct led_ops *)(dev)->driver->ops) 47 48 /** 49 * led_get_by_label() - Find an LED device by label 50 * 51 * @label: LED label to look up 52 * @devp: Returns the associated device, if found 53 * @return 0 if found, -ENODEV if not found, other -ve on error 54 */ 55 int led_get_by_label(const char *label, struct udevice **devp); 56 57 /** 58 * led_set_state() - set the state of an LED 59 * 60 * @dev: LED device to change 61 * @state: LED state to set 62 * @return 0 if OK, -ve on error 63 */ 64 int led_set_state(struct udevice *dev, enum led_state_t state); 65 66 /** 67 * led_get_state() - get the state of an LED 68 * 69 * @dev: LED device to change 70 * @return LED state led_state_t, or -ve on error 71 */ 72 enum led_state_t led_get_state(struct udevice *dev); 73 74 #endif 75