diff mbox series

[7/7] platform/x86: touchscreen_dmi: Add info for the Goodix GT912 panel of TM800A550L tablets

Message ID 20210428114608.101795-8-hdegoede@redhat.com
State Superseded
Headers show
Series Input: goodix - Add support for controllers without flash | expand

Commit Message

Hans de Goede April 28, 2021, 11:46 a.m. UTC
The Bay Trail Glavey TM800A550L tablet, which ships with Android installed
from the factory, uses a GT912 touchscreen controller which needs to have
its firmware uploaded by the OS to work (this is a first for a x86 based
device with a Goodix touchscreen controller).

Add a touchscreen_dmi entry for this which specifies the filenames
to use for the firmware and config files needed for this.

Note this matches on a GDIX1001 ACPI HID, while the original DSDT uses
a HID of GODX0911. For the touchscreen to work on these devices a DSDT
override is necessary to fix a missing IRQ and broken GPIO settings in
the ACPI-resources for the touchscreen. This override also changes the
HID to the standard GDIX1001 id typically used for Goodix touchscreens.
The DSDT override is available here:
https://fedorapeople.org/~jwrdegoede/glavey-tm800a550l-dsdt-override/

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/platform/x86/touchscreen_dmi.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

Comments

Hans de Goede May 21, 2021, 10:11 a.m. UTC | #1
Hi,

On 4/28/21 1:46 PM, Hans de Goede wrote:
> The Bay Trail Glavey TM800A550L tablet, which ships with Android installed

> from the factory, uses a GT912 touchscreen controller which needs to have

> its firmware uploaded by the OS to work (this is a first for a x86 based

> device with a Goodix touchscreen controller).

> 

> Add a touchscreen_dmi entry for this which specifies the filenames

> to use for the firmware and config files needed for this.

> 

> Note this matches on a GDIX1001 ACPI HID, while the original DSDT uses

> a HID of GODX0911. For the touchscreen to work on these devices a DSDT

> override is necessary to fix a missing IRQ and broken GPIO settings in

> the ACPI-resources for the touchscreen. This override also changes the

> HID to the standard GDIX1001 id typically used for Goodix touchscreens.

> The DSDT override is available here:

> https://fedorapeople.org/~jwrdegoede/glavey-tm800a550l-dsdt-override/

> 

> Signed-off-by: Hans de Goede <hdegoede@redhat.com>


Note this patch is part of the
"[GIT PULL] Immutable branch between drivers/platform/x86 and drivers/input due for the v5.14 merge window"
pull-req which I just send out, leaving patches 1-6 to be merged through
the input tree (after merging the pull-req).

Regards,

Hans


> ---

>  drivers/platform/x86/touchscreen_dmi.c | 21 +++++++++++++++++++++

>  1 file changed, 21 insertions(+)

> 

> diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c

> index 90fe4f8f3c2c..d95f04b61111 100644

> --- a/drivers/platform/x86/touchscreen_dmi.c

> +++ b/drivers/platform/x86/touchscreen_dmi.c

> @@ -273,6 +273,18 @@ static const struct ts_dmi_data estar_beauty_hd_data = {

>  	.properties	= estar_beauty_hd_props,

>  };

>  

> +static const struct property_entry glavey_tm800a550l_props[] = {

> +	PROPERTY_ENTRY_STRING("firmware-name", "gt912-glavey-tm800a550l.fw"),

> +	PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-glavey-tm800a550l.cfg"),

> +	PROPERTY_ENTRY_U32("goodix,main-clk", 54),

> +	{ }

> +};

> +

> +static const struct ts_dmi_data glavey_tm800a550l_data = {

> +	.acpi_name	= "GDIX1001:00",

> +	.properties	= glavey_tm800a550l_props,

> +};

> +

>  static const struct property_entry gp_electronic_t701_props[] = {

>  	PROPERTY_ENTRY_U32("touchscreen-size-x", 960),

>  	PROPERTY_ENTRY_U32("touchscreen-size-y", 640),

> @@ -1003,6 +1015,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = {

>  			DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"),

>  		},

>  	},

> +	{	/* Glavey TM800A550L */

> +		.driver_data = (void *)&glavey_tm800a550l_data,

> +		.matches = {

> +			DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),

> +			DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),

> +			/* Above strings are too generic, also match on BIOS version */

> +			DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),

> +		},

> +	},

>  	{

>  		/* GP-electronic T701 */

>  		.driver_data = (void *)&gp_electronic_t701_data,

>
diff mbox series

Patch

diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c
index 90fe4f8f3c2c..d95f04b61111 100644
--- a/drivers/platform/x86/touchscreen_dmi.c
+++ b/drivers/platform/x86/touchscreen_dmi.c
@@ -273,6 +273,18 @@  static const struct ts_dmi_data estar_beauty_hd_data = {
 	.properties	= estar_beauty_hd_props,
 };
 
+static const struct property_entry glavey_tm800a550l_props[] = {
+	PROPERTY_ENTRY_STRING("firmware-name", "gt912-glavey-tm800a550l.fw"),
+	PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-glavey-tm800a550l.cfg"),
+	PROPERTY_ENTRY_U32("goodix,main-clk", 54),
+	{ }
+};
+
+static const struct ts_dmi_data glavey_tm800a550l_data = {
+	.acpi_name	= "GDIX1001:00",
+	.properties	= glavey_tm800a550l_props,
+};
+
 static const struct property_entry gp_electronic_t701_props[] = {
 	PROPERTY_ENTRY_U32("touchscreen-size-x", 960),
 	PROPERTY_ENTRY_U32("touchscreen-size-y", 640),
@@ -1003,6 +1015,15 @@  const struct dmi_system_id touchscreen_dmi_table[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"),
 		},
 	},
+	{	/* Glavey TM800A550L */
+		.driver_data = (void *)&glavey_tm800a550l_data,
+		.matches = {
+			DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
+			DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
+			/* Above strings are too generic, also match on BIOS version */
+			DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),
+		},
+	},
 	{
 		/* GP-electronic T701 */
 		.driver_data = (void *)&gp_electronic_t701_data,