* [PATCH v2] mfd: stmpe: switch to using gpiod API
@ 2022-09-06 18:35 Dmitry Torokhov
2022-09-06 18:58 ` Linus Walleij
2022-09-08 10:39 ` Lee Jones
0 siblings, 2 replies; 3+ messages in thread
From: Dmitry Torokhov @ 2022-09-06 18:35 UTC (permalink / raw)
To: Lee Jones, Thierry Reding, Jonathan Hunter
Cc: Rob Herring, Krzysztof Kozlowski, Maxime Coquelin,
Alexandre Torgue, Francesco Dolcini, Linus Walleij, devicetree,
linux-tegra, linux-kernel, linux-stm32, linux-arm-kernel
This patch switches the driver away from legacy gpio/of_gpio API to
gpiod API, and removes use of of_get_named_gpio_flags() which I want to
make private to gpiolib.
We also need to patch relevant DTS files, as the original code relied on
the fact that of_get_named_gpio_flags() would fetch any data encoded in
GPIO flags, even if it does not reflect valid flags for a GPIO.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
v1->v2:
- add DTS changes, as noticed by Francesco Dolcini.
I guess we could do a dance of changing stmpe to check the flags coming
from DTS and try to distinguish IRQ flags from proper GPIO flags, then
have a separate patch changing DTSes, and finally a 2nd patch to stmpe
to use GPIOD API, but I am hoping we could apply this in one go...
arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi | 2 +-
arch/arm/boot/dts/tegra30-apalis.dtsi | 2 +-
arch/arm/boot/dts/tegra30-colibri.dtsi | 2 +-
drivers/mfd/stmpe.c | 36 ++++++++--------------
4 files changed, 16 insertions(+), 26 deletions(-)
diff --git a/arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi b/arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi
index 380f22a35821..a1bcd67fa505 100644
--- a/arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi
+++ b/arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi
@@ -993,7 +993,7 @@ ldo8_reg: ldo8 {
touchscreen@41 {
compatible = "st,stmpe811";
reg = <0x41>;
- irq-gpio = <&gpio TEGRA_GPIO(V, 0) IRQ_TYPE_LEVEL_LOW>;
+ irq-gpio = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
diff --git a/arch/arm/boot/dts/tegra30-apalis.dtsi b/arch/arm/boot/dts/tegra30-apalis.dtsi
index 9bdc4cb71449..99d7dad72d29 100644
--- a/arch/arm/boot/dts/tegra30-apalis.dtsi
+++ b/arch/arm/boot/dts/tegra30-apalis.dtsi
@@ -976,7 +976,7 @@ ldo8_reg: ldo8 {
touchscreen@41 {
compatible = "st,stmpe811";
reg = <0x41>;
- irq-gpio = <&gpio TEGRA_GPIO(V, 0) IRQ_TYPE_LEVEL_LOW>;
+ irq-gpio = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
diff --git a/arch/arm/boot/dts/tegra30-colibri.dtsi b/arch/arm/boot/dts/tegra30-colibri.dtsi
index 310dff05910d..2867a138e011 100644
--- a/arch/arm/boot/dts/tegra30-colibri.dtsi
+++ b/arch/arm/boot/dts/tegra30-colibri.dtsi
@@ -849,7 +849,7 @@ ldo8_reg: ldo8 {
touchscreen@41 {
compatible = "st,stmpe811";
reg = <0x41>;
- irq-gpio = <&gpio TEGRA_GPIO(V, 0) IRQ_TYPE_LEVEL_LOW>;
+ irq-gpio = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
interrupt-controller;
id = <0>;
blocks = <0x5>;
diff --git a/drivers/mfd/stmpe.c b/drivers/mfd/stmpe.c
index 987e251d90ae..0c4f74197d3e 100644
--- a/drivers/mfd/stmpe.c
+++ b/drivers/mfd/stmpe.c
@@ -8,14 +8,13 @@
*/
#include <linux/err.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
#include <linux/export.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/of.h>
-#include <linux/of_gpio.h>
#include <linux/pm.h>
#include <linux/slab.h>
#include <linux/mfd/core.h>
@@ -30,17 +29,12 @@
* @irq_trigger: IRQ trigger to use for the interrupt to the host
* @autosleep: bool to enable/disable stmpe autosleep
* @autosleep_timeout: inactivity timeout in milliseconds for autosleep
- * @irq_over_gpio: true if gpio is used to get irq
- * @irq_gpio: gpio number over which irq will be requested (significant only if
- * irq_over_gpio is true)
*/
struct stmpe_platform_data {
int id;
unsigned int blocks;
unsigned int irq_trigger;
bool autosleep;
- bool irq_over_gpio;
- int irq_gpio;
int autosleep_timeout;
};
@@ -1349,13 +1343,6 @@ static void stmpe_of_probe(struct stmpe_platform_data *pdata,
if (pdata->id < 0)
pdata->id = -1;
- pdata->irq_gpio = of_get_named_gpio_flags(np, "irq-gpio", 0,
- &pdata->irq_trigger);
- if (gpio_is_valid(pdata->irq_gpio))
- pdata->irq_over_gpio = 1;
- else
- pdata->irq_trigger = IRQF_TRIGGER_NONE;
-
of_property_read_u32(np, "st,autosleep-timeout",
&pdata->autosleep_timeout);
@@ -1381,6 +1368,7 @@ int stmpe_probe(struct stmpe_client_info *ci, enum stmpe_partnum partnum)
struct stmpe_platform_data *pdata;
struct device_node *np = ci->dev->of_node;
struct stmpe *stmpe;
+ struct gpio_desc *irq_gpio;
int ret;
u32 val;
@@ -1434,18 +1422,20 @@ int stmpe_probe(struct stmpe_client_info *ci, enum stmpe_partnum partnum)
if (ci->init)
ci->init(stmpe);
- if (pdata->irq_over_gpio) {
- ret = devm_gpio_request_one(ci->dev, pdata->irq_gpio,
- GPIOF_DIR_IN, "stmpe");
- if (ret) {
- dev_err(stmpe->dev, "failed to request IRQ GPIO: %d\n",
- ret);
- return ret;
- }
+ irq_gpio = devm_gpiod_get_optional(ci->dev, "irq", GPIOD_ASIS);
+ ret = PTR_ERR_OR_ZERO(irq_gpio);
+ if (ret) {
+ dev_err(stmpe->dev, "failed to request IRQ GPIO: %d\n", ret);
+ return ret;
+ }
- stmpe->irq = gpio_to_irq(pdata->irq_gpio);
+ if (irq_gpio) {
+ stmpe->irq = gpiod_to_irq(irq_gpio);
+ pdata->irq_trigger = gpiod_is_active_low(irq_gpio) ?
+ IRQF_TRIGGER_LOW : IRQF_TRIGGER_HIGH;
} else {
stmpe->irq = ci->irq;
+ pdata->irq_trigger = IRQF_TRIGGER_NONE;
}
if (stmpe->irq < 0) {
--
2.37.2.789.g6183377224-goog
--
Dmitry
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] mfd: stmpe: switch to using gpiod API
2022-09-06 18:35 [PATCH v2] mfd: stmpe: switch to using gpiod API Dmitry Torokhov
@ 2022-09-06 18:58 ` Linus Walleij
2022-09-08 10:39 ` Lee Jones
1 sibling, 0 replies; 3+ messages in thread
From: Linus Walleij @ 2022-09-06 18:58 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Lee Jones, Thierry Reding, Jonathan Hunter, Rob Herring,
Krzysztof Kozlowski, Maxime Coquelin, Alexandre Torgue,
Francesco Dolcini, devicetree, linux-tegra, linux-kernel,
linux-stm32, linux-arm-kernel
On Tue, Sep 6, 2022 at 8:35 PM Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> This patch switches the driver away from legacy gpio/of_gpio API to
> gpiod API, and removes use of of_get_named_gpio_flags() which I want to
> make private to gpiolib.
>
> We also need to patch relevant DTS files, as the original code relied on
> the fact that of_get_named_gpio_flags() would fetch any data encoded in
> GPIO flags, even if it does not reflect valid flags for a GPIO.
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> ---
>
> v1->v2:
> - add DTS changes, as noticed by Francesco Dolcini.
>
> I guess we could do a dance of changing stmpe to check the flags coming
> from DTS and try to distinguish IRQ flags from proper GPIO flags, then
> have a separate patch changing DTSes, and finally a 2nd patch to stmpe
> to use GPIOD API, but I am hoping we could apply this in one go...
It's a mess, let's just apply it and forget about it. It's one of those
trees falling in the forest and noone is there to hear it fall-type of
things.
Yours,
Linus Walleij
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] mfd: stmpe: switch to using gpiod API
2022-09-06 18:35 [PATCH v2] mfd: stmpe: switch to using gpiod API Dmitry Torokhov
2022-09-06 18:58 ` Linus Walleij
@ 2022-09-08 10:39 ` Lee Jones
1 sibling, 0 replies; 3+ messages in thread
From: Lee Jones @ 2022-09-08 10:39 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Thierry Reding, Jonathan Hunter, Rob Herring,
Krzysztof Kozlowski, Maxime Coquelin, Alexandre Torgue,
Francesco Dolcini, Linus Walleij, devicetree, linux-tegra,
linux-kernel, linux-stm32, linux-arm-kernel
On Tue, 06 Sep 2022, Dmitry Torokhov wrote:
> This patch switches the driver away from legacy gpio/of_gpio API to
> gpiod API, and removes use of of_get_named_gpio_flags() which I want to
> make private to gpiolib.
>
> We also need to patch relevant DTS files, as the original code relied on
> the fact that of_get_named_gpio_flags() would fetch any data encoded in
> GPIO flags, even if it does not reflect valid flags for a GPIO.
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
>
> v1->v2:
> - add DTS changes, as noticed by Francesco Dolcini.
>
> I guess we could do a dance of changing stmpe to check the flags coming
> from DTS and try to distinguish IRQ flags from proper GPIO flags, then
> have a separate patch changing DTSes, and finally a 2nd patch to stmpe
> to use GPIOD API, but I am hoping we could apply this in one go...
>
> arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi | 2 +-
> arch/arm/boot/dts/tegra30-apalis.dtsi | 2 +-
> arch/arm/boot/dts/tegra30-colibri.dtsi | 2 +-
> drivers/mfd/stmpe.c | 36 ++++++++--------------
> 4 files changed, 16 insertions(+), 26 deletions(-)
Applied, thanks.
--
Lee Jones [李琼斯]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-09-08 10:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 18:35 [PATCH v2] mfd: stmpe: switch to using gpiod API Dmitry Torokhov
2022-09-06 18:58 ` Linus Walleij
2022-09-08 10:39 ` Lee Jones
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).