[openwrt/openwrt] kernel/bcm53xx: Restore kernel files for v6.6

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 18 03:49:41 PST 2025


ansuel pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9e3c24299219137837c76d2316700c076e9ad26b

commit 9e3c24299219137837c76d2316700c076e9ad26b
Author: Stefan Kalscheuer <stefan at stklcode.de>
AuthorDate: Sun Nov 9 13:30:51 2025 +0100

    kernel/bcm53xx: Restore kernel files for v6.6
    
    This is an automatically generated commit which aids following Kernel patch
    history, as git will see the move and copy as a rename thus defeating the
    purpose.
    
    For the original discussion see:
    https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
    
    Signed-off-by: Stefan Kalscheuer <stefan at stklcode.de>
    Link: https://github.com/openwrt/openwrt/pull/20167
    Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
---
 target/linux/bcm53xx/config-6.6                    | 357 +++++++++++
 ...dts-BCM5301X-Set-MACs-for-D-Link-DIR-885L.patch |  56 ++
 ...CM5301X-Set-MAC-address-for-Asus-RT-AC87U.patch |  44 ++
 ...5301X-Relicense-Felix-s-code-to-the-GPL-2.patch |  57 ++
 ...5301X-Relicense-Vivek-s-code-to-the-GPL-2.patch | 104 ++++
 ...5301X-Explicitly-disable-unused-switch-CP.patch | 377 ++++++++++++
 ...5301X-Set-fixed-link-for-extra-Netgear-R8.patch |  47 ++
 ...5301X-Set-switch-ports-for-Linksys-EA9200.patch |  63 ++
 ...om-convert-NVMEM-content-to-layout-syntax.patch |  64 ++
 ...dts-meraki-mr26-set-mac-address-for-gmac0.patch |  52 ++
 .../051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch |  67 ++
 ...rs-trx-parse-firmware-MTD-partitions-only.patch |  43 ++
 ...-add-support-for-performing-fake-doorbell.patch | 113 ++++
 ...X-Disable-MMU-and-Dcache-during-decompres.patch | 111 ++++
 ...5301X-Specify-switch-ports-for-remaining-.patch | 675 +++++++++++++++++++++
 ...310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch |  64 ++
 .../332-Meraki-MX6X-partition-fixups.patch         |  52 ++
 ...-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch |  83 +++
 ...t-EOF-mark-and-erase-all-remaining-blocks.patch |  59 ++
 .../600-net-disable-GRO-by-default.patch           |  36 ++
 .../patches-6.6/905-BCM53573-minor-hacks.patch     |  80 +++
 21 files changed, 2604 insertions(+)

diff --git a/target/linux/bcm53xx/config-6.6 b/target/linux/bcm53xx/config-6.6
new file mode 100644
index 0000000000..a3030c116f
--- /dev/null
+++ b/target/linux/bcm53xx/config-6.6
@@ -0,0 +1,357 @@
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_BCM=y
+CONFIG_ARCH_BCM_5301X=y
+CONFIG_ARCH_BCM_53573=y
+CONFIG_ARCH_BCM_IPROC=y
+CONFIG_ARCH_BCM_NSP=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM=y
+CONFIG_ARM_AMBA=y
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+# CONFIG_ARM_ATAG_DTB_COMPAT is not set
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GLOBAL_TIMER=y
+CONFIG_ARM_GT_INITIAL_PRESCALER_VAL=1
+CONFIG_ARM_HAS_GROUP_RELOCS=y
+CONFIG_ARM_HEAVY_MB=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARM_SP805_WATCHDOG=y
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_TIMER_SP804=y
+CONFIG_ARM_UNWIND=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_ATAGS=y
+CONFIG_AUTO_ZRELADDR=y
+CONFIG_B53=y
+CONFIG_B53_MDIO_DRIVER=y
+CONFIG_B53_SERDES=y
+CONFIG_B53_SRAB_DRIVER=y
+CONFIG_BCM47XX_NVRAM=y
+CONFIG_BCM47XX_SPROM=y
+CONFIG_BCM47XX_WDT=y
+CONFIG_BCMA=y
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_DEBUG=y
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+CONFIG_BCMA_DRIVER_PCI=y
+CONFIG_BCMA_FALLBACK_SPROM=y
+CONFIG_BCMA_HOST_PCI=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_SFLASH=y
+# CONFIG_BCM_CYGNUS_PHY is not set
+CONFIG_BCM_NET_PHYLIB=y
+CONFIG_BCM_NS_THERMAL=y
+CONFIG_BCM_SR_THERMAL=y
+CONFIG_BGMAC=y
+CONFIG_BGMAC_BCMA=y
+CONFIG_BGMAC_PLATFORM=y
+CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BOUNCE=y
+CONFIG_BROADCOM_PHY=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
+CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
+CONFIG_CLKSRC_MMIO=y
+# CONFIG_CLK_BCM_NS2 is not set
+CONFIG_CLK_BCM_NSP=y
+# CONFIG_CLK_BCM_SR is not set
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_IPROC=y
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_CONTEXT_TRACKING_IDLE=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_SPECTRE=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_V7=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_CURRENT_POINTER_IN_TPIDRURO=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_BCM_5301X=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
+CONFIG_DEBUG_MISC=y
+CONFIG_DEBUG_UART_8250=y
+CONFIG_DEBUG_UART_8250_SHIFT=0
+CONFIG_DEBUG_UART_PHYS=0x18000300
+CONFIG_DEBUG_UART_VIRT=0xf1000300
+CONFIG_DEBUG_USER=y
+CONFIG_DMA_OPS=y
+CONFIG_DTC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EEPROM_AT24=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_EXTCON=y
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_FS_IOMAP=y
+CONFIG_FUNCTION_ALIGNMENT=0
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_VDSO_32=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_74X164=y
+CONFIG_GPIO_BCM_XGS_IPROC=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GRO_CELLS=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAVE_SMP=y
+CONFIG_HIGHMEM=y
+CONFIG_HIGHPTE=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_BCM2835=y
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_PERIODIC=y
+CONFIG_I2C=y
+CONFIG_I2C_BCM_IPROC=y
+# CONFIG_I2C_SLAVE_TESTUNIT is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQSTACKS=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_KMAP_LOCAL=y
+CONFIG_KMAP_LOCAL_NON_LINEAR_PTE_ARRAY=y
+# CONFIG_LEDS_BCM63138 is not set
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MDIO_BCM_IPROC=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_BUS_MUX=y
+# CONFIG_MDIO_BUS_MUX_BCM_IPROC is not set
+CONFIG_MDIO_BUS_MUX_MMIOREG=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_MIGRATION=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_MTD_BCM47XXSFLASH=y
+CONFIG_MTD_BCM47XX_PARTS=y
+CONFIG_MTD_NAND_BRCMNAND=y
+CONFIG_MTD_NAND_BRCMNAND_IPROC=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_OF_PARTS_LINKSYS_NS=y
+CONFIG_MTD_PARSER_TPLINK_SAFELOADER=y
+CONFIG_MTD_PARSER_TRX=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SPLIT_SEAMA_FW=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SRCU_NMI_SAFE=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_QCA8K=y
+CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y
+CONFIG_NET_DSA_TAG_BRCM=y
+CONFIG_NET_DSA_TAG_BRCM_COMMON=y
+CONFIG_NET_DSA_TAG_BRCM_LEGACY=y
+CONFIG_NET_DSA_TAG_BRCM_PREPEND=y
+CONFIG_NET_DSA_TAG_NONE=y
+CONFIG_NET_DSA_TAG_QCA=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_XGRESS=y
+CONFIG_NR_CPUS=2
+CONFIG_NVMEM=y
+CONFIG_NVMEM_BRCM_NVRAM=y
+CONFIG_NVMEM_LAYOUTS=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_PADATA=y
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PCI=y
+CONFIG_PCIE_IPROC=y
+CONFIG_PCIE_IPROC_BCMA=y
+# CONFIG_PCIE_IPROC_PLATFORM is not set
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYLINK=y
+# CONFIG_PHY_BCM_NS_USB2 is not set
+# CONFIG_PHY_BCM_NS_USB3 is not set
+# CONFIG_PHY_BCM_SR_PCIE is not set
+CONFIG_PHY_BCM_SR_USB=y
+# CONFIG_PHY_BRCM_SATA is not set
+# CONFIG_PHY_NS2_USB_DRD is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IPROC_GPIO=y
+CONFIG_PINCTRL_NS=y
+# CONFIG_PINCTRL_NS2_MUX is not set
+CONFIG_PINCTRL_NSP_GPIO=y
+CONFIG_PINCTRL_NSP_MUX=y
+CONFIG_PREEMPT_NONE_BUILD=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+CONFIG_PWM_BCM_IPROC=y
+CONFIG_PWM_SYSFS=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RATIONAL=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_BCM_QSPI=y
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+CONFIG_SWPHY=y
+CONFIG_SWP_EMULATE=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_OF=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UBIFS_FS=y
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_UNWINDER_ARM=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USE_OF=y
+# CONFIG_VFP is not set
+CONFIG_WATCHDOG_CORE=y
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZSTD_COMMON=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0001-ARM-dts-BCM5301X-Set-MACs-for-D-Link-DIR-885L.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0001-ARM-dts-BCM5301X-Set-MACs-for-D-Link-DIR-885L.patch
new file mode 100644
index 0000000000..707e4a31e9
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0001-ARM-dts-BCM5301X-Set-MACs-for-D-Link-DIR-885L.patch
@@ -0,0 +1,56 @@
+From 5cbee5828219c4f7b33e96b5d8ce5e467b2857c8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Fri, 1 Sep 2023 12:55:49 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Set MACs for D-Link DIR-885L
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Specify NVRAM access and use its "et2macaddr" NVMEM cell.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Link: https://lore.kernel.org/r/20230901105549.7076-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ .../dts/broadcom/bcm47094-dlink-dir-885l.dts     | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
+@@ -25,6 +25,15 @@
+ 		      <0x88000000 0x08000000>;
+ 	};
+ 
++	nvram at 1e3f0000 {
++		compatible = "brcm,nvram";
++		reg = <0x1e3f0000 0x10000>;
++
++		et2macaddr: et2macaddr {
++			#nvmem-cell-cells = <1>;
++		};
++	};
++
+ 	nand_controller: nand-controller at 18028000 {
+ 		nand at 0 {
+ 			partitions {
+@@ -112,6 +121,11 @@
+ 	vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
+ };
+ 
++&gmac0 {
++	nvmem-cells = <&et2macaddr 0>;
++	nvmem-cell-names = "mac-address";
++};
++
+ &spi_nor {
+ 	status = "okay";
+ };
+@@ -142,6 +156,8 @@
+ 
+ 		port at 4 {
+ 			label = "wan";
++			nvmem-cells = <&et2macaddr 3>;
++			nvmem-cell-names = "mac-address";
+ 		};
+ 
+ 		port at 5 {
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0002-ARM-dts-BCM5301X-Set-MAC-address-for-Asus-RT-AC87U.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0002-ARM-dts-BCM5301X-Set-MAC-address-for-Asus-RT-AC87U.patch
new file mode 100644
index 0000000000..8a8066ba63
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0002-ARM-dts-BCM5301X-Set-MAC-address-for-Asus-RT-AC87U.patch
@@ -0,0 +1,44 @@
+From a9e79863b62aaaefcdf469fc331bf482ae00db0d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Fri, 1 Sep 2023 14:43:11 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Set MAC address for Asus RT-AC87U
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Specify NVRAM access and use its "et1macaddr" NVMEM cell.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Link: https://lore.kernel.org/r/20230901124311.31156-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts
+@@ -25,6 +25,12 @@
+ 		      <0x88000000 0x08000000>;
+ 	};
+ 
++	nvram at 1c080000 {
++		et1macaddr: et1macaddr {
++			#nvmem-cell-cells = <1>;
++		};
++	};
++
+ 	leds {
+ 		compatible = "gpio-leds";
+ 
+@@ -62,6 +68,11 @@
+ 	};
+ };
+ 
++&gmac0 {
++	nvmem-cells = <&et1macaddr 0>;
++	nvmem-cell-names = "mac-address";
++};
++
+ &usb3_phy {
+ 	status = "okay";
+ };
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0003-ARM-dts-BCM5301X-Relicense-Felix-s-code-to-the-GPL-2.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0003-ARM-dts-BCM5301X-Relicense-Felix-s-code-to-the-GPL-2.patch
new file mode 100644
index 0000000000..842f47af42
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0003-ARM-dts-BCM5301X-Relicense-Felix-s-code-to-the-GPL-2.patch
@@ -0,0 +1,57 @@
+From 81ea360a16978a4df61df9db56b171909bd659c0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Sat, 16 Sep 2023 10:30:57 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Relicense Felix's code to the GPL 2.0+ /
+ MIT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Move code added by Felix to the bcm-ns.dtsi which uses dual licensing.
+That syncs more Northstar code to be based on the same licensing schema.
+
+This code was added in the commit 1ff80363524c ("ARM: BCM5301X: Add
+profiling support").
+
+Cc: Felix Fietkau <nbd at nbd.name>
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Acked-by: Felix Fietkau <nbd at nbd.name>
+Link: https://lore.kernel.org/r/20230916083057.10458-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ arch/arm/boot/dts/broadcom/bcm-ns.dtsi   | 7 +++++++
+ arch/arm/boot/dts/broadcom/bcm5301x.dtsi | 7 -------
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
+@@ -14,6 +14,13 @@
+ 	#address-cells = <1>;
+ 	#size-cells = <1>;
+ 
++	pmu {
++		compatible = "arm,cortex-a9-pmu";
++		interrupts =
++			<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
++			<GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
++	};
++
+ 	chipcommon-a-bus at 18000000 {
+ 		compatible = "simple-bus";
+ 		ranges = <0x00000000 0x18000000 0x00001000>;
+--- a/arch/arm/boot/dts/broadcom/bcm5301x.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm5301x.dtsi
+@@ -26,13 +26,6 @@
+ 		};
+ 	};
+ 
+-	pmu {
+-		compatible = "arm,cortex-a9-pmu";
+-		interrupts =
+-			<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+-			<GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+-	};
+-
+ 	clocks {
+ 		#address-cells = <1>;
+ 		#size-cells = <1>;
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0004-ARM-dts-BCM5301X-Relicense-Vivek-s-code-to-the-GPL-2.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0004-ARM-dts-BCM5301X-Relicense-Vivek-s-code-to-the-GPL-2.patch
new file mode 100644
index 0000000000..960908100e
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0004-ARM-dts-BCM5301X-Relicense-Vivek-s-code-to-the-GPL-2.patch
@@ -0,0 +1,104 @@
+From b8d4f7c1be04d66c37c119c501c87bccc4197694 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Sat, 16 Sep 2023 10:58:55 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Relicense Vivek's code to the GPL 2.0+ /
+ MIT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Move code added by Vivek to the bcm-ns.dtsi which uses dual licensing.
+That syncs more Northstar code to be based on the same licensing schema.
+
+This code was added in the commit 37f6130ec39f ("ARM: dts: BCM5301X:
+Make USB 3.0 PHY use MDIO PHY driver").
+
+Cc: Vivek Unune <npcomplete13 at gmail.com>
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Acked-by: Vivek Unune <npcomplete13 at gmail.com>
+Link: https://lore.kernel.org/r/20230916085855.28375-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ arch/arm/boot/dts/broadcom/bcm-ns.dtsi   | 27 ++++++++++++++++++++++++
+ arch/arm/boot/dts/broadcom/bcm5301x.dtsi | 27 ------------------------
+ 2 files changed, 27 insertions(+), 27 deletions(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
+@@ -327,6 +327,29 @@
+ 		#address-cells = <1>;
+ 	};
+ 
++	mdio-mux at 18003000 {
++		compatible = "mdio-mux-mmioreg", "mdio-mux";
++		mdio-parent-bus = <&mdio>;
++		#address-cells = <1>;
++		#size-cells = <0>;
++		reg = <0x18003000 0x4>;
++		mux-mask = <0x200>;
++
++		mdio at 0 {
++			reg = <0x0>;
++			#address-cells = <1>;
++			#size-cells = <0>;
++
++			usb3_phy: usb3-phy at 10 {
++				compatible = "brcm,ns-ax-usb3-phy";
++				reg = <0x10>;
++				usb3-dmp-syscon = <&usb3_dmp>;
++				#phy-cells = <0>;
++				status = "disabled";
++			};
++		};
++	};
++
+ 	rng: rng at 18004000 {
+ 		compatible = "brcm,bcm5301x-rng";
+ 		reg = <0x18004000 0x14>;
+@@ -467,6 +490,10 @@
+ 		brcm,nand-has-wp;
+ 	};
+ 
++	usb3_dmp: syscon at 18105000 {
++		reg = <0x18105000 0x1000>;
++	};
++
+ 	thermal-zones {
+ 		cpu_thermal: cpu-thermal {
+ 			polling-delay-passive = <0>;
+--- a/arch/arm/boot/dts/broadcom/bcm5301x.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm5301x.dtsi
+@@ -62,33 +62,6 @@
+ 		};
+ 	};
+ 
+-	mdio-mux at 18003000 {
+-		compatible = "mdio-mux-mmioreg", "mdio-mux";
+-		mdio-parent-bus = <&mdio>;
+-		#address-cells = <1>;
+-		#size-cells = <0>;
+-		reg = <0x18003000 0x4>;
+-		mux-mask = <0x200>;
+-
+-		mdio at 0 {
+-			reg = <0x0>;
+-			#address-cells = <1>;
+-			#size-cells = <0>;
+-
+-			usb3_phy: usb3-phy at 10 {
+-				compatible = "brcm,ns-ax-usb3-phy";
+-				reg = <0x10>;
+-				usb3-dmp-syscon = <&usb3_dmp>;
+-				#phy-cells = <0>;
+-				status = "disabled";
+-			};
+-		};
+-	};
+-
+-	usb3_dmp: syscon at 18105000 {
+-		reg = <0x18105000 0x1000>;
+-	};
+-
+ 	i2c0: i2c at 18009000 {
+ 		compatible = "brcm,iproc-i2c";
+ 		reg = <0x18009000 0x50>;
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0005-ARM-dts-BCM5301X-Explicitly-disable-unused-switch-CP.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0005-ARM-dts-BCM5301X-Explicitly-disable-unused-switch-CP.patch
new file mode 100644
index 0000000000..28f4d2b743
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0005-ARM-dts-BCM5301X-Explicitly-disable-unused-switch-CP.patch
@@ -0,0 +1,377 @@
+From 473baeab929444295b0530f8766e4becb6a08973 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Fri, 13 Oct 2023 12:33:13 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Explicitly disable unused switch CPU
+ ports
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When redescribing ports I assumed that missing "label" (like "cpu")
+means switch port isn't used. That was incorrect and I realized my
+change made Linux always use the first (5) CPU port (there are 3 of
+them).
+
+While above should technically be possible it often isn't correct:
+1. Non-default switch ports are often connected to Ethernet interfaces
+   not fully covered by vendor setup (they may miss MACs)
+2. On some devices non-default ports require specifying fixed link
+
+This fixes network connectivity for some devices. It was reported &
+tested for Netgear R8000. It also affects Linksys EA9200 with its
+downstream DTS.
+
+Fixes: ba4aebce23b2 ("ARM: dts: BCM5301X: Describe switch ports in the main DTS")
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Link: https://lore.kernel.org/r/20231013103314.10306-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ .../dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi  | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts     | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts     | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts      | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts    | 8 ++++++++
+ .../boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts      | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts    | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts       | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts       | 8 ++++++++
+ arch/arm/boot/dts/broadcom/bcm953012er.dts                | 8 ++++++++
+ 20 files changed, 160 insertions(+)
+
+--- a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
+@@ -189,5 +189,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts
+@@ -93,5 +93,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts
+@@ -96,5 +96,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
+@@ -130,5 +130,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts
+@@ -153,6 +153,14 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts
+@@ -153,5 +153,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts
+@@ -89,5 +89,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
+@@ -156,5 +156,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
+@@ -235,6 +235,14 @@
+ 			status = "disabled";
+ 		};
+ 
++		port at 5 {
++			status = "disabled";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
+ 		port at 8 {
+ 			label = "cpu";
+ 		};
+--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
+@@ -168,6 +168,14 @@
+ 			status = "disabled";
+ 		};
+ 
++		port at 5 {
++			status = "disabled";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
+ 		port at 8 {
+ 			label = "cpu";
+ 		};
+--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
+@@ -200,6 +200,14 @@
+ 			status = "disabled";
+ 		};
+ 
++		port at 5 {
++			status = "disabled";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
+ 		port at 8 {
+ 			label = "cpu";
+ 			phy-mode = "rgmii";
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
+@@ -115,5 +115,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
+@@ -128,5 +128,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
+@@ -115,5 +115,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts
+@@ -83,5 +83,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
+@@ -155,5 +155,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
+@@ -166,5 +166,13 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
++++ b/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
+@@ -132,6 +132,14 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
++++ b/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
+@@ -193,6 +193,14 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/broadcom/bcm953012er.dts
++++ b/arch/arm/boot/dts/broadcom/bcm953012er.dts
+@@ -92,6 +92,14 @@
+ 		port at 8 {
+ 			status = "disabled";
+ 		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
+ 	};
+ };
+ 
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0006-ARM-dts-BCM5301X-Set-fixed-link-for-extra-Netgear-R8.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0006-ARM-dts-BCM5301X-Set-fixed-link-for-extra-Netgear-R8.patch
new file mode 100644
index 0000000000..85f093ff0d
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0006-ARM-dts-BCM5301X-Set-fixed-link-for-extra-Netgear-R8.patch
@@ -0,0 +1,47 @@
+From d313b0e9070a7100ca55e64fe3b081d176d8806d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Fri, 13 Oct 2023 12:33:14 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Set fixed-link for extra Netgear R8000
+ CPU ports
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Ports 5 and 7 are disabled by default because the standard use case is
+for port 8 to manage all CPU directed traffic. For experimentation
+purposes however it is desirable to provide adequate properties such
+that people can experiment with using different ports without having to
+figure out their configuration. Some of the use cases include but are
+not limited to doubling or tripling the bandwidth by leveraging the
+additional ports/Ethernet MAC combinations.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Link: https://lore.kernel.org/r/20231013103314.10306-2-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
+@@ -237,10 +237,20 @@
+ 
+ 		port at 5 {
+ 			status = "disabled";
++
++			fixed-link {
++				speed = <1000>;
++				full-duplex;
++			};
+ 		};
+ 
+ 		port at 7 {
+ 			status = "disabled";
++
++			fixed-link {
++				speed = <1000>;
++				full-duplex;
++			};
+ 		};
+ 
+ 		port at 8 {
diff --git a/target/linux/bcm53xx/patches-6.6/030-v6.7-0007-ARM-dts-BCM5301X-Set-switch-ports-for-Linksys-EA9200.patch b/target/linux/bcm53xx/patches-6.6/030-v6.7-0007-ARM-dts-BCM5301X-Set-switch-ports-for-Linksys-EA9200.patch
new file mode 100644
index 0000000000..87b6ade5f6
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/030-v6.7-0007-ARM-dts-BCM5301X-Set-switch-ports-for-Linksys-EA9200.patch
@@ -0,0 +1,63 @@
+From 253358f373492608348136e569366d73cb969f6a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Tue, 24 Oct 2023 09:26:05 +0200
+Subject: [PATCH] ARM: dts: BCM5301X: Set switch ports for Linksys EA9200
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This patch was developed as OpenWrt downstream change and was recently
+confirmed to work as expected.
+
+Tested-by: Rani Hod <rani.hod at gmail.com>
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Link: https://lore.kernel.org/r/20231024072605.32517-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ .../dts/broadcom/bcm4709-linksys-ea9200.dts   | 38 +++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+--- a/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
+@@ -47,3 +47,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			status = "disabled";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			label = "cpu";
++		};
++	};
++};
diff --git a/target/linux/bcm53xx/patches-6.6/040-v6.11-ARM-dts-broadcom-convert-NVMEM-content-to-layout-syntax.patch b/target/linux/bcm53xx/patches-6.6/040-v6.11-ARM-dts-broadcom-convert-NVMEM-content-to-layout-syntax.patch
new file mode 100644
index 0000000000..864fd01629
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/040-v6.11-ARM-dts-broadcom-convert-NVMEM-content-to-layout-syntax.patch
@@ -0,0 +1,64 @@
+From ed0d78c75ca93c9f1d7f0d08ac5abe0de71fe312 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Thu, 16 May 2024 10:47:37 +0200
+Subject: [PATCH] ARM: dts: broadcom: convert NVMEM content to layout syntax
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use cleaner (and non-deprecated) bindings syntax. See commit
+bd912c991d2e ("dt-bindings: nvmem: layouts: add fixed-layout") for
+details.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Link: https://lore.kernel.org/r/20240516084737.2789-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts  | 12 ++++++++----
+ .../dts/broadcom/bcm958625-meraki-mx6x-common.dtsi   | 12 ++++++++----
+ 2 files changed, 16 insertions(+), 8 deletions(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
++++ b/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
+@@ -223,11 +223,15 @@
+ 		reg = <0x50>;
+ 		pagesize = <32>;
+ 		read-only;
+-		#address-cells = <1>;
+-		#size-cells = <1>;
+ 
+-		mac_address: mac-address at 66 {
+-			reg = <0x66 0x6>;
++		nvmem-layout {
++			compatible = "fixed-layout";
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			mac_address: mac-address at 66 {
++				reg = <0x66 0x6>;
++			};
+ 		};
+ 	};
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi
+@@ -55,11 +55,15 @@
+ 		reg = <0x50>;
+ 		pagesize = <32>;
+ 		read-only;
+-		#address-cells = <1>;
+-		#size-cells = <1>;
+ 
+-		mac_address: mac-address at 66 {
+-			reg = <0x66 0x6>;
++		nvmem-layout {
++			compatible = "fixed-layout";
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			mac_address: mac-address at 66 {
++				reg = <0x66 0x6>;
++			};
+ 		};
+ 	};
+ };
diff --git a/target/linux/bcm53xx/patches-6.6/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch b/target/linux/bcm53xx/patches-6.6/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch
new file mode 100644
index 0000000000..f6a6f819d1
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/050-v6.13-ARM-dts-meraki-mr26-set-mac-address-for-gmac0.patch
@@ -0,0 +1,52 @@
+From ad1915e2070cf832bfb81dcbeb44b073c09e6dcc Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp at gmail.com>
+Date: Sun, 20 Oct 2024 18:51:47 -0700
+Subject: [PATCH] ARM: dts: meraki-mr26: set mac address for gmac0
+
+Currently this needs to be done in userspace.
+
+Signed-off-by: Rosen Penev <rosenp at gmail.com>
+Link: https://lore.kernel.org/r/20241021015147.172700-1-rosenp@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
+---
+ .../dts/broadcom/bcm53015-meraki-mr26.dts     | 20 +++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+--- a/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
++++ b/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
+@@ -59,6 +59,9 @@
+ 
+ &gmac0 {
+ 	status = "okay";
++
++	nvmem-cells = <&macaddr_board_config_66>;
++	nvmem-cell-names = "mac-address";
+ };
+ 
+ &gmac1 {
+@@ -102,8 +105,25 @@
+ 		};
+ 
+ 		partition at 800000 {
++			compatible = "linux,ubi";
+ 			label = "ubi";
+ 			reg = <0x800000 0x7780000>;
++
++			volumes {
++				ubi-volume-board-config {
++					volname = "board-config";
++
++					nvmem-layout {
++						compatible = "fixed-layout";
++						#address-cells = <1>;
++						#size-cells = <1>;
++
++						macaddr_board_config_66: macaddr at 66 {
++							reg = <0x66 0x6>;
++						};
++					};
++				};
++			};
+ 		};
+ 	};
+ };
diff --git a/target/linux/bcm53xx/patches-6.6/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch b/target/linux/bcm53xx/patches-6.6/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch
new file mode 100644
index 0000000000..fd31438cdb
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/051-ARM-dts-meraki-mr26-wifi-MACs-in-dts.patch
@@ -0,0 +1,67 @@
+From c18e0b14b466fb0aa17c8ca6e61f16ba1254aebd Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp at gmail.com>
+Date: Sun, 24 Nov 2024 12:58:51 -0800
+Subject: [PATCH] ARM: dts: meraki-mr26: wifi MACs in dts
+
+OPENWRT HACK. Probably will not be accepted upstream.
+
+Signed-off-by: Rosen Penev <rosenp at gmail.com>
+---
+ .../dts/broadcom/bcm53015-meraki-mr26.dts     | 31 ++++++++++++++++++-
+ 1 file changed, 30 insertions(+), 1 deletion(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
++++ b/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
+@@ -60,7 +60,7 @@
+ &gmac0 {
+ 	status = "okay";
+ 
+-	nvmem-cells = <&macaddr_board_config_66>;
++	nvmem-cells = <&macaddr_board_config_66 0>;
+ 	nvmem-cell-names = "mac-address";
+ };
+ 
+@@ -74,6 +74,33 @@
+ 	status = "disabled";
+ };
+ 
++&pcie0 {
++	wifi at 0,0 {
++		reg = <0x0000 0 0 0 0>;
++		compatible = "brcm,bcm43431";
++		nvmem-cells = <&macaddr_board_config_66 1>;
++		nvmem-cell-names = "mac-address";
++	};
++};
++
++&pcie1 {
++	wifi at 0,0 {
++		reg = <0x0000 0 0 0 0>;
++		compatible = "brcm,bcm43431";
++		nvmem-cells = <&macaddr_board_config_66 2>;
++		nvmem-cell-names = "mac-address";
++	};
++};
++
++&pcie2 {
++	wifi at 0,0 {
++		reg = <0x0000 0 0 0 0>;
++		compatible = "brcm,bcm43428";
++		nvmem-cells = <&macaddr_board_config_66 3>;
++		nvmem-cell-names = "mac-address";
++	};
++};
++
+ &nandcs {
+ 	partitions {
+ 		compatible = "fixed-partitions";
+@@ -119,7 +146,9 @@
+ 						#size-cells = <1>;
+ 
+ 						macaddr_board_config_66: macaddr at 66 {
++							compatible = "mac-base";
+ 							reg = <0x66 0x6>;
++							#nvmem-cell-cells = <1>;
+ 						};
+ 					};
+ 				};
diff --git a/target/linux/bcm53xx/patches-6.6/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch b/target/linux/bcm53xx/patches-6.6/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch
new file mode 100644
index 0000000000..dbf4569b4e
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/140-mtd-parsers-trx-parse-firmware-MTD-partitions-only.patch
@@ -0,0 +1,43 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Tue, 13 Apr 2021 18:25:20 +0200
+Subject: [PATCH] mtd: parsers: trx: parse "firmware" MTD partitions only
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Parsing every partition with "compatible" set to "brcm,trx" results in
+parsing both: firmware partition and failsafe partition on devices that
+implement failsafe booting. This affects e.g. Linksys EA9500 which has:
+
+partition at 200000 {
+	reg = <0x0200000 0x01d00000>;
+	compatible = "linksys,ns-firmware", "brcm,trx";
+};
+
+partition at 1f00000 {
+	reg = <0x01f00000 0x01d00000>;
+	compatible = "linksys,ns-firmware", "brcm,trx";
+};
+
+Check for MTD partition name "firmware" before parsing. Recently added
+ofpart_linksys_ns.c creates "firmware" and "failsafe" depending on
+bootloader setup.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+ drivers/mtd/parsers/parser_trx.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/mtd/parsers/parser_trx.c
++++ b/drivers/mtd/parsers/parser_trx.c
+@@ -92,6 +92,10 @@ static int parser_trx_parse(struct mtd_i
+ 	if (err != 0 && err != -EINVAL)
+ 		pr_err("failed to parse \"brcm,trx-magic\" DT attribute, using default: %d\n", err);
+ 
++	/* Don't parse any failsafe / backup partitions */
++	if (strcmp(mtd->name, "firmware"))
++		return -ENOENT;
++
+ 	parts = kcalloc(TRX_PARSER_MAX_PARTS, sizeof(struct mtd_partition),
+ 			GFP_KERNEL);
+ 	if (!parts)
diff --git a/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
new file mode 100644
index 0000000000..9484546935
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -0,0 +1,113 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Sat, 1 Oct 2016 22:54:48 +0200
+Subject: [PATCH] usb: xhci: add support for performing fake doorbell
+
+Broadcom's Northstar XHCI controllers seem to need a special start
+procedure to work correctly. There isn't any official documentation of
+this, the problem is that controller doesn't detect any connected
+devices with default setup. Moreover connecting USB device to controller
+that doesn't run properly can cause SoC's watchdog issues.
+
+A workaround that was successfully tested on multiple devices is to
+perform a fake doorbell. This patch adds code for doing this and enables
+it on BCM4708 family.
+---
+ drivers/usb/host/xhci-plat.c |  6 +++++
+ drivers/usb/host/xhci.c      | 63 +++++++++++++++++++++++++++++++++++++++++---
+ drivers/usb/host/xhci.h      |  1 +
+ 3 files changed, 67 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/host/xhci-plat.c
++++ b/drivers/usb/host/xhci-plat.c
+@@ -77,8 +77,13 @@ static int xhci_priv_resume_quirk(struct
+ static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
+ {
+ 	struct xhci_plat_priv *priv = xhci_to_priv(xhci);
++	struct platform_device *pdev = to_platform_device(dev);
++	struct device_node *node = pdev->dev.of_node;
+ 
+ 	xhci->quirks |= priv->quirks;
++
++	if (node && of_machine_is_compatible("brcm,bcm4708"))
++		xhci->quirks |= XHCI_FAKE_DOORBELL;
+ }
+ 
+ /* called during probe() after chip reset completes */
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -163,6 +163,49 @@ int xhci_start(struct xhci_hcd *xhci)
+ 	return ret;
+ }
+ 
++/**
++ * xhci_fake_doorbell - Perform a fake doorbell on a specified slot
++ *
++ * Some controllers require a fake doorbell to start correctly. Without that
++ * they simply don't detect any devices.
++ */
++static int xhci_fake_doorbell(struct xhci_hcd *xhci, int slot_id)
++{
++	u32 temp;
++
++	/* Alloc a virt device for that slot */
++	if (!xhci_alloc_virt_device(xhci, slot_id, NULL, GFP_NOIO)) {
++		xhci_warn(xhci, "Could not allocate xHCI USB device data structures\n");
++		return -ENOMEM;
++	}
++
++	/* Ring fake doorbell for slot_id ep 0 */
++	xhci_ring_ep_doorbell(xhci, slot_id, 0, 0);
++	usleep_range(1000, 1500);
++
++	/* Read the status to check if HSE is set or not */
++	temp = readl(&xhci->op_regs->status);
++
++	/* Clear HSE if set */
++	if (temp & STS_FATAL) {
++		xhci_dbg(xhci, "HSE problem detected, status: 0x%08x\n", temp);
++		temp &= ~0x1fff;
++		temp |= STS_FATAL;
++		writel(temp, &xhci->op_regs->status);
++		usleep_range(1000, 1500);
++		readl(&xhci->op_regs->status);
++	}
++
++	/* Free virt device */
++	xhci_free_virt_device(xhci, xhci->devs[slot_id], slot_id);
++
++	/* We're done if controller is already running */
++	if (readl(&xhci->op_regs->command) & CMD_RUN)
++		return 0;
++
++	return xhci_start(xhci);
++}
++
+ /*
+  * Reset a halted HC.
+  *
+@@ -500,6 +543,15 @@ static int xhci_run_finished(struct xhci
+ 		return -ENODEV;
+ 	}
+ 
++	if (xhci->quirks & XHCI_FAKE_DOORBELL) {
++		int err = xhci_fake_doorbell(xhci, 1);
++		if (err) {
++			xhci_halt(xhci);
++			spin_unlock_irqrestore(&xhci->lock, flags);
++			return err;
++		}
++	}
++
+ 	xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
+ 
+ 	if (xhci->quirks & XHCI_NEC_HOST)
+--- a/drivers/usb/host/xhci.h
++++ b/drivers/usb/host/xhci.h
+@@ -1660,6 +1660,7 @@ struct xhci_hcd {
+ #define XHCI_CDNS_SCTX_QUIRK	BIT_ULL(48)
+ #define XHCI_ETRON_HOST	BIT_ULL(49)
+ #define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50)
++#define XHCI_FAKE_DOORBELL	BIT_ULL(51)
+ 
+ 	unsigned int		num_active_eps;
+ 	unsigned int		limit_active_eps;
diff --git a/target/linux/bcm53xx/patches-6.6/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch b/target/linux/bcm53xx/patches-6.6/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch
new file mode 100644
index 0000000000..789326310a
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/300-ARM-BCM5301X-Disable-MMU-and-Dcache-during-decompres.patch
@@ -0,0 +1,111 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Wed, 24 Sep 2014 22:14:07 +0200
+Subject: [PATCH] ARM: BCM5301X: Disable MMU and Dcache during decompression
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Broadcom devices have broken CFE (bootloader) that leaves hardware in an
+invalid state. It causes problems with booting Linux. On Northstar
+devices kernel was randomly hanging in ~25% of tries during early init.
+Hangs used to happen at random places in the start_kernel. On BCM53573
+kernel doesn't even seem to start booting.
+
+To workaround this problem we need to do following very early:
+1) Clear 2 following bits in the SCTLR register:
+#define CR_M    (1 << 0)        /* MMU enable */
+#define CR_C    (1 << 2)        /* Dcache enable */
+2) Flush the whole D-cache
+3) Disable L2 cache
+
+Unfortunately this patch is not upstreamable as it does above things
+unconditionally. We can't check if we are running on Broadcom platform
+in any safe way and doing such hacks with ARCH_MULTI_V7 is unacceptable
+as it could break other devices support.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+
+--- a/arch/arm/boot/compressed/Makefile
++++ b/arch/arm/boot/compressed/Makefile
+@@ -36,6 +36,11 @@ ifeq ($(CONFIG_ARCH_ACORN),y)
+ OBJS		+= ll_char_wr.o font.o
+ endif
+ 
++ifeq ($(CONFIG_ARCH_BCM_5301X),y)
++OBJS		+= head-bcm_5301x-mpcore.o
++OBJS		+= cache-v7-min.o
++endif
++
+ ifeq ($(CONFIG_ARCH_SA1100),y)
+ OBJS		+= head-sa1100.o
+ endif
+--- /dev/null
++++ b/arch/arm/boot/compressed/head-bcm_5301x-mpcore.S
+@@ -0,0 +1,37 @@
++/*
++ *
++ * Platform specific tweaks.  This is merged into head.S by the linker.
++ *
++ */
++
++#include <linux/linkage.h>
++#include <asm/assembler.h>
++#include <asm/cp15.h>
++
++		.section        ".start", "ax"
++
++/*
++ * This code section is spliced into the head code by the linker
++ */
++
++__plat_uncompress_start:
++
++	@ Preserve r8/r7 i.e. kernel entry values
++	mov	r12, r8
++
++	@ Clear MMU enable and Dcache enable bits
++	mrc	p15, 0, r0, c1, c0, 0		@ Read SCTLR
++	bic	r0, #CR_C|CR_M
++	mcr	p15, 0, r0, c1, c0, 0		@ Write SCTLR
++	nop
++
++	@ Call the cache invalidation routine
++	bl	v7_flush_dcache_all
++	nop
++	mov	r0,#0
++	ldr	r3, =0x19022000			@ L2 cache controller, control reg
++	str	r0, [r3, #0x100]		@ Disable L2 cache
++	nop
++
++	@ Restore
++	mov	r8, r12
+--- a/arch/arm/boot/compressed/cache-v7-min.S
++++ b/arch/arm/boot/compressed/cache-v7-min.S
+@@ -12,6 +12,7 @@
+ 
+ #include <linux/linkage.h>
+ #include <linux/init.h>
++#include <asm/assembler.h>
+ 
+ 	__INIT
+ 
+@@ -63,7 +64,7 @@ loop2:
+  ARM(	orr	r11, r11, r9, lsl r2	)	@ factor index number into r11
+  THUMB(	lsl	r6, r9, r2		)
+  THUMB(	orr	r11, r11, r6		)	@ factor index number into r11
+-	mcr	p15, 0, r11, c7, c14, 2		@ clean & invalidate by set/way
++	mcr     p15, 0, r11, c7, c6, 2		@ clean & invalidate by set/way
+ 	subs	r9, r9, #1			@ decrement the index
+ 	bge	loop2
+ 	subs	r4, r4, #1			@ decrement the way
+--- a/arch/arm/boot/compressed/vmlinux.lds.S
++++ b/arch/arm/boot/compressed/vmlinux.lds.S
+@@ -41,6 +41,7 @@ SECTIONS
+     *(.start)
+     *(.text)
+     *(.text.*)
++    *(.init.text)
+     ARM_STUBS_TEXT
+   }
+   .table : ALIGN(4) {
diff --git a/target/linux/bcm53xx/patches-6.6/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch b/target/linux/bcm53xx/patches-6.6/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch
new file mode 100644
index 0000000000..9cfc3aac15
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/304-ARM-dts-BCM5301X-Specify-switch-ports-for-remaining-.patch
@@ -0,0 +1,675 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Subject: [PATCH] ARM: dts: BCM5301X: Specify switch ports for remaining
+ devices
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+
+--- a/arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dts
+@@ -92,3 +92,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac68u.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac68u.dts
+@@ -83,3 +83,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 4 {
++			label = "lan4";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1750dhp.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1750dhp.dts
+@@ -149,3 +149,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6300-v1.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6300-v1.dts
+@@ -46,3 +46,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6500-v2.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-linksys-ea6500-v2.dts
+@@ -43,3 +43,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6300-v2.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6300-v2.dts
+@@ -86,3 +86,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm47081-asus-rt-n18u.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47081-asus-rt-n18u.dts
+@@ -77,3 +77,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 4 {
++			label = "lan4";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts
+@@ -77,6 +77,40 @@
+ 	status = "okay";
+ };
+ 
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 5 {
++			status = "disabled";
++		};
++
++		port at 7 {
++			label = "cpu";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
++
+ &nandcs {
+ 	partitions {
+ 		compatible = "fixed-partitions";
+--- a/arch/arm/boot/dts/broadcom/bcm4709-buffalo-wxr-1900dhp.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-buffalo-wxr-1900dhp.dts
+@@ -130,3 +130,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7000.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7000.dts
+@@ -104,3 +104,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 4 {
++			label = "lan4";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm47094-netgear-r8500.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-netgear-r8500.dts
+@@ -94,3 +94,41 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 4 {
++			label = "lan4";
++		};
++
++		port at 5 {
++			status = "disabled";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			label = "cpu";
++		};
++	};
++};
+--- a/arch/arm/boot/dts/broadcom/bcm47094-phicomm-k3.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-phicomm-k3.dts
+@@ -38,6 +38,40 @@
+ 	status = "okay";
+ };
+ 
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
++
+ &nandcs {
+ 	partitions {
+ 		compatible = "fixed-partitions";
+--- a/arch/arm/boot/dts/broadcom/bcm47081-tplink-archer-c5-v2.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47081-tplink-archer-c5-v2.dts
+@@ -91,6 +91,44 @@
+ 	};
+ };
+ 
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 4 {
++			label = "lan4";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
++
+ &spi_nor {
+ 	status = "okay";
+ 
+--- a/arch/arm/boot/dts/broadcom/bcm4709-tplink-archer-c9-v1.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-tplink-archer-c9-v1.dts
+@@ -100,6 +100,44 @@
+ 	vcc-gpio = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
+ };
+ 
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "wan";
++		};
++
++		port at 1 {
++			label = "lan1";
++		};
++
++		port at 2 {
++			label = "lan2";
++		};
++
++		port at 3 {
++			label = "lan3";
++		};
++
++		port at 4 {
++			label = "lan4";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
++
+ &spi_nor {
+ 	status = "okay";
+ 
+--- a/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-900dhp.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-900dhp.dts
+@@ -107,3 +107,42 @@
+ &usb3_phy {
+ 	status = "okay";
+ };
++
++&srab {
++	status = "okay";
++
++	ports {
++		port at 0 {
++			label = "lan1";
++		};
++
++		port at 1 {
++			label = "lan2";
++		};
++
++		port at 2 {
++			label = "lan3";
++		};
++
++		port at 3 {
++			label = "lan4";
++		};
++
++		port at 4 {
++			label = "wan";
++		};
++
++		port at 5 {
++			label = "cpu";
++		};
++
++		port at 7 {
++			status = "disabled";
++		};
++
++		port at 8 {
++			status = "disabled";
++		};
++	};
++};
++
diff --git a/target/linux/bcm53xx/patches-6.6/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch b/target/linux/bcm53xx/patches-6.6/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch
new file mode 100644
index 0000000000..053e5347d1
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/310-ARM-BCM5301X-Add-DT-for-Netgear-R7900.patch
@@ -0,0 +1,64 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
+Subject: [PATCH] ARM: BCM5301X: Add DT for Netgear R7900
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
+---
+
+--- a/arch/arm/boot/dts/broadcom/Makefile
++++ b/arch/arm/boot/dts/broadcom/Makefile
+@@ -68,6 +68,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
+ 	bcm4709-buffalo-wxr-1900dhp.dtb \
+ 	bcm4709-linksys-ea9200.dtb \
+ 	bcm4709-netgear-r7000.dtb \
++	bcm4709-netgear-r7900.dtb \
+ 	bcm4709-netgear-r8000.dtb \
+ 	bcm4709-tplink-archer-c9-v1.dtb \
+ 	bcm47094-asus-rt-ac3100.dtb \
+--- /dev/null
++++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r7900.dts
+@@ -0,0 +1,42 @@
++/*
++ * Broadcom BCM470X / BCM5301X ARM platform code.
++ * DTS for Netgear R7900
++ *
++ * Copyright (C) 2016 Rafał Miłecki <zajec5 at gmail.com>
++ *
++ * Licensed under the GNU/GPL. See COPYING for details.
++ */
++
++/dts-v1/;
++
++#include "bcm4709.dtsi"
++#include "bcm5301x-nand-cs0-bch8.dtsi"
++
++/ {
++	compatible = "netgear,r7900", "brcm,bcm4709", "brcm,bcm4708";
++	model = "Netgear R7900";
++
++	chosen {
++		bootargs = "console=ttyS0,115200";
++	};
++
++	memory {
++		reg = <0x00000000 0x08000000
++		       0x88000000 0x08000000>;
++	};
++
++	axi at 18000000 {
++		usb3 at 23000 {
++			reg = <0x00023000 0x1000>;
++
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
++		};
++	};
++};
++
++&uart0 {
++	status = "okay";
++};
diff --git a/target/linux/bcm53xx/patches-6.6/332-Meraki-MX6X-partition-fixups.patch b/target/linux/bcm53xx/patches-6.6/332-Meraki-MX6X-partition-fixups.patch
new file mode 100644
index 0000000000..9743c99f28
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/332-Meraki-MX6X-partition-fixups.patch
@@ -0,0 +1,52 @@
+From 35bba88e75311242841dde83073c211310ec0259 Mon Sep 17 00:00:00 2001
+From: Matthew Hagan <mnhagan88 at gmail.com>
+Date: Wed, 4 May 2022 08:07:06 +0100
+Subject: [PATCH] bcm53xx: partition fixups for Meraki MX64/MX65
+
+We need to enlarge the u-boot partition to add extra features like UBI
+booting. The shmoo and newly created env partitions can easily be moved
+to the nvram partition. This fixup allows u-boot to be enlarged to up to
+1MiB.
+
+Signed-off-by: Matthew Hagan <mnhagan88 at gmail.com>
+---
+ arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi
+@@ -84,13 +84,7 @@
+ 
+ 		partition at 0 {
+ 			label = "u-boot";
+-			reg = <0x0 0x80000>;
+-			read-only;
+-		};
+-
+-		partition at 80000 {
+-			label = "shmoo";
+-			reg = <0x80000 0x80000>;
++			reg = <0x0 0x100000>;
+ 			read-only;
+ 		};
+ 
+@@ -101,7 +95,18 @@
+ 
+ 		partition at 400000 {
+ 			label = "nvram";
+-			reg = <0x400000 0x100000>;
++			reg = <0x400000 0x40000>;
++		};
++
++		partition at 440000 {
++			label = "u-boot-env";
++			reg = <0x440000 0x40000>;
++		};
++
++		partition at 480000 {
++			label = "shmoo";
++			reg = <0x480000 0x80000>;
++			read-only;
+ 		};
+ 
+ 		partition at 500000 {
diff --git a/target/linux/bcm53xx/patches-6.6/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch b/target/linux/bcm53xx/patches-6.6/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch
new file mode 100644
index 0000000000..950e85be9c
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/333-bcm53xx-dts-meraki-mx6x-add-OpenWrt-specific-LED-ali.patch
@@ -0,0 +1,83 @@
+From 9f4e68261b89df87457f46999c471d11754b5de2 Mon Sep 17 00:00:00 2001
+From: Lech Perczak <lech.perczak at gmail.com>
+Date: Sun, 6 Oct 2024 15:57:44 +0200
+Subject: [PATCH] bcm53xx: dts: meraki-mx6x: add OpenWrt-specific LED aliases
+
+Assign green power LED for "boot", "running", orange for "upgrade" and
+red for "failsafe" functions - the same as done for MR33 and MR74.
+
+Signed-off-by: Lech Perczak <lech.perczak at gmail.com>
+---
+ arch/arm/boot/dts/broadcom/bcm958625-meraki-alamo.dtsi   | 9 ++++++++-
+ arch/arm/boot/dts/broadcom/bcm958625-meraki-kingpin.dtsi | 8 +++++++-
+ .../boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi  | 4 ++--
+ 3 files changed, 17 insertions(+), 4 deletions(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm958625-meraki-alamo.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm958625-meraki-alamo.dtsi
+@@ -8,6 +8,13 @@
+ #include "bcm958625-meraki-mx6x-common.dtsi"
+ 
+ / {
++	aliases {
++		led-boot = &led_power;
++		led-running = &led_power;
++		led-upgrade = &led_fault;
++		led-failsafe = &led_failsafe;
++	};
++
+ 	keys {
+ 		compatible = "gpio-keys-polled";
+ 		autorepeat;
+@@ -55,7 +62,7 @@
+ 			gpios = <&gpioa 26 GPIO_ACTIVE_LOW>;
+ 		};
+ 
+-		led-4 {
++		led_fault: led-4 {
+ 			/* amber:power */
+ 			function = LED_FUNCTION_FAULT;
+ 			color = <LED_COLOR_ID_AMBER>;
+--- a/arch/arm/boot/dts/broadcom/bcm958625-meraki-kingpin.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm958625-meraki-kingpin.dtsi
+@@ -8,6 +8,12 @@
+ #include "bcm958625-meraki-mx6x-common.dtsi"
+ 
+ / {
++	aliases {
++		led-boot = &led_power;
++		led-running = &led_power;
++		led-upgrade = &led_fault;
++		led-failsafe = &led_failsafe;
++	};
+ 
+ 	keys {
+ 		compatible = "gpio-keys-polled";
+@@ -104,7 +110,7 @@
+ 			gpios = <&gpioa 29 GPIO_ACTIVE_LOW>;
+ 		};
+ 
+-		led-a {
++		led_fault: led-a {
+ 			/* amber:power */
+ 			function = LED_FUNCTION_FAULT;
+ 			color = <LED_COLOR_ID_AMBER>;
+--- a/arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm958625-meraki-mx6x-common.dtsi
+@@ -14,14 +14,14 @@
+ 	pwm-leds {
+ 		compatible = "pwm-leds";
+ 
+-		led-1 {
++		led_failsafe: led-1 {
+ 			function = LED_FUNCTION_INDICATOR;
+ 			color = <LED_COLOR_ID_RED>;
+ 			pwms = <&pwm 1 50000>;
+ 			max-brightness = <255>;
+ 		};
+ 
+-		led-2 {
++		led_power: led-2 {
+ 			function = LED_FUNCTION_POWER;
+ 			color = <LED_COLOR_ID_GREEN>;
+ 			pwms = <&pwm 2 50000>;
diff --git a/target/linux/bcm53xx/patches-6.6/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch b/target/linux/bcm53xx/patches-6.6/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch
new file mode 100644
index 0000000000..e6140d9a70
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/500-UBI-Detect-EOF-mark-and-erase-all-remaining-blocks.patch
@@ -0,0 +1,59 @@
+From 2a2af518266a29323cf30c3f9ba9ef2ceb1dd84b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
+Date: Thu, 16 Oct 2014 20:52:16 +0200
+Subject: [PATCH] UBI: Detect EOF mark and erase all remaining blocks
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
+---
+ drivers/mtd/ubi/attach.c | 5 +++++
+ drivers/mtd/ubi/io.c     | 4 ++++
+ drivers/mtd/ubi/ubi.h    | 1 +
+ 3 files changed, 10 insertions(+)
+
+--- a/drivers/mtd/ubi/attach.c
++++ b/drivers/mtd/ubi/attach.c
+@@ -82,6 +82,9 @@ static int self_check_ai(struct ubi_devi
+ #define AV_ADD		BIT(1)
+ #define AV_FIND_OR_ADD	(AV_FIND | AV_ADD)
+ 
++/* Set on finding block with 0xdeadc0de, indicates erasing all blocks behind */
++bool erase_all_next;
++
+ /**
+  * find_or_add_av - internal function to find a volume, add a volume or do
+  *		    both (find and add if missing).
+@@ -1580,6 +1583,8 @@ int ubi_attach(struct ubi_device *ubi, i
+ 	if (!ai)
+ 		return -ENOMEM;
+ 
++	erase_all_next = false;
++
+ #ifdef CONFIG_MTD_UBI_FASTMAP
+ 	/* On small flash devices we disable fastmap in any case. */
+ 	if ((int)mtd_div_by_eb(ubi->mtd->size, ubi->mtd) <= UBI_FM_MAX_START) {
+--- a/drivers/mtd/ubi/io.c
++++ b/drivers/mtd/ubi/io.c
+@@ -717,6 +717,10 @@ int ubi_io_read_ec_hdr(struct ubi_device
+ 	}
+ 
+ 	magic = be32_to_cpu(ec_hdr->magic);
++	if (magic == 0xdeadc0de)
++		erase_all_next = true;
++	if (erase_all_next)
++		return read_err ? UBI_IO_FF_BITFLIPS : UBI_IO_FF;
+ 	if (magic != UBI_EC_HDR_MAGIC) {
+ 		if (mtd_is_eccerr(read_err))
+ 			return UBI_IO_BAD_HDR_EBADMSG;
+--- a/drivers/mtd/ubi/ubi.h
++++ b/drivers/mtd/ubi/ubi.h
+@@ -822,6 +822,7 @@ extern struct mutex ubi_devices_mutex;
+ extern struct blocking_notifier_head ubi_notifiers;
+ 
+ /* attach.c */
++extern bool erase_all_next;
+ struct ubi_ainf_peb *ubi_alloc_aeb(struct ubi_attach_info *ai, int pnum,
+ 				   int ec);
+ void ubi_free_aeb(struct ubi_attach_info *ai, struct ubi_ainf_peb *aeb);
diff --git a/target/linux/bcm53xx/patches-6.6/600-net-disable-GRO-by-default.patch b/target/linux/bcm53xx/patches-6.6/600-net-disable-GRO-by-default.patch
new file mode 100644
index 0000000000..fd41824383
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/600-net-disable-GRO-by-default.patch
@@ -0,0 +1,36 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Mon, 20 Jun 2022 10:01:18 +0200
+Subject: [PATCH] net: disable GRO by default
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In many cases GRO improves network performance however it comes at a
+cost of chacksums calculations. In case of slow CPU and missing hardware
+csum calculation support GRO can actually decrease network speed.
+
+On BCM4708 *disabling* GRO results in following NAT masquarade speed
+changes:
+1. 364 Mb/s → 396 Mb/s (packet steering disabled)
+2. 341 Mb/s → 566 Mb/s (packet steering enabled)
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+ include/linux/netdev_features.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/include/linux/netdev_features.h
++++ b/include/linux/netdev_features.h
+@@ -243,10 +243,10 @@ static inline int find_next_netdev_featu
+ #define NETIF_F_UPPER_DISABLES	NETIF_F_LRO
+ 
+ /* changeable features with no special hardware requirements */
+-#define NETIF_F_SOFT_FEATURES	(NETIF_F_GSO | NETIF_F_GRO | NETIF_F_GRO_FRAGLIST)
++#define NETIF_F_SOFT_FEATURES	(NETIF_F_GSO)
+ 
+ /* Changeable features with no special hardware requirements that defaults to off. */
+-#define NETIF_F_SOFT_FEATURES_OFF	(NETIF_F_GRO_UDP_FWD)
++#define NETIF_F_SOFT_FEATURES_OFF	(NETIF_F_GRO_UDP_FWD | NETIF_F_GRO | NETIF_F_GRO_FRAGLIST)
+ 
+ #define NETIF_F_VLAN_FEATURES	(NETIF_F_HW_VLAN_CTAG_FILTER | \
+ 				 NETIF_F_HW_VLAN_CTAG_RX | \
diff --git a/target/linux/bcm53xx/patches-6.6/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-6.6/905-BCM53573-minor-hacks.patch
new file mode 100644
index 0000000000..44573cb46a
--- /dev/null
+++ b/target/linux/bcm53xx/patches-6.6/905-BCM53573-minor-hacks.patch
@@ -0,0 +1,80 @@
+From 6f1c62440eb6846cb8045d7a5480ec7bbe47c96f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Mon, 15 Aug 2016 10:30:41 +0200
+Subject: [PATCH] BCM53573 minor hacks
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+
+--- a/arch/arm/boot/dts/broadcom/bcm53573.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm53573.dtsi
+@@ -54,6 +54,7 @@
+ 			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+ 			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+ 			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
++		clocks = <&ilp>;
+ 	};
+ 
+ 	clocks {
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -331,14 +331,6 @@ static int bcma_register_devices(struct
+ 	}
+ #endif
+ 
+-#ifdef CONFIG_BCMA_SFLASH
+-	if (bus->drv_cc.sflash.present) {
+-		err = platform_device_register(&bcma_sflash_dev);
+-		if (err)
+-			bcma_err(bus, "Error registering serial flash\n");
+-	}
+-#endif
+-
+ #ifdef CONFIG_BCMA_NFLASH
+ 	if (bus->drv_cc.nflash.present) {
+ 		err = platform_device_register(&bcma_nflash_dev);
+@@ -418,6 +410,14 @@ int bcma_bus_register(struct bcma_bus *b
+ 			bcma_register_core(bus, core);
+ 	}
+ 
++#ifdef CONFIG_BCMA_SFLASH
++	if (bus->drv_cc.sflash.present) {
++		err = platform_device_register(&bcma_sflash_dev);
++		if (err)
++			bcma_err(bus, "Error registering serial flash\n");
++	}
++#endif
++
+ 	/* Try to get SPROM */
+ 	err = bcma_sprom_get(bus);
+ 	if (err == -ENOENT) {
+--- a/drivers/clocksource/arm_arch_timer.c
++++ b/drivers/clocksource/arm_arch_timer.c
+@@ -14,6 +14,7 @@
+ #include <linux/smp.h>
+ #include <linux/cpu.h>
+ #include <linux/cpu_pm.h>
++#include <linux/clk.h>
+ #include <linux/clockchips.h>
+ #include <linux/clocksource.h>
+ #include <linux/clocksource_ids.h>
+@@ -1048,6 +1049,16 @@ static void __init arch_timer_of_configu
+ 	if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate))
+ 		arch_timer_rate = rate;
+ 
++	/* Get clk rate through clk driver if present */
++	if (!arch_timer_rate) {
++		struct clk *clk = of_clk_get(np, 0);
++
++		if (!IS_ERR(clk)) {
++			if (!clk_prepare_enable(clk))
++				arch_timer_rate = clk_get_rate(clk);
++		}
++	}
++
+ 	/* Check the timer frequency. */
+ 	if (validate_timer_rate())
+ 		pr_warn("frequency not available\n");




More information about the lede-commits mailing list