All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller
@ 2015-03-04  8:32 Aleksei Mamlin
  2015-03-04  8:33 ` [PATCH 1/2] input: goodix: Add device tree support Aleksei Mamlin
                   ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-04  8:32 UTC (permalink / raw)
  To: linux-input-u79uwXL29TY76Z2rM5mHXA
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Bastien Nocera, Hans de Goede,
	Aleksei Mamlin

This patch set adds device tree support and binding information for Goodix
GT9xx series touchscreen controller.
It also adds support for 5-finger chips, like GT911 and GT912, which
can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.

Aleksei Mamlin (2):
  input: goodix: Add device tree support
  input: goodix: Add device tree support for 5-finger chips

 .../bindings/input/touchscreen/goodix.txt          | 29 +++++++++++++
 .../devicetree/bindings/vendor-prefixes.txt        |  1 +
 drivers/input/touchscreen/Kconfig                  |  2 +-
 drivers/input/touchscreen/goodix.c                 | 49 ++++++++++++++++++++--
 4 files changed, 76 insertions(+), 5 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt

-- 
2.0.5

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 1/2] input: goodix: Add device tree support
  2015-03-04  8:32 [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller Aleksei Mamlin
@ 2015-03-04  8:33 ` Aleksei Mamlin
  2015-03-04  9:21   ` Bastien Nocera
  2015-03-04  8:34 ` [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips Aleksei Mamlin
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-04  8:33 UTC (permalink / raw)
  To: linux-input; +Cc: devicetree, Bastien Nocera, Hans de Goede, Aleksei Mamlin

This patch adds device tree support for Goodix GT9xx series touchscreen
controller.

Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
---
 .../bindings/input/touchscreen/goodix.txt          | 27 ++++++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.txt        |  1 +
 drivers/input/touchscreen/Kconfig                  |  2 +-
 drivers/input/touchscreen/goodix.c                 | 19 ++++++++++++++-
 4 files changed, 47 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt

diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
new file mode 100644
index 0000000..cbaf085
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
@@ -0,0 +1,27 @@
+Device tree bindings for Goodix GT9xx series touchscreen controller
+
+Required properties:
+
+ - compatible		: Should be "goodix,gt9110"
+				 or "goodix,gt927"
+				 or "goodix,gt9271"
+				 or "goodix,gt928"
+				 or "goodix,gt967"
+ - reg			: I2C address of the chip
+ - interrupt-parent 	: Interrupt controller to which the chip is connected
+ - interrupts		: Interrupt to which the chip is connected
+
+Example:
+
+	i2c@00000000 {
+		/* ... */
+
+		gt928@5d {
+			compatible = "goodix,gt928";
+			reg = <0x5d>;
+			interrupt-parent = <&gpio>;
+			interrupts = <0 0>;
+		};
+
+		/* ... */
+	};
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 389ca13..e9f70d8 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -76,6 +76,7 @@ geniatech	Geniatech, Inc.
 giantplus	Giantplus Technology Co., Ltd.
 globalscale	Globalscale Technologies, Inc.
 gmt	Global Mixed-mode Technology, Inc.
+goodix	Shenzhen Huiding Technology Co. Ltd.
 google	Google, Inc.
 gumstix	Gumstix, Inc.
 gw	Gateworks Corporation
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 5891752..7a6ab8c 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -297,7 +297,7 @@ config TOUCHSCREEN_FUJITSU
 
 config TOUCHSCREEN_GOODIX
 	tristate "Goodix I2C touchscreen"
-	depends on I2C && ACPI
+	depends on I2C
 	help
 	  Say Y here if you have the Goodix touchscreen (such as one
 	  installed in Onda v975w tablets) connected to your
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index ca19668..16f016a 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -23,6 +23,8 @@
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
+#include <linux/acpi.h>
+#include <linux/of.h>
 #include <asm/unaligned.h>
 
 struct goodix_ts_data {
@@ -372,11 +374,25 @@ static const struct i2c_device_id goodix_ts_id[] = {
 	{ }
 };
 
+#ifdef CONFIG_ACPI
 static const struct acpi_device_id goodix_acpi_match[] = {
 	{ "GDIX1001", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
+#endif
+
+#ifdef CONFIG_OF
+static struct of_device_id goodix_of_match[] = {
+	{ .compatible = "goodix,gt9110" },
+	{ .compatible = "goodix,gt927" },
+	{ .compatible = "goodix,gt9271" },
+	{ .compatible = "goodix,gt928" },
+	{ .compatible = "goodix,gt967" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, goodix_of_match);
+#endif
 
 static struct i2c_driver goodix_ts_driver = {
 	.probe = goodix_ts_probe,
@@ -384,7 +400,8 @@ static struct i2c_driver goodix_ts_driver = {
 	.driver = {
 		.name = "Goodix-TS",
 		.owner = THIS_MODULE,
-		.acpi_match_table = goodix_acpi_match,
+		.acpi_match_table = ACPI_PTR(goodix_acpi_match),
+		.of_match_table = of_match_ptr(goodix_of_match),
 	},
 };
 module_i2c_driver(goodix_ts_driver);
-- 
2.0.5


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

* [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips
  2015-03-04  8:32 [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller Aleksei Mamlin
  2015-03-04  8:33 ` [PATCH 1/2] input: goodix: Add device tree support Aleksei Mamlin
@ 2015-03-04  8:34 ` Aleksei Mamlin
       [not found]   ` <1425458053-4559-1-git-send-email-mamlinav-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2015-03-04 10:30   ` Antonio Ospite
  2015-03-05 16:18 ` [PATCH v2] input: goodix: Add device tree support Aleksei Mamlin
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-04  8:34 UTC (permalink / raw)
  To: linux-input; +Cc: devicetree, Bastien Nocera, Hans de Goede, Aleksei Mamlin

This patch adds device tree support for 5-finger chips, like GT911 and GT912.

Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
---
 .../bindings/input/touchscreen/goodix.txt          |  4 ++-
 drivers/input/touchscreen/goodix.c                 | 40 +++++++++++++++++-----
 2 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
index cbaf085..368e57f 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
@@ -2,7 +2,9 @@ Device tree bindings for Goodix GT9xx series touchscreen controller
 
 Required properties:
 
- - compatible		: Should be "goodix,gt9110"
+ - compatible		: Should be "goodix,gt911"
+				 or "goodix,gt9110"
+				 or "goodix,gt912"
 				 or "goodix,gt927"
 				 or "goodix,gt9271"
 				 or "goodix,gt928"
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index 16f016a..3da31d1 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -25,6 +25,7 @@
 #include <linux/slab.h>
 #include <linux/acpi.h>
 #include <linux/of.h>
+#include <linux/of_device.h>
 #include <asm/unaligned.h>
 
 struct goodix_ts_data {
@@ -101,7 +102,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
 	}
 
 	touch_num = data[0] & 0x0f;
-	if (touch_num > GOODIX_MAX_CONTACTS)
+	if (touch_num > ts->max_touch_num)
 		return -EPROTO;
 
 	if (touch_num > 1) {
@@ -143,7 +144,7 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
  */
 static void goodix_process_events(struct goodix_ts_data *ts)
 {
-	u8  point_data[1 + GOODIX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
+	u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
 	int touch_num;
 	int i;
 
@@ -297,7 +298,7 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
 	input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
 	input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
 
-	input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
+	input_mt_init_slots(ts->input_dev, ts->max_touch_num,
 			    INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
 
 	ts->input_dev->name = "Goodix Capacitive TouchScreen";
@@ -317,9 +318,16 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id goodix_of_match[];
+#endif
+
 static int goodix_ts_probe(struct i2c_client *client,
 			   const struct i2c_device_id *id)
 {
+#ifdef CONFIG_OF
+	const struct of_device_id *match;
+#endif
 	struct goodix_ts_data *ts;
 	unsigned long irq_flags;
 	int error;
@@ -336,6 +344,20 @@ static int goodix_ts_probe(struct i2c_client *client,
 	if (!ts)
 		return -ENOMEM;
 
+	ts->max_touch_num = GOODIX_MAX_CONTACTS;
+
+#ifdef CONFIG_OF
+	if (client->dev.of_node) {
+		match = of_match_device(of_match_ptr(goodix_of_match),
+							&client->dev);
+		if (!match) {
+			dev_err(&client->dev, "Unknown device model\n");
+			return -EINVAL;
+		}
+		ts->max_touch_num = (unsigned int)match->data;
+	}
+#endif
+
 	ts->client = client;
 	i2c_set_clientdata(client, ts);
 
@@ -384,11 +406,13 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
 
 #ifdef CONFIG_OF
 static struct of_device_id goodix_of_match[] = {
-	{ .compatible = "goodix,gt9110" },
-	{ .compatible = "goodix,gt927" },
-	{ .compatible = "goodix,gt9271" },
-	{ .compatible = "goodix,gt928" },
-	{ .compatible = "goodix,gt967" },
+	{ .compatible = "goodix,gt911",  .data = (void *) 5 },
+	{ .compatible = "goodix,gt9110", .data = (void *) 10 },
+	{ .compatible = "goodix,gt912",  .data = (void *) 5 },
+	{ .compatible = "goodix,gt927",  .data = (void *) 10 },
+	{ .compatible = "goodix,gt9271", .data = (void *) 10 },
+	{ .compatible = "goodix,gt928",  .data = (void *) 10 },
+	{ .compatible = "goodix,gt967",  .data = (void *) 10 },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, goodix_of_match);
-- 
2.0.5


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

* Re: [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips
       [not found]   ` <1425458053-4559-1-git-send-email-mamlinav-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-03-04  9:19     ` Bastien Nocera
       [not found]       ` <1425460748.9384.2.camel-0MeiytkfxGOsTnJN9+BGXg@public.gmane.org>
  0 siblings, 1 reply; 21+ messages in thread
From: Bastien Nocera @ 2015-03-04  9:19 UTC (permalink / raw)
  To: Aleksei Mamlin
  Cc: linux-input-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Hans de Goede

On Wed, 2015-03-04 at 11:34 +0300, Aleksei Mamlin wrote:
> This patch adds device tree support for 5-finger chips, like GT911 
> and GT912.

You should add the same support to the ACPI matching.

<snip>
>  #ifdef CONFIG_OF
>  static struct of_device_id goodix_of_match[] = {
> -       { .compatible = "goodix,gt9110" },
> -       { .compatible = "goodix,gt927" },
> -       { .compatible = "goodix,gt9271" },
> -       { .compatible = "goodix,gt928" },
> -       { .compatible = "goodix,gt967" },
> +       { .compatible = "goodix,gt911",  .data = (void *) 5 },
> +       { .compatible = "goodix,gt9110", .data = (void *) 10 },

There's no need to add "10" for these tablets as it's already the 
GOODIX_MAX_CONTACTS value. Or you need to add it to every instance.

I would also like a link to the spec sheets in the commit message.

> +       { .compatible = "goodix,gt912",  .data = (void *) 5 },
> +       { .compatible = "goodix,gt927",  .data = (void *) 10 },
> +       { .compatible = "goodix,gt9271", .data = (void *) 10 },
> +       { .compatible = "goodix,gt928",  .data = (void *) 10 },
> +       { .compatible = "goodix,gt967",  .data = (void *) 10 },
>         { }
>  };
>  MODULE_DEVICE_TABLE(of, goodix_of_match);
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 1/2] input: goodix: Add device tree support
  2015-03-04  8:33 ` [PATCH 1/2] input: goodix: Add device tree support Aleksei Mamlin
@ 2015-03-04  9:21   ` Bastien Nocera
  2015-03-04 17:12     ` Antonio Ospite
  0 siblings, 1 reply; 21+ messages in thread
From: Bastien Nocera @ 2015-03-04  9:21 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Hans de Goede

On Wed, 2015-03-04 at 11:33 +0300, Aleksei Mamlin wrote:
> This patch adds device tree support for Goodix GT9xx series 
> touchscreen controller.

<snip>
> diff --git a/drivers/input/touchscreen/Kconfig 
> b/drivers/input/touchscreen/Kconfig
> index 5891752..7a6ab8c 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -297,7 +297,7 @@ config TOUCHSCREEN_FUJITSU
>  
>  config TOUCHSCREEN_GOODIX
>         tristate "Goodix I2C touchscreen"
> -       depends on I2C && ACPI
> +       depends on I2C

Any way to say depends on I2C && (ACPI || OF) ?

>         help
>                         Say Y here if you have the Goodix 
> touchscreen (such as one
>                         installed in Onda v975w tablets) connected 
> to your

Can you update the description to add the newly supported devices to 
the list?

Cheers

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

* Re: [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips
  2015-03-04  8:34 ` [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips Aleksei Mamlin
       [not found]   ` <1425458053-4559-1-git-send-email-mamlinav-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2015-03-04 10:30   ` Antonio Ospite
  2015-03-04 10:55     ` Aleksei Mamlin
  1 sibling, 1 reply; 21+ messages in thread
From: Antonio Ospite @ 2015-03-04 10:30 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Bastien Nocera, Hans de Goede

On Wed,  4 Mar 2015 11:34:13 +0300
Aleksei Mamlin <mamlinav@gmail.com> wrote:

> This patch adds device tree support for 5-finger chips, like GT911 and GT912.
>

Hi Aleksei,

from a datasheet I found[1](Pag. 11) I see that some devices provide
the information about the max number of touch points in register 0x804C.

Have you tried if this is true on your 5-finger devices too?
If so, please use this mechanism to populate ts->max_touch_num to avoid
passing hardcoded data.

Thanks,
   Antonio

[1] http://www.wpgholdings.com/uploads/bu/bu_3/MID_20141112/GT9271_Datasheet_20130904.pdf

-- 
Antonio Ospite
http://ao2.it

A: Because it messes up the order in which people normally read text.
   See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?

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

* Re: [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips
  2015-03-04 10:30   ` Antonio Ospite
@ 2015-03-04 10:55     ` Aleksei Mamlin
  0 siblings, 0 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-04 10:55 UTC (permalink / raw)
  To: Antonio Ospite; +Cc: linux-input, devicetree, Bastien Nocera, Hans de Goede

On Wed, 4 Mar 2015 11:30:40 +0100
Antonio Ospite <ao2@ao2.it> wrote:

> On Wed,  4 Mar 2015 11:34:13 +0300
> Aleksei Mamlin <mamlinav@gmail.com> wrote:
> 
> > This patch adds device tree support for 5-finger chips, like GT911 and GT912.
> >
> 
> Hi Aleksei,
> 
> from a datasheet I found[1](Pag. 11) I see that some devices provide
> the information about the max number of touch points in register 0x804C.
> 
> Have you tried if this is true on your 5-finger devices too?
> If so, please use this mechanism to populate ts->max_touch_num to avoid
> passing hardcoded data.
> 
Hi Antonio,

I checked datasheets and you are right, seems that all Goodix GT9xx series provides max number of touch points in register 0x804C.
I'll rewrite driver to use data from 0x804C register.


> Thanks,
>    Antonio
> 
> [1] http://www.wpgholdings.com/uploads/bu/bu_3/MID_20141112/GT9271_Datasheet_20130904.pdf
> 
> -- 
> Antonio Ospite
> http://ao2.it
> 
> A: Because it messes up the order in which people normally read text.
>    See http://en.wikipedia.org/wiki/Posting_style
> Q: Why is top-posting such a bad thing?


-- 
Thanks and regards,
Aleksei Mamlin

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

* Re: [PATCH 1/2] input: goodix: Add device tree support
  2015-03-04  9:21   ` Bastien Nocera
@ 2015-03-04 17:12     ` Antonio Ospite
  0 siblings, 0 replies; 21+ messages in thread
From: Antonio Ospite @ 2015-03-04 17:12 UTC (permalink / raw)
  To: Bastien Nocera; +Cc: Aleksei Mamlin, linux-input, devicetree, Hans de Goede

On Wed, 04 Mar 2015 10:21:26 +0100
Bastien Nocera <hadess@hadess.net> wrote:

> On Wed, 2015-03-04 at 11:33 +0300, Aleksei Mamlin wrote:
> > This patch adds device tree support for Goodix GT9xx series 
> > touchscreen controller.
> 
> <snip>
> > diff --git a/drivers/input/touchscreen/Kconfig 
> > b/drivers/input/touchscreen/Kconfig
> > index 5891752..7a6ab8c 100644
> > --- a/drivers/input/touchscreen/Kconfig
> > +++ b/drivers/input/touchscreen/Kconfig
> > @@ -297,7 +297,7 @@ config TOUCHSCREEN_FUJITSU
> >  
> >  config TOUCHSCREEN_GOODIX
> >         tristate "Goodix I2C touchscreen"
> > -       depends on I2C && ACPI
> > +       depends on I2C
> 
> Any way to say depends on I2C && (ACPI || OF) ?
>

Hi Bastien,

I only see something like this in _one_ driver under drivers/:

drivers/net/phy/Kconfig:        depends on (OF || ACPI) && HAS_IOMEM

I guess this is because "depends" is about compilation requirements
rather than runtime ones? The driver should still compile fine without
either ACPI or OF with the appropriate guards in place, so I'd rather
leave this hunk as Aleksei proposed.

Ciao,
   Antonio

> >         help
> >                         Say Y here if you have the Goodix 
> > touchscreen (such as one
> >                         installed in Onda v975w tablets) connected 
> > to your
> 
> Can you update the description to add the newly supported devices to 
> the list?
> 
> Cheers
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Antonio Ospite
http://ao2.it

A: Because it messes up the order in which people normally read text.
   See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?

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

* Re: [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips
       [not found]       ` <1425460748.9384.2.camel-0MeiytkfxGOsTnJN9+BGXg@public.gmane.org>
@ 2015-03-04 17:53         ` Aleksei Mamlin
  0 siblings, 0 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-04 17:53 UTC (permalink / raw)
  To: Bastien Nocera
  Cc: linux-input-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Hans de Goede

On Wed, 04 Mar 2015 10:19:08 +0100
Bastien Nocera <hadess-0MeiytkfxGOsTnJN9+BGXg@public.gmane.org> wrote:

> On Wed, 2015-03-04 at 11:34 +0300, Aleksei Mamlin wrote:
> > This patch adds device tree support for 5-finger chips, like GT911 
> > and GT912.
> 
> You should add the same support to the ACPI matching.

Hi Bastien,

I never seen ACPI ids for GT911 or GT912. It seems they are used only on Andriod tablets.

> 
> <snip>
> >  #ifdef CONFIG_OF
> >  static struct of_device_id goodix_of_match[] = {
> > -       { .compatible = "goodix,gt9110" },
> > -       { .compatible = "goodix,gt927" },
> > -       { .compatible = "goodix,gt9271" },
> > -       { .compatible = "goodix,gt928" },
> > -       { .compatible = "goodix,gt967" },
> > +       { .compatible = "goodix,gt911",  .data = (void *) 5 },
> > +       { .compatible = "goodix,gt9110", .data = (void *) 10 },
> 
> There's no need to add "10" for these tablets as it's already the 
> GOODIX_MAX_CONTACTS value. Or you need to add it to every instance.

Antonio Ospite showed me another way to set the max number of touch points.

> 
> I would also like a link to the spec sheets in the commit message.
> 
> > +       { .compatible = "goodix,gt912",  .data = (void *) 5 },
> > +       { .compatible = "goodix,gt927",  .data = (void *) 10 },
> > +       { .compatible = "goodix,gt9271", .data = (void *) 10 },
> > +       { .compatible = "goodix,gt928",  .data = (void *) 10 },
> > +       { .compatible = "goodix,gt967",  .data = (void *) 10 },
> >         { }
> >  };
> >  MODULE_DEVICE_TABLE(of, goodix_of_match);


-- 
Thanks and regards,
Aleksei Mamlin
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH v2] input: goodix: Add device tree support
  2015-03-04  8:32 [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller Aleksei Mamlin
  2015-03-04  8:33 ` [PATCH 1/2] input: goodix: Add device tree support Aleksei Mamlin
  2015-03-04  8:34 ` [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips Aleksei Mamlin
@ 2015-03-05 16:18 ` Aleksei Mamlin
  2015-03-05 16:32   ` Bastien Nocera
  2015-03-05 16:36   ` Benjamin Tissoires
  2015-03-05 17:32 ` [PATCH] input: goodix: Use max touch number from device config Aleksei Mamlin
  2015-03-05 17:32 ` [PATCH v3] input: goodix: Add device tree support Aleksei Mamlin
  4 siblings, 2 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-05 16:18 UTC (permalink / raw)
  To: linux-input; +Cc: devicetree, Bastien Nocera, Hans de Goede, Aleksei Mamlin

This patch adds device tree support and binding information for Goodix
GT9xx series touchscreen controller.
It also adds support for 5-finger chips, like GT911 and GT912, which
can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.

Changes since v1:
* Merge patches into single patch.
* Use max touch number from config instead of hardcoding.
* Update description in Kconfig.

Datasheets can be found here:
https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing

Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
---
 .../bindings/input/touchscreen/goodix.txt          | 29 ++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.txt        |  1 +
 drivers/input/touchscreen/Kconfig                  |  5 ++--
 drivers/input/touchscreen/goodix.c                 | 34 ++++++++++++++++++----
 4 files changed, 61 insertions(+), 8 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt

diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
new file mode 100644
index 0000000..8ba98ee
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
@@ -0,0 +1,29 @@
+Device tree bindings for Goodix GT9xx series touchscreen controller
+
+Required properties:
+
+ - compatible		: Should be "goodix,gt911"
+				 or "goodix,gt9110"
+				 or "goodix,gt912"
+				 or "goodix,gt927"
+				 or "goodix,gt9271"
+				 or "goodix,gt928"
+				 or "goodix,gt967"
+ - reg			: I2C address of the chip. Should be 0x5d or 0x14
+ - interrupt-parent	: Interrupt controller to which the chip is connected
+ - interrupts		: Interrupt to which the chip is connected
+
+Example:
+
+	i2c@00000000 {
+		/* ... */
+
+		gt928@5d {
+			compatible = "goodix,gt928";
+			reg = <0x5d>;
+			interrupt-parent = <&gpio>;
+			interrupts = <0 0>;
+		};
+
+		/* ... */
+	};
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 389ca13..ab6852d 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -76,6 +76,7 @@ geniatech	Geniatech, Inc.
 giantplus	Giantplus Technology Co., Ltd.
 globalscale	Globalscale Technologies, Inc.
 gmt	Global Mixed-mode Technology, Inc.
+goodix	Shenzhen Huiding Technology Co., Ltd.
 google	Google, Inc.
 gumstix	Gumstix, Inc.
 gw	Gateworks Corporation
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 5891752..2adf724 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -297,11 +297,12 @@ config TOUCHSCREEN_FUJITSU
 
 config TOUCHSCREEN_GOODIX
 	tristate "Goodix I2C touchscreen"
-	depends on I2C && ACPI
+	depends on I2C
 	help
 	  Say Y here if you have the Goodix touchscreen (such as one
 	  installed in Onda v975w tablets) connected to your
-	  system.
+	  system. It also supports 5-finger chip models, which can be
+	  found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
 
 	  If unsure, say N.
 
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index ca19668..efba6a3 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -23,6 +23,8 @@
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
+#include <linux/acpi.h>
+#include <linux/of.h>
 #include <asm/unaligned.h>
 
 struct goodix_ts_data {
@@ -48,6 +50,7 @@ struct goodix_ts_data {
 #define GOODIX_REG_VERSION		0x8140
 
 #define RESOLUTION_LOC		1
+#define MAX_CONTACTS_LOC	5
 #define TRIGGER_LOC		6
 
 static const unsigned long goodix_irq_flags[] = {
@@ -99,7 +102,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
 	}
 
 	touch_num = data[0] & 0x0f;
-	if (touch_num > GOODIX_MAX_CONTACTS)
+	if (touch_num > ts->max_touch_num)
 		return -EPROTO;
 
 	if (touch_num > 1) {
@@ -141,7 +144,7 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
  */
 static void goodix_process_events(struct goodix_ts_data *ts)
 {
-	u8  point_data[1 + GOODIX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
+	u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
 	int touch_num;
 	int i;
 
@@ -202,21 +205,23 @@ static void goodix_read_config(struct goodix_ts_data *ts)
 		ts->abs_x_max = GOODIX_MAX_WIDTH;
 		ts->abs_y_max = GOODIX_MAX_HEIGHT;
 		ts->int_trigger_type = GOODIX_INT_TRIGGER;
+		ts->max_touch_num = GOODIX_MAX_CONTACTS;
 		return;
 	}
 
 	ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);
 	ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 2]);
 	ts->int_trigger_type = (config[TRIGGER_LOC]) & 0x03;
-	if (!ts->abs_x_max || !ts->abs_y_max) {
+	ts->max_touch_num = (config[MAX_CONTACTS_LOC]) & 0x0f;
+	if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {
 		dev_err(&ts->client->dev,
 			"Invalid config, using defaults\n");
 		ts->abs_x_max = GOODIX_MAX_WIDTH;
 		ts->abs_y_max = GOODIX_MAX_HEIGHT;
+		ts->max_touch_num = GOODIX_MAX_CONTACTS;
 	}
 }
 
-
 /**
  * goodix_read_version - Read goodix touchscreen version
  *
@@ -295,7 +300,7 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
 	input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
 	input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
 
-	input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
+	input_mt_init_slots(ts->input_dev, ts->max_touch_num,
 			    INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
 
 	ts->input_dev->name = "Goodix Capacitive TouchScreen";
@@ -372,11 +377,27 @@ static const struct i2c_device_id goodix_ts_id[] = {
 	{ }
 };
 
+#ifdef CONFIG_ACPI
 static const struct acpi_device_id goodix_acpi_match[] = {
 	{ "GDIX1001", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
+#endif
+
+#ifdef CONFIG_OF
+static const struct of_device_id goodix_of_match[] = {
+	{ .compatible = "goodix,gt911" },
+	{ .compatible = "goodix,gt9110" },
+	{ .compatible = "goodix,gt912" },
+	{ .compatible = "goodix,gt927" },
+	{ .compatible = "goodix,gt9271" },
+	{ .compatible = "goodix,gt928" },
+	{ .compatible = "goodix,gt967" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, goodix_of_match);
+#endif
 
 static struct i2c_driver goodix_ts_driver = {
 	.probe = goodix_ts_probe,
@@ -384,7 +405,8 @@ static struct i2c_driver goodix_ts_driver = {
 	.driver = {
 		.name = "Goodix-TS",
 		.owner = THIS_MODULE,
-		.acpi_match_table = goodix_acpi_match,
+		.acpi_match_table = ACPI_PTR(goodix_acpi_match),
+		.of_match_table = of_match_ptr(goodix_of_match),
 	},
 };
 module_i2c_driver(goodix_ts_driver);
-- 
2.0.5


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

* Re: [PATCH v2] input: goodix: Add device tree support
  2015-03-05 16:18 ` [PATCH v2] input: goodix: Add device tree support Aleksei Mamlin
@ 2015-03-05 16:32   ` Bastien Nocera
  2015-03-05 16:36   ` Benjamin Tissoires
  1 sibling, 0 replies; 21+ messages in thread
From: Bastien Nocera @ 2015-03-05 16:32 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Hans de Goede

On Thu, 2015-03-05 at 19:18 +0300, Aleksei Mamlin wrote:
> This patch adds device tree support and binding information for 
> Goodix GT9xx series touchscreen controller.
> It also adds support for 5-finger chips, like GT911 and GT912, which 
> can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
> 
> Changes since v1:
> * Merge patches into single patch.

I would actually prefer two patches. The first one to use the number 
of touches from the device, the second one to add DT support.

That would also make it easier for me to test.

> * Use max touch number from config instead of hardcoding.
> * Update description in Kconfig.

Cheers

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

* Re: [PATCH v2] input: goodix: Add device tree support
  2015-03-05 16:18 ` [PATCH v2] input: goodix: Add device tree support Aleksei Mamlin
  2015-03-05 16:32   ` Bastien Nocera
@ 2015-03-05 16:36   ` Benjamin Tissoires
  1 sibling, 0 replies; 21+ messages in thread
From: Benjamin Tissoires @ 2015-03-05 16:36 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Bastien Nocera, Hans de Goede

Hi Aleksei,

On Thu, Mar 5, 2015 at 11:18 AM, Aleksei Mamlin <mamlinav@gmail.com> wrote:
> This patch adds device tree support and binding information for Goodix
> GT9xx series touchscreen controller.
> It also adds support for 5-finger chips, like GT911 and GT912, which
> can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
>
> Changes since v1:
> * Merge patches into single patch.

just a small comment on that. I am not sure if this was requested, but
this is IMO a really unfortunate choice.
If you accidentally break the currently working ACPI based tablet with
the touchmax retrieval, it will be a pain to decide if the problem
lies in the touchmax retrieval or a bug in the OF implementation.

I would expect this series to have at least 2 patches.

Thanks,
Benjamin

> * Use max touch number from config instead of hardcoding.
> * Update description in Kconfig.
>
> Datasheets can be found here:
> https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing
>
> Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
> ---
>  .../bindings/input/touchscreen/goodix.txt          | 29 ++++++++++++++++++
>  .../devicetree/bindings/vendor-prefixes.txt        |  1 +
>  drivers/input/touchscreen/Kconfig                  |  5 ++--
>  drivers/input/touchscreen/goodix.c                 | 34 ++++++++++++++++++----
>  4 files changed, 61 insertions(+), 8 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt
>
> diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> new file mode 100644
> index 0000000..8ba98ee
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> @@ -0,0 +1,29 @@
> +Device tree bindings for Goodix GT9xx series touchscreen controller
> +
> +Required properties:
> +
> + - compatible          : Should be "goodix,gt911"
> +                                or "goodix,gt9110"
> +                                or "goodix,gt912"
> +                                or "goodix,gt927"
> +                                or "goodix,gt9271"
> +                                or "goodix,gt928"
> +                                or "goodix,gt967"
> + - reg                 : I2C address of the chip. Should be 0x5d or 0x14
> + - interrupt-parent    : Interrupt controller to which the chip is connected
> + - interrupts          : Interrupt to which the chip is connected
> +
> +Example:
> +
> +       i2c@00000000 {
> +               /* ... */
> +
> +               gt928@5d {
> +                       compatible = "goodix,gt928";
> +                       reg = <0x5d>;
> +                       interrupt-parent = <&gpio>;
> +                       interrupts = <0 0>;
> +               };
> +
> +               /* ... */
> +       };
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> index 389ca13..ab6852d 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> @@ -76,6 +76,7 @@ geniatech     Geniatech, Inc.
>  giantplus      Giantplus Technology Co., Ltd.
>  globalscale    Globalscale Technologies, Inc.
>  gmt    Global Mixed-mode Technology, Inc.
> +goodix Shenzhen Huiding Technology Co., Ltd.
>  google Google, Inc.
>  gumstix        Gumstix, Inc.
>  gw     Gateworks Corporation
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 5891752..2adf724 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -297,11 +297,12 @@ config TOUCHSCREEN_FUJITSU
>
>  config TOUCHSCREEN_GOODIX
>         tristate "Goodix I2C touchscreen"
> -       depends on I2C && ACPI
> +       depends on I2C
>         help
>           Say Y here if you have the Goodix touchscreen (such as one
>           installed in Onda v975w tablets) connected to your
> -         system.
> +         system. It also supports 5-finger chip models, which can be
> +         found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
>
>           If unsure, say N.
>
> diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
> index ca19668..efba6a3 100644
> --- a/drivers/input/touchscreen/goodix.c
> +++ b/drivers/input/touchscreen/goodix.c
> @@ -23,6 +23,8 @@
>  #include <linux/irq.h>
>  #include <linux/interrupt.h>
>  #include <linux/slab.h>
> +#include <linux/acpi.h>
> +#include <linux/of.h>
>  #include <asm/unaligned.h>
>
>  struct goodix_ts_data {
> @@ -48,6 +50,7 @@ struct goodix_ts_data {
>  #define GOODIX_REG_VERSION             0x8140
>
>  #define RESOLUTION_LOC         1
> +#define MAX_CONTACTS_LOC       5
>  #define TRIGGER_LOC            6
>
>  static const unsigned long goodix_irq_flags[] = {
> @@ -99,7 +102,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
>         }
>
>         touch_num = data[0] & 0x0f;
> -       if (touch_num > GOODIX_MAX_CONTACTS)
> +       if (touch_num > ts->max_touch_num)
>                 return -EPROTO;
>
>         if (touch_num > 1) {
> @@ -141,7 +144,7 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
>   */
>  static void goodix_process_events(struct goodix_ts_data *ts)
>  {
> -       u8  point_data[1 + GOODIX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
> +       u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
>         int touch_num;
>         int i;
>
> @@ -202,21 +205,23 @@ static void goodix_read_config(struct goodix_ts_data *ts)
>                 ts->abs_x_max = GOODIX_MAX_WIDTH;
>                 ts->abs_y_max = GOODIX_MAX_HEIGHT;
>                 ts->int_trigger_type = GOODIX_INT_TRIGGER;
> +               ts->max_touch_num = GOODIX_MAX_CONTACTS;
>                 return;
>         }
>
>         ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);
>         ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 2]);
>         ts->int_trigger_type = (config[TRIGGER_LOC]) & 0x03;
> -       if (!ts->abs_x_max || !ts->abs_y_max) {
> +       ts->max_touch_num = (config[MAX_CONTACTS_LOC]) & 0x0f;
> +       if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {
>                 dev_err(&ts->client->dev,
>                         "Invalid config, using defaults\n");
>                 ts->abs_x_max = GOODIX_MAX_WIDTH;
>                 ts->abs_y_max = GOODIX_MAX_HEIGHT;
> +               ts->max_touch_num = GOODIX_MAX_CONTACTS;
>         }
>  }
>
> -
>  /**
>   * goodix_read_version - Read goodix touchscreen version
>   *
> @@ -295,7 +300,7 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
>         input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
>         input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
>
> -       input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
> +       input_mt_init_slots(ts->input_dev, ts->max_touch_num,
>                             INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
>
>         ts->input_dev->name = "Goodix Capacitive TouchScreen";
> @@ -372,11 +377,27 @@ static const struct i2c_device_id goodix_ts_id[] = {
>         { }
>  };
>
> +#ifdef CONFIG_ACPI
>  static const struct acpi_device_id goodix_acpi_match[] = {
>         { "GDIX1001", 0 },
>         { }
>  };
>  MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
> +#endif
> +
> +#ifdef CONFIG_OF
> +static const struct of_device_id goodix_of_match[] = {
> +       { .compatible = "goodix,gt911" },
> +       { .compatible = "goodix,gt9110" },
> +       { .compatible = "goodix,gt912" },
> +       { .compatible = "goodix,gt927" },
> +       { .compatible = "goodix,gt9271" },
> +       { .compatible = "goodix,gt928" },
> +       { .compatible = "goodix,gt967" },
> +       { }
> +};
> +MODULE_DEVICE_TABLE(of, goodix_of_match);
> +#endif
>
>  static struct i2c_driver goodix_ts_driver = {
>         .probe = goodix_ts_probe,
> @@ -384,7 +405,8 @@ static struct i2c_driver goodix_ts_driver = {
>         .driver = {
>                 .name = "Goodix-TS",
>                 .owner = THIS_MODULE,
> -               .acpi_match_table = goodix_acpi_match,
> +               .acpi_match_table = ACPI_PTR(goodix_acpi_match),
> +               .of_match_table = of_match_ptr(goodix_of_match),
>         },
>  };
>  module_i2c_driver(goodix_ts_driver);
> --
> 2.0.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH] input: goodix: Use max touch number from device config
  2015-03-04  8:32 [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller Aleksei Mamlin
                   ` (2 preceding siblings ...)
  2015-03-05 16:18 ` [PATCH v2] input: goodix: Add device tree support Aleksei Mamlin
@ 2015-03-05 17:32 ` Aleksei Mamlin
  2015-03-06 12:19   ` Bastien Nocera
  2015-03-06 13:42   ` Antonio Ospite
  2015-03-05 17:32 ` [PATCH v3] input: goodix: Add device tree support Aleksei Mamlin
  4 siblings, 2 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-05 17:32 UTC (permalink / raw)
  To: linux-input; +Cc: devicetree, Bastien Nocera, Hans de Goede, Aleksei Mamlin

Use max number of touches from device config instead of hardcoding.

Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
---
 drivers/input/touchscreen/goodix.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index ca19668..a3e2057 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -48,6 +48,7 @@ struct goodix_ts_data {
 #define GOODIX_REG_VERSION		0x8140
 
 #define RESOLUTION_LOC		1
+#define MAX_CONTACTS_LOC	5
 #define TRIGGER_LOC		6
 
 static const unsigned long goodix_irq_flags[] = {
@@ -99,7 +100,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
 	}
 
 	touch_num = data[0] & 0x0f;
-	if (touch_num > GOODIX_MAX_CONTACTS)
+	if (touch_num > ts->max_touch_num)
 		return -EPROTO;
 
 	if (touch_num > 1) {
@@ -141,7 +142,7 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
  */
 static void goodix_process_events(struct goodix_ts_data *ts)
 {
-	u8  point_data[1 + GOODIX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
+	u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
 	int touch_num;
 	int i;
 
@@ -202,21 +203,23 @@ static void goodix_read_config(struct goodix_ts_data *ts)
 		ts->abs_x_max = GOODIX_MAX_WIDTH;
 		ts->abs_y_max = GOODIX_MAX_HEIGHT;
 		ts->int_trigger_type = GOODIX_INT_TRIGGER;
+		ts->max_touch_num = GOODIX_MAX_CONTACTS;
 		return;
 	}
 
 	ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);
 	ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 2]);
 	ts->int_trigger_type = (config[TRIGGER_LOC]) & 0x03;
-	if (!ts->abs_x_max || !ts->abs_y_max) {
+	ts->max_touch_num = (config[MAX_CONTACTS_LOC]) & 0x0f;
+	if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {
 		dev_err(&ts->client->dev,
 			"Invalid config, using defaults\n");
 		ts->abs_x_max = GOODIX_MAX_WIDTH;
 		ts->abs_y_max = GOODIX_MAX_HEIGHT;
+		ts->max_touch_num = GOODIX_MAX_CONTACTS;
 	}
 }
 
-
 /**
  * goodix_read_version - Read goodix touchscreen version
  *
@@ -295,7 +298,7 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
 	input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
 	input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
 
-	input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
+	input_mt_init_slots(ts->input_dev, ts->max_touch_num,
 			    INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
 
 	ts->input_dev->name = "Goodix Capacitive TouchScreen";
-- 
2.0.5


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

* [PATCH v3] input: goodix: Add device tree support
  2015-03-04  8:32 [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller Aleksei Mamlin
                   ` (3 preceding siblings ...)
  2015-03-05 17:32 ` [PATCH] input: goodix: Use max touch number from device config Aleksei Mamlin
@ 2015-03-05 17:32 ` Aleksei Mamlin
  2015-03-06 12:23   ` Bastien Nocera
  2015-03-06 13:53   ` Antonio Ospite
  4 siblings, 2 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-05 17:32 UTC (permalink / raw)
  To: linux-input; +Cc: devicetree, Bastien Nocera, Hans de Goede, Aleksei Mamlin

This patch adds device tree support and binding information for Goodix
GT9xx series touchscreen controller.
It also adds support for 5-finger chips, like GT911 and GT912, which
can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.

Changes since v2:
* Split to two patches:
  The first one for use max number of touches from device config.
  The second one adds device tree support.

Changes since v1:
* Merge patches into single patch.
* Use max touch number from config instead of hardcoding.
* Update description in Kconfig.

Datasheets can be found here:
https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing

Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
---
 .../bindings/input/touchscreen/goodix.txt          | 29 ++++++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.txt        |  1 +
 drivers/input/touchscreen/Kconfig                  |  5 ++--
 drivers/input/touchscreen/goodix.c                 | 21 +++++++++++++++-
 4 files changed, 53 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt

diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
new file mode 100644
index 0000000..8ba98ee
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
@@ -0,0 +1,29 @@
+Device tree bindings for Goodix GT9xx series touchscreen controller
+
+Required properties:
+
+ - compatible		: Should be "goodix,gt911"
+				 or "goodix,gt9110"
+				 or "goodix,gt912"
+				 or "goodix,gt927"
+				 or "goodix,gt9271"
+				 or "goodix,gt928"
+				 or "goodix,gt967"
+ - reg			: I2C address of the chip. Should be 0x5d or 0x14
+ - interrupt-parent	: Interrupt controller to which the chip is connected
+ - interrupts		: Interrupt to which the chip is connected
+
+Example:
+
+	i2c@00000000 {
+		/* ... */
+
+		gt928@5d {
+			compatible = "goodix,gt928";
+			reg = <0x5d>;
+			interrupt-parent = <&gpio>;
+			interrupts = <0 0>;
+		};
+
+		/* ... */
+	};
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 389ca13..ab6852d 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -76,6 +76,7 @@ geniatech	Geniatech, Inc.
 giantplus	Giantplus Technology Co., Ltd.
 globalscale	Globalscale Technologies, Inc.
 gmt	Global Mixed-mode Technology, Inc.
+goodix	Shenzhen Huiding Technology Co., Ltd.
 google	Google, Inc.
 gumstix	Gumstix, Inc.
 gw	Gateworks Corporation
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 5891752..2adf724 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -297,11 +297,12 @@ config TOUCHSCREEN_FUJITSU
 
 config TOUCHSCREEN_GOODIX
 	tristate "Goodix I2C touchscreen"
-	depends on I2C && ACPI
+	depends on I2C
 	help
 	  Say Y here if you have the Goodix touchscreen (such as one
 	  installed in Onda v975w tablets) connected to your
-	  system.
+	  system. It also supports 5-finger chip models, which can be
+	  found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
 
 	  If unsure, say N.
 
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index a3e2057..efba6a3 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -23,6 +23,8 @@
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
+#include <linux/acpi.h>
+#include <linux/of.h>
 #include <asm/unaligned.h>
 
 struct goodix_ts_data {
@@ -375,11 +377,27 @@ static const struct i2c_device_id goodix_ts_id[] = {
 	{ }
 };
 
+#ifdef CONFIG_ACPI
 static const struct acpi_device_id goodix_acpi_match[] = {
 	{ "GDIX1001", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
+#endif
+
+#ifdef CONFIG_OF
+static const struct of_device_id goodix_of_match[] = {
+	{ .compatible = "goodix,gt911" },
+	{ .compatible = "goodix,gt9110" },
+	{ .compatible = "goodix,gt912" },
+	{ .compatible = "goodix,gt927" },
+	{ .compatible = "goodix,gt9271" },
+	{ .compatible = "goodix,gt928" },
+	{ .compatible = "goodix,gt967" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, goodix_of_match);
+#endif
 
 static struct i2c_driver goodix_ts_driver = {
 	.probe = goodix_ts_probe,
@@ -387,7 +405,8 @@ static struct i2c_driver goodix_ts_driver = {
 	.driver = {
 		.name = "Goodix-TS",
 		.owner = THIS_MODULE,
-		.acpi_match_table = goodix_acpi_match,
+		.acpi_match_table = ACPI_PTR(goodix_acpi_match),
+		.of_match_table = of_match_ptr(goodix_of_match),
 	},
 };
 module_i2c_driver(goodix_ts_driver);
-- 
2.0.5


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

* Re: [PATCH] input: goodix: Use max touch number from device config
  2015-03-05 17:32 ` [PATCH] input: goodix: Use max touch number from device config Aleksei Mamlin
@ 2015-03-06 12:19   ` Bastien Nocera
  2015-03-06 13:42   ` Antonio Ospite
  1 sibling, 0 replies; 21+ messages in thread
From: Bastien Nocera @ 2015-03-06 12:19 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Hans de Goede

On Thu, 2015-03-05 at 20:32 +0300, Aleksei Mamlin wrote:
> Use max number of touches from device config instead of hardcoding.
> 
> Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>

Tested-by: Bastien Nocera <hadess@hadess.net>
Acked-by: Bastien Nocera <hadess@hadess.net>

> ---
>  drivers/input/touchscreen/goodix.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/goodix.c 
> b/drivers/input/touchscreen/goodix.c
> index ca19668..a3e2057 100644
> --- a/drivers/input/touchscreen/goodix.c
> +++ b/drivers/input/touchscreen/goodix.c
> @@ -48,6 +48,7 @@ struct goodix_ts_data {
>  #define GOODIX_REG_VERSION             0x8140
>  
>  #define RESOLUTION_LOC         1
> +#define MAX_CONTACTS_LOC       5
>  #define TRIGGER_LOC            6
>  
>  static const unsigned long goodix_irq_flags[] = {
> @@ -99,7 +100,7 @@ static int goodix_ts_read_input_report(struct 
> goodix_ts_data *ts, u8 *data)
>         }
>  
>         touch_num = data[0] & 0x0f;
> -       if (touch_num > GOODIX_MAX_CONTACTS)
> +       if (touch_num > ts->max_touch_num)
>                 return -EPROTO;
>  
>         if (touch_num > 1) {
> @@ -141,7 +142,7 @@ static void goodix_ts_report_touch(struct 
> goodix_ts_data *ts, u8 *coor_data)
>   */
>  static void goodix_process_events(struct goodix_ts_data *ts)
>  {
> -       u8  point_data[1 + GOODIX_CONTACT_SIZE * 
> GOODIX_MAX_CONTACTS];
> +       u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
>         int touch_num;
>         int i;
>  
> @@ -202,21 +203,23 @@ static void goodix_read_config(struct 
> goodix_ts_data *ts)
>                 ts->abs_x_max = GOODIX_MAX_WIDTH;
>                 ts->abs_y_max = GOODIX_MAX_HEIGHT;
>                 ts->int_trigger_type = GOODIX_INT_TRIGGER;
> +               ts->max_touch_num = GOODIX_MAX_CONTACTS;
>                 return;
>         }
>  
>         ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);
>         ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 
> 2]);
>         ts->int_trigger_type = (config[TRIGGER_LOC]) & 0x03;
> -       if (!ts->abs_x_max || !ts->abs_y_max) {
> +       ts->max_touch_num = (config[MAX_CONTACTS_LOC]) & 0x0f;
> +       if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {
>                 dev_err(&ts->client->dev,
>                         "Invalid config, using defaults\n");
>                 ts->abs_x_max = GOODIX_MAX_WIDTH;
>                 ts->abs_y_max = GOODIX_MAX_HEIGHT;
> +               ts->max_touch_num = GOODIX_MAX_CONTACTS;
>         }
>  }
>  
> -
>  /**
>   * goodix_read_version - Read goodix touchscreen version
>   *
> @@ -295,7 +298,7 @@ static int goodix_request_input_dev(struct 
> goodix_ts_data *ts)
>         input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 
> 255, 0, 0);
>         input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 
> 255, 0, 0);
>  
> -       input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
> +       input_mt_init_slots(ts->input_dev, ts->max_touch_num,
>                                                         
> INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
>  
>         ts->input_dev->name = "Goodix Capacitive TouchScreen";

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

* Re: [PATCH v3] input: goodix: Add device tree support
  2015-03-05 17:32 ` [PATCH v3] input: goodix: Add device tree support Aleksei Mamlin
@ 2015-03-06 12:23   ` Bastien Nocera
  2015-03-07  0:47     ` Dmitry Torokhov
  2015-03-06 13:53   ` Antonio Ospite
  1 sibling, 1 reply; 21+ messages in thread
From: Bastien Nocera @ 2015-03-06 12:23 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Hans de Goede

On Thu, 2015-03-05 at 20:32 +0300, Aleksei Mamlin wrote:
> This patch adds device tree support and binding information for 
> Goodix GT9xx series touchscreen controller.
> It also adds support for 5-finger chips, like GT911 and GT912, which 
> can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
> 
> Changes since v2:
> * Split to two patches:
>   The first one for use max number of touches from device config.
>   The second one adds device tree support.
> 
> Changes since v1:
> * Merge patches into single patch.
> * Use max touch number from config instead of hardcoding.
> * Update description in Kconfig.
> 
> Datasheets can be found here:
> https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing
> 
> Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>

Reviewed-by: Bastien Nocera <hadess@hadess.net>

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

* Re: [PATCH] input: goodix: Use max touch number from device config
  2015-03-05 17:32 ` [PATCH] input: goodix: Use max touch number from device config Aleksei Mamlin
  2015-03-06 12:19   ` Bastien Nocera
@ 2015-03-06 13:42   ` Antonio Ospite
  2015-03-07  0:41     ` Dmitry Torokhov
  1 sibling, 1 reply; 21+ messages in thread
From: Antonio Ospite @ 2015-03-06 13:42 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Bastien Nocera, Hans de Goede

On Thu,  5 Mar 2015 20:32:24 +0300
Aleksei Mamlin <mamlinav@gmail.com> wrote:

> Use max number of touches from device config instead of hardcoding.
> 
> Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>

Tested-by: Antonio Ospite <ao2@ao2.it>

Some minor comments below, but no need to resend IMHO.

> ---
>  drivers/input/touchscreen/goodix.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
> index ca19668..a3e2057 100644
> --- a/drivers/input/touchscreen/goodix.c
> +++ b/drivers/input/touchscreen/goodix.c
> @@ -48,6 +48,7 @@ struct goodix_ts_data {
>  #define GOODIX_REG_VERSION		0x8140
>  
>  #define RESOLUTION_LOC		1
> +#define MAX_CONTACTS_LOC	5
>  #define TRIGGER_LOC		6
>  
>  static const unsigned long goodix_irq_flags[] = {
> @@ -99,7 +100,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
>  	}
>  
>  	touch_num = data[0] & 0x0f;
> -	if (touch_num > GOODIX_MAX_CONTACTS)
> +	if (touch_num > ts->max_touch_num)
>  		return -EPROTO;
>  
>  	if (touch_num > 1) {
> @@ -141,7 +142,7 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
>   */
>  static void goodix_process_events(struct goodix_ts_data *ts)
>  {
> -	u8  point_data[1 + GOODIX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
> +	u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
>  	int touch_num;
>  	int i;
>  
> @@ -202,21 +203,23 @@ static void goodix_read_config(struct goodix_ts_data *ts)
>  		ts->abs_x_max = GOODIX_MAX_WIDTH;
>  		ts->abs_y_max = GOODIX_MAX_HEIGHT;
>  		ts->int_trigger_type = GOODIX_INT_TRIGGER;
> +		ts->max_touch_num = GOODIX_MAX_CONTACTS;
>  		return;
>  	}
>  
>  	ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);
>  	ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 2]);
>  	ts->int_trigger_type = (config[TRIGGER_LOC]) & 0x03;
> -	if (!ts->abs_x_max || !ts->abs_y_max) {
> +	ts->max_touch_num = (config[MAX_CONTACTS_LOC]) & 0x0f;

Parentheses are not really needed here, but I see that you just followed
the style from the line above, so it's OK, I'll send a cleanup patch
to remove them from both lines.

> +	if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {
>  		dev_err(&ts->client->dev,
>  			"Invalid config, using defaults\n");
>  		ts->abs_x_max = GOODIX_MAX_WIDTH;
>  		ts->abs_y_max = GOODIX_MAX_HEIGHT;
> +		ts->max_touch_num = GOODIX_MAX_CONTACTS;
>  	}
>  }
>  
> -

This is an unrelated change, it's not a big deal of course but in
general it is a good practice to differentiate cosmetic changes from
functional ones.

>  /**
>   * goodix_read_version - Read goodix touchscreen version
>   *
> @@ -295,7 +298,7 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
>  	input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
>  	input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
>  
> -	input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
> +	input_mt_init_slots(ts->input_dev, ts->max_touch_num,
>  			    INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
>  
>  	ts->input_dev->name = "Goodix Capacitive TouchScreen";
> -- 
> 2.0.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Thanks,
   Antonio

-- 
Antonio Ospite
http://ao2.it

A: Because it messes up the order in which people normally read text.
   See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?

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

* Re: [PATCH v3] input: goodix: Add device tree support
  2015-03-05 17:32 ` [PATCH v3] input: goodix: Add device tree support Aleksei Mamlin
  2015-03-06 12:23   ` Bastien Nocera
@ 2015-03-06 13:53   ` Antonio Ospite
  2015-03-06 14:18     ` Aleksei Mamlin
  1 sibling, 1 reply; 21+ messages in thread
From: Antonio Ospite @ 2015-03-06 13:53 UTC (permalink / raw)
  To: Aleksei Mamlin; +Cc: linux-input, devicetree, Bastien Nocera, Hans de Goede

On Thu,  5 Mar 2015 20:32:41 +0300
Aleksei Mamlin <mamlinav@gmail.com> wrote:

> This patch adds device tree support and binding information for Goodix
> GT9xx series touchscreen controller.
> It also adds support for 5-finger chips, like GT911 and GT912, which
> can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
> 
> Changes since v2:
> * Split to two patches:
>   The first one for use max number of touches from device config.
>   The second one adds device tree support.
> 
> Changes since v1:
> * Merge patches into single patch.
> * Use max touch number from config instead of hardcoding.
> * Update description in Kconfig.
> 

Hi Aleksei,

patch history usually goes after the '---' marker, as an annotation, not
in the the commit message itself.

> Datasheets can be found here:
> https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing
> 
> Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
> ---
>  .../bindings/input/touchscreen/goodix.txt          | 29 ++++++++++++++++++++++
>  .../devicetree/bindings/vendor-prefixes.txt        |  1 +
>  drivers/input/touchscreen/Kconfig                  |  5 ++--
>  drivers/input/touchscreen/goodix.c                 | 21 +++++++++++++++-
>  4 files changed, 53 insertions(+), 3 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> 
> diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> new file mode 100644
> index 0000000..8ba98ee
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> @@ -0,0 +1,29 @@
> +Device tree bindings for Goodix GT9xx series touchscreen controller
> +
> +Required properties:
> +
> + - compatible		: Should be "goodix,gt911"
> +				 or "goodix,gt9110"
> +				 or "goodix,gt912"
> +				 or "goodix,gt927"
> +				 or "goodix,gt9271"
> +				 or "goodix,gt928"
> +				 or "goodix,gt967"
> + - reg			: I2C address of the chip. Should be 0x5d or 0x14
> + - interrupt-parent	: Interrupt controller to which the chip is connected
> + - interrupts		: Interrupt to which the chip is connected

These touch-screens supports two lines, an interrupt line and a reset
line; and they may be both bound to gpio pins, not necessarily to
system interrupts. The fields you specified above should be enough to
cover at least the case of a gpio driven interrupt line, I just wanted
to highlight the situation.

A gpio-reset property can be added in future when the driver will
actually make use of it.

JFTR, in the Android drivers the reset operation is sometimes called a
"guitar reset", the two lines are set and unset following the sequence
shown in the datasheet in order to change the device status
(interrupted, operational), on x86 this function can be transparently
performed by ACPI, on my device it is in fact done when calling the
PS0 method.

What is the situation on your ARM devices? Are you going to make use of
the reset line explicitly at some point? I am just curious.

> +
> +Example:
> +
> +	i2c@00000000 {
> +		/* ... */
> +
> +		gt928@5d {
> +			compatible = "goodix,gt928";
> +			reg = <0x5d>;
> +			interrupt-parent = <&gpio>;
> +			interrupts = <0 0>;
> +		};
> +
> +		/* ... */
> +	};
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> index 389ca13..ab6852d 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> @@ -76,6 +76,7 @@ geniatech	Geniatech, Inc.
>  giantplus	Giantplus Technology Co., Ltd.
>  globalscale	Globalscale Technologies, Inc.
>  gmt	Global Mixed-mode Technology, Inc.
> +goodix	Shenzhen Huiding Technology Co., Ltd.
>  google	Google, Inc.
>  gumstix	Gumstix, Inc.
>  gw	Gateworks Corporation
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 5891752..2adf724 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -297,11 +297,12 @@ config TOUCHSCREEN_FUJITSU
>  
>  config TOUCHSCREEN_GOODIX
>  	tristate "Goodix I2C touchscreen"
> -	depends on I2C && ACPI
> +	depends on I2C
>  	help
>  	  Say Y here if you have the Goodix touchscreen (such as one
>  	  installed in Onda v975w tablets) connected to your
> -	  system.
> +	  system. It also supports 5-finger chip models, which can be
> +	  found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
>  
>  	  If unsure, say N.
>  
> diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
> index a3e2057..efba6a3 100644
> --- a/drivers/input/touchscreen/goodix.c
> +++ b/drivers/input/touchscreen/goodix.c
> @@ -23,6 +23,8 @@
>  #include <linux/irq.h>
>  #include <linux/interrupt.h>
>  #include <linux/slab.h>
> +#include <linux/acpi.h>
> +#include <linux/of.h>
>  #include <asm/unaligned.h>
>  
>  struct goodix_ts_data {
> @@ -375,11 +377,27 @@ static const struct i2c_device_id goodix_ts_id[] = {
>  	{ }
>  };
>  
> +#ifdef CONFIG_ACPI
>  static const struct acpi_device_id goodix_acpi_match[] = {
>  	{ "GDIX1001", 0 },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
> +#endif
> +
> +#ifdef CONFIG_OF
> +static const struct of_device_id goodix_of_match[] = {
> +	{ .compatible = "goodix,gt911" },
> +	{ .compatible = "goodix,gt9110" },
> +	{ .compatible = "goodix,gt912" },
> +	{ .compatible = "goodix,gt927" },
> +	{ .compatible = "goodix,gt9271" },
> +	{ .compatible = "goodix,gt928" },
> +	{ .compatible = "goodix,gt967" },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(of, goodix_of_match);
> +#endif
>  
>  static struct i2c_driver goodix_ts_driver = {
>  	.probe = goodix_ts_probe,
> @@ -387,7 +405,8 @@ static struct i2c_driver goodix_ts_driver = {
>  	.driver = {
>  		.name = "Goodix-TS",
>  		.owner = THIS_MODULE,
> -		.acpi_match_table = goodix_acpi_match,
> +		.acpi_match_table = ACPI_PTR(goodix_acpi_match),
> +		.of_match_table = of_match_ptr(goodix_of_match),
>  	},
>  };
>  module_i2c_driver(goodix_ts_driver);
> -- 
> 2.0.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Antonio Ospite
http://ao2.it

A: Because it messes up the order in which people normally read text.
   See http://en.wikipedia.org/wiki/Posting_style
Q: Why is top-posting such a bad thing?

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

* Re: [PATCH v3] input: goodix: Add device tree support
  2015-03-06 13:53   ` Antonio Ospite
@ 2015-03-06 14:18     ` Aleksei Mamlin
  0 siblings, 0 replies; 21+ messages in thread
From: Aleksei Mamlin @ 2015-03-06 14:18 UTC (permalink / raw)
  To: Antonio Ospite; +Cc: linux-input, devicetree, Bastien Nocera, Hans de Goede

On Fri, 6 Mar 2015 14:53:59 +0100
Antonio Ospite <ao2@ao2.it> wrote:

> On Thu,  5 Mar 2015 20:32:41 +0300
> Aleksei Mamlin <mamlinav@gmail.com> wrote:
> 
> > This patch adds device tree support and binding information for Goodix
> > GT9xx series touchscreen controller.
> > It also adds support for 5-finger chips, like GT911 and GT912, which
> > can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
> > 
> > Changes since v2:
> > * Split to two patches:
> >   The first one for use max number of touches from device config.
> >   The second one adds device tree support.
> > 
> > Changes since v1:
> > * Merge patches into single patch.
> > * Use max touch number from config instead of hardcoding.
> > * Update description in Kconfig.
> > 
> 
> Hi Aleksei,
> 
> patch history usually goes after the '---' marker, as an annotation, not
> in the the commit message itself.
> 

Hi Antonio,

thanks for explanation, I'm still newbie in kernel development.

> > Datasheets can be found here:
> > https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing
> > 
> > Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
> > ---
> >  .../bindings/input/touchscreen/goodix.txt          | 29 ++++++++++++++++++++++
> >  .../devicetree/bindings/vendor-prefixes.txt        |  1 +
> >  drivers/input/touchscreen/Kconfig                  |  5 ++--
> >  drivers/input/touchscreen/goodix.c                 | 21 +++++++++++++++-
> >  4 files changed, 53 insertions(+), 3 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> > new file mode 100644
> > index 0000000..8ba98ee
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> > @@ -0,0 +1,29 @@
> > +Device tree bindings for Goodix GT9xx series touchscreen controller
> > +
> > +Required properties:
> > +
> > + - compatible		: Should be "goodix,gt911"
> > +				 or "goodix,gt9110"
> > +				 or "goodix,gt912"
> > +				 or "goodix,gt927"
> > +				 or "goodix,gt9271"
> > +				 or "goodix,gt928"
> > +				 or "goodix,gt967"
> > + - reg			: I2C address of the chip. Should be 0x5d or 0x14
> > + - interrupt-parent	: Interrupt controller to which the chip is connected
> > + - interrupts		: Interrupt to which the chip is connected
> 
> These touch-screens supports two lines, an interrupt line and a reset
> line; and they may be both bound to gpio pins, not necessarily to
> system interrupts. The fields you specified above should be enough to
> cover at least the case of a gpio driven interrupt line, I just wanted
> to highlight the situation.
> 
> A gpio-reset property can be added in future when the driver will
> actually make use of it.
> 
> JFTR, in the Android drivers the reset operation is sometimes called a
> "guitar reset", the two lines are set and unset following the sequence
> shown in the datasheet in order to change the device status
> (interrupted, operational), on x86 this function can be transparently
> performed by ACPI, on my device it is in fact done when calling the
> PS0 method.
> 
> What is the situation on your ARM devices? Are you going to make use of
> the reset line explicitly at some point? I am just curious.
> 

On my ARM tablet stock Android driver uses both interrupt and reset pins,
so I have plans to add support of reset, sleep and wake up.
But I have no experience yet, this may take a time.

> > +
> > +Example:
> > +
> > +	i2c@00000000 {
> > +		/* ... */
> > +
> > +		gt928@5d {
> > +			compatible = "goodix,gt928";
> > +			reg = <0x5d>;
> > +			interrupt-parent = <&gpio>;
> > +			interrupts = <0 0>;
> > +		};
> > +
> > +		/* ... */
> > +	};
> > diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> > index 389ca13..ab6852d 100644
> > --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> > +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> > @@ -76,6 +76,7 @@ geniatech	Geniatech, Inc.
> >  giantplus	Giantplus Technology Co., Ltd.
> >  globalscale	Globalscale Technologies, Inc.
> >  gmt	Global Mixed-mode Technology, Inc.
> > +goodix	Shenzhen Huiding Technology Co., Ltd.
> >  google	Google, Inc.
> >  gumstix	Gumstix, Inc.
> >  gw	Gateworks Corporation
> > diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> > index 5891752..2adf724 100644
> > --- a/drivers/input/touchscreen/Kconfig
> > +++ b/drivers/input/touchscreen/Kconfig
> > @@ -297,11 +297,12 @@ config TOUCHSCREEN_FUJITSU
> >  
> >  config TOUCHSCREEN_GOODIX
> >  	tristate "Goodix I2C touchscreen"
> > -	depends on I2C && ACPI
> > +	depends on I2C
> >  	help
> >  	  Say Y here if you have the Goodix touchscreen (such as one
> >  	  installed in Onda v975w tablets) connected to your
> > -	  system.
> > +	  system. It also supports 5-finger chip models, which can be
> > +	  found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
> >  
> >  	  If unsure, say N.
> >  
> > diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
> > index a3e2057..efba6a3 100644
> > --- a/drivers/input/touchscreen/goodix.c
> > +++ b/drivers/input/touchscreen/goodix.c
> > @@ -23,6 +23,8 @@
> >  #include <linux/irq.h>
> >  #include <linux/interrupt.h>
> >  #include <linux/slab.h>
> > +#include <linux/acpi.h>
> > +#include <linux/of.h>
> >  #include <asm/unaligned.h>
> >  
> >  struct goodix_ts_data {
> > @@ -375,11 +377,27 @@ static const struct i2c_device_id goodix_ts_id[] = {
> >  	{ }
> >  };
> >  
> > +#ifdef CONFIG_ACPI
> >  static const struct acpi_device_id goodix_acpi_match[] = {
> >  	{ "GDIX1001", 0 },
> >  	{ }
> >  };
> >  MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
> > +#endif
> > +
> > +#ifdef CONFIG_OF
> > +static const struct of_device_id goodix_of_match[] = {
> > +	{ .compatible = "goodix,gt911" },
> > +	{ .compatible = "goodix,gt9110" },
> > +	{ .compatible = "goodix,gt912" },
> > +	{ .compatible = "goodix,gt927" },
> > +	{ .compatible = "goodix,gt9271" },
> > +	{ .compatible = "goodix,gt928" },
> > +	{ .compatible = "goodix,gt967" },
> > +	{ }
> > +};
> > +MODULE_DEVICE_TABLE(of, goodix_of_match);
> > +#endif
> >  
> >  static struct i2c_driver goodix_ts_driver = {
> >  	.probe = goodix_ts_probe,
> > @@ -387,7 +405,8 @@ static struct i2c_driver goodix_ts_driver = {
> >  	.driver = {
> >  		.name = "Goodix-TS",
> >  		.owner = THIS_MODULE,
> > -		.acpi_match_table = goodix_acpi_match,
> > +		.acpi_match_table = ACPI_PTR(goodix_acpi_match),
> > +		.of_match_table = of_match_ptr(goodix_of_match),
> >  	},
> >  };
> >  module_i2c_driver(goodix_ts_driver);
> > -- 
> > 2.0.5
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-input" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
> -- 
> Antonio Ospite
> http://ao2.it
> 
> A: Because it messes up the order in which people normally read text.
>    See http://en.wikipedia.org/wiki/Posting_style
> Q: Why is top-posting such a bad thing?


-- 
Thanks and regards,
Aleksei Mamlin

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

* Re: [PATCH] input: goodix: Use max touch number from device config
  2015-03-06 13:42   ` Antonio Ospite
@ 2015-03-07  0:41     ` Dmitry Torokhov
  0 siblings, 0 replies; 21+ messages in thread
From: Dmitry Torokhov @ 2015-03-07  0:41 UTC (permalink / raw)
  To: Antonio Ospite
  Cc: Aleksei Mamlin, linux-input, devicetree, Bastien Nocera, Hans de Goede

On Fri, Mar 06, 2015 at 02:42:31PM +0100, Antonio Ospite wrote:
> On Thu,  5 Mar 2015 20:32:24 +0300
> Aleksei Mamlin <mamlinav@gmail.com> wrote:
> 
> > Use max number of touches from device config instead of hardcoding.
> > 
> > Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
> 
> Tested-by: Antonio Ospite <ao2@ao2.it>
> 
> Some minor comments below, but no need to resend IMHO.

Applied, thank you.

> 
> > ---
> >  drivers/input/touchscreen/goodix.c | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
> > index ca19668..a3e2057 100644
> > --- a/drivers/input/touchscreen/goodix.c
> > +++ b/drivers/input/touchscreen/goodix.c
> > @@ -48,6 +48,7 @@ struct goodix_ts_data {
> >  #define GOODIX_REG_VERSION		0x8140
> >  
> >  #define RESOLUTION_LOC		1
> > +#define MAX_CONTACTS_LOC	5
> >  #define TRIGGER_LOC		6
> >  
> >  static const unsigned long goodix_irq_flags[] = {
> > @@ -99,7 +100,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
> >  	}
> >  
> >  	touch_num = data[0] & 0x0f;
> > -	if (touch_num > GOODIX_MAX_CONTACTS)
> > +	if (touch_num > ts->max_touch_num)
> >  		return -EPROTO;
> >  
> >  	if (touch_num > 1) {
> > @@ -141,7 +142,7 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data)
> >   */
> >  static void goodix_process_events(struct goodix_ts_data *ts)
> >  {
> > -	u8  point_data[1 + GOODIX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
> > +	u8  point_data[1 + GOODIX_CONTACT_SIZE * ts->max_touch_num];
> >  	int touch_num;
> >  	int i;
> >  
> > @@ -202,21 +203,23 @@ static void goodix_read_config(struct goodix_ts_data *ts)
> >  		ts->abs_x_max = GOODIX_MAX_WIDTH;
> >  		ts->abs_y_max = GOODIX_MAX_HEIGHT;
> >  		ts->int_trigger_type = GOODIX_INT_TRIGGER;
> > +		ts->max_touch_num = GOODIX_MAX_CONTACTS;
> >  		return;
> >  	}
> >  
> >  	ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);
> >  	ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 2]);
> >  	ts->int_trigger_type = (config[TRIGGER_LOC]) & 0x03;
> > -	if (!ts->abs_x_max || !ts->abs_y_max) {
> > +	ts->max_touch_num = (config[MAX_CONTACTS_LOC]) & 0x0f;
> 
> Parentheses are not really needed here, but I see that you just followed
> the style from the line above, so it's OK, I'll send a cleanup patch
> to remove them from both lines.
> 
> > +	if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {
> >  		dev_err(&ts->client->dev,
> >  			"Invalid config, using defaults\n");
> >  		ts->abs_x_max = GOODIX_MAX_WIDTH;
> >  		ts->abs_y_max = GOODIX_MAX_HEIGHT;
> > +		ts->max_touch_num = GOODIX_MAX_CONTACTS;
> >  	}
> >  }
> >  
> > -
> 
> This is an unrelated change, it's not a big deal of course but in
> general it is a good practice to differentiate cosmetic changes from
> functional ones.
> 
> >  /**
> >   * goodix_read_version - Read goodix touchscreen version
> >   *
> > @@ -295,7 +298,7 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
> >  	input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);
> >  	input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
> >  
> > -	input_mt_init_slots(ts->input_dev, GOODIX_MAX_CONTACTS,
> > +	input_mt_init_slots(ts->input_dev, ts->max_touch_num,
> >  			    INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
> >  
> >  	ts->input_dev->name = "Goodix Capacitive TouchScreen";
> > -- 
> > 2.0.5
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-input" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> Thanks,
>    Antonio
> 
> -- 
> Antonio Ospite
> http://ao2.it
> 
> A: Because it messes up the order in which people normally read text.
>    See http://en.wikipedia.org/wiki/Posting_style
> Q: Why is top-posting such a bad thing?
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Dmitry

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

* Re: [PATCH v3] input: goodix: Add device tree support
  2015-03-06 12:23   ` Bastien Nocera
@ 2015-03-07  0:47     ` Dmitry Torokhov
  0 siblings, 0 replies; 21+ messages in thread
From: Dmitry Torokhov @ 2015-03-07  0:47 UTC (permalink / raw)
  To: Bastien Nocera; +Cc: Aleksei Mamlin, linux-input, devicetree, Hans de Goede

On Fri, Mar 06, 2015 at 01:23:45PM +0100, Bastien Nocera wrote:
> On Thu, 2015-03-05 at 20:32 +0300, Aleksei Mamlin wrote:
> > This patch adds device tree support and binding information for 
> > Goodix GT9xx series touchscreen controller.
> > It also adds support for 5-finger chips, like GT911 and GT912, which 
> > can be found on ARM tablets, like Wexler TAB7200 and MSI Primo73.
> > 
> > Changes since v2:
> > * Split to two patches:
> >   The first one for use max number of touches from device config.
> >   The second one adds device tree support.
> > 
> > Changes since v1:
> > * Merge patches into single patch.
> > * Use max touch number from config instead of hardcoding.
> > * Update description in Kconfig.
> > 
> > Datasheets can be found here:
> > https://drive.google.com/folderview?id=0BxCVOQS3ZymGfmJyY2RKbE5XbVlKNlktVTlwV0lxNEdxd2dzeWZER094cmJPVnMxN1F0Yzg&usp=sharing
> > 
> > Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
> 
> Reviewed-by: Bastien Nocera <hadess@hadess.net>

Applied, thank you.

-- 
Dmitry

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

end of thread, other threads:[~2015-03-07  0:47 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-04  8:32 [PATCH 0/2] Add device tree support for Goodix GT9xx series touchscreen controller Aleksei Mamlin
2015-03-04  8:33 ` [PATCH 1/2] input: goodix: Add device tree support Aleksei Mamlin
2015-03-04  9:21   ` Bastien Nocera
2015-03-04 17:12     ` Antonio Ospite
2015-03-04  8:34 ` [PATCH 2/2] input: goodix: Add device tree support for 5-finger chips Aleksei Mamlin
     [not found]   ` <1425458053-4559-1-git-send-email-mamlinav-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-04  9:19     ` Bastien Nocera
     [not found]       ` <1425460748.9384.2.camel-0MeiytkfxGOsTnJN9+BGXg@public.gmane.org>
2015-03-04 17:53         ` Aleksei Mamlin
2015-03-04 10:30   ` Antonio Ospite
2015-03-04 10:55     ` Aleksei Mamlin
2015-03-05 16:18 ` [PATCH v2] input: goodix: Add device tree support Aleksei Mamlin
2015-03-05 16:32   ` Bastien Nocera
2015-03-05 16:36   ` Benjamin Tissoires
2015-03-05 17:32 ` [PATCH] input: goodix: Use max touch number from device config Aleksei Mamlin
2015-03-06 12:19   ` Bastien Nocera
2015-03-06 13:42   ` Antonio Ospite
2015-03-07  0:41     ` Dmitry Torokhov
2015-03-05 17:32 ` [PATCH v3] input: goodix: Add device tree support Aleksei Mamlin
2015-03-06 12:23   ` Bastien Nocera
2015-03-07  0:47     ` Dmitry Torokhov
2015-03-06 13:53   ` Antonio Ospite
2015-03-06 14:18     ` Aleksei Mamlin

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.