All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
To: Dan Murphy <dmurphy@ti.com>, linux-leds@vger.kernel.org
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	pavel@ucw.cz, robh@kernel.org,
	Baolin Wang <baolin.wang@linaro.org>,
	Daniel Mack <daniel@zonque.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Oleh Kravchenko <oleg@kaa.org.ua>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Simon Shields <simon@lineageos.org>,
	Xiaotong Lu <xiaotong.lu@spreadtrum.com>
Subject: Re: [PATCH 01/24] leds: class: Improve LED and LED flash class registration API
Date: Thu, 8 Nov 2018 21:47:39 +0100	[thread overview]
Message-ID: <81b0ce3f-702f-952b-6f6f-336078a7008f@gmail.com> (raw)
In-Reply-To: <166969ae-f5db-cb5f-9334-9934e23aa406@ti.com>

Hi Dan,

Thanks for the review.

On 11/08/2018 06:50 PM, Dan Murphy wrote:
> Jacek
> 
> On 11/06/2018 04:07 PM, Jacek Anaszewski wrote:
[...]
>>  
>>  /**
>> - * of_led_classdev_register - register a new object of led_classdev class.
>> + * led_classdev_register_ext - register a new object of led_classdev class.
> 
> For this should the comment indicate a different between the extended and non-extended calls?
> Like the _ext might say register a new object of led_classdev with init_data?
> 
> Same comments for each addition below.

Agreed, I will amend it as you propose.

> Otherwise with Baolin's comments for 1/24
> 
> Acked-by: Dan Murphy <dmurphy@ti.com>
> 
> Dan
> 
>>   *
>>   * @parent: parent of LED device
>>   * @led_cdev: the led_classdev structure for this device.
>> - * @np: DT node describing this LED
>> + * @init_data: LED class device initialization data
>>   */
>> -int of_led_classdev_register(struct device *parent, struct device_node *np,
>> -			    struct led_classdev *led_cdev)
>> +int led_classdev_register_ext(struct device *parent,
>> +			      struct led_classdev *led_cdev,
>> +			      struct led_init_data *init_data)
>>  {
>>  	char name[LED_MAX_NAME_SIZE];
>>  	int ret;
>>  
>> +	if (init_data && init_data->name) {
>> +		led_cdev->name = init_data->name;
>> +	} else {
>> +		dev_info(parent, "init_data not available");
>> +	}
>> +
>>  	ret = led_classdev_next_name(led_cdev->name, name, sizeof(name));
>>  	if (ret < 0)
>>  		return ret;
>> @@ -268,7 +276,8 @@ int of_led_classdev_register(struct device *parent, struct device_node *np,
>>  		mutex_unlock(&led_cdev->led_access);
>>  		return PTR_ERR(led_cdev->dev);
>>  	}
>> -	led_cdev->dev->of_node = np;
>> +	if (init_data && init_data->fwnode)
>> +		led_cdev->dev->of_node = to_of_node(init_data->fwnode);
>>  
>>  	if (ret)
>>  		dev_warn(parent, "Led %s renamed to %s due to name collision",
>> @@ -313,7 +322,7 @@ int of_led_classdev_register(struct device *parent, struct device_node *np,
>>  
>>  	return 0;
>>  }
>> -EXPORT_SYMBOL_GPL(of_led_classdev_register);
>> +EXPORT_SYMBOL_GPL(led_classdev_register_ext);
>>  
>>  /**
>>   * led_classdev_unregister - unregisters a object of led_properties class.
>> @@ -358,14 +367,15 @@ static void devm_led_classdev_release(struct device *dev, void *res)
>>  }
>>  
>>  /**
>> - * devm_of_led_classdev_register - resource managed led_classdev_register()
>> + * devm_led_classdev_register_ext - resource managed led_classdev_register_ext()
>>   *
>>   * @parent: parent of LED device
>>   * @led_cdev: the led_classdev structure for this device.
>> + * @init_data: LED class device initialization data
>>   */
>> -int devm_of_led_classdev_register(struct device *parent,
>> -				  struct device_node *np,
>> -				  struct led_classdev *led_cdev)
>> +int devm_led_classdev_register_ext(struct device *parent,
>> +				   struct led_classdev *led_cdev,
>> +				   struct led_init_data *init_data)
>>  {
>>  	struct led_classdev **dr;
>>  	int rc;
>> @@ -374,7 +384,7 @@ int devm_of_led_classdev_register(struct device *parent,
>>  	if (!dr)
>>  		return -ENOMEM;
>>  
>> -	rc = of_led_classdev_register(parent, np, led_cdev);
>> +	rc = led_classdev_register_ext(parent, led_cdev, init_data);
>>  	if (rc) {
>>  		devres_free(dr);
>>  		return rc;
>> @@ -385,7 +395,7 @@ int devm_of_led_classdev_register(struct device *parent,
>>  
>>  	return 0;
>>  }
>> -EXPORT_SYMBOL_GPL(devm_of_led_classdev_register);
>> +EXPORT_SYMBOL_GPL(devm_led_classdev_register_ext);
>>  
>>  static int devm_led_classdev_match(struct device *dev, void *res, void *data)
>>  {
>> diff --git a/drivers/leds/leds-cr0014114.c b/drivers/leds/leds-cr0014114.c
>> index 0e42624..1c82152 100644
>> --- a/drivers/leds/leds-cr0014114.c
>> +++ b/drivers/leds/leds-cr0014114.c
>> @@ -207,8 +207,7 @@ static int cr0014114_probe_dt(struct cr0014114 *priv)
>>  		led->ldev.max_brightness	  = CR_MAX_BRIGHTNESS;
>>  		led->ldev.brightness_set_blocking = cr0014114_set_sync;
>>  
>> -		ret = devm_of_led_classdev_register(priv->dev, np,
>> -						    &led->ldev);
>> +		ret = devm_led_classdev_register(priv->dev, &led->ldev);
>>  		if (ret) {
>>  			dev_err(priv->dev,
>>  				"failed to register LED device %s, err %d",
>> diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
>> index 32fa752..c87fbd3 100644
>> --- a/drivers/leds/leds-gpio.c
>> +++ b/drivers/leds/leds-gpio.c
>> @@ -112,7 +112,7 @@ static int create_gpio_led(const struct gpio_led *template,
>>  	if (ret < 0)
>>  		return ret;
>>  
>> -	return devm_of_led_classdev_register(parent, np, &led_dat->cdev);
>> +	return devm_led_classdev_register(parent, &led_dat->cdev);
>>  }
>>  
>>  struct gpio_leds_priv {
>> diff --git a/include/linux/led-class-flash.h b/include/linux/led-class-flash.h
>> index 700efaa..28a73d0 100644
>> --- a/include/linux/led-class-flash.h
>> +++ b/include/linux/led-class-flash.h
>> @@ -90,15 +90,20 @@ static inline struct led_classdev_flash *lcdev_to_flcdev(
>>  }
>>  
>>  /**
>> - * led_classdev_flash_register - register a new object of led_classdev class
>> - *				 with support for flash LEDs
>> + * fwnode_led_classdev_flash_register - register a new object of led_classdev
>> + *					class with support for flash LEDs
>>   * @parent: the flash LED to register
>> + * @fwnode: the flash LED fwnode handle
>>   * @fled_cdev: the led_classdev_flash structure for this device
>>   *
>>   * Returns: 0 on success or negative error value on failure
>>   */
>> -extern int led_classdev_flash_register(struct device *parent,
>> -				struct led_classdev_flash *fled_cdev);
>> +extern int led_classdev_flash_register_ext(struct device *parent,
>> +					struct led_classdev_flash *fled_cdev,
>> +					struct led_init_data *init_data);
>> +
>> +#define led_classdev_flash_register(parent, fled_cdev)		\
>> +	led_classdev_flash_register_ext(parent, fled_cdev, NULL)
>>  
>>  /**
>>   * led_classdev_flash_unregister - unregisters an object of led_classdev class
>> diff --git a/include/linux/leds.h b/include/linux/leds.h
>> index 834683d..646c49a 100644
>> --- a/include/linux/leds.h
>> +++ b/include/linux/leds.h
>> @@ -20,6 +20,7 @@
>>  #include <linux/spinlock.h>
>>  #include <linux/timer.h>
>>  #include <linux/workqueue.h>
>> +#include <uapi/linux/uleds.h>
>>  
>>  struct device;
>>  /*
>> @@ -33,6 +34,13 @@ enum led_brightness {
>>  	LED_FULL	= 255,
>>  };
>>  
>> +struct led_init_data {
>> +	/* Device fwnode handle */
>> +	struct fwnode_handle *fwnode;
>> +	/* Requested LED class device name */
>> +	char name[LED_MAX_NAME_SIZE];
>> +};
>> +
>>  struct led_classdev {
>>  	const char		*name;
>>  	enum led_brightness	 brightness;
>> @@ -73,6 +81,7 @@ struct led_classdev {
>>  	 */
>>  	int (*brightness_set_blocking)(struct led_classdev *led_cdev,
>>  				       enum led_brightness brightness);
>> +
>>  	/* Get LED brightness level */
>>  	enum led_brightness (*brightness_get)(struct led_classdev *led_cdev);
>>  
>> @@ -123,16 +132,16 @@ struct led_classdev {
>>  	struct mutex		led_access;
>>  };
>>  
>> -extern int of_led_classdev_register(struct device *parent,
>> -				    struct device_node *np,
>> -				    struct led_classdev *led_cdev);
>> -#define led_classdev_register(parent, led_cdev)				\
>> -	of_led_classdev_register(parent, NULL, led_cdev)
>> -extern int devm_of_led_classdev_register(struct device *parent,
>> -					 struct device_node *np,
>> -					 struct led_classdev *led_cdev);
>> -#define devm_led_classdev_register(parent, led_cdev)			\
>> -	devm_of_led_classdev_register(parent, NULL, led_cdev)
>> +extern int led_classdev_register_ext(struct device *parent,
>> +				     struct led_classdev *led_cdev,
>> +				     struct led_init_data *init_data);
>> +#define led_classdev_register(parent, led_cdev)			\
>> +	led_classdev_register_ext(parent, led_cdev, NULL)
>> +extern int devm_led_classdev_register_ext(struct device *parent,
>> +					  struct led_classdev *led_cdev,
>> +					  struct led_init_data *init_data);
>> +#define devm_led_classdev_register(parent, led_cdev)		\
>> +	devm_led_classdev_register_ext(parent, led_cdev, NULL)
>>  extern void led_classdev_unregister(struct led_classdev *led_cdev);
>>  extern void devm_led_classdev_unregister(struct device *parent,
>>  					 struct led_classdev *led_cdev);
>>
> 
> 

-- 
Best regards,
Jacek Anaszewski

  reply	other threads:[~2018-11-08 20:47 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-06 22:07 [PATCH 00/24] Add generic support for composing LED class device name Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 01/24] leds: class: Improve LED and LED flash class registration API Jacek Anaszewski
2018-11-07  6:55   ` Baolin Wang
2018-11-07 20:51     ` Jacek Anaszewski
2018-11-08 17:50   ` Dan Murphy
2018-11-08 17:50     ` Dan Murphy
2018-11-08 20:47     ` Jacek Anaszewski [this message]
2018-11-11 11:31   ` Pavel Machek
2018-11-06 22:07 ` [PATCH 02/24] leds: core: Add support for composing LED class device names Jacek Anaszewski
2018-11-07  7:20   ` Baolin Wang
2018-11-08 20:47     ` Jacek Anaszewski
2018-11-09  2:35       ` Baolin Wang
2018-11-08 18:06   ` Dan Murphy
2018-11-08 18:06     ` Dan Murphy
2018-11-08 20:48     ` Jacek Anaszewski
2018-11-11 12:02   ` Pavel Machek
2018-11-11 20:02     ` Jacek Anaszewski
2018-11-11 20:16       ` Pavel Machek
2018-11-11 21:14         ` Jacek Anaszewski
2018-11-12  0:01           ` Vesa Jääskeläinen
2018-11-12 15:59             ` Jacek Anaszewski
2018-11-12 21:25             ` Linus Walleij
2018-11-12 21:25               ` Linus Walleij
2018-11-12 22:11               ` LEDs on USB keyboards was " Pavel Machek
2018-11-12 22:11                 ` Pavel Machek
2018-11-12 10:35           ` Pavel Machek
2018-11-12 16:01             ` Jacek Anaszewski
2018-11-12 19:05               ` Pavel Machek
2018-11-12 20:11                 ` Jacek Anaszewski
2018-11-12 22:06                   ` Pavel Machek
2018-11-13 20:57                     ` Jacek Anaszewski
2018-11-13 21:38                     ` Geert Uytterhoeven
2018-11-13 21:38                       ` Geert Uytterhoeven
2018-11-13 21:50                       ` Pavel Machek
2018-11-13 21:50                         ` Pavel Machek
2018-11-12 21:23     ` Linus Walleij
2018-11-12 21:23       ` Linus Walleij
2018-11-13 19:55       ` Jacek Anaszewski
2018-11-13 19:55         ` Jacek Anaszewski
2018-11-15  9:10         ` Linus Walleij
2018-11-15  9:10           ` Linus Walleij
2018-11-06 22:07 ` [PATCH 03/24] leds: dt-bindings: Add LED_FUNCTION definitions Jacek Anaszewski
2018-11-07  8:36   ` Vokáč Michal
2018-11-07 19:28     ` Jacek Anaszewski
2018-11-08 15:13   ` Rob Herring
2018-11-08 21:03     ` Jacek Anaszewski
2018-11-11 11:31   ` Pavel Machek
2018-11-11 20:02     ` Jacek Anaszewski
2018-11-11 20:20       ` Pavel Machek
2018-11-11 21:16         ` Jacek Anaszewski
2018-11-12  0:25   ` Vesa Jääskeläinen
2018-11-12 16:01     ` Jacek Anaszewski
2018-11-15  9:16   ` Linus Walleij
2018-11-15  9:16     ` Linus Walleij
2018-11-06 22:07 ` [PATCH 04/24] dt-bindings: leds: Add function and color properties Jacek Anaszewski
2018-11-08 18:00   ` Dan Murphy
2018-11-08 18:00     ` Dan Murphy
2018-11-08 20:47     ` Jacek Anaszewski
2018-11-08 21:08       ` Dan Murphy
2018-11-08 21:08         ` Dan Murphy
2018-11-09 20:00         ` Jacek Anaszewski
2018-11-09  8:32   ` Vesa Jääskeläinen
2018-11-09 20:42     ` Jacek Anaszewski
2018-11-10 17:19       ` Vesa Jääskeläinen
2018-11-12 16:02         ` Jacek Anaszewski
2018-11-13  7:10           ` Vesa Jääskeläinen
2018-11-13 19:02             ` Jacek Anaszewski
2018-11-12 18:27   ` Rob Herring
2018-11-13 20:57     ` Jacek Anaszewski
2018-11-27 20:37       ` Jacek Anaszewski
2018-11-27 20:37         ` Jacek Anaszewski
2018-11-30 14:38         ` Rob Herring
2018-11-30 21:08           ` Pavel Machek
2018-11-30 22:19             ` Rob Herring
2018-12-01 21:17               ` Jacek Anaszewski
2018-12-11 17:27                 ` Rob Herring
2018-12-11 22:44                   ` Pavel Machek
2018-12-21 10:12                   ` Linus Walleij
2018-12-21 10:12                     ` Linus Walleij
2018-12-12  9:59           ` Pavel Machek
2018-12-12 13:56             ` Rob Herring
2018-12-12 18:32               ` Pavel Machek
2018-12-23 20:11                 ` Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 05/24] dt-bindings: sc27xx-blt: " Jacek Anaszewski
2018-11-11 14:29   ` Pavel Machek
2018-11-11 20:03     ` Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 06/24] leds: sc27xx-blt: Use led_compose_name() Jacek Anaszewski
2018-11-07  7:22   ` Baolin Wang
2018-11-11 14:31   ` Pavel Machek
2018-11-06 22:07 ` [PATCH 07/24] dt-bindings: lt3593: Add function and color properties Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 08/24] leds: lt3593: Use led_compose_name() Jacek Anaszewski
2018-11-07 19:37   ` Daniel Mack
2018-11-07 19:49     ` Jacek Anaszewski
2018-11-08  8:33       ` Daniel Mack
2018-11-06 22:07 ` [PATCH 09/24] dt-bindings: lp8860: Add function and color properties Jacek Anaszewski
2018-11-08 18:01   ` Dan Murphy
2018-11-08 18:01     ` Dan Murphy
2018-11-06 22:07 ` [PATCH 10/24] leds: lp8860: Use led_compose_name() Jacek Anaszewski
2018-11-08 18:16   ` Dan Murphy
2018-11-08 18:16     ` Dan Murphy
2018-11-08 20:48     ` Jacek Anaszewski
2018-11-12 14:05       ` Dan Murphy
2018-11-12 14:05         ` Dan Murphy
2018-11-06 22:07 ` [PATCH 11/24] dt-bindings: lm3692x: Add function and color properties Jacek Anaszewski
2018-11-08 18:12   ` Dan Murphy
2018-11-08 18:12     ` Dan Murphy
2018-11-06 22:07 ` [PATCH 12/24] leds: lm3692x: Use led_compose_name() Jacek Anaszewski
2018-11-08 18:14   ` Dan Murphy
2018-11-08 18:14     ` Dan Murphy
2018-11-08 20:48     ` Jacek Anaszewski
2018-11-08 21:11       ` Dan Murphy
2018-11-08 21:11         ` Dan Murphy
2018-11-11 14:31   ` Pavel Machek
2018-11-06 22:07 ` [PATCH 13/24] dt-bindings: lm36010: Add function and color properties Jacek Anaszewski
2018-11-08 18:15   ` Dan Murphy
2018-11-08 18:15     ` Dan Murphy
2018-11-06 22:07 ` [PATCH 14/24] leds: lm3601x: Use led_compose_name() Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 15/24] dt-bindings: cr0014114: Add function and color properties Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 16/24] leds: cr0014114: Use led_compose_name() Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 17/24] dt-bindings: aat1290: Add function and color properties Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 18/24] leds: aat1290: Use led_compose_name() Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 19/24] dt-bindings: as3645a: Add function and color properties Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 20/24] leds: as3645a: Use led_compose_name() Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 21/24] dt-bindings: leds-gpio: Add function and color properties Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 22/24] leds: gpio: Use led_compose_name() Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 23/24] dt-bindings: an30259a: Add function and color properties Jacek Anaszewski
2018-11-06 22:07 ` [PATCH 24/24] leds: an30259a: Use led_compose_name() Jacek Anaszewski

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=81b0ce3f-702f-952b-6f6f-336078a7008f@gmail.com \
    --to=jacek.anaszewski@gmail.com \
    --cc=baolin.wang@linaro.org \
    --cc=daniel@zonque.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmurphy@ti.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=oleg@kaa.org.ua \
    --cc=pavel@ucw.cz \
    --cc=robh@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=simon@lineageos.org \
    --cc=xiaotong.lu@spreadtrum.com \
    /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.