/dts-v1/;
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 
 #include "x1e80100.dtsi"
                stdout-path = "serial0:115200n8";
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_int_n_default>;
+               pinctrl-names = "default";
+
+               switch-lid {
+                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       wakeup-source;
+                       wakeup-event-action = <EV_ACT_DEASSERTED>;
+               };
+       };
+
        pmic-glink {
                compatible = "qcom,x1e80100-pmic-glink",
                             "qcom,sm8550-pmic-glink",
                bias-disable;
        };
 
+       hall_int_n_default: hall-int-n-state {
+               lid-n-pins {
+                       pins = "gpio92";
+                       function = "gpio";
+                       bias-disable;
+               };
+
+               /*
+                * Pins 71 and 92 seem to be bridged together (pin 71 and 92 show the same
+                * events). By default, pin 71 is set as output-high, which blocks any
+                * event on pin 92. Output-disable on pin 71 is necessary to get events on
+                * pin 92.
+                * The purpose of pin 71 is not yet known; lid-pull is a supposition.
+                */
+               lid-pull-n-pins {
+                       pins = "gpio71";
+                       function = "gpio";
+                       bias-pull-up;
+                       output-disable;
+               };
+       };
+
        kybd_default: kybd-default-state {
                pins = "gpio67";
                function = "gpio";