From nobody Sat Feb 7 18:21:07 2026 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7183E342500 for ; Tue, 27 Jan 2026 10:40:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769510434; cv=none; b=GCxlr8SnLbMTzWKoHscFr1XtHG4uTgjYSq9i7hDkPDITpRNMY89EtJXtVigA1YFoyvnaO/Qz7CUZEZXliXk+MHH6kNP+YZqQqinVPNywwnfCwhO9VrFmWX5n3Ta6POguzufIvYmgRyItbOTaIRclwrjLqn7VzP2Ougpub+Xetvw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769510434; c=relaxed/simple; bh=Hrnazuahv2v9rpFCsMEJC0zgdKheqCVmhgytvsJwNK4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eHiV5qdC6mKQlU1xF3aFD6tKUsd47JpIgt4rX7Xg6X6UN2tLzOWDtOjMKEXt0Gu4gazJ8akuyBH5Iqougcjaxh1G9Z8sR6hLTtdny2aGQjBkUAeOY/k2xQsWkNytJLA5IpjreaLFWO1lSqVgUfypwOwtKL2M5HZE7X4pgVVAdwo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RiiPqSwh; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RiiPqSwh" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-823075fed75so3068865b3a.1 for ; Tue, 27 Jan 2026 02:40:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769510432; x=1770115232; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KMAB5C1zkD/DVWLKDv3RV0IL8z1Pp7D3kuyKzpTCHnM=; b=RiiPqSwhBk8BCVPYmf67hAC1uW9PC0gf9QVZTFC1vDiR3wWmPO9viO8DTcyBpPAPhj VYn/A38jy938i/gVBKI/Zic+IYBfpVlwFairMDqo/FZ7k0H4F7XTgk/8DSCx+i76SCnA Dluybrx0fd14Lo0Se7zeVvzPK6fEosG17+cq09C6nQqKQ76Bfntj0X34yTDc4CbWciXC rUGgh3fuybL9WaoHin4OVnOzuVM6VHZ652+W8H0JMqGlc1gh9Srb08juEAFn4Cfiairk Mj9mSLe69nV1DxPtqLvSO5W6iAq7rOrsib8kT6i7hWAuNCF8dpZQ8EOFK9UIlQlFTGDF f18Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769510432; x=1770115232; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KMAB5C1zkD/DVWLKDv3RV0IL8z1Pp7D3kuyKzpTCHnM=; b=Jl8Sagsu7Tfgg++Nce8SX+i8yLnZ3fixDpOPmQar3wyE03MPM7HtUYnoorsIY3XI6T 7Zod8xRp/TUfGB8luBI/7MIJelgvMHQiUxsGpMvM4EJR6cySocNS5JNQkCr4lHztgZTK 5qaGbpCWqoMO3DSVw+lGp1Ytgx1yszkYVDdleKIC3oOr1sMTPaNgqS0z+8DZBArPKNez wjVInWG6U2suF/YHRxdyr+sQzadp063UyzC8BuSIMPErH8og09OIdAAxRjyQWRbpj0uj qCt4Fk3+N1kwojp0OLBvYvrDmuSQin6wIYYxdJTeLp65WI5r3Tg4FQI+sIU2cUCaAPo1 b/wA== X-Forwarded-Encrypted: i=1; AJvYcCWW8JCf8K9YVoRQhOImfkyc/6hwv+KdSoC4w3oXNN8Ylb3hOUSdedLylcL/eeYNc0X0mk7jQn04qY+Rd8Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yys7PXNA8Elz8BUFeEfeT4V04sBKPpgOpJJZ1t0D30wUKrC7E5L G/feVlNHiphaxPd17Crv+tu4oFrS+DUy6++U1DQLYpK6KFx3kD2YDBAA X-Gm-Gg: AZuq6aJOz5aBU66pDTJ5bjdukmrxku1YgW3OQHfF63JPuPlA00uK1WnIVW99krA8Djh bKLhIRvHwuVPvnNtGZH2vdlzpIwmgRsvM31zK6akPsU7IMXYj2WJOuxcK+EU2+KhS4JYTIHp1+Q rzMbGwjpGoavUEk+Bcrdgvd48RNGpACi67hU570BycxkHmEG5Tink0m9lEnRokEn8pEDfIQcP0/ S2OjUCUBcBUOKZuUZt0Uq2cy+6I/8fRdNnZg5NeKh8bxDsqI7Bg5WPltXqyHuUb77EwOONsWovP /mrNM3D7PzNOAL//MvDfsTCQ1GusGsittZezoim/Z4kLrE5jwb9F9fiQDNzUDR9EQSAzZsfFmEo PsSrFDFizIYRL0/l4bOELq8BHHHHmi0dFKvxl6vnW+uh049YzTGPn8gbTiNl2xc05dBmJqFuhNm 1CgMOa7zXKf45gvLOMmJnU3QSdga+PcB5IAm9gKg== X-Received: by 2002:a05:6a00:c91:b0:7a2:7058:ab89 with SMTP id d2e1a72fcca58-8236a14a9d4mr1288694b3a.7.1769510432512; Tue, 27 Jan 2026 02:40:32 -0800 (PST) Received: from c12-ThinkPad-X1-Carbon-Gen-12 ([2400:2410:5f2b:700:38fe:3edc:7f99:7e99]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82339095c85sm7218907b3a.67.2026.01.27.02.40.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jan 2026 02:40:31 -0800 (PST) From: Vishnu Sankar To: mpearson-lenovo@squebb.ca, dmitry.torokhov@gmail.com, hmh@hmh.eng.br, hansg@kernel.org, corbet@lwn.net, derekjohn.clark@gmail.com, ilpo.jarvinen@linux.intel.com Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, ibm-acpi-devel@lists.sourceforge.net, linux-doc@vger.kernel.org, platform-driver-x86@vger.kernel.org, vsankar@lenovo.com, Vishnu Sankar Subject: [PATCH v6 1/3] input: trackpoint - Enable doubletap by default on capable devices Date: Tue, 27 Jan 2026 19:39:05 +0900 Message-ID: <20260127103907.20269-2-vishnuocv@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127103907.20269-1-vishnuocv@gmail.com> References: <20260127103907.20269-1-vishnuocv@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Enable doubletap functionality by default on TrackPoint devices that support it. The feature is detected using firmware ID pattern matching (PNP: LEN03xxx) with a deny list of incompatible devices. This provides immediate doubletap functionality without requiring userspace configuration. The hardware is enabled during device detection, while event filtering continues to be handled by the thinkpad_acpi driver as before. Signed-off-by: Vishnu Sankar Suggested-by: Mark Pearson Acked-by: Dmitry Torokhov --- Changes in v5: - Renamed function to trackpoint_is_dt_capable() - Simplified string comparison without sscanf() - Removed wrapper function as suggested - Fixed missing period in comment Changes in v4: - Simplified approach: removed all sysfs attributes and user interface - Enable doubletap by default during device detection - Removed global variables and complex attribute infrastructure - Uses minimal firmware ID detection with deny list - Follows KISS principle as suggested by reviewers Changes in v3: - No changes Changes in v2: - Improve commit messages - Sysfs attributes moved to trackpoint.c - Removed unnecessary comments - Removed unnecessary debug messages - Using strstarts() instead of strcmp() - is_trackpoint_dt_capable() modified - Removed _BIT suffix and used BIT() define - Reverse the trackpoint_doubletap_status() logic to return error first - Removed export functions as a result of the design change - Changed trackpoint_dev->psmouse to parent_psmouse - The path of trackpoint.h is not changed --- drivers/input/mouse/trackpoint.c | 47 ++++++++++++++++++++++++++++++++ drivers/input/mouse/trackpoint.h | 5 ++++ 2 files changed, 52 insertions(+) diff --git a/drivers/input/mouse/trackpoint.c b/drivers/input/mouse/trackpo= int.c index 5f6643b69a2c..8319b5bb6ce5 100644 --- a/drivers/input/mouse/trackpoint.c +++ b/drivers/input/mouse/trackpoint.c @@ -393,6 +393,45 @@ static int trackpoint_reconnect(struct psmouse *psmous= e) return 0; } =20 +/* List of known incapable device PNP IDs */ +static const char * const dt_incompatible_devices[] =3D { + "LEN0304", + "LEN0306", + "LEN0317", + "LEN031A", + "LEN031B", + "LEN031C", + "LEN031D", +}; + +/* + * Checks if it's a doubletap capable device. + * The PNP ID format is "PNP: LEN030d PNP0f13". + */ +static bool trackpoint_is_dt_capable(const char *pnp_id) +{ + size_t i; + + if (!pnp_id) + return false; + + /* Must start with "PNP: LEN03" */ + if (!strstarts(pnp_id, "PNP: LEN03")) + return false; + + /* Ensure enough length before comparing */ + if (strlen(pnp_id) < 12) + return false; + + /* Check deny-list */ + for (i =3D 0; i < ARRAY_SIZE(dt_incompatible_devices); i++) { + if (!strncmp(pnp_id + 5, + dt_incompatible_devices[i], 7)) + return false; + } + return true; +} + int trackpoint_detect(struct psmouse *psmouse, bool set_properties) { struct ps2dev *ps2dev =3D &psmouse->ps2dev; @@ -470,6 +509,14 @@ int trackpoint_detect(struct psmouse *psmouse, bool se= t_properties) psmouse->vendor, firmware_id, (button_info & 0xf0) >> 4, button_info & 0x0f); =20 + /* Enable doubletap by default on capable devices */ + if (trackpoint_is_dt_capable(ps2dev->serio->firmware_id)) { + if (trackpoint_write(ps2dev, TP_DOUBLETAP, TP_DOUBLETAP_ENABLE)) + psmouse_warn(psmouse, "Failed to enable doubletap: %d\n", error); + else + psmouse_info(psmouse, "Doubletap enabled by default!\n"); + } + return 0; } =20 diff --git a/drivers/input/mouse/trackpoint.h b/drivers/input/mouse/trackpo= int.h index eb5412904fe0..3e03cdb39449 100644 --- a/drivers/input/mouse/trackpoint.h +++ b/drivers/input/mouse/trackpoint.h @@ -69,6 +69,8 @@ /* (how hard it is to drag */ /* with Z-axis pressed) */ =20 +#define TP_DOUBLETAP 0x58 /* TrackPoint doubletap register */ + #define TP_MINDRAG 0x59 /* Minimum amount of force needed */ /* to trigger dragging */ =20 @@ -110,6 +112,9 @@ external device will be forced to 1 */ #define TP_MASK_EXT_TAG 0x04 =20 +/* Doubletap register values */ +#define TP_DOUBLETAP_ENABLE 0xFF /* Enable value */ +#define TP_DOUBLETAP_DISABLE 0xFE /* Disable value */ =20 /* Power on Self Test Results */ #define TP_POR_SUCCESS 0x3B --=20 2.51.0 From nobody Sat Feb 7 18:21:07 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 297CF342177 for ; Tue, 27 Jan 2026 10:40:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769510445; cv=none; b=G3DXqTPt8aD7W2MkS3Z7Cba1HhgBNFh1CZaJc9MiMcpVuCHpcLjrPs0+DT625OGCuU0G7I47w0KYR1MI/r997Jb4wSKCoJSwlf2rKji58Uk9LmptL69WdBWn+ZY2FvpjB7aWri3Cn9dTagoSxR7T7UFQFWXjz+jBBQgwxkDDqmU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769510445; c=relaxed/simple; bh=EHO8zs+g1Ko8UHjpjUG4wCs7CJMj3UxzMt+d6rQqm7c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gvk1bY1j1suOncCuwkmUtw+BP9DOc0VC8wW9nP0ZUWV2cKeLjbgBCp240RSlM3VrILoM96/PYglpyRkaxt648tgukZ+L4NBqszadbeMiLd9P2XpzuXjKokhzAaB8qm3XeNPVQANmwvaYd/3XOK8UE9QH5auUSDxts20KM1KFCtc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fNg0nf9k; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fNg0nf9k" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2a0c20ee83dso51443705ad.2 for ; Tue, 27 Jan 2026 02:40:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769510443; x=1770115243; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=w5DU1y+/2ttdbcr+v/9sCW2fX8t95H3Z19WR35X2oK4=; b=fNg0nf9ka1mEDu8+WR1YmmZyYgnBmf1BK7YmSSapIj1HMnmWwk5tiUFjBMdMk5nsWo QAP4HaGVTJvWz7EIrOPVNXMmwHRhfBPVkC32cq1xKMhdAoS+bbiHJhMXfjr8sGyzjT5N YbQ29q8nK2F5dF9pDRJXWT8GQWjz9xfYhZgj5cV+6gENF/i7RHYPXL3Ny3ipjQ0K70m2 mOB7ikShd6HwPEA44GjMkkXn88d656amDhJ1d+28epx79IoJSiyH5SqMZ4bLliKlXXS9 io2zIsPyN3CaNGbGFTI15wMFQL7aYScfjVkBikbNj8vqcxT4gr2hY0Gzq/CoHC+8sdLB 8ASA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769510443; x=1770115243; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=w5DU1y+/2ttdbcr+v/9sCW2fX8t95H3Z19WR35X2oK4=; b=pMM241MG5+q/gnS0j/Cdp5Pfr09BuT3T2UR5Tdgkoyj63GWtfMIDl04im+GMJGFbrW i/WDpYNrYV/0DgmXpG9XEKX9LGBByp7ToRLgmfZULnoGhnNjdqsDD+aJ5C3BDGyZPboa kuKi2yuHjKpoiLdeyzacZSi0CPPJa0Q9+pyRbqIB0X6ZggWYlISYUpHx6KvQdd8YRpsa roPk7P8UbpX2ORdnbQZYW9B4Jl+b6HayNGlydaZ9fdoaz9SlyhsSttb2KkKiox569LSC 2GU1C/qTDBQaHw1Ku0ekR6c6BrMqbxBE0s6svWj1krDP5vsLE3uDUn3z2ATr7myeKSU3 S8Jw== X-Forwarded-Encrypted: i=1; AJvYcCVn0BTmmDRT+NafiynQsOxPH3Pz7+/0gVAJSU3xDC7ok5rJ0zXLHwBrWYyrL9d0SEtrGml6dFJNcPi6Nfg=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9tQTtAqgiz4Im5V2UNAq4OLqmkPZOO4nKDtJAs0pQg3NOEbBN 7Q4QA0K7lwRiFlMTrvUvkIw9YnNwJRM1zBOiiHnbFRhXMf4ckt31/ExH X-Gm-Gg: AZuq6aLj5dZ9flA8GzUePPsGmn12pElHLahKpXU8m1CzBUk2Sc83JW92A4xgbkUo3m4 xNagL3WMBi7FEG6vVC4HScsb5nmtfStwLNf8b7hSfEV00+dPYdtlIw+LbbLx5iYebMby7k/owxu 1MPJsZyShNGEP3+xMn03iEloLtPQvF3TWE+ydEj7oOYvpvp5gldmSLaRmEU7DGI88apS6bHkdjx H4J5UCJEUMcSFeVKMO/Wo2QaOt0su7A9OcY23w8vAE8UR3d6mK8Ug4n2XZIMgl7tJV9lCC83JSJ zWjf75Wxw57tjbYze2NcjnuDVoHM2q3bXr+rH/hh47XLG6eH4TTHsLFwRhS5XzANclZXRdoOA+W L+BRw2hNvnhTjaF4Y2wb+48T+nIUEjakaSRWPUmwtv1hdUIm9CoTeG8RQ7Jf7PMP2L8+u7Al/O+ UqVzZ+XZHGGqXri44lfeWU+x82QtrOJ5PkaAKOZw== X-Received: by 2002:a17:903:2f0e:b0:2a7:561e:690b with SMTP id d9443c01a7336-2a870df1966mr14406385ad.58.1769510443442; Tue, 27 Jan 2026 02:40:43 -0800 (PST) Received: from c12-ThinkPad-X1-Carbon-Gen-12 ([2400:2410:5f2b:700:38fe:3edc:7f99:7e99]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82339095c85sm7218907b3a.67.2026.01.27.02.40.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jan 2026 02:40:42 -0800 (PST) From: Vishnu Sankar To: mpearson-lenovo@squebb.ca, dmitry.torokhov@gmail.com, hmh@hmh.eng.br, hansg@kernel.org, corbet@lwn.net, derekjohn.clark@gmail.com, ilpo.jarvinen@linux.intel.com Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, ibm-acpi-devel@lists.sourceforge.net, linux-doc@vger.kernel.org, platform-driver-x86@vger.kernel.org, vsankar@lenovo.com, Vishnu Sankar Subject: [PATCH v6 2/3] platform/x86: thinkpad_acpi: Add sysfs control for TrackPoint double-tap Date: Tue, 27 Jan 2026 19:39:06 +0900 Message-ID: <20260127103907.20269-3-vishnuocv@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127103907.20269-1-vishnuocv@gmail.com> References: <20260127103907.20269-1-vishnuocv@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a sysfs attribute to enable or disable TrackPoint double-tap hotkey events at the kernel level. The TrackPoint firmware enables double-tap support automatically. This interface allows userspace to control whether double-tap events are forwarded to userspace. The attribute is available at: /sys/devices/platform/thinkpad_acpi/doubletap_enable 0 - Disable double-tap hotkey events 1 - Enable double-tap hotkey events (default) Filtering is implemented by suppressing ACPI hotkey delivery without injecting synthetic input events. Signed-off-by: Vishnu Sankar Suggested-by: Mark Pearson --- Changes in v2: - Updated commit message to clarify dependency on trackpoint driver - Now handling sysfs read/write of trackpoint driver using file read/write - Removed sysfs attribute creation of trackpoint double tap here - Reversed the logic and return false right away - Dropped unnecessary debug messages - Using dev_dbg() instead of pr_xxxx() Changes in v3: - No changes Changes in v4: - Simplified approach: single sysfs attribute for user control - Clear naming: doubletap_filter instead of doubletap_enabled - Intuitive behavior: 0=3Dprocess events, 1=3Dfilter events - No cross-driver dependencies or complex interactions - Minimal code changes using existing thinkpad_acpi infrastructure Changes in v5: - Rename doubletap_filter to doubletap_enable to match actual behavior - Fix inverted logic so events are emitted only when doubletap is enabled - Register sysfs attribute via hotkey_attributes[] (no device_create_file) --- --- drivers/platform/x86/lenovo/thinkpad_acpi.c | 42 +++++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/drivers/platform/x86/lenovo/thinkpad_acpi.c b/drivers/platform= /x86/lenovo/thinkpad_acpi.c index cc19fe520ea9..ca01323c990a 100644 --- a/drivers/platform/x86/lenovo/thinkpad_acpi.c +++ b/drivers/platform/x86/lenovo/thinkpad_acpi.c @@ -373,7 +373,7 @@ static struct { u32 hotkey_poll_active:1; u32 has_adaptive_kbd:1; u32 kbd_lang:1; - u32 trackpoint_doubletap:1; + u32 trackpoint_doubletap_enable:1; struct quirk_entry *quirks; } tp_features; =20 @@ -3018,6 +3018,31 @@ static const struct attribute_group adaptive_kbd_att= r_group =3D { .attrs =3D adaptive_kbd_attributes, }; =20 +/* sysfs doubletap enable --------------------------------------------- */ +static ssize_t doubletap_enable_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return sysfs_emit(buf, "%d\n", tp_features.trackpoint_doubletap_enable); +} + +static ssize_t doubletap_enable_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + bool enable; + int err; + + err =3D kstrtobool(buf, &enable); + if (err) + return err; + + tp_features.trackpoint_doubletap_enable =3D enable; + return count; +} + +static DEVICE_ATTR_RW(doubletap_enable); + /* --------------------------------------------------------------------- */ =20 static struct attribute *hotkey_attributes[] =3D { @@ -3032,6 +3057,7 @@ static struct attribute *hotkey_attributes[] =3D { &dev_attr_hotkey_recommended_mask.attr, &dev_attr_hotkey_tablet_mode.attr, &dev_attr_hotkey_radio_sw.attr, + &dev_attr_doubletap_enable.attr, #ifdef CONFIG_THINKPAD_ACPI_HOTKEY_POLL &dev_attr_hotkey_source_mask.attr, &dev_attr_hotkey_poll_freq.attr, @@ -3557,8 +3583,8 @@ static int __init hotkey_init(struct ibm_init_struct = *iibm) =20 hotkey_poll_setup_safe(true); =20 - /* Enable doubletap by default */ - tp_features.trackpoint_doubletap =3D 1; + /* Enable TrackPoint doubletap event reporting by default. */ + tp_features.trackpoint_doubletap_enable =3D 1; =20 return 0; } @@ -3863,9 +3889,9 @@ static bool hotkey_notify_8xxx(const u32 hkey, bool *= send_acpi_ev) { switch (hkey) { case TP_HKEY_EV_TRACK_DOUBLETAP: - if (tp_features.trackpoint_doubletap) - tpacpi_input_send_key(hkey, send_acpi_ev); - + /* Only send event if doubletap is enabled */ + if (!tp_features.trackpoint_doubletap_enable) + *send_acpi_ev =3D false; return true; default: return false; @@ -11285,7 +11311,9 @@ static bool tpacpi_driver_event(const unsigned int = hkey_event) mutex_unlock(&tpacpi_inputdev_send_mutex); return true; case TP_HKEY_EV_DOUBLETAP_TOGGLE: - tp_features.trackpoint_doubletap =3D !tp_features.trackpoint_doubletap; + /* Toggle kernel-level doubletap event filtering */ + tp_features.trackpoint_doubletap_enable =3D + !tp_features.trackpoint_doubletap_enable; return true; case TP_HKEY_EV_PROFILE_TOGGLE: case TP_HKEY_EV_PROFILE_TOGGLE2: --=20 2.51.0 From nobody Sat Feb 7 18:21:07 2026 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43CC82D5A01 for ; Tue, 27 Jan 2026 10:40:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.196 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769510460; cv=none; b=XvmQbHXmZ6BXnVsGJf+qmWs9LUkgOZlFtUiPVKf1kNhkdGjxfP4OtS6yMXKoPnLmIUBuZ0+yFoNZXQrIWlRgTWm9NrS/OCVDGdMGINQkZkT0I9gp0nrD6PC9Hf7bDXhsR+N5hgmyRLCn5WubhqcjIngi0LOyokKbb7iBgI8AYjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769510460; c=relaxed/simple; bh=xPVSlWvaet9868GsCY1jJthXsfYn5a7/fBimRT/J9Pg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KJeoblIpC+jlSiq/d2LVBqvPdwG/ePojUTHNJjCbYOabEIHVBYD+SQmtNvCz5Ue9BwF4N/Q5vLFG/u/dbjVgAYyb0PtEDnamcEQ/tE0I8rz2fjfaBSssLIEHuiZ28Q/xTZdpVZA6fGSgJWhw+i/FBQdTko36s/AGhXZm7zgCBFw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=S8BUvbNC; arc=none smtp.client-ip=209.85.210.196 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S8BUvbNC" Received: by mail-pf1-f196.google.com with SMTP id d2e1a72fcca58-81f4e136481so2798887b3a.3 for ; Tue, 27 Jan 2026 02:40:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769510457; x=1770115257; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mxx+6jRrhPvMg9VlbKNlTg2M9XXacffYRgMnxqmD5m4=; b=S8BUvbNC6fJMujm94XxufNP6OjQFaaVvrmBArsfyIJFnRtOK0h1KnJbrnUWX8xbYgI 7fTCBlqjpw5rUHbJ74creJ85wKvrsJcRx3jsoQ/ehGU3WzCxbNuvaFvD9cmf40AKb2Ba 9r+3p5X1Q+WrCqwMiET7hwMzidemcUu79aSdKjcDvC6AMz7n4KeOavp+yU7zTv8rwJ8o urCDI21HovFCJnwThY1QcfsJmF3yimUI9X4ZN5pA47Jjh1JnzQAa273gP7JmxGLBQdYV 2xIZIqfr+l24ADML+J7VLzSiC65GQhWIuChWimo9Fvhs++AFFPob3Y+zi74FOvv07EjE eA5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769510457; x=1770115257; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mxx+6jRrhPvMg9VlbKNlTg2M9XXacffYRgMnxqmD5m4=; b=cufUd3SK8Oh0dLjqE15iPBJJ3+MQ0+7gCZpdPC1uUX/XEgfqj34evx1YkSbMXtj3EL BenAtg1K16XNFRzbTy3DJY8nQCcXI4PSzsaAm4MBCznelEpx6iyqcaQrqWKwqP20sOT2 fSusKVg/n/Xd+VC92JkXvNKj3H5jvO3R5MP8q2cfuEQ1buMXyVYY01D6Yi/nwkIUvzAy IvVP57oL2FY1RoA30sTv27GI/B27BhudsZYykiTus955pneldG6AmVxiZZ3IXp5KRm0R L5UIzoxlfUD3d6O1povKeOYTH9WIwzdwYpSA9rxe6HUAX+npDnSUOZNrX6niHZT/U4lQ 90gg== X-Forwarded-Encrypted: i=1; AJvYcCUBGbFDuPWo/3vMlN6pzn7M1UtTVPq3iTnTfVzU8iLeuITX7SZjVFxw4AwDHl4sa+7IaTIMtz7xtj8Y5Mw=@vger.kernel.org X-Gm-Message-State: AOJu0Yzk2UlnWriALZd5vG5RkRSsc1T7WYplz/Ifw3//KO5Im3oQG37C xczkgnxvrX+LcfrprKG0mShWVwDboD/QkZ87ggDj4jCMBFOmGfbIZxEa X-Gm-Gg: AZuq6aLeLLXoibKyOYamVCOIPRRxK+xxSC/KehgFkk9whgmoNOSd53Usp6BkZ8OZC3B MqWh5NIUnk67IBXaHK5k5mFCRVVS3F3caIpNXJ52PnPz4vuvABU94z7qkHBR7lOHWBk+60H8OMe fWhc56WrCtcgeE2DAlLrs72BvQVdrtEOfU/uYZA6fbYJesmff3RI77Vl4EtncSG6wDMVezD0p5l lkgFs5up1hF/2NkC4dfkPIrAaV3UKHJloiEVIZRL7sTRv62JTTjhleYZd+w6L5NtZRHl3u36n9W doTHrkW6Je+IsMkH31rqwIvAZ3AIQsNq2iXsWxWlJ9Utz2y6l6x243s3SUrqNcCffGwLN/ZTosS MIEyL7aNCVyr1LdCq94JPPOmhEdnvM7GaUkQd5qHiYwqGwoNhX1SmPWOqn6oXUOUW2zEv1u43hK LRg+3XdepmhY/ubuF7k8YstejkFqjtdWFgvP5zOw== X-Received: by 2002:a05:6a00:1495:b0:822:abcd:db0f with SMTP id d2e1a72fcca58-823692c3b99mr1577151b3a.52.1769510456609; Tue, 27 Jan 2026 02:40:56 -0800 (PST) Received: from c12-ThinkPad-X1-Carbon-Gen-12 ([2400:2410:5f2b:700:38fe:3edc:7f99:7e99]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82339095c85sm7218907b3a.67.2026.01.27.02.40.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jan 2026 02:40:55 -0800 (PST) From: Vishnu Sankar To: mpearson-lenovo@squebb.ca, dmitry.torokhov@gmail.com, hmh@hmh.eng.br, hansg@kernel.org, corbet@lwn.net, derekjohn.clark@gmail.com, ilpo.jarvinen@linux.intel.com Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, ibm-acpi-devel@lists.sourceforge.net, linux-doc@vger.kernel.org, platform-driver-x86@vger.kernel.org, vsankar@lenovo.com, Vishnu Sankar Subject: [PATCH v6 3/3] Documentation: thinkpad-acpi - Document doubletap_enable attribute Date: Tue, 27 Jan 2026 19:39:07 +0900 Message-ID: <20260127103907.20269-4-vishnuocv@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127103907.20269-1-vishnuocv@gmail.com> References: <20260127103907.20269-1-vishnuocv@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Document the doubletap_enable sysfs attribute for ThinkPad ACPI driver. Signed-off-by: Vishnu Sankar --- Changes in v6: - Fix formatting of doubletap_enable sysfs documentation (separate Values l= ist) --- .../admin-guide/laptops/thinkpad-acpi.rst | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Documentation/admin-guide/laptops/thinkpad-acpi.rst b/Document= ation/admin-guide/laptops/thinkpad-acpi.rst index 4ab0fef7d440..9a660724648b 100644 --- a/Documentation/admin-guide/laptops/thinkpad-acpi.rst +++ b/Documentation/admin-guide/laptops/thinkpad-acpi.rst @@ -1521,6 +1521,27 @@ Currently 2 antenna types are supported as mentioned= below: The property is read-only. If the platform doesn't have support the sysfs class is not created. =20 +doubletap_enable +---------------- + +sysfs: doubletap_enable + +Controls whether TrackPoint doubletap events are filtered out. Doubletap i= s a +feature where quickly tapping the TrackPoint twice triggers a special func= tion key event. + +The available commands are:: + + cat /sys/devices/platform/thinkpad_acpi/doubletap_enable + echo 1 | sudo tee /sys/devices/platform/thinkpad_acpi/doub= letap_enable + echo 0 | sudo tee /sys/devices/platform/thinkpad_acpi/doub= letap_enable + +Values: + + * 1 - doubletap events are processed (default) + * 0 - doubletap events are filtered out (ignored) + + This setting can also be toggled via the Fn+doubletap hotkey. + Auxmac ------ =20 --=20 2.51.0