* [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
@ 2025-12-05 10:16 Rudraksha Gupta via B4 Relay
2025-12-06 2:18 ` Dmitry Baryshkov
2025-12-08 16:35 ` Konrad Dybcio
0 siblings, 2 replies; 11+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-12-05 10:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Rudraksha Gupta
From: Rudraksha Gupta <guptarud@gmail.com>
Add the tc360 touchkey. It's unknown if this is the actual model of the
touchkey, as downstream doesn't mention a variant, but this works.
Link:
https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
---
Add the tc360 touchkey. It's unknown if this is the actual model of the
touchkey, as downstream doesn't mention a variant, but this works.
Link:
https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
Test:
=============
- LEDs:
samsung-expressatt:/sys/class/leds/tm2-touchkey$ echo heartbeat > trigger
// Flashes LEDs :)
- Touching buttons:
samsung-expressatt:/sys/class/leds/tm2-touchkey$ evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0: pmic8xxx_pwrkey
/dev/input/event1: gpio-keys
/dev/input/event2: tm2-touchkey
/dev/input/event3: Atmel maXTouch Touchscreen
Select the device event number [0-3]: 2
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "tm2-touchkey"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 139 (KEY_MENU)
Event code 158 (KEY_BACK)
Event type 4 (EV_MSC)
Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
Event: time 1761059686.899755, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00
Event: time 1761059686.899755, type 1 (EV_KEY), code 139 (KEY_MENU), value 1
Event: time 1761059686.899755, -------------- SYN_REPORT ------------
Event: time 1761059687.113489, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00
Event: time 1761059687.113489, type 1 (EV_KEY), code 139 (KEY_MENU), value 0
Event: time 1761059687.113489, -------------- SYN_REPORT ------------
Event: time 1761059688.764757, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1761059688.764757, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
Event: time 1761059688.764757, -------------- SYN_REPORT ------------
Event: time 1761059688.817516, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1761059688.817516, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
Event: time 1761059688.817516, -------------- SYN_REPORT ------------
---
.../dts/qcom/qcom-msm8960-samsung-expressatt.dts | 55 ++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
index 5a39abd6f3ce..c4b98af6955d 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
@@ -52,6 +52,41 @@ key-volume-down {
linux,code = <KEY_VOLUMEDOWN>;
};
};
+
+ touchkey_enable: touchkey-enable {
+ compatible = "regulator-fixed";
+ regulator-name = "touchkey_enable";
+ gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-boot-on;
+ };
+
+ i2c-gpio-touchkey {
+ compatible = "i2c-gpio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ sda-gpios = <&tlmm 71 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ scl-gpios = <&tlmm 72 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&touchkey_i2c_pins>;
+ status = "okay";
+ i2c-gpio,delay-us = <2>;
+
+ touchkey@20 {
+ compatible = "coreriver,tc360-touchkey";
+ reg = <0x20>;
+
+ interrupts-extended = <&tlmm 52 IRQ_TYPE_EDGE_FALLING>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&touchkey_irq_pin>;
+
+ vddio-supply = <&touchkey_enable>;
+ vdd-supply = <&pm8921_l29>;
+ vcc-supply = <&pm8921_l29>;
+
+ linux,keycodes = <KEY_MENU KEY_BACK>;
+ };
+ };
};
&gsbi2 {
@@ -198,6 +233,20 @@ firmware-pins {
bias-disable;
};
};
+
+ touchkey_i2c_pins: touchkey-i2c-state {
+ pins = "gpio71", "gpio72";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ touchkey_irq_pin: touchkey-irq-state {
+ pins = "gpio52";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
};
&pm8921 {
@@ -420,6 +469,12 @@ pm8921_l25: l25 {
bias-pull-down;
};
+ pm8921_l29: l29 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ bias-pull-down;
+ };
+
/* Low Voltage Switch */
pm8921_lvs1: lvs1 {
bias-pull-down;
---
base-commit: 0ccd3ddf45c93ab06c9b1a9d266dcab1e52bf3d2
change-id: 20251205-expressatt-touchkey-1747c503a2f3
prerequisite-change-id: 20251119-expressatt_nfc_accel_magn_light-f78e02897186:v4
prerequisite-patch-id: 6fdd0efa5eda512b442b885df80774d1a7037df7
prerequisite-patch-id: 12d296f83ccb1bdfb8d06a72e476bf51ae5f4e6c
prerequisite-patch-id: a970acf2080143f41ae0935dd2c57bb71f5bf338
prerequisite-patch-id: fd25fef58503c5e5cf742e79b124948c7f6b98d9
prerequisite-patch-id: 966ae746687ebf8eb29c6185a8909b047e70dbb1
prerequisite-patch-id: 68603a680b24921759425fc289e61fc4435e5ccd
Best regards,
--
Rudraksha Gupta <guptarud@gmail.com>
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-05 10:16 [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey Rudraksha Gupta via B4 Relay
@ 2025-12-06 2:18 ` Dmitry Baryshkov
2025-12-06 3:54 ` Rudraksha Gupta
2025-12-08 16:35 ` Konrad Dybcio
1 sibling, 1 reply; 11+ messages in thread
From: Dmitry Baryshkov @ 2025-12-06 2:18 UTC (permalink / raw)
To: guptarud
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Fri, Dec 05, 2025 at 02:16:45AM -0800, Rudraksha Gupta via B4 Relay wrote:
> From: Rudraksha Gupta <guptarud@gmail.com>
>
> Add the tc360 touchkey. It's unknown if this is the actual model of the
> touchkey, as downstream doesn't mention a variant, but this works.
>
> Link:
> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
>
> Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
> ---
> Add the tc360 touchkey. It's unknown if this is the actual model of the
> touchkey, as downstream doesn't mention a variant, but this works.
>
> Link:
> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
>
> Test:
> =============
> - LEDs:
> samsung-expressatt:/sys/class/leds/tm2-touchkey$ echo heartbeat > trigger
> // Flashes LEDs :)
>
> - Touching buttons:
> samsung-expressatt:/sys/class/leds/tm2-touchkey$ evtest
> No device specified, trying to scan all of /dev/input/event*
> Not running as root, no devices may be available.
> Available devices:
> /dev/input/event0: pmic8xxx_pwrkey
> /dev/input/event1: gpio-keys
> /dev/input/event2: tm2-touchkey
> /dev/input/event3: Atmel maXTouch Touchscreen
> Select the device event number [0-3]: 2
> Input driver version is 1.0.1
> Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
> Input device name: "tm2-touchkey"
> Supported events:
> Event type 0 (EV_SYN)
> Event type 1 (EV_KEY)
> Event code 139 (KEY_MENU)
> Event code 158 (KEY_BACK)
> Event type 4 (EV_MSC)
> Event code 4 (MSC_SCAN)
> Properties:
> Testing ... (interrupt to exit)
> Event: time 1761059686.899755, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00
> Event: time 1761059686.899755, type 1 (EV_KEY), code 139 (KEY_MENU), value 1
> Event: time 1761059686.899755, -------------- SYN_REPORT ------------
> Event: time 1761059687.113489, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00
> Event: time 1761059687.113489, type 1 (EV_KEY), code 139 (KEY_MENU), value 0
> Event: time 1761059687.113489, -------------- SYN_REPORT ------------
> Event: time 1761059688.764757, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
> Event: time 1761059688.764757, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
> Event: time 1761059688.764757, -------------- SYN_REPORT ------------
> Event: time 1761059688.817516, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
> Event: time 1761059688.817516, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
> Event: time 1761059688.817516, -------------- SYN_REPORT ------------
> ---
> .../dts/qcom/qcom-msm8960-samsung-expressatt.dts | 55 ++++++++++++++++++++++
> 1 file changed, 55 insertions(+)
>
> diff --git a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
> index 5a39abd6f3ce..c4b98af6955d 100644
> --- a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
> +++ b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
> @@ -52,6 +52,41 @@ key-volume-down {
> linux,code = <KEY_VOLUMEDOWN>;
> };
> };
> +
> + touchkey_enable: touchkey-enable {
> + compatible = "regulator-fixed";
> + regulator-name = "touchkey_enable";
> + gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + regulator-boot-on;
> + };
> +
> + i2c-gpio-touchkey {
> + compatible = "i2c-gpio";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + sda-gpios = <&tlmm 71 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> + scl-gpios = <&tlmm 72 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
I don't have docs at hand, but it looks like these pins belong to
GSBI10. Have you tried using it directly?
> + pinctrl-names = "default";
> + pinctrl-0 = <&touchkey_i2c_pins>;
> + status = "okay";
> + i2c-gpio,delay-us = <2>;
> +
> + touchkey@20 {
> + compatible = "coreriver,tc360-touchkey";
> + reg = <0x20>;
> +
> + interrupts-extended = <&tlmm 52 IRQ_TYPE_EDGE_FALLING>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&touchkey_irq_pin>;
> +
> + vddio-supply = <&touchkey_enable>;
> + vdd-supply = <&pm8921_l29>;
> + vcc-supply = <&pm8921_l29>;
> +
> + linux,keycodes = <KEY_MENU KEY_BACK>;
> + };
> + };
> };
>
> &gsbi2 {
> @@ -198,6 +233,20 @@ firmware-pins {
> bias-disable;
> };
> };
> +
> + touchkey_i2c_pins: touchkey-i2c-state {
> + pins = "gpio71", "gpio72";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + touchkey_irq_pin: touchkey-irq-state {
> + pins = "gpio52";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> };
>
> &pm8921 {
> @@ -420,6 +469,12 @@ pm8921_l25: l25 {
> bias-pull-down;
> };
>
> + pm8921_l29: l29 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> + bias-pull-down;
> + };
> +
> /* Low Voltage Switch */
> pm8921_lvs1: lvs1 {
> bias-pull-down;
>
> ---
> base-commit: 0ccd3ddf45c93ab06c9b1a9d266dcab1e52bf3d2
> change-id: 20251205-expressatt-touchkey-1747c503a2f3
> prerequisite-change-id: 20251119-expressatt_nfc_accel_magn_light-f78e02897186:v4
> prerequisite-patch-id: 6fdd0efa5eda512b442b885df80774d1a7037df7
> prerequisite-patch-id: 12d296f83ccb1bdfb8d06a72e476bf51ae5f4e6c
> prerequisite-patch-id: a970acf2080143f41ae0935dd2c57bb71f5bf338
> prerequisite-patch-id: fd25fef58503c5e5cf742e79b124948c7f6b98d9
> prerequisite-patch-id: 966ae746687ebf8eb29c6185a8909b047e70dbb1
> prerequisite-patch-id: 68603a680b24921759425fc289e61fc4435e5ccd
>
> Best regards,
> --
> Rudraksha Gupta <guptarud@gmail.com>
>
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-06 2:18 ` Dmitry Baryshkov
@ 2025-12-06 3:54 ` Rudraksha Gupta
2025-12-06 4:01 ` Dmitry Baryshkov
0 siblings, 1 reply; 11+ messages in thread
From: Rudraksha Gupta @ 2025-12-06 3:54 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
>> + sda-gpios = <&tlmm 71 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>> + scl-gpios = <&tlmm 72 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> I don't have docs at hand, but it looks like these pins belong to
> GSBI10. Have you tried using it directly?
This is the log when I use GSBI10:
samsung-expressatt:~$ dmesg | grep tm2
[ 79.555802] input: tm2-touchkey as
/devices/platform/soc/1a200000.gsbi/1a280000.i2c/i2c-4/4-0020/input/input3
[ 110.242881] leds tm2-touchkey: Setting an LED's brightness failed (-110)
[ 167.074920] tm2-touchkey 4-0020: failed to read i2c data: -110
[ 182.435009] tm2-touchkey 4-0020: failed to read i2c data: -110
I could be doing something wrong, so here are the changes I made on top
of this diff
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
index c4b98af6955d..fde5f739a314 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
@@ -60,33 +60,6 @@ touchkey_enable: touchkey-enable {
enable-active-high;
regulator-boot-on;
};
-
- i2c-gpio-touchkey {
- compatible = "i2c-gpio";
- #address-cells = <1>;
- #size-cells = <0>;
- sda-gpios = <&tlmm 71 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- scl-gpios = <&tlmm 72 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- pinctrl-names = "default";
- pinctrl-0 = <&touchkey_i2c_pins>;
- status = "okay";
- i2c-gpio,delay-us = <2>;
-
- touchkey@20 {
- compatible = "coreriver,tc360-touchkey";
- reg = <0x20>;
-
- interrupts-extended = <&tlmm 52 IRQ_TYPE_EDGE_FALLING>;
- pinctrl-names = "default";
- pinctrl-0 = <&touchkey_irq_pin>;
-
- vddio-supply = <&touchkey_enable>;
- vdd-supply = <&pm8921_l29>;
- vcc-supply = <&pm8921_l29>;
-
- linux,keycodes = <KEY_MENU KEY_BACK>;
- };
- };
};
&gsbi2 {
@@ -572,3 +545,28 @@ magnetometer@2e {
/* TODO: Figure out Mount Matrix */
};
};
+
+&gsbi10 {
+ qcom,mode = <GSBI_PROT_I2C>;
+
+ status = "okay";
+};
+
+&gsbi10_i2c {
+ status = "okay";
+
+ touchkey@20 {
+ compatible = "coreriver,tc360-touchkey";
+ reg = <0x20>;
+
+ interrupts-extended = <&tlmm 52 IRQ_TYPE_EDGE_FALLING>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&touchkey_irq_pin>;
+
+ vddio-supply = <&touchkey_enable>;
+ vdd-supply = <&pm8921_l29>;
+ vcc-supply = <&pm8921_l29>;
+
+ linux,keycodes = <KEY_MENU KEY_BACK>;
+ };
+};
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
b/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
index fd28401cebb5..c598fb324e7d 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
@@ -223,7 +223,7 @@ i2c8-pins {
i2c10_default_state: i2c10-default-state {
i2c10-pins {
- pins = "gpio73", "gpio74";
+ pins = "gpio71", "gpio72";
function = "gsbi10";
drive-strength = <8>;
bias-disable;
@@ -232,7 +232,7 @@ i2c10-pins {
i2c10_sleep_state: i2c10-sleep-state {
i2c10-pins {
- pins = "gpio73", "gpio74";
+ pins = "gpio71", "gpio72";
function = "gpio";
drive-strength = <2>;
bias-bus-hold;
diff --git a/arch/arm/configs/qcom_defconfig
b/arch/arm/configs/qcom_defconfig
index 29a1dea500f0..49baa91937ca 100644
--- a/arch/arm/configs/qcom_defconfig
+++ b/arch/arm/configs/qcom_defconfig
@@ -321,3 +321,4 @@ CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
# CONFIG_SLUB_DEBUG is not set
# CONFIG_SCHED_DEBUG is not set
+CONFIG_KEYBOARD_TM2_TOUCHKEY=m
\ No newline at end of file
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-06 3:54 ` Rudraksha Gupta
@ 2025-12-06 4:01 ` Dmitry Baryshkov
0 siblings, 0 replies; 11+ messages in thread
From: Dmitry Baryshkov @ 2025-12-06 4:01 UTC (permalink / raw)
To: Rudraksha Gupta
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Fri, Dec 05, 2025 at 07:54:55PM -0800, Rudraksha Gupta wrote:
> > > + sda-gpios = <&tlmm 71 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> > > + scl-gpios = <&tlmm 72 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> > I don't have docs at hand, but it looks like these pins belong to
> > GSBI10. Have you tried using it directly?
>
> This is the log when I use GSBI10:
>
> samsung-expressatt:~$ dmesg | grep tm2
> [ 79.555802] input: tm2-touchkey as
> /devices/platform/soc/1a200000.gsbi/1a280000.i2c/i2c-4/4-0020/input/input3
> [ 110.242881] leds tm2-touchkey: Setting an LED's brightness failed (-110)
> [ 167.074920] tm2-touchkey 4-0020: failed to read i2c data: -110
> [ 182.435009] tm2-touchkey 4-0020: failed to read i2c data: -110
>
> I could be doing something wrong, so here are the changes I made on top of
> this diff
I see, GSBI 10 uses pins 72 / 73 for I2C. Then this your patch is indeed
correct.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-05 10:16 [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey Rudraksha Gupta via B4 Relay
2025-12-06 2:18 ` Dmitry Baryshkov
@ 2025-12-08 16:35 ` Konrad Dybcio
2025-12-09 7:10 ` Rudraksha Gupta
1 sibling, 1 reply; 11+ messages in thread
From: Konrad Dybcio @ 2025-12-08 16:35 UTC (permalink / raw)
To: guptarud, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 12/5/25 11:16 AM, Rudraksha Gupta via B4 Relay wrote:
> From: Rudraksha Gupta <guptarud@gmail.com>
>
> Add the tc360 touchkey. It's unknown if this is the actual model of the
> touchkey, as downstream doesn't mention a variant, but this works.
>
> Link:
> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
>
> Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
> ---
> Add the tc360 touchkey. It's unknown if this is the actual model of the
> touchkey, as downstream doesn't mention a variant, but this works.
>
> Link:
> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
This driver mentions a register called CYPRESS_MODULE_VER - maybe
it could help confirm the model?
Konrad
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-08 16:35 ` Konrad Dybcio
@ 2025-12-09 7:10 ` Rudraksha Gupta
2025-12-16 12:59 ` Konrad Dybcio
0 siblings, 1 reply; 11+ messages in thread
From: Rudraksha Gupta @ 2025-12-09 7:10 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, beomho.seo, jcsing.lee
>> Add the tc360 touchkey. It's unknown if this is the actual model of the
>> touchkey, as downstream doesn't mention a variant, but this works.
>>
>> Link:
>> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
> This driver mentions a register called CYPRESS_MODULE_VER - maybe
> it could help confirm the model?
>
> Konrad
Here are the changes that Claude made to the tm2-touchkey driver, which
seems to do what you asked and matches downstream (I have never written
a driver before, so please free to provide corrections if necessary):
diff --git a/drivers/input/keyboard/tm2-touchkey.c
b/drivers/input/keyboard/tm2-touchkey.c
index 55d699d9037d..d1f435dc6b05 100644
--- a/drivers/input/keyboard/tm2-touchkey.c
+++ b/drivers/input/keyboard/tm2-touchkey.c
@@ -33,6 +33,9 @@
#define TM2_TOUCHKEY_LED_VOLTAGE_MIN 2500000
#define TM2_TOUCHKEY_LED_VOLTAGE_MAX 3300000
+#define CYPRESS_FW_VER 0x01
+#define CYPRESS_MODULE_VER 0x02
+
struct touchkey_variant {
u8 keycode_reg;
u8 base_reg;
@@ -180,6 +183,53 @@ static irqreturn_t tm2_touchkey_irq_handler(int
irq, void *devid)
return IRQ_HANDLED;
}
+static ssize_t module_version_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct i2c_client *client = to_i2c_client(dev);
+ struct tm2_touchkey_data *touchkey = i2c_get_clientdata(client);
+ int module_ver;
+
+ if (touchkey->variant->no_reg) {
+ /* Aries variant doesn't support register reads */
+ return sysfs_emit(buf, "unknown\n");
+ }
+
+ module_ver = i2c_smbus_read_byte_data(touchkey->client,
CYPRESS_MODULE_VER);
+ if (module_ver < 0)
+ return module_ver;
+
+ return sysfs_emit(buf, "0x%02x\n", module_ver);
+}
+static DEVICE_ATTR_RO(module_version);
+
+static ssize_t fw_version_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct i2c_client *client = to_i2c_client(dev);
+ struct tm2_touchkey_data *touchkey = i2c_get_clientdata(client);
+ int fw_ver;
+
+ if (touchkey->variant->no_reg) {
+ /* Aries variant doesn't support register reads */
+ return sysfs_emit(buf, "unknown\n");
+ }
+
+ fw_ver = i2c_smbus_read_byte_data(touchkey->client, CYPRESS_FW_VER);
+ if (fw_ver < 0)
+ return fw_ver;
+
+ return sysfs_emit(buf, "0x%02x\n", fw_ver);
+}
+static DEVICE_ATTR_RO(fw_version);
+
+static struct attribute *tm2_touchkey_attrs[] = {
+ &dev_attr_module_version.attr,
+ &dev_attr_fw_version.attr,
+ NULL
+};
+ATTRIBUTE_GROUPS(tm2_touchkey);
+
static int tm2_touchkey_probe(struct i2c_client *client)
{
struct device_node *np = client->dev.of_node;
@@ -354,6 +404,7 @@ static struct i2c_driver tm2_touchkey_driver = {
.name = TM2_TOUCHKEY_DEV_NAME,
.pm = pm_sleep_ptr(&tm2_touchkey_pm_ops),
.of_match_table = tm2_touchkey_of_match,
+ .dev_groups = tm2_touchkey_groups,
},
.probe = tm2_touchkey_probe,
.id_table = tm2_touchkey_id_table,
When run on mainline, this is what was outputted:
samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/module_version
0x06
samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/fw_version
0x09
fw_version matches downstream ClockworkMod Recovery dmesg:
~ # dmesg | grep "FW Ver"
<3>[ 2.201312] cypress_touchkey 16-0020: Touchkey FW Version: 0x09
<3>[ 2.206317] cypress_touchkey 16-0020: Touchkey FW Version: 0x09,
system_rev: 8
Unfortunately, I'm not to sure what the other variant versions are, so I
will CC the driver's maintainers:
MODULE_AUTHOR("Beomho Seo <beomho.seo@samsung.com>");
MODULE_AUTHOR("Jaechul Lee <jcsing.lee@samsung.com>");
It also seems like I forgot to mention that this patch was assisted with
Claude and cleaned up by me. Will update the patch's description if I
need to send a v2.
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-09 7:10 ` Rudraksha Gupta
@ 2025-12-16 12:59 ` Konrad Dybcio
2026-02-20 4:33 ` Rudraksha Gupta
0 siblings, 1 reply; 11+ messages in thread
From: Konrad Dybcio @ 2025-12-16 12:59 UTC (permalink / raw)
To: Rudraksha Gupta, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, beomho.seo, jcsing.lee
On 12/9/25 8:10 AM, Rudraksha Gupta wrote:
>>> Add the tc360 touchkey. It's unknown if this is the actual model of the
>>> touchkey, as downstream doesn't mention a variant, but this works.
>>>
>>> Link:
>>> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
>> This driver mentions a register called CYPRESS_MODULE_VER - maybe
>> it could help confirm the model?
>>
>> Konrad
[...]
> When run on mainline, this is what was outputted:
>
> samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/module_version
> 0x06
> samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/fw_version
> 0x09
>
>
> fw_version matches downstream ClockworkMod Recovery dmesg:
>
> ~ # dmesg | grep "FW Ver"
> <3>[ 2.201312] cypress_touchkey 16-0020: Touchkey FW Version: 0x09
> <3>[ 2.206317] cypress_touchkey 16-0020: Touchkey FW Version: 0x09, system_rev: 8
>
>
> Unfortunately, I'm not to sure what the other variant versions are, so I will CC the driver's maintainers:
>
> MODULE_AUTHOR("Beomho Seo <beomho.seo@samsung.com>");
> MODULE_AUTHOR("Jaechul Lee <jcsing.lee@samsung.com>");
Sounds like the best idea, I have no clue either
Konrad
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2025-12-16 12:59 ` Konrad Dybcio
@ 2026-02-20 4:33 ` Rudraksha Gupta
2026-02-23 3:54 ` Dmitry Torokhov
0 siblings, 1 reply; 11+ messages in thread
From: Rudraksha Gupta @ 2026-02-20 4:33 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, beomho.seo, jcsing.lee,
dmitry.torokhov, linux-input, nick.reitemeyer
Hello all,
Top posting for once (context below).
Not too sure what the next steps are to get the tm2 touchkey in. Should
I resend the patch, contact someone else that can help provide guidance,
or something else?
Adding Dmitry Torokhov (official maintainer) and Nick Reitemeyer (person
who introduced this variant).
Thanks,
Rudraksha
On 12/16/25 04:59, Konrad Dybcio wrote:
> On 12/9/25 8:10 AM, Rudraksha Gupta wrote:
>>>> Add the tc360 touchkey. It's unknown if this is the actual model of the
>>>> touchkey, as downstream doesn't mention a variant, but this works.
>>>>
>>>> Link:
>>>> https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
>>> This driver mentions a register called CYPRESS_MODULE_VER - maybe
>>> it could help confirm the model?
>>>
>>> Konrad
> [...]
>
>> When run on mainline, this is what was outputted:
>>
>> samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/module_version
>> 0x06
>> samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/fw_version
>> 0x09
>>
>>
>> fw_version matches downstream ClockworkMod Recovery dmesg:
>>
>> ~ # dmesg | grep "FW Ver"
>> <3>[ 2.201312] cypress_touchkey 16-0020: Touchkey FW Version: 0x09
>> <3>[ 2.206317] cypress_touchkey 16-0020: Touchkey FW Version: 0x09, system_rev: 8
>>
>>
>> Unfortunately, I'm not to sure what the other variant versions are, so I will CC the driver's maintainers:
>>
>> MODULE_AUTHOR("Beomho Seo <beomho.seo@samsung.com>");
>> MODULE_AUTHOR("Jaechul Lee <jcsing.lee@samsung.com>");
> Sounds like the best idea, I have no clue either
>
> Konrad
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2026-02-20 4:33 ` Rudraksha Gupta
@ 2026-02-23 3:54 ` Dmitry Torokhov
2026-02-24 1:00 ` Rudraksha Gupta
0 siblings, 1 reply; 11+ messages in thread
From: Dmitry Torokhov @ 2026-02-23 3:54 UTC (permalink / raw)
To: Rudraksha Gupta
Cc: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
linux-kernel, beomho.seo, jcsing.lee, linux-input,
nick.reitemeyer
Hi Rudraksha,
On Thu, Feb 19, 2026 at 08:33:43PM -0800, Rudraksha Gupta wrote:
> Hello all,
>
>
> Top posting for once (context below).
>
> Not too sure what the next steps are to get the tm2 touchkey in. Should I
> resend the patch, contact someone else that can help provide guidance, or
> something else?
>
>
> Adding Dmitry Torokhov (official maintainer) and Nick Reitemeyer (person who
> introduced this variant).
Sorry, I am not sure what the question is... It seems that you made the
driver work without any additional changes?
>
>
> Thanks,
>
> Rudraksha
>
>
> On 12/16/25 04:59, Konrad Dybcio wrote:
> > On 12/9/25 8:10 AM, Rudraksha Gupta wrote:
> > > > > Add the tc360 touchkey. It's unknown if this is the actual model of the
> > > > > touchkey, as downstream doesn't mention a variant, but this works.
> > > > >
> > > > > Link:
> > > > > https://github.com/LineageOS/android_kernel_samsung_d2/blob/stable/cm-12.0-YNG4N/drivers/input/keyboard/cypress_touchkey_236/Makefile#L5
> > > > This driver mentions a register called CYPRESS_MODULE_VER - maybe
> > > > it could help confirm the model?
> > > >
> > > > Konrad
> > [...]
> >
> > > When run on mainline, this is what was outputted:
> > >
> > > samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/module_version
> > > 0x06
> > > samsung-expressatt:~$ cat /sys/bus/i2c/devices/0-0020/fw_version
> > > 0x09
> > >
> > >
> > > fw_version matches downstream ClockworkMod Recovery dmesg:
> > >
> > > ~ # dmesg | grep "FW Ver"
> > > <3>[ 2.201312] cypress_touchkey 16-0020: Touchkey FW Version: 0x09
> > > <3>[ 2.206317] cypress_touchkey 16-0020: Touchkey FW Version: 0x09, system_rev: 8
> > >
> > >
> > > Unfortunately, I'm not to sure what the other variant versions are, so I will CC the driver's maintainers:
> > >
> > > MODULE_AUTHOR("Beomho Seo <beomho.seo@samsung.com>");
> > > MODULE_AUTHOR("Jaechul Lee <jcsing.lee@samsung.com>");
> > Sounds like the best idea, I have no clue either
> >
> > Konrad
> >
--
Dmitry
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2026-02-23 3:54 ` Dmitry Torokhov
@ 2026-02-24 1:00 ` Rudraksha Gupta
2026-02-24 11:28 ` Konrad Dybcio
0 siblings, 1 reply; 11+ messages in thread
From: Rudraksha Gupta @ 2026-02-24 1:00 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
linux-kernel, beomho.seo, jcsing.lee, linux-input,
nick.reitemeyer
On 2/22/26 19:54, Dmitry Torokhov wrote:
> Hi Rudraksha,
>
> On Thu, Feb 19, 2026 at 08:33:43PM -0800, Rudraksha Gupta wrote:
>> Hello all,
>>
>>
>> Top posting for once (context below).
>>
>> Not too sure what the next steps are to get the tm2 touchkey in. Should I
>> resend the patch, contact someone else that can help provide guidance, or
>> something else?
>>
>>
>> Adding Dmitry Torokhov (official maintainer) and Nick Reitemeyer (person who
>> introduced this variant).
> Sorry, I am not sure what the question is... It seems that you made the
> driver work without any additional changes?
I believe this patch is blocked on Konrad's comment:
> This driver mentions a register called CYPRESS_MODULE_VER - maybe
it could help confirm the model?
This was in response to me saying that the "coreriver,tc360-touchkey"
tm2 variant works as is on my device, but I can't tell for sure if this
is actually the variant that is on my device. There isn't really any
documentation for how this peripheral works and I was primarily relying
on others in this thread to provide details to confirm that this is the
actual variant being used.
If I'm mistaken that this is a blocker, please let me know.
Thanks,
Rudraksha
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey
2026-02-24 1:00 ` Rudraksha Gupta
@ 2026-02-24 11:28 ` Konrad Dybcio
0 siblings, 0 replies; 11+ messages in thread
From: Konrad Dybcio @ 2026-02-24 11:28 UTC (permalink / raw)
To: Rudraksha Gupta, Dmitry Torokhov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel, beomho.seo,
jcsing.lee, linux-input, nick.reitemeyer
On 2/24/26 2:00 AM, Rudraksha Gupta wrote:
>
> On 2/22/26 19:54, Dmitry Torokhov wrote:
>> Hi Rudraksha,
>>
>> On Thu, Feb 19, 2026 at 08:33:43PM -0800, Rudraksha Gupta wrote:
>>> Hello all,
>>>
>>>
>>> Top posting for once (context below).
>>>
>>> Not too sure what the next steps are to get the tm2 touchkey in. Should I
>>> resend the patch, contact someone else that can help provide guidance, or
>>> something else?
>>>
>>>
>>> Adding Dmitry Torokhov (official maintainer) and Nick Reitemeyer (person who
>>> introduced this variant).
>> Sorry, I am not sure what the question is... It seems that you made the
>> driver work without any additional changes?
>
> I believe this patch is blocked on Konrad's comment:
>
>> This driver mentions a register called CYPRESS_MODULE_VER - maybe
> it could help confirm the model?
>
>
> This was in response to me saying that the "coreriver,tc360-touchkey" tm2 variant works as is on my device, but I can't tell for sure if this is actually the variant that is on my device. There isn't really any documentation for how this peripheral works and I was primarily relying on others in this thread to provide details to confirm that this is the actual variant being used.
>
> If I'm mistaken that this is a blocker, please let me know.
That was a suggestion - if we're not able to find out, then we're not
able to find out!
Konrad
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-02-24 11:28 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-05 10:16 [PATCH] ARM: dts: qcom: msm8960: expressatt: Add coreriver,tc360-touchkey Rudraksha Gupta via B4 Relay
2025-12-06 2:18 ` Dmitry Baryshkov
2025-12-06 3:54 ` Rudraksha Gupta
2025-12-06 4:01 ` Dmitry Baryshkov
2025-12-08 16:35 ` Konrad Dybcio
2025-12-09 7:10 ` Rudraksha Gupta
2025-12-16 12:59 ` Konrad Dybcio
2026-02-20 4:33 ` Rudraksha Gupta
2026-02-23 3:54 ` Dmitry Torokhov
2026-02-24 1:00 ` Rudraksha Gupta
2026-02-24 11:28 ` Konrad Dybcio
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox