All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 RESEND 0/3] Input: egalax_ts: parse devicetree to get gpio
@ 2012-10-10  9:12 Hui Wang
  2012-10-10  9:12 ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Hui Wang
  0 siblings, 1 reply; 12+ messages in thread
From: Hui Wang @ 2012-10-10  9:12 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo; +Cc: linux-input, devicetree-discuss

Hi Dmitry,

The patchset was sent out for review during the time you were away
from the maillist. Now you are back, i rebase the patchset to the latest
upstream and i resend them to you to catch your notice.

The patchset has been reviewed by JieJing and Shawn, if you are OK
for the patchset, please apply 0001-xxx.patch and 0002-xxx.patch to
your tree. Shawn will merge 0003-xxx.patch from his tree.

Thanks,
Hui.

Hui Wang (3):
  Input: egalax_ts: get gpio from devicetree node
  Input: add devicetree binding note for egalax_ts
  ARM: dts: imx6q-sabrelite: add eeti egalax touchscreen

 .../bindings/input/touchscreen/egalax-ts.txt       |   19 +++++++++++++++
 arch/arm/boot/dts/imx6q-sabrelite.dts              |   16 ++++++++++++
 arch/arm/boot/dts/imx6q.dtsi                       |    9 +++++++
 drivers/input/touchscreen/egalax_ts.c              |   25 +++++++++++++++++--
 4 files changed, 66 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt

-- 
1.7.6


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
  2012-10-10  9:12 [PATCH v4 RESEND 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
@ 2012-10-10  9:12 ` Hui Wang
  2012-10-10  9:12   ` [PATCH v4 RESEND 2/3] Input: add devicetree binding note for Hui Wang
  2012-10-10 16:30   ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Dmitry Torokhov
  0 siblings, 2 replies; 12+ messages in thread
From: Hui Wang @ 2012-10-10  9:12 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo; +Cc: linux-input, devicetree-discuss

The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
and don't support this API anymore.

The i.MX6q sabrelite platform equips an egalax touchscreen controller,
and this platform already transfered to GENERIC_GPIO framework, to
support this driver, we use a more generic way to get gpio.

Add a return value checking for waking up the controller in the probe
function, this guarantee only a workable device can pass init.

Ackyed-by Zhang Jiejing <jiejing.zhang@freescale.com>
Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Hui Wang <jason77.wang@gmail.com>
---
 drivers/input/touchscreen/egalax_ts.c |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
index c1e3460..1901f52 100644
--- a/drivers/input/touchscreen/egalax_ts.c
+++ b/drivers/input/touchscreen/egalax_ts.c
@@ -28,6 +28,7 @@
 #include <linux/slab.h>
 #include <linux/bitops.h>
 #include <linux/input/mt.h>
+#include <linux/of_gpio.h>
 
 /*
  * Mouse Mode: some panel may configure the controller to mouse mode,
@@ -122,8 +123,15 @@ static irqreturn_t egalax_ts_interrupt(int irq, void *dev_id)
 /* wake up controller by an falling edge of interrupt gpio.  */
 static int egalax_wake_up_device(struct i2c_client *client)
 {
-	int gpio = irq_to_gpio(client->irq);
-	int ret;
+	struct device_node *np = client->dev.of_node;
+	int gpio, ret;
+
+	if (!np)
+		return -ENODEV;
+
+	gpio = of_get_named_gpio(np, "wakeup-gpios", 0);
+	if (!gpio_is_valid(gpio))
+		return -ENODEV;
 
 	ret = gpio_request(gpio, "egalax_irq");
 	if (ret < 0) {
@@ -181,7 +189,12 @@ static int __devinit egalax_ts_probe(struct i2c_client *client,
 	ts->input_dev = input_dev;
 
 	/* controller may be in sleep, wake it up. */
-	egalax_wake_up_device(client);
+	ret = egalax_wake_up_device(client);
+	if (ret < 0) {
+		dev_err(&client->dev, "Failed to wake up the controller\n");
+		error = ret;
+		goto err_free_dev;
+	}
 
 	ret = egalax_firmware_version(client);
 	if (ret < 0) {
@@ -274,11 +287,17 @@ static int egalax_ts_resume(struct device *dev)
 
 static SIMPLE_DEV_PM_OPS(egalax_ts_pm_ops, egalax_ts_suspend, egalax_ts_resume);
 
+static struct of_device_id egalax_ts_dt_ids[] = {
+	{ .compatible = "eeti,egalax_ts" },
+	{ /* sentinel */ }
+};
+
 static struct i2c_driver egalax_ts_driver = {
 	.driver = {
 		.name	= "egalax_ts",
 		.owner	= THIS_MODULE,
 		.pm	= &egalax_ts_pm_ops,
+		.of_match_table	= egalax_ts_dt_ids,
 	},
 	.id_table	= egalax_ts_id,
 	.probe		= egalax_ts_probe,
-- 
1.7.6


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 RESEND 2/3] Input: add devicetree binding note for
  2012-10-10  9:12 ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Hui Wang
@ 2012-10-10  9:12   ` Hui Wang
  2012-10-10  9:12     ` [PATCH v4 RESEND 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
  2012-10-10 16:30   ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Dmitry Torokhov
  1 sibling, 1 reply; 12+ messages in thread
From: Hui Wang @ 2012-10-10  9:12 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo; +Cc: linux-input, devicetree-discuss

The egalax_ts driver needs to get the gpio number of the irq pin,
and use this gpio to wake up the controller. So add a note
for this change.

Ackyed-by Zhang Jiejing <jiejing.zhang@freescale.com>
Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Hui Wang <jason77.wang@gmail.com>
---
 .../bindings/input/touchscreen/egalax-ts.txt       |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt

diff --git a/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt b/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
new file mode 100644
index 0000000..df70318
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
@@ -0,0 +1,19 @@
+* EETI eGalax Multiple Touch Controller
+
+Required properties:
+- compatible: must be "eeti,egalax_ts"
+- reg: i2c slave address
+- interrupt-parent: the phandle for the interrupt controller
+- interrupts: touch controller interrupt
+- wakeup-gpios: the gpio pin to be used for waking up the controller
+  as well as uased as irq pin
+
+Example:
+
+	egalax_ts@04 {
+		compatible = "eeti,egalax_ts";
+		reg = <0x04>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <9 2>;
+		wakeup-gpios = <&gpio1 9 0>;
+	};
-- 
1.7.6


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 RESEND 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
  2012-10-10  9:12   ` [PATCH v4 RESEND 2/3] Input: add devicetree binding note for Hui Wang
@ 2012-10-10  9:12     ` Hui Wang
  0 siblings, 0 replies; 12+ messages in thread
From: Hui Wang @ 2012-10-10  9:12 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo; +Cc: linux-input, devicetree-discuss

i.MX6Q sabrelite board uses i2c3 to connect an eeti egalax
touchscreen controller, add it as an i2c slave device in the dts.

Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Hui Wang <jason77.wang@gmail.com>
---
 arch/arm/boot/dts/imx6q-sabrelite.dts |   16 ++++++++++++++++
 arch/arm/boot/dts/imx6q.dtsi          |    9 +++++++++
 2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts
index d152328..99bef81 100644
--- a/arch/arm/boot/dts/imx6q-sabrelite.dts
+++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
@@ -59,6 +59,7 @@
 							1262 0x80000000 /* MX6Q_PAD_SD3_DAT5__GPIO_7_0 */
 							1270 0x1f0b0	/* MX6Q_PAD_SD3_DAT4__GPIO_7_1 */
 							953  0x80000000	/* MX6Q_PAD_GPIO_0__CCM_CLKO */
+							972  0x10	/* MX6Q_PAD_GPIO_9__GPIO_1_9 */
 						>;
 					};
 				};
@@ -130,6 +131,21 @@
 					VDDIO-supply = <&reg_3p3v>;
 				};
 			};
+
+			i2c@021a8000 { /* I2C3 */
+				status = "okay";
+				clock-frequency = <100000>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_i2c3_1>;
+
+				egalax_ts@04 {
+					compatible = "eeti,egalax_ts";
+					reg = <0x04>;
+					interrupt-parent = <&gpio1>;
+					interrupts = <9 8>;
+					wakeup-gpios = <&gpio1 9 0>;
+				};
+			};
 		};
 	};
 
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
index f3990b0..8c5d8d9 100644
--- a/arch/arm/boot/dts/imx6q.dtsi
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -639,6 +639,15 @@
 					};
 				};
 
+				i2c3 {
+					pinctrl_i2c3_1: i2c3grp-1 {
+						fsl,pins = <
+							1013 0x4001b8b1	/* MX6Q_PAD_GPIO_5__I2C3_SCL */
+							1037 0x4001b8b1	/* MX6Q_PAD_GPIO_16__I2C3_SDA */
+						>;
+					};
+				};
+
 				uart1 {
 					pinctrl_uart1_1: uart1grp-1 {
 						fsl,pins = <
-- 
1.7.6


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
  2012-10-10  9:12 ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Hui Wang
  2012-10-10  9:12   ` [PATCH v4 RESEND 2/3] Input: add devicetree binding note for Hui Wang
@ 2012-10-10 16:30   ` Dmitry Torokhov
  2012-10-11  8:55       ` Shawn Guo
  2012-10-11 10:25     ` Arnd Bergmann
  1 sibling, 2 replies; 12+ messages in thread
From: Dmitry Torokhov @ 2012-10-10 16:30 UTC (permalink / raw)
  To: Hui Wang; +Cc: jiejing.zhang, shawn.guo, linux-input, devicetree-discuss

Hi Hui,

On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
> The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> and don't support this API anymore.
> 
> The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> and this platform already transfered to GENERIC_GPIO framework, to
> support this driver, we use a more generic way to get gpio.

Unfortunately this does break the driver for platforms that do still
support irq_to_gpio and have not transitioned to device tree (yet?).
It looks like the API suffered from premature deletion...

I really do not want to add a new platform data structure with only gpio
in it, is there a better way to detect if irq_to_gpio() (even if only a
stub) is available?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
  2012-10-10 16:30   ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Dmitry Torokhov
@ 2012-10-11  8:55       ` Shawn Guo
  2012-10-11 10:25     ` Arnd Bergmann
  1 sibling, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2012-10-11  8:55 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Hui Wang, jiejing.zhang, linux-input, devicetree-discuss,
	linux-arm-kernel

Add LAKML ...

On Wed, Oct 10, 2012 at 09:30:36AM -0700, Dmitry Torokhov wrote:
> Hi Hui,
> 
> On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
> > The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> > and don't support this API anymore.
> > 
> > The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> > and this platform already transfered to GENERIC_GPIO framework, to
> > support this driver, we use a more generic way to get gpio.
> 
> Unfortunately this does break the driver for platforms that do still
> support irq_to_gpio and have not transitioned to device tree (yet?).
> It looks like the API suffered from premature deletion...
> 
> I really do not want to add a new platform data structure with only gpio
> in it, is there a better way to detect if irq_to_gpio() (even if only a
> stub) is available?
> 
If CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is not enabled for an architecture,
the irq_to_gpio() in include/linux/gpio.h will tell unavailability by
returning -EINVAL.  But ARM architecture still selects ARCH_HAVE_CUSTOM_GPIO_H
because there are still some platforms having mach/gpio.h.

We may also need a stub irq_to_gpio simply returning -EINVAL into
arch/arm/include/asm/gpio.h when platform does not provide irq_to_gpio,
so that driver can detect if irq_to_gpio() is available.  And that
stub can be removed later when we deselect ARCH_HAVE_CUSTOM_GPIO_H
for ARM architecture.

Shawn

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
@ 2012-10-11  8:55       ` Shawn Guo
  0 siblings, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2012-10-11  8:55 UTC (permalink / raw)
  To: linux-arm-kernel

Add LAKML ...

On Wed, Oct 10, 2012 at 09:30:36AM -0700, Dmitry Torokhov wrote:
> Hi Hui,
> 
> On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
> > The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> > and don't support this API anymore.
> > 
> > The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> > and this platform already transfered to GENERIC_GPIO framework, to
> > support this driver, we use a more generic way to get gpio.
> 
> Unfortunately this does break the driver for platforms that do still
> support irq_to_gpio and have not transitioned to device tree (yet?).
> It looks like the API suffered from premature deletion...
> 
> I really do not want to add a new platform data structure with only gpio
> in it, is there a better way to detect if irq_to_gpio() (even if only a
> stub) is available?
> 
If CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is not enabled for an architecture,
the irq_to_gpio() in include/linux/gpio.h will tell unavailability by
returning -EINVAL.  But ARM architecture still selects ARCH_HAVE_CUSTOM_GPIO_H
because there are still some platforms having mach/gpio.h.

We may also need a stub irq_to_gpio simply returning -EINVAL into
arch/arm/include/asm/gpio.h when platform does not provide irq_to_gpio,
so that driver can detect if irq_to_gpio() is available.  And that
stub can be removed later when we deselect ARCH_HAVE_CUSTOM_GPIO_H
for ARM architecture.

Shawn

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
  2012-10-11  8:55       ` Shawn Guo
@ 2012-10-11  9:23         ` Hui Wang
  -1 siblings, 0 replies; 12+ messages in thread
From: Hui Wang @ 2012-10-11  9:23 UTC (permalink / raw)
  To: Shawn Guo
  Cc: Dmitry Torokhov, Hui Wang, jiejing.zhang, linux-input,
	devicetree-discuss, linux-arm-kernel

Shawn Guo wrote:
> Add LAKML ...
>
> On Wed, Oct 10, 2012 at 09:30:36AM -0700, Dmitry Torokhov wrote:
>   
>> Hi Hui,
>>
>> On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
>>     
>>> The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
>>> and don't support this API anymore.
>>>
>>> The i.MX6q sabrelite platform equips an egalax touchscreen controller,
>>> and this platform already transfered to GENERIC_GPIO framework, to
>>> support this driver, we use a more generic way to get gpio.
>>>       
>> Unfortunately this does break the driver for platforms that do still
>> support irq_to_gpio and have not transitioned to device tree (yet?).
>> It looks like the API suffered from premature deletion...
>>
>> I really do not want to add a new platform data structure with only gpio
>> in it, is there a better way to detect if irq_to_gpio() (even if only a
>> stub) is available?
>>
>>     
> If CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is not enabled for an architecture,
> the irq_to_gpio() in include/linux/gpio.h will tell unavailability by
> returning -EINVAL.  But ARM
>   
So far, the only way i can figure out is to add following in the 
arch/arm/include/asm/gpio.h

static inline int arm_irq_to_gpio(unsigned int irq)
{
return -EINVAL;
}

#ifndef irq_to_gpio
#define irq_to_gpio arm_irq_to_gpio
#endif

And remove all irq_to_gpio() function definitions in the arch/arm/, if 
mach want a specific irq_to_gpio, they can use macro to define their own.

Regards,
Hui.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
@ 2012-10-11  9:23         ` Hui Wang
  0 siblings, 0 replies; 12+ messages in thread
From: Hui Wang @ 2012-10-11  9:23 UTC (permalink / raw)
  To: linux-arm-kernel

Shawn Guo wrote:
> Add LAKML ...
>
> On Wed, Oct 10, 2012 at 09:30:36AM -0700, Dmitry Torokhov wrote:
>   
>> Hi Hui,
>>
>> On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
>>     
>>> The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
>>> and don't support this API anymore.
>>>
>>> The i.MX6q sabrelite platform equips an egalax touchscreen controller,
>>> and this platform already transfered to GENERIC_GPIO framework, to
>>> support this driver, we use a more generic way to get gpio.
>>>       
>> Unfortunately this does break the driver for platforms that do still
>> support irq_to_gpio and have not transitioned to device tree (yet?).
>> It looks like the API suffered from premature deletion...
>>
>> I really do not want to add a new platform data structure with only gpio
>> in it, is there a better way to detect if irq_to_gpio() (even if only a
>> stub) is available?
>>
>>     
> If CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is not enabled for an architecture,
> the irq_to_gpio() in include/linux/gpio.h will tell unavailability by
> returning -EINVAL.  But ARM
>   
So far, the only way i can figure out is to add following in the 
arch/arm/include/asm/gpio.h

static inline int arm_irq_to_gpio(unsigned int irq)
{
return -EINVAL;
}

#ifndef irq_to_gpio
#define irq_to_gpio arm_irq_to_gpio
#endif

And remove all irq_to_gpio() function definitions in the arch/arm/, if 
mach want a specific irq_to_gpio, they can use macro to define their own.

Regards,
Hui.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
  2012-10-11  8:55       ` Shawn Guo
@ 2012-10-11 10:19         ` Russell King - ARM Linux
  -1 siblings, 0 replies; 12+ messages in thread
From: Russell King - ARM Linux @ 2012-10-11 10:19 UTC (permalink / raw)
  To: Shawn Guo
  Cc: Dmitry Torokhov, devicetree-discuss, Hui Wang, jiejing.zhang,
	linux-arm-kernel, linux-input

On Thu, Oct 11, 2012 at 04:55:40PM +0800, Shawn Guo wrote:
> Add LAKML ...
> 
> On Wed, Oct 10, 2012 at 09:30:36AM -0700, Dmitry Torokhov wrote:
> > Hi Hui,
> > 
> > On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
> > > The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> > > and don't support this API anymore.
> > > 
> > > The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> > > and this platform already transfered to GENERIC_GPIO framework, to
> > > support this driver, we use a more generic way to get gpio.
> > 
> > Unfortunately this does break the driver for platforms that do still
> > support irq_to_gpio and have not transitioned to device tree (yet?).
> > It looks like the API suffered from premature deletion...
> > 
> > I really do not want to add a new platform data structure with only gpio
> > in it, is there a better way to detect if irq_to_gpio() (even if only a
> > stub) is available?
> > 
> If CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is not enabled for an architecture,
> the irq_to_gpio() in include/linux/gpio.h will tell unavailability by
> returning -EINVAL.  But ARM architecture still selects ARCH_HAVE_CUSTOM_GPIO_H
> because there are still some platforms having mach/gpio.h.
> 
> We may also need a stub irq_to_gpio simply returning -EINVAL into
> arch/arm/include/asm/gpio.h when platform does not provide irq_to_gpio,
> so that driver can detect if irq_to_gpio() is available.  And that
> stub can be removed later when we deselect ARCH_HAVE_CUSTOM_GPIO_H
> for ARM architecture.

Or fix the drivers using irq_to_gpio() not to use it.  I thought we had
resolved to do that already, with Grant's agreement that irq_to_gpio()
needed to die.

(Mainly because neither gpiolib nor the IRQ layer provides any assistance
for irq_to_gpio(), so it's not possible to make it work for all GPIOs in
the system, especially when GPIOs are allocated dynamically.)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
@ 2012-10-11 10:19         ` Russell King - ARM Linux
  0 siblings, 0 replies; 12+ messages in thread
From: Russell King - ARM Linux @ 2012-10-11 10:19 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Oct 11, 2012 at 04:55:40PM +0800, Shawn Guo wrote:
> Add LAKML ...
> 
> On Wed, Oct 10, 2012 at 09:30:36AM -0700, Dmitry Torokhov wrote:
> > Hi Hui,
> > 
> > On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
> > > The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> > > and don't support this API anymore.
> > > 
> > > The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> > > and this platform already transfered to GENERIC_GPIO framework, to
> > > support this driver, we use a more generic way to get gpio.
> > 
> > Unfortunately this does break the driver for platforms that do still
> > support irq_to_gpio and have not transitioned to device tree (yet?).
> > It looks like the API suffered from premature deletion...
> > 
> > I really do not want to add a new platform data structure with only gpio
> > in it, is there a better way to detect if irq_to_gpio() (even if only a
> > stub) is available?
> > 
> If CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is not enabled for an architecture,
> the irq_to_gpio() in include/linux/gpio.h will tell unavailability by
> returning -EINVAL.  But ARM architecture still selects ARCH_HAVE_CUSTOM_GPIO_H
> because there are still some platforms having mach/gpio.h.
> 
> We may also need a stub irq_to_gpio simply returning -EINVAL into
> arch/arm/include/asm/gpio.h when platform does not provide irq_to_gpio,
> so that driver can detect if irq_to_gpio() is available.  And that
> stub can be removed later when we deselect ARCH_HAVE_CUSTOM_GPIO_H
> for ARM architecture.

Or fix the drivers using irq_to_gpio() not to use it.  I thought we had
resolved to do that already, with Grant's agreement that irq_to_gpio()
needed to die.

(Mainly because neither gpiolib nor the IRQ layer provides any assistance
for irq_to_gpio(), so it's not possible to make it work for all GPIOs in
the system, especially when GPIOs are allocated dynamically.)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree
  2012-10-10 16:30   ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Dmitry Torokhov
  2012-10-11  8:55       ` Shawn Guo
@ 2012-10-11 10:25     ` Arnd Bergmann
  1 sibling, 0 replies; 12+ messages in thread
From: Arnd Bergmann @ 2012-10-11 10:25 UTC (permalink / raw)
  To: devicetree-discuss; +Cc: Dmitry Torokhov, Hui Wang, jiejing.zhang, linux-input

On Wednesday 10 October 2012, Dmitry Torokhov wrote:
> On Wed, Oct 10, 2012 at 05:12:01PM +0800, Hui Wang wrote:
> > The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
> > and don't support this API anymore.
> > 
> > The i.MX6q sabrelite platform equips an egalax touchscreen controller,
> > and this platform already transfered to GENERIC_GPIO framework, to
> > support this driver, we use a more generic way to get gpio.
> 
> Unfortunately this does break the driver for platforms that do still
> support irq_to_gpio and have not transitioned to device tree (yet?).
> It looks like the API suffered from premature deletion...

The API was changed after all users of irq_to_gpio on ARM were assumed to
be converted. The remaining users either had patches back then that were
not merged in time or were merged after the conversion. Right now what
we have left are:

drivers/ata/pata_rb532_cf.c: blackfin specific, not for ARM

drivers/input/touchscreen/egalax_ts.c: currently broken, patches were sent a few times

drivers/pcmcia/db1xxx_ss.c: MIPS specific

drivers/power/tosa_battery.c: has been broken for a long time, ARM PXA specific

drivers/staging/iio/accel/lis3l02dq_core.c: patch was sent recently,
					will get merged into 3.7

egalax_ts is currently the only thing that prevents us from building
allyesconfig on ARM.

> I really do not want to add a new platform data structure with only gpio
> in it, is there a better way to detect if irq_to_gpio() (even if only a
> stub) is available?

There are no platforms in the mainline kernel that define an egalax_ts
platforms_device, I think we can safely assume all users are either DT
based, or they need out of tree patches anyway.

	Arnd

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2012-10-11 10:25 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-10  9:12 [PATCH v4 RESEND 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
2012-10-10  9:12 ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Hui Wang
2012-10-10  9:12   ` [PATCH v4 RESEND 2/3] Input: add devicetree binding note for Hui Wang
2012-10-10  9:12     ` [PATCH v4 RESEND 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
2012-10-10 16:30   ` [PATCH v4 RESEND 1/3] Input: egalax_ts: get gpio from devicetree Dmitry Torokhov
2012-10-11  8:55     ` Shawn Guo
2012-10-11  8:55       ` Shawn Guo
2012-10-11  9:23       ` Hui Wang
2012-10-11  9:23         ` Hui Wang
2012-10-11 10:19       ` Russell King - ARM Linux
2012-10-11 10:19         ` Russell King - ARM Linux
2012-10-11 10:25     ` Arnd Bergmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.