diff mbox series

[1/2] bcm63xx: kernel: fix up bcm63268 roboswitch gpio registers

Message ID 8446761.T7Z3S40VBb@tool
State Accepted
Delegated to: Álvaro Fernández
Headers show
Series [1/2] bcm63xx: kernel: fix up bcm63268 roboswitch gpio registers | expand

Commit Message

Daniel González Cabanelas Dec. 19, 2022, 2:21 p.m. UTC
Some BCM63268 bootloaders may leave gpio registers, related to the
roboswitch, disabled before loading the OpenWrt firmware. As result of
this the switch won't work.

These registers, if not enabled, probably avoid forwarding packets.

Fix it.

Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
---
 ...IPS-BCM63XX-add-support-for-BCM63268.patch | 51 +++++++++++++++----
 ...MIPS-BCM63XX-add-support-for-BCM6318.patch | 10 ++--
 ...BCM63XX-add-PCIe-support-for-BCM6318.patch | 10 ++--
 ...-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch |  4 +-
 .../347-MIPS-BCM6318-USB-support.patch        |  4 +-
 ...-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch |  6 +--
 ...IPS-BCM63XX-add-BCM63268-USB-support.patch |  2 +-
 ...X-add-clkdev-lookups-for-device-tree.patch | 20 ++++----
 ...enable-rgmii-clock-on-external-ports.patch |  2 +-
 ...CM63XX-Register-SPI-flash-if-present.patch |  2 +-
 .../430-MIPS-BCM63XX-add-nand-clocks.patch    |  8 +--
 .../431-MIPS-BCM63XX-add-nand-rset.patch      |  2 +-
 ...IPS-BCM63XX-add-support-for-BCM63268.patch | 51 +++++++++++++++----
 ...MIPS-BCM63XX-add-support-for-BCM6318.patch | 10 ++--
 ...BCM63XX-add-PCIe-support-for-BCM6318.patch | 10 ++--
 ...-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch |  4 +-
 .../347-MIPS-BCM6318-USB-support.patch        |  4 +-
 ...-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch |  6 +--
 ...IPS-BCM63XX-add-BCM63268-USB-support.patch |  2 +-
 ...X-add-clkdev-lookups-for-device-tree.patch | 20 ++++----
 ...enable-rgmii-clock-on-external-ports.patch |  2 +-
 ...CM63XX-Register-SPI-flash-if-present.patch |  2 +-
 .../430-MIPS-BCM63XX-add-nand-clocks.patch    |  8 +--
 .../431-MIPS-BCM63XX-add-nand-rset.patch      |  2 +-
 24 files changed, 154 insertions(+), 88 deletions(-)
diff mbox series

Patch

diff --git a/target/linux/bcm63xx/patches-5.10/339-MIPS-BCM63XX-add-support-for-BCM63268.patch b/target/linux/bcm63xx/patches-5.10/339-MIPS-BCM63XX-add-support-for-BCM63268.patch
index 84209d6e3b..0f59d57f1e 100644
--- a/target/linux/bcm63xx/patches-5.10/339-MIPS-BCM63XX-add-support-for-BCM63268.patch
+++ b/target/linux/bcm63xx/patches-5.10/339-MIPS-BCM63XX-add-support-for-BCM63268.patch
@@ -46,16 +46,37 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		val = bcm_mpi_readl(MPI_CSBASE_REG(0));
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -169,6 +169,8 @@ static void enetsw_set(struct clk *clk,
+@@ -52,6 +52,18 @@ static void bcm_hwclock_set(u32 mask, in
+ 	bcm_perf_writel(reg, PERF_CKCTL_REG);
+ }
+ 
++static void bcm_gpiorobosw_set(u32 mask, int enable)
++{
++	u32 reg;
++
++	reg = bcm_gpio_readl(GPIO_ROBOSW_SW_CTRL_REG);
++	if (enable)
++		reg |= mask;
++	else
++		reg &= ~mask;
++	bcm_gpio_writel(reg, GPIO_ROBOSW_SW_CTRL_REG);
++}
++
+ /*
+  * Ethernet MAC "misc" clock: dma clocks and main clock on 6348
+  */
+@@ -169,6 +181,10 @@ static void enetsw_set(struct clk *clk,
  			clk_disable_unlocked(&clk_swpkt_sar);
  		}
  		bcm_hwclock_set(CKCTL_6368_ROBOSW_EN, enable);
 +	} else if (BCMCPU_IS_63268()) {
++		bcm_gpiorobosw_set(GPIO_ROBOSW_MII_DUMB_FWDG_EN |
++				   GPIO_ROBOSW_HW_FWDG_EN, enable);
 +		bcm_hwclock_set(CKCTL_63268_ROBOSW_EN, enable);
  	} else {
  		return;
  	}
-@@ -214,6 +216,8 @@ static void usbh_set(struct clk *clk, in
+@@ -214,6 +230,8 @@ static void usbh_set(struct clk *clk, in
  		bcm_hwclock_set(CKCTL_6362_USBH_EN, enable);
  	else if (BCMCPU_IS_6368())
  		bcm_hwclock_set(CKCTL_6368_USBH_EN, enable);
@@ -64,7 +85,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	else
  		return;
  
-@@ -236,6 +240,8 @@ static void usbd_set(struct clk *clk, in
+@@ -236,6 +254,8 @@ static void usbd_set(struct clk *clk, in
  		bcm_hwclock_set(CKCTL_6362_USBD_EN, enable);
  	else if (BCMCPU_IS_6368())
  		bcm_hwclock_set(CKCTL_6368_USBD_EN, enable);
@@ -73,7 +94,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	else
  		return;
  
-@@ -262,9 +268,13 @@ static void spi_set(struct clk *clk, int
+@@ -262,9 +282,13 @@ static void spi_set(struct clk *clk, int
  		mask = CKCTL_6358_SPI_EN;
  	else if (BCMCPU_IS_6362())
  		mask = CKCTL_6362_SPI_EN;
@@ -89,7 +110,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	bcm_hwclock_set(mask, enable);
  }
  
-@@ -283,6 +293,8 @@ static void hsspi_set(struct clk *clk, i
+@@ -283,6 +307,8 @@ static void hsspi_set(struct clk *clk, i
  		mask = CKCTL_6328_HSSPI_EN;
  	else if (BCMCPU_IS_6362())
  		mask = CKCTL_6362_HSSPI_EN;
@@ -98,7 +119,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	else
  		return;
  
-@@ -352,6 +364,8 @@ static void pcie_set(struct clk *clk, in
+@@ -352,6 +378,8 @@ static void pcie_set(struct clk *clk, in
  		bcm_hwclock_set(CKCTL_6328_PCIE_EN, enable);
  	else if (BCMCPU_IS_6362())
  		bcm_hwclock_set(CKCTL_6362_PCIE_EN, enable);
@@ -107,7 +128,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  }
  
  static struct clk clk_pcie = {
-@@ -548,6 +562,21 @@ static struct clk_lookup bcm6368_clks[]
+@@ -548,6 +576,21 @@ static struct clk_lookup bcm6368_clks[]
  	CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
  };
  
@@ -129,7 +150,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #define HSSPI_PLL_HZ_6328	133333333
  #define HSSPI_PLL_HZ_6362	400000000
  
-@@ -580,6 +609,10 @@ static int __init bcm63xx_clk_init(void)
+@@ -580,6 +623,10 @@ static int __init bcm63xx_clk_init(void)
  	case BCM6368_CPU_ID:
  		clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
  		break;
@@ -663,7 +684,19 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /* MIPS PLL control register */
  #define PERF_MIPSPLLCTL_REG		0x34
  #define MIPSPLLCTL_N1_SHIFT		20
-@@ -1367,6 +1439,13 @@
+@@ -559,6 +631,11 @@
+ #define STRAPBUS_6368_BOOT_SEL_SERIAL	1
+ #define STRAPBUS_6368_BOOT_SEL_PARALLEL 3
+ 
++/* BCM6318 BCM6328 BCM6362 BCM63268 */
++#define GPIO_ROBOSW_SW_CTRL_REG		0x40
++#define GPIO_ROBOSW_MII_DUMB_FWDG_EN	(1 << 0)
++#define GPIO_ROBOSW_HW_FWDG_EN		(1 << 3)
++
+ 
+ /*************************************************************************
+  * _REG relative to RSET_ENET
+@@ -1367,6 +1444,13 @@
  #define STRAPBUS_6362_BOOT_SEL_SERIAL	(1 << 15)
  #define STRAPBUS_6362_BOOT_SEL_NAND	(0 << 15)
  
diff --git a/target/linux/bcm63xx/patches-5.10/341-MIPS-BCM63XX-add-support-for-BCM6318.patch b/target/linux/bcm63xx/patches-5.10/341-MIPS-BCM63XX-add-support-for-BCM6318.patch
index cb0f8f3e1b..0e21273073 100644
--- a/target/linux/bcm63xx/patches-5.10/341-MIPS-BCM63XX-add-support-for-BCM6318.patch
+++ b/target/linux/bcm63xx/patches-5.10/341-MIPS-BCM63XX-add-support-for-BCM6318.patch
@@ -46,7 +46,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  		val = bcm_mpi_readl(MPI_CSBASE_REG(0));
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -289,7 +289,9 @@ static void hsspi_set(struct clk *clk, i
+@@ -303,7 +303,9 @@ static void hsspi_set(struct clk *clk, i
  {
  	u32 mask;
  
@@ -57,7 +57,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  		mask = CKCTL_6328_HSSPI_EN;
  	else if (BCMCPU_IS_6362())
  		mask = CKCTL_6362_HSSPI_EN;
-@@ -456,6 +458,19 @@ static struct clk_lookup bcm3368_clks[]
+@@ -470,6 +472,19 @@ static struct clk_lookup bcm3368_clks[]
  	CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
  };
  
@@ -77,7 +77,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  static struct clk_lookup bcm6328_clks[] = {
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
-@@ -577,6 +592,7 @@ static struct clk_lookup bcm63268_clks[]
+@@ -591,6 +606,7 @@ static struct clk_lookup bcm63268_clks[]
  	CLKDEV_INIT(NULL, "pcie", &clk_pcie),
  };
  
@@ -85,7 +85,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  #define HSSPI_PLL_HZ_6328	133333333
  #define HSSPI_PLL_HZ_6362	400000000
  
-@@ -586,6 +602,10 @@ static int __init bcm63xx_clk_init(void)
+@@ -600,6 +616,10 @@ static int __init bcm63xx_clk_init(void)
  	case BCM3368_CPU_ID:
  		clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
  		break;
@@ -599,7 +599,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  #define TIMER_CTL0_REG			0x4
  #define TIMER_CTL1_REG			0x8
  #define TIMER_CTL2_REG			0xC
-@@ -1254,6 +1326,8 @@
+@@ -1259,6 +1331,8 @@
  #define SDRAM_CFG_32B_MASK		(1 << SDRAM_CFG_32B_SHIFT)
  #define SDRAM_CFG_BANK_SHIFT		13
  #define SDRAM_CFG_BANK_MASK		(1 << SDRAM_CFG_BANK_SHIFT)
diff --git a/target/linux/bcm63xx/patches-5.10/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch b/target/linux/bcm63xx/patches-5.10/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch
index 1ebb451b59..feba1a6ef7 100644
--- a/target/linux/bcm63xx/patches-5.10/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch
+++ b/target/linux/bcm63xx/patches-5.10/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch
@@ -13,8 +13,8 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -52,6 +52,18 @@ static void bcm_hwclock_set(u32 mask, in
- 	bcm_perf_writel(reg, PERF_CKCTL_REG);
+@@ -64,6 +64,18 @@ static void bcm_gpiorobosw_set(u32 mask,
+ 	bcm_gpio_writel(reg, GPIO_ROBOSW_SW_CTRL_REG);
  }
  
 +static void bcm_ub_hwclock_set(u32 mask, int enable)
@@ -32,7 +32,7 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
  /*
   * Ethernet MAC "misc" clock: dma clocks and main clock on 6348
   */
-@@ -362,12 +374,17 @@ static struct clk clk_ipsec = {
+@@ -376,12 +388,17 @@ static struct clk clk_ipsec = {
  
  static void pcie_set(struct clk *clk, int enable)
  {
@@ -70,7 +70,7 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
  #define BCM_PCIE_MEM_END_PA_6328	(BCM_PCIE_MEM_BASE_PA_6328 +	\
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -1530,6 +1530,17 @@
+@@ -1535,6 +1535,17 @@
   * _REG relative to RSET_PCIE
   *************************************************************************/
  
@@ -88,7 +88,7 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
  #define PCIE_CONFIG2_REG		0x408
  #define CONFIG2_BAR1_SIZE_EN		1
  #define CONFIG2_BAR1_SIZE_MASK		0xf
-@@ -1575,7 +1586,54 @@
+@@ -1580,7 +1591,54 @@
  #define PCIE_RC_INT_C			(1 << 2)
  #define PCIE_RC_INT_D			(1 << 3)
  
diff --git a/target/linux/bcm63xx/patches-5.10/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch b/target/linux/bcm63xx/patches-5.10/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch
index a8eea5b119..f6fb193d6a 100644
--- a/target/linux/bcm63xx/patches-5.10/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch
+++ b/target/linux/bcm63xx/patches-5.10/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -168,7 +168,11 @@ static struct clk clk_swpkt_usb = {
+@@ -180,7 +180,11 @@ static struct clk clk_swpkt_usb = {
   */
  static void enetsw_set(struct clk *clk, int enable)
  {
@@ -13,7 +13,7 @@ 
  		bcm_hwclock_set(CKCTL_6328_ROBOSW_EN, enable);
  	} else if (BCMCPU_IS_6362()) {
  		bcm_hwclock_set(CKCTL_6362_ROBOSW_EN, enable);
-@@ -220,18 +224,22 @@ static struct clk clk_pcm = {
+@@ -234,18 +238,22 @@ static struct clk clk_pcm = {
   */
  static void usbh_set(struct clk *clk, int enable)
  {
diff --git a/target/linux/bcm63xx/patches-5.10/347-MIPS-BCM6318-USB-support.patch b/target/linux/bcm63xx/patches-5.10/347-MIPS-BCM6318-USB-support.patch
index 15d4679670..ddbb30d04f 100644
--- a/target/linux/bcm63xx/patches-5.10/347-MIPS-BCM6318-USB-support.patch
+++ b/target/linux/bcm63xx/patches-5.10/347-MIPS-BCM6318-USB-support.patch
@@ -71,7 +71,7 @@ 
  
  #define GPIO_PINMUX_OTHR_REG		0x24
  #define GPIO_PINMUX_OTHR_6328_USB_SHIFT 12
-@@ -1000,6 +1006,7 @@
+@@ -1005,6 +1011,7 @@
  
  #define USBH_PRIV_SWAP_6358_REG		0x0
  #define USBH_PRIV_SWAP_6368_REG		0x1c
@@ -79,7 +79,7 @@ 
  
  #define USBH_PRIV_SWAP_USBD_SHIFT	6
  #define USBH_PRIV_SWAP_USBD_MASK	(1 << USBH_PRIV_SWAP_USBD_SHIFT)
-@@ -1025,6 +1032,13 @@
+@@ -1030,6 +1037,13 @@
  #define USBH_PRIV_SETUP_IOC_SHIFT	4
  #define USBH_PRIV_SETUP_IOC_MASK	(1 << USBH_PRIV_SETUP_IOC_SHIFT)
  
diff --git a/target/linux/bcm63xx/patches-5.10/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch b/target/linux/bcm63xx/patches-5.10/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch
index cdff8d5a4d..e4496227c1 100644
--- a/target/linux/bcm63xx/patches-5.10/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch
+++ b/target/linux/bcm63xx/patches-5.10/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch
@@ -10,7 +10,7 @@ 
  
  /*************************************************************************
   * _REG relative to RSET_WDT
-@@ -1534,6 +1537,11 @@
+@@ -1539,6 +1542,11 @@
  #define STRAPBUS_63268_FCVO_SHIFT	21
  #define STRAPBUS_63268_FCVO_MASK	(0xf << STRAPBUS_63268_FCVO_SHIFT)
  
@@ -24,7 +24,7 @@ 
  #define STRAPBUS_6328_FCVO_MASK		(0x1f << STRAPBUS_6328_FCVO_SHIFT)
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -64,6 +64,26 @@ static void bcm_ub_hwclock_set(u32 mask,
+@@ -76,6 +76,26 @@ static void bcm_ub_hwclock_set(u32 mask,
  	bcm_perf_writel(reg, PERF_UB_CKCTL_REG);
  }
  
@@ -51,7 +51,7 @@ 
  /*
   * Ethernet MAC "misc" clock: dma clocks and main clock on 6348
   */
-@@ -236,7 +256,17 @@ static void usbh_set(struct clk *clk, in
+@@ -250,7 +270,17 @@ static void usbh_set(struct clk *clk, in
  	} else if (BCMCPU_IS_6368()) {
  		bcm_hwclock_set(CKCTL_6368_USBH_EN, enable);
  	} else if (BCMCPU_IS_63268()) {
diff --git a/target/linux/bcm63xx/patches-5.10/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch b/target/linux/bcm63xx/patches-5.10/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch
index 3f98ddfdc3..05f58c6f9f 100644
--- a/target/linux/bcm63xx/patches-5.10/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch
+++ b/target/linux/bcm63xx/patches-5.10/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -1034,11 +1034,18 @@
+@@ -1039,11 +1039,18 @@
  #define USBH_PRIV_SETUP_6368_REG	0x28
  #define USBH_PRIV_SETUP_IOC_SHIFT	4
  #define USBH_PRIV_SETUP_IOC_MASK	(1 << USBH_PRIV_SETUP_IOC_SHIFT)
diff --git a/target/linux/bcm63xx/patches-5.10/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch b/target/linux/bcm63xx/patches-5.10/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch
index d6b1190b9d..ce611ad48a 100644
--- a/target/linux/bcm63xx/patches-5.10/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch
+++ b/target/linux/bcm63xx/patches-5.10/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch
@@ -9,7 +9,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -501,6 +501,8 @@ static struct clk_lookup bcm3368_clks[]
+@@ -515,6 +515,8 @@ static struct clk_lookup bcm3368_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -18,7 +18,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -517,7 +519,9 @@ static struct clk_lookup bcm6318_clks[]
+@@ -531,7 +533,9 @@ static struct clk_lookup bcm6318_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -28,7 +28,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -531,7 +535,10 @@ static struct clk_lookup bcm6328_clks[]
+@@ -545,7 +549,10 @@ static struct clk_lookup bcm6328_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -39,7 +39,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -544,6 +551,7 @@ static struct clk_lookup bcm6338_clks[]
+@@ -558,6 +565,7 @@ static struct clk_lookup bcm6338_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -47,7 +47,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -558,6 +566,7 @@ static struct clk_lookup bcm6345_clks[]
+@@ -572,6 +580,7 @@ static struct clk_lookup bcm6345_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -55,7 +55,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -572,6 +581,7 @@ static struct clk_lookup bcm6348_clks[]
+@@ -586,6 +595,7 @@ static struct clk_lookup bcm6348_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -63,7 +63,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -588,6 +598,8 @@ static struct clk_lookup bcm6358_clks[]
+@@ -602,6 +612,8 @@ static struct clk_lookup bcm6358_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -72,7 +72,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -607,7 +619,10 @@ static struct clk_lookup bcm6362_clks[]
+@@ -621,7 +633,10 @@ static struct clk_lookup bcm6362_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -83,7 +83,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -623,6 +638,8 @@ static struct clk_lookup bcm6368_clks[]
+@@ -637,6 +652,8 @@ static struct clk_lookup bcm6368_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -92,7 +92,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -637,7 +654,10 @@ static struct clk_lookup bcm63268_clks[]
+@@ -651,7 +668,10 @@ static struct clk_lookup bcm63268_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
diff --git a/target/linux/bcm63xx/patches-5.10/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch b/target/linux/bcm63xx/patches-5.10/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch
index 575c433d34..f2b0d70d4a 100644
--- a/target/linux/bcm63xx/patches-5.10/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch
+++ b/target/linux/bcm63xx/patches-5.10/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch
@@ -10,7 +10,7 @@  Subject: [PATCH 54/81] bcm63xx_enet: enable rgmii clock on external ports
 
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -968,6 +968,19 @@
+@@ -973,6 +973,19 @@
  #define ENETSW_PORTOV_FDX_MASK		(1 << 1)
  #define ENETSW_PORTOV_LINKUP_MASK	(1 << 0)
  
diff --git a/target/linux/bcm63xx/patches-5.10/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch b/target/linux/bcm63xx/patches-5.10/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch
index 0a3b34b743..c2738c15e5 100644
--- a/target/linux/bcm63xx/patches-5.10/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch
+++ b/target/linux/bcm63xx/patches-5.10/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch
@@ -146,7 +146,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  #define STRAPBUS_6368_BOOT_SEL_MASK	0x3
  #define STRAPBUS_6368_BOOT_SEL_NAND	0
  #define STRAPBUS_6368_BOOT_SEL_SERIAL	1
-@@ -1565,6 +1566,7 @@
+@@ -1570,6 +1571,7 @@
  #define IDDQ_CTRL_63268_USBH		(1 << 4)
  
  #define MISC_STRAPBUS_6328_REG		0x240
diff --git a/target/linux/bcm63xx/patches-5.10/430-MIPS-BCM63XX-add-nand-clocks.patch b/target/linux/bcm63xx/patches-5.10/430-MIPS-BCM63XX-add-nand-clocks.patch
index a29c3b780b..731dae1ad3 100644
--- a/target/linux/bcm63xx/patches-5.10/430-MIPS-BCM63XX-add-nand-clocks.patch
+++ b/target/linux/bcm63xx/patches-5.10/430-MIPS-BCM63XX-add-nand-clocks.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -430,6 +430,23 @@ static struct clk clk_pcie = {
+@@ -444,6 +444,23 @@ static struct clk clk_pcie = {
  };
  
  /*
@@ -24,7 +24,7 @@ 
   * Internal peripheral clock
   */
  static struct clk clk_periph = {
-@@ -624,6 +641,7 @@ static struct clk_lookup bcm6362_clks[]
+@@ -638,6 +655,7 @@ static struct clk_lookup bcm6362_clks[]
  	CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
  	CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
  	/* gated clocks */
@@ -32,7 +32,7 @@ 
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
  	CLKDEV_INIT(NULL, "usbd", &clk_usbd),
-@@ -641,6 +659,7 @@ static struct clk_lookup bcm6368_clks[]
+@@ -655,6 +673,7 @@ static struct clk_lookup bcm6368_clks[]
  	CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
  	CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
  	/* gated clocks */
@@ -40,7 +40,7 @@ 
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
  	CLKDEV_INIT(NULL, "usbd", &clk_usbd),
-@@ -659,6 +678,7 @@ static struct clk_lookup bcm63268_clks[]
+@@ -673,6 +692,7 @@ static struct clk_lookup bcm63268_clks[]
  	CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
  	CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
  	/* gated clocks */
diff --git a/target/linux/bcm63xx/patches-5.10/431-MIPS-BCM63XX-add-nand-rset.patch b/target/linux/bcm63xx/patches-5.10/431-MIPS-BCM63XX-add-nand-rset.patch
index 090ffeb43c..3035be35ae 100644
--- a/target/linux/bcm63xx/patches-5.10/431-MIPS-BCM63XX-add-nand-rset.patch
+++ b/target/linux/bcm63xx/patches-5.10/431-MIPS-BCM63XX-add-nand-rset.patch
@@ -111,7 +111,7 @@ 
  #endif /* ! BCM63XX_IO_H_ */
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -1688,4 +1688,31 @@
+@@ -1693,4 +1693,31 @@
  #define OTP_USER_BITS_6328_REG(i)	(0x20 + (i) * 4)
  #define   OTP_6328_REG3_TP1_DISABLED	BIT(9)
  
diff --git a/target/linux/bcm63xx/patches-5.15/339-MIPS-BCM63XX-add-support-for-BCM63268.patch b/target/linux/bcm63xx/patches-5.15/339-MIPS-BCM63XX-add-support-for-BCM63268.patch
index bba964f481..e5ca00d956 100644
--- a/target/linux/bcm63xx/patches-5.15/339-MIPS-BCM63XX-add-support-for-BCM63268.patch
+++ b/target/linux/bcm63xx/patches-5.15/339-MIPS-BCM63XX-add-support-for-BCM63268.patch
@@ -46,16 +46,37 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		val = bcm_mpi_readl(MPI_CSBASE_REG(0));
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -169,6 +169,8 @@ static void enetsw_set(struct clk *clk,
+@@ -52,6 +52,18 @@ static void bcm_hwclock_set(u32 mask, in
+ 	bcm_perf_writel(reg, PERF_CKCTL_REG);
+ }
+ 
++static void bcm_gpiorobosw_set(u32 mask, int enable)
++{
++	u32 reg;
++
++	reg = bcm_gpio_readl(GPIO_ROBOSW_SW_CTRL_REG);
++	if (enable)
++		reg |= mask;
++	else
++		reg &= ~mask;
++	bcm_gpio_writel(reg, GPIO_ROBOSW_SW_CTRL_REG);
++}
++
+ /*
+  * Ethernet MAC "misc" clock: dma clocks and main clock on 6348
+  */
+@@ -169,6 +181,10 @@ static void enetsw_set(struct clk *clk,
  			clk_disable_unlocked(&clk_swpkt_sar);
  		}
  		bcm_hwclock_set(CKCTL_6368_ROBOSW_EN, enable);
 +	} else if (BCMCPU_IS_63268()) {
++		bcm_gpiorobosw_set(GPIO_ROBOSW_MII_DUMB_FWDG_EN |
++				   GPIO_ROBOSW_HW_FWDG_EN, enable);
 +		bcm_hwclock_set(CKCTL_63268_ROBOSW_EN, enable);
  	} else {
  		return;
  	}
-@@ -214,6 +216,8 @@ static void usbh_set(struct clk *clk, in
+@@ -214,6 +230,8 @@ static void usbh_set(struct clk *clk, in
  		bcm_hwclock_set(CKCTL_6362_USBH_EN, enable);
  	else if (BCMCPU_IS_6368())
  		bcm_hwclock_set(CKCTL_6368_USBH_EN, enable);
@@ -64,7 +85,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	else
  		return;
  
-@@ -236,6 +240,8 @@ static void usbd_set(struct clk *clk, in
+@@ -236,6 +254,8 @@ static void usbd_set(struct clk *clk, in
  		bcm_hwclock_set(CKCTL_6362_USBD_EN, enable);
  	else if (BCMCPU_IS_6368())
  		bcm_hwclock_set(CKCTL_6368_USBD_EN, enable);
@@ -73,7 +94,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	else
  		return;
  
-@@ -262,9 +268,13 @@ static void spi_set(struct clk *clk, int
+@@ -262,9 +282,13 @@ static void spi_set(struct clk *clk, int
  		mask = CKCTL_6358_SPI_EN;
  	else if (BCMCPU_IS_6362())
  		mask = CKCTL_6362_SPI_EN;
@@ -89,7 +110,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	bcm_hwclock_set(mask, enable);
  }
  
-@@ -283,6 +293,8 @@ static void hsspi_set(struct clk *clk, i
+@@ -283,6 +307,8 @@ static void hsspi_set(struct clk *clk, i
  		mask = CKCTL_6328_HSSPI_EN;
  	else if (BCMCPU_IS_6362())
  		mask = CKCTL_6362_HSSPI_EN;
@@ -98,7 +119,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	else
  		return;
  
-@@ -352,6 +364,8 @@ static void pcie_set(struct clk *clk, in
+@@ -352,6 +378,8 @@ static void pcie_set(struct clk *clk, in
  		bcm_hwclock_set(CKCTL_6328_PCIE_EN, enable);
  	else if (BCMCPU_IS_6362())
  		bcm_hwclock_set(CKCTL_6362_PCIE_EN, enable);
@@ -107,7 +128,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  }
  
  static struct clk clk_pcie = {
-@@ -548,6 +562,21 @@ static struct clk_lookup bcm6368_clks[]
+@@ -548,6 +576,21 @@ static struct clk_lookup bcm6368_clks[]
  	CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
  };
  
@@ -129,7 +150,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #define HSSPI_PLL_HZ_6328	133333333
  #define HSSPI_PLL_HZ_6362	400000000
  
-@@ -580,6 +609,10 @@ static int __init bcm63xx_clk_init(void)
+@@ -580,6 +623,10 @@ static int __init bcm63xx_clk_init(void)
  	case BCM6368_CPU_ID:
  		clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
  		break;
@@ -663,7 +684,19 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /* MIPS PLL control register */
  #define PERF_MIPSPLLCTL_REG		0x34
  #define MIPSPLLCTL_N1_SHIFT		20
-@@ -1367,6 +1439,13 @@
+@@ -559,6 +631,11 @@
+ #define STRAPBUS_6368_BOOT_SEL_SERIAL	1
+ #define STRAPBUS_6368_BOOT_SEL_PARALLEL 3
+ 
++/* BCM6318 BCM6328 BCM6362 BCM63268 */
++#define GPIO_ROBOSW_SW_CTRL_REG		0x40
++#define GPIO_ROBOSW_MII_DUMB_FWDG_EN	(1 << 0)
++#define GPIO_ROBOSW_HW_FWDG_EN		(1 << 3)
++
+ 
+ /*************************************************************************
+  * _REG relative to RSET_ENET
+@@ -1367,6 +1444,13 @@
  #define STRAPBUS_6362_BOOT_SEL_SERIAL	(1 << 15)
  #define STRAPBUS_6362_BOOT_SEL_NAND	(0 << 15)
  
diff --git a/target/linux/bcm63xx/patches-5.15/341-MIPS-BCM63XX-add-support-for-BCM6318.patch b/target/linux/bcm63xx/patches-5.15/341-MIPS-BCM63XX-add-support-for-BCM6318.patch
index cb0f8f3e1b..0e21273073 100644
--- a/target/linux/bcm63xx/patches-5.15/341-MIPS-BCM63XX-add-support-for-BCM6318.patch
+++ b/target/linux/bcm63xx/patches-5.15/341-MIPS-BCM63XX-add-support-for-BCM6318.patch
@@ -46,7 +46,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  		val = bcm_mpi_readl(MPI_CSBASE_REG(0));
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -289,7 +289,9 @@ static void hsspi_set(struct clk *clk, i
+@@ -303,7 +303,9 @@ static void hsspi_set(struct clk *clk, i
  {
  	u32 mask;
  
@@ -57,7 +57,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  		mask = CKCTL_6328_HSSPI_EN;
  	else if (BCMCPU_IS_6362())
  		mask = CKCTL_6362_HSSPI_EN;
-@@ -456,6 +458,19 @@ static struct clk_lookup bcm3368_clks[]
+@@ -470,6 +472,19 @@ static struct clk_lookup bcm3368_clks[]
  	CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
  };
  
@@ -77,7 +77,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  static struct clk_lookup bcm6328_clks[] = {
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
-@@ -577,6 +592,7 @@ static struct clk_lookup bcm63268_clks[]
+@@ -591,6 +606,7 @@ static struct clk_lookup bcm63268_clks[]
  	CLKDEV_INIT(NULL, "pcie", &clk_pcie),
  };
  
@@ -85,7 +85,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  #define HSSPI_PLL_HZ_6328	133333333
  #define HSSPI_PLL_HZ_6362	400000000
  
-@@ -586,6 +602,10 @@ static int __init bcm63xx_clk_init(void)
+@@ -600,6 +616,10 @@ static int __init bcm63xx_clk_init(void)
  	case BCM3368_CPU_ID:
  		clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
  		break;
@@ -599,7 +599,7 @@  Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
  #define TIMER_CTL0_REG			0x4
  #define TIMER_CTL1_REG			0x8
  #define TIMER_CTL2_REG			0xC
-@@ -1254,6 +1326,8 @@
+@@ -1259,6 +1331,8 @@
  #define SDRAM_CFG_32B_MASK		(1 << SDRAM_CFG_32B_SHIFT)
  #define SDRAM_CFG_BANK_SHIFT		13
  #define SDRAM_CFG_BANK_MASK		(1 << SDRAM_CFG_BANK_SHIFT)
diff --git a/target/linux/bcm63xx/patches-5.15/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch b/target/linux/bcm63xx/patches-5.15/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch
index 1ebb451b59..feba1a6ef7 100644
--- a/target/linux/bcm63xx/patches-5.15/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch
+++ b/target/linux/bcm63xx/patches-5.15/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch
@@ -13,8 +13,8 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -52,6 +52,18 @@ static void bcm_hwclock_set(u32 mask, in
- 	bcm_perf_writel(reg, PERF_CKCTL_REG);
+@@ -64,6 +64,18 @@ static void bcm_gpiorobosw_set(u32 mask,
+ 	bcm_gpio_writel(reg, GPIO_ROBOSW_SW_CTRL_REG);
  }
  
 +static void bcm_ub_hwclock_set(u32 mask, int enable)
@@ -32,7 +32,7 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
  /*
   * Ethernet MAC "misc" clock: dma clocks and main clock on 6348
   */
-@@ -362,12 +374,17 @@ static struct clk clk_ipsec = {
+@@ -376,12 +388,17 @@ static struct clk clk_ipsec = {
  
  static void pcie_set(struct clk *clk, int enable)
  {
@@ -70,7 +70,7 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
  #define BCM_PCIE_MEM_END_PA_6328	(BCM_PCIE_MEM_BASE_PA_6328 +	\
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -1530,6 +1530,17 @@
+@@ -1535,6 +1535,17 @@
   * _REG relative to RSET_PCIE
   *************************************************************************/
  
@@ -88,7 +88,7 @@  Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318
  #define PCIE_CONFIG2_REG		0x408
  #define CONFIG2_BAR1_SIZE_EN		1
  #define CONFIG2_BAR1_SIZE_MASK		0xf
-@@ -1575,7 +1586,54 @@
+@@ -1580,7 +1591,54 @@
  #define PCIE_RC_INT_C			(1 << 2)
  #define PCIE_RC_INT_D			(1 << 3)
  
diff --git a/target/linux/bcm63xx/patches-5.15/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch b/target/linux/bcm63xx/patches-5.15/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch
index a8eea5b119..f6fb193d6a 100644
--- a/target/linux/bcm63xx/patches-5.15/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch
+++ b/target/linux/bcm63xx/patches-5.15/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -168,7 +168,11 @@ static struct clk clk_swpkt_usb = {
+@@ -180,7 +180,11 @@ static struct clk clk_swpkt_usb = {
   */
  static void enetsw_set(struct clk *clk, int enable)
  {
@@ -13,7 +13,7 @@ 
  		bcm_hwclock_set(CKCTL_6328_ROBOSW_EN, enable);
  	} else if (BCMCPU_IS_6362()) {
  		bcm_hwclock_set(CKCTL_6362_ROBOSW_EN, enable);
-@@ -220,18 +224,22 @@ static struct clk clk_pcm = {
+@@ -234,18 +238,22 @@ static struct clk clk_pcm = {
   */
  static void usbh_set(struct clk *clk, int enable)
  {
diff --git a/target/linux/bcm63xx/patches-5.15/347-MIPS-BCM6318-USB-support.patch b/target/linux/bcm63xx/patches-5.15/347-MIPS-BCM6318-USB-support.patch
index 15d4679670..ddbb30d04f 100644
--- a/target/linux/bcm63xx/patches-5.15/347-MIPS-BCM6318-USB-support.patch
+++ b/target/linux/bcm63xx/patches-5.15/347-MIPS-BCM6318-USB-support.patch
@@ -71,7 +71,7 @@ 
  
  #define GPIO_PINMUX_OTHR_REG		0x24
  #define GPIO_PINMUX_OTHR_6328_USB_SHIFT 12
-@@ -1000,6 +1006,7 @@
+@@ -1005,6 +1011,7 @@
  
  #define USBH_PRIV_SWAP_6358_REG		0x0
  #define USBH_PRIV_SWAP_6368_REG		0x1c
@@ -79,7 +79,7 @@ 
  
  #define USBH_PRIV_SWAP_USBD_SHIFT	6
  #define USBH_PRIV_SWAP_USBD_MASK	(1 << USBH_PRIV_SWAP_USBD_SHIFT)
-@@ -1025,6 +1032,13 @@
+@@ -1030,6 +1037,13 @@
  #define USBH_PRIV_SETUP_IOC_SHIFT	4
  #define USBH_PRIV_SETUP_IOC_MASK	(1 << USBH_PRIV_SETUP_IOC_SHIFT)
  
diff --git a/target/linux/bcm63xx/patches-5.15/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch b/target/linux/bcm63xx/patches-5.15/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch
index cdff8d5a4d..e4496227c1 100644
--- a/target/linux/bcm63xx/patches-5.15/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch
+++ b/target/linux/bcm63xx/patches-5.15/348-MIPS-BCM63XX-fix-BCM63268-USB-clock.patch
@@ -10,7 +10,7 @@ 
  
  /*************************************************************************
   * _REG relative to RSET_WDT
-@@ -1534,6 +1537,11 @@
+@@ -1539,6 +1542,11 @@
  #define STRAPBUS_63268_FCVO_SHIFT	21
  #define STRAPBUS_63268_FCVO_MASK	(0xf << STRAPBUS_63268_FCVO_SHIFT)
  
@@ -24,7 +24,7 @@ 
  #define STRAPBUS_6328_FCVO_MASK		(0x1f << STRAPBUS_6328_FCVO_SHIFT)
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -64,6 +64,26 @@ static void bcm_ub_hwclock_set(u32 mask,
+@@ -76,6 +76,26 @@ static void bcm_ub_hwclock_set(u32 mask,
  	bcm_perf_writel(reg, PERF_UB_CKCTL_REG);
  }
  
@@ -51,7 +51,7 @@ 
  /*
   * Ethernet MAC "misc" clock: dma clocks and main clock on 6348
   */
-@@ -236,7 +256,17 @@ static void usbh_set(struct clk *clk, in
+@@ -250,7 +270,17 @@ static void usbh_set(struct clk *clk, in
  	} else if (BCMCPU_IS_6368()) {
  		bcm_hwclock_set(CKCTL_6368_USBH_EN, enable);
  	} else if (BCMCPU_IS_63268()) {
diff --git a/target/linux/bcm63xx/patches-5.15/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch b/target/linux/bcm63xx/patches-5.15/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch
index 3f98ddfdc3..05f58c6f9f 100644
--- a/target/linux/bcm63xx/patches-5.15/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch
+++ b/target/linux/bcm63xx/patches-5.15/349-MIPS-BCM63XX-add-BCM63268-USB-support.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -1034,11 +1034,18 @@
+@@ -1039,11 +1039,18 @@
  #define USBH_PRIV_SETUP_6368_REG	0x28
  #define USBH_PRIV_SETUP_IOC_SHIFT	4
  #define USBH_PRIV_SETUP_IOC_MASK	(1 << USBH_PRIV_SETUP_IOC_SHIFT)
diff --git a/target/linux/bcm63xx/patches-5.15/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch b/target/linux/bcm63xx/patches-5.15/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch
index d6b1190b9d..ce611ad48a 100644
--- a/target/linux/bcm63xx/patches-5.15/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch
+++ b/target/linux/bcm63xx/patches-5.15/389-MIPS-BCM63XX-add-clkdev-lookups-for-device-tree.patch
@@ -9,7 +9,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -501,6 +501,8 @@ static struct clk_lookup bcm3368_clks[]
+@@ -515,6 +515,8 @@ static struct clk_lookup bcm3368_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -18,7 +18,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -517,7 +519,9 @@ static struct clk_lookup bcm6318_clks[]
+@@ -531,7 +533,9 @@ static struct clk_lookup bcm6318_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -28,7 +28,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -531,7 +535,10 @@ static struct clk_lookup bcm6328_clks[]
+@@ -545,7 +549,10 @@ static struct clk_lookup bcm6328_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -39,7 +39,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -544,6 +551,7 @@ static struct clk_lookup bcm6338_clks[]
+@@ -558,6 +565,7 @@ static struct clk_lookup bcm6338_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -47,7 +47,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -558,6 +566,7 @@ static struct clk_lookup bcm6345_clks[]
+@@ -572,6 +580,7 @@ static struct clk_lookup bcm6345_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -55,7 +55,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -572,6 +581,7 @@ static struct clk_lookup bcm6348_clks[]
+@@ -586,6 +595,7 @@ static struct clk_lookup bcm6348_clks[]
  	/* fixed rate clocks */
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@@ -63,7 +63,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -588,6 +598,8 @@ static struct clk_lookup bcm6358_clks[]
+@@ -602,6 +612,8 @@ static struct clk_lookup bcm6358_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -72,7 +72,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enet0", &clk_enet0),
  	CLKDEV_INIT(NULL, "enet1", &clk_enet1),
-@@ -607,7 +619,10 @@ static struct clk_lookup bcm6362_clks[]
+@@ -621,7 +633,10 @@ static struct clk_lookup bcm6362_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -83,7 +83,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -623,6 +638,8 @@ static struct clk_lookup bcm6368_clks[]
+@@ -637,6 +652,8 @@ static struct clk_lookup bcm6368_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@@ -92,7 +92,7 @@  Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
  	/* gated clocks */
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
-@@ -637,7 +654,10 @@ static struct clk_lookup bcm63268_clks[]
+@@ -651,7 +668,10 @@ static struct clk_lookup bcm63268_clks[]
  	CLKDEV_INIT(NULL, "periph", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
  	CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
diff --git a/target/linux/bcm63xx/patches-5.15/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch b/target/linux/bcm63xx/patches-5.15/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch
index 575c433d34..f2b0d70d4a 100644
--- a/target/linux/bcm63xx/patches-5.15/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch
+++ b/target/linux/bcm63xx/patches-5.15/408-bcm63xx_enet-enable-rgmii-clock-on-external-ports.patch
@@ -10,7 +10,7 @@  Subject: [PATCH 54/81] bcm63xx_enet: enable rgmii clock on external ports
 
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -968,6 +968,19 @@
+@@ -973,6 +973,19 @@
  #define ENETSW_PORTOV_FDX_MASK		(1 << 1)
  #define ENETSW_PORTOV_LINKUP_MASK	(1 << 0)
  
diff --git a/target/linux/bcm63xx/patches-5.15/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch b/target/linux/bcm63xx/patches-5.15/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch
index 0a3b34b743..c2738c15e5 100644
--- a/target/linux/bcm63xx/patches-5.15/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch
+++ b/target/linux/bcm63xx/patches-5.15/411-MIPS-BCM63XX-Register-SPI-flash-if-present.patch
@@ -146,7 +146,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  #define STRAPBUS_6368_BOOT_SEL_MASK	0x3
  #define STRAPBUS_6368_BOOT_SEL_NAND	0
  #define STRAPBUS_6368_BOOT_SEL_SERIAL	1
-@@ -1565,6 +1566,7 @@
+@@ -1570,6 +1571,7 @@
  #define IDDQ_CTRL_63268_USBH		(1 << 4)
  
  #define MISC_STRAPBUS_6328_REG		0x240
diff --git a/target/linux/bcm63xx/patches-5.15/430-MIPS-BCM63XX-add-nand-clocks.patch b/target/linux/bcm63xx/patches-5.15/430-MIPS-BCM63XX-add-nand-clocks.patch
index a29c3b780b..731dae1ad3 100644
--- a/target/linux/bcm63xx/patches-5.15/430-MIPS-BCM63XX-add-nand-clocks.patch
+++ b/target/linux/bcm63xx/patches-5.15/430-MIPS-BCM63XX-add-nand-clocks.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/bcm63xx/clk.c
 +++ b/arch/mips/bcm63xx/clk.c
-@@ -430,6 +430,23 @@ static struct clk clk_pcie = {
+@@ -444,6 +444,23 @@ static struct clk clk_pcie = {
  };
  
  /*
@@ -24,7 +24,7 @@ 
   * Internal peripheral clock
   */
  static struct clk clk_periph = {
-@@ -624,6 +641,7 @@ static struct clk_lookup bcm6362_clks[]
+@@ -638,6 +655,7 @@ static struct clk_lookup bcm6362_clks[]
  	CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
  	CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
  	/* gated clocks */
@@ -32,7 +32,7 @@ 
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
  	CLKDEV_INIT(NULL, "usbd", &clk_usbd),
-@@ -641,6 +659,7 @@ static struct clk_lookup bcm6368_clks[]
+@@ -655,6 +673,7 @@ static struct clk_lookup bcm6368_clks[]
  	CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
  	CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
  	/* gated clocks */
@@ -40,7 +40,7 @@ 
  	CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
  	CLKDEV_INIT(NULL, "usbh", &clk_usbh),
  	CLKDEV_INIT(NULL, "usbd", &clk_usbd),
-@@ -659,6 +678,7 @@ static struct clk_lookup bcm63268_clks[]
+@@ -673,6 +692,7 @@ static struct clk_lookup bcm63268_clks[]
  	CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
  	CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
  	/* gated clocks */
diff --git a/target/linux/bcm63xx/patches-5.15/431-MIPS-BCM63XX-add-nand-rset.patch b/target/linux/bcm63xx/patches-5.15/431-MIPS-BCM63XX-add-nand-rset.patch
index 090ffeb43c..3035be35ae 100644
--- a/target/linux/bcm63xx/patches-5.15/431-MIPS-BCM63XX-add-nand-rset.patch
+++ b/target/linux/bcm63xx/patches-5.15/431-MIPS-BCM63XX-add-nand-rset.patch
@@ -111,7 +111,7 @@ 
  #endif /* ! BCM63XX_IO_H_ */
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -1688,4 +1688,31 @@
+@@ -1693,4 +1693,31 @@
  #define OTP_USER_BITS_6328_REG(i)	(0x20 + (i) * 4)
  #define   OTP_6328_REG3_TP1_DISABLED	BIT(9)