On Fri 2017-09-08 15:42:13, Sakari Ailus wrote:
> Use integer numbers for LEDs, 0 is the flash and 1 is the indicator.
> 
> Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>

Dunno. Old code is shorter, old device tree is shorter, ... IMO both
versions are fine, because the LEDs are really different. Do we have
documentation somewhere saying that reg= should be used for this? Are
you doing this for consistency?

Best regards,
                                                                        Pavel

>  arch/arm/boot/dts/omap3-n950-n9.dtsi |  8 ++++++--
>  drivers/leds/leds-as3645a.c          | 26 ++++++++++++++++++++++++--


> @@ -267,15 +267,19 @@
>       clock-frequency = <400000>;
>  
>       as3645a@30 {
> +             #address-cells = <1>;
> +             #size-cells = <0>;
>               reg = <0x30>;
>               compatible = "ams,as3645a";
> -             flash {
> +             flash@0 {
> +                     reg = <0x0>;
>                       flash-timeout-us = <150000>;
>                       flash-max-microamp = <320000>;
>                       led-max-microamp = <60000>;
>                       ams,input-max-microamp = <1750000>;
>               };
> -             indicator {
> +             indicator@1 {
> +                     reg = <0x1>;
>                       led-max-microamp = <10000>;
>               };
>       };
> diff --git a/drivers/leds/leds-as3645a.c b/drivers/leds/leds-as3645a.c
> index e3f89c6130d2..605e0c64e974 100644
> --- a/drivers/leds/leds-as3645a.c
> +++ b/drivers/leds/leds-as3645a.c
> @@ -112,6 +112,10 @@
>  #define AS_PEAK_mA_TO_REG(a) \
>       ((min_t(u32, AS_PEAK_mA_MAX, a) - 1250) / 250)
>  
> +/* LED numbers for Devicetree */
> +#define AS_LED_FLASH                         0
> +#define AS_LED_INDICATOR                     1
> +
>  enum as_mode {
>       AS_MODE_EXT_TORCH = 0 << AS_CONTROL_MODE_SETTING_SHIFT,
>       AS_MODE_INDICATOR = 1 << AS_CONTROL_MODE_SETTING_SHIFT,
> @@ -491,10 +495,29 @@ static int as3645a_parse_node(struct as3645a *flash,
>                             struct device_node *node)
>  {
>       struct as3645a_config *cfg = &flash->cfg;
> +     struct device_node *child;
>       const char *name;
>       int rval;
>  
> -     flash->flash_node = of_get_child_by_name(node, "flash");
> +     for_each_child_of_node(node, child) {
> +             u32 id = 0;
> +
> +             of_property_read_u32(child, "reg", &id);
> +
> +             switch (id) {
> +             case AS_LED_FLASH:
> +                     flash->flash_node = of_node_get(child);
> +                     break;
> +             case AS_LED_INDICATOR:
> +                     flash->indicator_node = of_node_get(child);
> +                     break;
> +             default:
> +                     dev_warn(&flash->client->dev,
> +                              "unknown LED %u encountered, ignoring\n", id);
> +                     break;
> +             }
> +     }
> +
>       if (!flash->flash_node) {
>               dev_err(&flash->client->dev, "can't find flash node\n");
>               return -ENODEV;
> @@ -538,7 +561,6 @@ static int as3645a_parse_node(struct as3645a *flash,
>                            &cfg->peak);
>       cfg->peak = AS_PEAK_mA_TO_REG(cfg->peak);
>  
> -     flash->indicator_node = of_get_child_by_name(node, "indicator");
>       if (!flash->indicator_node) {
>               dev_warn(&flash->client->dev,
>                        "can't find indicator node\n");

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature

Reply via email to