qualcommax: ipq60xx: add Linksys MR7500 support
authorWeikai Kong <priv@pppig236.com>
Sat, 21 Dec 2024 23:49:15 +0000 (18:49 -0500)
committerRobert Marko <robimarko@gmail.com>
Fri, 28 Mar 2025 11:38:33 +0000 (12:38 +0100)
Codename: Divo

Hardware specification:
========
SoC: Qualcomm IPQ6018
RAM: 512MB (2x ESMT 256MB DDR3L M15T2G16128A–DEBG2R)
NAND Flash: 512MB (Macronix MX30UF4G18AC or SK Hynix H27S4G8F2EDA-BC)
Ethernet: 1x 10/100/1000/2500/5000Mbps (Marvell AQR114C-B0)
Ethernet: 4x 10/100/1000Mbps (Qualcomm QCA8075)
WiFi1: 6GHz ax 4x4@20/40/160 MHz (Qualcomm QCN9024 + Skyworks SKY85784-11) - channels 33-229
WiFi2: 5GHz ax 2x2@20/40/80 MHz (Qualcomm QCN5052 + Skyworks SKY85755-11) - channels 36-177
WiFi3: 2.4GHz ax 2x2@20/40 MHz (Qualcomm QCN5022 + Skyworks SKY8340-11)
IoT: Bluetooth 5 (CSR8811) - not implemented
LED: 1x RGB status + USB Blue (PWM)
USB: 1x USB 3.0
Button: WPS, Reset

Flash instructions (Without Serial):
========
Open Linksys Web UI - http://192.168.1.1/ca or http://linksysxxxxx.lan/ca depending on your setup.
  xxxxx is the last 5 digits from the SN found on a sticker under the device.
Click on the Linksys Logo to by-pass smart app registration.
Login with your admin password. The default password can be found on the same sticker.
To enter into the support mode, click on the “CA” link and the bottom of the page.
Open the “Connectivity” menu and upload the squash-factory image with the “Choose file” button.
Click start. Ignore all the prompts and warnings by click “yes” in all the popups.

Flash instructions (With Serial):
========
1. Installation using serial connection from OEM firmware (default login: root, password: admin):
- fw_printenv -n boot_part
In case of 2:
- flash_erase /dev/mtd13 0 0
- nandwrite -p /dev/mtd13 openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin
or in case of 1:
- flash_erase /dev/mtd15 0 0
- nandwrite -p /dev/mtd15 openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin
After first boot install firmware on second partition:
- mtd -r -e kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin kernel
or:
- mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin alt_kernel

2. Installation from initramfs image using USB drive:
Put the initramfs image on the USB drive:
- dd bs=1M if=openwrt-qualcommax-ipq60xx-linksys_mr7500-initramfs-uImage.itb of=/dev/sda
Stop u-boot and run:
- usb start && usbboot $loadaddr 0 && bootm $loadaddr
Write firmware to the flash from initramfs:
- mtd -e kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin kernel
and:
- mtd -r -e alt_kernel -n write openwrt-qualcommax-ipq60xx-linksys_mr7500-squashfs-factory.bin alt_kernel

3. Back to the OEM firmware:
- mtd -e kernel -n write FW_MR7500_1.1.12.211919_prod.img kernel
and:
- mtd -r -e alt_kernel -n write FW_MR7500_1.1.12.211919_prod.img alt_kernel

4. USB recovery:
Put the initramfs image on the USB:
- dd bs=1M if=openwrt-qualcommax-ipq60xx-linksys_mr7500-initramfs-uImage.itb of=/dev/sda
Set u-boot env:
- fw_setenv bootusb 'usb start && usbboot $loadaddr 0 && bootm $loadaddr'
- fw_setenv bootcmd 'run bootusb; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi'

AQR firmware:
========
0. Firmware extracting:
To extract the firmware, use unblob (unblob.org)
1. Firmware loading:
To properly load the firmware and initialize AQR PHY, we must use the u-boot aq_load_fw function.
To do this, you need to modify u-boot env:
With USB recovery:
- fw_setenv bootcmd 'aq_load_fw; run bootusb; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi'
and without:
- fw_setenv bootcmd 'aq_load_fw; if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi'
2. Firmware updating:
Newer firmware (AQR114C.cld) is available in the latest OEM firmware (https://downloads.linksys.com/support/assets/firmware/FW_MR7500_1.1.12.211919_prod.img).
Copy AQR114C.cld to /lib/firmware/marvell

Link: openwrt#17428

Signed-off-by: Weikai Kong <priv@pppig236.com>
Link: https://github.com/openwrt/openwrt/pull/18185
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq60xx
package/firmware/ipq-wifi/Makefile
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-mr7500.dts [new file with mode: 0644]
target/linux/qualcommax/image/ipq60xx.mk
target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds
target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network
target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
target/linux/qualcommax/ipq60xx/base-files/etc/init.d/bootcount
target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh

index aa01e040ea074481004dfde22c56fa09c087ac6a..ba6d9ff1fa33cd4469acd4acc8972c5b22fc7d0e 100644 (file)
@@ -21,13 +21,14 @@ cambiumnetworks,xe3-4)
        ;;
 glinet,gl-ax1800|\
 glinet,gl-axt1800|\
+linksys,mr7350|\
+linksys,mr7500)
+       ubootenv_add_mtd "u_env" "0x0" "0x40000" "0x20000"
+       ;;
 netgear,wax214|\
 tplink,eap610-outdoor)
        ubootenv_add_mtd "0:appsblenv" "0x0" "0x40000" "0x20000"
        ;;
-linksys,mr7350)
-       ubootenv_add_mtd "u_env" "0x0" "0x40000" "0x20000"
-       ;;
 yuncore,fap650)
        ubootenv_add_mtd "0:appsblenv" "0x0" "0x10000" "0x10000"
        ;;
index b9009cf53282c1d16807ba2ba308a89e66bf21f1..107f5ffed203425e04cb947847155e59a459f9d8 100644 (file)
@@ -43,6 +43,7 @@ ALLWIFIBOARDS:= \
        linksys_homewrk \
        linksys_mr5500 \
        linksys_mr7350 \
+       linksys_mr7500 \
        linksys_mx2000 \
        linksys_mx4200 \
        linksys_mx5300 \
@@ -188,6 +189,7 @@ $(eval $(call generate-ipq-wifi-package,glinet_gl-axt1800,GL.iNet GL-AXT1800))
 $(eval $(call generate-ipq-wifi-package,linksys_homewrk,Linksys HomeWRK))
 $(eval $(call generate-ipq-wifi-package,linksys_mr5500,Linksys MR5500))
 $(eval $(call generate-ipq-wifi-package,linksys_mr7350,Linksys MR7350))
+$(eval $(call generate-ipq-wifi-package,linksys_mr7500,Linksys MR7500))
 $(eval $(call generate-ipq-wifi-package,linksys_mx2000,Linksys MX2000))
 $(eval $(call generate-ipq-wifi-package,linksys_mx4200,Linksys MX4200))
 $(eval $(call generate-ipq-wifi-package,linksys_mx5300,Linksys MX5300))
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-mr7500.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-mr7500.dts
new file mode 100644 (file)
index 0000000..9cfd3a5
--- /dev/null
@@ -0,0 +1,544 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+// Copyright 2024 Weikai Kong (priv at pppig236.com)
+
+/dts-v1/;
+
+#include "ipq6018-512m.dtsi"
+#include "ipq6018-cp-cpu.dtsi"
+#include "ipq6018-ess.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "Linksys MR7500";
+       compatible = "linksys,mr7500", "qcom,ipq6018";
+       
+       aliases {
+               serial0 = &blsp1_uart3;
+               serial1 = &blsp1_uart2;
+
+               led-boot = &led_system_blue;
+               led-running = &led_system_blue;
+               led-failsafe = &led_system_red;
+               led-upgrade = &led_system_green;
+
+               label-mac-device = &dp5_syn;
+       };
+       
+       chosen {
+               stdout-path = "serial0:115200n8";
+               bootargs-append = " root=/dev/ubiblock0_0";
+       };
+       
+       extcon_usb {
+               pinctrl-0 = <&extcon_usb_pins>;
+               pinctrl-names = "default";
+               id-gpio = <&tlmm 26 GPIO_ACTIVE_LOW>;
+               status = "okay";
+       };
+       
+       gpio_keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&button_pins>;
+               pinctrl-names = "default";
+               
+               wps {
+                       label = "wps";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
+               };
+
+               reset {
+                       label = "reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&tlmm 56 GPIO_ACTIVE_LOW>;
+               };
+       };
+       
+       leds {
+               compatible = "pwm-leds";
+               
+               usb {
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_USB;
+                       gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+                       pwms = <&pwm 1 650000>;
+                       max-brightness = <255>;
+                       trigger-sources = <&usb3_port1>, <&usb3_port2>;
+                       linux,default-trigger = "usbport";
+               };
+               
+               led_system_red: red {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_INDICATOR;
+                       pwms = <&pwm 2 1250000>;
+                       max-brightness = <255>;
+                       panic-indicator;
+               };
+               
+               led_system_green: green {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_INDICATOR;
+                       pwms = <&pwm 3 1250000>;
+                       max-brightness = <255>;
+               };
+               
+               led_system_blue: blue {
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_POWER;
+                       pwms = <&pwm 0 1250000>;
+                       max-brightness = <255>;
+               };
+       };
+       
+       reg_usb_vbus: regulator-usb-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&tlmm {
+       pwm_pins: pwm_pinmux {
+               /*LED_B*/
+               mux_0 {
+                       pins = "gpio29";
+                       function = "pwm03";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+               
+               /*LED_USB*/
+               mux_1 {
+                       pins = "gpio30";
+                       function = "pwm13";
+                       drive-strength = <8>;
+                       bias-pull-down;
+               };
+               
+               /*LED_R*/
+               mux_2 {
+                       pins = "gpio31";
+                       function = "pwm23";
+                       drive-strength = <8>;
+                       bias-pull-down;
+               };
+               
+               /*LED_G*/
+               mux_3 {
+                       pins = "gpio32";
+                       function = "pwm33";
+                       drive-strength = <8>;
+                       bias-pull-down;
+               };
+       };
+       
+       extcon_usb_pins: extcon_usb_pins {
+               pins = "gpio26";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+       
+       button_pins: button_pins {
+               wps_button {
+                       pins = "gpio37";
+                       function = "gpio";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+               reset_button {
+                       pins = "gpio56";
+                       function = "gpio";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+       };
+
+       mdio_pins: mdio_pinmux {
+               mux_0 {
+                       pins = "gpio64";
+                       function = "mdc";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+               mux_1 {
+                       pins = "gpio65";
+                       function = "mdio";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+       };
+
+       hsuart_pins: hsuart_pins {
+               pins = "gpio71", "gpio72", "gpio69", "gpio70";
+               function = "blsp1_uart";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       btcoex_pins: btcoex_pins {
+               mux_0 {
+                       pins = "gpio51";
+                       function = "pta1_1";
+                       drive-strength = <6>;
+                       bias-pull-down;
+               };
+               mux_1 {
+                       pins = "gpio53";
+                       function = "pta1_0";
+                       drive-strength = <6>;
+                       bias-pull-down;
+               };
+               mux_2 {
+                       pins = "gpio52";
+                       function = "pta1_2";
+                       drive-strength = <6>;
+                       bias-pull-down;
+               };
+       };
+};
+
+&pwm {
+       pinctrl-0 = <&pwm_pins>;
+       pinctrl-names = "default";
+       #pwm-cells = <2>;
+       status = "okay";
+};
+
+&mdio {
+       pinctrl-0 = <&mdio_pins>;
+       pinctrl-names = "default";
+       reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
+       status = "okay";
+       
+       ethernet-phy-package {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "qcom,qca8075-package";
+               reg = <0>;
+
+               qcom,package-mode = "qsgmii";
+               
+               qca8075_0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                               
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+
+               qca8075_1: ethernet-phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <1>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                               
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+
+               qca8075_2: ethernet-phy@2 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <2>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                               
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+
+               qca8075_3: ethernet-phy@3 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <3>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                               
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+       };
+
+       aqr114c: ethernet-phy@8 {
+               reg = <8>;
+               reset-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>;
+               compatible = "ethernet-phy-ieee802.3-c45";
+               firmware-name = "marvell/AQR114C.cld";
+
+               leds {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_ORANGE>;
+                               function = LED_FUNCTION_WAN;
+                               default-state = "keep";
+                       };
+                       
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_GREEN>;
+                               function = LED_FUNCTION_WAN;
+                               default-state = "keep";
+                       };
+               };
+       };
+};
+
+&dp1 {
+       status = "okay";
+       label = "lan1";
+       phy-handle = <&qca8075_0>;
+       phy-mode = "qsgmii";
+       nvmem-cells = <&hw_mac_addr 1>;
+       nvmem-cell-names = "mac-address";
+};
+
+&dp2 {
+       status = "okay";
+       label = "lan2";
+       phy-handle = <&qca8075_1>;
+       phy-mode = "qsgmii";
+       nvmem-cells = <&hw_mac_addr 1>;
+       nvmem-cell-names = "mac-address";
+};
+
+&dp3 {
+       status = "okay";
+       label = "lan3";
+       phy-handle = <&qca8075_2>;
+       phy-mode = "qsgmii";
+       nvmem-cells = <&hw_mac_addr 1>;
+       nvmem-cell-names = "mac-address";
+};
+
+&dp4 {
+       status = "okay";
+       label = "lan4";
+       phy-handle = <&qca8075_3>;
+       phy-mode = "qsgmii";
+       nvmem-cells = <&hw_mac_addr 1>;
+       nvmem-cell-names = "mac-address";
+};
+
+&dp5_syn {
+       status = "okay";
+       label = "wan";
+       phy-handle = <&aqr114c>;
+       phy-mode = "usxgmii";
+       nvmem-cells = <&hw_mac_addr 0>;
+       nvmem-cell-names = "mac-address";
+};
+
+&edma {
+       status = "okay";
+};
+
+&switch {
+       status = "okay";
+       switch_lan_bmp = <( ESS_PORT1 | ESS_PORT2 | ESS_PORT3 | ESS_PORT4 )>;
+       switch_wan_bmp = <ESS_PORT5>;
+       switch_mac_mode = <MAC_MODE_QSGMII>;
+       switch_mac_mode1 = <MAC_MODE_USXGMII>;
+       
+       qcom,port_phyinfo {
+               port@1 {
+                       port_id = <1>;
+                       phy_address = <0>;
+               };
+               port@2 {
+                       port_id = <2>;
+                       phy_address = <1>;
+               };
+               port@3 {
+                       port_id = <3>;
+                       phy_address = <2>;
+               };
+               port@4 {
+                       port_id = <4>;
+                       phy_address = <3>;
+               };
+               port@5 {
+                       port_id = <5>;
+                       phy_address = <8>;
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       ethernet-phy-ieee802.3-c45;
+               };
+       };
+};
+
+&blsp1_uart3 {
+       pinctrl-0 = <&serial_3_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&blsp1_uart2 {
+       pinctrl-0 = <&hsuart_pins &btcoex_pins>;
+       pinctrl-names = "default";
+       dmas = <&blsp_dma 2>, <&blsp_dma 3>;
+       dma-names = "tx", "rx";
+       status = "okay";
+       bluetooth { // doesn't work
+               compatible = "csr,8811";
+               enable-gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&qpic_bam {
+       status = "okay";
+};
+
+&qpic_nand {
+       status = "okay";
+
+       nand@0 {
+               reg = <0>;
+               nand-ecc-strength = <4>;
+               nand-ecc-step-size = <512>;
+               nand-bus-width = <8>;
+
+               partitions {
+                       compatible = "qcom,smem-part";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition-0-devinfo {
+                               label = "devinfo";
+                               read-only;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               nvmem-layout {
+                                       compatible = "ascii-eq-delim-env";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       hw_mac_addr: hw_mac_addr {
+                                               compatible = "mac-base";
+                                               #nvmem-cell-cells = <1>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&ssphy_0 {
+       status = "okay";
+};
+
+&dwc_0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       
+       usb3_port1: port@1 {
+               reg = <1>;
+               #trigger-source-cells = <0>;
+       };
+       
+       usb3_port2: port@2 {
+               reg = <2>;
+               #trigger-source-cells = <0>;
+       };
+};
+
+&qusb_phy_0 {
+       status = "okay";
+       vdd-supply = <&reg_usb_vbus>;
+};
+
+&usb3 {
+       status = "okay";
+       vbus-supply = <&reg_usb_vbus>;
+};
+
+&pcie_phy {
+       status = "okay";
+};
+
+&pcie0 {
+       status = "okay";
+       bridge@0,0 {
+               reg = <0x00000000 0 0 0 0>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               ranges;
+               
+               wifi@1,0 {
+                       status = "okay";
+                       /* ath11k has no DT compatible for PCI cards */
+                       compatible = "pci17cb,1104";
+                       reg = <0x00010000 0 0 0 0>;
+                       qcom,ath11k-calibration-variant = "Linksys-MR7500";
+               };
+       };
+};
+
+&wifi {
+       status = "okay";
+       qcom,ath11k-calibration-variant = "Linksys-MR7500";
+       qcom,ath11k-fw-memory-mode = <1>;
+};
index 03e49b97f79c87aca49d5ad27659a99127c18988..41e06c5384041854b756001a009c1052620333cd 100644 (file)
@@ -75,6 +75,18 @@ define Device/linksys_mr7350
 endef
 TARGET_DEVICES += linksys_mr7350
 
+define Device/linksys_mr7500
+       $(call Device/linksys_mr)
+       DEVICE_MODEL := MR7500
+       SOC := ipq6018
+       NAND_SIZE := 512m
+       IMAGE_SIZE := 147456k
+       DEVICE_PACKAGES += ipq-wifi-linksys_mr7500 \
+               ath11k-firmware-qcn9074 kmod-ath11k-pci \
+               kmod-leds-pwm kmod-phy-aquantia
+endef
+TARGET_DEVICES += linksys_mr7500
+
 define Device/netgear_wax214
        $(call Device/FitImage)
        $(call Device/UbiFit)
index a9575eb4efc162eb7098b48af9bb6481880a5925..75735fd5ff47979f7794be8747bc31a1eb7d1100 100644 (file)
@@ -19,6 +19,18 @@ linksys,mr7350)
        ucidef_set_led_netdev "wan-port-link" "WAN-PORT-LINK" "90000.mdio-1:04:green:wan" "wan" "link_10 link_100 link_1000"
        ucidef_set_led_netdev "wan-port-traffic" "WAN-PORT-TRAFFIC" "90000.mdio-1:04:orange:wan" "wan" "tx rx link_10 link_100 link_1000"
        ;;
+linksys,mr7500)
+       ucidef_set_led_netdev "lan1-port-link" "LAN1-PORT-LINK" "90000.mdio-1:00:green:lan" "lan1" "link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan1-port-traffic" "LAN1-PORT-TRAFFIC" "90000.mdio-1:00:orange:lan" "lan1" "tx rx link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan2-port-link" "LAN2-PORT-LINK" "90000.mdio-1:01:green:lan" "lan2" "link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan2-port-traffic" "LAN2-PORT-TRAFFIC" "90000.mdio-1:01:orange:lan" "lan2" "tx rx link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan3-port-link" "LAN3-PORT-LINK" "90000.mdio-1:02:green:lan" "lan3" "link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan3-port-traffic" "LAN3-PORT-TRAFFIC" "90000.mdio-1:02:orange:lan" "lan3" "tx rx link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan4-port-link" "LAN4-PORT-LINK" "90000.mdio-1:03:green:lan" "lan4" "link_10 link_100 link_1000"
+       ucidef_set_led_netdev "lan4-port-traffic" "LAN4-PORT-TRAFFIC" "90000.mdio-1:03:orange:lan" "lan4" "tx rx link_10 link_100 link_1000"
+       ucidef_set_led_netdev "wan-port-link" "WAN-PORT-LINK" "90000.mdio-1:08:green:lan" "wan" "link_10 link_100 link_1000 link_2500 link_5000"
+       ucidef_set_led_netdev "wan-port-traffic" "WAN-PORT-TRAFFIC" "90000.mdio-1:08:orange:wan" "wan" "tx rx link_10 link_100 link_1000 link_2500 link_5000"
+       ;;
 yuncore,fap650)
        ucidef_set_led_netdev "wlan5ghz" "WLAN 5GHz LED" "blue:wlan-5ghz" "wlan0" "tx rx"
        ucidef_set_led_netdev "wlan2ghz" "WLAN 2.4GHz LED" "green:wlan-2ghz" "wlan1" "tx rx"
index 3fa86a37f15d49db691d11a9e6a9fe7f9999a728..e45bc32fb472c436f7a1cdfa2836ecafddf35098 100644 (file)
@@ -20,6 +20,7 @@ ipq60xx_setup_interfaces()
                ;;
        glinet,gl-ax1800|\
        linksys,mr7350|\
+       linksys,mr7500|\
        yuncore,fap650)
                ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
                ;;
index 061d2ad2ea3c23d2563a1522d8e18fe33a36e96f..0d240cd4f7ab18c429898643f08cde6296d6c583 100644 (file)
@@ -23,12 +23,14 @@ case "$FIRMWARE" in
                ath11k_patch_mac $(macaddr_add $label_mac 2) 1
                ath11k_set_macflag
                ;;
-       linksys,mr7350)
+       linksys,mr7350|\
+       linksys,mr7500)
                caldata_extract "0:art" 0x1000 0x10000
                addr=$(mtd_get_mac_ascii devinfo hw_mac_addr)
                ath11k_patch_mac $(macaddr_add $addr 2) 0
                ath11k_patch_mac $(macaddr_add $addr 1) 1
                ath11k_set_macflag
+               ath11k_remove_regdomain
                ;;
        netgear,wax214)
                caldata_extract "0:art" 0x1000 0x10000
@@ -57,6 +59,13 @@ case "$FIRMWARE" in
        cambiumnetworks,xe3-4)
                caldata_extract "0:ART" 0x26800 0x20000
                ;;
+       linksys,mr7500)
+               caldata_extract "0:art" 0x26800 0x20000
+               addr=$(mtd_get_mac_ascii devinfo hw_mac_addr)
+               ath11k_patch_mac $(macaddr_add $addr 3) 0
+               ath11k_set_macflag
+               ath11k_remove_regdomain
+               ;;
        esac
        ;;
 *)
index fbe245d988b81d8090cc7f12f59a6f7ef6ea5861..d2039eb05494c99313346a8a86e9abc7a0d49b40 100755 (executable)
@@ -4,7 +4,8 @@ START=99
 
 boot() {
        case $(board_name) in
-       linksys,mr7350)
+       linksys,mr7350|\
+       linksys,mr7500)
                mtd resetbc s_env || true
        ;;
        yuncore,fap650)
index b9b0ed1ed7fd888a10f28a44355711d0622a9217..59e5ef7ca2f669b5a59891fe7102085ac86022fe 100644 (file)
@@ -116,7 +116,8 @@ platform_do_upgrade() {
        qihoo,360v6)
                nand_do_upgrade "$1"
                ;;
-       linksys,mr7350)
+       linksys,mr7350|\
+       linksys,mr7500)
                boot_part="$(fw_printenv -n boot_part)"
                if [ "$boot_part" -eq "1" ]; then
                        fw_setenv boot_part 2