From nobody Wed Apr 22 20:08:02 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g19JS2tn9z6bDnP for ; Wed, 22 Apr 2026 20:08:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g19JR3Q6tz3Lhr for ; Wed, 22 Apr 2026 20:08:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776888487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+J+CODFJ2OAChR3gkgzYX/HDd1H7Jh++ZHPd6xoxYpE=; b=rc4vheftbqPxt6BXk2zO4RU0ydJF/nZ6RwOs/eXBaNDOn8NOlRVcjsNDuMTbD3WKAC0CcQ pJQ2ku+5Dm3DYcjQYFnEsWJT1zMZV9EXQtPvpfG1pws2APm5QO0jUBZifvlapCQI0Fu4W7 Is/cG1Eql0Y1s2QthEuu+b/Fyzwb0gzZpRkLo/ze2Y+/7yuvKdRzEfgEiTRNKaUvVRNRRN I9BhrBBsfC4XnNMXgBRTO7GboB/9iGz/sot9n3mHXZK6++qWp43MzmWF6rEtgPaJFdk/UG jaWiKB8uP20PGQ40WTPyqKHTQ4Y13tkkpUU18ZgGPPxJgQsyMlDYmKletG+DeQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776888487; a=rsa-sha256; cv=none; b=Y98XCCyebs7AtdQuQM+yGQc7bQNkdz5q8RdIxNNC14C/UDm61qHrQoHUVU7mVZm7lC6zQn edGqQFpcXsyrg72+5e87cZwPXKojkGUfmRWhWl9rsGA/FHmwSRtylOh/VEKIrQtTxfOW2k OK3KRHHZRlH+Y5NpiuUfCilfk+TwX1HtRB1nU+F3Qk5M6Zo+DOozvz7UqeAdehVvMBMGLx t9iulN+Jtcg5q8H2RIy2ocm/YyP5TAjN7VJo/Vtp6rWX9B6jSgZ27UDqxJCrWTCE0TGMB2 +VYpyVAChpMwISwoUiyGps2LO3f1r/i0ZoqH7Nn9cr9DFNzrj8BD2WHI0cOCsg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776888487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+J+CODFJ2OAChR3gkgzYX/HDd1H7Jh++ZHPd6xoxYpE=; b=R41AKgXVixYk3lja+M4Q3HyyDxQMzo+MaqTCzCiMaJ1ZOUQaSU3+v+4TRWCjMjXnoQDVX4 L2HtWYrIuzZppL4mjS0AofLz079cAhb66jRoQOihnF0eHAOe4F3s37p9vEwVkd4nT2Lpjk ouegELxPswa6y6GfoJ4CL9aS84Q0eBq8F5t9cgDjStLtM2xHXMC6UoJ68HLi37217V3Dk1 ufP80C5Kuj4xBU1sLug9NZtrScsuUfDMJNUHUIoMgpHkswgNioS9Yy6DbmTYvw5R1H9kne d0yqQmHSW1d+/2sn7hLlltb4Wzx89/zTRO9JigRKdzfXHxYEYgFTkTvjUpJyVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g19JR2xKwzlFV for ; Wed, 22 Apr 2026 20:08:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 20665 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 22 Apr 2026 20:08:02 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Vladimir Kondratyev Subject: git: 537159a58760 - stable/15 - psm(4): Add middle button support for Elantech V4 touchpads List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wulf X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 537159a587600a214698ea32fc7179c86b1afba3 Auto-Submitted: auto-generated Date: Wed, 22 Apr 2026 20:08:02 +0000 Message-Id: <69e92aa2.20665.120cc3c6@gitrepo.freebsd.org> The branch stable/15 has been updated by wulf: URL: https://cgit.FreeBSD.org/src/commit/?id=537159a587600a214698ea32fc7179c86b1afba3 commit 537159a587600a214698ea32fc7179c86b1afba3 Author: Vladimir Kondratyev AuthorDate: 2026-02-10 22:59:06 +0000 Commit: Vladimir Kondratyev CommitDate: 2026-04-22 19:59:01 +0000 psm(4): Add middle button support for Elantech V4 touchpads based on firmware version. PR: 291262 MFC after: 1 month (cherry picked from commit 3d85dcd1a9aa2e1b903935062500cb15b1a700f8) --- sys/dev/atkbdc/psm.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/sys/dev/atkbdc/psm.c b/sys/dev/atkbdc/psm.c index d36396df0fa0..95acf43a3bc6 100644 --- a/sys/dev/atkbdc/psm.c +++ b/sys/dev/atkbdc/psm.c @@ -352,6 +352,8 @@ typedef struct elantechhw { int dptracey; int issemimt; int isclickpad; + int hassmbusnotify; + int has3buttons; int hascrc; int hastrackpoint; int haspressure; @@ -417,7 +419,7 @@ enum { ((pb)->ipacket[0] & 0x0c) == 0x0c && ((pb)->ipacket[3] & 0xce) == 0x0c) #define ELANTECH_PKT_IS_V4(pb, hascrc) ((hascrc) ? \ ((pb)->ipacket[3] & 0x08) == 0x00 : \ - ((pb)->ipacket[0] & 0x0c) == 0x04 && ((pb)->ipacket[3] & 0x1c) == 0x10) + ((pb)->ipacket[0] & 0x08) == 0x00 && ((pb)->ipacket[3] & 0x1c) == 0x10) typedef struct elantechaction { finger_t fingers[ELANTECH_MAX_FINGERS]; @@ -1930,8 +1932,11 @@ psm_register_elantech(device_t dev) evdev_support_key(evdev_a, BTN_TOUCH); evdev_support_nfingers(evdev_a, ELANTECH_MAX_FINGERS); evdev_support_key(evdev_a, BTN_LEFT); - if (!sc->elanhw.isclickpad) + if (!sc->elanhw.isclickpad) { evdev_support_key(evdev_a, BTN_RIGHT); + if (sc->elanhw.has3buttons) + evdev_support_key(evdev_a, BTN_MIDDLE); + } psm_support_abs_bulk(evdev_a, elantech_absinfo); error = evdev_register_mtx(evdev_a, &Giant); @@ -4755,6 +4760,9 @@ proc_elantech(struct psm_softc *sc, packetbuf_t *pb, mousestatus_t *ms, touchpad_button = ((pb->ipacket[0] & 0x01) ? MOUSE_BUTTON1DOWN : 0) | ((pb->ipacket[0] & 0x02) ? MOUSE_BUTTON3DOWN : 0); + if (sc->elanhw.has3buttons) + touchpad_button |= + ((pb->ipacket[0] & 0x04) ? MOUSE_BUTTON2DOWN : 0); } #ifdef EVDEV_SUPPORT @@ -7347,6 +7355,9 @@ enable_elantech(struct psm_softc *sc, enum probearg arg) elanhw.hwversion = hwversion; elanhw.issemimt = hwversion == 2; elanhw.isclickpad = (resp[1] & 0x10) != 0; + elanhw.hassmbusnotify = + icversion == 0x0f && (resp[1] & 0x20) != 0 && resp[2] != 0; + elanhw.has3buttons = elanhw.hassmbusnotify; elanhw.hascrc = (resp[1] & 0x40) != 0; elanhw.haspressure = elanhw.fwversion >= 0x020800;