Skip to contentSkip to conversation

Input: atmel_mxt_ts - add generic platform data for Chromebooks

PATCH In review Dmitry Torokhov 2 participants 4 messages Nov 24, 2015 – Dec 1, 2015

Subsystems (3)
lore
Share & tools
lore

Dmitry Torokhov

author maintainer
#0 lore raw

PATCH 1/1 Input: atmel_mxt_ts - add generic platform data for Chromebooks

Apparently people are installing generic Linux distributions not only on Pixels but also on other Chromebooks. Unfortunately on all of them Atmel parts assigned names ATML0000 and ATML0001, and do not carry any other configuration data. So let's create generic instance of platform data that should cover most of them (we assume that they will not be using T100 objects, since with those Google mapped BTN_LEFT onto a different GPIO, so slightly different keymap would be needed, but I think we used parts with T100 on ARM devices where we thankfully have DTS and can describe the devices better).

---
 drivers/input/touchscreen/atmel_mxt_ts.c | 33 ++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
drivers/input/touchscreen/atmel_mxt_ts.c +33 -0
index c562205..159120b 100644
@@ -2487,6 +2487,31 @@ static struct mxt_acpi_platform_data samus_platform_data[] = {
 	{ }
 };
 
+static unsigned int chromebook_tp_buttons[] = {
+	KEY_RESERVED,
+	KEY_RESERVED,
+	KEY_RESERVED,
+	KEY_RESERVED,
+	KEY_RESERVED,
+	BTN_LEFT
+};
+
+static struct mxt_acpi_platform_data chromebook_platform_data[] = {
+	{
+		/* Touchpad */
+		.hid	= "ATML0000",
+		.pdata	= {
+			.t19_num_keys	= ARRAY_SIZE(chromebook_tp_buttons),
+			.t19_keymap	= chromebook_tp_buttons,
+		},
+	},
+	{
+		/* Touchscreen */
+		.hid	= "ATML0001",
+	},
+	{ }
+};
+
 static const struct dmi_system_id mxt_dmi_table[] = {
 	{
 		/* 2015 Google Pixel */
@@ -2497,6 +2522,14 @@ static const struct dmi_system_id mxt_dmi_table[] = {
 		},
 		.driver_data = samus_platform_data,
 	},
+	{
+		/* Other Google Chromebooks */
+		.ident = "Chromebook",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
+		},
+		.driver_data = chromebook_platform_data,
+	},
 	{ }
 };
 
Signature · 5 lines
2.6.0.rc2.230.g3dd15c0


-- 
Dmitry
Reviewed-by on v1 1/1
#1 lore raw

Hello Dmitry,

Quoted 10 lines · Dmitry Torokhov

Apparently people are installing generic Linux distributions not only on Pixels but also on other Chromebooks. Unfortunately on all of them Atmel parts assigned names ATML0000 and ATML0001, and do not carry any other configuration data. So let's create generic instance of platform data that should cover most of them (we assume that they will not be using T100 objects, since with those Google mapped BTN_LEFT onto a different GPIO, so slightly different keymap would be needed, but I think we used parts with T100 on ARM devices where we thankfully have DTS and can describe the devices better).

That is correct, an example of an ARM based Chromebook that has an Atmel chip with a T100 object is the Exynos5800 Peach Pi Chromebook and as you correctly said, the buttons to GPIO mapping is described in the DTS, i.e:

	/* Atmel mXT540S */
	trackpad@4b {
		compatible = "atmel,maxtouch";
		reg = <0x4b>;
		interrupt-parent = <&gpx1>;
		interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
		wakeup-source;
		pinctrl-names = "default";
		pinctrl-0 = <&trackpad_irq>;
		linux,gpio-keymap = <KEY_RESERVED
				     KEY_RESERVED
				     KEY_RESERVED	/* GPIO 0 */
				     KEY_RESERVED	/* GPIO 1 */
				     BTN_LEFT		/* GPIO 2 */
				     KEY_RESERVED>;	/* GPIO 3 */
	};
Quoted 11 lines
---
 drivers/input/touchscreen/atmel_mxt_ts.c | 33 ++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
drivers/input/touchscreen/atmel_mxt_ts.c +0 -0
index c562205..159120b 100644

drivers/input/touchscreen/atmel_mxt_ts.c static struct mxt_acpi_platform_data samus_platform_data[] = { · line 2490

Quoted 4 lines
drivers/input/touchscreen/atmel_mxt_ts.c +1 -0
@@ -2487,6 +2487,31 @@ static struct mxt_acpi_platform_data samus_platform_data[] = {
 	{ }
 };
 
+static unsigned int chromebook_tp_buttons[] = {

Maybe naming it chromebook_t19_buttons instead to make it clear that the mapping is specific to the T19 object or at least document that assumption?

Although is mentioned in the commit message so I don't have a strong preference and the patch looks good to me:

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America
author maintainer
#2 lore raw

Hi Javier,

Quoted 49 lines · Javier Martinez Canillas

Hello Dmitry,

Quoted 10 lines · Dmitry Torokhov

Apparently people are installing generic Linux distributions not only on Pixels but also on other Chromebooks. Unfortunately on all of them Atmel parts assigned names ATML0000 and ATML0001, and do not carry any other configuration data. So let's create generic instance of platform data that should cover most of them (we assume that they will not be using T100 objects, since with those Google mapped BTN_LEFT onto a different GPIO, so slightly different keymap would be needed, but I think we used parts with T100 on ARM devices where we thankfully have DTS and can describe the devices better).

That is correct, an example of an ARM based Chromebook that has an Atmel chip with a T100 object is the Exynos5800 Peach Pi Chromebook and as you correctly said, the buttons to GPIO mapping is described in the DTS, i.e:

	/* Atmel mXT540S */
	trackpad@4b {
		compatible = "atmel,maxtouch";
		reg = <0x4b>;
		interrupt-parent = <&gpx1>;
		interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
		wakeup-source;
		pinctrl-names = "default";
		pinctrl-0 = <&trackpad_irq>;
		linux,gpio-keymap = <KEY_RESERVED
				     KEY_RESERVED
				     KEY_RESERVED	/* GPIO 0 */
				     KEY_RESERVED	/* GPIO 1 */
				     BTN_LEFT		/* GPIO 2 */
				     KEY_RESERVED>;	/* GPIO 3 */
	};
Quoted 14 lines
---
 drivers/input/touchscreen/atmel_mxt_ts.c | 33 ++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
drivers/input/touchscreen/atmel_mxt_ts.c +0 -0
index c562205..159120b 100644
@@ -2487,6 +2487,31 @@ static struct mxt_acpi_platform_data samus_platform_data[] = {
 	{ }
 };
 
Quoted 4 lines

drivers/input/touchscreen/atmel_mxt_ts.c static struct mxt_acpi_platform_data samus_platform_data[] = { · line 2490

Quoted 1 line
drivers/input/touchscreen/atmel_mxt_ts.c +1 -0
+static unsigned int chromebook_tp_buttons[] = {

Maybe naming it chromebook_t19_buttons instead to make it clear that the mapping is specific to the T19 object or at least document that assumption?

The idea was to document that the mapping is applied to the touchpad and not any other Atmel device that might have T19 object in it, similar to samus_touchpad_buttons[] array.

Quoted 5 lines

Although is mentioned in the commit message so I don't have a strong preference and the patch looks good to me:

Thank you for the review.

Signature · 1 line
Dmitry
#3 lore raw

Hello Dmitry,

On 12/01/2015 06:21 PM, Dmitry Torokhov wrote:

[snip]

Quoted 10 lines
Quoted 5 lines
Quoted 2 lines

+static unsigned int chromebook_tp_buttons[] = {

Maybe naming it chromebook_t19_buttons instead to make it clear that the mapping is specific to the T19 object or at least document that assumption?

The idea was to document that the mapping is applied to the touchpad and not any other Atmel device that might have T19 object in it, similar to samus_touchpad_buttons[] array.

You are right, the naming makes sense then indeed.

Thanks a lot for the explanation.

Quoted 8 lines
Quoted 5 lines

Although is mentioned in the commit message so I don't have a strong preference and the patch looks good to me:

Thank you for the review.

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America