From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f45.google.com (mail-dl1-f45.google.com [74.125.82.45]) (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 A53D831A567 for ; Sat, 6 Jun 2026 15:05:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758331; cv=none; b=uQOPe1YEQeBmJ04r04UgE1rhoIzVdYVdg4ppIf4o46qOgFDhH5wgroUnXgSIp8TpY1ynKBvNWxivijp02tXZAo3+t062SDWUuXwHJh6nxKyxSMiOhEsHrNOqVMVD6P/5EepbDaiOgYoyWaUtdTwRRM8EGNbebiq6hmhZemvBpaY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758331; c=relaxed/simple; bh=5eyF2S7ViTpP1C7easdlz2xSG10ngTk27LKK60dNnt4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pZQBiqtmszs4/e1IBX9xVXr6s3Ep574r/V9qJZqscstU0d6m2Dmnc5WYV8kvmJ/MIU+EetIz/K/OBQVG1Nxnrxq8XwDRWKiaYHJqsiJQCW2Kbk8uXPnKK+BlJHo/ZiMAcTvVfkjz5FHVPyMIr939MujfLMWquMSEwcaOn6CAc9s= 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=IMgzhZVs; arc=none smtp.client-ip=74.125.82.45 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="IMgzhZVs" Received: by mail-dl1-f45.google.com with SMTP id a92af1059eb24-13807d2f898so1616273c88.0 for ; Sat, 06 Jun 2026 08:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758330; x=1781363130; 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=QDvvIEJ397Z9hz/fjkFik69Td5t/Laz7R7T1FL6xIOQ=; b=IMgzhZVsmse/rKO+/jmbUK6hsIqLyIefjhObsNDHWQIWAntOhG23iKWC4vBNtEYBQE FSgmziwlWYv2o39Zn2w5jvB2KeIK6SyBLhQniJavJO+G1uKJLESfgU2L5q6XbHznsYkS utFEr3DT5ZVRxEVLAeSD3QO/DH22UIWvSwxU/bSisnEkGjumfUR1R6GJGYqnYbAh53CR FZ5dxWtQMDrwfOnRbH1fkpofpTiIdhen5K91def5CmdKuLqNfNWX4n2+biMnl4ND1w0J ETGGCynrT3pkj+HyV5VjAHj2nv2s0ZTbJcJn7ExAEm3acC9sJ059vKxQiAcHZ67CDq0U a/eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758330; x=1781363130; 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=QDvvIEJ397Z9hz/fjkFik69Td5t/Laz7R7T1FL6xIOQ=; b=ch96RdKHG5xV3VBcizotjvz+OrCQ3SDkyth0jxg0kZY4G/cKokr6DOr2obAGwEwUx5 ySDQaL/2VykXhmL6/v5QXClMnd/NYoV6gB6b2YIFjTVA7dZfcWQhiWLdg+bdgjGs4CRL A5MPVC/opchW4EC3Izsr9VNANpFARBkfANi6YgAwXqFqUscUW17J8ZPkYCWhP1efZml0 bK9cU7GXzyEav39sooEkh2T2a/CEIjGI5b4dYniZhrhmR73CpbWmg+hcsjy0Ehv/Taqo CfRxM+pDd6q7ESIsAF3H1Fl3SURKMmfkkaA+/u+Jc8UsT0/CnJnYCRSboYJDCh/m3Omb Gu1w== X-Forwarded-Encrypted: i=1; AFNElJ90CR/6cGPVoarDn2sTAzb3fuXd7qIEn7S2zZDQufahcKqdb8w0kCUOeHqbEjvae71l7C7lbEi2sGLNFaM=@vger.kernel.org X-Gm-Message-State: AOJu0YwddZ9ot2edhnxlae30/G8B2vOgqi9UDyOH5NWxYGXn9fe8yJXs ktJ3bdy8QZcskAwU2zcZEGNdG2TS2aX5bgDP90k6gzQQ7d/0hq3jEi+b X-Gm-Gg: Acq92OHDFEK2Jk3Kdw/KdaR9n7dyY444153Zx/92uWPH+8K8Z3xaY21LJejyLmx0ewN vtqk5iaAAHrVA8wH0LItGMfUo6WuUNRnlqKXxrxerxuEa0hekQdx02YXPxnQvE20FWfu/QueUIT wjmUQhG3EjnPw97irxpWNgefNRfBRFqUwbKLlf0lbm4gSl4cHBX92y/84bRkX1NQLct2xELLRXU ZU+tbs0kNCpdODDS9p3xeq3OT93HVKCtuk2qnY19OKiTQD6PUajwuPjq22QcA18xGfEagTYGHh6 9NDqKeQAfNgah26VOGs3E80d3McPf7r2Vps0RD3um6asdGITx6PyREP+CSX6LjON8/iiwiCGE+4 QhoMHcrPKRbz4rws6cQWHyPHPUalQ95qLAA32YNpvNmXPx3vyT4U6jSurQ6eL9ebHt8U1HkOnym 5FtOl787x8tZskp0J4CqvZ/h319kEx4IMqOZEBPj3qyIkEKGxFHQ== X-Received: by 2002:a05:7022:221e:b0:137:fe07:8a2c with SMTP id a92af1059eb24-1380671fdfamr4297594c88.22.1780758329731; Sat, 06 Jun 2026 08:05:29 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.05.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:05:29 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/8] Input: cap11xx - clean up duplicate log and add probe error logs Date: Sat, 6 Jun 2026 23:03:54 +0800 Message-ID: <20260606150458.250606-2-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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" Duplicated device detection log exists at line 537 and line 542, which brings redundant repeated kernel print messages. Drop one redundant log entry to clean up dmesg output. Meanwhile add missing error logs when I2C communication fails during driver probe(), helping capture abnormal hardware access for debug. Signed-off-by: Jun Yan --- drivers/input/keyboard/cap11xx.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap1= 1xx.c index 2447c1ae2166..485d8ba97723 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -512,7 +512,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_cli= ent) =20 error =3D regmap_read(priv->regmap, CAP11XX_REG_PRODUCT_ID, &val); if (error) - return error; + return dev_err_probe(dev, error, "Failed to read product ID\n"); =20 if (val !=3D cap->product_id) { dev_err(dev, "Product ID: Got 0x%02x, expected 0x%02x\n", @@ -522,7 +522,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_cli= ent) =20 error =3D regmap_read(priv->regmap, CAP11XX_REG_MANUFACTURER_ID, &val); if (error) - return error; + return dev_err_probe(dev, error, "Failed to read manufacturer ID\n"); =20 if (val !=3D CAP11XX_MANUFACTURER_ID) { dev_err(dev, "Manufacturer ID: Got 0x%02x, expected 0x%02x\n", @@ -531,11 +531,8 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_cl= ient) } =20 error =3D regmap_read(priv->regmap, CAP11XX_REG_REVISION, &rev); - if (error < 0) - return error; - - dev_info(dev, "CAP11XX detected, model %s, revision 0x%02x\n", - id->name, rev); + if (error) + return dev_err_probe(dev, error, "Failed to read revision\n"); =20 priv->model =3D cap; =20 --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f46.google.com (mail-dl1-f46.google.com [74.125.82.46]) (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 5DD5C305057 for ; Sat, 6 Jun 2026 15:05:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758342; cv=none; b=ae+AVRJzOjR+x0vANpF8U+Z5yamYMJTKbG1g32apftSzzUwyuq780ZG3BBzTxmlYThJ6rFByJ2+nxMOfQDoJE1mMTgSqaRAJX097RIAIFAK59kXd0/cx7vpGiLbbybtXaSAwulq0LWrpCD3lAhfzfrsACLQfDCLSqLBBJZIHPSU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758342; c=relaxed/simple; bh=BaV5O758oRar5RTUsmj9w+tUOf355SflKEzM/C3X95Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f125wV2R7bltFL5si/DDnnrYrlGUS42emE7Az7qnhCaalemXYGiq21aZRJyEcz5ebw90kBfpJYWRHuj8XsdtAwiA2OG/al+f7NLCrPp18hHW4YZNzH+CRK7BGj4/O0Ft5sRX/5oe2D6UWGGz8G6/PeqCJOHfkEB4WBpZ4hydra0= 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=lEpsy+zj; arc=none smtp.client-ip=74.125.82.46 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="lEpsy+zj" Received: by mail-dl1-f46.google.com with SMTP id a92af1059eb24-13817614cd3so616577c88.0 for ; Sat, 06 Jun 2026 08:05:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758340; x=1781363140; 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=8T1d1Epw5U6/dAcfuifWImjl16XZ+3Fa2sK3u067DnI=; b=lEpsy+zjN0tombu/FjjjppZolOW9+PFV8ckOeo1E8cT/P9/cF6G72vGcMDYvCvvlJU dXl5UYj1dDdLt+DLZLbRGMKAh6u8Er9pQm315Fb8GlQF7ulFkR0tnk2NubkB33gYaoDS izNrAGVHT+e+0cifGVcQUBXHmE58Ho6BLf0OrzjzfdXc78df+5MxeXj6KaS51Dr9x1Uq fNJy+7CcrVU/q96EUrFu3eGu7GL1qbQSG7L5F2n7pZnH9T7lsB+T/kGovanCE8PwdG6s m5O+A9rme3hEWIaXytsRNjjMz8P8y1bqz660M+imZ8R0URc6nPt4u9zZtkCpCccQSNTs SfFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758340; x=1781363140; 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=8T1d1Epw5U6/dAcfuifWImjl16XZ+3Fa2sK3u067DnI=; b=lFjLcs2xn4bYCpXJ4sTxqsYldVkWKRbxleksUvS6+wq7obJeWd3JIR4wxxdtRQRNS7 4an51eS/f5A0kIFlw9+tFmYXLLpJb2JosDb0CTP7+FFxu2rnA84yioBZRitJYWpinvkY zqMVQSTib3iMR9NnRNV8iCrUHCkLnnJ0TlBzPnwoAeJ6Li3Lm/JsGETHMde59oncVJsJ UK3XvlgxeUcRkxejCpXUYxS3I5k7y6StvEaUAepkjbjk0VFAns92AcEc5bmiJtQ4I4Ns rjzPDc+nObeX+fG1rC8cKiR90yVv9GlYHc1oCv22QJO2nxZXRNuNevy90/XnFhgHRk9t swEA== X-Forwarded-Encrypted: i=1; AFNElJ/hVqZLo/PEbShP/qRnn/T3zwA8FIEqJRYpR/JuOniQACv2/q7D9QM9ZEj/woRyDotVnnJp2DCzCrgWn+M=@vger.kernel.org X-Gm-Message-State: AOJu0YxRsgiPVfFYCpUuWvXmOhdN55XF0K6761pevvUPkHno2KgtjCxr l4EQlTPXmmznEOkKdFwtH8SOlFT29JmNYi9Gu+w6ms3rGaVuVxwknhDV X-Gm-Gg: Acq92OF/0reaHmrSEL/QTf/2IPitPLC9J69fR8/Ptwam6LdO6NAyqXx0DHFBpqn+EjB htH8momvMIoFVhlZQigJCjUsYW4JUPzaWzH/DetHsSUjtfeb9IZPXOsWtHgWw9g9n+Wyz/Fcs5a FhJdrbjurjAqLy6da7lFK+HMKs7d1M6THNRsZ4tAgq2Mrfd99XTVlzgMliBAV/oSVjw/ZHbL0mS M9bIarGzFu1OmKV0RUvV5v0nkK4z+1K/wkJ4UU3K5v+uX3FxVltXpMJmMBqm10VupD48cz5ZKF0 bbnVlMx9Hs0kL/xyuG30yzDya5vLWmetzTvX9f+QUsEiefn+ObLfIXnVnLo1JKrCxuYPJGZM+Am pg0nJBWYEvJnFFy8gJyo1EVecK1JPdO4kd211Kjwvzn4xkDTmTuKnlW9dK2X4AVuah8s4qoScAm lPtceMjvuf8zW4suQaYDbbnUKeIx02c2QqAKeDO0wAcJfUT08NtQ== X-Received: by 2002:a05:7022:2397:b0:12d:de3e:cbfe with SMTP id a92af1059eb24-13806767673mr4808249c88.37.1780758340361; Sat, 06 Jun 2026 08:05:40 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.05.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:05:39 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/8] Input: cap11xx - remove unused register macros Date: Sat, 6 Jun 2026 23:03:55 +0800 Message-ID: <20260606150458.250606-3-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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" Remove unused register address macros and unused definitions in the cap11xx_reg_defaults array and cap11xx_volatile_reg. This cleanup reduces code clutter and makes the driver easier to maintain without affecting functionality. Signed-off-by: Jun Yan --- drivers/input/keyboard/cap11xx.c | 58 -------------------------------- 1 file changed, 58 deletions(-) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap1= 1xx.c index 485d8ba97723..686174722204 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -20,53 +20,23 @@ #define CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT (6) #define CAP11XX_REG_MAIN_CONTROL_GAIN_MASK (0xc0) #define CAP11XX_REG_MAIN_CONTROL_DLSEEP BIT(4) -#define CAP11XX_REG_GENERAL_STATUS 0x02 #define CAP11XX_REG_SENSOR_INPUT 0x03 -#define CAP11XX_REG_NOISE_FLAG_STATUS 0x0a -#define CAP11XX_REG_SENOR_DELTA(X) (0x10 + (X)) #define CAP11XX_REG_SENSITIVITY_CONTROL 0x1f #define CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK 0x70 -#define CAP11XX_REG_CONFIG 0x20 -#define CAP11XX_REG_SENSOR_ENABLE 0x21 -#define CAP11XX_REG_SENSOR_CONFIG 0x22 -#define CAP11XX_REG_SENSOR_CONFIG2 0x23 -#define CAP11XX_REG_SAMPLING_CONFIG 0x24 -#define CAP11XX_REG_CALIBRATION 0x26 -#define CAP11XX_REG_INT_ENABLE 0x27 #define CAP11XX_REG_REPEAT_RATE 0x28 #define CAP11XX_REG_SIGNAL_GUARD_ENABLE 0x29 -#define CAP11XX_REG_MT_CONFIG 0x2a -#define CAP11XX_REG_MT_PATTERN_CONFIG 0x2b -#define CAP11XX_REG_MT_PATTERN 0x2d -#define CAP11XX_REG_RECALIB_CONFIG 0x2f #define CAP11XX_REG_SENSOR_THRESH(X) (0x30 + (X)) -#define CAP11XX_REG_SENSOR_NOISE_THRESH 0x38 -#define CAP11XX_REG_STANDBY_CHANNEL 0x40 -#define CAP11XX_REG_STANDBY_CONFIG 0x41 -#define CAP11XX_REG_STANDBY_SENSITIVITY 0x42 -#define CAP11XX_REG_STANDBY_THRESH 0x43 #define CAP11XX_REG_CONFIG2 0x44 #define CAP11XX_REG_CONFIG2_ALT_POL BIT(6) -#define CAP11XX_REG_SENSOR_BASE_CNT(X) (0x50 + (X)) -#define CAP11XX_REG_LED_POLARITY 0x73 #define CAP11XX_REG_LED_OUTPUT_CONTROL 0x74 #define CAP11XX_REG_CALIB_SENSITIVITY_CONFIG 0x80 #define CAP11XX_REG_CALIB_SENSITIVITY_CONFIG2 0x81 - -#define CAP11XX_REG_LED_DUTY_CYCLE_1 0x90 -#define CAP11XX_REG_LED_DUTY_CYCLE_2 0x91 -#define CAP11XX_REG_LED_DUTY_CYCLE_3 0x92 #define CAP11XX_REG_LED_DUTY_CYCLE_4 0x93 =20 -#define CAP11XX_REG_LED_DUTY_MIN_MASK (0x0f) -#define CAP11XX_REG_LED_DUTY_MIN_MASK_SHIFT (0) #define CAP11XX_REG_LED_DUTY_MAX_MASK (0xf0) #define CAP11XX_REG_LED_DUTY_MAX_MASK_SHIFT (4) #define CAP11XX_REG_LED_DUTY_MAX_VALUE (15) =20 -#define CAP11XX_REG_SENSOR_CALIB (0xb1 + (X)) -#define CAP11XX_REG_SENSOR_CALIB_LSB1 0xb9 -#define CAP11XX_REG_SENSOR_CALIB_LSB2 0xba #define CAP11XX_REG_PRODUCT_ID 0xfd #define CAP11XX_REG_MANUFACTURER_ID 0xfe #define CAP11XX_REG_REVISION 0xff @@ -111,37 +81,15 @@ struct cap11xx_hw_model { =20 static const struct reg_default cap11xx_reg_defaults[] =3D { { CAP11XX_REG_MAIN_CONTROL, 0x00 }, - { CAP11XX_REG_GENERAL_STATUS, 0x00 }, - { CAP11XX_REG_SENSOR_INPUT, 0x00 }, - { CAP11XX_REG_NOISE_FLAG_STATUS, 0x00 }, { CAP11XX_REG_SENSITIVITY_CONTROL, 0x2f }, - { CAP11XX_REG_CONFIG, 0x20 }, - { CAP11XX_REG_SENSOR_ENABLE, 0x3f }, - { CAP11XX_REG_SENSOR_CONFIG, 0xa4 }, - { CAP11XX_REG_SENSOR_CONFIG2, 0x07 }, - { CAP11XX_REG_SAMPLING_CONFIG, 0x39 }, - { CAP11XX_REG_CALIBRATION, 0x00 }, - { CAP11XX_REG_INT_ENABLE, 0x3f }, { CAP11XX_REG_REPEAT_RATE, 0x3f }, - { CAP11XX_REG_MT_CONFIG, 0x80 }, - { CAP11XX_REG_MT_PATTERN_CONFIG, 0x00 }, - { CAP11XX_REG_MT_PATTERN, 0x3f }, - { CAP11XX_REG_RECALIB_CONFIG, 0x8a }, { CAP11XX_REG_SENSOR_THRESH(0), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(1), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(2), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(3), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(4), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(5), 0x40 }, - { CAP11XX_REG_SENSOR_NOISE_THRESH, 0x01 }, - { CAP11XX_REG_STANDBY_CHANNEL, 0x00 }, - { CAP11XX_REG_STANDBY_CONFIG, 0x39 }, - { CAP11XX_REG_STANDBY_SENSITIVITY, 0x02 }, - { CAP11XX_REG_STANDBY_THRESH, 0x40 }, { CAP11XX_REG_CONFIG2, 0x40 }, - { CAP11XX_REG_LED_POLARITY, 0x00 }, - { CAP11XX_REG_SENSOR_CALIB_LSB1, 0x00 }, - { CAP11XX_REG_SENSOR_CALIB_LSB2, 0x00 }, }; =20 static bool cap11xx_volatile_reg(struct device *dev, unsigned int reg) @@ -149,12 +97,6 @@ static bool cap11xx_volatile_reg(struct device *dev, un= signed int reg) switch (reg) { case CAP11XX_REG_MAIN_CONTROL: case CAP11XX_REG_SENSOR_INPUT: - case CAP11XX_REG_SENOR_DELTA(0): - case CAP11XX_REG_SENOR_DELTA(1): - case CAP11XX_REG_SENOR_DELTA(2): - case CAP11XX_REG_SENOR_DELTA(3): - case CAP11XX_REG_SENOR_DELTA(4): - case CAP11XX_REG_SENOR_DELTA(5): return true; } =20 --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f44.google.com (mail-dl1-f44.google.com [74.125.82.44]) (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 B314B37418A for ; Sat, 6 Jun 2026 15:05:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758351; cv=none; b=FzaEtmVX72QycisaaFLWHLVrMaUo9+8nHE9uiSPTW31bLimSQ3572zDQGDDbkJLu/RDhBhkhN1/ThyQRe34nmXfwhMg+J8gANZdQ4Mvw7OMv5G95wP5qYarA6wpDBL3vVEgvHFgbIK21tJca4UXRCRKnIpyCqjHAlnCt/0vkdiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758351; c=relaxed/simple; bh=B/E42DH9L0OsbjnEU8trNPtTAk1YF5VphsZ/yuA524s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IiiyOIM0Wyhbey5/j7BnFOnR0s8y5AAMXbBRaDj9OQrR0zhzTPOyPB/5x5m/nT97nVFIZa9pg4d4Aw+IyHq20gm49oJRQ3pzuZDpIZ2K5hlFpNH8S5zEjzhBpPX06iAVNdtKktwi3k4fYTVyRzfTgMl2kZLyAHjh5hX48YDdJwk= 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=Z0MO7IhL; arc=none smtp.client-ip=74.125.82.44 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="Z0MO7IhL" Received: by mail-dl1-f44.google.com with SMTP id a92af1059eb24-137335bc3caso3541288c88.0 for ; Sat, 06 Jun 2026 08:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758350; x=1781363150; 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=7mfLlaOvP8Xr5tMlVdxU7GEA4dRW3fNbCN8mq/+hgMc=; b=Z0MO7IhLKpBya3udjny2xbfnbZHptm3NNpISUacoXcUc2q6EnpR320TEIWLljASZP3 B56xwSd4jArhpV1nfQW/9dQlGKHjh5v0EFn65MYD5PrRPHzu+UYXmyRtN6ckrjyUYHdP T1SmiNW00XMvBm854/zqkcfSBuQZHiivDF+8XpEkAZyTBhBbOpwyTbq3b5iY6b8n9z3p 10p86Dv2tQB4fdcsLu34d8asWioJ9iG8icVgnodrNaVzwluJR91MZV2ceD5256pWiOVI d/5LfN+w11firD+MDgEy7mQc2It5LX9vlD3Mf/UtUPhN0reDs13TgXEw7jBHhsw5+ttP K0lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758350; x=1781363150; 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=7mfLlaOvP8Xr5tMlVdxU7GEA4dRW3fNbCN8mq/+hgMc=; b=ecvpQUs7kuZHPOh08dE6ssoRDFb0dptShq5dQlfS6HZXJcaV5RgEd7DgL4bEJ/Feup ncB8DUQNuqOp4zTRkpM6L1SxfzPqEsuBWG2ODpYtKpyhyfnoVn47s/866+fSyUjrRd9J Xry7YEXQjeicWh9OvUeVjo0tcN2x5MiwOsR5fghLvT/pLPwT5BDvoeoHQMlI1lpP+Owo aIF3ZRHwJ+xlYfTuM/0xTbpwlOnvc2qCjO0W25WE04aLF185PhC8QHLekBZvKQ0aBZTa mHQeW9+LgAiDX54Ms/vUeUWRySES/ajDF1efMrr1oNxYpWtLbpb7lKxnM8Whvf2gu+rS avIw== X-Forwarded-Encrypted: i=1; AFNElJ9IN1cmdP3uLKh99sgiauKN7JFLpZPrd8KdmjG7Jz2sIcSifzKuS632MoSXlGjQ+nBL/LNONYFLXTGfpqU=@vger.kernel.org X-Gm-Message-State: AOJu0YzYXYXuznEZAQ3DuFOm5cChqKTDYgQ9f9XcqP9FXA+7S+5YtqIa 7pNXdducFQl6dBNUkAsNE2GboVwzJ6LMVv2g9jijq4zv3G1bWA7pSs62 X-Gm-Gg: Acq92OHP04aonaDgxpeHDNc10Hk6uoa/5Wcq5jVRJbtey29mcw77DibmJepmJiafGOy lrOfH111Le/47k/7T09q5s2NaQbkDzt9X4yZkudk5sq4q2G5siO/ZVv3oXcru1ZDX5GN7WoRbZm IGN0gJi0l10UwFWdaf6ffDrGXaMKCb2YEUQUuz9/K35jzq/ta/Xbe5fzx5LYiXqSpA05VwQcGQB G3wZRsnvR5S94qo4l9TQbnHqMdy6Difntx0bFaLXjpwT0sCXtffluOX969CSvgHAPlAYRzBP2+F e+Xu1VcYDUstRXuORU0H1vPgVzlVUE6+wEwDUlIPZwYaegZ17O9aYNF2SpDdWAaECbYwtRzipey Beaikxz6N9dLA3NKOtYzoaq5+SxgWxr94mEloDyHqSMntPA3CYsdqGdQztwtpFMWVXZccM6PHI4 9Yc1yFPaWnIqpUkw5gT92vgVomwsFdcOGLq5Lt6q4zOk6MsnCOqUGieUZMQPcM X-Received: by 2002:a05:7022:603:b0:137:eceb:6f44 with SMTP id a92af1059eb24-138066dff52mr4328792c88.22.1780758349745; Sat, 06 Jun 2026 08:05:49 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.05.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:05:49 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/8] dt-bindings: input: microchip,cap11xx: Cleanup and refine LED constraints Date: Sat, 6 Jun 2026 23:03:56 +0800 Message-ID: <20260606150458.250606-4-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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 detailed datasheet links for all supported CAP11xx devices. Unify LED node pattern to support all chip variants in preparation for CAP1114 support. Remove redundant LED properties inherited from common.yaml Apply per-chip LED channel limits: - CAP1126: max 2 channels (0-1) - CAP1188: max 8 channels (0-7) - CAP1106, CAP12xx: no LED support Signed-off-by: Jun Yan --- .../bindings/input/microchip,cap11xx.yaml | 51 ++++++++++++++----- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml= b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml index 7ade03f1b32b..99d00f572a2d 100644 --- a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml +++ b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml @@ -10,6 +10,15 @@ description: | The Microchip CAP1xxx Family of RightTouchTM multiple-channel capacitive touch controllers and LED drivers. The device communication via I2C only. =20 + For more product information please see the links below: + CAP1106: https://ww1.microchip.com/downloads/en/DeviceDoc/00001624B.pdf + CAP1126: https://ww1.microchip.com/downloads/en/DeviceDoc/00001623B.pdf + CAP1188: https://ww1.microchip.com/downloads/en/DeviceDoc/00001620C.pdf + CAP1203: https://ww1.microchip.com/downloads/en/DeviceDoc/00001572B.pdf + CAP1206: https://ww1.microchip.com/downloads/en/DeviceDoc/00001567B.pdf + CAP1293: https://ww1.microchip.com/downloads/en/DeviceDoc/00001566B.pdf + CAP1298: https://ww1.microchip.com/downloads/en/DeviceDoc/00001571B.pdf + maintainers: - Rob Herring =20 @@ -124,25 +133,21 @@ properties: The number of entries must correspond to the number of channels. =20 patternProperties: - "^led@[0-7]$": + "^led@[0-9a-f]$": type: object description: CAP11xx LEDs $ref: /schemas/leds/common.yaml# =20 properties: reg: - enum: [0, 1, 2, 3, 4, 5, 6, 7] - - label: true - - linux,default-trigger: true - - default-state: true + description: LED channel number + minimum: 0 + maximum: 7 =20 required: - reg =20 - additionalProperties: false + unevaluatedProperties: false =20 allOf: - $ref: input.yaml @@ -158,7 +163,20 @@ allOf: - microchip,cap1298 then: patternProperties: - "^led@[0-7]$": false + "^led@": false + + - if: + properties: + compatible: + contains: + enum: + - microchip,cap1126 + then: + patternProperties: + "^led@": + properties: + reg: + maximum: 1 =20 - if: properties: @@ -183,6 +201,9 @@ additionalProperties: false =20 examples: - | + #include + #include + i2c { #address-cells =3D <1>; #size-cells =3D <0>; @@ -208,19 +229,21 @@ examples: #size-cells =3D <0>; =20 led@0 { - label =3D "cap11xx:green:usr0"; reg =3D <0>; + function =3D LED_FUNCTION_INDICATOR; + color =3D ; }; =20 led@1 { - label =3D "cap11xx:green:usr1"; reg =3D <1>; + function =3D LED_FUNCTION_INDICATOR; + color =3D ; }; =20 led@2 { - label =3D "cap11xx:green:alive"; reg =3D <2>; - linux,default-trigger =3D "heartbeat"; + function =3D LED_FUNCTION_INDICATOR; + color =3D ; }; }; }; --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f51.google.com (mail-dl1-f51.google.com [74.125.82.51]) (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 6D56431A567 for ; Sat, 6 Jun 2026 15:06:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758361; cv=none; b=HmI1z6rSoMMvCvKPpnQSW7d9bWdyoE0i70QLfdqGLslDtjGCxveGhP4H+Gp1xvqlCVTQAipRj49AGSaqvf+31qS1FufHuhf7zK2JtLqhntpDgMB25D4PuYYTDOAl/+t/XiYaQPa0ewWBnsChLGNbW8by/dJ07fEwp9Oz8T0c1T8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758361; c=relaxed/simple; bh=qk6/5zmmg9+asPKWV/NmxyRYbTZHz5EKsgeBfogyMXk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nPHfDkTkL41FxOJdqMwuKXRTwvF7Of81b1FDiVs7t2kMyQ4VyLI/wVZmre3TVZcgXHCQV5hoUi5+JE5RSx/Jew/GiXh5NW16Wi88RIlDd1TEjL4TdmbCmgNTbqYw31ycrVYeEUqXxaD/rWxJ0w+bmQjl4JAkV4eveYgtlC3kDrY= 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=NX9iU0T7; arc=none smtp.client-ip=74.125.82.51 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="NX9iU0T7" Received: by mail-dl1-f51.google.com with SMTP id a92af1059eb24-138129a622dso2560332c88.0 for ; Sat, 06 Jun 2026 08:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758359; x=1781363159; 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=d1GndHLlQOy8H3OX3ghdSdW3rvI912309T34g52ZxgE=; b=NX9iU0T7q6ZRzMEB1nkQ8DJ1lHouOoKSkZj/339RK5gTlSJ7ZKOELqf2vWejuC4qdd 6pvPJFMVMgWfLSwV8QCZmZlWF1N4mU5ZvObio+qTiCFDbv9o+Po1alYBvsrG8ck9T6xE qFFuT3c/MX0TcnuCgUzorFvAlFe0qdsAFpvTpHftEp69IOIvLkTxPcsapyG2NexWnqWs bUB6O8KGVKH4jU+DjCEBsTSHmaIafydfo1gMXI2jEgHxJHOmePQPDPR4HhDvmorms8/9 yq0kXIFzwIHtMmjlIYx9gS6vtPK1zDFll0hBeNBk26+5OfmyAAcxnHftDF3W/4kzzpRE 7bQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758359; x=1781363159; 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=d1GndHLlQOy8H3OX3ghdSdW3rvI912309T34g52ZxgE=; b=LyXBo79IL6wPU8OAlUteBwoR79eQjEPbFklUYOUkYiDimamQcIOf4F8c2AEobVoQbn OL/fnzH3pPgwvHcIWzUqdp0Wo7bCS7CxIdhA/FCm+Hl8RztdwHdB2J5YXxmL8r1nVJQ0 HiZ9jDkjap0XPUr6CITjZlYhqszpJX6xc9BrRZy9p2/doVe4P7arrvM372HE8nG+EAuN uAXWWHrrrzXjDL606GZ4LwvRJiSGCK/H/3nm/ePLNfl8xXZIY4e+BLNVp3deAR60gS50 9OLMIx4ZlIwycGFkm16g8tn0JjIKN1HvoQkmB28bJxIiTbepojXP5vUpxq5l4uT1YSWn JnLQ== X-Forwarded-Encrypted: i=1; AFNElJ9UhXbI/MUa0dE0pHsFtTP4B6ZYz/ukPCQpDLGA9qyaHG7d/WAb2sjDXMRIxy0WUb9uiLAebGuME8wOtRs=@vger.kernel.org X-Gm-Message-State: AOJu0YxPctqC3xlhW5W2g17kcY4H86NE0NTFDO8X8/dkIF4fbLRNCIwp iYf6Tz4ZaZEAdQ7DttmhgiEfHL3TxSo9jWWZy+Ns+4vrwsoG29LC1DAe X-Gm-Gg: Acq92OH0pcn/Wh4qCnUbxNEfnOiFUUSm0Rm1n3y1/Yb0PTXpM1j/HZrK3MaQf7vQWnx OSnfSBl6C/gOcWyfZGsvPYPK0kL6I/AcLfSp3gg6PLZjTKxODv/FC9lc7vs34HmZztp9VSinsPI +fmHwn/jWD5dKeFvvixOWzqL+np/dmZjBgkm/Z4feme6ixm4Erf2tQXGo6/xrwzf6FbwS3pMI+c EmkCbLYtGKgUq5L5tko6rPvT/nyR2fwW4n0C0V0aJW3RisOkRA2MtmGU1t2DuA97f78673YWCxC tcCRck1Lz+FMCEHxlflFv39Vc+EQB/L0wGFLW8/PqcRRjDjnUH+gEjRkRBMybrOhxoEhXKJMxIE xGH8x35d34w3KZ5+Ayo/DlLmTX+pLWxuwyh2DcO8p6U6Sn20MsJUT20p6mGskG9FUfL9ruF3Zt+ L8rUR77wNxWPEdTq7wfCq+/y6zrLczDokFDvwkSA+GcY2H6TTo2Q== X-Received: by 2002:a05:7022:4199:b0:135:3025:be5c with SMTP id a92af1059eb24-1380671673emr4238397c88.27.1780758359342; Sat, 06 Jun 2026 08:05:59 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.05.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:05:58 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/8] dt-bindings: input: microchip,cap11xx: Add reset-gpios property Date: Sat, 6 Jun 2026 23:03:57 +0800 Message-ID: <20260606150458.250606-5-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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 support for the optional reset-gpios property to describe the active-high reset pin for CAP1126/CAP1188 devices. Driving the GPIO high asserts reset and deep sleep, while driving it low releases reset for normal operation. Restrict this property to be available only on CAP1126 and CAP1188 chips, as other CAP11xx variants do not have a hardware reset pin. Signed-off-by: Jun Yan --- .../bindings/input/microchip,cap11xx.yaml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml= b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml index 99d00f572a2d..e307628350c2 100644 --- a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml +++ b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml @@ -49,6 +49,13 @@ properties: device's ALERT#/CM_IRQ# pin is connected to. The device only has one interrupt source. =20 + reset-gpios: + description: | + GPIO connected to the active-high RESET pin of the chip; + driving it high asserts reset and deep sleep, while driving + it low releases reset for normal operation. + maxItems: 1 + autorepeat: description: | Enables the Linux input system's autorepeat feature on the input dev= ice. @@ -151,6 +158,20 @@ patternProperties: =20 allOf: - $ref: input.yaml + - if: + properties: + compatible: + contains: + enum: + - microchip,cap1106 + - microchip,cap1203 + - microchip,cap1206 + - microchip,cap1293 + - microchip,cap1298 + then: + properties: + reset-gpios: false + - if: properties: compatible: @@ -225,6 +246,8 @@ examples: <109>, /* KEY_PAGEDOWN */ <104>; /* KEY_PAGEUP */ =20 + reset-gpios =3D <&gpio 17 GPIO_ACTIVE_HIGH>; + #address-cells =3D <1>; #size-cells =3D <0>; =20 --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f42.google.com (mail-dl1-f42.google.com [74.125.82.42]) (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 092A526CE32 for ; Sat, 6 Jun 2026 15:06:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758371; cv=none; b=LcbtEqv9vHRlrnKXUSCApXZPYoBO1ruuKJxI7tr+BxtSh2GZ/VtJ5CAxUn/O3w9JzqlMhwLPZWWSO3suiscE+JvhVQgMooKBgEo1KBPeUu2FFe1rD4KYjT9jCDkfznjle2sRi26t4RJ7Y2gDPk17xSCY0WpGpUeviRAvN7Fuj4M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758371; c=relaxed/simple; bh=nFcLkkDjWaxOXRUBJLHL7pv80zXwV4iH2ZXgfy2DoxA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YdCn7q7atvX9NK0CMMP7fW97f+4vlB87uUQ/vBxjNJxJEk0qm4D/prgSQgNoDY4QWKgd/BKYNqaqPPmlNbZ7Jh0MfDFt1fhcVDqAhs2ozXtm/dffuWyuiU4vfXjWKYSQDgit4nDQRxR1uexafi0p92Dd93LtSgE/vtZmVWkOQYY= 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=bPy44pl1; arc=none smtp.client-ip=74.125.82.42 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="bPy44pl1" Received: by mail-dl1-f42.google.com with SMTP id a92af1059eb24-1370417c01cso3999050c88.1 for ; Sat, 06 Jun 2026 08:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758369; x=1781363169; 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=81dfFkKztQoah8MdmOv0czHOW2LD9S1N5N4vx0SAF5E=; b=bPy44pl1pax1LmQxqOpVxNnHQaeT2nJFwNAj5hVFBJE9pGl/oTd36M26u0YfGYS+kh HaZeJm0WH4l0aZnCUw14gM2V1G1o/AgN6pu+bhkcdEnJ0/M8Ia+XcIlc4CtgkmVfmMjx 5ZutVOp8FJDvA3nMLyw82vN9D9DraySrpo9p4hFmWAPLHwd5V8sEObfFwrjZQ48X1a9Z dbrVeR/ez49yypuW/kjOBkGLltRNCcSgSGlgpycwCc/7FSn7e/2oLnCWtnkxA4p8asL8 zG3C9TKKwquaiKV5cIqDMfu0Hs5hG2RsbW8Ab5fRwGHFoLLB10vwjlzKIE3szlbqyyOT qw0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758369; x=1781363169; 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=81dfFkKztQoah8MdmOv0czHOW2LD9S1N5N4vx0SAF5E=; b=oz8fbCNPRq6oj2DGNjAYJY31ipt3KWEbYve88AyLcUyWCcHqO4MVoNdymjhDE0ztW1 0fn2Rcdpd2Al+JsSe8D157QtLPPi1Mp9Gm8HvjwTfpIA/I3Nq1uoKIQH0INQKIkFrAc0 xsrBS/KAjJl1Us0+9IiX6zzub4uQYMTy0gbCxEyYGjDSZ/aC21KbUPOfC62PQJ7ZJeCW weuZSZ5HI329FweeEalxXAnhFJnFDQfJpQb34PAMYdQIrt0LaF91101dWnTEPlOCF2nz xN9K3MGSrc+s8JuImcusot8bDbvgAe8VVzHW6SXb0n2YYKsmuY90orEaQLfx5s/MI9nT oRAg== X-Forwarded-Encrypted: i=1; AFNElJ/unAJezrKo2EgUSH/otEOVNRKTC2n5+/Cz9wu9b5IyWhkgIeIRNx5bLXgPWgJH3EInU0fukiWty/xZuZY=@vger.kernel.org X-Gm-Message-State: AOJu0YzspIpBbjG+zhBY33HwPpYpvY9huVksjJqh41rmh317eAB3djIh lfKPehx1ei2So60t2AuuT5e6bxATj29/t8PZJgAgFaN0YesUMQTjAdU6 X-Gm-Gg: Acq92OG2xWZyUimR1x2EXfcBGyiv1maCaOApjR3OKF2kK8OprDTEdmKkgtGCbwMguYx so9xbiHqtxDgpzVC5a+KVxWM011ISHDPXT4gCSbmbSSGmFiF+FEAG0UHkNLhdmjWby6DDA+4/i/ xAQzl+cZbJdBY+lZiY9sL3nNwUi5P9nuMBTvSBEJxtKXMYfSg4dH2Eq8j9BcmmbOgX5/aaHBeIO /86B8jxwqIZtRr89xNiLOzXlapLeyRBNLQ4R9Nb8se567FoRgaS943NZV2iklOrrTTb/lnrxCZF NDD4VUIUaG4vtVcsoHPns1n8s6eAXs7KJvchT4LEE6x0nR1B8mOr88iAKNyKqWJJyjlE6Oz4Gqd Y7B+b+2W1HmVk9tGN00ZVSZoHDIwf9wk0GTJHuXf7cV8tPjlP7bW2pO7ahyxWJy0fzo0ysWPXfU 4WqSsQtpn+EWB2zveMHRCaxNThhu4UFLiTc1khTHiB9BvclxAcPw== X-Received: by 2002:a05:7022:423:b0:137:f2d0:da6d with SMTP id a92af1059eb24-138066dff7fmr4301773c88.25.1780758369026; Sat, 06 Jun 2026 08:06:09 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.06.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:06:08 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/8] Input: cap11xx - add reset gpio support Date: Sat, 6 Jun 2026 23:03:58 +0800 Message-ID: <20260606150458.250606-6-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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" Some CAP11xx devices (CAP1126/CAP1188) have a dedicated RESET pin. Add hardware reset operation to improve device reliability and ensure proper initialization on probe. Signed-off-by: Jun Yan --- drivers/input/keyboard/cap11xx.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap1= 1xx.c index 686174722204..7015aa7654ce 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -43,6 +43,10 @@ =20 #define CAP11XX_MANUFACTURER_ID 0x5d =20 +#define CAP11XX_T_RST_FILT_MIN 10000 +#define CAP11XX_T_RST_ON_MIN 400000 +#define CAP11XX_T_RST_ON_MAX 500000 + #ifdef CONFIG_LEDS_CLASS struct cap11xx_led { struct cap11xx_priv *priv; @@ -55,6 +59,7 @@ struct cap11xx_priv { struct regmap *regmap; struct device *dev; struct input_dev *idev; + struct gpio_desc *reset_gpio; const struct cap11xx_hw_model *model; =20 struct cap11xx_led *leds; @@ -452,6 +457,17 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_cl= ient) if (IS_ERR(priv->regmap)) return PTR_ERR(priv->regmap); =20 + priv->reset_gpio =3D devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(priv->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(priv->reset_gpio), + "Failed to get 'reset' GPIO\n"); + if (priv->reset_gpio) { + gpiod_set_value_cansleep(priv->reset_gpio, 1); + usleep_range(CAP11XX_T_RST_FILT_MIN, CAP11XX_T_RST_FILT_MIN * 2); + gpiod_set_value_cansleep(priv->reset_gpio, 0); + usleep_range(CAP11XX_T_RST_ON_MIN, CAP11XX_T_RST_ON_MAX); + } + error =3D regmap_read(priv->regmap, CAP11XX_REG_PRODUCT_ID, &val); if (error) return dev_err_probe(dev, error, "Failed to read product ID\n"); --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f47.google.com (mail-dl1-f47.google.com [74.125.82.47]) (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 6241326CE32 for ; Sat, 6 Jun 2026 15:06:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758380; cv=none; b=Ni8hsAcHwzrYIL92QZ/LmfDnVy3mglN0eS17dOlE7DSSy87+Ps2HwTyI+zrRtNKXyhpDGIB8IOVPXcgiBCLJZbu5oUa5QedgS0Vg9hbpIB+eSMuvMDxeuJCeHwhTPL3ncXwRqBylbMfGBb6fV9oh8wt/rC0AKJnHB6DqX68r5ag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758380; c=relaxed/simple; bh=nuMfPmdQ6ap4c/tSQKOX7CZVAISHerWLS0jW+tD3DlY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lmu9OdaV+V5PG81Rs+RyUJRunyZXsNfe8E6E4CpPkHz8rzCLSu993wN+ZIwAaRnVp/f71LB1PXCL2gH+4/Za4c8HCf57jLT1ag+xIFT/akLHFFTagiBAhree9U3P342VanKOPHYqsTeNJU9vG6Lsi6ASr0vYqUhRIBMyXEFt6x0= 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=QEMISu4a; arc=none smtp.client-ip=74.125.82.47 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="QEMISu4a" Received: by mail-dl1-f47.google.com with SMTP id a92af1059eb24-137bd9ed2b1so965282c88.1 for ; Sat, 06 Jun 2026 08:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758379; x=1781363179; 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=dAASWV/lnc1JU2Ktl9cqYdwLLsmulMXfF+xD4dEkl1M=; b=QEMISu4awcCJEAu2fv1FFwohTFrcuyX1EQoUnVLZtpN3D4qiNQdi7hYt89uG4Z7Am8 wnkeTFhZvTS525xIR9gtiKgwQIGo/drX7r+afGf2IxK4AZwWwW1v3V6Lnou7fMPmPR3R Gi2xruE0zzL6Sm8sXRZS1nX6RUZKktiu3JahqeEh5LCelVdCRQ8wvGXZqwJN3erGVb4W knGEVHR7kIMWxotlD2cHkAZV07rNlOzVg1n8EaQ9VQQH1QHlZ3KKbq/jA1VuvSqzpQNQ xGErDXwIQ4QDc2W2g3yAaSZgujgIKCiKdR3+LVAdGybXGx7mJ1EtQP5cTUQNfDhIc34M Q9FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758379; x=1781363179; 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=dAASWV/lnc1JU2Ktl9cqYdwLLsmulMXfF+xD4dEkl1M=; b=BU+Vqp1rYSlRZCi8784SO3DXrkMQXYpsA/ra3PN7OL33lKtR62S+fA9Bs4dWYwVARy 00QnsOpMc+J0Kf4RJnRl6Yc/TojPrcWWdvcQdY5F6QZ+ePpTjb38QWDZFtI6ZpPhXhL5 gYT1bSwYoxXG9NP/i79B1wSjHORfevR3x3ynV3Dw25zGfquB33s7h25aSTbDQ856b8zj zGtBZdvHzD1oMIA3ZNOsDbCz9e8ZUbz2LR2c1IglYg509D4dNDOtU5fiDGz/8ys7fxgR DK9f/k5rvgEQ8TcUNCjP6aMTWsIuOSsY91EgGXCuvBjEw4M3ew+PwnZ3IKCt7Oc7Kkub mVcw== X-Forwarded-Encrypted: i=1; AFNElJ8oy/udi+8H7GfBQBsHqjz9ZIml8RCatvPqIqIUFxihwmkUoltRoJA4Gn6rditkbQJPs1CwfOaPTAIxvao=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2gHmeDjk0r2fpobP16CHdKewXgAOi3yA8VjUdQXMIaWwuBF3E Nr1YHrhfdA1zum8HrKCVpcsl7VlINBAogJSmVJ0Fhf4Q8dTC/pvt0LrL X-Gm-Gg: Acq92OEoFN/RIkZznVTMgs/OwKdCw4hErpNtCq5cePmm4Ck2Y8SEA8B+vieucSEQyDm CEG7ChqoUOCjT9JSHIenHtNChrIzFnOFQDBjRemPnpDr37YZ8ICoLGraKasOb+ADrg4h7zi2wOa AMPntFFok1V/lg1NBMzLKA5juAR7ZB0eJHe5wsU8RUrhL0BmrkIlaAkn7YQAf+pLM1CaIWzunt/ orUYe3IyvS7GYgG3Uo8uLp/mb7VS5GTZ9J0P87D0EvIpcSpaTnQZ+P7QPWUeO4TkA/mMN19J8RC 1i7HgbiiWGybf68AexFBb/O8syVWz5IowKdJGKI4uwk1bhY7fAIlNXlSTc+vaxoOyP28pylB+O+ krNbpuHHcl1rUg9H9eKIobWd9rL3kyheu/AkVXCP+NA8hAUHfHsUBtMYgDg7Yna/LRDLCarOGKa xdyIJDORWzZldbciZ09u+7brKEU8uDMIjU/VYukmzuJE4aLr9XdQ== X-Received: by 2002:a05:7022:239d:b0:137:f875:c1de with SMTP id a92af1059eb24-13806722a34mr5157604c88.22.1780758378474; Sat, 06 Jun 2026 08:06:18 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:06:17 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/8] Input: cap11xx - refactor code for better CAP1114 support. Date: Sat, 6 Jun 2026 23:03:59 +0800 Message-ID: <20260606150458.250606-7-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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" Extend cap11xx_hw_model structure to support CAP1114 with different register offsets and hardware characteristics: - led_output_control_reg_base: different address on CAP1114 - sensor_input_reg_base: different address on CAP1114 - num_sensor_thresholds: separate value from num_channels for CAP1114 - has_repeat_en: repeat enable support, disabled by default on CAP1114 Include linux/bits.h, update the register operations related to LEDs. Signed-off-by: Jun Yan --- drivers/input/keyboard/cap11xx.c | 73 +++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap1= 1xx.c index 7015aa7654ce..408880cf6516 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -5,6 +5,7 @@ * (c) 2014 Daniel Mack */ =20 +#include #include #include #include @@ -34,7 +35,6 @@ #define CAP11XX_REG_LED_DUTY_CYCLE_4 0x93 =20 #define CAP11XX_REG_LED_DUTY_MAX_MASK (0xf0) -#define CAP11XX_REG_LED_DUTY_MAX_MASK_SHIFT (4) #define CAP11XX_REG_LED_DUTY_MAX_VALUE (15) =20 #define CAP11XX_REG_PRODUCT_ID 0xfd @@ -76,10 +76,14 @@ struct cap11xx_priv { =20 struct cap11xx_hw_model { u8 product_id; + u8 led_output_control_reg_base; + u8 sensor_input_reg_base; unsigned int num_channels; unsigned int num_leds; + unsigned int num_sensor_thresholds; bool has_gain; bool has_irq_config; + bool has_repeat_en; bool has_sensitivity_control; bool has_signal_guard; }; @@ -204,8 +208,8 @@ static int cap11xx_init_keys(struct cap11xx_priv *priv) } =20 if (!of_property_read_u32_array(node, "microchip,input-threshold", - priv->thresholds, priv->model->num_channels)) { - for (i =3D 0; i < priv->model->num_channels; i++) { + priv->thresholds, priv->model->num_sensor_thresholds)) { + for (i =3D 0; i < priv->model->num_sensor_thresholds; i++) { if (priv->thresholds[i] > 127) { dev_err(dev, "Invalid input-threshold value %u\n", priv->thresholds[i]); @@ -279,10 +283,12 @@ static int cap11xx_init_keys(struct cap11xx_priv *pri= v) of_property_read_u32_array(node, "linux,keycodes", priv->keycodes, priv->model->num_channels); =20 - /* Disable autorepeat. The Linux input system has its own handling. */ - error =3D regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0); - if (error) - return error; + if (priv->model->has_repeat_en) { + /* Disable autorepeat. The Linux input system has its own handling. */ + error =3D regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0); + if (error) + return error; + } =20 return 0; } @@ -301,7 +307,7 @@ static irqreturn_t cap11xx_thread_func(int irq_num, voi= d *data) if (ret < 0) goto out; =20 - ret =3D regmap_read(priv->regmap, CAP11XX_REG_SENSOR_INPUT, &status); + ret =3D regmap_read(priv->regmap, priv->model->sensor_input_reg_base, &st= atus); if (ret < 0) goto out; =20 @@ -355,7 +361,7 @@ static int cap11xx_led_set(struct led_classdev *cdev, * 0 (OFF) and 1 (ON). */ return regmap_update_bits(priv->regmap, - CAP11XX_REG_LED_OUTPUT_CONTROL, + priv->model->led_output_control_reg_base, BIT(led->reg), value ? BIT(led->reg) : 0); } @@ -367,6 +373,7 @@ static int cap11xx_init_leds(struct device *dev, struct cap11xx_led *led; int cnt =3D of_get_child_count(node); int error; + u32 duty_val; =20 if (!num_leds || !cnt) return 0; @@ -380,15 +387,18 @@ static int cap11xx_init_leds(struct device *dev, =20 priv->leds =3D led; =20 + /* Set all LEDs to off */ error =3D regmap_update_bits(priv->regmap, - CAP11XX_REG_LED_OUTPUT_CONTROL, 0xff, 0); + priv->model->led_output_control_reg_base, + GENMASK(num_leds - 1, 0), 0); if (error) return error; =20 + duty_val =3D FIELD_PREP(CAP11XX_REG_LED_DUTY_MAX_MASK, + CAP11XX_REG_LED_DUTY_MAX_VALUE); + error =3D regmap_update_bits(priv->regmap, CAP11XX_REG_LED_DUTY_CYCLE_4, - CAP11XX_REG_LED_DUTY_MAX_MASK, - CAP11XX_REG_LED_DUTY_MAX_VALUE << - CAP11XX_REG_LED_DUTY_MAX_MASK_SHIFT); + CAP11XX_REG_LED_DUTY_MAX_MASK, duty_val); if (error) return error; =20 @@ -554,41 +564,64 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_c= lient) } =20 static const struct cap11xx_hw_model cap1106_model =3D { - .product_id =3D 0x55, .num_channels =3D 6, .num_leds =3D 0, + .product_id =3D 0x55, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 6, .num_leds =3D 0, .num_sensor_thresholds =3D 6, .has_gain =3D true, .has_irq_config =3D true, + .has_repeat_en =3D true, }; =20 static const struct cap11xx_hw_model cap1126_model =3D { - .product_id =3D 0x53, .num_channels =3D 6, .num_leds =3D 2, + .product_id =3D 0x53, + .led_output_control_reg_base =3D CAP11XX_REG_LED_OUTPUT_CONTROL, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 6, .num_leds =3D 2, .num_sensor_thresholds =3D 6, .has_gain =3D true, .has_irq_config =3D true, + .has_repeat_en =3D true, }; =20 static const struct cap11xx_hw_model cap1188_model =3D { - .product_id =3D 0x50, .num_channels =3D 8, .num_leds =3D 8, + .product_id =3D 0x50, + .led_output_control_reg_base =3D CAP11XX_REG_LED_OUTPUT_CONTROL, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 8, .num_leds =3D 8, .num_sensor_thresholds =3D 8, .has_gain =3D true, .has_irq_config =3D true, + .has_repeat_en =3D true, }; =20 static const struct cap11xx_hw_model cap1203_model =3D { - .product_id =3D 0x6d, .num_channels =3D 3, .num_leds =3D 0, + .product_id =3D 0x6d, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 3, .num_leds =3D 0, .num_sensor_thresholds =3D 3, + .has_repeat_en =3D true, }; =20 static const struct cap11xx_hw_model cap1206_model =3D { - .product_id =3D 0x67, .num_channels =3D 6, .num_leds =3D 0, + .product_id =3D 0x67, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 6, .num_leds =3D 0, .num_sensor_thresholds =3D 6, + .has_repeat_en =3D true, }; =20 static const struct cap11xx_hw_model cap1293_model =3D { - .product_id =3D 0x6f, .num_channels =3D 3, .num_leds =3D 0, + .product_id =3D 0x6f, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 3, .num_leds =3D 0, .num_sensor_thresholds =3D 3, .has_gain =3D true, + .has_repeat_en =3D true, .has_sensitivity_control =3D true, .has_signal_guard =3D true, }; =20 static const struct cap11xx_hw_model cap1298_model =3D { - .product_id =3D 0x71, .num_channels =3D 8, .num_leds =3D 0, + .product_id =3D 0x71, + .sensor_input_reg_base =3D CAP11XX_REG_SENSOR_INPUT, + .num_channels =3D 8, .num_leds =3D 0, .num_sensor_thresholds =3D 8, .has_gain =3D true, + .has_repeat_en =3D true, .has_sensitivity_control =3D true, .has_signal_guard =3D true, }; --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f41.google.com (mail-dl1-f41.google.com [74.125.82.41]) (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 3D42426B2D2 for ; Sat, 6 Jun 2026 15:06:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758392; cv=none; b=IQFFc1cMyrBd5PWeD7pK2yLlUqH54ZlDtzZTYbzIUsua5yx4eodz+WPHaEmsF3zrVzsEcSn44TRFyo7VA7Nfi9WEonJnHjK0Xr9bMBEJmDNZrg3IKBCRzJkHbwT0GEE1RyRuQNrzA1t6yb5TJRKCFMRQGEEgkyzNleNZymPHFbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758392; c=relaxed/simple; bh=5Xp05dceoyvZXVaCrNt037RzvSQB45EweEegXMfhvkY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=izCZ9AJFM1AZMPweOmcbuG4bJhRVLpGr1j5oHuGqV8/7i/QFgjuKWEPGZXvGP6U0w7TTGUFUbf2ByV2gP0GCP8U3wbK5kQg8gW53KaszG3Mx2yF0FdSpSiMUrG5+KzTQZn5Ng6km5Z2sjVdmpEmNxF51VwXQQlHKqxwVfos6dMQ= 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=GqFiGB2U; arc=none smtp.client-ip=74.125.82.41 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="GqFiGB2U" Received: by mail-dl1-f41.google.com with SMTP id a92af1059eb24-138129a622dso2561066c88.0 for ; Sat, 06 Jun 2026 08:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758389; x=1781363189; 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=pPLxJdwUnTEPL//5sBV5FbB7FSjHqZ/L9m5KUj5m6AI=; b=GqFiGB2UgF0PjejK7EdZmlEEclY4j5rWEFZEJzAgdZDOUjukANU2aynCZkz6VP7/XM gHreHLdhDrndxxINAn+nGeu3fq2q6qsryaw1jvZeaFcBwqUGQIsNIWYdwBK8Do6BrNDy GrT736E6hCa962wpBNh4ABUrY1AICgpwG/EfRZnfoqE8DPI7SM85u0GvqkXNqiTZhnRA vILZ19WzB61CHKcSrZTqgiQtfaz6BtDbvnldisFKk6fNCwcLXZ1N6MU1H6sSuv6phNOI OLRaPXqtqsG/Oe8uhutgSMwsiWXBlDn0PlNxragRxu2C0sTHZbSR1uXgidXwUzraK8pj LCnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758389; x=1781363189; 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=pPLxJdwUnTEPL//5sBV5FbB7FSjHqZ/L9m5KUj5m6AI=; b=CsO63PKpQ+PhQDX3SRKbz4KHmRR8cqv0yVqLjhcsrfdlN5GvTVswzX3XQjs5JsgiNd r7PQ0marfqlqJmCU5N0N6+U0Zbt0SGGwI3YSas+qF8s+tltx//DhQNKqdzlFc+smu0Gr i3a0Wa6cCZm6usUilUFjLko6k+O56EKdDF4+BjsUSr+QGQFLBCfs6joz6GMm1eUZCiKB /jGyG1ip+qXoFaMZl6y3CQKoxaU8VeWD7UdUPvsPxdVqjvQP16iIIwMACrtN2oBUY3y1 2TDbkKswnIBvwKVIj4hTTnDojB+VVQTzWn6bdb8GeG7l7ijkX9QqPOAFiQEY6joAdBZS 25IA== X-Forwarded-Encrypted: i=1; AFNElJ9UUcCnun9oMejmQtz8boeX4lD9oV9CZrxxgUvBrKukU3m3qcQzvWbeQG572zrnb102AXqtROrpaQ65CwE=@vger.kernel.org X-Gm-Message-State: AOJu0YxnuT9+aOdfXpKkIQO0s6pAglfQMr4jYsuTK84H/0nOqaoOYmP2 4gj0g90VKA0mNqc0RL6fM2W9yf7yqdIdKV3hQmUVCq7dilDxz4mzX1n4 X-Gm-Gg: Acq92OG6kO2rwJOnOrOlCmzJN+JPzc4iD1Iphterqy3IPm11vaWgxpS8dy6n2kZCJLx 0GK+rO2koOX78/v6tJK90YJrlWwIEUkdT7d63MDWalX5tqTQIQdbBpVm1pT6J8pReERn2PPvxym xEfxP7mIXIfsG/I8kVdnEjOodtMNJl64naknrLoy0WcqltUncL/wVzOt/B/Ya/vYhTHAH50BuoX Euorm6C9jHOvHmuhrAIlGZKsc0V67jHEgBIalmhBitBd+v1RzC14r12LQ5SCpMDTwbjl/4rzOQ6 6G0fsic3ZbRHiQPrhl72+x53UI1A6/bpapSZuQEDj41RXnddrLRO1QUmuPJPqn7aj48yxNNSK8l dlq6kRjIdKeMEAgq4aiTNC2aiPteyxwEJuFKRWsyLNOR834FnLm6kPp806/IPQKqMdo9w3Qjn+6 sH76EKRpkb0hSdItTcEiISlm1QFF+SoGYW1xPGPDfj9J1CuHWaNA== X-Received: by 2002:a05:7022:3d04:b0:137:eda3:e5a9 with SMTP id a92af1059eb24-13806720e38mr4698313c88.28.1780758389266; Sat, 06 Jun 2026 08:06:29 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.06.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:06:28 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 7/8] dt-bindings: input: microchip,cap11xx: Add CAP1114 support Date: Sat, 6 Jun 2026 23:04:00 +0800 Message-ID: <20260606150458.250606-8-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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" CAP1114 is a 14-channel capacitive touch sensor with 11 LED outputs and hardware reset support. Add the compatible string for CAP1114, include its datasheet URL, and update the maximum count of LED channels and linux,keycodes entries. Add description for microchip,input-threshold: CAP1114 only provides eight threshold entries, which does not match its total channel count. Signed-off-by: Jun Yan --- .../bindings/input/microchip,cap11xx.yaml | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml= b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml index e307628350c2..08233386a433 100644 --- a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml +++ b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml @@ -12,6 +12,7 @@ description: | =20 For more product information please see the links below: CAP1106: https://ww1.microchip.com/downloads/en/DeviceDoc/00001624B.pdf + CAP1114: https://ww1.microchip.com/downloads/en/DeviceDoc/00002444A.pdf CAP1126: https://ww1.microchip.com/downloads/en/DeviceDoc/00001623B.pdf CAP1188: https://ww1.microchip.com/downloads/en/DeviceDoc/00001620C.pdf CAP1203: https://ww1.microchip.com/downloads/en/DeviceDoc/00001572B.pdf @@ -26,6 +27,7 @@ properties: compatible: enum: - microchip,cap1106 + - microchip,cap1114 - microchip,cap1126 - microchip,cap1188 - microchip,cap1203 @@ -62,7 +64,7 @@ properties: =20 linux,keycodes: minItems: 3 - maxItems: 8 + maxItems: 14 description: | Specifies an array of numeric keycode values to be used for the channels. If this property is @@ -122,6 +124,8 @@ properties: is required for a touch to be registered, making the touch sensor le= ss sensitive. The number of entries must correspond to the number of channels. + CAP1114 is an exception where channels 8~14 reuse the eighth entry's + threshold, so counts differ. =20 microchip,calib-sensitivity: $ref: /schemas/types.yaml#/definitions/uint32-array @@ -149,7 +153,7 @@ patternProperties: reg: description: LED channel number minimum: 0 - maximum: 7 + maximum: 10 =20 required: - reg @@ -199,6 +203,19 @@ allOf: reg: maximum: 1 =20 + - if: + properties: + compatible: + contains: + enum: + - microchip,cap1188 + then: + patternProperties: + "^led@": + properties: + reg: + maximum: 7 + - if: properties: compatible: --=20 2.54.0 From nobody Mon Jun 8 05:25:48 2026 Received: from mail-dl1-f49.google.com (mail-dl1-f49.google.com [74.125.82.49]) (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 AB54F3AFD13 for ; Sat, 6 Jun 2026 15:06:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758403; cv=none; b=uT9UsF50x/CZwugO7a6ff1Y4fMCtpEJj5IjlVpfrREVCNd2KOFqM7gxicuxGw/gAeUqBpitrwtIrUrniO3ea4NrGN4wmMttW1Kh0zWtwF0eCKb8OX0CC1is23POficwyw4rqf63QHEY/bIH6Qv6BW+PHT1ph2CCPHgRfgZWjJfg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780758403; c=relaxed/simple; bh=/iq/pKUcLd2+ZjphyoeKuDnlDKhdvKBfSeOZb+ir2LY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nQXusl3rkj/pPivzlFRwKuhRskX9tr9MkhP3XPPnfqM3/0XchFhk8W3C0UAWupuUWBhtTa7kPJBAUpe0ENTaUwaoe/U6HSkX31zSy8AQwos1QtKuR6tRSebTGviUQ3nrDy9gaN2O2IyfgJT98L8wFr4Q/Nkc4yEXhanVTZT2xqI= 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=O3wFSyWm; arc=none smtp.client-ip=74.125.82.49 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="O3wFSyWm" Received: by mail-dl1-f49.google.com with SMTP id a92af1059eb24-13807d2f898so1617254c88.0 for ; Sat, 06 Jun 2026 08:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780758400; x=1781363200; 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=TjiWtAz+aQ4k3cgwyCNnyCozbPzrXU6EPLyKwpTDaVY=; b=O3wFSyWmHKGIGAhRL8b7BYYLOhWgzib+nVF6ZTUUygNRwPyrQi/D753GTP3uRivRWH NO1UiPN4BzdJCTWb6FVsqgN7PNNUxTT7i11twcMOxaxzvzU/FUdi6u0LM5UUimFdRsn2 OhmmgBlGHv4Y/ALzzjIGC5Tkse7u1RlMctpi6Lmt4kiTkj9+P7lhMmd5amzxSqF+rfXV zxeDE9SsLbPePB520J/VGSmJBpfoSM12Ep/ohcmQj69Ta9GWdyjc9lY/kmGqpLEaBjJO Vd03JfAbuFw5IPpZT2biUWnxequMYYWUeW1+xX5jZOgJzdDAwPQ9CD+NF+BZDcUqakIn Hp1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780758400; x=1781363200; 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=TjiWtAz+aQ4k3cgwyCNnyCozbPzrXU6EPLyKwpTDaVY=; b=LUcELl5bRrWDCMMaxnQN2nd8Dk3LfoS+QCOzDHol+ja6U6tHNOoIXFWDyrJr5JAye+ 2AZ+QF0TY0L/TVCyRBq/kE4cjeEo77Z7EHe9ds1nPJSdu/oZ+ODP1fxj8D13nOG+BfpY cfoIrFuFnq/BmkrW8EoSX9h0uYsPixfBzmkeol2sqEu2ZILDbtc+say8BV6S4IOn8Oex Cf8la0RV3t+o3RcICMdJ2FOFDR7+2JitbL2eeEHmVLwAiOf+hBZ/B/aqOqdV2cF5hiJq nZJICUDPCIrkfw3Vc+XL5V9i8/EYtaxNjD3U3bnxbzgepEcGM/LPXhFCaNn7r7x/ND7g oz9Q== X-Forwarded-Encrypted: i=1; AFNElJ/jy0/lVzSrNqdKR1eibnq+xANZDixEOU9L6Q2bCWs3dnGK5goK1j/9GWGBXzqZ1seQeYYTunZjuzPMaJM=@vger.kernel.org X-Gm-Message-State: AOJu0YxBy4rnEFM7hOiq23nUZLYggL2APYx+8CL2+bp7rxICrjp/FizZ EjYsYx6lYI9TlpbHudQ7JNSLU9aIxKkMB2x9F8doEkFaekL0E6byP4Tu X-Gm-Gg: Acq92OFEd0AV3iGj3MeQO107W3P7YP3szc6z6XmRmSfjbPFCn7ioCkpbYfZqrfspgNe AhpJhE2OvmaT/sE3esjD9cTghQ23cuqF83ZoiWRBSZE/zTtgKcuXMulYPfGXfkteeq2I1s9G/Xg /2/loouCDlPBIbuRfXCmledXZPnd3YbrZee0VjOp+roLNSanpc+l1CObYMkjuCunqBDU/6EREe9 20yIApigFeAV6JMDuGxUyrcU5+dAVVwHOkcKx6VAlibRhxZGXMgpNDKHzv86hOG3K8PWw0y6fRW ausrt6qhxfDU3oHbljuNzEQQOKQsgw7mJwRegSIhi//6F6hPAZc/N4D54SJaTxS1uzf7DauqoM3 1tZyQBm7FmeDPwX8TJewMMfCVsfcfwgs1yQgjvFDYLWfYDpSKVlkeCnxnin7nJlc6lbjaLF0kQe oZsZsBiJzGWV3+qScQwxcxKw2reUCcM6UPs8Hdrg84pKztPD/tBG7oEJI8Jm+B X-Received: by 2002:a05:7022:7a5:b0:137:6781:7dd4 with SMTP id a92af1059eb24-138066b5982mr4256600c88.8.1780758399496; Sat, 06 Jun 2026 08:06:39 -0700 (PDT) Received: from arch.localdomain ([2409:8a28:a54:e741:3a5a:3245:d3dc:4b5d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-137f5539035sm8415607c88.11.2026.06.06.08.06.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 08:06:39 -0700 (PDT) From: Jun Yan To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jun Yan , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 8/8] Input: cap11xx - add support for CAP1114 Date: Sat, 6 Jun 2026 23:04:01 +0800 Message-ID: <20260606150458.250606-9-jerrysteve1101@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260606150458.250606-1-jerrysteve1101@gmail.com> References: <20260606150458.250606-1-jerrysteve1101@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" CAP1114 is a 14-channel capacitive touch sensor with 11 LED outputs and hardware reset support. The CAP1114 uses two separate control registers for LED output management and requires two button status registers for touch input state reporting. By default, channels CS8~CS14 operate as a single grouped block. Set the corresponding register enable bit to enable these channels as independent touch inputs. Note these channels share the input threshold of the eighth entry, causing num_sensor_thresholds to differ from num_channels. Signed-off-by: Jun Yan --- drivers/input/keyboard/cap11xx.c | 65 +++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap1= 1xx.c index 408880cf6516..2aba3b508947 100644 --- a/drivers/input/keyboard/cap11xx.c +++ b/drivers/input/keyboard/cap11xx.c @@ -17,6 +17,12 @@ #include #include =20 +#define CAP1114_REG_BUTTON_STATUS1 0x03 +#define CAP1114_REG_BUTTON_STATUS2 0x04 +#define CAP1114_REG_CONFIG2 0x40 +#define CAP1114_REG_CONFIG2_VOL_UP_DOWN BIT(1) +#define CAP1114_REG_LED_OUTPUT_CONTROL1 0x73 + #define CAP11XX_REG_MAIN_CONTROL 0x00 #define CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT (6) #define CAP11XX_REG_MAIN_CONTROL_GAIN_MASK (0xc0) @@ -82,6 +88,7 @@ struct cap11xx_hw_model { unsigned int num_leds; unsigned int num_sensor_thresholds; bool has_gain; + bool has_grouped_sensors; bool has_irq_config; bool has_repeat_en; bool has_sensitivity_control; @@ -98,6 +105,9 @@ static const struct reg_default cap11xx_reg_defaults[] = =3D { { CAP11XX_REG_SENSOR_THRESH(3), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(4), 0x40 }, { CAP11XX_REG_SENSOR_THRESH(5), 0x40 }, + { CAP11XX_REG_SENSOR_THRESH(6), 0x40 }, + { CAP11XX_REG_SENSOR_THRESH(7), 0x40 }, + { CAP11XX_REG_SENSOR_THRESH(8), 0x40 }, { CAP11XX_REG_CONFIG2, 0x40 }, }; =20 @@ -106,6 +116,12 @@ static bool cap11xx_volatile_reg(struct device *dev, u= nsigned int reg) switch (reg) { case CAP11XX_REG_MAIN_CONTROL: case CAP11XX_REG_SENSOR_INPUT: + /* + * CAP1114_REG_BUTTON_STATUS1 (CAP11XX_REG_SENSOR_INPUT) and + * CAP1114_REG_BUTTON_STATUS2 is volatile for the CAP1114, + * which supports more than 8 touch channels. + */ + case CAP1114_REG_BUTTON_STATUS2: return true; } =20 @@ -283,6 +299,16 @@ static int cap11xx_init_keys(struct cap11xx_priv *priv) of_property_read_u32_array(node, "linux,keycodes", priv->keycodes, priv->model->num_channels); =20 + /* + * CAP1114 needs dedicated configuration to split grouped sensors into in= dependent inputs. + */ + if (priv->model->has_grouped_sensors) { + error =3D regmap_set_bits(priv->regmap, CAP1114_REG_CONFIG2, + CAP1114_REG_CONFIG2_VOL_UP_DOWN); + if (error) + return error; + } + if (priv->model->has_repeat_en) { /* Disable autorepeat. The Linux input system has its own handling. */ error =3D regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0); @@ -311,6 +337,20 @@ static irqreturn_t cap11xx_thread_func(int irq_num, vo= id *data) if (ret < 0) goto out; =20 + if (priv->model->num_channels > 8) { + unsigned int status2; + + ret =3D regmap_read(priv->regmap, priv->model->sensor_input_reg_base + 1= , &status2); + if (ret < 0) + goto out; + + /* + * CAP1114 STATUS1 register only contains data for the first 6 channels. + * the remaining channels is stored in STATUS2. + */ + status |=3D FIELD_PREP(GENMASK(13, 6), status2); + } + for (i =3D 0; i < priv->idev->keycodemax; i++) input_report_key(priv->idev, priv->keycodes[i], status & (1 << i)); @@ -360,7 +400,13 @@ static int cap11xx_led_set(struct led_classdev *cdev, * limitation. Brightness levels per LED are either * 0 (OFF) and 1 (ON). */ - return regmap_update_bits(priv->regmap, + if (led->reg >=3D 8) + return regmap_update_bits(priv->regmap, + priv->model->led_output_control_reg_base + 1, + BIT(led->reg - 8), + value ? BIT(led->reg - 8) : 0); + else + return regmap_update_bits(priv->regmap, priv->model->led_output_control_reg_base, BIT(led->reg), value ? BIT(led->reg) : 0); @@ -393,6 +439,13 @@ static int cap11xx_init_leds(struct device *dev, GENMASK(num_leds - 1, 0), 0); if (error) return error; + if (num_leds > 8) { + error =3D regmap_update_bits(priv->regmap, + priv->model->led_output_control_reg_base + 1, + GENMASK(num_leds - 8 - 1, 0), 0); + if (error) + return error; + } =20 duty_val =3D FIELD_PREP(CAP11XX_REG_LED_DUTY_MAX_MASK, CAP11XX_REG_LED_DUTY_MAX_VALUE); @@ -572,6 +625,14 @@ static const struct cap11xx_hw_model cap1106_model =3D= { .has_repeat_en =3D true, }; =20 +static const struct cap11xx_hw_model cap1114_model =3D { + .product_id =3D 0x3a, + .led_output_control_reg_base =3D CAP1114_REG_LED_OUTPUT_CONTROL1, + .sensor_input_reg_base =3D CAP1114_REG_BUTTON_STATUS1, + .num_channels =3D 14, .num_leds =3D 11, .num_sensor_thresholds =3D 8, + .has_grouped_sensors =3D true, +}; + static const struct cap11xx_hw_model cap1126_model =3D { .product_id =3D 0x53, .led_output_control_reg_base =3D CAP11XX_REG_LED_OUTPUT_CONTROL, @@ -628,6 +689,7 @@ static const struct cap11xx_hw_model cap1298_model =3D { =20 static const struct of_device_id cap11xx_dt_ids[] =3D { { .compatible =3D "microchip,cap1106", .data =3D &cap1106_model }, + { .compatible =3D "microchip,cap1114", .data =3D &cap1114_model }, { .compatible =3D "microchip,cap1126", .data =3D &cap1126_model }, { .compatible =3D "microchip,cap1188", .data =3D &cap1188_model }, { .compatible =3D "microchip,cap1203", .data =3D &cap1203_model }, @@ -640,6 +702,7 @@ MODULE_DEVICE_TABLE(of, cap11xx_dt_ids); =20 static const struct i2c_device_id cap11xx_i2c_ids[] =3D { { .name =3D "cap1106", .driver_data =3D (kernel_ulong_t)&cap1106_model }, + { .name =3D "cap1114", .driver_data =3D (kernel_ulong_t)&cap1114_model }, { .name =3D "cap1126", .driver_data =3D (kernel_ulong_t)&cap1126_model }, { .name =3D "cap1188", .driver_data =3D (kernel_ulong_t)&cap1188_model }, { .name =3D "cap1203", .driver_data =3D (kernel_ulong_t)&cap1203_model }, --=20 2.54.0