Re: [PATCH] Elantech Touchpad: Fix Elantech touchpad and trackpoint for Lenovo ThinkPad notebooks.

From: Kai Heng Feng
Date: Sun Jan 06 2019 - 04:44:46 EST


Hi Benjamin,

> On Dec 29, 2018, at 1:53 AM, Philipp Kaelin <kaelinphilipp@xxxxxxxxx> wrote:
>
> Initial situation:
> - The touchpad of a Lenovo ThinkPad L580 doesn't work with newer kernel versions eg. 4.20
> - It used to work on earlier versions eg. 4.14
>
> Cause:
> - The elantech driver was adapted in to support SMBus wich not all firmware versions
> of the elantech firmware support. The SMBus is used as default.
>
> Solution:
> - Previously a blacklist was introduced for devices which doesn't support the access using SMBus.
> The ThinkPad P52 and P72 have already been fixed by adding it to such a blacklist in a prevois patch.
> The exact same solution fixed also the issue on the mentioned ThinkPad L580.
>
> Change:
> 1) The firmware id of the ThinkPad L580 was added to this blacklist.
> 2) To not have a half baked solution the information which firmware versions are using the same driver
> and therefore most probably have all the same issue was extracted from the Lenovo Windows driver package.
> All these firmware versions are now also added to the blacklist.

I actually have a reversed situation:
Iâd like to make Elantech touchpad defaults to SMBus on some platforms, but the firmware version does not match to ETP_NEW_IC_SMBUS_HOST_NOTIFY().

Use whitelist is obviously a bad idea so Iâd like to know do you have any better approach in mind?

Kai-Heng

>
> Risk assesment:
> As in prevois versions of the kernel eg. 4.14 none of the devices used to be accessed via SMBus
> (and they are reported to work at this time) it's quite safe that this blaklisting doesn't cause
> any harm on devices which have not been testes but included in the blacklist.
>
> Signed-off-by: Philipp Kaelin <kaelinphilipp@xxxxxxxxx>
> ---
> drivers/input/mouse/elantech.c | 23 +++++++++++++++++++----
> 1 file changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index 9fe075c137dc..e5fa8cfd8393 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -1772,10 +1772,25 @@ static const char * const i2c_blacklist_pnp_ids[] = {
> * These are known to not be working properly as bits are missing
> * in elan_i2c.
> */
> - "LEN2131", /* ThinkPad P52 w/ NFC */
> - "LEN2132", /* ThinkPad P52 */
> - "LEN2133", /* ThinkPad P72 w/ NFC */
> - "LEN2134", /* ThinkPad P72 */
> + "LEN2131", /* Walter-3 w/ NFC ThinkPad P52 w/ NFC */
> + "LEN2132", /* Walter-3 w/o/ NFC ThinkPad P52 */
> + "LEN2133", /* Chiron w/ NFC ThinkPad P72 w/ NFC */
> + "LEN2134", /* Chiron w/o/ NFC ThinkPad P72 */
> + "LEN2037", /* Lando w/ NFC ThinkPad L580 w/ NFC */
> + "LEN2038", /* Lando w/o/ NFC ThinkPad L580 */
> + "LEN004F", /* Storm w/o/ NFC */
> + "LEN005C", /* Storm w/ NFC */
> + "LEN2030", /* Carling */
> + "LEN2031", /* Bell */
> + "LEN2032", /* Bell-2 */
> + "LEN2033", /* Storm-2 */
> + "LEN2034", /* Storm-3 */
> + "LEN2035", /* Solo w/ NFC */
> + "LEN2036", /* Solo w/o/ NFC */
> + "LEN2039", /* Leia */
> + "LEN2130", /* Kylo (Clamshell) */
> + "LEN008F", /* Kolar w/o/ NF */
> + "LEN0090", /* Kolar w/ NFC */
> NULL
> };
>
> --
> 2.19.2
>