Re: [PATCH v3 09/15] leds: leds-gpio: Make use of device property API

Mark Rutland
2014-10-03T14:07:39Z

On Wed, Oct 01, 2014 at 03:16:25AM +0100, Rafael J. Wysocki wrote:
> From: Max Eliaser <max@meliaserlow.dyndns.tv>
>
> Make use of device property API in this driver so that both OF and ACPI
> based system can use the same driver.
>
> Signed-off-by: Max Eliaser <max.eliaser@intel.com>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/leds/leds-gpio.c | 99 +++++++++++++++++++----------------------------
> 1 file changed, 42 insertions(+), 57 deletions(-)
>
> Index: linux-pm/drivers/leds/leds-gpio.c
> ===================================================================
> --- linux-pm.orig/drivers/leds/leds-gpio.c
> +++ linux-pm/drivers/leds/leds-gpio.c
> @@ -15,13 +15,11 @@
> #include <linux/gpio.h>
> #include <linux/gpio/consumer.h>
> #include <linux/leds.h>
> -#include <linux/of.h>
> -#include <linux/of_platform.h>
> -#include <linux/of_gpio.h>
> #include <linux/slab.h>
> #include <linux/workqueue.h>
> #include <linux/module.h>
> #include <linux/err.h>
> +#include <linux/property.h>
>
> struct gpio_led_data {
> struct led_classdev cdev;
> @@ -171,65 +169,59 @@ static inline int sizeof_gpio_leds_priv(
> (sizeof(struct gpio_led_data) * num_leds);
> }
>
> -/* Code to create from OpenFirmware platform devices */
> -#ifdef CONFIG_OF_GPIO
> -static struct gpio_leds_priv *gpio_leds_create_of(struct platform_device *pdev)
> +static int gpio_leds_create_led(struct device *dev, void *child, void *data)
> +{
> + struct gpio_leds_priv *priv = data;
> + struct gpio_led led = {};
> + const char *state = NULL;
> +
> + led.gpiod = devm_get_named_gpiod_from_child(dev, child, "gpios", 0);
> + if (IS_ERR(led.gpiod))
> + return PTR_ERR(led.gpiod);
> +
> + device_child_property_read_string(dev, child, "label", &led.name);
> + device_child_property_read_string(dev, child, "linux,default-trigger",
> + &led.default_trigger);
> +
> + device_child_property_read_string(dev, child, "linux,default_state",
> + &state);

Do we really want "linux," properties in ACPI tables?

Thanks,
Mark.