[PATCH 2/7] ARM: dts: exynos: Add GPIO keys support for k3g

Markuss Broks markuss.broks at gmail.com
Sun Jul 16 15:05:03 PDT 2023


Add the four physical buttons support, volume buttons have
external pull-up resistors.

Signed-off-by: Markuss Broks <markuss.broks at gmail.com>
---
 arch/arm/boot/dts/exynos5422-samsung-k3g.dts | 60 ++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5422-samsung-k3g.dts b/arch/arm/boot/dts/exynos5422-samsung-k3g.dts
index 1a11a6993ba7..c3e006dc34ea 100644
--- a/arch/arm/boot/dts/exynos5422-samsung-k3g.dts
+++ b/arch/arm/boot/dts/exynos5422-samsung-k3g.dts
@@ -8,6 +8,7 @@
 /dts-v1/;
 #include <dt-bindings/clock/samsung,s2mps11.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include "exynos5800.dtsi"
 #include "exynos5422-cpus.dtsi"
@@ -21,6 +22,45 @@ / {
 
 	aliases {
 		mmc0 = &mmc_0;
+		mmc1 = &mmc_1;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&power_gpio &volume_up_gpio &volume_down_gpio &home_gpio>;
+
+		key-volume-up {
+			label = "Volume Up";
+			gpios = <&gpx0 2 GPIO_ACTIVE_LOW>;
+			linux,input-type = <1>;
+			linux,code = <KEY_VOLUMEUP>;
+			debounce-interval = <15>;
+		};
+
+		key-volume-down {
+			label = "Volume Down";
+			gpios = <&gpx0 3 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_VOLUMEDOWN>;
+			debounce-interval = <15>;
+		};
+
+		key-home {
+			label = "Home";
+			gpios = <&gpx0 5 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_HOMEPAGE>;
+			wakeup-source;
+			debounce-interval = <15>;
+		};
+
+		key-power {
+			label = "Power";
+			gpios = <&gpx2 2 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_POWER>;
+			wakeup-source;
+			debounce-interval = <15>;
+		};
 	};
 
 	memory at 20000000 {
@@ -641,6 +681,21 @@ &mmc_1 {
 };
 
 &pinctrl_0 {
+	volume_up_gpio: volume-up-pins {
+		samsung,pins = "gpx0-2";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; /* External pull up */
+	};
+
+	volume_down_gpio: volume-down-pins {
+		samsung,pins = "gpx0-3";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; /* External pull up */
+	};
+
+	home_gpio: home-key-pins {
+		samsung,pins = "gpx0-5";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+	};
+
 	s2mps11_irq: s2mps11-irq-pins {
 		samsung,pins = "gpx0-7";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
@@ -653,6 +708,11 @@ touch_irq: touch-irq-pins {
 		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
 	};
 
+	power_gpio: power-key-pins {
+		samsung,pins = "gpx2-2";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+	};
+
 	wlan_reset: wlan-reset {
 		samsung,pins = "gpy7-7";
 		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
-- 
2.41.0




More information about the linux-arm-kernel mailing list