All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxim Mikityanskiy <maxtram95@gmail.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: "Mark Gross" <markgross@kernel.org>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Barnabás Pőcze" <pobrn@protonmail.com>,
	"Kai Heng Feng" <kai.heng.feng@canonical.com>,
	"GOESSEL Guillaume" <g_goessel@outlook.com>,
	"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
	"Manyi Li" <limanyi@uniontech.com>,
	"Eray Orçunus" <erayorcunus@gmail.com>,
	"Philipp Jungkamp" <p.jungkamp@gmx.net>,
	"Arnav Rawat" <arnavr3@illinois.edu>,
	"Kelly Anderson" <kelly@xilka.com>,
	"Meng Dong" <whenov@gmail.com>,
	"Felix Eckhofer" <felix@eckhofer.com>,
	"Ike Panhc" <ike.pan@canonical.com>,
	platform-driver-x86@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] platform/x86: ideapad-laptop: Stop sending KEY_TOUCHPAD_TOGGLE
Date: Mon, 3 Apr 2023 23:51:20 +0300	[thread overview]
Message-ID: <ZCs8SA47vGCjVl1l@mail.gmail.com> (raw)
In-Reply-To: <ZCatIn7ok4jRrXS9@mail.gmail.com>

On Fri, 31 Mar 2023 at 12:51:30 +0300, Maxim Mikityanskiy wrote:
> On Thu, 30 Mar 2023 at 21:46:44 +0200, Hans de Goede wrote:
> > Commit 5829f8a897e4 ("platform/x86: ideapad-laptop: Send
> > KEY_TOUCHPAD_TOGGLE on some models") made ideapad-laptop send
> > KEY_TOUCHPAD_TOGGLE when we receive an ACPI notify with VPC event bit 5 set
> > and the touchpad-state has not been changed by the EC itself already.
> > 
> > This was done under the assumption that this would be good to do to make
> > the touchpad-toggle hotkey work on newer models where the EC does not
> > toggle the touchpad on/off itself (because it is not routed through
> > the PS/2 controller, but uses I2C).
> > 
> > But it turns out that at least some models, e.g. the Yoga 7-15ITL5 the EC
> > triggers an ACPI notify with VPC event bit 5 set on resume, which would
> > now cause a spurious KEY_TOUCHPAD_TOGGLE on resume to which the desktop
> > environment responds by disabling the touchpad in software, breaking
> > the touchpad (until manually re-enabled) on resume.
> 
> Oh gosh, the touchpad toggle on Ideapads is so much broken, I wonder how
> the Windows driver deals with all this variety of different behaviors
> (unless it's broken too :D).
> 
> I'll test the patch on Z570, but as I see, it shouldn't change anything
> for Z570.

Tested the kernel from your branch on Z570, the touchpad button still
works fine.

> > It was never confirmed that sending KEY_TOUCHPAD_TOGGLE actually improves
> > things on new models and at least some new models like the Yoga 7-15ITL5
> > don't have a touchpad on/off toggle hotkey at all, while still sending
> > ACPI notify events with VPC event bit 5 set.
> > 
> > So it seems best to revert the change to send KEY_TOUCHPAD_TOGGLE when
> > receiving an ACPI notify events with VPC event bit 5 and the touchpad
> > state as reported by the EC has not changed.
> > 
> > Note this is not a full revert the code to cache the last EC touchpad
> > state is kept to avoid sending spurious KEY_TOUCHPAD_ON / _OFF events
> > on resume.
> > 
> > Fixes: 5829f8a897e4 ("platform/x86: ideapad-laptop: Send KEY_TOUCHPAD_TOGGLE on some models")
> > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217234
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> > ---
> >  drivers/platform/x86/ideapad-laptop.c | 23 ++++++++++-------------
> >  1 file changed, 10 insertions(+), 13 deletions(-)
> > 
> > diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
> > index b5ef3452da1f..35c63cce0479 100644
> > --- a/drivers/platform/x86/ideapad-laptop.c
> > +++ b/drivers/platform/x86/ideapad-laptop.c
> > @@ -1170,7 +1170,6 @@ static const struct key_entry ideapad_keymap[] = {
> >  	{ KE_KEY,  65, { KEY_PROG4 } },
> >  	{ KE_KEY,  66, { KEY_TOUCHPAD_OFF } },
> >  	{ KE_KEY,  67, { KEY_TOUCHPAD_ON } },
> > -	{ KE_KEY,  68, { KEY_TOUCHPAD_TOGGLE } },
> >  	{ KE_KEY, 128, { KEY_ESC } },
> >  
> >  	/*
> > @@ -1526,18 +1525,16 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_
> >  	if (priv->features.ctrl_ps2_aux_port)
> >  		i8042_command(&param, value ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE);
> >  
> > -	if (send_events) {
> > -		/*
> > -		 * On older models the EC controls the touchpad and toggles it
> > -		 * on/off itself, in this case we report KEY_TOUCHPAD_ON/_OFF.
> > -		 * If the EC did not toggle, report KEY_TOUCHPAD_TOGGLE.
> > -		 */
> > -		if (value != priv->r_touchpad_val) {
> > -			ideapad_input_report(priv, value ? 67 : 66);
> > -			sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad");
> > -		} else {
> > -			ideapad_input_report(priv, 68);
> > -		}
> > +	/*
> > +	 * On older models the EC controls the touchpad and toggles it on/off
> > +	 * itself, in this case we report KEY_TOUCHPAD_ON/_OFF. Some models do
> > +	 * an acpi-notify with VPC bit 5 set on resume, so this function get
> > +	 * called with send_events=true on every resume. Therefor if the EC did
> > +	 * not toggle, do nothing to avoid sending spurious KEY_TOUCHPAD_TOGGLE.
> > +	 */
> > +	if (send_events && value != priv->r_touchpad_val) {
> > +		ideapad_input_report(priv, value ? 67 : 66);
> > +		sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad");
> >  	}
> >  
> >  	priv->r_touchpad_val = value;
> > -- 
> > 2.39.1
> > 

  reply	other threads:[~2023-04-03 20:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-30 19:46 [PATCH] platform/x86: ideapad-laptop: Stop sending KEY_TOUCHPAD_TOGGLE Hans de Goede
2023-03-31  9:51 ` Maxim Mikityanskiy
2023-04-03 20:51   ` Maxim Mikityanskiy [this message]
2023-04-04  7:56     ` Hans de Goede
2023-03-31 17:38 ` Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZCs8SA47vGCjVl1l@mail.gmail.com \
    --to=maxtram95@gmail.com \
    --cc=andy@kernel.org \
    --cc=arnavr3@illinois.edu \
    --cc=erayorcunus@gmail.com \
    --cc=felix@eckhofer.com \
    --cc=g_goessel@outlook.com \
    --cc=hdegoede@redhat.com \
    --cc=ike.pan@canonical.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=kai.heng.feng@canonical.com \
    --cc=kelly@xilka.com \
    --cc=limanyi@uniontech.com \
    --cc=markgross@kernel.org \
    --cc=p.jungkamp@gmx.net \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=pobrn@protonmail.com \
    --cc=stable@vger.kernel.org \
    --cc=whenov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.