ar71xx: make leds-gpio usable with single-ended GPIOs
Add patches for the leds-gpio driver to make it usable with open-drain and open-source kind of GPIO lines. This type of functionality is required by various MikroTik boards. Signed-off-by: Gabor Juhos <juhosg@freemail.hu>
This commit is contained in:
parent
e379e60b17
commit
a4320b3332
2 changed files with 90 additions and 0 deletions
|
@ -0,0 +1,45 @@
|
|||
From 183148e0789bee1cd5c46ba49afcb211f636f8a2 Mon Sep 17 00:00:00 2001
|
||||
From: Gabor Juhos <juhosg@freemail.hu>
|
||||
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 <juhosg@freemail.hu>
|
||||
---
|
||||
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
|
||||
@@ -110,6 +110,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
|
||||
@@ -350,6 +350,8 @@ struct gpio_led {
|
||||
unsigned retain_state_suspended : 1;
|
||||
unsigned default_state : 2;
|
||||
/* 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
|
|
@ -0,0 +1,45 @@
|
|||
From 183148e0789bee1cd5c46ba49afcb211f636f8a2 Mon Sep 17 00:00:00 2001
|
||||
From: Gabor Juhos <juhosg@freemail.hu>
|
||||
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 <juhosg@freemail.hu>
|
||||
---
|
||||
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
|
||||
@@ -380,6 +380,8 @@ struct gpio_led {
|
||||
unsigned panic_indicator : 1;
|
||||
unsigned default_state : 2;
|
||||
/* 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
|
Loading…
Reference in a new issue