diff mbox series

arm64: dts: qcom: sc8280xp-crd: add support for volume-up key

Message ID 20250307171036.7276-1-johan+linaro@kernel.org
State New
Headers show
Series arm64: dts: qcom: sc8280xp-crd: add support for volume-up key | expand

Commit Message

Johan Hovold March 7, 2025, 5:10 p.m. UTC
Add support for the keypad volume-up key on the debug extension board.

This is useful to have when testing PMIC interrupt handling, and the key
can also be used to wake up from deep suspend states (CX shutdown).

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Comments

Konrad Dybcio March 8, 2025, 4:26 p.m. UTC | #1
On 7.03.2025 6:10 PM, Johan Hovold wrote:
> Add support for the keypad volume-up key on the debug extension board.
> 
> This is useful to have when testing PMIC interrupt handling, and the key
> can also be used to wake up from deep suspend states (CX shutdown).
> 
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>

I'm lukewarm about this since there is no "actual" button for that.
Does the power button not work here?

If systemd induces a shutdown, try setting

HandlePowerKey=ignore

in /etc/systemd/logind.conf

Konrad
Johan Hovold March 10, 2025, 12:18 p.m. UTC | #2
On Sat, Mar 08, 2025 at 05:26:26PM +0100, Konrad Dybcio wrote:
> On 7.03.2025 6:10 PM, Johan Hovold wrote:
> > Add support for the keypad volume-up key on the debug extension board.
> > 
> > This is useful to have when testing PMIC interrupt handling, and the key
> > can also be used to wake up from deep suspend states (CX shutdown).
> > 
> > Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
> 
> I'm lukewarm about this since there is no "actual" button for that.

There is certainly a physical button on the debug board. And the UEFI
firmware also supports it (e.g. it can be used in GRUB).

> Does the power button not work here?

For wake up, yes, but not for testing PMIC GPIO interrupts.

> If systemd induces a shutdown, try setting
> 
> HandlePowerKey=ignore
> 
> in /etc/systemd/logind.conf

I'm aware of that, but the volume key can be used without updating user
space (possibly also for CI testing if that signal can be controlled
remotely like the power button).

Johan
Konrad Dybcio March 11, 2025, 5:26 p.m. UTC | #3
On 3/10/25 1:18 PM, Johan Hovold wrote:
> On Sat, Mar 08, 2025 at 05:26:26PM +0100, Konrad Dybcio wrote:
>> On 7.03.2025 6:10 PM, Johan Hovold wrote:
>>> Add support for the keypad volume-up key on the debug extension board.
>>>
>>> This is useful to have when testing PMIC interrupt handling, and the key
>>> can also be used to wake up from deep suspend states (CX shutdown).
>>>
>>> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
>>
>> I'm lukewarm about this since there is no "actual" button for that.
> 
> There is certainly a physical button on the debug board. And the UEFI
> firmware also supports it (e.g. it can be used in GRUB).
> 
>> Does the power button not work here?
> 
> For wake up, yes, but not for testing PMIC GPIO interrupts.
> 
>> If systemd induces a shutdown, try setting
>>
>> HandlePowerKey=ignore
>>
>> in /etc/systemd/logind.conf
> 
> I'm aware of that, but the volume key can be used without updating user
> space (possibly also for CI testing if that signal can be controlled
> remotely like the power button).

Alright, I see

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Konrad
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
index 75adaa19d1c3..8badf7f49b95 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
@@ -37,6 +37,20 @@  chosen {
 		stdout-path = "serial0:115200n8";
 	};
 
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		pinctrl-0 = <&kypd_vol_up_n>;
+		pinctrl-names = "default";
+
+		key-vol-up {
+			label = "volume_up";
+			gpios = <&pmc8280_1_gpios 6 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_VOLUMEUP>;
+			wakeup-source;
+		};
+	};
+
 	pmic-glink {
 		compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
 
@@ -885,6 +899,14 @@  edp_bl_reg_en: edp-bl-reg-en-state {
 		function = "normal";
 	};
 
+	kypd_vol_up_n: kypd-vol-up-n-state {
+		pins = "gpio6";
+		function = "normal";
+		power-source = <0>; /* 3.3 V */
+		bias-pull-up;
+		input-enable;
+	};
+
 	misc_3p3_reg_en: misc-3p3-reg-en-state {
 		pins = "gpio2";
 		function = "normal";