git: 4cd94c8afb31 - main - atkbdc: Add additional heurstic for Chromebook keyboards
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 09 Sep 2023 17:14:14 UTC
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=4cd94c8afb31965c7f18471eaa0b2d5e661c24fb commit 4cd94c8afb31965c7f18471eaa0b2d5e661c24fb Author: Warner Losh <imp@FreeBSD.org> AuthorDate: 2023-09-09 02:18:33 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2023-09-09 17:13:25 +0000 atkbdc: Add additional heurstic for Chromebook keyboards It turns out that that heurstic used to determine if we have a Google coreboot, and thus have the i8042 emulation bugs, is incorrect. At least one Acer "Peppy" Chromebook has an issue because Acer space'd out the smbios.bios.version string we're using as part of the heuristic. So, if the version starts with a space, then enable the workarounds if the smbios.bios.reldate is 2018 or earlier. While not perfect, it should be a reasonable dividing line and still allow newer core boot-based machines that aren't Chromebooks to not have the workaround. Tested by: Matthias Apitz Sponsored by: Netflix MFC After: 3 days (14.0 candiate) --- sys/dev/atkbdc/atkbdc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/dev/atkbdc/atkbdc.c b/sys/dev/atkbdc/atkbdc.c index 6168b389841b..c23afe3323cf 100644 --- a/sys/dev/atkbdc/atkbdc.c +++ b/sys/dev/atkbdc/atkbdc.c @@ -147,6 +147,7 @@ atkbdc_getquirks(void) char *maker = kern_getenv("smbios.system.maker"); char *product = kern_getenv("smbios.system.product"); char *version = kern_getenv("smbios.bios.version"); + char *reldate = kern_getenv("smbios.bios.reldate"); for (i = 0; i < nitems(quirks); i++) if (QUIRK_STR_EQUAL(quirks[i].bios_vendor, bios_vendor) && @@ -154,6 +155,16 @@ atkbdc_getquirks(void) QUIRK_STR_EQUAL(quirks[i].product, product) && QUIRK_STR_MATCH(quirks[i].version, version)) return (quirks[i].quirk); + /* + * Some Chromebooks don't conform to the google comment above so do the + * Chromebook workaround for all <= 2018 coreboot systems that have a + * 'blank' version. At least one Acer "Peppy" chromebook has this issue, + * with a reldate of 08/13/2014. + */ + if (QUIRK_STR_EQUAL("coreboot", bios_vendor) && + (version != NULL && *version == ' ') && + (reldate != NULL && strlen(reldate) >= 10 && strcmp(reldate + 6, "2018") <= 0)) + return (CHROMEBOOK_WORKAROUND); return (0); }