From 183148e0789bee1cd5c46ba49afcb211f636f8a2 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Mon, 15 Jan 2018 15:01:14 +0100 Subject: [PATCH] leds: gpio: allow to use OPEN_{DRAIN,SOURCE} flags with legacy GPIOs LEDs which are connected to open-source or open-drain type of GPIO lines can be used only, if those are defined via devicetree. Add two new fields to 'struct gpio_led' in order to make it possible to specify this type of GPIO lines to the leds-gpio driver via platform data. Also update the create_gpio_led() function to set the GPIOF_OPEN_DRAIN and GPIOF_OPEN_SOURCE flags for the given GPIO line. Signed-off-by: Gabor Juhos --- drivers/leds/leds-gpio.c | 6 ++++++ include/linux/leds.h | 2 ++ 2 files changed, 8 insertions(+) --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c @@ -100,6 +100,12 @@ static int create_gpio_led(const struct if (template->active_low) flags |= GPIOF_ACTIVE_LOW; + if (template->open_drain) + flags |= GPIOF_OPEN_DRAIN; + + if (template->open_source) + flags |= GPIOF_OPEN_SOURCE; + ret = devm_gpio_request_one(parent, template->gpio, flags, template->name); if (ret < 0) --- a/include/linux/leds.h +++ b/include/linux/leds.h @@ -395,6 +395,8 @@ struct gpio_led { unsigned default_state : 2; unsigned retain_state_shutdown : 1; /* default_state should be one of LEDS_GPIO_DEFSTATE_(ON|OFF|KEEP) */ + unsigned open_drain : 1; + unsigned open_source : 1; struct gpio_desc *gpiod; }; #define LEDS_GPIO_DEFSTATE_OFF 0