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

V4:

add of_match_table in the driver, and change egalax_ts gpio irq type value from
2 to 8 (falling edge to low level) in the dts.

V3:

Although have got Ack-by from driver author in the V2, i have to send
V3 since the driver is changed due to the change of a property name
in the dts.

As Shawn.guo suggested, i renamed property "irq-gpio" to "wakeup-gpios".
The reason is that, firstly the idiom of gpio naming in DT is *-gpios,
even though most of time, it could be just one gpio, secondly as the pin is
accessed as a gpio only in egalax_wake_up_device for waking up the device.

This time i send the patches both to linux-input and linux-arm, 0001 and
0002 belongs to linux-input, while the 0003 belongs to linux-arm.

V2:

Add return value checking for waking up the controller in the probe
function.

V1:

eeti touch screen controller is an external chip for most platforms,
it connect to CPU via i2c bus, and it has a irq request pin need to be
connected to a gpio of the CPU, this irq request pin also act as a
wake up signal for touch screen controller, we need to get this gpio
number and operate it to wake up the controller, the old way to get
gpio is irq_to_gpio(), this API is dying and most platforms don't support
it, we change it to a more generic way to use devcietree.

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                       |    7 +++++
 drivers/input/touchscreen/egalax_ts.c              |   25 +++++++++++++++++--
 4 files changed, 64 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt

-- 
1.7.6


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

* [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node
  2012-08-16 10:47 [PATCH v4 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
@ 2012-08-16 10:47 ` Hui Wang
  2012-08-16 10:47   ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
  2012-08-17  0:31   ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Shawn Guo
  0 siblings, 2 replies; 11+ messages in thread
From: Hui Wang @ 2012-08-16 10:47 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo
  Cc: linux-input, linux-arm-kernel, 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.

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 70524dd..8516a4e 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] 11+ messages in thread

* [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts
  2012-08-16 10:47 ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
@ 2012-08-16 10:47   ` Hui Wang
  2012-08-16 10:47     ` [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
  2012-08-17  0:32     ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Shawn Guo
  2012-08-17  0:31   ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Shawn Guo
  1 sibling, 2 replies; 11+ messages in thread
From: Hui Wang @ 2012-08-16 10:47 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo
  Cc: linux-input, linux-arm-kernel, 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.

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] 11+ messages in thread

* [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
  2012-08-16 10:47   ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
@ 2012-08-16 10:47     ` Hui Wang
  2012-08-17  0:33       ` Shawn Guo
  2012-08-17  0:32     ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Shawn Guo
  1 sibling, 1 reply; 11+ messages in thread
From: Hui Wang @ 2012-08-16 10:47 UTC (permalink / raw)
  To: dmitry.torokhov, jiejing.zhang, shawn.guo
  Cc: linux-input, linux-arm-kernel, 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.

Signed-off-by: Hui Wang <jason77.wang@gmail.com>
---
 arch/arm/boot/dts/imx6q-sabrelite.dts |   16 ++++++++++++++++
 arch/arm/boot/dts/imx6q.dtsi          |    7 +++++++
 2 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts
index 72f30f3..337ec74 100644
--- a/arch/arm/boot/dts/imx6q-sabrelite.dts
+++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
@@ -54,6 +54,7 @@
 							   144  0x80000000	/* MX6Q_PAD_EIM_D22__GPIO_3_22 */
 							   121  0x80000000	/* MX6Q_PAD_EIM_D19__GPIO_3_19 */
 							   953  0x80000000	/* MX6Q_PAD_GPIO_0__CCM_CLKO */
+							   972  0x10		/* MX6Q_PAD_GPIO_9__GPIO_1_9 */
 							   >;
 					};
 				};
@@ -115,6 +116,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 fd57079..6f833b3 100644
--- a/arch/arm/boot/dts/imx6q.dtsi
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -552,6 +552,13 @@
 					};
 				};
 
+				i2c3 {
+					pinctrl_i2c3_1: i2c3grp-1 {
+						fsl,pins = <1013 0x4001b8b1	/* MX6Q_PAD_GPIO_5__I2C3_SCL */
+							    1037 0x4001b8b1>;	/* MX6Q_PAD_GPIO_16__I2C3_SDA */
+					};
+				};
+
 				serial2 {
 					pinctrl_serial2_1: serial2grp-1 {
 						fsl,pins = <183 0x1b0b1		/* MX6Q_PAD_EIM_D26__UART2_TXD */
-- 
1.7.6


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

* Re: [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node
  2012-08-16 10:47 ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
  2012-08-16 10:47   ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
@ 2012-08-17  0:31   ` Shawn Guo
  2012-10-09 11:58     ` Arnd Bergmann
  1 sibling, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2012-08-17  0:31 UTC (permalink / raw)
  To: Hui Wang
  Cc: dmitry.torokhov, jiejing.zhang, linux-input, linux-arm-kernel,
	devicetree-discuss

On Thu, Aug 16, 2012 at 06:47:29PM +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.
> 
> Add a return value checking for waking up the controller in the probe
> function, this guarantee only a workable device can pass init.
> 
> Signed-off-by: Hui Wang <jason77.wang@gmail.com>

Reviewed-by: Shawn Guo <shawn.guo@linaro.org>

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

* Re: [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts
  2012-08-16 10:47   ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
  2012-08-16 10:47     ` [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
@ 2012-08-17  0:32     ` Shawn Guo
  1 sibling, 0 replies; 11+ messages in thread
From: Shawn Guo @ 2012-08-17  0:32 UTC (permalink / raw)
  To: Hui Wang
  Cc: dmitry.torokhov, jiejing.zhang, linux-input, linux-arm-kernel,
	devicetree-discuss

On Thu, Aug 16, 2012 at 06:47:30PM +0800, Hui Wang wrote:
> 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.
> 
> Signed-off-by: Hui Wang <jason77.wang@gmail.com>

Reviewed-by: Shawn Guo <shawn.guo@linaro.org>

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

* Re: [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
  2012-08-16 10:47     ` [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
@ 2012-08-17  0:33       ` Shawn Guo
  2012-08-17  1:20         ` Hui Wang
  0 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2012-08-17  0:33 UTC (permalink / raw)
  To: Hui Wang
  Cc: dmitry.torokhov, jiejing.zhang, linux-input, linux-arm-kernel,
	devicetree-discuss

On Thu, Aug 16, 2012 at 06:47:31PM +0800, Hui Wang wrote:
> i.MX6Q sabrelite board uses i2c3 to connect an eeti egalax
> touchscreen controller, add it as an i2c slave device in the dts.
> 
> Signed-off-by: Hui Wang <jason77.wang@gmail.com>

Looks good.  Will apply it after the driver part gets accepted.

-- 
Regards,
Shawn

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

* Re: [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
  2012-08-17  0:33       ` Shawn Guo
@ 2012-08-17  1:20         ` Hui Wang
  0 siblings, 0 replies; 11+ messages in thread
From: Hui Wang @ 2012-08-17  1:20 UTC (permalink / raw)
  To: Shawn Guo
  Cc: Hui Wang, dmitry.torokhov, jiejing.zhang, linux-input,
	linux-arm-kernel, devicetree-discuss

Shawn Guo wrote:
> On Thu, Aug 16, 2012 at 06:47:31PM +0800, Hui Wang wrote:
>   
>> i.MX6Q sabrelite board uses i2c3 to connect an eeti egalax
>> touchscreen controller, add it as an i2c slave device in the dts.
>>
>> Signed-off-by: Hui Wang <jason77.wang@gmail.com>
>>     
>
> Looks good.  Will apply it after the driver part gets accepted.
>
>   
Got it, thanks.

Regards,
Hui.


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

* Re: [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node
  2012-08-17  0:31   ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Shawn Guo
@ 2012-10-09 11:58     ` Arnd Bergmann
  2012-10-10  3:26       ` Hui Wang
  0 siblings, 1 reply; 11+ messages in thread
From: Arnd Bergmann @ 2012-10-09 11:58 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Shawn Guo, Hui Wang, devicetree-discuss, dmitry.torokhov,
	jiejing.zhang, linux-input

On Friday 17 August 2012, Shawn Guo wrote:
> On Thu, Aug 16, 2012 at 06:47:29PM +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.
> > 
> > Add a return value checking for waking up the controller in the probe
> > function, this guarantee only a workable device can pass init.
> > 
> > Signed-off-by: Hui Wang <jason77.wang@gmail.com>
> 
> Reviewed-by: Shawn Guo <shawn.guo@linaro.org>

What's the status on this patch? I'm still getting build errors from this
driver, so I guess it was never accepted for the 3.7 merge window.

	Arnd

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

* Re: [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node
  2012-10-09 11:58     ` Arnd Bergmann
@ 2012-10-10  3:26       ` Hui Wang
  2012-10-10  6:18         ` Arnd Bergmann
  0 siblings, 1 reply; 11+ messages in thread
From: Hui Wang @ 2012-10-10  3:26 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-arm-kernel, Shawn Guo, Hui Wang, devicetree-discuss,
	dmitry.torokhov, jiejing.zhang, linux-input

Arnd Bergmann wrote:
> On Friday 17 August 2012, Shawn Guo wrote:
>   
>> On Thu, Aug 16, 2012 at 06:47:29PM +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.
>>>
>>> Add a return value checking for waking up the controller in the probe
>>> function, this guarantee only a workable device can pass init.
>>>
>>> Signed-off-by: Hui Wang <jason77.wang@gmail.com>
>>>       
>> Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
>>     
>
> What's the status on this patch? I'm still getting build errors from this
> driver, so I guess it was never accepted for the 3.7 merge window.
>
> 	Arnd
>
>   
I forgot to resend this patchset After Dmitry was back to the maillist. 
I will rebase the patchset and resend them to review.

Regards,
Hui.


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

* Re: [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node
  2012-10-10  3:26       ` Hui Wang
@ 2012-10-10  6:18         ` Arnd Bergmann
  0 siblings, 0 replies; 11+ messages in thread
From: Arnd Bergmann @ 2012-10-10  6:18 UTC (permalink / raw)
  To: Hui Wang
  Cc: linux-arm-kernel, Shawn Guo, devicetree-discuss, dmitry.torokhov,
	jiejing.zhang, linux-input

On Wednesday 10 October 2012, Hui Wang wrote:
> >
> > What's the status on this patch? I'm still getting build errors from this
> > driver, so I guess it was never accepted for the 3.7 merge window.
> >
> >       Arnd
> >
> >   
> I forgot to resend this patchset After Dmitry was back to the maillist. 
> I will rebase the patchset and resend them to review.
> 

Ok, thank you!

	Arnd

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

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

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-16 10:47 [PATCH v4 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
2012-08-16 10:47 ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
2012-08-16 10:47   ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
2012-08-16 10:47     ` [PATCH v4 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
2012-08-17  0:33       ` Shawn Guo
2012-08-17  1:20         ` Hui Wang
2012-08-17  0:32     ` [PATCH v4 2/3] Input: add devicetree binding note for egalax_ts Shawn Guo
2012-08-17  0:31   ` [PATCH v4 1/3] Input: egalax_ts: get gpio from devicetree node Shawn Guo
2012-10-09 11:58     ` Arnd Bergmann
2012-10-10  3:26       ` Hui Wang
2012-10-10  6:18         ` Arnd Bergmann

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).