
Hi,
On 27 March 2017 at 08:38, techping.chan@gmail.com wrote:
From: Ziping Chen techping.chan@gmail.com
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 techping.chan@gmail.com
drivers/led/led-uclass.c | 10 ++++++++++ include/led.h | 15 +++++++++++++++ 2 files changed, 25 insertions(+)
I'm very sorry to say I just duplicated some of your work in my attempt at cleaning up board_f :-(
Anyway could you please look at my patches which I think go a little further than yours in some areas?
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
Regards, Simon