Re: [PATCH] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: Add lid switch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Nice to see it finally working!

Tested-by: Maya Matuszczyk <maccraft123mc@xxxxxxxxx>

śr., 18 gru 2024 o 20:02 Anthony Ruhier <aruhier@xxxxxxxxxxx> napisał(a):
>
> 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@xxxxxxxxxxx>
> ---
>   .../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
>





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux