All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ziping Chen <techping.chan@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 4/9] dm: led: Adjust the LED uclass
Date: Wed, 12 Apr 2017 16:52:14 +0800	[thread overview]
Message-ID: <CAAST=9wTikkuqZN7dXBf2YHf2CRsUojh5mZo=s5ZP7Yp5o4buQ@mail.gmail.com> (raw)
In-Reply-To: <20170410173459.30461-5-sjg@chromium.org>

2017-04-11 1:34 GMT+08:00 Simon Glass <sjg@chromium.org>:

> At present this is very simple, supporting only on and off. We want to
> also support toggling and blinking. As a first step, change the name of
> the main method and use an enum to indicate the state.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v2: None
>
>  drivers/led/led-uclass.c |  6 +++---
>  drivers/led/led_gpio.c   |  6 +++---
>  include/led.h            | 19 +++++++++++++------
>  test/dm/led.c            |  5 +++--
>  4 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c
> index ca4f98c0b3..b30346913b 100644
> --- a/drivers/led/led-uclass.c
> +++ b/drivers/led/led-uclass.c
> @@ -32,14 +32,14 @@ int led_get_by_label(const char *label, struct udevice
> **devp)
>         return -ENODEV;
>  }
>
> -int led_set_on(struct udevice *dev, int on)
> +int led_set_state(struct udevice *dev, enum led_state_t state)
>  {
>         struct led_ops *ops = led_get_ops(dev);
>
> -       if (!ops->set_on)
> +       if (!ops->set_state)
>                 return -ENOSYS;
>
> -       return ops->set_on(dev, on);
> +       return ops->set_state(dev, state);
>  }
>
>  UCLASS_DRIVER(led) = {
> diff --git a/drivers/led/led_gpio.c b/drivers/led/led_gpio.c
> index 97b5da35cd..af8133d3c7 100644
> --- a/drivers/led/led_gpio.c
> +++ b/drivers/led/led_gpio.c
> @@ -18,14 +18,14 @@ struct led_gpio_priv {
>         struct gpio_desc gpio;
>  };
>
> -static int gpio_led_set_on(struct udevice *dev, int on)
> +static int gpio_led_set_state(struct udevice *dev, enum led_state_t state)
>  {
>         struct led_gpio_priv *priv = dev_get_priv(dev);
>
>         if (!dm_gpio_is_valid(&priv->gpio))
>                 return -EREMOTEIO;
>
> -       return dm_gpio_set_value(&priv->gpio, on);
> +       return dm_gpio_set_value(&priv->gpio, state);
>  }
>
>  static int led_gpio_probe(struct udevice *dev)
> @@ -87,7 +87,7 @@ static int led_gpio_bind(struct udevice *parent)
>  }
>
>  static const struct led_ops gpio_led_ops = {
> -       .set_on         = gpio_led_set_on,
> +       .set_state      = gpio_led_set_state,
>  };
>
>  static const struct udevice_id led_gpio_ids[] = {
> diff --git a/include/led.h b/include/led.h
> index a856b3d9ff..8af87ea8ea 100644
> --- a/include/led.h
> +++ b/include/led.h
> @@ -17,15 +17,22 @@ struct led_uc_plat {
>         const char *label;
>  };
>
> +enum led_state_t {
> +       LEDST_OFF = 0,
> +       LEDST_ON = 1,
> +
> +       LEDST_COUNT,
> +};
> +
>  struct led_ops {
>         /**
> -        * set_on() - set the state of an LED
> +        * set_state() - set the state of an LED
>          *
>          * @dev:        LED device to change
> -        * @on:         1 to turn the LED on, 0 to turn it off
> +        * @state:      LED state to set
>          * @return 0 if OK, -ve on error
>          */
> -       int (*set_on)(struct udevice *dev, int on);
> +       int (*set_state)(struct udevice *dev, enum led_state_t state);
>  };
>
>  #define led_get_ops(dev)       ((struct led_ops *)(dev)->driver->ops)
> @@ -40,12 +47,12 @@ struct led_ops {
>  int led_get_by_label(const char *label, struct udevice **devp);
>
>  /**
> - * led_set_on() - set the state of an LED
> + * led_set_state() - set the state of an LED
>   *
>   * @dev:       LED device to change
> - * @on:                1 to turn the LED on, 0 to turn it off
> + * @state:     LED state to set
>   * @return 0 if OK, -ve on error
>   */
> -int led_set_on(struct udevice *dev, int on);
> +int led_set_state(struct udevice *dev, enum led_state_t state);
>
>  #endif
> diff --git a/test/dm/led.c b/test/dm/led.c
> index 8ee075cf1c..ebb9b46584 100644
> --- a/test/dm/led.c
> +++ b/test/dm/led.c
> @@ -41,9 +41,10 @@ static int dm_test_led_gpio(struct unit_test_state *uts)
>         ut_assertok(uclass_get_device(UCLASS_LED, 1, &dev));
>         ut_assertok(uclass_get_device(UCLASS_GPIO, 1, &gpio));
>         ut_asserteq(0, sandbox_gpio_get_value(gpio, offset));
> -       led_set_on(dev, 1);
> +       ut_assertok(led_set_state(dev, LEDST_ON));
>         ut_asserteq(1, sandbox_gpio_get_value(gpio, offset));
> -       led_set_on(dev, 0);
> +
> +       ut_assertok(led_set_state(dev, LEDST_OFF));
>         ut_asserteq(0, sandbox_gpio_get_value(gpio, offset));
>
>         return 0;
> --
> 2.12.2.715.g7642488e1d-goog
>
>
Reviewed-by: Ziping Chen <techping.chan@gmail.com>

  reply	other threads:[~2017-04-12  8:52 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-10 17:34 [U-Boot] [PATCH v2 0/9] dm: led: Expand the LED interface and add a command Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 1/9] sandbox: Add some test LEDs Simon Glass
2017-04-12  8:51   ` Ziping Chen
2017-04-15 16:07     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 2/9] dm: led: Add a missing blank line in the Kconfig file Simon Glass
2017-04-12  8:51   ` Ziping Chen
2017-04-15 16:07     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 3/9] dm: led: Rename struct led_uclass_plat Simon Glass
2017-04-12  8:51   ` Ziping Chen
2017-04-15 16:07     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 4/9] dm: led: Adjust the LED uclass Simon Glass
2017-04-12  8:52   ` Ziping Chen [this message]
2017-04-15 16:07     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 5/9] dm: led: Add support for getting the state of an LED Simon Glass
2017-04-12  8:52   ` Ziping Chen
2017-04-15 16:08     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 6/9] dm: led: Support toggling LEDs Simon Glass
2017-04-12  8:52   ` Ziping Chen
2017-04-15 16:08     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 7/9] dm: led: Add support for blinking LEDs Simon Glass
2017-04-12  8:52   ` Ziping Chen
2017-04-15 16:08     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 8/9] led: Mark existing driver as legacy Simon Glass
2017-04-12  8:53   ` Ziping Chen
2017-04-15 16:08     ` Simon Glass
2017-04-10 17:34 ` [U-Boot] [PATCH v2 9/9] dm: led: Add a new 'led' command Simon Glass
2017-04-12  8:53   ` Ziping Chen
2017-04-15 16:08     ` Simon Glass
2017-04-12  8:51 ` [U-Boot] [PATCH v2 0/9] dm: led: Expand the LED interface and add a command Ziping Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAAST=9wTikkuqZN7dXBf2YHf2CRsUojh5mZo=s5ZP7Yp5o4buQ@mail.gmail.com' \
    --to=techping.chan@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.