From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ziping Chen Date: Wed, 5 Apr 2017 21:20:15 +0800 Subject: [U-Boot] [PATCH 1/6] led: add get_status support for DM LED support In-Reply-To: References: <1490625523-11594-1-git-send-email-techping.chan@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 2017-04-01 12:23 GMT+08:00 Simon Glass : > Hi, > > On 27 March 2017 at 08:38, wrote: > > 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(+) > > 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 > Hi, Simon I have seen your code, which have more features.