diff --git a/iopsys-mediatek/mt7622/config-5.4 b/iopsys-mediatek/mt7622/config-5.4
index b873bdc40c3764180b36330c7bf28281ef1fa0a1..282cd0bab547af5278ca610072e6b42f7b23b904 100644
--- a/iopsys-mediatek/mt7622/config-5.4
+++ b/iopsys-mediatek/mt7622/config-5.4
@@ -331,6 +331,7 @@ CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_UID16=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HOLES_IN_ZONE=y
+# CONFIG_HW_RANDOM_MTK is not set
 CONFIG_HZ=250
 CONFIG_HZ_250=y
 CONFIG_I2C=y
@@ -527,6 +528,8 @@ CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_SGL_ALLOC=y
 CONFIG_SG_POOL=y
 CONFIG_SMP=y
+# CONFIG_SND_SOC_MT6797 is not set
+# CONFIG_SND_SOC_MT8183 is not set
 CONFIG_SPARSEMEM=y
 CONFIG_SPARSEMEM_EXTREME=y
 CONFIG_SPARSEMEM_MANUAL=y
diff --git a/iopsys-mediatek/patches-5.4/0001-v5.7-spi-make-spi-max-frequency-optional.patch b/iopsys-mediatek/patches-5.4/0001-v5.7-spi-make-spi-max-frequency-optional.patch
index 8487c3dda0b80539c53ebb035d24366f5ece3ca8..79ce15c37b61b2854a3f4c7a63c7ef3838953b84 100644
--- a/iopsys-mediatek/patches-5.4/0001-v5.7-spi-make-spi-max-frequency-optional.patch
+++ b/iopsys-mediatek/patches-5.4/0001-v5.7-spi-make-spi-max-frequency-optional.patch
@@ -20,7 +20,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
 
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -1803,13 +1803,8 @@ static int of_spi_parse_dt(struct spi_co
+@@ -1809,13 +1809,8 @@ static int of_spi_parse_dt(struct spi_co
  		spi->mode |= SPI_CS_HIGH;
  
  	/* Device speed */
diff --git a/iopsys-mediatek/patches-5.4/0601-net-dsa-propagate-resolved-link-config-via-mac_link_.patch b/iopsys-mediatek/patches-5.4/0601-net-dsa-propagate-resolved-link-config-via-mac_link_.patch
index 4c939e8017d843be46ba7b900c8d08ef5ca83d2b..913784372b4cc7cc9774f61f4dc242c401200f5a 100644
--- a/iopsys-mediatek/patches-5.4/0601-net-dsa-propagate-resolved-link-config-via-mac_link_.patch
+++ b/iopsys-mediatek/patches-5.4/0601-net-dsa-propagate-resolved-link-config-via-mac_link_.patch
@@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  	struct ethtool_eee *p = &priv->dev->ports[port].eee;
 --- a/drivers/net/dsa/lantiq_gswip.c
 +++ b/drivers/net/dsa/lantiq_gswip.c
-@@ -1508,7 +1508,9 @@ static void gswip_phylink_mac_link_down(
+@@ -1657,7 +1657,9 @@ static void gswip_phylink_mac_link_down(
  static void gswip_phylink_mac_link_up(struct dsa_switch *ds, int port,
  				      unsigned int mode,
  				      phy_interface_t interface,
@@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- a/drivers/net/dsa/mt7530.c
 +++ b/drivers/net/dsa/mt7530.c
-@@ -1450,7 +1450,9 @@ static void mt7530_phylink_mac_link_down
+@@ -1442,7 +1442,9 @@ static void mt7530_phylink_mac_link_down
  static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port,
  				       unsigned int mode,
  				       phy_interface_t interface,
@@ -90,7 +90,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  		mv88e6xxx_mac_link_force(ds, port, LINK_FORCED_UP);
 --- a/drivers/net/dsa/sja1105/sja1105_main.c
 +++ b/drivers/net/dsa/sja1105/sja1105_main.c
-@@ -830,7 +830,9 @@ static void sja1105_mac_link_down(struct
+@@ -831,7 +831,9 @@ static void sja1105_mac_link_down(struct
  static void sja1105_mac_link_up(struct dsa_switch *ds, int port,
  				unsigned int mode,
  				phy_interface_t interface,
diff --git a/iopsys-mediatek/patches-5.4/0602-net-dsa-mt7530-use-resolved-link-config-in-mac_link_.patch b/iopsys-mediatek/patches-5.4/0602-net-dsa-mt7530-use-resolved-link-config-in-mac_link_.patch
index de5b2607783150730cdc9a781f47134f4dc86d07..0f437ae15332ffc946d3e263dad2ac6647f7fd6a 100644
--- a/iopsys-mediatek/patches-5.4/0602-net-dsa-mt7530-use-resolved-link-config-in-mac_link_.patch
+++ b/iopsys-mediatek/patches-5.4/0602-net-dsa-mt7530-use-resolved-link-config-in-mac_link_.patch
@@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
  	mutex_unlock(&priv->reg_mutex);
  }
-@@ -1405,8 +1394,7 @@ static void mt7530_phylink_mac_config(st
+@@ -1397,8 +1386,7 @@ static void mt7530_phylink_mac_config(st
  
  	mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port));
  	mcr_new = mcr_cur;
@@ -61,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  	mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN |
  		   PMCR_BACKPR_EN | PMCR_FORCE_MODE;
  
-@@ -1414,26 +1402,6 @@ static void mt7530_phylink_mac_config(st
+@@ -1406,26 +1394,6 @@ static void mt7530_phylink_mac_config(st
  	if (port == 5 && dsa_is_user_port(ds, 5))
  		mcr_new |= PMCR_EXT_PHY;
  
@@ -88,7 +88,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  	if (mcr_new != mcr_cur)
  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
  }
-@@ -1444,7 +1412,7 @@ static void mt7530_phylink_mac_link_down
+@@ -1436,7 +1404,7 @@ static void mt7530_phylink_mac_link_down
  {
  	struct mt7530_priv *priv = ds->priv;
  
@@ -97,7 +97,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  }
  
  static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port,
-@@ -1455,8 +1423,31 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1447,8 +1415,31 @@ static void mt7530_phylink_mac_link_up(s
  				       bool tx_pause, bool rx_pause)
  {
  	struct mt7530_priv *priv = ds->priv;
diff --git a/iopsys-mediatek/patches-5.4/0603-net-dsa-mt7530-Extend-device-data-ready-for-adding-a.patch b/iopsys-mediatek/patches-5.4/0603-net-dsa-mt7530-Extend-device-data-ready-for-adding-a.patch
index 04189e8e313a92fa9d99b8ee6202923d86b95bd2..9ac5599a254d3213c753ad4e435f4d5e63a297f2 100644
--- a/iopsys-mediatek/patches-5.4/0603-net-dsa-mt7530-Extend-device-data-ready-for-adding-a.patch
+++ b/iopsys-mediatek/patches-5.4/0603-net-dsa-mt7530-Extend-device-data-ready-for-adding-a.patch
@@ -47,7 +47,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		return -EINVAL;
  	}
  
-@@ -1342,12 +1344,11 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1334,12 +1336,11 @@ mt7530_setup(struct dsa_switch *ds)
  	return 0;
  }
  
@@ -63,7 +63,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  
  	switch (port) {
  	case 0: /* Internal phy */
-@@ -1356,33 +1357,114 @@ static void mt7530_phylink_mac_config(st
+@@ -1348,33 +1349,114 @@ static void mt7530_phylink_mac_config(st
  	case 3:
  	case 4:
  		if (state->interface != PHY_INTERFACE_MODE_GMII)
@@ -189,7 +189,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		return;
  	}
  
-@@ -1450,61 +1532,44 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1442,61 +1524,44 @@ static void mt7530_phylink_mac_link_up(s
  	mt7530_set(priv, MT7530_PMCR_P(port), mcr);
  }
  
@@ -274,7 +274,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  	phylink_set(mask, Pause);
  	phylink_set(mask, Asym_Pause);
  
-@@ -1600,12 +1665,45 @@ static int mt7530_set_mac_eee(struct dsa
+@@ -1592,12 +1657,45 @@ static int mt7530_set_mac_eee(struct dsa
  	return 0;
  }
  
@@ -323,7 +323,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  	.get_ethtool_stats	= mt7530_get_ethtool_stats,
  	.get_sset_count		= mt7530_get_sset_count,
  	.port_enable		= mt7530_port_enable,
-@@ -1622,18 +1720,43 @@ static const struct dsa_switch_ops mt753
+@@ -1614,18 +1712,43 @@ static const struct dsa_switch_ops mt753
  	.port_vlan_del		= mt7530_port_vlan_del,
  	.port_mirror_add	= mt7530_port_mirror_add,
  	.port_mirror_del	= mt7530_port_mirror_del,
@@ -372,7 +372,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  	{ /* sentinel */ },
  };
  MODULE_DEVICE_TABLE(of, mt7530_of_match);
-@@ -1671,8 +1794,21 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -1663,8 +1786,21 @@ mt7530_probe(struct mdio_device *mdiodev
  	/* Get the hardware identifier from the devicetree node.
  	 * We will need it for some of the clock and regulator setup.
  	 */
diff --git a/iopsys-mediatek/patches-5.4/0604-net-dsa-mt7530-Add-the-support-of-MT7531-switch.patch b/iopsys-mediatek/patches-5.4/0604-net-dsa-mt7530-Add-the-support-of-MT7531-switch.patch
index 9333f03aaf9c0ef1bebe0f53a6cef4f8687e3276..8434c61b505391fc0024029e8009c72a357ed4f8 100644
--- a/iopsys-mediatek/patches-5.4/0604-net-dsa-mt7530-Add-the-support-of-MT7531-switch.patch
+++ b/iopsys-mediatek/patches-5.4/0604-net-dsa-mt7530-Add-the-support-of-MT7531-switch.patch
@@ -394,7 +394,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  	 */
  	mt7530_write(priv, MT7530_PCR_P(port),
  		     PCR_MATRIX(dsa_user_ports(priv->ds)));
-@@ -1130,27 +1454,42 @@ mt7530_port_vlan_del(struct dsa_switch *
+@@ -1122,27 +1446,42 @@ mt7530_port_vlan_del(struct dsa_switch *
  	return 0;
  }
  
@@ -444,7 +444,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  
  	val = mt7530_read(priv, MT7530_PCR_P(port));
  	if (ingress) {
-@@ -1165,7 +1504,7 @@ static int mt7530_port_mirror_add(struct
+@@ -1157,7 +1496,7 @@ static int mt7530_port_mirror_add(struct
  	return 0;
  }
  
@@ -453,7 +453,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  				   struct dsa_mall_mirror_tc_entry *mirror)
  {
  	struct mt7530_priv *priv = ds->priv;
-@@ -1182,9 +1521,9 @@ static void mt7530_port_mirror_del(struc
+@@ -1174,9 +1513,9 @@ static void mt7530_port_mirror_del(struc
  	mt7530_write(priv, MT7530_PCR_P(port), val);
  
  	if (!priv->mirror_rx && !priv->mirror_tx) {
@@ -466,7 +466,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  	}
  }
  
-@@ -1290,7 +1629,7 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1282,7 +1621,7 @@ mt7530_setup(struct dsa_switch *ds)
  			   PCR_MATRIX_CLR);
  
  		if (dsa_is_cpu_port(ds, i))
@@ -475,7 +475,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		else
  			mt7530_port_disable(ds, i);
  
-@@ -1344,6 +1683,118 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1336,6 +1675,118 @@ mt7530_setup(struct dsa_switch *ds)
  	return 0;
  }
  
@@ -594,7 +594,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  static bool
  mt7530_phy_mode_supported(struct dsa_switch *ds, int port,
  			  const struct phylink_link_state *state)
-@@ -1382,6 +1833,47 @@ unsupported:
+@@ -1374,6 +1825,47 @@ unsupported:
  	return false;
  }
  
@@ -642,7 +642,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  static bool
  mt753x_phy_mode_supported(struct dsa_switch *ds, int port,
  			  const struct phylink_link_state *state)
-@@ -1414,6 +1906,227 @@ mt7530_mac_config(struct dsa_switch *ds,
+@@ -1406,6 +1898,227 @@ mt7530_mac_config(struct dsa_switch *ds,
  	return 0;
  }
  
@@ -870,7 +870,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  static int
  mt753x_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
  		  const struct phylink_link_state *state)
-@@ -1449,6 +2162,8 @@ mt753x_phylink_mac_config(struct dsa_swi
+@@ -1441,6 +2154,8 @@ mt753x_phylink_mac_config(struct dsa_swi
  		if (mt753x_mac_config(ds, port, mode, state) < 0)
  			goto unsupported;
  
@@ -879,7 +879,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		break;
  	case 6: /* 1st cpu port */
  		if (priv->p6_interface == state->interface)
-@@ -1468,7 +2183,8 @@ unsupported:
+@@ -1460,7 +2175,8 @@ unsupported:
  		return;
  	}
  
@@ -889,7 +889,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		dev_err(ds->dev, "%s: in-band negotiation unsupported\n",
  			__func__);
  		return;
-@@ -1478,7 +2194,7 @@ unsupported:
+@@ -1470,7 +2186,7 @@ unsupported:
  	mcr_new = mcr_cur;
  	mcr_new &= ~PMCR_LINK_SETTINGS_MASK;
  	mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN |
@@ -898,7 +898,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  
  	/* Are we connected to external phy */
  	if (port == 5 && dsa_is_user_port(ds, 5))
-@@ -1488,7 +2204,18 @@ unsupported:
+@@ -1480,7 +2196,18 @@ unsupported:
  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
  }
  
@@ -918,7 +918,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  					 unsigned int mode,
  					 phy_interface_t interface)
  {
-@@ -1497,7 +2224,19 @@ static void mt7530_phylink_mac_link_down
+@@ -1489,7 +2216,19 @@ static void mt7530_phylink_mac_link_down
  	mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK);
  }
  
@@ -939,7 +939,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  				       unsigned int mode,
  				       phy_interface_t interface,
  				       struct phy_device *phydev,
-@@ -1507,18 +2246,29 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1499,18 +2238,29 @@ static void mt7530_phylink_mac_link_up(s
  	struct mt7530_priv *priv = ds->priv;
  	u32 mcr;
  
@@ -971,7 +971,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		break;
  	}
  	if (duplex == DUPLEX_FULL) {
-@@ -1532,6 +2282,45 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1524,6 +2274,45 @@ static void mt7530_phylink_mac_link_up(s
  	mt7530_set(priv, MT7530_PMCR_P(port), mcr);
  }
  
@@ -1017,7 +1017,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  static void
  mt7530_mac_port_validate(struct dsa_switch *ds, int port,
  			 unsigned long *supported)
-@@ -1540,6 +2329,14 @@ mt7530_mac_port_validate(struct dsa_swit
+@@ -1532,6 +2321,14 @@ mt7530_mac_port_validate(struct dsa_swit
  		phylink_set(supported, 1000baseX_Full);
  }
  
@@ -1032,7 +1032,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  static void
  mt753x_phylink_validate(struct dsa_switch *ds, int port,
  			unsigned long *supported,
-@@ -1556,7 +2353,8 @@ mt753x_phylink_validate(struct dsa_switc
+@@ -1548,7 +2345,8 @@ mt753x_phylink_validate(struct dsa_switc
  
  	phylink_set_port_modes(mask);
  
@@ -1042,7 +1042,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  		phylink_set(mask, 10baseT_Half);
  		phylink_set(mask, 10baseT_Full);
  		phylink_set(mask, 100baseT_Half);
-@@ -1575,6 +2373,11 @@ mt753x_phylink_validate(struct dsa_switc
+@@ -1567,6 +2365,11 @@ mt753x_phylink_validate(struct dsa_switc
  
  	linkmode_and(supported, supported, mask);
  	linkmode_and(state->advertising, state->advertising, mask);
@@ -1054,7 +1054,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  }
  
  static int
-@@ -1665,6 +2468,63 @@ static int mt7530_set_mac_eee(struct dsa
+@@ -1657,6 +2460,63 @@ static int mt7530_set_mac_eee(struct dsa
  	return 0;
  }
  
@@ -1118,7 +1118,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  static int
  mt753x_phylink_mac_link_state(struct dsa_switch *ds, int port,
  			      struct phylink_link_state *state)
-@@ -1718,13 +2578,14 @@ static const struct dsa_switch_ops mt753
+@@ -1710,13 +2570,14 @@ static const struct dsa_switch_ops mt753
  	.port_vlan_prepare	= mt7530_port_vlan_prepare,
  	.port_vlan_add		= mt7530_port_vlan_add,
  	.port_vlan_del		= mt7530_port_vlan_del,
@@ -1137,7 +1137,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  	.get_mac_eee		= mt7530_get_mac_eee,
  	.set_mac_eee		= mt7530_set_mac_eee,
  };
-@@ -1752,11 +2613,26 @@ static const struct mt753x_info mt753x_t
+@@ -1744,11 +2605,26 @@ static const struct mt753x_info mt753x_t
  		.mac_port_get_state = mt7530_phylink_mac_link_state,
  		.mac_port_config = mt7530_mac_config,
  	},
diff --git a/iopsys-mediatek/patches-5.4/1011-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch b/iopsys-mediatek/patches-5.4/1011-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch
index 98886767a2d6aaa2e0615910f4ec796c73e06b1b..e75d76b9cc67f18043a0ad5d538106c4deb52613 100644
--- a/iopsys-mediatek/patches-5.4/1011-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch
+++ b/iopsys-mediatek/patches-5.4/1011-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch
@@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #include <linux/mfd/syscon.h>
  #include <linux/regmap.h>
  #include <linux/clk.h>
-@@ -2485,6 +2486,13 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2506,6 +2507,13 @@ static int mtk_hw_init(struct mtk_eth *e
  	if (ret)
  		goto err_disable_pm;
  
@@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
  		ret = device_reset(eth->dev);
  		if (ret) {
-@@ -3083,6 +3091,16 @@ static int mtk_probe(struct platform_dev
+@@ -3104,6 +3112,16 @@ static int mtk_probe(struct platform_dev
  		}
  	}
  
@@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  					  GFP_KERNEL);
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
-@@ -435,6 +435,12 @@
+@@ -448,6 +448,12 @@
  #define RSTCTRL_FE		BIT(6)
  #define RSTCTRL_PPE		BIT(31)