aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hid/i2c-hid/i2c-hid.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c
index 78ca994e6254..cf71c33ac2b2 100644
--- a/drivers/hid/i2c-hid/i2c-hid.c
+++ b/drivers/hid/i2c-hid/i2c-hid.c
@@ -863,6 +863,15 @@ static int i2c_hid_fetch_hid_descriptor(struct i2c_hid *ihid)
863} 863}
864 864
865#ifdef CONFIG_ACPI 865#ifdef CONFIG_ACPI
866static const struct acpi_device_id i2c_hid_acpi_blacklist[] = {
867 /*
868 * The CHPN0001 ACPI device, which is used to describe the Chipone
869 * ICN8505 controller, has a _CID of PNP0C50 but is not HID compatible.
870 */
871 {"CHPN0001", 0 },
872 { },
873};
874
866static int i2c_hid_acpi_pdata(struct i2c_client *client, 875static int i2c_hid_acpi_pdata(struct i2c_client *client,
867 struct i2c_hid_platform_data *pdata) 876 struct i2c_hid_platform_data *pdata)
868{ 877{
@@ -879,6 +888,9 @@ static int i2c_hid_acpi_pdata(struct i2c_client *client,
879 return -ENODEV; 888 return -ENODEV;
880 } 889 }
881 890
891 if (acpi_match_device_ids(adev, i2c_hid_acpi_blacklist) == 0)
892 return -ENODEV;
893
882 obj = acpi_evaluate_dsm_typed(handle, &i2c_hid_guid, 1, 1, NULL, 894 obj = acpi_evaluate_dsm_typed(handle, &i2c_hid_guid, 1, 1, NULL,
883 ACPI_TYPE_INTEGER); 895 ACPI_TYPE_INTEGER);
884 if (!obj) { 896 if (!obj) {