* [PATCH v3 0/3] Input: egalax_ts: parse devicetree to get gpio
@ 2012-08-15 10:31 Hui Wang
2012-08-15 10:31 ` [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
0 siblings, 1 reply; 8+ messages in thread
From: Hui Wang @ 2012-08-15 10:31 UTC (permalink / raw)
To: dmitry.torokhov, jiejing.zhang, shawn.guo
Cc: linux-input, linux-arm-kernel, devicetree-discuss
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 | 19 ++++++++++++++++---
4 files changed, 58 insertions(+), 3 deletions(-)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
--
1.7.6
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node
2012-08-15 10:31 [PATCH v3 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
@ 2012-08-15 10:31 ` Hui Wang
2012-08-15 10:31 ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
0 siblings, 1 reply; 8+ messages in thread
From: Hui Wang @ 2012-08-15 10:31 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 | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
index 70524dd..54361c9 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) {
--
1.7.6
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts
2012-08-15 10:31 ` [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
@ 2012-08-15 10:31 ` Hui Wang
2012-08-15 10:31 ` [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
[not found] ` <1345026708-14139-3-git-send-email-jason77.wang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 2 replies; 8+ messages in thread
From: Hui Wang @ 2012-08-15 10:31 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] 8+ messages in thread
* [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
2012-08-15 10:31 ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
@ 2012-08-15 10:31 ` Hui Wang
2012-08-15 13:01 ` Shawn Guo
[not found] ` <1345026708-14139-3-git-send-email-jason77.wang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
1 sibling, 1 reply; 8+ messages in thread
From: Hui Wang @ 2012-08-15 10:31 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..4a68e1f 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 = <®_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 2>;
+ 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] 8+ messages in thread
* Re: [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts
[not found] ` <1345026708-14139-3-git-send-email-jason77.wang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-08-15 12:53 ` Shawn Guo
2012-08-16 6:48 ` Hui Wang
0 siblings, 1 reply; 8+ messages in thread
From: Shawn Guo @ 2012-08-15 12:53 UTC (permalink / raw)
To: Hui Wang
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w,
jiejing.zhang-KZfg59tc24xl57MIdRCFDg,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
linux-input-u79uwXL29TY76Z2rM5mHXA
On Wed, Aug 15, 2012 at 06:31:47PM +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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
> .../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"
Since we define this in the binding anyway, can we have an corresponding
.of_match_table in the driver?
Regards,
Shawn
> +- 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 [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
2012-08-15 10:31 ` [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
@ 2012-08-15 13:01 ` Shawn Guo
2012-08-16 6:53 ` Hui Wang
0 siblings, 1 reply; 8+ messages in thread
From: Shawn Guo @ 2012-08-15 13:01 UTC (permalink / raw)
To: Hui Wang
Cc: dmitry.torokhov, jiejing.zhang, linux-input, linux-arm-kernel,
devicetree-discuss
On Wed, Aug 15, 2012 at 06:31:48PM +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>
> ---
> 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..4a68e1f 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 = <®_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 2>;
So you take this interrupt as falling-edge, while I see IRQF_TRIGGER_LOW
is used in driver with request_threaded_irq call.
Regards,
Shawn
> + 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 [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts
2012-08-15 12:53 ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Shawn Guo
@ 2012-08-16 6:48 ` Hui Wang
0 siblings, 0 replies; 8+ messages in thread
From: Hui Wang @ 2012-08-16 6:48 UTC (permalink / raw)
To: Shawn Guo
Cc: Hui Wang, dmitry.torokhov, jiejing.zhang, linux-input,
linux-arm-kernel, devicetree-discuss
Shawn Guo wrote:
> On Wed, Aug 15, 2012 at 06:31:47PM +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>
>> ---
>> .../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"
>>
>
> Since we define this in the binding anyway, can we have an corresponding
> .of_match_table in the driver?
>
> Regards,
> Shawn
>
>
OK, will add it in the driver.
Regards,
Hui.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax
2012-08-15 13:01 ` Shawn Guo
@ 2012-08-16 6:53 ` Hui Wang
0 siblings, 0 replies; 8+ messages in thread
From: Hui Wang @ 2012-08-16 6:53 UTC (permalink / raw)
To: Shawn Guo
Cc: Hui Wang, dmitry.torokhov, jiejing.zhang, linux-input,
linux-arm-kernel, devicetree-discuss
Shawn Guo wrote:
> On Wed, Aug 15, 2012 at 06:31:48PM +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>
>> ---
>> 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..4a68e1f 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 = <®_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 2>;
>>
>
> So you take this interrupt as falling-edge, while I see IRQF_TRIGGER_LOW
> is used in driver with request_threaded_irq call.
>
> Regards,
> Shawn
>
>
Yes, you are right. Should be 8 instead of 2.
Regards,
Hui.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-08-16 6:54 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-15 10:31 [PATCH v3 0/3] Input: egalax_ts: parse devicetree to get gpio Hui Wang
2012-08-15 10:31 ` [PATCH v3 1/3] Input: egalax_ts: get gpio from devicetree node Hui Wang
2012-08-15 10:31 ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Hui Wang
2012-08-15 10:31 ` [PATCH v3 3/3] ARM: dts: imx6q-sabrelite: add eeti egalax Hui Wang
2012-08-15 13:01 ` Shawn Guo
2012-08-16 6:53 ` Hui Wang
[not found] ` <1345026708-14139-3-git-send-email-jason77.wang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-08-15 12:53 ` [PATCH v3 2/3] Input: add devicetree binding note for egalax_ts Shawn Guo
2012-08-16 6:48 ` Hui Wang
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).