Re: [PATCH] leds: gpio: Configure per-LED pin control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

> Each gpio-leds DT node DT subnode can have a pinctrl property assigned
> to it, parse the DT subnode pinctrl properties and configure each pin
> accordingly.

Do we need update to
Documentation/devicetree/bindings/leds/leds-gpio.yaml ?

Otherwise looks good to me.

Thank you,
								Pavel

> +++ b/drivers/leds/leds-gpio.c
> @@ -13,6 +13,7 @@
>  #include <linux/leds.h>
>  #include <linux/module.h>
>  #include <linux/of.h>
> +#include <linux/pinctrl/consumer.h>
>  #include <linux/platform_device.h>
>  #include <linux/property.h>
>  #include <linux/slab.h>
> @@ -77,6 +78,7 @@ static int create_gpio_led(const struct gpio_led *template,
>  	struct fwnode_handle *fwnode, gpio_blink_set_t blink_set)
>  {
>  	struct led_init_data init_data = {};
> +	struct pinctrl *pinctrl;
>  	int ret, state;
>  
>  	led_dat->cdev.default_trigger = template->default_trigger;
> @@ -119,6 +121,22 @@ static int create_gpio_led(const struct gpio_led *template,
>  						     &init_data);
>  	}
>  
> +	if (ret)
> +		return ret;
> +
> +	pinctrl = devm_pinctrl_get_select_default(led_dat->cdev.dev);
> +	if (IS_ERR(pinctrl)) {
> +		ret = PTR_ERR(pinctrl);
> +		if (ret != -ENODEV) {
> +			dev_warn(led_dat->cdev.dev,
> +				 "Failed to select %pOF pinctrl: %d\n",
> +				 to_of_node(fwnode), ret);
> +		} else {
> +			/* pinctrl-%d not present, not an error */
> +			ret = 0;
> +		}
> +	}
> +
>  	return ret;
>  }
>  

-- 
People of Russia, stop Putin before his war on Ukraine escalates.

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux