diff --git a/target/linux/mediatek/patches-6.12/100-dts-update-mt7622-rfb1.patch b/target/linux/mediatek/patches-6.12/100-dts-update-mt7622-rfb1.patch index 18bcdf02b74..e00f23aba16 100644 --- a/target/linux/mediatek/patches-6.12/100-dts-update-mt7622-rfb1.patch +++ b/target/linux/mediatek/patches-6.12/100-dts-update-mt7622-rfb1.patch @@ -41,7 +41,7 @@ device_type = "memory"; }; -@@ -133,22 +132,22 @@ +@@ -145,22 +144,22 @@ port@0 { reg = <0>; @@ -68,7 +68,7 @@ }; port@4 { -@@ -240,7 +239,22 @@ +@@ -264,7 +263,22 @@ status = "okay"; }; @@ -91,7 +91,7 @@ /* eMMC is shared pin with parallel NAND */ emmc_pins_default: emmc-pins-default { mux { -@@ -517,11 +531,11 @@ +@@ -541,11 +555,11 @@ }; &sata { diff --git a/target/linux/mediatek/patches-6.12/112-dts-fix-bpi64-lan-names.patch b/target/linux/mediatek/patches-6.12/112-dts-fix-bpi64-lan-names.patch index 7f97ef4aef9..d83a89e3f7a 100644 --- a/target/linux/mediatek/patches-6.12/112-dts-fix-bpi64-lan-names.patch +++ b/target/linux/mediatek/patches-6.12/112-dts-fix-bpi64-lan-names.patch @@ -8,7 +8,7 @@ }; chosen { -@@ -165,22 +166,22 @@ +@@ -164,22 +165,22 @@ port@1 { reg = <1>; @@ -34,4 +34,4 @@ + label = "lan4"; }; - port@6 { + port@5 { diff --git a/target/linux/mediatek/patches-6.12/114-dts-bpi64-disable-rtc.patch b/target/linux/mediatek/patches-6.12/114-dts-bpi64-disable-rtc.patch index 50d30234415..05ef32f5042 100644 --- a/target/linux/mediatek/patches-6.12/114-dts-bpi64-disable-rtc.patch +++ b/target/linux/mediatek/patches-6.12/114-dts-bpi64-disable-rtc.patch @@ -1,6 +1,6 @@ --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts -@@ -588,6 +588,10 @@ +@@ -599,6 +599,10 @@ status = "okay"; }; diff --git a/target/linux/mediatek/patches-6.12/121-hack-spi-nand-1b-bbm.patch b/target/linux/mediatek/patches-6.12/121-hack-spi-nand-1b-bbm.patch index ff5521c44ea..bb5e1a296ec 100644 --- a/target/linux/mediatek/patches-6.12/121-hack-spi-nand-1b-bbm.patch +++ b/target/linux/mediatek/patches-6.12/121-hack-spi-nand-1b-bbm.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -724,7 +724,7 @@ static int spinand_mtd_write(struct mtd_ +@@ -893,7 +893,7 @@ static int spinand_mtd_write(struct mtd_ static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos) { struct spinand_device *spinand = nand_to_spinand(nand); @@ -9,7 +9,7 @@ struct nand_page_io_req req = { .pos = *pos, .ooblen = sizeof(marker), -@@ -735,7 +735,7 @@ static bool spinand_isbad(struct nand_de +@@ -904,7 +904,7 @@ static bool spinand_isbad(struct nand_de spinand_select_target(spinand, pos->target); spinand_read_page(spinand, &req); diff --git a/target/linux/mediatek/patches-6.12/131-dts-mt7622-add-snand-support.patch b/target/linux/mediatek/patches-6.12/131-dts-mt7622-add-snand-support.patch index d6e0ab1d41c..5f4735caa45 100644 --- a/target/linux/mediatek/patches-6.12/131-dts-mt7622-add-snand-support.patch +++ b/target/linux/mediatek/patches-6.12/131-dts-mt7622-add-snand-support.patch @@ -1,6 +1,6 @@ --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts -@@ -534,6 +534,65 @@ +@@ -558,6 +558,65 @@ status = "disabled"; }; diff --git a/target/linux/mediatek/patches-6.12/140-dts-fix-wmac-support-for-mt7622-rfb1.patch b/target/linux/mediatek/patches-6.12/140-dts-fix-wmac-support-for-mt7622-rfb1.patch index 117d5abde66..7167d1a8ef9 100644 --- a/target/linux/mediatek/patches-6.12/140-dts-fix-wmac-support-for-mt7622-rfb1.patch +++ b/target/linux/mediatek/patches-6.12/140-dts-fix-wmac-support-for-mt7622-rfb1.patch @@ -1,6 +1,6 @@ --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts -@@ -575,7 +575,7 @@ +@@ -599,7 +599,7 @@ reg = <0x140000 0x0080000>; }; @@ -9,7 +9,7 @@ label = "Factory"; reg = <0x1c0000 0x0100000>; }; -@@ -636,5 +636,6 @@ +@@ -660,5 +660,6 @@ &wmac { pinctrl-names = "default"; pinctrl-0 = <&wmac_pins>; diff --git a/target/linux/mediatek/patches-6.12/200-phy-phy-mtk-tphy-Add-hifsys-support.patch b/target/linux/mediatek/patches-6.12/200-phy-phy-mtk-tphy-Add-hifsys-support.patch index e07aa5662bc..b3db243a97f 100644 --- a/target/linux/mediatek/patches-6.12/200-phy-phy-mtk-tphy-Add-hifsys-support.patch +++ b/target/linux/mediatek/patches-6.12/200-phy-phy-mtk-tphy-Add-hifsys-support.patch @@ -18,7 +18,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support #include "phy-mtk-io.h" -@@ -267,6 +269,9 @@ +@@ -271,6 +273,9 @@ #define USER_BUF_LEN(count) min_t(size_t, 8, (count)) @@ -28,7 +28,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support enum mtk_phy_version { MTK_PHY_V1 = 1, MTK_PHY_V2, -@@ -334,6 +339,7 @@ struct mtk_tphy { +@@ -339,6 +344,7 @@ struct mtk_tphy { void __iomem *sif_base; /* only shared sif */ const struct mtk_phy_pdata *pdata; struct mtk_phy_instance **phys; @@ -36,7 +36,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support int nphys; int src_ref_clk; /* MHZ, reference clock for slew rate calibrate */ int src_coef; /* coefficient for slew rate calibrate */ -@@ -951,6 +957,10 @@ static void pcie_phy_instance_init(struc +@@ -973,6 +979,10 @@ static void pcie_phy_instance_init(struc if (tphy->pdata->version != MTK_PHY_V1) return; @@ -47,7 +47,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support mtk_phy_update_bits(phya + U3P_U3_PHYA_DA_REG0, P3A_RG_XTAL_EXT_PE1H | P3A_RG_XTAL_EXT_PE2H, FIELD_PREP(P3A_RG_XTAL_EXT_PE1H, 0x2) | -@@ -1597,6 +1607,16 @@ static int mtk_tphy_probe(struct platfor +@@ -1621,6 +1631,16 @@ static int mtk_tphy_probe(struct platfor &tphy->src_coef); } @@ -62,5 +62,5 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support + } + port = 0; - for_each_child_of_node(np, child_np) { + for_each_child_of_node_scoped(np, child_np) { struct mtk_phy_instance *instance; diff --git a/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch b/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch index 939ec048555..270e447a81a 100644 --- a/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch +++ b/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch @@ -8,7 +8,7 @@ static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) { -@@ -1347,6 +1348,7 @@ static int spinand_probe(struct spi_mem +@@ -1525,6 +1526,7 @@ static int spinand_probe(struct spi_mem if (ret) return ret; @@ -16,7 +16,7 @@ ret = mtd_device_register(mtd, NULL, 0); if (ret) goto err_spinand_cleanup; -@@ -1354,6 +1356,7 @@ static int spinand_probe(struct spi_mem +@@ -1532,6 +1534,7 @@ static int spinand_probe(struct spi_mem return 0; err_spinand_cleanup: @@ -24,7 +24,7 @@ spinand_cleanup(spinand); return ret; -@@ -1372,6 +1375,7 @@ static int spinand_remove(struct spi_mem +@@ -1550,6 +1553,7 @@ static int spinand_remove(struct spi_mem if (ret) return ret; diff --git a/target/linux/mediatek/patches-6.12/331-mt7622-rfb1-enable-bmt.patch b/target/linux/mediatek/patches-6.12/331-mt7622-rfb1-enable-bmt.patch index 3e956701cd3..81136c9a3b3 100644 --- a/target/linux/mediatek/patches-6.12/331-mt7622-rfb1-enable-bmt.patch +++ b/target/linux/mediatek/patches-6.12/331-mt7622-rfb1-enable-bmt.patch @@ -1,6 +1,6 @@ --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts -@@ -548,6 +548,7 @@ +@@ -572,6 +572,7 @@ spi-tx-bus-width = <4>; spi-rx-bus-width = <4>; nand-ecc-engine = <&snfi>; diff --git a/target/linux/mediatek/patches-6.12/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch b/target/linux/mediatek/patches-6.12/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch index e06e125c462..ee71d49fe1e 100644 --- a/target/linux/mediatek/patches-6.12/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch +++ b/target/linux/mediatek/patches-6.12/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch @@ -24,7 +24,7 @@ Signed-off-by: Davide Fioravanti obj-$(CONFIG_MTD_SPI_NAND) += spinand.o --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -942,6 +942,7 @@ static const struct spinand_manufacturer +@@ -1114,6 +1114,7 @@ static const struct spinand_manufacturer &ato_spinand_manufacturer, &esmt_c8_spinand_manufacturer, &etron_spinand_manufacturer, diff --git a/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch b/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch index 1a67286e612..3b5f21f9c8f 100644 --- a/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch +++ b/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch @@ -10,7 +10,7 @@ #define UART_BUG_TXEN BIT(1) /* UART has buggy TX IIR status */ --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c -@@ -287,7 +287,7 @@ static const struct serial8250_config ua +@@ -276,7 +276,7 @@ static const struct serial8250_config ua .tx_loadsz = 16, .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT, @@ -19,7 +19,7 @@ }, [PORT_NPCM] = { .name = "Nuvoton 16550", -@@ -2783,6 +2783,11 @@ serial8250_do_set_termios(struct uart_po +@@ -2730,6 +2730,11 @@ serial8250_do_set_termios(struct uart_po unsigned long flags; unsigned int baud, quot, frac = 0; diff --git a/target/linux/mediatek/patches-6.12/500-gsw-rtl8367s-mt7622-support.patch b/target/linux/mediatek/patches-6.12/500-gsw-rtl8367s-mt7622-support.patch index 639403807ff..72a1464966d 100644 --- a/target/linux/mediatek/patches-6.12/500-gsw-rtl8367s-mt7622-support.patch +++ b/target/linux/mediatek/patches-6.12/500-gsw-rtl8367s-mt7622-support.patch @@ -1,6 +1,6 @@ --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -418,6 +418,12 @@ config ROCKCHIP_PHY +@@ -431,6 +431,12 @@ config ROCKCHIP_PHY help Currently supports the integrated Ethernet PHY. @@ -15,7 +15,7 @@ select CRC16 --- a/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile -@@ -103,6 +103,7 @@ obj-$(CONFIG_REALTEK_PHY) += realtek/ +@@ -113,6 +113,7 @@ obj-$(CONFIG_REALTEK_PHY) += realtek/ obj-y += rtl8261n/ obj-$(CONFIG_RENESAS_PHY) += uPD60620.o obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o diff --git a/target/linux/mediatek/patches-6.12/601-PCI-mediatek-Assert-PERST-for-100ms-for-power-and-cl.patch b/target/linux/mediatek/patches-6.12/601-PCI-mediatek-Assert-PERST-for-100ms-for-power-and-cl.patch index 983fde707f2..1b18679fb32 100644 --- a/target/linux/mediatek/patches-6.12/601-PCI-mediatek-Assert-PERST-for-100ms-for-power-and-cl.patch +++ b/target/linux/mediatek/patches-6.12/601-PCI-mediatek-Assert-PERST-for-100ms-for-power-and-cl.patch @@ -18,7 +18,7 @@ Acked-by: Pali Rohár --- a/drivers/pci/controller/pcie-mediatek.c +++ b/drivers/pci/controller/pcie-mediatek.c -@@ -708,6 +708,13 @@ static int mtk_pcie_startup_port_v2(stru +@@ -700,6 +700,13 @@ static int mtk_pcie_startup_port_v2(stru */ msleep(100); diff --git a/target/linux/mediatek/patches-6.12/610-pcie-mediatek-fix-clearing-interrupt-status.patch b/target/linux/mediatek/patches-6.12/610-pcie-mediatek-fix-clearing-interrupt-status.patch index 2a49b2275c4..accc6a6f169 100644 --- a/target/linux/mediatek/patches-6.12/610-pcie-mediatek-fix-clearing-interrupt-status.patch +++ b/target/linux/mediatek/patches-6.12/610-pcie-mediatek-fix-clearing-interrupt-status.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/pci/controller/pcie-mediatek.c +++ b/drivers/pci/controller/pcie-mediatek.c -@@ -607,9 +607,9 @@ static void mtk_pcie_intr_handler(struct +@@ -599,9 +599,9 @@ static void mtk_pcie_intr_handler(struct if (status & INTX_MASK) { for_each_set_bit_from(bit, &status, PCI_NUM_INTX + INTX_SHIFT) { /* Clear the INTx */ diff --git a/target/linux/mediatek/patches-6.12/611-pcie-mediatek-gen3-PERST-for-100ms.patch b/target/linux/mediatek/patches-6.12/611-pcie-mediatek-gen3-PERST-for-100ms.patch index 32b4237d822..72437320a0b 100644 --- a/target/linux/mediatek/patches-6.12/611-pcie-mediatek-gen3-PERST-for-100ms.patch +++ b/target/linux/mediatek/patches-6.12/611-pcie-mediatek-gen3-PERST-for-100ms.patch @@ -1,6 +1,6 @@ --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c -@@ -375,7 +375,13 @@ static int mtk_pcie_startup_port(struct +@@ -416,7 +416,13 @@ static int mtk_pcie_startup_port(struct msleep(100); /* De-assert reset signals */ diff --git a/target/linux/mediatek/patches-6.12/737-net-dsa-add-Airoha-AN8855.patch b/target/linux/mediatek/patches-6.12/737-net-dsa-add-Airoha-AN8855.patch index bd70bec4b37..b0adf04a5bd 100644 --- a/target/linux/mediatek/patches-6.12/737-net-dsa-add-Airoha-AN8855.patch +++ b/target/linux/mediatek/patches-6.12/737-net-dsa-add-Airoha-AN8855.patch @@ -169,7 +169,7 @@ Christian Marangi (9): --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig -@@ -41,6 +41,16 @@ config MFD_ALTERA_SYSMGR +@@ -53,6 +53,16 @@ config MFD_ALTERA_SYSMGR using regmap_mmio accesses for ARM32 parts and SMC calls to EL3 for ARM64 parts. @@ -188,14 +188,14 @@ Christian Marangi (9): select MFD_CORE --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile -@@ -7,6 +7,7 @@ - obj-$(CONFIG_MFD_88PM860X) += 88pm860x.o - obj-$(CONFIG_MFD_88PM800) += 88pm800.o 88pm80x.o +@@ -9,6 +9,7 @@ obj-$(CONFIG_MFD_88PM800) += 88pm800.o 8 obj-$(CONFIG_MFD_88PM805) += 88pm805.o 88pm80x.o -+obj-$(CONFIG_MFD_AIROHA_AN8855) += airoha-an8855.o + obj-$(CONFIG_MFD_88PM886_PMIC) += 88pm886.o obj-$(CONFIG_MFD_ACT8945A) += act8945a.o ++obj-$(CONFIG_MFD_AIROHA_AN8855) += airoha-an8855.o obj-$(CONFIG_MFD_SM501) += sm501.o obj-$(CONFIG_ARCH_BCM2835) += bcm2835-pm.o + obj-$(CONFIG_MFD_BCM590XX) += bcm590xx.o --- a/drivers/net/dsa/Kconfig +++ b/drivers/net/dsa/Kconfig @@ -24,6 +24,15 @@ config NET_DSA_LOOP @@ -254,7 +254,7 @@ Christian Marangi (9): obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -147,6 +147,11 @@ config AIROHA_EN8801SC_PHY +@@ -158,6 +158,11 @@ config AIROHA_EN8801SC_PHY help Currently supports the Airoha EN8801SC PHY. @@ -268,14 +268,14 @@ Christian Marangi (9): help --- a/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile -@@ -50,6 +50,7 @@ obj-y += $(sfp-obj-y) $(sfp-obj-m) +@@ -51,6 +51,7 @@ obj-y += $(sfp-obj-y) $(sfp-obj-m) obj-$(CONFIG_ADIN_PHY) += adin.o obj-$(CONFIG_ADIN1100_PHY) += adin1100.o obj-$(CONFIG_AIROHA_EN8801SC_PHY) += en8801sc.o +obj-$(CONFIG_AIR_AN8855_PHY) += air_an8855.o obj-$(CONFIG_AIR_EN8811H_PHY) += air_en8811h.o obj-$(CONFIG_AMD_PHY) += amd.o - obj-$(CONFIG_AQUANTIA_PHY) += aquantia/ + obj-$(CONFIG_AMCC_QT2025_PHY) += qt2025.o --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -29,6 +29,17 @@ source "drivers/nvmem/layouts/Kconfig" diff --git a/target/linux/mediatek/patches-6.12/739-net-add-negotiation-of-in-band-capabilities.patch b/target/linux/mediatek/patches-6.12/739-net-add-negotiation-of-in-band-capabilities.patch index 44a6aad7f53..0c23c5b405a 100644 --- a/target/linux/mediatek/patches-6.12/739-net-add-negotiation-of-in-band-capabilities.patch +++ b/target/linux/mediatek/patches-6.12/739-net-add-negotiation-of-in-band-capabilities.patch @@ -131,7 +131,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. static unsigned int phylink_interface_signal_rate(phy_interface_t interface) { switch (interface) { -@@ -1053,6 +1073,15 @@ static void phylink_resolve_an_pause(str +@@ -988,6 +1008,15 @@ static void phylink_resolve_an_pause(str } } @@ -147,7 +147,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. static void phylink_pcs_pre_config(struct phylink_pcs *pcs, phy_interface_t interface) { -@@ -1106,6 +1135,24 @@ static void phylink_pcs_link_up(struct p +@@ -1041,6 +1070,24 @@ static void phylink_pcs_link_up(struct p pcs->ops->pcs_link_up(pcs, neg_mode, interface, speed, duplex); } @@ -172,7 +172,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. static void phylink_pcs_poll_stop(struct phylink *pl) { if (pl->cfg_link_an_mode == MLO_AN_INBAND) -@@ -1132,13 +1179,13 @@ static void phylink_mac_config(struct ph +@@ -1082,13 +1129,13 @@ static void phylink_mac_config(struct ph phylink_dbg(pl, "%s: mode=%s/%s/%s adv=%*pb pause=%02x\n", @@ -188,7 +188,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. } static void phylink_pcs_an_restart(struct phylink *pl) -@@ -1146,13 +1193,14 @@ static void phylink_pcs_an_restart(struc +@@ -1096,13 +1143,14 @@ static void phylink_pcs_an_restart(struc if (pl->pcs && linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, pl->link_config.advertising) && phy_interface_mode_is_8023z(pl->link_config.interface) && @@ -205,7 +205,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. * @interface: interface mode to be used * @advertising: adertisement ethtool link mode mask * -@@ -1169,11 +1217,21 @@ static void phylink_pcs_an_restart(struc +@@ -1119,11 +1167,21 @@ static void phylink_pcs_an_restart(struc * Note: this is for cases where the PCS itself is involved in negotiation * (e.g. Clause 37, SGMII and similar) not Clause 73. */ @@ -231,7 +231,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. switch (interface) { case PHY_INTERFACE_MODE_SGMII: -@@ -1185,10 +1243,7 @@ static unsigned int phylink_pcs_neg_mode +@@ -1136,10 +1194,7 @@ static unsigned int phylink_pcs_neg_mode * inband communication. Note: there exist PHYs that run * with SGMII but do not send the inband data. */ @@ -243,7 +243,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. break; case PHY_INTERFACE_MODE_1000BASEX: -@@ -1199,21 +1254,143 @@ static unsigned int phylink_pcs_neg_mode +@@ -1150,21 +1205,143 @@ static unsigned int phylink_pcs_neg_mode * as well, but drivers may not support this, so may * need to override this. */ @@ -394,7 +394,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. } static void phylink_major_config(struct phylink *pl, bool restart, -@@ -1225,11 +1402,9 @@ static void phylink_major_config(struct +@@ -1176,11 +1353,9 @@ static void phylink_major_config(struct unsigned int neg_mode; int err; @@ -409,7 +409,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. if (pl->using_mac_select_pcs) { pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface); -@@ -1243,10 +1418,17 @@ static void phylink_major_config(struct +@@ -1194,10 +1369,17 @@ static void phylink_major_config(struct pcs_changed = pcs && pl->pcs != pcs; } @@ -428,7 +428,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. state->interface); if (err < 0) { phylink_err(pl, "mac_prepare failed: %pe\n", -@@ -1280,7 +1462,7 @@ static void phylink_major_config(struct +@@ -1231,7 +1413,7 @@ static void phylink_major_config(struct if (pl->pcs_state == PCS_STATE_STARTING || pcs_changed) phylink_pcs_enable(pl->pcs); @@ -437,7 +437,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. if (pl->pcs && pl->pcs->neg_mode) neg_mode = pl->pcs_neg_mode; -@@ -1296,13 +1478,20 @@ static void phylink_major_config(struct +@@ -1247,13 +1429,20 @@ static void phylink_major_config(struct phylink_pcs_an_restart(pl); if (pl->mac_ops->mac_finish) { @@ -459,7 +459,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. if (pl->sfp_bus) { rate_kbd = phylink_interface_signal_rate(state->interface); if (rate_kbd) -@@ -1327,17 +1516,16 @@ static int phylink_change_inband_advert( +@@ -1278,17 +1467,16 @@ static int phylink_change_inband_advert( return 0; phylink_dbg(pl, "%s: mode=%s/%s adv=%*pb pause=%02x\n", __func__, @@ -481,7 +481,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. if (pl->pcs->neg_mode) neg_mode = pl->pcs_neg_mode; -@@ -1402,7 +1590,7 @@ static void phylink_mac_initial_config(s +@@ -1353,7 +1541,7 @@ static void phylink_mac_initial_config(s { struct phylink_link_state link_state; @@ -490,7 +490,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. case MLO_AN_PHY: link_state = pl->phy_state; break; -@@ -1476,14 +1664,14 @@ static void phylink_link_up(struct phyli +@@ -1427,14 +1615,14 @@ static void phylink_link_up(struct phyli pl->cur_interface = link_state.interface; @@ -507,7 +507,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. pl->cur_interface, speed, duplex, !!(link_state.pause & MLO_PAUSE_TX), rx_pause); -@@ -1503,7 +1691,7 @@ static void phylink_link_down(struct phy +@@ -1454,7 +1642,7 @@ static void phylink_link_down(struct phy if (ndev) netif_carrier_off(ndev); @@ -516,7 +516,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. pl->cur_interface); phylink_info(pl, "Link is Down\n"); } -@@ -1530,7 +1718,7 @@ static void phylink_resolve(struct work_ +@@ -1481,7 +1669,7 @@ static void phylink_resolve(struct work_ link_state.link = false; retrigger = true; } else { @@ -525,7 +525,16 @@ publishing the in-band capabilities from the BCM84881 PHY driver. case MLO_AN_PHY: link_state = pl->phy_state; phylink_apply_manual_flow(pl, &link_state); -@@ -1773,7 +1961,7 @@ struct phylink *phylink_create(struct ph +@@ -1671,7 +1859,7 @@ int phylink_set_fixed_link(struct phylin + pl->link_config.an_complete = 1; + + pl->cfg_link_an_mode = MLO_AN_FIXED; +- pl->cur_link_an_mode = pl->cfg_link_an_mode; ++ pl->req_link_an_mode = pl->cfg_link_an_mode; + + return 0; + } +@@ -1766,7 +1954,7 @@ struct phylink *phylink_create(struct ph } } @@ -534,7 +543,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. ret = phylink_register_sfp(pl, fwnode); if (ret < 0) { -@@ -2236,7 +2424,7 @@ void phylink_start(struct phylink *pl) +@@ -2242,7 +2430,7 @@ void phylink_start(struct phylink *pl) ASSERT_RTNL(); phylink_info(pl, "configuring for %s/%s link mode\n", @@ -543,7 +552,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. phy_modes(pl->link_config.interface)); /* Always set the carrier off */ -@@ -2495,7 +2683,7 @@ int phylink_ethtool_ksettings_get(struct +@@ -2501,7 +2689,7 @@ int phylink_ethtool_ksettings_get(struct linkmode_copy(kset->link_modes.supported, pl->supported); @@ -552,7 +561,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. case MLO_AN_FIXED: /* We are using fixed settings. Report these as the * current link settings - and note that these also -@@ -2526,6 +2714,26 @@ int phylink_ethtool_ksettings_get(struct +@@ -2532,6 +2720,26 @@ int phylink_ethtool_ksettings_get(struct } EXPORT_SYMBOL_GPL(phylink_ethtool_ksettings_get); @@ -579,7 +588,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. /** * phylink_ethtool_ksettings_set() - set the link settings * @pl: a pointer to a &struct phylink returned from phylink_create() -@@ -2587,7 +2795,7 @@ int phylink_ethtool_ksettings_set(struct +@@ -2593,7 +2801,7 @@ int phylink_ethtool_ksettings_set(struct /* If we have a fixed link, refuse to change link parameters. * If the link parameters match, accept them but do nothing. */ @@ -588,7 +597,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. if (s->speed != pl->link_config.speed || s->duplex != pl->link_config.duplex) return -EINVAL; -@@ -2603,7 +2811,7 @@ int phylink_ethtool_ksettings_set(struct +@@ -2609,7 +2817,7 @@ int phylink_ethtool_ksettings_set(struct * is our default case) but do not allow the advertisement to * be changed. If the advertisement matches, simply return. */ @@ -597,7 +606,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. if (!linkmode_equal(config.advertising, pl->link_config.advertising)) return -EINVAL; -@@ -2643,7 +2851,7 @@ int phylink_ethtool_ksettings_set(struct +@@ -2649,7 +2857,7 @@ int phylink_ethtool_ksettings_set(struct linkmode_copy(support, pl->supported); if (phylink_validate(pl, support, &config)) { phylink_err(pl, "validation of %s/%s with support %*pb failed\n", @@ -606,7 +615,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. phy_modes(config.interface), __ETHTOOL_LINK_MODE_MASK_NBITS, support); return -EINVAL; -@@ -2661,6 +2869,13 @@ int phylink_ethtool_ksettings_set(struct +@@ -2667,6 +2875,13 @@ int phylink_ethtool_ksettings_set(struct phylink_is_empty_linkmode(config.advertising)) return -EINVAL; @@ -620,7 +629,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. mutex_lock(&pl->state_mutex); pl->link_config.speed = config.speed; pl->link_config.duplex = config.duplex; -@@ -2743,7 +2958,7 @@ int phylink_ethtool_set_pauseparam(struc +@@ -2749,7 +2964,7 @@ int phylink_ethtool_set_pauseparam(struc ASSERT_RTNL(); @@ -629,7 +638,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. return -EOPNOTSUPP; if (!phylink_test(pl->supported, Pause) && -@@ -3007,7 +3222,7 @@ static int phylink_mii_read(struct phyli +@@ -3013,7 +3228,7 @@ static int phylink_mii_read(struct phyli struct phylink_link_state state; int val = 0xffff; @@ -638,7 +647,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. case MLO_AN_FIXED: if (phy_id == 0) { phylink_get_fixed_state(pl, &state); -@@ -3032,7 +3247,7 @@ static int phylink_mii_read(struct phyli +@@ -3038,7 +3253,7 @@ static int phylink_mii_read(struct phyli static int phylink_mii_write(struct phylink *pl, unsigned int phy_id, unsigned int reg, unsigned int val) { @@ -647,7 +656,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. case MLO_AN_FIXED: break; -@@ -3202,10 +3417,11 @@ static phy_interface_t phylink_choose_sf +@@ -3208,10 +3423,11 @@ static phy_interface_t phylink_choose_sf return interface; } @@ -660,7 +669,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. bool changed = false; phylink_dbg(pl, "requesting link mode %s/%s with support %*pb\n", -@@ -3222,9 +3438,9 @@ static void phylink_sfp_set_config(struc +@@ -3228,9 +3444,9 @@ static void phylink_sfp_set_config(struc changed = true; } @@ -672,7 +681,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. pl->link_config.interface = state->interface; changed = true; -@@ -3239,8 +3455,7 @@ static void phylink_sfp_set_config(struc +@@ -3245,8 +3461,7 @@ static void phylink_sfp_set_config(struc phylink_mac_initial_config(pl, false); } @@ -682,7 +691,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. { __ETHTOOL_DECLARE_LINK_MODE_MASK(support1); __ETHTOOL_DECLARE_LINK_MODE_MASK(support); -@@ -3279,8 +3494,7 @@ static int phylink_sfp_config_phy(struct +@@ -3285,8 +3500,7 @@ static int phylink_sfp_config_phy(struct ret = phylink_validate(pl, support1, &config); if (ret) { phylink_err(pl, @@ -692,7 +701,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. phy_modes(config.interface), __ETHTOOL_LINK_MODE_MASK_NBITS, support, ERR_PTR(ret)); -@@ -3289,7 +3503,7 @@ static int phylink_sfp_config_phy(struct +@@ -3295,7 +3509,7 @@ static int phylink_sfp_config_phy(struct pl->link_port = pl->sfp_port; @@ -701,7 +710,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. return 0; } -@@ -3345,6 +3559,12 @@ static int phylink_sfp_config_optical(st +@@ -3351,6 +3565,12 @@ static int phylink_sfp_config_optical(st phylink_dbg(pl, "optical SFP: chosen %s interface\n", phy_modes(interface)); @@ -714,7 +723,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. config.interface = interface; /* Ignore errors if we're expecting a PHY to attach later */ -@@ -3358,7 +3578,7 @@ static int phylink_sfp_config_optical(st +@@ -3364,7 +3584,7 @@ static int phylink_sfp_config_optical(st pl->link_port = pl->sfp_port; @@ -723,7 +732,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. return 0; } -@@ -3429,20 +3649,10 @@ static void phylink_sfp_link_up(void *up +@@ -3435,20 +3655,10 @@ static void phylink_sfp_link_up(void *up phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_LINK); } @@ -744,7 +753,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. int ret; /* -@@ -3454,17 +3664,12 @@ static int phylink_sfp_connect_phy(void +@@ -3460,17 +3670,12 @@ static int phylink_sfp_connect_phy(void */ phy_support_asym_pause(phy); @@ -765,7 +774,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -973,6 +973,58 @@ static int phy_check_link_status(struct +@@ -1049,6 +1049,58 @@ static int phy_check_link_status(struct } /** @@ -826,7 +835,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. * --- a/include/linux/phy.h +++ b/include/linux/phy.h -@@ -800,6 +800,24 @@ struct phy_tdr_config { +@@ -819,6 +819,24 @@ struct phy_tdr_config { #define PHY_PAIR_ALL -1 /** @@ -851,7 +860,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. * struct phy_plca_cfg - Configuration of the PLCA (Physical Layer Collision * Avoidance) Reconciliation Sublayer. * -@@ -939,6 +957,19 @@ struct phy_driver { +@@ -958,6 +976,19 @@ struct phy_driver { int (*get_features)(struct phy_device *phydev); /** @@ -871,8 +880,8 @@ publishing the in-band capabilities from the BCM84881 PHY driver. * @get_rate_matching: Get the supported type of rate matching for a * particular phy interface. This is used by phy consumers to determine * whether to advertise lower-speed modes for that interface. It is -@@ -1774,6 +1805,9 @@ void phy_stop(struct phy_device *phydev) - int phy_config_aneg(struct phy_device *phydev); +@@ -1842,6 +1873,9 @@ int phy_config_aneg(struct phy_device *p + int _phy_start_aneg(struct phy_device *phydev); int phy_start_aneg(struct phy_device *phydev); int phy_aneg_done(struct phy_device *phydev); +unsigned int phy_inband_caps(struct phy_device *phydev, @@ -883,7 +892,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. bool phy_check_valid(int speed, int duplex, unsigned long *features); --- a/drivers/net/phy/bcm84881.c +++ b/drivers/net/phy/bcm84881.c -@@ -223,11 +223,21 @@ static int bcm84881_read_status(struct p +@@ -235,11 +235,21 @@ static int bcm84881_read_status(struct p return genphy_c45_read_mdix(phydev); } @@ -907,7 +916,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. .get_features = bcm84881_get_features, --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c -@@ -673,6 +673,48 @@ static int marvell_config_aneg_fiber(str +@@ -716,6 +716,48 @@ static int marvell_config_aneg_fiber(str return genphy_check_and_restart_aneg(phydev, changed); } @@ -956,7 +965,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. static int m88e1111_config_aneg(struct phy_device *phydev) { int extsr = phy_read(phydev, MII_M1111_PHY_EXT_SR); -@@ -3292,6 +3334,8 @@ static struct phy_driver marvell_drivers +@@ -3667,6 +3709,8 @@ static struct phy_driver marvell_drivers .name = "Marvell 88E1112", /* PHY_GBIT_FEATURES */ .probe = marvell_probe, @@ -965,16 +974,16 @@ publishing the in-band capabilities from the BCM84881 PHY driver. .config_init = m88e1112_config_init, .config_aneg = marvell_config_aneg, .config_intr = marvell_config_intr, -@@ -3312,6 +3356,8 @@ static struct phy_driver marvell_drivers - .name = "Marvell 88E1111", +@@ -3688,6 +3732,8 @@ static struct phy_driver marvell_drivers /* PHY_GBIT_FEATURES */ + .flags = PHY_POLL_CABLE_TEST, .probe = marvell_probe, + .inband_caps = m88e1111_inband_caps, + .config_inband = m88e1111_config_inband, .config_init = m88e1111gbe_config_init, .config_aneg = m88e1111_config_aneg, .read_status = marvell_read_status, -@@ -3333,6 +3379,8 @@ static struct phy_driver marvell_drivers +@@ -3711,6 +3757,8 @@ static struct phy_driver marvell_drivers .name = "Marvell 88E1111 (Finisar)", /* PHY_GBIT_FEATURES */ .probe = marvell_probe, @@ -985,7 +994,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. .read_status = marvell_read_status, --- a/include/linux/phylink.h +++ b/include/linux/phylink.h -@@ -432,6 +432,7 @@ struct phylink_pcs { +@@ -419,6 +419,7 @@ struct phylink_pcs { /** * struct phylink_pcs_ops - MAC PCS operations structure. * @pcs_validate: validate the link configuration. @@ -993,7 +1002,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. * @pcs_enable: enable the PCS. * @pcs_disable: disable the PCS. * @pcs_pre_config: pre-mac_config method (for errata) -@@ -445,6 +446,8 @@ struct phylink_pcs { +@@ -434,6 +435,8 @@ struct phylink_pcs { struct phylink_pcs_ops { int (*pcs_validate)(struct phylink_pcs *pcs, unsigned long *supported, const struct phylink_link_state *state); @@ -1002,7 +1011,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. int (*pcs_enable)(struct phylink_pcs *pcs); void (*pcs_disable)(struct phylink_pcs *pcs); void (*pcs_pre_config)(struct phylink_pcs *pcs, -@@ -481,6 +484,20 @@ int pcs_validate(struct phylink_pcs *pcs +@@ -471,6 +474,20 @@ int pcs_validate(struct phylink_pcs *pcs const struct phylink_link_state *state); /** @@ -1025,7 +1034,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. */ --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c -@@ -3959,20 +3959,27 @@ static struct mvneta_port *mvneta_pcs_to +@@ -3960,20 +3960,27 @@ static struct mvneta_port *mvneta_pcs_to return container_of(pcs, struct mvneta_port, phylink_pcs); } @@ -1062,7 +1071,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. } static void mvneta_pcs_get_state(struct phylink_pcs *pcs, -@@ -4070,7 +4077,7 @@ static void mvneta_pcs_an_restart(struct +@@ -4071,7 +4078,7 @@ static void mvneta_pcs_an_restart(struct } static const struct phylink_pcs_ops mvneta_phylink_pcs_ops = { @@ -1073,7 +1082,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. .pcs_an_restart = mvneta_pcs_an_restart, --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c -@@ -6214,19 +6214,26 @@ static const struct phylink_pcs_ops mvpp +@@ -6237,19 +6237,26 @@ static const struct phylink_pcs_ops mvpp .pcs_config = mvpp2_xlg_pcs_config, }; @@ -1108,7 +1117,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. } static void mvpp2_gmac_pcs_get_state(struct phylink_pcs *pcs, -@@ -6333,7 +6340,7 @@ static void mvpp2_gmac_pcs_an_restart(st +@@ -6356,7 +6363,7 @@ static void mvpp2_gmac_pcs_an_restart(st } static const struct phylink_pcs_ops mvpp2_phylink_gmac_pcs_ops = { @@ -1147,7 +1156,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. static void lynx_pcs_get_state_usxgmii(struct mdio_device *pcs, struct phylink_link_state *state) { -@@ -307,6 +328,7 @@ static void lynx_pcs_link_up(struct phyl +@@ -306,6 +327,7 @@ static void lynx_pcs_link_up(struct phyl } static const struct phylink_pcs_ops lynx_pcs_phylink_ops = { @@ -1189,7 +1198,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. .pcs_an_restart = mtk_pcs_lynxi_restart_an, --- a/drivers/net/pcs/pcs-xpcs.c +++ b/drivers/net/pcs/pcs-xpcs.c -@@ -628,6 +628,33 @@ static int xpcs_validate(struct phylink_ +@@ -608,6 +608,33 @@ static int xpcs_validate(struct phylink_ return 0; } @@ -1223,7 +1232,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver. void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces) { int i, j; -@@ -1331,6 +1358,7 @@ static const struct xpcs_id xpcs_id_list +@@ -1365,6 +1392,7 @@ static const struct dw_xpcs_desc xpcs_de static const struct phylink_pcs_ops xpcs_phylink_ops = { .pcs_validate = xpcs_validate, diff --git a/target/linux/mediatek/patches-6.12/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch b/target/linux/mediatek/patches-6.12/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch index 3ce6fdd4ade..af47255c78f 100644 --- a/target/linux/mediatek/patches-6.12/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch +++ b/target/linux/mediatek/patches-6.12/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch @@ -68,11 +68,11 @@ +}; --- a/arch/arm64/boot/dts/mediatek/Makefile +++ b/arch/arm64/boot/dts/mediatek/Makefile -@@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-b +@@ -18,6 +18,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-b dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-nand.dtbo dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-nor.dtbo dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-sd.dtbo +dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-respeaker-2mics.dtbo dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-rfb.dtb dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986b-rfb.dtb - dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-pumpkin.dtb + dtb-$(CONFIG_ARCH_MEDIATEK) += mt7988a-bananapi-bpi-r4.dtb diff --git a/target/linux/mediatek/patches-6.12/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch b/target/linux/mediatek/patches-6.12/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch index 6dede02003a..5bf729f5b92 100644 --- a/target/linux/mediatek/patches-6.12/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch +++ b/target/linux/mediatek/patches-6.12/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch @@ -1,6 +1,6 @@ --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts -@@ -312,7 +312,7 @@ +@@ -323,7 +323,7 @@ /* Attention: GPIO 90 is used to switch between PCIe@1,0 and * SATA functions. i.e. output-high: PCIe, output-low: SATA */ diff --git a/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch b/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch index 7b7c905a0f3..001c7bf2f00 100644 --- a/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch +++ b/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch @@ -1,6 +1,6 @@ --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -1568,6 +1568,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN +@@ -1505,6 +1505,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN endchoice @@ -17,7 +17,7 @@ default "" --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -1190,6 +1190,17 @@ int __init early_init_dt_scan_chosen(cha +@@ -1053,6 +1053,17 @@ int __init early_init_dt_scan_chosen(cha if (p != NULL && l > 0) strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE)); @@ -29,7 +29,7 @@ +#ifdef CONFIG_CMDLINE_OVERRIDE + p = of_get_flat_dt_prop(node, "bootargs-override", &l); + if (p != NULL && l > 0) -+ strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE)); ++ strscpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE)); +#endif + handle_cmdline: @@ -37,7 +37,7 @@ * CONFIG_CMDLINE is meant to be a default in case nothing else --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -2309,6 +2309,14 @@ config CMDLINE_FORCE +@@ -2380,6 +2380,14 @@ config CMDLINE_FORCE endchoice diff --git a/target/linux/mediatek/patches-6.12/910-dts-mt7622-bpi-r64-wifi-eeprom.patch b/target/linux/mediatek/patches-6.12/910-dts-mt7622-bpi-r64-wifi-eeprom.patch index 09ce417c351..e6cb16c3d6c 100644 --- a/target/linux/mediatek/patches-6.12/910-dts-mt7622-bpi-r64-wifi-eeprom.patch +++ b/target/linux/mediatek/patches-6.12/910-dts-mt7622-bpi-r64-wifi-eeprom.patch @@ -1,6 +1,6 @@ --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts -@@ -639,5 +639,28 @@ +@@ -650,5 +650,28 @@ }; &wmac { diff --git a/target/linux/mediatek/patches-6.12/911-dts-mt7622-bpi-r64-add-rootdisk.patch b/target/linux/mediatek/patches-6.12/911-dts-mt7622-bpi-r64-add-rootdisk.patch index 4f57240fcea..28c26db0ed8 100644 --- a/target/linux/mediatek/patches-6.12/911-dts-mt7622-bpi-r64-add-rootdisk.patch +++ b/target/linux/mediatek/patches-6.12/911-dts-mt7622-bpi-r64-add-rootdisk.patch @@ -10,7 +10,7 @@ }; cpus { -@@ -234,6 +237,28 @@ +@@ -245,6 +248,28 @@ assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>; assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>; non-removable; @@ -39,7 +39,7 @@ }; &mmc1 { -@@ -249,6 +274,28 @@ +@@ -260,6 +285,28 @@ vqmmc-supply = <®_3p3v>; assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>; assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>; @@ -68,7 +68,7 @@ }; &nandc { -@@ -282,15 +329,30 @@ +@@ -293,15 +340,30 @@ read-only; }; diff --git a/target/linux/mediatek/patches-6.12/930-spi-mt65xx-enable-sel-clk.patch b/target/linux/mediatek/patches-6.12/930-spi-mt65xx-enable-sel-clk.patch index eb25b99eb42..52942c20697 100644 --- a/target/linux/mediatek/patches-6.12/930-spi-mt65xx-enable-sel-clk.patch +++ b/target/linux/mediatek/patches-6.12/930-spi-mt65xx-enable-sel-clk.patch @@ -1,6 +1,6 @@ --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c -@@ -1228,8 +1228,15 @@ static int mtk_spi_probe(struct platform +@@ -1237,8 +1237,15 @@ static int mtk_spi_probe(struct platform if (ret < 0) return dev_err_probe(dev, ret, "failed to enable hclk\n"); diff --git a/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch b/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch index 81234f68eab..faa801fc827 100644 --- a/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch +++ b/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch @@ -5,7 +5,7 @@ --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig -@@ -911,6 +911,16 @@ source "drivers/leds/flash/Kconfig" +@@ -977,6 +977,16 @@ source "drivers/leds/flash/Kconfig" comment "RGB LED drivers" source "drivers/leds/rgb/Kconfig" @@ -24,11 +24,11 @@ --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile -@@ -78,6 +78,7 @@ obj-$(CONFIG_LEDS_POWERNV) += leds-powe +@@ -81,6 +81,7 @@ obj-$(CONFIG_LEDS_POWERNV) += leds-powe obj-$(CONFIG_LEDS_PWM) += leds-pwm.o obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o +obj-$(CONFIG_LEDS_SMARTRG_LED) += leds-smartrg-system.o + obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_ST1202) += leds-st1202.o obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o - obj-$(CONFIG_LEDS_SYSCON) += leds-syscon.o diff --git a/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch b/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch index 0fe2b95e8a7..40e5fd05897 100644 --- a/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch +++ b/target/linux/mediatek/patches-6.12/960-asus-hack-u-boot-ignore-mtdparts.patch @@ -29,7 +29,7 @@ Signed-off-by: Daniel Golle --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -1441,6 +1441,7 @@ static int spinand_remove(struct spi_mem +@@ -1619,6 +1619,7 @@ static int spinand_remove(struct spi_mem static const struct spi_device_id spinand_ids[] = { { .name = "spi-nand" }, @@ -37,7 +37,7 @@ Signed-off-by: Daniel Golle { /* sentinel */ }, }; MODULE_DEVICE_TABLE(spi, spinand_ids); -@@ -1448,6 +1449,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids); +@@ -1626,6 +1627,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids); #ifdef CONFIG_OF static const struct of_device_id spinand_of_ids[] = { { .compatible = "spi-nand" },