Message ID | 20180131045634.13328-1-kai.heng.feng@canonical.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
On Wed, Jan 31, 2018 at 5:56 AM, Kai-Heng Feng <kai.heng.feng@canonical.com> wrote: > The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out > of box. > > The touchpad relies on its _INI method to update its _HID value from > XXXX0000 to SYNA2393. > Also, the _STA relies on value of I2CN to report correct status. > > Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be > correctly set up, and _INI can get run. The ACPI table in this machine > is designed to get parsed this way. > > Also, change the quirk table to a more generic name. > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198515 > Cc: Mario Limonciello <mario.limonciello@dell.com> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> > --- > v3: Put the function under right #ifdef, comment adjustment > > v2: Andy's suggestion, merge to a single quirk table. > > drivers/acpi/bus.c | 40 +++++++++++++++++++++++++++++++++------- > 1 file changed, 33 insertions(+), 7 deletions(-) > > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c > index 4d0979e02a28..7cb18bc2b59a 100644 > --- a/drivers/acpi/bus.c > +++ b/drivers/acpi/bus.c > @@ -66,10 +66,39 @@ static int set_copy_dsdt(const struct dmi_system_id *id) > return 0; > } > #endif > +static int set_gbl_term_list(const struct dmi_system_id *id) > +{ > + pr_notice("%s detected - parse the entire table as a term_list\n", > + id->ident); This is not a useful message for a user (who may not know what trem_list is). Care to change it to something more useful, or even drop it? -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> On Feb 4, 2018, at 4:26 PM, Rafael J. Wysocki <rafael@kernel.org> wrote: > > On Wed, Jan 31, 2018 at 5:56 AM, Kai-Heng Feng > <kai.heng.feng@canonical.com> wrote: >> The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out >> of box. >> >> The touchpad relies on its _INI method to update its _HID value from >> XXXX0000 to SYNA2393. >> Also, the _STA relies on value of I2CN to report correct status. >> >> Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be >> correctly set up, and _INI can get run. The ACPI table in this machine >> is designed to get parsed this way. >> >> Also, change the quirk table to a more generic name. >> >> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198515 >> Cc: Mario Limonciello <mario.limonciello@dell.com> >> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> >> --- >> v3: Put the function under right #ifdef, comment adjustment >> >> v2: Andy's suggestion, merge to a single quirk table. >> >> drivers/acpi/bus.c | 40 +++++++++++++++++++++++++++++++++------- >> 1 file changed, 33 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c >> index 4d0979e02a28..7cb18bc2b59a 100644 >> --- a/drivers/acpi/bus.c >> +++ b/drivers/acpi/bus.c >> @@ -66,10 +66,39 @@ static int set_copy_dsdt(const struct dmi_system_id *id) >> return 0; >> } >> #endif >> +static int set_gbl_term_list(const struct dmi_system_id *id) >> +{ >> + pr_notice("%s detected - parse the entire table as a term_list\n", >> + id->ident); > > This is not a useful message for a user (who may not know what > trem_list is). Care to change it to something more useful, or even > drop it? Yes, I think it should be dropped. The information is already in the commit log and comment section, if the user really wants to know more. Kai-Heng -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 4d0979e02a28..7cb18bc2b59a 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -66,10 +66,39 @@ static int set_copy_dsdt(const struct dmi_system_id *id) return 0; } #endif +static int set_gbl_term_list(const struct dmi_system_id *id) +{ + pr_notice("%s detected - parse the entire table as a term_list\n", + id->ident); + acpi_gbl_parse_table_as_term_list = 1; + return 0; +} -static const struct dmi_system_id dsdt_dmi_table[] __initconst = { +static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = { + /* + * Touchpad on Dell XPS 9570/Precision M5530 doesn't work under I2C + * mode. + * https://bugzilla.kernel.org/show_bug.cgi?id=198515 + */ + { + .callback = set_gbl_term_list, + .ident = "Dell Precision M5530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Precision M5530"), + }, + }, + { + .callback = set_gbl_term_list, + .ident = "Dell XPS 15 9570", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "XPS 15 9570"), + }, + }, /* * Invoke DSDT corruption work-around on all Toshiba Satellite. + * DSDT will be copied to memory. * https://bugzilla.kernel.org/show_bug.cgi?id=14679 */ { @@ -83,7 +112,7 @@ static const struct dmi_system_id dsdt_dmi_table[] __initconst = { {} }; #else -static const struct dmi_system_id dsdt_dmi_table[] __initconst = { +static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = { {} }; #endif @@ -1001,11 +1030,8 @@ void __init acpi_early_init(void) acpi_permanent_mmap = true; - /* - * If the machine falls into the DMI check table, - * DSDT will be copied to memory - */ - dmi_check_system(dsdt_dmi_table); + /* Check machine-specific quirks */ + dmi_check_system(acpi_quirks_dmi_table); status = acpi_reallocate_root_table(); if (ACPI_FAILURE(status)) {
The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out of box. The touchpad relies on its _INI method to update its _HID value from XXXX0000 to SYNA2393. Also, the _STA relies on value of I2CN to report correct status. Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be correctly set up, and _INI can get run. The ACPI table in this machine is designed to get parsed this way. Also, change the quirk table to a more generic name. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198515 Cc: Mario Limonciello <mario.limonciello@dell.com> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> --- v3: Put the function under right #ifdef, comment adjustment v2: Andy's suggestion, merge to a single quirk table. drivers/acpi/bus.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-)