Re: [RFC] chromeos_laptop: Make touchscreen work on C720

From: Dmitry Torokhov
Date: Tue Dec 03 2019 - 14:36:36 EST


Hi Stephen,

On Tue, Dec 03, 2019 at 11:03:18AM -0500, Stephen Oberholtzer wrote:
> From 627be71ee77f4fc20cdb55c6e0a06826fb43ca9d Mon Sep 17 00:00:00 2001
> From: Stephen Oberholtzer <stevie@xxxxxxxxx>
> Date: Tue, 3 Dec 2019 02:20:28 -0500
> Subject: [RFC] chromeos_laptop: Make touchscreen work on C720
>
> I have an old Acer C720 Chromebook reflashed with MrChromebox, running
> Debian. When I did an upgrade, the touchscreen stopped working; I traced
> it to the kernel.
>
> After six hours of bisecting -- if anyone can tell me how to make a kernel
> build take less than 2 hours of CPU time while bisecting, I'd greatly
> appreciate it -- I tracked the problem to commit 7cf432bf0586
> ("Input: atmel_mxt_ts - require device properties present when probing").
>
> Looking at https://lkml.org/lkml/2018/5/3/955, it appears that the idea
> was to reassign the responsibility for setting up ACPI data for
> atmel_mxt_ts into chromeos_laptop, which makes a lot of sense, as that
> would tidy up some potential maintenance issues.
>
> However, that doesn't actually work. The chromeos_laptop code appears to
> categorize every Chromebook as exactly one of the following:
>
> (A) Having I2C devices (declared using DECLARE_CROS_LAPTOP)
> (B) Requiring ACPI munging (declared using DECLARE_ACPI_CROS_LAPTOP)
>
> There's some stuff about a board_info.properties that looks like it's meant
> to do the job for I2C devices, but it doesn't seem to do anything;
> it *definitely* doesn't do what the atmel_mxt_ts driver is expecting.
>
> On the other hand, when I apply the following patch to a recent kernel
> (5.2 is the one I tested), my touchscreen works again.
>
> I'm still not sure if the appropriate solution is to ensure that the
> ACPI properties are set, or if atmel_mxt_ts should be checking both
> ACPI properties and the I2C board_info.properties, however.

Acer C720 did not use ACPI to describe its devices, it relied on static
board support to instantiate touchscreen and trackpad and other devices.
Does the new kernel work with the original firmware (it should as that's
what it's been tested with)?

I see that MrChromebox BIOS declares the peripherals on Peppy via ACPI.
I'd recommend reaching out and ask to update the binding (maybe switch
from ATML0001 to PRP0001 and full OF-style binding to avoid confusion).

Thanks.

--
Dmitry