diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
index 763ecd79d7923f96cd203929691dc6bc3e435986..92f70a048aaa218ff016d316aa8c4ca0d6ca0826 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
@@ -5,6 +5,7 @@
  */
 
 /dts-v1/;
+#include <dt-bindings/input/gpio-keys.h>
 #include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/pwm/pwm.h>
 #include <dt-bindings/usb/pd.h>
@@ -80,10 +81,12 @@ drm_logo: drm-logo@00000000 {
 		};
 	};
 
-	gpio-keys {
+	/* Use separate nodes for gpio-keys to enable selective deactivation of
+	   wakeup sources without disabling the whole key */
+	gpio-key-power {
 		compatible = "gpio-keys";
 		pinctrl-names = "default";
-		pinctrl-0 = <&pwrbtn &lidbtn>;
+		pinctrl-0 = <&pwrbtn>;
 
 		power {
 			debounce-interval = <20>;
@@ -92,6 +95,12 @@ power {
 			linux,code = <KEY_POWER>;
 			wakeup-source;
 		};
+	};
+
+	gpio-key-lid {
+		compatible = "gpio-keys";
+		pinctrl-names = "default";
+		pinctrl-0 = <&lidbtn>;
 
 		lid {
 			debounce-interval = <20>;
@@ -99,6 +108,7 @@ lid {
 			label = "Lid";
 			linux,code = <SW_LID>;
 			linux,input-type = <EV_SW>;
+			wakeup-event-action = <EV_ACT_DEASSERTED>;
 			wakeup-source;
 		};
 	};