Message ID | 20241219-patch-lenovo-yoga-v2-1-4932aefcb9c8@mailbox.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: Add lid switch | expand |
On 19/12/2024 16:49, Anthony Ruhier via B4 Relay wrote: > From: Anthony Ruhier <aruhier@mailbox.org> > > 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 > GPIO 92 | 0xf15c000 | in | func0 | lo | no pull | 2 mA > > Signed-off-by: Anthony Ruhier <aruhier@mailbox.org> > --- > Changes in v2: > - Fixes patch format. > > Tested-by: Maya Matuszczyk <maccraft123mc@gmail.com> Something is not right here. You cannot add tags in changelog section. Please use b4 to collect the tags. > --- > .../boot/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 ca5a808f2c7df66a861a933df407fd4bdaea3fe1..311202aa9015a30f1d70108bb214d427f811dc3b 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 { Oddly placed, 'g' goes after 'c'. Please keep proper order (see DTS coding style). = Best regards, Krzysztof
On 19.12.2024 4:49 PM, Anthony Ruhier via B4 Relay wrote: > From: Anthony Ruhier <aruhier@mailbox.org> > > 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 > GPIO 92 | 0xf15c000 | in | func0 | lo | no pull | 2 mA > > Signed-off-by: Anthony Ruhier <aruhier@mailbox.org> > --- > Changes in v2: > - Fixes patch format. > > Tested-by: Maya Matuszczyk <maccraft123mc@gmail.com> > --- > .../boot/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 ca5a808f2c7df66a861a933df407fd4bdaea3fe1..311202aa9015a30f1d70108bb214d427f811dc3b 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 { If no better sorting key is present (such as base register), we tend to sort the nodes alphabetically, so this one would go between chosen and pmic-glink With that: Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> (you can use `b4 trailers -u` to pull tags automagically) Konrad
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 ca5a808f2c7df66a861a933df407fd4bdaea3fe1..311202aa9015a30f1d70108bb214d427f811dc3b 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";