From cc7063de8c60d90475ac268fcad5090bad987319 Mon Sep 17 00:00:00 2001 From: lean Date: Sun, 2 Jan 2022 12:24:33 +0800 Subject: [PATCH] ipq807x: add QNAP 301w (AX WIFI router with 4 1G and 2 10G ports) support --- package/boot/uboot-envtools/files/ipq807x | 5 + package/firmware/ipq-wifi/Makefile | 2 + .../firmware/ipq-wifi/board-qnap_301w.ipq8074 | Bin 0 -> 131172 bytes .../ipq807x/base-files/etc/board.d/01_leds | 8 + .../ipq807x/base-files/etc/board.d/02_network | 3 + .../etc/hotplug.d/firmware/11-ath11k-caldata | 1 + .../ipq807x/base-files/lib/upgrade/mmc.sh | 83 ++ .../base-files/lib/upgrade/platform.sh | 5 + target/linux/ipq807x/config-5.10 | 1 + .../arch/arm64/boot/dts/qcom/ipq8072-301w.dts | 823 ++++++++++++++++++ target/linux/ipq807x/image/generic.mk | 15 + .../900-arm64-dts-add-OpenWrt-DTS-files.patch | 3 +- 12 files changed, 948 insertions(+), 1 deletion(-) create mode 100644 package/firmware/ipq-wifi/board-qnap_301w.ipq8074 create mode 100644 target/linux/ipq807x/base-files/lib/upgrade/mmc.sh create mode 100644 target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts diff --git a/package/boot/uboot-envtools/files/ipq807x b/package/boot/uboot-envtools/files/ipq807x index 5611b6f4f..9bd6b2b96 100644 --- a/package/boot/uboot-envtools/files/ipq807x +++ b/package/boot/uboot-envtools/files/ipq807x @@ -15,6 +15,11 @@ xiaomi,ax9000) [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x20000" ;; +qnap,301w) + idx="$(find_mtd_index 0:appsblenv)" + [ -n "$idx" ] && \ + ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x20000" "0x20000" "1" + ;; esac config_load ubootenv diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 209ec37d3..eb10e2171 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -55,6 +55,7 @@ ALLWIFIBOARDS:= \ plasmacloud_pa1200 \ plasmacloud_pa2200 \ p2w_r619ac \ + qnap_301w \ qxwlan_e2600ac \ redmi_ax6 \ xiaomi_ax3600 \ @@ -160,6 +161,7 @@ $(eval $(call generate-ipq-wifi-package,netgear_wac510,Netgear WAC510)) $(eval $(call generate-ipq-wifi-package,plasmacloud_pa1200,Plasma Cloud PA1200)) $(eval $(call generate-ipq-wifi-package,plasmacloud_pa2200,Plasma Cloud PA2200)) $(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC)) +$(eval $(call generate-ipq-wifi-package,qnap_301w,QNAP 301w)) $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC)) $(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6)) $(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600)) diff --git a/package/firmware/ipq-wifi/board-qnap_301w.ipq8074 b/package/firmware/ipq-wifi/board-qnap_301w.ipq8074 new file mode 100644 index 0000000000000000000000000000000000000000..6b8f8b9ce8470b4d141ac5547361176cc25542fd GIT binary patch literal 131172 zcmeHw33OD~ndV=wN~HxMgea-1K!Btw2|;W(#%7ZQNCJT{k`UTAKnQHW1}rukW6Ta_ z5vzp3j^hyGCCA6z?Kn>2Gbgr5oMqBU=Je^)lS$m^EZxo|-P6;Fj|G)pe@9I5j#loWdi)u`8}DDcVPpIK8`sU7u5)cquGzMZ?2MT+?|W*^wvB7H?3lNrqNwuz zho(RHv_r2!6Nk85dUF59Pkb(M?n`;NPXD)F|F=Q^w^9GMN&mN5FO7fB&S2_c{$o_e z6vA0>T11YK-^0JHJ>-qBtQ5ys{WH@sU;pGg^7PLF$87yGKlDAkkPGjEY&c&5pZ5x$PDzY_ zWB^n&pjGVuEBTwN|8@UQ3;$kzb@h|pSA8iIdM|lv35PGvc{j&f_dNO)m!uo}g6Kt~ zmvA`#fMujRMwb}AC0xMac5yh3ysWaOp`~@*hK{pcmtMa7>X+Vn``!26|K@kT|DziQ z>55B;XGlm$h~u}5|GE)xDAxzJsSh$rBsu~yagA$`C+#W z4_T|KA%(!;AP_4)~ zv&6nt(z~8mI@RZ7oc!=53b*e*e(B0v*F!-h<71HtABgx~6Y(4b9xWmXIMj-rfP2LM zbvLHQ1$&mji8}dIDNk{wsS3~kRUmGOb3GiT=+LagT-kzeSgS1|j3`P{)U%I*u3^jLHKBew!F@4CsTO814^YFt-;N zKnFSoZvcbCq4s-&!Oub%ypHxMZ(@+rOAJgqIBL`p#^73X95aETj=>i#dNeWk=jieo z#E^DiV$cXXfFAAI!DQMo?ErQ(?tsz%c%0D2rUQfDMQ=ZB2POs~ThcKYk2?N$^g4*a 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 + + echo "flashing rootfs to ${rootfs}" + tar xf $tar_file ${board_dir}/root -O >"${rootfs}" + + # a padded rootfs is needed for overlay fs creation + local offset=$(tar xf $tar_file ${board_dir}/root -O | wc -c) + [ $offset -lt 65536 ] && { + echo Wrong size for rootfs: $offset + sleep 10 + reboot -f + } + + # Mount loop for rootfs_data + local loopdev="$(losetup -f)" + losetup -o $offset $loopdev $rootfs || { + echo "Failed to mount looped rootfs_data." + sleep 10 + reboot -f + } + + echo "Format new rootfs_data at position ${offset}." + mkfs.ext4 -F -L rootfs_data $loopdev + mkdir /tmp/new_root + mount -t ext4 $loopdev /tmp/new_root && { + echo "Saving config to rootfs_data at position ${offset}." + cp -v "$UPGRADE_BACKUP" "/tmp/new_root/$BACKUP_FILE" + umount /tmp/new_root + } + + # Cleanup + losetup -d $loopdev >/dev/null 2>&1 + sync + umount -a + reboot -f +} diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh index 9eb346f64..d0807d22a 100644 --- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh @@ -10,6 +10,11 @@ platform_check_image() { platform_do_upgrade() { case "$(board_name)" in + qnap,301w) + kernelname="0:HLOS" + rootfsname="rootfs" + mmc_do_upgrade "$1" + ;; redmi,ax6|\ xiaomi,ax3600|\ xiaomi,ax9000) diff --git a/target/linux/ipq807x/config-5.10 b/target/linux/ipq807x/config-5.10 index b4072d0ad..d478cd30f 100644 --- a/target/linux/ipq807x/config-5.10 +++ b/target/linux/ipq807x/config-5.10 @@ -1,6 +1,7 @@ CONFIG_64BIT=y # CONFIG_APQ_GCC_8084 is not set # CONFIG_APQ_MMCC_8084 is not set +CONFIG_AQUANTIA_PHY=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_KEEP_MEMBLOCK=y diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts new file mode 100644 index 000000000..6d25dbd28 --- /dev/null +++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts @@ -0,0 +1,823 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* Copyright (c) 2021, Dirk Buchwalder */ + +/dts-v1/; + +#include "ipq8074.dtsi" +#include "ipq8074-hk-cpu.dtsi" +#include "ipq8074-ess.dtsi" +#include +#include +#include + +/ { + #address-cells = <2>; + #size-cells = <2>; + + model = "QNAP 301w"; + compatible = "qnap,301w", "qcom,ipq8074"; + interrupt-parent = <&intc>; + + aliases { + serial0 = &blsp1_uart5; + /* + * Aliases as required by u-boot + * to patch MAC addresses + */ + led-boot = &led_system_red; + led-failsafe = &led_system_red; + led-running = &led_pwr_green; + led-upgrade = &led_system_red; + ethernet0 = &dp1; + ethernet1 = &dp2; + ethernet2 = &dp3; + ethernet3 = &dp4; + ethernet4 = &dp5; + ethernet5 = &dp6; + label-mac-device = &dp1; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + keys { + compatible = "gpio-keys"; + + wps { + label = "wps"; + gpios = <&tlmm 57 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_system_green: system-green { + label = "green:system"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_system_red: system-red { + label = "red:system"; + gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_pwr_green: pwr-green { + label = "green:pwr"; + gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_wifi_green: wifi-green { + label = "green:wifi"; + gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan1_green: lan1-green { + label = "green:lan1"; + gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan1_amber: lan1-amber { + label = "amber:lan1"; + gpios = <&tlmm 7 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan2_green: lan2-green { + label = "green:lan2"; + gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan2_amber: lan2-amber { + label = "amber:lan2"; + gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan3_green: lan3-green { + label = "green:lan3"; + gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan3_amber: lan3-amber { + label = "amber:lan3"; + gpios = <&tlmm 13 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan4_green: lan4-green { + label = "green:lan4"; + gpios = <&tlmm 14 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_lan4_amber: lan4-amber { + label = "amber:lan4"; + gpios = <&tlmm 15 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_10g_1_green: 10g_1-green { + label = "green:10g_1"; + gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_10g_1_amber: 10g_1-amber { + label = "amber:10g_1"; + gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_10g_2_green: 10g_2-green { + label = "green:10g_2"; + gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led_10g_2_amber: 10g_2-amber { + label = "amber:10g_2"; + gpios = <&tlmm 52 GPIO_ACTIVE_HIGH>; + color = ; + }; + }; +}; + +&tlmm { + + mdio_pins: mdio-pins { + mdc { + pins = "gpio68"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mdio { + pins = "gpio69"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio57"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + rst_button { + pins = "gpio67"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + qpic_pins: qpic-pins { + status = "disabled"; + /*disabling qpic-pins due to the leds are using all of the gpios*/ + }; + + leds_pins: leds_pinmux { + led_pwr_green { + pins = "gpio4"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_system_green { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_system_red { + pins = "gpio3"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan1_green { + pins = "gpio6"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan1_amber { + pins = "gpio7"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan2_green { + pins = "gpio8"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan2_amber { + pins = "gpio11"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan3_green { + pins = "gpio12"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan3_amber { + pins = "gpio13"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan4_green { + pins = "gpio14"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lan4_amber { + pins = "gpio15"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_10g_1_green { + pins = "gpio54"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_10g_1_amber { + pins = "gpio56"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_10g_2_green { + pins = "gpio51"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_10g_2_amber { + pins = "gpio52"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_wifi_green { + pins = "gpio42"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; +}; + +&blsp1_uart5 { + status = "okay"; +}; + +&prng { + status = "okay"; +}; + +&ssphy_0 { + status = "okay"; +}; + +&qusb_phy_0 { + status = "okay"; +}; + +&ssphy_1 { + status = "okay"; +}; + +&qusb_phy_1 { + status = "okay"; +}; + +&usb_0 { + status = "okay"; +}; + +&usb_1 { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&blsp1_spi1 { /* BLSP1 QUP1 */ + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + cs-gpios = <0>; + status = "okay"; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "jedec,spi-nor"; + spi-max-frequency = <50000000>; + + partitions { + compatible = "qcom,smem-part"; + }; + }; +}; + +&mdio { + status = "okay"; + + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; + + ethernet-phy@0 { + compatible ="ethernet-phy-ieee802.3-c45"; + reg = <0>; + reset-gpios = <&tlmm 59 GPIO_ACTIVE_LOW>; + }; + + ethernet-phy@8 { + compatible ="ethernet-phy-ieee802.3-c45"; + reg = <8>; + reset-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>; + }; + + ethernet-phy@16 { + reg = <16>; + }; + + ethernet-phy@17 { + reg = <17>; + }; + + ethernet-phy@18 { + reg = <18>; + }; + + ethernet-phy@19 { + reg = <19>; + }; + +}; + +&sdhc_1 { + /* According to the stock dts from the QNAP gpl drop + * the emmc has a problem with the hs400 > hs200 speed switch. + * But at the momment it doesn't seems possible to run that card in hs200 mode, + * it doesn't get recognized without the hs400 mode. + * Unfortunately it's not stable in hs400 mode so reduce the speed to mmc highspeed. + */ + no-1-8-v; + cap-sd-highspeed; + cap-mmc-highspeed; + max-frequency = <5000000>; + vqmmc-supply = <&ldo11>; + status = "okay"; +}; + +&switch { + status = "okay"; + + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x3e>; /* lan port bitmap */ + switch_wan_bmp = <0xc0>; /* wan port bitmap */ + switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xd>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xd>; /* mac mode for uniphy instance2*/ + bm_tick_mode = <0>; /* bm tick mode */ + tm_tick_mode = <0>; /* tm tick mode */ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <16>; + }; + port@1 { + port_id = <2>; + phy_address = <17>; + }; + port@2 { + port_id = <3>; + phy_address = <18>; + }; + port@3 { + port_id = <4>; + phy_address = <19>; + }; + port@4 { + port_id = <5>; + phy_address = <8>; + compatible = "ethernet-phy-ieee802.3-c45"; + ethernet-phy-ieee802.3-c45; + }; + port@5 { + port_id = <6>; + phy_address = <0>; + compatible = "ethernet-phy-ieee802.3-c45"; + ethernet-phy-ieee802.3-c45; + }; + }; + + port_scheduler_resource { + port@0 { + port_id = <0>; + ucast_queue = <0 143>; + mcast_queue = <256 271>; + l0sp = <0 35>; + l0cdrr = <0 47>; + l0edrr = <0 47>; + l1cdrr = <0 7>; + l1edrr = <0 7>; + }; + port@1 { + port_id = <1>; + ucast_queue = <144 159>; + mcast_queue = <272 275>; + l0sp = <36 39>; + l0cdrr = <48 63>; + l0edrr = <48 63>; + l1cdrr = <8 11>; + l1edrr = <8 11>; + }; + port@2 { + port_id = <2>; + ucast_queue = <160 175>; + mcast_queue = <276 279>; + l0sp = <40 43>; + l0cdrr = <64 79>; + l0edrr = <64 79>; + l1cdrr = <12 15>; + l1edrr = <12 15>; + }; + port@3 { + port_id = <3>; + ucast_queue = <176 191>; + mcast_queue = <280 283>; + l0sp = <44 47>; + l0cdrr = <80 95>; + l0edrr = <80 95>; + l1cdrr = <16 19>; + l1edrr = <16 19>; + }; + port@4 { + port_id = <4>; + ucast_queue = <192 207>; + mcast_queue = <284 287>; + l0sp = <48 51>; + l0cdrr = <96 111>; + l0edrr = <96 111>; + l1cdrr = <20 23>; + l1edrr = <20 23>; + }; + port@5 { + port_id = <5>; + ucast_queue = <208 223>; + mcast_queue = <288 291>; + l0sp = <52 55>; + l0cdrr = <112 127>; + l0edrr = <112 127>; + l1cdrr = <24 27>; + l1edrr = <24 27>; + }; + port@6 { + port_id = <6>; + ucast_queue = <224 239>; + mcast_queue = <292 295>; + l0sp = <56 59>; + l0cdrr = <128 143>; + l0edrr = <128 143>; + l1cdrr = <28 31>; + l1edrr = <28 31>; + }; + port@7 { + port_id = <7>; + ucast_queue = <240 255>; + mcast_queue = <296 299>; + l0sp = <60 63>; + l0cdrr = <144 159>; + l0edrr = <144 159>; + l1cdrr = <32 35>; + l1edrr = <32 35>; + }; + }; + port_scheduler_config { + port@0 { + port_id = <0>; + l1scheduler { + group@0 { + sp = <0 1>; /*L0 SPs*/ + /*cpri cdrr epri edrr*/ + cfg = <0 0 0 0>; + }; + }; + l0scheduler { + group@0 { + /*unicast queues*/ + ucast_queue = <0 4 8>; + /*multicast queues*/ + mcast_queue = <256 260>; + /*sp cpri cdrr epri edrr*/ + cfg = <0 0 0 0 0>; + }; + group@1 { + ucast_queue = <1 5 9>; + mcast_queue = <257 261>; + cfg = <0 1 1 1 1>; + }; + group@2 { + ucast_queue = <2 6 10>; + mcast_queue = <258 262>; + cfg = <0 2 2 2 2>; + }; + group@3 { + ucast_queue = <3 7 11>; + mcast_queue = <259 263>; + cfg = <0 3 3 3 3>; + }; + }; + }; + port@1 { + port_id = <1>; + l1scheduler { + group@0 { + sp = <36>; + cfg = <0 8 0 8>; + }; + group@1 { + sp = <37>; + cfg = <1 9 1 9>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <144>; + ucast_loop_pri = <16>; + mcast_queue = <272>; + mcast_loop_pri = <4>; + cfg = <36 0 48 0 48>; + }; + }; + }; + port@2 { + port_id = <2>; + l1scheduler { + group@0 { + sp = <40>; + cfg = <0 12 0 12>; + }; + group@1 { + sp = <41>; + cfg = <1 13 1 13>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <160>; + ucast_loop_pri = <16>; + mcast_queue = <276>; + mcast_loop_pri = <4>; + cfg = <40 0 64 0 64>; + }; + }; + }; + port@3 { + port_id = <3>; + l1scheduler { + group@0 { + sp = <44>; + cfg = <0 16 0 16>; + }; + group@1 { + sp = <45>; + cfg = <1 17 1 17>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <176>; + ucast_loop_pri = <16>; + mcast_queue = <280>; + mcast_loop_pri = <4>; + cfg = <44 0 80 0 80>; + }; + }; + }; + port@4 { + port_id = <4>; + l1scheduler { + group@0 { + sp = <48>; + cfg = <0 20 0 20>; + }; + group@1 { + sp = <49>; + cfg = <1 21 1 21>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <192>; + ucast_loop_pri = <16>; + mcast_queue = <284>; + mcast_loop_pri = <4>; + cfg = <48 0 96 0 96>; + }; + }; + }; + port@5 { + port_id = <5>; + l1scheduler { + group@0 { + sp = <52>; + cfg = <0 24 0 24>; + }; + group@1 { + sp = <53>; + cfg = <1 25 1 25>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <208>; + ucast_loop_pri = <16>; + mcast_queue = <288>; + mcast_loop_pri = <4>; + cfg = <52 0 112 0 112>; + }; + }; + }; + port@6 { + port_id = <6>; + l1scheduler { + group@0 { + sp = <56>; + cfg = <0 28 0 28>; + }; + group@1 { + sp = <57>; + cfg = <1 29 1 29>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <224>; + ucast_loop_pri = <16>; + mcast_queue = <292>; + mcast_loop_pri = <4>; + cfg = <56 0 128 0 128>; + }; + }; + }; + port@7 { + port_id = <7>; + l1scheduler { + group@0 { + sp = <60>; + cfg = <0 32 0 32>; + }; + group@1 { + sp = <61>; + cfg = <1 33 1 33>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <240>; + ucast_loop_pri = <16>; + mcast_queue = <296>; + cfg = <60 0 144 0 144>; + }; + }; + }; + }; +}; + +&edma { + status = "okay"; +}; + +&soc { + dp1: dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a001000 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <16>; + phy-mode = "sgmii"; + mdio-bus = <&mdio>; + }; + + dp2: dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a001200 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <17>; + phy-mode = "sgmii"; + mdio-bus = <&mdio>; + }; + + dp3: dp3 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <3>; + reg = <0x3a001400 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <18>; + phy-mode = "sgmii"; + mdio-bus = <&mdio>; + }; + + dp4: dp4 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <4>; + reg = <0x3a001600 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <19>; + phy-mode = "sgmii"; + mdio-bus = <&mdio>; + }; + + dp5: dp5 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <5>; + reg = <0x3a001800 0x200>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <8>; + phy-mode = "sgmii"; + mdio-bus = <&mdio>; + }; + + dp6: dp6 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <6>; + reg = <0x3a007000 0x3fff>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <0>; + phy-mode = "sgmii"; + mdio-bus = <&mdio>; + }; +}; + +&wifi { + status = "okay"; + /* using board_id 0xff is intentionally + * as the stock firmware is also using this default board_id + */ + qcom,board_id = <0xff>; + qcom,ath11k-calibration-variant = "QNAP-301w"; +}; diff --git a/target/linux/ipq807x/image/generic.mk b/target/linux/ipq807x/image/generic.mk index 877b4a87d..dd1802ce4 100644 --- a/target/linux/ipq807x/image/generic.mk +++ b/target/linux/ipq807x/image/generic.mk @@ -17,6 +17,21 @@ define Device/UbiFit IMAGE/nand-sysupgrade.bin := sysupgrade-tar | append-metadata endef +define Device/qnap_301w + $(call Device/FitImage) + DEVICE_VENDOR := QNAP + DEVICE_MODEL := 301w + DEVICE_DTS_CONFIG := config@hk01 + KERNEL_SIZE := 16384k + BLOCKSIZE := 512k + SOC := ipq8072 + IMAGES += factory.bin sysupgrade.bin + IMAGE/factory.bin := append-rootfs | pad-rootfs | pad-to 64k + IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-to 64k | sysupgrade-tar rootfs=$$$$@ | append-metadata + DEVICE_PACKAGES := ipq-wifi-qnap_301w e2fsprogs kmod-fs-ext4 losetup +endef +TARGET_DEVICES += qnap_301w + define Device/redmi_ax6 $(call Device/xiaomi_ax3600) DEVICE_VENDOR := Redmi diff --git a/target/linux/ipq807x/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch b/target/linux/ipq807x/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch index 062ccb2e5..14ed1e1d2 100644 --- a/target/linux/ipq807x/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch +++ b/target/linux/ipq807x/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch @@ -12,10 +12,11 @@ Signed-off-by: Robert Marko --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile -@@ -3,6 +3,9 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.d +@@ -3,6 +3,10 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.d dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb dtb-$(CONFIG_ARCH_QCOM) += ipq6018-cp01-c1.dtb ++dtb-$(CONFIG_ARCH_QCOM) += ipq8072-301w.dtb +dtb-$(CONFIG_ARCH_QCOM) += ipq8071-ax6.dtb +dtb-$(CONFIG_ARCH_QCOM) += ipq8071-ax3600.dtb +dtb-$(CONFIG_ARCH_QCOM) += ipq8071-mf269.dtb