From mboxrd@z Thu Jan 1 00:00:00 1970 From: techping.chan at gmail.com Date: Mon, 27 Mar 2017 22:38:38 +0800 Subject: [U-Boot] [PATCH 1/6] led: add get_status support for DM LED support Message-ID: <1490625523-11594-1-git-send-email-techping.chan@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Ziping Chen Sometimes we need to read back the status of a LED. Add a led_get_status function for DM LED support, and add a get_status function for the driver to implement this function. Signed-off-by: Ziping Chen --- drivers/led/led-uclass.c | 10 ++++++++++ include/led.h | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c index 784ac87..304b92a 100644 --- a/drivers/led/led-uclass.c +++ b/drivers/led/led-uclass.c @@ -42,6 +42,16 @@ int led_set_on(struct udevice *dev, int on) return ops->set_on(dev, on); } +int led_get_status(struct udevice *dev) +{ + struct led_ops *ops = led_get_ops(dev); + + if (!ops->get_status) + return -ENOSYS; + + return ops->get_status(dev); +} + UCLASS_DRIVER(led) = { .id = UCLASS_LED, .name = "led", diff --git a/include/led.h b/include/led.h index b929d0c..cd6fe98 100644 --- a/include/led.h +++ b/include/led.h @@ -26,6 +26,13 @@ struct led_ops { * @return 0 if OK, -ve on error */ int (*set_on)(struct udevice *dev, int on); + /** + * led_get_status() - get the state of an LED + * + * @dev: LED device to query + * @return 0 if LED off, 1 if LED on, -ve on error + */ + int (*get_status)(struct udevice *dev); }; #define led_get_ops(dev) ((struct led_ops *)(dev)->driver->ops) @@ -48,4 +55,12 @@ int led_get_by_label(const char *label, struct udevice **devp); */ int led_set_on(struct udevice *dev, int on); +/** + * led_get_status() - get the state of an LED + * + * @dev: LED device to query + * @return 0 if LED off, 1 if LED on, -ve on error + */ +int led_get_status(struct udevice *dev); + #endif -- 2.7.4