Blame view

include/led.h 2.56 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
5917112c9   Simon Glass   dm: Add support f...
2
3
4
  /*
   * Copyright (c) 2015 Google, Inc
   * Written by Simon Glass <sjg@chromium.org>
5917112c9   Simon Glass   dm: Add support f...
5
6
7
8
9
10
   */
  
  #ifndef __LED_H
  #define __LED_H
  
  /**
56e19871d   Simon Glass   dm: led: Rename s...
11
   * struct led_uc_plat - Platform data the uclass stores about each device
5917112c9   Simon Glass   dm: Add support f...
12
13
14
   *
   * @label:	LED label
   */
56e19871d   Simon Glass   dm: led: Rename s...
15
  struct led_uc_plat {
5917112c9   Simon Glass   dm: Add support f...
16
17
  	const char *label;
  };
53378dac8   Simon Glass   dm: led: Add supp...
18
19
20
21
22
23
24
25
  /**
   * struct led_uc_priv - Private data the uclass stores about each device
   *
   * @period_ms:	Flash period in milliseconds
   */
  struct led_uc_priv {
  	int period_ms;
  };
ddae9fcdd   Simon Glass   dm: led: Adjust t...
26
27
28
  enum led_state_t {
  	LEDST_OFF = 0,
  	LEDST_ON = 1,
9413ad4f0   Simon Glass   dm: led: Support ...
29
  	LEDST_TOGGLE,
53378dac8   Simon Glass   dm: led: Add supp...
30
31
32
  #ifdef CONFIG_LED_BLINK
  	LEDST_BLINK,
  #endif
ddae9fcdd   Simon Glass   dm: led: Adjust t...
33
34
35
  
  	LEDST_COUNT,
  };
5917112c9   Simon Glass   dm: Add support f...
36
37
  struct led_ops {
  	/**
ddae9fcdd   Simon Glass   dm: led: Adjust t...
38
  	 * set_state() - set the state of an LED
5917112c9   Simon Glass   dm: Add support f...
39
40
  	 *
  	 * @dev:	LED device to change
ddae9fcdd   Simon Glass   dm: led: Adjust t...
41
  	 * @state:	LED state to set
5917112c9   Simon Glass   dm: Add support f...
42
43
  	 * @return 0 if OK, -ve on error
  	 */
ddae9fcdd   Simon Glass   dm: led: Adjust t...
44
  	int (*set_state)(struct udevice *dev, enum led_state_t state);
8f4b61233   Simon Glass   dm: led: Add supp...
45
46
47
48
49
50
51
52
  
  	/**
  	 * led_get_state() - get the state of an LED
  	 *
  	 * @dev:	LED device to change
  	 * @return LED state led_state_t, or -ve on error
  	 */
  	enum led_state_t (*get_state)(struct udevice *dev);
53378dac8   Simon Glass   dm: led: Add supp...
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  
  #ifdef CONFIG_LED_BLINK
  	/**
  	 * led_set_period() - set the blink period of an LED
  	 *
  	 * Thie records the period if supported, or returns -ENOSYS if not.
  	 * To start the LED blinking, use set_state().
  	 *
  	 * @dev:	LED device to change
  	 * @period_ms:	LED blink period in milliseconds
  	 * @return 0 if OK, -ve on error
  	 */
  	int (*set_period)(struct udevice *dev, int period_ms);
  #endif
5917112c9   Simon Glass   dm: Add support f...
67
68
69
70
71
72
73
74
75
  };
  
  #define led_get_ops(dev)	((struct led_ops *)(dev)->driver->ops)
  
  /**
   * led_get_by_label() - Find an LED device by label
   *
   * @label:	LED label to look up
   * @devp:	Returns the associated device, if found
fb8a5ffc7   Simon Glass   led: Return -ENOD...
76
   * @return 0 if found, -ENODEV if not found, other -ve on error
5917112c9   Simon Glass   dm: Add support f...
77
78
79
80
   */
  int led_get_by_label(const char *label, struct udevice **devp);
  
  /**
ddae9fcdd   Simon Glass   dm: led: Adjust t...
81
   * led_set_state() - set the state of an LED
5917112c9   Simon Glass   dm: Add support f...
82
83
   *
   * @dev:	LED device to change
ddae9fcdd   Simon Glass   dm: led: Adjust t...
84
   * @state:	LED state to set
5917112c9   Simon Glass   dm: Add support f...
85
86
   * @return 0 if OK, -ve on error
   */
ddae9fcdd   Simon Glass   dm: led: Adjust t...
87
  int led_set_state(struct udevice *dev, enum led_state_t state);
5917112c9   Simon Glass   dm: Add support f...
88

8f4b61233   Simon Glass   dm: led: Add supp...
89
90
91
92
93
94
95
  /**
   * led_get_state() - get the state of an LED
   *
   * @dev:	LED device to change
   * @return LED state led_state_t, or -ve on error
   */
  enum led_state_t led_get_state(struct udevice *dev);
53378dac8   Simon Glass   dm: led: Add supp...
96
97
98
99
100
101
102
103
  /**
   * led_set_period() - set the blink period of an LED
   *
   * @dev:	LED device to change
   * @period_ms:	LED blink period in milliseconds
   * @return 0 if OK, -ve on error
   */
  int led_set_period(struct udevice *dev, int period_ms);
d7a435a2c   Patrick Delaunay   dm: led: move def...
104
105
106
107
108
109
110
111
  /**
   * led_default_state() - set the default state for all the LED
   *
   * This enables all leds which have default state.
   * see Documentation/devicetree/bindings/leds/common.txt
   *
   */
  int led_default_state(void);
5917112c9   Simon Glass   dm: Add support f...
112
  #endif