Dear Sir/Madam,
We are interested in purchasing your company products, we do hope
to establish a long term relationship. However, we would like to
see your
company's latest catalogs with the Minimum Order Quantity .
Delivery time or FOB .
payment terms warranty .
We hope to hear from you soon as we need this order urgent.
Regards,
Jessica Chu,
Purchasing/Sales Manager
Vinco Holdings Ltd.
140 Church Hill , California USA.
Tel: +1 (541) 754 3010
Email: holdingsvinco(a)gmail.com
Recently we met a touchscreen problem on some Thinkpad machines, the
touchscreen driver (i2c-hid) is not loaded and the touchscreen can't
work.
An i2c ACPI device with the name WACF2200 is defined in the BIOS, with
the current ACPI PNP matching rule, this device will be regarded as
a PNP device since there is WACFXXX in the acpi_pnp_device_ids[] and
this PNP device is attached to the acpi device as the 1st
physical_node, this will make the i2c bus match fail when i2c bus
calls acpi_companion_match() to match the acpi_id_table in the i2c-hid
driver.
An ACPI PNP device's id has fixed format and its string length equals
7, after adding this check in the matching_id, the touchscreen could
work.
Cc: stable(a)vger.kernel.org
Signed-off-by: Hui Wang <hui.wang(a)canonical.com>
---
drivers/acpi/acpi_pnp.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/acpi/acpi_pnp.c b/drivers/acpi/acpi_pnp.c
index 4ed755a963aa..5ce711b9b070 100644
--- a/drivers/acpi/acpi_pnp.c
+++ b/drivers/acpi/acpi_pnp.c
@@ -319,6 +319,10 @@ static bool matching_id(const char *idstr, const char *list_id)
{
int i;
+ /* a pnp device id has CCCdddd format (C character, d digit), strlen should be 7 */
+ if (strlen(idstr) != 7)
+ return false;
+
if (memcmp(idstr, list_id, 3))
return false;
--
2.25.1