On Wed, Nov 13, 2024 at 04:11:51PM +0100, Barnabás Czémán wrote: > Add initial support for Xiaomi Redmi 5A (riva). > > Signed-off-by: Barnabás Czémán <barnabas.czeman@xxxxxxxxxxxxxx> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > arch/arm64/boot/dts/qcom/msm8917-xiaomi-riva.dts | 297 +++++++++++++++++++++++ > 2 files changed, 298 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 9bb8b191aeb517e8f1e3a11bca98a3d0c39c5398..7562406843cfd82397c4844d14a22e8bcf4bba74 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -62,6 +62,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86518.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86528.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801v3.dtb > +dtb-$(CONFIG_ARCH_QCOM) += msm8917-xiaomi-riva.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8929-wingtech-wt82918hd.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8939-huawei-kiwi.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8939-longcheer-l9100.dtb > diff --git a/arch/arm64/boot/dts/qcom/msm8917-xiaomi-riva.dts b/arch/arm64/boot/dts/qcom/msm8917-xiaomi-riva.dts > new file mode 100644 > index 0000000000000000000000000000000000000000..81bb76f1773252be2f60777acf93d51d01981f86 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/msm8917-xiaomi-riva.dts > @@ -0,0 +1,297 @@ > [...] > + gpio-keys { > + compatible = "gpio-keys"; > + > + key-volup { > + label = "Volume Up"; > + linux,code = <KEY_VOLUMEUP>; > + gpios = <&tlmm 91 GPIO_ACTIVE_LOW>; It's good practice to > + debounce-interval = <15>; > + }; > + }; > [...] > +&blsp1_i2c3 { > + status = "okay"; > + > + touchscreen@38 { > + compatible = "edt,edt-ft5306"; > + reg = <0x38>; > + interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>; add pinctrl > + reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>; for all > + vcc-supply = <&pm8937_l10>; > + iovcc-supply = <&pm8937_l5>; > + > + touchscreen-size-x = <720>; > + touchscreen-size-y = <1280>; > + }; > +}; > + > +&blsp2_i2c1 { > + status = "okay"; > + > + bq27426@55 { > + compatible = "ti,bq27426"; > + reg = <0x55>; > + monitored-battery = <&battery>; > + }; > + > + bq25601@6b{ > + compatible = "ti,bq25601"; > + reg = <0x6b>; > + monitored-battery = <&battery>; > + > + interrupt-parent = <&tlmm>; > + interrupts = <61 IRQ_TYPE_EDGE_FALLING>; GPIOs/pins > + > + input-voltage-limit-microvolt = <4400000>; > + input-current-limit-microamp = <1000000>; > + }; > +}; > [...] > +&sdhc_2 { > + cd-gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; that you use. :-) Usually it can be something simple like function=gpio, bias-disable, drive-strength = <2>, etc, plenty of examples exist upstream. Check downstream or schematics (if you have them). Ideally you would check what the peripheral requires. E.g. for SD card the GPIO usually has external pull-up, so bias-pull-up would be redundant and one can just use bias-disable: pinctrl-0 = <&sdc2_default &sdc2_cd_default>; pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>; pinctrl-names = "default", "sleep"; &tlmm { sdc2_cd_default: sdc2-cd-default-state { pins = "gpio67"; function = "gpio"; drive-strength = <2>; bias-disable; }; }; > + vmmc-supply = <&pm8937_l11>; > + vqmmc-supply = <&pm8937_l12>; > + > + status = "okay"; > +}; > + > [...] > +&rpm_requests { > + regulators-0 { > + compatible = "qcom,rpm-pm8937-regulators"; > + > [...] > + pm8937_l11: l11 { > + regulator-min-microvolt = <2950000>; > + regulator-max-microvolt = <2950000>; > + }; You usually need/want regulator-allow-set-load and regulator-system-load for the SD card regulator to avoid issues with certain SD cards/operations, see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=af61bef513ba179559e56908b8c465e587bc3890 Thanks, Stephan