lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cae52ea6-e86a-4b86-af06-01a8a93d2ca0@mailbox.org>
Date: Wed, 18 Dec 2024 20:01:45 +0100
From: Anthony Ruhier <aruhier@...lbox.org>
To: andersson@...nel.org, konradybcio@...nel.org
Cc: robh@...nel.org, krzk+dt@...nel.org, conor+dt@...nel.org,
 linux-arm-msm@...r.kernel.org, devicetree@...r.kernel.org,
 linux-kernel@...r.kernel.org
Subject: [PATCH] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: Add lid switch

Add the lid switch for the Lenovo Yoga Slim 7x.

Other x1e80100 laptops use the GPIO pin 92 only, however on the Yoga
Slim 7x this pin seems to be bridged with the pin 71. By default, the
pin 71 is set as output-high, which blocks any event on pin 92.

This patch sets the pin 71 as output-disable and sets the LID switch on
pin 92. This is aligned with how they're configured on Windows:
     GPIO  71 | 0xf147000 | in | func0 | hi | pull up   | 16 mA | 
ctl=0x000001c3 io=0x00000003
     GPIO  92 | 0xf15c000 | in | func0 | lo | no pull   |  2 mA | 
ctl=0x00000000 io=0x00000001

Signed-off-by: Anthony Ruhier <aruhier@...lbox.org>
---
  .../dts/qcom/x1e80100-lenovo-yoga-slim7x.dts  | 38 +++++++++++++++++++
  1 file changed, 38 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts 
b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
index ca5a808f2c7d..311202aa9015 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
@@ -6,6 +6,7 @@
  /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"
@@ -19,6 +20,21 @@ aliases {
  		serial0 = &uart21;
  	};

+	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>;
+		};
+	};
+
  	chosen {
  		stdout-path = "serial0:115200n8";
  	};
@@ -811,6 +827,28 @@ edp_reg_en: edp-reg-en-state {
  		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";
--
2.47.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ