// SPDX-License-Identifier: GPL-2.0-or-later OR MIT #include "qcom-ipq8064-v2.0-smb208.dtsi" #include / { model = "Xiaomi Mi Router HD"; compatible = "xiaomi,mi-router-hd", "qcom,ipq8064"; memory@0 { device_type = "memory"; reg = <0x42000000 0x1e000000>; }; reserved-memory { rsvd@44600000 { reg = <0x44600000 0x200000>; /* IPQ_TZ_APPS_ADDR */ no-map; }; }; aliases { label-mac-device = &gmac1; mdio-gpio0 = &mdio0; led-boot = &led_status_yellow; led-failsafe = &led_status_red; led-running = &led_status_blue; led-upgrade = &led_status_yellow; }; chosen { bootargs = "rootfstype=squashfs noinitrd"; }; keys { compatible = "gpio-keys"; pinctrl-0 = <&button_pins>; pinctrl-names = "default"; reset { label = "reset"; gpios = <&qcom_pinmux 16 GPIO_ACTIVE_LOW>; linux,code = ; debounce-interval = <60>; wakeup-source; }; power { label = "power"; /* Labeled POWER on the device, but using for sleep mode */ gpios = <&qcom_pinmux 68 GPIO_ACTIVE_LOW>; linux,code = ; debounce-interval = <60>; wakeup-source; }; }; leds { compatible = "gpio-leds"; pinctrl-0 = <&led_pins>; pinctrl-names = "default"; led_status_red: led_status_red { label = "red:status"; gpios = <&qcom_pinmux 7 GPIO_ACTIVE_HIGH>; default-state = "keep"; }; led_status_blue: led_status_blue { label = "blue:status"; gpios = <&qcom_pinmux 8 GPIO_ACTIVE_HIGH>; default-state = "keep"; }; led_status_yellow: led_status_yellow { label = "yellow:status"; gpios = <&qcom_pinmux 9 GPIO_ACTIVE_HIGH>; default-state = "keep"; }; }; i2c_gpio_0 { // GSBI1 compatible = "i2c-gpio"; #address-cells = <1>; #size-cells = <0>; pinctrl-0 = <&i2c1_pins>; pinctrl-names = "default"; sda-gpios = <&qcom_pinmux 53 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; scl-gpios = <&qcom_pinmux 54 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; i2c-gpio,delay-us = <5>; emc2301@2f { compatible = "smsc,emc2301"; reg = <0x2f>; #address-cells = <1>; #size-cells = <0>; fan@0 { reg = <0>; pwm-output-mode = <1>; }; }; }; i2c_gpio_1 { // GSBI2 compatible = "i2c-gpio"; #address-cells = <1>; #size-cells = <0>; pinctrl-0 = <&i2c2_pins>; pinctrl-names = "default"; sda-gpios = <&qcom_pinmux 24 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; scl-gpios = <&qcom_pinmux 25 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; i2c-gpio,delay-us = <5>; tmp75@48 { compatible = "ti,tmp75"; reg = <0x48>; #address-cells = <1>; #size-cells = <0>; #thermal-sensor-cells = <0>; status = "okay"; }; }; }; // https://github.com/openwrt/openwrt/commit/622ce713ca246aa465bf28d2a743f96999085ea2 // https://github.com/openwrt/openwrt/commit/2336c2dbb1929837f7e42d4315c8073342a5b46b // https://forum.openwrt.org/t/failed-to-startup-an-ipq806x-router-on-kernel-5-4/60775/41 &CPU_SPC { status = "disabled"; }; &adm_dma { status = "okay"; }; &qcom_pinmux { i2c1_pins: i2c1_pins { // GSBI1 - EMC2301 mux { pins = "gpio53", "gpio54"; function = "gsbi1"; drive-strength = <12>; bias-none; input; }; }; i2c2_pins: i2c2_pins { // GSBI2 - TMP75 mux { pins = "gpio24", "gpio25"; function = "gsbi2"; drive-strength = <12>; bias-none; input; }; }; button_pins: button_pins { mux { pins = "gpio16", "gpio68"; function = "gpio"; drive-strength = <2>; bias-pull-up; }; }; led_pins: led_pins { mux { pins = "gpio7", "gpio8", "gpio9"; function = "gpio"; drive-strength = <2>; bias-pull-up; }; }; usb_pwr_en_pins: usb_pwr_en_pins { mux { pins = "gpio56"; function = "gpio"; drive-strength = <12>; bias-pull-up; output-high; }; }; }; &sata_phy { status = "okay"; }; &sata { status = "okay"; }; &usb3_0 { status = "okay"; }; &usb3_1 { status = "okay"; pinctrl-0 = <&usb_pwr_en_pins>; pinctrl-names = "default"; }; &pcie0 { status = "okay"; reset-gpio = <&qcom_pinmux 3 GPIO_ACTIVE_LOW>; pinctrl-0 = <&pcie0_pins>; pinctrl-names = "default"; bridge@0,0 { reg = <0x00000000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>; ranges; wifi@1,0 { compatible = "pci168c,0040"; reg = <0x00010000 0 0 0 0>; nvmem-cells = <&macaddr_art_1006>, <&precal_art_1000>; nvmem-cell-names = "mac-address", "pre-calibration"; }; }; }; &pcie1 { status = "okay"; reset-gpio = <&qcom_pinmux 48 GPIO_ACTIVE_LOW>; pinctrl-0 = <&pcie1_pins>; pinctrl-names = "default"; max-link-speed = <1>; bridge@0,0 { reg = <0x00000000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>; ranges; wifi@1,0 { compatible = "pci168c,0040"; reg = <0x00010000 0 0 0 0>; nvmem-cells = <&macaddr_art_5006>, <&precal_art_5000>; nvmem-cell-names = "mac-address", "pre-calibration"; }; }; }; &nand { status = "okay"; nand@0 { reg = <0>; compatible = "qcom,nandcs"; nand-bus-width = <8>; nand-ecc-strength = <4>; nand-ecc-step-size = <512>; nand-is-boot-medium; qcom,boot_pages_size = <0xf0000000>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "SBL1"; reg = <0x0 0x40000>; read-only; }; partition@40000 { label = "MIBIB"; reg = <0x40000 0x80000>; read-only; }; partition@c0000 { label = "SBL2"; reg = <0xc0000 0x80000>; read-only; }; partition@140000 { label = "SBL3"; reg = <0x140000 0x80000>; read-only; }; partition@1c0000 { label = "DDRCONFIG"; reg = <0x1c0000 0x80000>; read-only; }; partition@240000 { label = "SSD"; reg = <0x240000 0x80000>; read-only; }; partition@2c0000 { label = "TZ"; reg = <0x2c0000 0x80000>; read-only; }; partition@340000 { label = "RPM"; reg = <0x340000 0x80000>; read-only; }; partition@3c0000 { label = "APPSBL"; reg = <0x3c0000 0x100000>; read-only; }; partition@4c0000 { label = "APPSBLENV"; reg = <0x4c0000 0x80000>; }; art: partition@540000 { label = "ART"; reg = <0x540000 0x80000>; read-only; compatible = "nvmem-cells"; #address-cells = <1>; #size-cells = <1>; macaddr_art_0: macaddr@0 { // WAN (label) reg = <0x0 0x6>; }; macaddr_art_6: macaddr@6 { // LAN reg = <0x6 0x6>; }; macaddr_art_1006: macaddr@1006 { // WiFi 2g reg = <0x1006 0x6>; }; macaddr_art_5006: macaddr@5006 { // WiFi 5g reg = <0x5006 0x6>; }; precal_art_1000: precal@1000 { reg = <0x1000 0x2f20>; }; precal_art_5000: precal@5000 { reg = <0x5000 0x2f20>; }; }; partition@5c0000 { label = "BOOTCONFIG"; reg = <0x5c0000 0x40000>; read-only; }; partition@600000 { label = "bdata"; reg = <0x600000 0x80000>; }; partition@680000 { label = "crash"; reg = <0x680000 0x80000>; read-only; }; partition@700000 { label = "crash_syslog"; reg = <0x700000 0x80000>; read-only; }; partition@780000 { label = "rsvd"; reg = <0x780000 0x80000>; read-only; }; /* Stock U-Boot support Dual Boot */ partition@800000 { label = "kernel_dup"; reg = <0x800000 0x400000>; }; partition@c00000 { label = "kernel"; reg = <0xc00000 0x400000>; }; partition@1000000 { label = "ubi"; reg = <0x1000000 0xf000000>; }; }; }; }; &mdio0 { status = "okay"; pinctrl-0 = <&mdio0_pins>; pinctrl-names = "default"; phy0: ethernet-phy@0 { reg = <0>; qca,ar8327-initvals = < 0x04 0x07600000 /* PAD0_MODE */ 0x08 0x01000000 /* PAD5_MODE */ 0x0c 0x00000080 /* PAD6_MODE */ 0x7c 0x0000004e /* PORT0_STATUS */ 0x94 0x0000004e /* PORT6_STATUS */ 0xe0 0xc74164de /* SGMII_CTRL */ 0xe4 0x0006a545 /* MAC_POWER_SEL */ >; }; phy4: ethernet-phy@4 { reg = <4>; }; }; &gmac1 { status = "okay"; phy-mode = "rgmii"; qcom,id = <1>; pinctrl-0 = <&rgmii2_pins>; pinctrl-names = "default"; nvmem-cells = <&macaddr_art_0>; nvmem-cell-names = "mac-address"; fixed-link { speed = <1000>; full-duplex; }; }; &gmac2 { status = "okay"; phy-mode = "sgmii"; qcom,id = <2>; nvmem-cells = <&macaddr_art_6>; nvmem-cell-names = "mac-address"; fixed-link { speed = <1000>; full-duplex; }; };