* [PATCH v7 1/3] Input: add ABS_SND_PROFILE
2025-10-14 9:20 [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider David Heidelberg via B4 Relay
@ 2025-10-14 9:20 ` David Heidelberg via B4 Relay
2025-10-27 17:08 ` Bjorn Andersson
2025-10-14 9:20 ` [PATCH v7 2/3] arm64: dts: qcom: sdm845-oneplus: Correct gpio used for slider David Heidelberg via B4 Relay
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-10-14 9:20 UTC (permalink / raw)
To: Dmitry Torokhov, Jonathan Corbet, Jiri Kosina, Benjamin Tissoires,
Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Casey Connolly, Guido Günther
Cc: linux-input, linux-doc, linux-kernel, linux-arm-msm, devicetree,
phone-devel, Gergo Koteles, David Heidelberg
From: Gergo Koteles <soyer@irl.hu>
ABS_SND_PROFILE used to describe the state of a multi-value sound profile
switch. This will be used for the alert-slider on OnePlus phones or other
phones.
Profile values added as SND_PROFLE_(SILENT|VIBRATE|RING) identifiers
to input-event-codes.h so they can be used from DTS.
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Signed-off-by: David Heidelberg <david@ixit.cz>
---
Documentation/input/event-codes.rst | 6 ++++++
drivers/hid/hid-debug.c | 1 +
include/uapi/linux/input-event-codes.h | 9 +++++++++
3 files changed, 16 insertions(+)
diff --git a/Documentation/input/event-codes.rst b/Documentation/input/event-codes.rst
index 1ead9bb8d9c64..e4f065dd5a1da 100644
--- a/Documentation/input/event-codes.rst
+++ b/Documentation/input/event-codes.rst
@@ -241,6 +241,12 @@ A few EV_ABS codes have special meanings:
emitted only when the selected profile changes, indicating the newly
selected profile value.
+* ABS_SND_PROFILE:
+
+ - Used to describe the state of a multi-value sound profile switch.
+ An event is emitted only when the selected profile changes,
+ indicating the newly selected profile value.
+
* ABS_MT_<name>:
- Used to describe multitouch input events. Please see
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index 7107071c7c516..c58500d8b94b5 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -3513,6 +3513,7 @@ static const char *absolutes[ABS_CNT] = {
[ABS_DISTANCE] = "Distance", [ABS_TILT_X] = "XTilt",
[ABS_TILT_Y] = "YTilt", [ABS_TOOL_WIDTH] = "ToolWidth",
[ABS_VOLUME] = "Volume", [ABS_PROFILE] = "Profile",
+ [ABS_SND_PROFILE] = "SoundProfile",
[ABS_MISC] = "Misc",
[ABS_MT_SLOT] = "MTSlot",
[ABS_MT_TOUCH_MAJOR] = "MTMajor",
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 4a9fbf42aa9fa..962168c661ccd 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -879,6 +879,7 @@
#define ABS_VOLUME 0x20
#define ABS_PROFILE 0x21
+#define ABS_SND_PROFILE 0x22
#define ABS_MISC 0x28
@@ -988,4 +989,12 @@
#define SND_MAX 0x07
#define SND_CNT (SND_MAX+1)
+/*
+ * ABS_SND_PROFILE values
+ */
+
+#define SND_PROFILE_SILENT 0x00
+#define SND_PROFILE_VIBRATE 0x01
+#define SND_PROFILE_RING 0x02
+
#endif
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v7 1/3] Input: add ABS_SND_PROFILE
2025-10-14 9:20 ` [PATCH v7 1/3] Input: add ABS_SND_PROFILE David Heidelberg via B4 Relay
@ 2025-10-27 17:08 ` Bjorn Andersson
0 siblings, 0 replies; 7+ messages in thread
From: Bjorn Andersson @ 2025-10-27 17:08 UTC (permalink / raw)
To: david
Cc: Dmitry Torokhov, Jonathan Corbet, Jiri Kosina, Benjamin Tissoires,
Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Casey Connolly, Guido Günther, linux-input, linux-doc,
linux-kernel, linux-arm-msm, devicetree, phone-devel,
Gergo Koteles
On Tue, Oct 14, 2025 at 11:20:33AM +0200, David Heidelberg via B4 Relay wrote:
> From: Gergo Koteles <soyer@irl.hu>
>
> ABS_SND_PROFILE used to describe the state of a multi-value sound profile
> switch. This will be used for the alert-slider on OnePlus phones or other
> phones.
>
> Profile values added as SND_PROFLE_(SILENT|VIBRATE|RING) identifiers
> to input-event-codes.h so they can be used from DTS.
>
> Signed-off-by: Gergo Koteles <soyer@irl.hu>
> Signed-off-by: David Heidelberg <david@ixit.cz>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Regards,
Bjorn
> ---
> Documentation/input/event-codes.rst | 6 ++++++
> drivers/hid/hid-debug.c | 1 +
> include/uapi/linux/input-event-codes.h | 9 +++++++++
> 3 files changed, 16 insertions(+)
>
> diff --git a/Documentation/input/event-codes.rst b/Documentation/input/event-codes.rst
> index 1ead9bb8d9c64..e4f065dd5a1da 100644
> --- a/Documentation/input/event-codes.rst
> +++ b/Documentation/input/event-codes.rst
> @@ -241,6 +241,12 @@ A few EV_ABS codes have special meanings:
> emitted only when the selected profile changes, indicating the newly
> selected profile value.
>
> +* ABS_SND_PROFILE:
> +
> + - Used to describe the state of a multi-value sound profile switch.
> + An event is emitted only when the selected profile changes,
> + indicating the newly selected profile value.
> +
> * ABS_MT_<name>:
>
> - Used to describe multitouch input events. Please see
> diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
> index 7107071c7c516..c58500d8b94b5 100644
> --- a/drivers/hid/hid-debug.c
> +++ b/drivers/hid/hid-debug.c
> @@ -3513,6 +3513,7 @@ static const char *absolutes[ABS_CNT] = {
> [ABS_DISTANCE] = "Distance", [ABS_TILT_X] = "XTilt",
> [ABS_TILT_Y] = "YTilt", [ABS_TOOL_WIDTH] = "ToolWidth",
> [ABS_VOLUME] = "Volume", [ABS_PROFILE] = "Profile",
> + [ABS_SND_PROFILE] = "SoundProfile",
> [ABS_MISC] = "Misc",
> [ABS_MT_SLOT] = "MTSlot",
> [ABS_MT_TOUCH_MAJOR] = "MTMajor",
> diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> index 4a9fbf42aa9fa..962168c661ccd 100644
> --- a/include/uapi/linux/input-event-codes.h
> +++ b/include/uapi/linux/input-event-codes.h
> @@ -879,6 +879,7 @@
>
> #define ABS_VOLUME 0x20
> #define ABS_PROFILE 0x21
> +#define ABS_SND_PROFILE 0x22
>
> #define ABS_MISC 0x28
>
> @@ -988,4 +989,12 @@
> #define SND_MAX 0x07
> #define SND_CNT (SND_MAX+1)
>
> +/*
> + * ABS_SND_PROFILE values
> + */
> +
> +#define SND_PROFILE_SILENT 0x00
> +#define SND_PROFILE_VIBRATE 0x01
> +#define SND_PROFILE_RING 0x02
> +
> #endif
>
> --
> 2.51.0
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v7 2/3] arm64: dts: qcom: sdm845-oneplus: Correct gpio used for slider
2025-10-14 9:20 [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider David Heidelberg via B4 Relay
2025-10-14 9:20 ` [PATCH v7 1/3] Input: add ABS_SND_PROFILE David Heidelberg via B4 Relay
@ 2025-10-14 9:20 ` David Heidelberg via B4 Relay
2025-10-14 9:22 ` Konrad Dybcio
2025-10-14 9:20 ` [PATCH v7 3/3] arm64: dts: qcom: sdm845-oneplus: Add alert-slider David Heidelberg via B4 Relay
2025-10-27 9:57 ` [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider Guido Günther
3 siblings, 1 reply; 7+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-10-14 9:20 UTC (permalink / raw)
To: Dmitry Torokhov, Jonathan Corbet, Jiri Kosina, Benjamin Tissoires,
Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Casey Connolly, Guido Günther
Cc: linux-input, linux-doc, linux-kernel, linux-arm-msm, devicetree,
phone-devel, Gergo Koteles, David Heidelberg
From: Gergo Koteles <soyer@irl.hu>
The previous GPIO numbers were wrong. Update them to the correct
ones and fix the label.
Fixes: 288ef8a42612 ("arm64: dts: sdm845: add oneplus6/6t devices")
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Signed-off-by: David Heidelberg <david@ixit.cz>
---
arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
index dcfffb271fcf3..51a9a276399ac 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
@@ -803,8 +803,8 @@ hall_sensor_default: hall-sensor-default-state {
bias-disable;
};
- tri_state_key_default: tri-state-key-default-state {
- pins = "gpio40", "gpio42", "gpio26";
+ alert_slider_default: alert-slider-default-state {
+ pins = "gpio126", "gpio52", "gpio24";
function = "gpio";
drive-strength = <2>;
bias-disable;
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v7 2/3] arm64: dts: qcom: sdm845-oneplus: Correct gpio used for slider
2025-10-14 9:20 ` [PATCH v7 2/3] arm64: dts: qcom: sdm845-oneplus: Correct gpio used for slider David Heidelberg via B4 Relay
@ 2025-10-14 9:22 ` Konrad Dybcio
0 siblings, 0 replies; 7+ messages in thread
From: Konrad Dybcio @ 2025-10-14 9:22 UTC (permalink / raw)
To: david, Dmitry Torokhov, Jonathan Corbet, Jiri Kosina,
Benjamin Tissoires, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Casey Connolly,
Guido Günther
Cc: linux-input, linux-doc, linux-kernel, linux-arm-msm, devicetree,
phone-devel, Gergo Koteles
On 10/14/25 11:20 AM, David Heidelberg via B4 Relay wrote:
> From: Gergo Koteles <soyer@irl.hu>
>
> The previous GPIO numbers were wrong. Update them to the correct
> ones and fix the label.
>
> Fixes: 288ef8a42612 ("arm64: dts: sdm845: add oneplus6/6t devices")
> Signed-off-by: Gergo Koteles <soyer@irl.hu>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v7 3/3] arm64: dts: qcom: sdm845-oneplus: Add alert-slider
2025-10-14 9:20 [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider David Heidelberg via B4 Relay
2025-10-14 9:20 ` [PATCH v7 1/3] Input: add ABS_SND_PROFILE David Heidelberg via B4 Relay
2025-10-14 9:20 ` [PATCH v7 2/3] arm64: dts: qcom: sdm845-oneplus: Correct gpio used for slider David Heidelberg via B4 Relay
@ 2025-10-14 9:20 ` David Heidelberg via B4 Relay
2025-10-27 9:57 ` [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider Guido Günther
3 siblings, 0 replies; 7+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-10-14 9:20 UTC (permalink / raw)
To: Dmitry Torokhov, Jonathan Corbet, Jiri Kosina, Benjamin Tissoires,
Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Casey Connolly, Guido Günther
Cc: linux-input, linux-doc, linux-kernel, linux-arm-msm, devicetree,
phone-devel, Gergo Koteles, Casey Connolly, David Heidelberg,
Konrad Dybcio
From: Gergo Koteles <soyer@irl.hu>
The alert-slider is a tri-state sound profile switch found on the
OnePlus 6, Android maps the states to "silent", "vibrate" and "ring".
Expose them as ABS_SND_PROFILE events.
The previous GPIO numbers were wrong. Update them to the correct ones.
Co-developed-by: Casey Connolly <casey@connolly.tech>
Signed-off-by: Casey Connolly <casey@connolly.tech>
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: David Heidelberg <david@ixit.cz>
---
.../arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
index 51a9a276399ac..98f5e4c8237a0 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
@@ -25,6 +25,41 @@ / {
chassis-type = "handset";
qcom,msm-id = <QCOM_ID_SDM845 0x20001>;
+ alert-slider {
+ compatible = "gpio-keys";
+ label = "Alert slider";
+
+ pinctrl-0 = <&alert_slider_default>;
+ pinctrl-names = "default";
+
+ switch-top {
+ label = "Silent";
+ linux,input-type = <EV_ABS>;
+ linux,code = <ABS_SND_PROFILE>;
+ linux,input-value = <SND_PROFILE_SILENT>;
+ gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
+ linux,can-disable;
+ };
+
+ switch-middle {
+ label = "Vibrate";
+ linux,input-type = <EV_ABS>;
+ linux,code = <ABS_SND_PROFILE>;
+ linux,input-value = <SND_PROFILE_VIBRATE>;
+ gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
+ linux,can-disable;
+ };
+
+ switch-bottom {
+ label = "Ring";
+ linux,input-type = <EV_ABS>;
+ linux,code = <ABS_SND_PROFILE>;
+ linux,input-value = <SND_PROFILE_RING>;
+ gpios = <&tlmm 24 GPIO_ACTIVE_LOW>;
+ linux,can-disable;
+ };
+ };
+
aliases {
serial0 = &uart9;
serial1 = &uart6;
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider
2025-10-14 9:20 [PATCH v7 0/3] Add support for sound profile switching and leverage for OnePlus slider David Heidelberg via B4 Relay
` (2 preceding siblings ...)
2025-10-14 9:20 ` [PATCH v7 3/3] arm64: dts: qcom: sdm845-oneplus: Add alert-slider David Heidelberg via B4 Relay
@ 2025-10-27 9:57 ` Guido Günther
3 siblings, 0 replies; 7+ messages in thread
From: Guido Günther @ 2025-10-27 9:57 UTC (permalink / raw)
To: david
Cc: Dmitry Torokhov, Jonathan Corbet, Jiri Kosina, Benjamin Tissoires,
Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Casey Connolly, linux-input, linux-doc,
linux-kernel, linux-arm-msm, devicetree, phone-devel,
Gergo Koteles, Casey Connolly
Hi,
On Tue, Oct 14, 2025 at 11:20:32AM +0200, David Heidelberg via B4 Relay wrote:
> This series add initial support for OnePlus 6 and 6T, but other OnePlus
> phones contains same mechanism to switch sound profiles.
>
> This code was tested for two years within the downstream Snapdragon 845 tree.
> It is now perfectly integrated with feedbackd in the Phosh environment.
>
> The series is also available (until merged) at
> git@gitlab.com:dhxx/linux.git b4/op6-tri-state
>
> Changes in v7:
> - Separated GPIO number fix from the original commit
> "arm64: dts: qcom: sdm845-oneplus: Add alert-slider"
> - Rebased again next-20251008
> - Link to v6: https://lore.kernel.org/r/20250731-op6-tri-state-v6-0-569c25cbc8c2@ixit.cz
>
> Changes in v6:
> - Rebased again next-20250731, otherwise just a resent.
> - Link to v5: https://lore.kernel.org/r/20250419-op6-tri-state-v5-0-443127078517@ixit.cz
>
> Changes in v5:
> - Dropped merged
> "Input: gpio-keys - add support for linux,input-value DTS property"
> - Link to v4: https://lore.kernel.org/all/cover.1677022414.git.soyer@irl.hu/
>
> Changes in v4:
> - DTS: use default debounce-interval, order alphabetically
> - Link to v3: https://lore.kernel.org/lkml/cover.1676850819.git.soyer@irl.hu/
>
> Changes in v3:
> - rename tri-state-key to alert-slider, fix DTS warnings,
>
> Changes in v2:
> - rebase to qcom/for-next
> add SND_PROFILE_* identifiers to input-event-codes.h
>
> ---
> Gergo Koteles (3):
> Input: add ABS_SND_PROFILE
> arm64: dts: qcom: sdm845-oneplus: Correct gpio used for slider
> arm64: dts: qcom: sdm845-oneplus: Add alert-slider
feedbackd has support for this since 0.5.0 so it would be nice to see
that mainlined.
Tested-by: Guido Günther <agx@sigxcpu.org> # oneplus,fajita & oneplus,enchilada
Reviewed-by: Guido Günther <agx@sigxcpu.org>
Cheers,
-- Guido
>
> Documentation/input/event-codes.rst | 6 ++++
> .../arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi | 39 ++++++++++++++++++++--
> drivers/hid/hid-debug.c | 1 +
> include/uapi/linux/input-event-codes.h | 9 +++++
> 4 files changed, 53 insertions(+), 2 deletions(-)
> ---
> base-commit: 52ba76324a9d7c39830c850999210a36ef023cde
> change-id: 20250419-op6-tri-state-ed1a05a11125
>
> Best regards,
> --
> David Heidelberg <david@ixit.cz>
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread