Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp12019568pxu; Fri, 1 Jan 2021 06:23:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJyLr9PSQ8R3ah1D07JCqo8UoAEYk+zX8zY291Mh9Pcoj/kNSx1u+nrrejlSOnV5Xyi25co8 X-Received: by 2002:a17:906:1c92:: with SMTP id g18mr50850607ejh.522.1609511008081; Fri, 01 Jan 2021 06:23:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609511008; cv=none; d=google.com; s=arc-20160816; b=bCw0N4Sh43AcO+MuaUkxto7z718rTUwQV8oREyn5Zwl+E+od4B7I9ev1PEO9JL5oy7 S01GDthv+aYm7IBntqyXDmjrPkTO1qp85dONNkZfX8NRUHc1DBtrOYms1WiF8xbk48Br tvMDsK03/kYInWj3T0hBNWe9z/zzfdWFEXIl4gXTBEHv/r/tmkR6dC6XBfuYC0CxOq7t FBs9k+5RZD7Z6lYBgzTkGrfw6sN4bUV0rpCjPKbI0ukpNA1hvAkt27e2cHkaB/sm2Q9a KcY177sADugYDdmlBYRdrA8j+UsUCQ8tg09X4L5RXRGvWpJJKNHjWdQ7hlUig34/ilTV WBaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:reply-to:cc:from:to :dkim-signature:date; bh=9IlciDeE4Mu3twWzeiCd2YETcAlvXlh3tCEyG5790LI=; b=u1MlDsLCnCgXkM+6fxm6v6vTQpnWZvAY8h19PnCAhFDWZ2mTULxkT055I4RzWi2Z4U FgTPZZvIzxnPwt+5rTFzIQ52LBRolpNtLWxdBKnR0chF2mnPVZHqNiNuKxit5rfciGxO WgAgKy5Ul3k40MMtwsjmeJDSc1cIi9K5kQfQjB9zVCWP0HJ7rvB1oHY8DJ+xB97k5Ahf ywEhmy4GkdNuUPjnhHebv4hPS+gRqp4eJn+9hOsX33639lhfqpyo84hCgecj6cbstEPW dnGbCUA54PSGDLy+mYd8GVSY8PJxML1pU38kBeFEL4DkXzs2vyjWkFvZ0L3n6Hged2Of JuMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail header.b=UKlEtp1D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ce28si25864605edb.124.2021.01.01.06.22.46; Fri, 01 Jan 2021 06:23:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail header.b=UKlEtp1D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727199AbhAAOVG (ORCPT + 99 others); Fri, 1 Jan 2021 09:21:06 -0500 Received: from mail-40136.protonmail.ch ([185.70.40.136]:52981 "EHLO mail-40136.protonmail.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727133AbhAAOVF (ORCPT ); Fri, 1 Jan 2021 09:21:05 -0500 Date: Fri, 01 Jan 2021 14:20:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1609510821; bh=9IlciDeE4Mu3twWzeiCd2YETcAlvXlh3tCEyG5790LI=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=UKlEtp1Db4Yg2xNY5Szd4Cw3GyCiUpXPUTLt/Y4On4yjy69Njs82wKN//q8RlbZz8 zZM3aAgbzsbCDfVQyOMbXg5lYf76Aqtmhv5ZjMQejwMlv0ZZ5lVg1QVTWCXAzRFXxp UOi6a5lCu0vmBC+AZ4QaaG/bIfEBE/x/3+80S5DA= To: Jiaxun Yang From: =?utf-8?Q?Barnab=C3=A1s_P=C5=91cze?= Cc: "platform-driver-x86@vger.kernel.org" , "stable@vger.kernel.org" , Ike Panhc , Hans de Goede , Mark Gross , "linux-kernel@vger.kernel.org" Reply-To: =?utf-8?Q?Barnab=C3=A1s_P=C5=91cze?= Subject: Re: [PATCH] platform/x86: ideapad-laptop: Add has_touchpad_switch Message-ID: <_kQDaYPt7vh_mQfPr1tLJV2IP-p40OBPcU5zk-1xHhF9XJsm8Y-efANBgiRdWU-J2QTtOjmrfE0Tw6UrZpm6uG-zZGlfpaVOp9FuoKAbjzA=@protonmail.com> In-Reply-To: <20210101061140.27547-1-jiaxun.yang@flygoat.com> References: <20210101061140.27547-1-jiaxun.yang@flygoat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi 2021. janu=C3=A1r 1., p=C3=A9ntek 7:11 keltez=C3=A9ssel, Jiaxun Yang =C3= =ADrta: > Newer ideapads (e.g.: Yoga 14s, 720S 14) comes with I2C HID > Touchpad and do not use EC to switch touchpad. Reading VPCCMD_R_TOUCHPAD > will return zero thus touchpad may be blocked. Writing VPCCMD_W_TOUCHPAD > may cause a spurious key press. > > Add has_touchpad_switch to workaround these machines. > > Signed-off-by: Jiaxun Yang > Cc: stable@vger.kernel.org # 5.4+ Interestingly, the Lenovo Yoga 540-14IKB 80X8 has an HID-over-I2C touchpad, and yet it can be controlled by reading/writing the appropriate EC register= s. > --- > drivers/platform/x86/ideapad-laptop.c | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86= /ideapad-laptop.c > index 7598cd46cf60..b6a4db37d0fc 100644 > --- a/drivers/platform/x86/ideapad-laptop.c > +++ b/drivers/platform/x86/ideapad-laptop.c > @@ -92,6 +92,7 @@ struct ideapad_private { > =09struct dentry *debug; > =09unsigned long cfg; > =09bool has_hw_rfkill_switch; > +=09bool has_touchpad_switch; > =09const char *fnesc_guid; > }; > > @@ -535,7 +536,9 @@ static umode_t ideapad_is_visible(struct kobject *kob= j, > =09} else if (attr =3D=3D &dev_attr_fn_lock.attr) { > =09=09supported =3D acpi_has_method(priv->adev->handle, "HALS") && > =09=09=09acpi_has_method(priv->adev->handle, "SALS"); > -=09} else > +=09} else if (attr =3D=3D &dev_attr_touchpad.attr) > +=09=09supported =3D priv->has_touchpad_switch; > +=09else > =09=09supported =3D true; > > =09return supported ? attr->mode : 0; > @@ -867,6 +870,9 @@ static void ideapad_sync_touchpad_state(struct ideapa= d_private *priv) > { > =09unsigned long value; > > +=09if (!priv->has_touchpad_switch) > +=09=09return; > + > =09/* Without reading from EC touchpad LED doesn't switch state */ > =09if (!read_ec_data(priv->adev->handle, VPCCMD_R_TOUCHPAD, &value)) { > =09=09/* Some IdeaPads don't really turn off touchpad - they only > @@ -989,6 +995,12 @@ static int ideapad_acpi_add(struct platform_device *= pdev) > =09priv->platform_device =3D pdev; > =09priv->has_hw_rfkill_switch =3D dmi_check_system(hw_rfkill_list); > > +=09/* Most ideapads with I2C HID don't use EC touchpad switch */ > +=09if (acpi_dev_present("PNP0C50", NULL, -1)) > +=09=09priv->has_touchpad_switch =3D false; > +=09else > +=09=09priv->has_touchpad_switch =3D true; > + `priv->has_touchpad_switch =3D !acpi_dev_present(...)` ? > =09ret =3D ideapad_sysfs_init(priv); > =09if (ret) > =09=09return ret; > @@ -1006,6 +1018,10 @@ static int ideapad_acpi_add(struct platform_device= *pdev) > =09if (!priv->has_hw_rfkill_switch) > =09=09write_ec_cmd(priv->adev->handle, VPCCMD_W_RF, 1); > > +=09/* The same for Touchpad */ > +=09if (!priv->has_touchpad_switch) > +=09=09write_ec_cmd(priv->adev->handle, VPCCMD_W_TOUCHPAD, 1); > + Shouldn't it be the other way around: `if (priv->has_touchpad_switch)`? > =09for (i =3D 0; i < IDEAPAD_RFKILL_DEV_NUM; i++) > =09=09if (test_bit(ideapad_rfk_data[i].cfgbit, &priv->cfg)) > =09=09=09ideapad_register_rfkill(priv, i); > -- > 2.30.0 Regards, Barnab=C3=A1s P=C5=91cze