// SPDX-License-Identifier: GPL-2.0-or-later OR MIT // Copyright (c) 2021 Cezary Jackiewicz // Copyright (c) 2021, 2022 Lech Perczak #include "qca956x.dtsi" #include #include #include / { model = "ZTE MF286"; compatible = "zte,mf286", "qca,qca9563"; aliases { led-boot = &led_debug; led-failsafe = &led_debug; led-running = &led_debug; led-upgrade = &led_debug; label-mac-device = ð0; }; leds { compatible = "gpio-leds"; /* Hidden green SMD LED below signal strength LEDs * Visible through slits underside of the case, * and slightly through the case below signal state LEDs */ led_debug: led-0 { color = ; function = LED_FUNCTION_DEBUG; label = "green:debug"; gpios = <&gpio 7 GPIO_ACTIVE_LOW>; default-state = "on"; }; }; keys { compatible = "gpio-keys"; reset { label = "reset"; linux,code = ; gpios = <&gpio 2 GPIO_ACTIVE_LOW>; debounce-interval = <60>; }; wps { label = "wps"; linux,code = ; gpios = <&gpio 1 GPIO_ACTIVE_LOW>; debounce-interval = <60>; }; wifi { label = "wifi"; linux,code = ; gpios = <&gpio 8 GPIO_ACTIVE_LOW>; debounce-interval = <60>; }; }; /* This GPIO is used to reset whole board _including_ the modem */ gpio-restart { compatible = "gpio-restart"; gpios = <&gpio 5 GPIO_ACTIVE_HIGH>; active-delay = <3000>; inactive-delay = <1000>; }; ubi-concat { compatible = "mtd-concat"; devices = <&ubiconcat0 &ubiconcat1>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { reg = <0x0 0x7840000>; label = "ubi"; }; }; }; }; &gpio { /* GPIO19 is used as a mask to enable WLAN LED * in stock firmware, which is controlled directly * by 5GHz Wi-Fi chip, which currently is inactive * in OpenWrt */ led-wlan { gpio-hog; gpios = <19 GPIO_ACTIVE_LOW>; output-high; line-name = "led:wlan"; }; }; &spi { status = "okay"; flash@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <25000000>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "u-boot"; reg = <0x000000 0x080000>; read-only; }; partition@80000 { label = "u-boot-env"; reg = <0x080000 0x020000>; read-only; }; }; }; flash@1 { compatible = "spi-nand"; reg = <1>; spi-max-frequency = <25000000>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "fota-flag"; reg = <0x000000 0x140000>; read-only; }; caldata: partition@140000 { label = "caldata"; reg = <0x140000 0x140000>; read-only; compatible = "nvmem-cells"; #address-cells = <1>; #size-cells = <1>; cal_caldata_1000: cal@1000 { reg = <0x1000 0x440>; }; cal_caldata_5000: cal@5000 { reg = <0x5000 0x844>; }; }; mac: partition@280000 { label = "mac"; reg = <0x280000 0x140000>; read-only; compatible = "nvmem-cells"; #address-cells = <1>; #size-cells = <1>; macaddr_mac_0: macaddr@0 { reg = <0x0 0x6>; }; }; /* This encompasses stock cfg-param, oops, web partitions, * which can be overwritten safely */ ubiconcat0: partition@3c0000 { label = "ubiconcat0"; reg = <0x3c0000 0xf40000>; }; /* Kernel MTD size is increased to 4MB from stock 3MB */ partition@1300000 { label = "kernel"; reg = <0x1300000 0x400000>; }; /* This encompasses stock rootfs, data, fota partitions, * which can be overwritten safely */ ubiconcat1: partition@1600000 { label = "ubiconcat1"; reg = <0x1700000 0x6900000>; }; }; }; }; &mdio0 { status = "okay"; phy-mask = <0>; phy0: ethernet-phy@0 { reg = <0>; phy-mode = "sgmii"; qca,ar8327-initvals = < 0x04 0x00080080 /* PORT0 PAD MODE CTRL */ 0x7c 0x0000007e /* PORT0_STATUS */ >; }; }; ð0 { status = "okay"; nvmem-cells = <&macaddr_mac_0>; nvmem-cell-names = "mac-address"; phy-mode = "sgmii"; phy-handle = <&phy0>; }; &pcie { status = "okay"; wifi@0,0 { compatible = "qcom,ath10k"; reg = <0x0 0 0 0 0>; nvmem-cells = <&macaddr_mac_0>, <&cal_caldata_5000>; nvmem-cell-names = "mac-address", "calibration"; mac-address-increment = <1>; }; }; &wmac { status = "okay"; nvmem-cells = <&macaddr_mac_0>, <&cal_caldata_1000>; nvmem-cell-names = "mac-address", "calibration"; }; &usb_phy0 { status = "okay"; }; &usb0 { status = "okay"; }; &usb_phy1 { status = "okay"; }; &usb1 { status = "okay"; };