* [PATCH 0/2] Introduce support for Xiaomi Mi 8
@ 2026-08-09 16:48 David Heidelberg via B4 Relay
2026-08-09 16:48 ` [PATCH 1/2] dt-bindings: arm: qcom: Add Xiaomi Mi 8 family compatibles David Heidelberg via B4 Relay
2026-08-09 16:48 ` [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper) David Heidelberg via B4 Relay
0 siblings, 2 replies; 9+ messages in thread
From: David Heidelberg via B4 Relay @ 2026-08-09 16:48 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel, David Heidelberg
Currently only Mi 8 itself is supported, but the
sdm845-xiaomi-dipper-common should ensure, that other family members
such as Mi 8 Pro, Mi 8 Explorer will be likely supported too without
much of additional work. These variants should differ only in the small
details (such as battery size, fingerprint sensor etc.).
Minimal viable support for xiaomi-dipper. Enough to get basic u-boot and
Linux functional. More improvements will follow.
The display and touchscreen support are work-in-progress, but waiting
for other bits to land.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
David Heidelberg (2):
dt-bindings: arm: qcom: Add Xiaomi Mi 8 family compatibles
arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
Documentation/devicetree/bindings/arm/qcom.yaml | 10 +
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sdm845-xiaomi-dipper-common.dtsi | 623 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper.dts | 30 +
4 files changed, 664 insertions(+)
---
base-commit: 95d6a9ccef99117115e41e9adb271243bd5e985b
change-id: 20260720-dipper-8fd3f1e475bc
Best regards,
--
David Heidelberg <david@ixit.cz>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] dt-bindings: arm: qcom: Add Xiaomi Mi 8 family compatibles
2026-08-09 16:48 [PATCH 0/2] Introduce support for Xiaomi Mi 8 David Heidelberg via B4 Relay
@ 2026-08-09 16:48 ` David Heidelberg via B4 Relay
2026-08-09 16:48 ` [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper) David Heidelberg via B4 Relay
1 sibling, 0 replies; 9+ messages in thread
From: David Heidelberg via B4 Relay @ 2026-08-09 16:48 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
This smartphone codenamed dipper is now supported by this series,
variants such as ursa and equuleus just documented.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index c7c9a92796846..5a43d480fd999 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -944,16 +944,25 @@ properties:
- const: qcom,sdm670
- items:
- enum:
- google,bonito-tianma
- const: google,bonito
- const: qcom,sdm670
+ - description: Xiaomi Mi 8 family
+ items:
+ - enum:
+ - xiaomi,dipper
+ - xiaomi,equuleus
+ - xiaomi,ursa
+ - const: xiaomi,dipper-common
+ - const: qcom,sdm845
+
- description: Xiaomi Poco F1
items:
- enum:
- xiaomi,beryllium-ebbg
- xiaomi,beryllium-tianma
- const: xiaomi,beryllium
- const: qcom,sdm845
@@ -970,16 +979,17 @@ properties:
- qcom,sdm845-mtp
- shift,axolotl
- samsung,starqltechn
- samsung,w737
- sony,akari-row
- sony,akatsuki-row
- sony,apollo-row
- thundercomm,db845c
+ - xiaomi,dipper
- xiaomi,polaris
- const: qcom,sdm845
- items:
- enum:
- qcom,shikra-cqm-evk
- const: qcom,shikra-cqm-som
- const: qcom,shikra
--
2.55.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-09 16:48 [PATCH 0/2] Introduce support for Xiaomi Mi 8 David Heidelberg via B4 Relay
2026-08-09 16:48 ` [PATCH 1/2] dt-bindings: arm: qcom: Add Xiaomi Mi 8 family compatibles David Heidelberg via B4 Relay
@ 2026-08-09 16:48 ` David Heidelberg via B4 Relay
2026-08-18 9:27 ` Konrad Dybcio
2026-08-18 9:27 ` Konrad Dybcio
1 sibling, 2 replies; 9+ messages in thread
From: David Heidelberg via B4 Relay @ 2026-08-09 16:48 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
Initial submission for one member of the prime Xiaomi Mi 8 family.
Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
Known differences are battery capacity and fingerprint sensor placement.
This submission includes basic abstraction for other developers to be
able easily extend it to support other variants.
What does work: framebuffer, USB, UFS, Bluetooth, Wi-Fi.
Based on work of multiple people trying to bring the device in the past.
Last attempt was done by Max Furman.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sdm845-xiaomi-dipper-common.dtsi | 623 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper.dts | 30 +
3 files changed, 654 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index e05414290d8e5..80b57774281b8 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -324,16 +324,17 @@ dtb-$(CONFIG_ARCH_QCOM) += sdm845-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-oneplus-enchilada.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-oneplus-fajita.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-samsung-starqltechn.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-sony-xperia-tama-akari.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-sony-xperia-tama-akatsuki.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-sony-xperia-tama-apollo.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-xiaomi-beryllium-ebbg.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-xiaomi-beryllium-tianma.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sdm845-xiaomi-dipper.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-xiaomi-polaris.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-shift-axolotl.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm850-huawei-matebook-e-2019.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm850-lenovo-yoga-c630.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm850-samsung-w737.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb
diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper-common.dtsi
new file mode 100644
index 0000000000000..f461fab994dac
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper-common.dtsi
@@ -0,0 +1,623 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Xiaomi Mi 8 family common device tree source.
+ * Covers Mi 8 Explorer Edition (equuleus), Mi 8 (dipper), Mi 8 Pro (urza).
+ *
+ * Copyright David Heidelberg. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/firmware/qcom,scm.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/phy/phy-qcom-qusb2.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sdm845.dtsi"
+#include "pm8998.dtsi"
+#include "pmi8998.dtsi"
+
+/delete-node/ &adsp_mem;
+/delete-node/ &cdsp_mem;
+/delete-node/ &mba_region;
+/delete-node/ &mpss_region;
+/delete-node/ &rmtfs_mem;
+/delete-node/ &slpi_mem;
+/delete-node/ &spss_mem;
+/delete-node/ &tz_mem;
+/delete-node/ &venus_mem;
+/delete-node/ &wlan_msa_mem;
+
+/ {
+ chassis-type = "handset";
+
+ qcom,msm-id = <QCOM_ID_SDM845 0x20001>;
+
+ aliases {
+ serial0 = &uart9;
+ serial1 = &uart6;
+ };
+
+ chosen {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ framebuffer {
+ compatible = "simple-framebuffer";
+ memory-region = <&cont_splash_mem>;
+
+ vci-supply = <&vreg_panel_vci>;
+ vddio-supply = <&vreg_panel_vddio>;
+
+ width = <1080>;
+ height = <2248>;
+ stride = <(1080 * 4)>;
+ format = "a8r8g8b8";
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ autorepeat;
+
+ pinctrl-0 = <&volume_up_gpio>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
+ wakeup-source;
+ debounce-interval = <15>;
+ };
+ };
+
+ vreg_panel_vci: regulator-panel-vci {
+ compatible = "regulator-fixed";
+ regulator-name = "panel_vci_vreg";
+
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+
+ gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <4000>;
+ regulator-boot-on;
+ };
+
+ vreg_panel_vddio: regulator-panel-vddio {
+ compatible = "regulator-fixed";
+ regulator-name = "panel_vddio_vreg";
+
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <4000>;
+ regulator-boot-on;
+ };
+
+ reserved-memory {
+ adsp_mem: memory@8c500000 {
+ reg = <0 0x8c500000 0 0x1e00000>;
+ no-map;
+ };
+
+ cont_splash_mem: memory@9d400000 {
+ reg = <0 0x9d400000 0 0x950000>;
+ no-map;
+ };
+
+ wlan_msa_mem: memory@8e300000 {
+ reg = <0 0x8e300000 0 0x100000>;
+ no-map;
+ };
+
+ mpss_region: memory@8e400000 {
+ reg = <0 0x8e400000 0 0x7800000>;
+ no-map;
+ };
+
+ venus_mem: memory@95c00000 {
+ reg = <0 0x95c00000 0 0x500000>;
+ no-map;
+ };
+
+ cdsp_mem: memory@96100000 {
+ reg = <0 0x96100000 0 0x800000>;
+ no-map;
+ };
+
+ mba_region: memory@96900000 {
+ reg = <0 0x96900000 0 0x200000>;
+ no-map;
+ };
+
+ slpi_mem: memory@96b00000 {
+ reg = <0 0x96b00000 0 0x1400000>;
+ no-map;
+ };
+
+ spss_mem: memory@97f00000 {
+ reg = <0 0x97f00000 0 0x100000>;
+ no-map;
+ };
+
+ rmtfs_mem: memory@f7300000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0 0xf7300000 0 0x202000>;
+ qcom,use-guard-pages;
+ no-map;
+
+ qcom,client-id = <1>;
+ qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
+ };
+
+ /* bootloader reserves this range for its own use. */
+ memory@88f00000 {
+ reg = <0 0x88f00000 0 0x200000>;
+ no-map;
+ };
+
+ ramoops@b0000000 {
+ compatible = "ramoops";
+ reg = <0 0xb0000000 0 0x00400000>;
+ record-size = <0x40000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x40000>;
+ pmsg-size = <0x200000>;
+ };
+
+ linux,cma {
+ compatible = "shared-dma-pool";
+ alloc-ranges = <0 0x00000000 0 0xffffffff>;
+ reusable;
+ alignment = <0 0x400000>;
+ size = <0 0x2c00000>;
+ linux,cma-default;
+ };
+ };
+
+ vph_pwr: regulator-vph-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+
+ regulator-min-microvolt = <3700000>;
+ regulator-max-microvolt = <3700000>;
+ };
+
+ vreg_s4a_1p8: vreg-s4a-1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_s4a_1p8";
+
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ regulator-boot-on;
+
+ vin-supply = <&vph_pwr>;
+ };
+
+ wcn3990-pmu {
+ compatible = "qcom,wcn3990-pmu";
+
+ pinctrl-0 = <&sw_ctrl_default>;
+ pinctrl-names = "default";
+
+ vddio-supply = <&vreg_s4a_1p8>;
+ vddxo-supply = <&vreg_l7a_1p8>;
+ vddrf-supply = <&vreg_l17a_1p3>;
+ vddch0-supply = <&vreg_l25a_3p3>;
+ vddch1-supply = <&vreg_l23a_3p3>;
+
+ swctrl-gpios = <&pm8998_gpios 3 GPIO_ACTIVE_HIGH>;
+
+ regulators {
+ vreg_pmu_io: ldo0 {
+ regulator-name = "vreg_pmu_io";
+ };
+
+ vreg_pmu_xo: ldo1 {
+ regulator-name = "vreg_pmu_xo";
+ };
+
+ vreg_pmu_rf: ldo2 {
+ regulator-name = "vreg_pmu_rf";
+ };
+
+ vreg_pmu_ch0: ldo3 {
+ regulator-name = "vreg_pmu_ch0";
+ };
+
+ vreg_pmu_ch1: ldo4 {
+ regulator-name = "vreg_pmu_ch1";
+ };
+ };
+ };
+};
+
+&adsp_pas {
+ firmware-name = "qcom/sdm845/Xiaomi/dipper/adsp.mbn";
+
+ status = "okay";
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8998-rpmh-regulators";
+ qcom,pmic-id = "a";
+
+ vdd-s1-supply = <&vph_pwr>;
+ vdd-s2-supply = <&vph_pwr>;
+ vdd-s3-supply = <&vph_pwr>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+ vdd-s6-supply = <&vph_pwr>;
+ vdd-s7-supply = <&vph_pwr>;
+ vdd-s8-supply = <&vph_pwr>;
+ vdd-s9-supply = <&vph_pwr>;
+ vdd-s10-supply = <&vph_pwr>;
+ vdd-s11-supply = <&vph_pwr>;
+ vdd-s12-supply = <&vph_pwr>;
+ vdd-s13-supply = <&vph_pwr>;
+ vdd-l1-l27-supply = <&vreg_s7a_1p025>;
+ vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
+ vdd-l3-l11-supply = <&vreg_s7a_1p025>;
+ vdd-l4-l5-supply = <&vreg_s7a_1p025>;
+ vdd-l6-supply = <&vph_pwr>;
+ vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
+ vdd-l9-supply = <&vreg_bob>;
+ vdd-l10-l23-l25-supply = <&vreg_bob>;
+ vdd-l13-l19-l21-supply = <&vreg_bob>;
+ vdd-l16-l28-supply = <&vreg_bob>;
+ vdd-l18-l22-supply = <&vreg_bob>;
+ vdd-l20-l24-supply = <&vreg_bob>;
+ vdd-l26-supply = <&vreg_s3a_1p35>;
+ vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
+
+ vreg_s2a_1p125: smps2 {
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ };
+
+ vreg_s3a_1p35: smps3 {
+ regulator-min-microvolt = <1352000>;
+ regulator-max-microvolt = <1352000>;
+ };
+
+ vreg_s5a_2p04: smps5 {
+ regulator-min-microvolt = <1904000>;
+ regulator-max-microvolt = <2040000>;
+ };
+
+ vreg_s7a_1p025: smps7 {
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <1028000>;
+ };
+
+ vreg_l1a_0p875: ldo1 {
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2a_1p2: ldo2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-always-on;
+ };
+
+ vreg_l5a_0p8: ldo5 {
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7a_1p8: ldo7 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12a_1p8: ldo12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14a_1p8: ldo14 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vreg_l17a_1p3: ldo17 {
+ regulator-min-microvolt = <1304000>;
+ regulator-max-microvolt = <1304000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l20a_2p95: ldo20 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l22a_2p864: ldo22 {
+ regulator-min-microvolt = <2864000>;
+ regulator-max-microvolt = <2864000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l23a_3p3: ldo23 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3312000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l24a_3p075: ldo24 {
+ regulator-min-microvolt = <3088000>;
+ regulator-max-microvolt = <3088000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l25a_3p3: ldo25 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3312000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l26a_1p2: ldo26 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-boot-on;
+ };
+
+ vreg_l28a_3p3: ldo28 {
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_lvs1_1p8: lvs1 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pmi8998-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob-supply = <&vph_pwr>;
+
+ vreg_bob: bob {
+ regulator-min-microvolt = <3312000>;
+ regulator-max-microvolt = <3600000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
+ regulator-allow-bypass;
+ };
+ };
+};
+
+&dispcc {
+ /* Disable for now so simple-framebuffer continues working */
+ status = "disabled";
+};
+
+&gcc {
+ protected-clocks = <GCC_QSPI_CORE_CLK>,
+ <GCC_QSPI_CORE_CLK_SRC>,
+ <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
+ <GCC_LPASS_Q6_AXI_CLK>,
+ <GCC_LPASS_SWAY_CLK>;
+};
+
+&gpi_dma0 {
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sdm845/Xiaomi/dipper/a630_zap.mbn";
+};
+
+&ibb {
+ regulator-min-microvolt = <4600000>;
+ regulator-max-microvolt = <6000000>;
+ regulator-over-current-protection;
+ regulator-pull-down;
+ regulator-soft-start;
+};
+
+&ipa {
+ firmware-name = "qcom/sdm845/Xiaomi/dipper/ipa_fws.mbn";
+
+ status = "okay";
+};
+
+&lab {
+ regulator-min-microvolt = <4600000>;
+ regulator-max-microvolt = <6000000>;
+ regulator-pull-down;
+ regulator-soft-start;
+};
+
+&mdss {
+ /* Disable for now so simple-framebuffer continues working */
+ status = "disabled";
+};
+
+&mss_pil {
+ firmware-name = "qcom/sdm845/Xiaomi/dipper/mba.mbn",
+ "qcom/sdm845/Xiaomi/dipper/modem.mbn";
+
+ status = "okay";
+};
+
+&pmi8998_charger {
+ monitored-battery = <&battery>;
+
+ status = "okay";
+};
+
+&pm8998_gpios {
+ sw_ctrl_default: sw-ctrl-default-state {
+ pins = "gpio3";
+ function = "normal";
+ input-enable;
+ bias-pull-down;
+ };
+
+ volume_up_gpio: vol-up-active-state {
+ pins = "gpio6";
+ function = "normal";
+ input-enable;
+ bias-pull-up;
+ power-source = <0>;
+ };
+};
+
+&pm8998_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&qup_uart9_rx {
+ drive-strength = <2>;
+ bias-pull-up;
+};
+
+&qup_uart9_tx {
+ drive-strength = <2>;
+ bias-disable;
+};
+
+&i2c5 {
+ status = "okay";
+
+ /* tas2557 @4c */
+};
+
+&i2c14 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ /* stmfts5 @49 */
+};
+
+&tlmm {
+ gpio-reserved-ranges = < 0 4>, /* SPI (Goodix Fingerprint) */
+ <81 4>; /* SPI (Synaptics Fingerprint) */
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
+
+ vcc-supply = <&vreg_l20a_2p95>;
+ vcc-max-microamp = <600000>;
+ vccq2-supply = <&vreg_s4a_1p8>;
+ vccq2-max-microamp = <600000>;
+
+ status = "okay";
+
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1a_0p875>;
+ vdda-pll-supply = <&vreg_l26a_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ qcom,select-utmi-as-pipe-clk;
+
+ status = "okay";
+};
+
+&usb_1_dwc3 {
+ /* Until we have Type C hooked up we'll force this as peripheral. */
+ dr_mode = "peripheral";
+
+ maximum-speed = "high-speed";
+ phys = <&usb_1_hsphy>;
+ phy-names = "usb2-phy";
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1a_0p875>;
+ vdda-pll-supply = <&vreg_l12a_1p8>;
+ vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+
+ qcom,imp-res-offset-value = <8>;
+ qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
+ qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
+ qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
+
+ status = "okay";
+};
+
+&uart6 {
+ pinctrl-0 = <&qup_uart6_4pin>;
+
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn3990-bt";
+
+ /*
+ * This path is relative to the qca/
+ * subdir under lib/firmware.
+ */
+ firmware-name = "Xiaomi/dipper/crnv21.bin";
+
+ vddio-supply = <&vreg_pmu_io>;
+ vddxo-supply = <&vreg_pmu_xo>;
+ vddrf-supply = <&vreg_pmu_rf>;
+ vddch0-supply = <&vreg_pmu_ch0>;
+
+ max-speed = <3200000>;
+ };
+};
+
+&uart9 {
+ status = "okay";
+};
+
+&wifi {
+ vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
+ vdd-1.8-xo-supply = <&vreg_pmu_xo>;
+ vdd-1.3-rfa-supply = <&vreg_pmu_rf>;
+ vdd-3.3-ch0-supply = <&vreg_pmu_ch0>;
+ vdd-3.3-ch1-supply = <&vreg_pmu_ch1>;
+
+ qcom,snoc-host-cap-skip-quirk;
+
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper.dts b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper.dts
new file mode 100644
index 0000000000000..59393d9a780ef
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-dipper.dts
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Xiaomi Mi 8 (dipper).
+ *
+ * Copyright David Heidelberg. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "sdm845-xiaomi-dipper-common.dtsi"
+
+/ {
+ model = "Xiaomi Mi 8";
+ compatible = "xiaomi,dipper", "xiaomi,dipper-common", "qcom,sdm845";
+
+ qcom,board-id = <55 0>;
+
+ battery: battery {
+ compatible = "simple-battery";
+
+ charge-full-design-microamp-hours = <3400000>;
+ voltage-min-design-microvolt = <3400000>;
+ voltage-max-design-microvolt = <4400000>;
+ };
+
+};
+
+&wifi {
+ qcom,calibration-variant = "Xiaomi_dipper";
+};
--
2.55.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-09 16:48 ` [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper) David Heidelberg via B4 Relay
@ 2026-08-18 9:27 ` Konrad Dybcio
2026-08-18 9:38 ` David Heidelberg
2026-09-15 14:14 ` David Heidelberg
2026-08-18 9:27 ` Konrad Dybcio
1 sibling, 2 replies; 9+ messages in thread
From: Konrad Dybcio @ 2026-08-18 9:27 UTC (permalink / raw)
To: david, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kees Cook, Tony Luck,
Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel
On 8/9/26 6:48 PM, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> Initial submission for one member of the prime Xiaomi Mi 8 family.
> Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
> Known differences are battery capacity and fingerprint sensor placement.
> This submission includes basic abstraction for other developers to be
> able easily extend it to support other variants.
I had one of those. IIRC the Pro had a 3d IR scanner (vide face id)
whereas the base one had a normal IR cam
[...]
> + reserved-memory {
> + adsp_mem: memory@8c500000 {
adsp@ etc. and drop labels where unused
[...]
> + linux,cma {
> + compatible = "shared-dma-pool";
> + alloc-ranges = <0 0x00000000 0 0xffffffff>;
> + reusable;
> + alignment = <0 0x400000>;
> + size = <0 0x2c00000>;
> + linux,cma-default;
> + };
Is this necessary?
> + };
> +
> + vph_pwr: regulator-vph-pwr {
This is out of order
[...]
> +&adsp_pas {
> + firmware-name = "qcom/sdm845/Xiaomi/dipper/adsp.mbn";
Would you know whether the FWs are common across the SKUs?
And more importantly, regulator settings? FWIW it's easiest to compare
compiled DTBs (or even better, ones pulled from sysfs on a running
system)
[...]
> +&tlmm {
> + gpio-reserved-ranges = < 0 4>, /* SPI (Goodix Fingerprint) */
odd space after <
> + <81 4>; /* SPI (Synaptics Fingerprint) */
No NFC eSE reservation?
[...]
> +&usb_1_dwc3 {
> + /* Until we have Type C hooked up we'll force this as peripheral. */
Should be fairly trivial on 845, no?
> + dr_mode = "peripheral";
> +
> + maximum-speed = "high-speed";
> + phys = <&usb_1_hsphy>;
> + phy-names = "usb2-phy";
No SS?
[...]
> + bluetooth {
> + compatible = "qcom,wcn3990-bt";
> +
> + /*
> + * This path is relative to the qca/
> + * subdir under lib/firmware.
> + */
Let's drop this comment, not very useful
Konrad
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-09 16:48 ` [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper) David Heidelberg via B4 Relay
2026-08-18 9:27 ` Konrad Dybcio
@ 2026-08-18 9:27 ` Konrad Dybcio
1 sibling, 0 replies; 9+ messages in thread
From: Konrad Dybcio @ 2026-08-18 9:27 UTC (permalink / raw)
To: david, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kees Cook, Tony Luck,
Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel
On 8/9/26 6:48 PM, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> Initial submission for one member of the prime Xiaomi Mi 8 family.
> Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
> Known differences are battery capacity and fingerprint sensor placement.
> This submission includes basic abstraction for other developers to be
> able easily extend it to support other variants.
[...]
> +/ {
> + chassis-type = "handset";
> +
> + qcom,msm-id = <QCOM_ID_SDM845 0x20001>;
Is this necessary to boot?
Konrad
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-18 9:27 ` Konrad Dybcio
@ 2026-08-18 9:38 ` David Heidelberg
2026-08-18 9:47 ` Konrad Dybcio
2026-09-15 14:14 ` David Heidelberg
1 sibling, 1 reply; 9+ messages in thread
From: David Heidelberg @ 2026-08-18 9:38 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kees Cook, Tony Luck,
Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel
On 18/08/2026 11:27, Konrad Dybcio wrote:
> On 8/9/26 6:48 PM, David Heidelberg via B4 Relay wrote:
>> From: David Heidelberg <david@ixit.cz>
>>
>> Initial submission for one member of the prime Xiaomi Mi 8 family.
>> Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
>> Known differences are battery capacity and fingerprint sensor placement.
>> This submission includes basic abstraction for other developers to be
>> able easily extend it to support other variants.
>
> I had one of those. IIRC the Pro had a 3d IR scanner (vide face id)
> whereas the base one had a normal IR cam
>
> [...]
>
>> + reserved-memory {
>> + adsp_mem: memory@8c500000 {
>
> adsp@ etc. and drop labels where unused
>
> [...]
>
>> + linux,cma {
>> + compatible = "shared-dma-pool";
>> + alloc-ranges = <0 0x00000000 0 0xffffffff>;
>> + reusable;
>> + alignment = <0 0x400000>;
>> + size = <0 0x2c00000>;
>> + linux,cma-default;
>> + };
>
> Is this necessary?
>
>> + };
>> +
>> + vph_pwr: regulator-vph-pwr {
>
> This is out of order
>
> [...]
>
>
>> +&adsp_pas {
>> + firmware-name = "qcom/sdm845/Xiaomi/dipper/adsp.mbn";
>
> Would you know whether the FWs are common across the SKUs?
I don't, I have only one device (the dipper) available.
I'll see if I quickly figure out, if not, as no-one else having Mi8 family
volunteer to test, I would move it to dipper specific for now and can be moved
to common later.
>
> And more importantly, regulator settings? FWIW it's easiest to compare
> compiled DTBs (or even better, ones pulled from sysfs on a running
> system)
>
> [...]
>
>> +&tlmm {
>> + gpio-reserved-ranges = < 0 4>, /* SPI (Goodix Fingerprint) */
>
> odd space after <
I call it alignment, but sure :)>
>> + <81 4>; /* SPI (Synaptics Fingerprint) */
>
> No NFC eSE reservation?
It seems that vendor used different combinations of Goodix / Synaptics across
these ranges. Not even depending on the model. Same model can have different
wiring, but always honoring position 0:4, 81:4 as far goes my understanding. >
> [...]
>
>> +&usb_1_dwc3 {
>> + /* Until we have Type C hooked up we'll force this as peripheral. */
>
> Should be fairly trivial on 845, no?
>
>> + dr_mode = "peripheral";
>> +
>> + maximum-speed = "high-speed";
>> + phys = <&usb_1_hsphy>;
>> + phy-names = "usb2-phy";
>
> No SS?
Haven't thought about it, for now my goal is upstream basic telnet/ssh + FB.
Then display and touch - e.g. minimal u-boot and kernel development features and
then bring the rest.
>
> [...]
>
>> + bluetooth {
>> + compatible = "qcom,wcn3990-bt";
>> +
>> + /*
>> + * This path is relative to the qca/
>> + * subdir under lib/firmware.
>> + */
>
> Let's drop this comment, not very useful
Sure.
Then I'll also drop these from whole sdm845 in follow-up commit.
I'll address also the rest of the comments in the next version :)
Thanks for the review
David>
> Konrad
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-18 9:38 ` David Heidelberg
@ 2026-08-18 9:47 ` Konrad Dybcio
2026-09-15 13:48 ` David Heidelberg
0 siblings, 1 reply; 9+ messages in thread
From: Konrad Dybcio @ 2026-08-18 9:47 UTC (permalink / raw)
To: David Heidelberg, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kees Cook, Tony Luck,
Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel
On 8/18/26 11:38 AM, David Heidelberg wrote:
> On 18/08/2026 11:27, Konrad Dybcio wrote:
>> On 8/9/26 6:48 PM, David Heidelberg via B4 Relay wrote:
>>> From: David Heidelberg <david@ixit.cz>
>>>
>>> Initial submission for one member of the prime Xiaomi Mi 8 family.
>>> Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
>>> Known differences are battery capacity and fingerprint sensor placement.
>>> This submission includes basic abstraction for other developers to be
>>> able easily extend it to support other variants.
[...]
>> No SS?
>
> Haven't thought about it, for now my goal is upstream basic telnet/ssh + FB. Then display and touch - e.g. minimal u-boot and kernel development features and then bring the rest.
If you have an actually-superspeed cable, the link speed in fastboot
should tell you the truth, or alternatively you can try plugging it
into a DP dock on downstream
Konrad
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-18 9:47 ` Konrad Dybcio
@ 2026-09-15 13:48 ` David Heidelberg
0 siblings, 0 replies; 9+ messages in thread
From: David Heidelberg @ 2026-09-15 13:48 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kees Cook, Tony Luck,
Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel
On 18/08/2026 11:47, Konrad Dybcio wrote:
> On 8/18/26 11:38 AM, David Heidelberg wrote:
>> On 18/08/2026 11:27, Konrad Dybcio wrote:
>>> On 8/9/26 6:48 PM, David Heidelberg via B4 Relay wrote:
>>>> From: David Heidelberg <david@ixit.cz>
>>>>
>>>> Initial submission for one member of the prime Xiaomi Mi 8 family.
>>>> Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
>>>> Known differences are battery capacity and fingerprint sensor placement.
>>>> This submission includes basic abstraction for other developers to be
>>>> able easily extend it to support other variants.
>
> [...]
>
>>> No SS?
>>
>> Haven't thought about it, for now my goal is upstream basic telnet/ssh + FB. Then display and touch - e.g. minimal u-boot and kernel development features and then bring the rest.
>
> If you have an actually-superspeed cable, the link speed in fastboot
> should tell you the truth, or alternatively you can try plugging it
> into a DP dock on downstream
Ok verified, it has only USB 2.0 (spec, downstream DT)
>
> Konrad
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper)
2026-08-18 9:27 ` Konrad Dybcio
2026-08-18 9:38 ` David Heidelberg
@ 2026-09-15 14:14 ` David Heidelberg
1 sibling, 0 replies; 9+ messages in thread
From: David Heidelberg @ 2026-09-15 14:14 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kees Cook, Tony Luck,
Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, phone-devel
On 18/08/2026 11:27, Konrad Dybcio wrote:
> On 8/9/26 6:48 PM, David Heidelberg via B4 Relay wrote:
>> From: David Heidelberg <david@ixit.cz>
>>
>> Initial submission for one member of the prime Xiaomi Mi 8 family.
>> Mi 8 Pro (equuleus) and Mi 8 Explorer (ursa) are nearly identical.
>> Known differences are battery capacity and fingerprint sensor placement.
>> This submission includes basic abstraction for other developers to be
>> able easily extend it to support other variants.
>
> I had one of those. IIRC the Pro had a 3d IR scanner (vide face id)
> whereas the base one had a normal IR cam
>
> [...]
>
>> + reserved-memory {
>> + adsp_mem: memory@8c500000 {
>
> adsp@ etc. and drop labels where unused
>
I'll replace the node names, but as these labels are replacement for existing
sdm845 labels, used within the sdm845. As we remove these nodes in the begging
of the file, this would break dependencies.
David
[...]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-09-15 14:14 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-09 16:48 [PATCH 0/2] Introduce support for Xiaomi Mi 8 David Heidelberg via B4 Relay
2026-08-09 16:48 ` [PATCH 1/2] dt-bindings: arm: qcom: Add Xiaomi Mi 8 family compatibles David Heidelberg via B4 Relay
2026-08-09 16:48 ` [PATCH 2/2] arm64: dts: qcom: add Xiaomi Mi 8 (dipper) David Heidelberg via B4 Relay
2026-08-18 9:27 ` Konrad Dybcio
2026-08-18 9:38 ` David Heidelberg
2026-08-18 9:47 ` Konrad Dybcio
2026-09-15 13:48 ` David Heidelberg
2026-09-15 14:14 ` David Heidelberg
2026-08-18 9:27 ` Konrad Dybcio
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®