diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79 index 1f0e02a2f7a..57be9ccb845 100644 --- a/package/boot/uboot-envtools/files/ath79 +++ b/package/boot/uboot-envtools/files/ath79 @@ -122,7 +122,9 @@ qihoo,c301) wallys,dr531) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0xf800" "0x10000" ;; -zte,mf286) +zte,mf286|\ +zte,mf286a|\ +zte,mf286r) ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x20000" "0x10000" ;; esac diff --git a/target/linux/ath79/dts/qca9563_zte_mf286.dts b/target/linux/ath79/dts/qca9563_zte_mf286.dts index c4ebdebd10b..2e528a6b971 100644 --- a/target/linux/ath79/dts/qca9563_zte_mf286.dts +++ b/target/linux/ath79/dts/qca9563_zte_mf286.dts @@ -1,72 +1,12 @@ // 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 +#include "qca9563_zte_mf286.dtsi" / { 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>; @@ -84,173 +24,107 @@ }; }; -&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"; - }; +&led_debug { + /* Hidden green SMD LED below signal strength LEDs + * Visible through slits underside of the case, + * and slightly through the case below signal state LEDs + */ + color = ; + label = "green:debug"; }; -&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; - }; +&boot_flash { + partitions { + partition@0 { + label = "u-boot"; + reg = <0x000000 0x080000>; + 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>; - }; + partition@80000 { + label = "u-boot-env"; + reg = <0x080000 0x020000>; + read-only; }; }; }; -&mdio0 { - status = "okay"; +&system_flash { + partitions { + partition@0 { + label = "fota-flag"; + reg = <0x000000 0x140000>; + read-only; + }; - phy-mask = <0>; - phy0: ethernet-phy@0 { - reg = <0>; - phy-mode = "sgmii"; + partition@140000 { + label = "caldata"; + reg = <0x140000 0x140000>; + read-only; - qca,ar8327-initvals = < - 0x04 0x00080080 /* PORT0 PAD MODE CTRL */ - 0x7c 0x0000007e /* PORT0_STATUS */ - >; + 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>; + }; + }; + + 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>; + }; }; }; ð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>; - }; +&wifi_ath10k { + 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"; -}; diff --git a/target/linux/ath79/dts/qca9563_zte_mf286.dtsi b/target/linux/ath79/dts/qca9563_zte_mf286.dtsi new file mode 100644 index 00000000000..3013daa4701 --- /dev/null +++ b/target/linux/ath79/dts/qca9563_zte_mf286.dtsi @@ -0,0 +1,158 @@ +// 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 + +/ { + 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 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 { + function = LED_FUNCTION_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>; + }; +}; + +&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"; + + boot_flash: flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + }; + }; + + system_flash: flash@1 { + compatible = "spi-nand"; + reg = <1>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + }; + }; +}; + +&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"; + + phy-mode = "sgmii"; + phy-handle = <&phy0>; +}; + +&pcie { + status = "okay"; + + wifi_ath10k: wifi@0,0 { + compatible = "qcom,ath10k"; + reg = <0x0 0 0 0 0>; + }; +}; + +&wmac { + status = "okay"; +}; + +&usb_phy0 { + status = "okay"; +}; + +&usb0 { + status = "okay"; +}; + +&usb_phy1 { + status = "okay"; +}; + +&usb1 { + status = "okay"; +}; diff --git a/target/linux/ath79/dts/qca9563_zte_mf286a.dts b/target/linux/ath79/dts/qca9563_zte_mf286a.dts new file mode 100644 index 00000000000..205dde8030f --- /dev/null +++ b/target/linux/ath79/dts/qca9563_zte_mf286a.dts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +// Copyright (c) 2021 Cezary Jackiewicz +// Copyright (c) 2021, 2022 Lech Perczak +#include "qca9563_zte_mf286ar.dtsi" + +/ { + model = "ZTE MF286A"; + compatible = "zte,mf286a", "qca,qca9563"; +}; diff --git a/target/linux/ath79/dts/qca9563_zte_mf286ar.dtsi b/target/linux/ath79/dts/qca9563_zte_mf286ar.dtsi new file mode 100644 index 00000000000..45ac3bc7ea5 --- /dev/null +++ b/target/linux/ath79/dts/qca9563_zte_mf286ar.dtsi @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +// Copyright (c) 2021 Cezary Jackiewicz +// Copyright (c) 2021, 2022 Lech Perczak +#include "qca9563_zte_mf286.dtsi" + +/ { + ubi-concat { + compatible = "mtd-concat"; + devices = <&ubiconcat0 &ubiconcat1>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + reg = <0x0 0x7a60000>; + label = "ubi"; + }; + }; + }; +}; + +&led_debug { + /* Hidden blue SMD LED below signal strength LEDs + * Visible through slits underside of the case, + * and slightly through the case below signal state LEDs + */ + color = ; + label = "blue:debug"; +}; + +&boot_flash { + partitions { + partition@0 { + label = "u-boot"; + reg = <0x000000 0x0a0000>; + read-only; + }; + + partition@a0000 { + label = "u-boot-env"; + reg = <0x0a0000 0x020000>; + read-only; + }; + + partition@c0000 { + label = "reserved1"; + reg = <0x0c0000 0x140000>; + read-only; + }; + }; +}; + +&system_flash { + partitions { + partition@0 { + label = "fota-flag"; + reg = <0x00000 0xa0000>; + read-only; + }; + + partition@a0000 { + label = "art"; + reg = <0xa0000 0x80000>; + read-only; + + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + cal_art_1000: cal@1000 { + reg = <0x1000 0x440>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; + + partition@120000 { + label = "mac"; + reg = <0x120000 0x80000>; + read-only; + + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_mac_0: mac-address@0 { + reg = <0x0 0x6>; + }; + }; + + /* This encompasses stock reserved2, cfg-param, log, oops, + * reserved3, web partitions, + * which can be overwritten safely + */ + ubiconcat0: partition@1a0000 { + label = "ubiconcat0"; + reg = <0x1a0000 0x1660000>; + }; + + /* Kernel MTD size is increased to 4MB from stock 3MB */ + partition@1800000 { + label = "kernel"; + reg = <0x1800000 0x400000>; + }; + + /* This encompasses stock rootfs, data, fota partitions, + * which can be overwritten safely + */ + ubiconcat1: partition@1c00000 { + label = "ubiconcat1"; + reg = <0x1c00000 0x6400000>; + }; + }; +}; + +ð0 { + nvmem-cells = <&macaddr_mac_0>; + nvmem-cell-names = "mac-address"; +}; + +&wifi_ath10k { + nvmem-cells = <&macaddr_mac_0>, <&precal_art_5000>; + nvmem-cell-names = "mac-address", "pre-calibration"; + mac-address-increment = <0x20000>; +}; + +&wmac { + nvmem-cells = <&macaddr_mac_0>, <&cal_art_1000>; + nvmem-cell-names = "mac-address", "calibration"; +}; diff --git a/target/linux/ath79/dts/qca9563_zte_mf286r.dts b/target/linux/ath79/dts/qca9563_zte_mf286r.dts new file mode 100644 index 00000000000..6fa0f7a7f82 --- /dev/null +++ b/target/linux/ath79/dts/qca9563_zte_mf286r.dts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +// Copyright (c) 2021 Cezary Jackiewicz +// Copyright (c) 2021, 2022 Lech Perczak +#include "qca9563_zte_mf286ar.dtsi" + +/ { + model = "ZTE MF286R"; + compatible = "zte,mf286r", "qca,qca9563"; +}; diff --git a/target/linux/ath79/image/nand.mk b/target/linux/ath79/image/nand.mk index 9f209368e40..0cf8f331d52 100644 --- a/target/linux/ath79/image/nand.mk +++ b/target/linux/ath79/image/nand.mk @@ -305,20 +305,39 @@ define Device/netgear_wndr4500-v3 endef TARGET_DEVICES += netgear_wndr4500-v3 -define Device/zte_mf286 +define Device/zte_mf286_common SOC := qca9563 DEVICE_VENDOR := ZTE - DEVICE_MODEL := MF286 - DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct \ - ath10k-firmware-qca988x-ct kmod-usb-net-qmi-wwan kmod-usb-serial-option \ - uqmi + DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct BLOCKSIZE := 128k PAGESIZE := 2048 KERNEL_SIZE := 4096k IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata endef + +define Device/zte_mf286 + $(Device/zte_mf286_common) + DEVICE_MODEL := MF286 + DEVICE_PACKAGES += ath10k-firmware-qca988x-ct kmod-usb-net-qmi-wwan \ + kmod-usb-serial-option uqmi +endef TARGET_DEVICES += zte_mf286 +define Device/zte_mf286a + $(Device/zte_mf286_common) + DEVICE_MODEL := MF286A + DEVICE_PACKAGES += ath10k-firmware-qca9888-ct kmod-usb-net-qmi-wwan \ + kmod-usb-serial-option uqmi +endef +TARGET_DEVICES += zte_mf286a + +define Device/zte_mf286r + $(Device/zte_mf286_common) + DEVICE_MODEL := MF286R + DEVICE_PACKAGES += ath10k-firmware-qca9888-ct kmod-usb-net-rndis kmod-usb-acm +endef +TARGET_DEVICES += zte_mf286r + define Device/zyxel_nbg6716 SOC := qca9558 DEVICE_VENDOR := ZyXEL diff --git a/target/linux/ath79/nand/base-files/etc/board.d/02_network b/target/linux/ath79/nand/base-files/etc/board.d/02_network index 2c6e676ae9d..417a881e5b6 100644 --- a/target/linux/ath79/nand/base-files/etc/board.d/02_network +++ b/target/linux/ath79/nand/base-files/etc/board.d/02_network @@ -45,7 +45,9 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" ;; - zte,mf286) + zte,mf286|\ + zte,mf286a|\ + zte,mf286r) ucidef_add_switch "switch0" \ "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "5:lan:1" ;;