diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index da6f29e29e..0d39cea2a5 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -60,6 +60,7 @@ ALLWIFIBOARDS:= \ linksys_spnmx56 \ linksys_whw03 \ meraki_mr30h \ + meraki_underdog \ meraki_z3 \ netgear_lbr20 \ netgear_rax120v2 \ @@ -241,6 +242,7 @@ $(eval $(call generate-ipq-wifi-package,linksys_mx8500,Linksys MX8500)) $(eval $(call generate-ipq-wifi-package,linksys_spnmx56,Linksys SPNMX56)) $(eval $(call generate-ipq-wifi-package,linksys_whw03,Linksys WHW03)) $(eval $(call generate-ipq-wifi-package,meraki_mr30h,Meraki MR30H)) +$(eval $(call generate-ipq-wifi-package,meraki_underdog,Meraki underdog)) $(eval $(call generate-ipq-wifi-package,meraki_z3,Meraki Z3)) $(eval $(call generate-ipq-wifi-package,netgear_lbr20,Netgear LBR20)) $(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2)) diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network index 9b1ea2994a..801a64ae57 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -57,6 +57,7 @@ ipq40xx_setup_interfaces() dlink,dap-2610|\ engenius,eap1300|\ extreme-networks,ws-ap3915i|\ + meraki,mr20|\ meraki,mr33|\ meraki,mr74|\ mikrotik,lhgg-60ad|\ diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh index 7db23a1c77..9fca8edc1d 100644 --- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh @@ -178,6 +178,7 @@ platform_do_upgrade() { linksys,whw03) platform_do_upgrade_linksys_emmc "$1" ;; + meraki,mr20|\ meraki,gx20|\ meraki,z3) # DO NOT set CI_KERNPART to part.safe, diff --git a/target/linux/ipq40xx/files-6.12/arch/arm/boot/dts/qcom/qcom-ipq4029-meraki-underdog.dtsi b/target/linux/ipq40xx/files-6.12/arch/arm/boot/dts/qcom/qcom-ipq4029-meraki-underdog.dtsi new file mode 100644 index 0000000000..1c2fcdaa22 --- /dev/null +++ b/target/linux/ipq40xx/files-6.12/arch/arm/boot/dts/qcom/qcom-ipq4029-meraki-underdog.dtsi @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Device Tree Source for Meraki devices + * + * Copyright (C) 2017 Chris Blake + * Copyright (C) 2017 Christian Lamparter + * Copyright (C) 2025 Hal Martin + * + * Based on Cisco Meraki DTS from GPL release r25-linux-3.14-20170427 + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without + * any warranty of any kind, whether express or implied. + */ + +#include "qcom-ipq4029-meraki-common.dtsi" + +/ { + aliases { + led-boot = &status_green; + led-failsafe = &status_red; + led-running = &status_green; + led-upgrade = &power_orange; + }; + + leds { + compatible = "gpio-leds"; + + power_orange: power { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>; + panic-indicator; + }; + }; +}; + +&blsp1_i2c3 { + eeprom@56 { + compatible = "atmel,24c64"; + pagesize = <32>; + reg = <0x56>; + read-only; /* This holds our MAC & Meraki board-data */ + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + mac_address: mac-address@66 { + compatible = "mac-base"; + reg = <0x66 0x6>; + #nvmem-cell-cells = <1>; + }; + }; + }; +}; + +&tlmm { + i2c_0_pins: i2c_0_pinmux { + function = "blsp_i2c0"; + pins = "gpio10", "gpio11"; + drive-strength = <16>; + bias-disable; + }; +}; + +&mdio { + ethernet-phy-package@0 { + status = "disabled"; + }; +}; + +&switch { + /delete-property/ psgmii-ethphy; +}; + +ðphy0 { + status = "disabled"; +}; + +ðphy1 { + status = "disabled"; +}; + +ðphy2 { + status = "disabled"; +}; + +ðphy3 { + status = "disabled"; +}; + +ðphy4 { + status = "disabled"; +}; + +&psgmiiphy { + status = "disabled"; +}; + diff --git a/target/linux/ipq40xx/files-6.12/arch/arm/boot/dts/qcom/qcom-ipq4029-mr20.dts b/target/linux/ipq40xx/files-6.12/arch/arm/boot/dts/qcom/qcom-ipq4029-mr20.dts new file mode 100644 index 0000000000..9c50b10655 --- /dev/null +++ b/target/linux/ipq40xx/files-6.12/arch/arm/boot/dts/qcom/qcom-ipq4029-mr20.dts @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Device Tree Source for Meraki MR20 (Grub) / Go GR10 (Maggot) + +#include "qcom-ipq4029-meraki-underdog.dtsi" + +/ { + model = "Meraki MR20"; + compatible = "meraki,mr20"; + + leds { + compatible = "gpio-leds"; + + status_green: led_green { + color = ; + gpios = <&tlmm 34 GPIO_ACTIVE_HIGH>; + }; + + status_blue: led_blue { + color = ; + gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; + }; + + status_red: led_red { + color = ; + gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>; + }; + + }; + + soc { + ess_tcsr@1953000 { + qcom,ess-interface-select = ; + }; + }; +}; + +&mdio { + ar8035: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0>; + }; +}; + +&swport5 { + status = "okay"; + label = "lan"; + phy-handle = <&ar8035>; + phy-mode = "rgmii-id"; +}; + +&wifi0 { + status = "okay"; + qcom,ath10k-calibration-variant = "Meraki-underdog"; +}; + +&wifi1 { + status = "okay"; + qcom,ath10k-calibration-variant = "Meraki-underdog"; +}; diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index 1d02a2fc1f..79d2c80a17 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -822,6 +822,14 @@ define Device/meraki_common DEVICE_PACKAGES := ath10k-firmware-qca9887-ct endef +define Device/meraki_mr20 + $(call Device/meraki_common) + DEVICE_MODEL := MR20 + DEVICE_DTS_CONFIG := config@4 + DEVICE_PACKAGES := ipq-wifi-meraki_underdog +endef +TARGET_DEVICES += meraki_mr20 + define Device/meraki_mr30h $(call Device/meraki_common) DEVICE_MODEL := MR30H