kernel/mediatek: 6.12: fix and refresh patches

Fix patches and refresh for Linux 6.12.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2025-05-08 03:11:52 +01:00
parent 25bb907937
commit 166d9d5ea2
25 changed files with 119 additions and 110 deletions

View file

@ -41,7 +41,7 @@
device_type = "memory"; device_type = "memory";
}; };
@@ -133,22 +132,22 @@ @@ -145,22 +144,22 @@
port@0 { port@0 {
reg = <0>; reg = <0>;
@ -68,7 +68,7 @@
}; };
port@4 { port@4 {
@@ -240,7 +239,22 @@ @@ -264,7 +263,22 @@
status = "okay"; status = "okay";
}; };
@ -91,7 +91,7 @@
/* eMMC is shared pin with parallel NAND */ /* eMMC is shared pin with parallel NAND */
emmc_pins_default: emmc-pins-default { emmc_pins_default: emmc-pins-default {
mux { mux {
@@ -517,11 +531,11 @@ @@ -541,11 +555,11 @@
}; };
&sata { &sata {

View file

@ -8,7 +8,7 @@
}; };
chosen { chosen {
@@ -165,22 +166,22 @@ @@ -164,22 +165,22 @@
port@1 { port@1 {
reg = <1>; reg = <1>;
@ -34,4 +34,4 @@
+ label = "lan4"; + label = "lan4";
}; };
port@6 { port@5 {

View file

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
+++ b/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"; status = "okay";
}; };

View file

@ -1,6 +1,6 @@
--- a/drivers/mtd/nand/spi/core.c --- a/drivers/mtd/nand/spi/core.c
+++ b/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) static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos)
{ {
struct spinand_device *spinand = nand_to_spinand(nand); struct spinand_device *spinand = nand_to_spinand(nand);
@ -9,7 +9,7 @@
struct nand_page_io_req req = { struct nand_page_io_req req = {
.pos = *pos, .pos = *pos,
.ooblen = sizeof(marker), .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_select_target(spinand, pos->target);
spinand_read_page(spinand, &req); spinand_read_page(spinand, &req);

View file

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
+++ b/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"; status = "disabled";
}; };

View file

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
+++ b/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>; reg = <0x140000 0x0080000>;
}; };
@ -9,7 +9,7 @@
label = "Factory"; label = "Factory";
reg = <0x1c0000 0x0100000>; reg = <0x1c0000 0x0100000>;
}; };
@@ -636,5 +636,6 @@ @@ -660,5 +660,6 @@
&wmac { &wmac {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&wmac_pins>; pinctrl-0 = <&wmac_pins>;

View file

@ -18,7 +18,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
#include "phy-mtk-io.h" #include "phy-mtk-io.h"
@@ -267,6 +269,9 @@ @@ -271,6 +273,9 @@
#define USER_BUF_LEN(count) min_t(size_t, 8, (count)) #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 { enum mtk_phy_version {
MTK_PHY_V1 = 1, MTK_PHY_V1 = 1,
MTK_PHY_V2, MTK_PHY_V2,
@@ -334,6 +339,7 @@ struct mtk_tphy { @@ -339,6 +344,7 @@ struct mtk_tphy {
void __iomem *sif_base; /* only shared sif */ void __iomem *sif_base; /* only shared sif */
const struct mtk_phy_pdata *pdata; const struct mtk_phy_pdata *pdata;
struct mtk_phy_instance **phys; struct mtk_phy_instance **phys;
@ -36,7 +36,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
int nphys; int nphys;
int src_ref_clk; /* MHZ, reference clock for slew rate calibrate */ int src_ref_clk; /* MHZ, reference clock for slew rate calibrate */
int src_coef; /* coefficient 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) if (tphy->pdata->version != MTK_PHY_V1)
return; return;
@ -47,7 +47,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
mtk_phy_update_bits(phya + U3P_U3_PHYA_DA_REG0, mtk_phy_update_bits(phya + U3P_U3_PHYA_DA_REG0,
P3A_RG_XTAL_EXT_PE1H | P3A_RG_XTAL_EXT_PE2H, P3A_RG_XTAL_EXT_PE1H | P3A_RG_XTAL_EXT_PE2H,
FIELD_PREP(P3A_RG_XTAL_EXT_PE1H, 0x2) | 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); &tphy->src_coef);
} }
@ -62,5 +62,5 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
+ } + }
+ +
port = 0; port = 0;
for_each_child_of_node(np, child_np) { for_each_child_of_node_scoped(np, child_np) {
struct mtk_phy_instance *instance; struct mtk_phy_instance *instance;

View file

@ -8,7 +8,7 @@
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) 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) if (ret)
return ret; return ret;
@ -16,7 +16,7 @@
ret = mtd_device_register(mtd, NULL, 0); ret = mtd_device_register(mtd, NULL, 0);
if (ret) if (ret)
goto err_spinand_cleanup; 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; return 0;
err_spinand_cleanup: err_spinand_cleanup:
@ -24,7 +24,7 @@
spinand_cleanup(spinand); spinand_cleanup(spinand);
return ret; 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) if (ret)
return ret; return ret;

View file

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
+++ b/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-tx-bus-width = <4>;
spi-rx-bus-width = <4>; spi-rx-bus-width = <4>;
nand-ecc-engine = <&snfi>; nand-ecc-engine = <&snfi>;

View file

@ -24,7 +24,7 @@ Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c --- a/drivers/mtd/nand/spi/core.c
+++ b/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, &ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer, &esmt_c8_spinand_manufacturer,
&etron_spinand_manufacturer, &etron_spinand_manufacturer,

View file

@ -10,7 +10,7 @@
#define UART_BUG_TXEN BIT(1) /* UART has buggy TX IIR status */ #define UART_BUG_TXEN BIT(1) /* UART has buggy TX IIR status */
--- a/drivers/tty/serial/8250/8250_port.c --- a/drivers/tty/serial/8250/8250_port.c
+++ b/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, .tx_loadsz = 16,
.fcr = UART_FCR_ENABLE_FIFO | .fcr = UART_FCR_ENABLE_FIFO |
UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT, UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT,
@ -19,7 +19,7 @@
}, },
[PORT_NPCM] = { [PORT_NPCM] = {
.name = "Nuvoton 16550", .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 long flags;
unsigned int baud, quot, frac = 0; unsigned int baud, quot, frac = 0;

View file

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig --- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig
@@ -418,6 +418,12 @@ config ROCKCHIP_PHY @@ -431,6 +431,12 @@ config ROCKCHIP_PHY
help help
Currently supports the integrated Ethernet PHY. Currently supports the integrated Ethernet PHY.
@ -15,7 +15,7 @@
select CRC16 select CRC16
--- a/drivers/net/phy/Makefile --- a/drivers/net/phy/Makefile
+++ b/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-y += rtl8261n/
obj-$(CONFIG_RENESAS_PHY) += uPD60620.o obj-$(CONFIG_RENESAS_PHY) += uPD60620.o
obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o obj-$(CONFIG_ROCKCHIP_PHY) += rockchip.o

View file

@ -18,7 +18,7 @@ Acked-by: Pali Rohár <pali@kernel.org>
--- a/drivers/pci/controller/pcie-mediatek.c --- a/drivers/pci/controller/pcie-mediatek.c
+++ b/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); msleep(100);

View file

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/pci/controller/pcie-mediatek.c --- a/drivers/pci/controller/pcie-mediatek.c
+++ b/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) { if (status & INTX_MASK) {
for_each_set_bit_from(bit, &status, PCI_NUM_INTX + INTX_SHIFT) { for_each_set_bit_from(bit, &status, PCI_NUM_INTX + INTX_SHIFT) {
/* Clear the INTx */ /* Clear the INTx */

View file

@ -1,6 +1,6 @@
--- a/drivers/pci/controller/pcie-mediatek-gen3.c --- a/drivers/pci/controller/pcie-mediatek-gen3.c
+++ b/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); msleep(100);
/* De-assert reset signals */ /* De-assert reset signals */

View file

@ -169,7 +169,7 @@ Christian Marangi (9):
--- a/drivers/mfd/Kconfig --- a/drivers/mfd/Kconfig
+++ b/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 using regmap_mmio accesses for ARM32 parts and SMC calls to
EL3 for ARM64 parts. EL3 for ARM64 parts.
@ -188,14 +188,14 @@ Christian Marangi (9):
select MFD_CORE select MFD_CORE
--- a/drivers/mfd/Makefile --- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile
@@ -7,6 +7,7 @@ @@ -9,6 +9,7 @@ obj-$(CONFIG_MFD_88PM800) += 88pm800.o 8
obj-$(CONFIG_MFD_88PM860X) += 88pm860x.o
obj-$(CONFIG_MFD_88PM800) += 88pm800.o 88pm80x.o
obj-$(CONFIG_MFD_88PM805) += 88pm805.o 88pm80x.o 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_ACT8945A) += act8945a.o
+obj-$(CONFIG_MFD_AIROHA_AN8855) += airoha-an8855.o
obj-$(CONFIG_MFD_SM501) += sm501.o obj-$(CONFIG_MFD_SM501) += sm501.o
obj-$(CONFIG_ARCH_BCM2835) += bcm2835-pm.o obj-$(CONFIG_ARCH_BCM2835) += bcm2835-pm.o
obj-$(CONFIG_MFD_BCM590XX) += bcm590xx.o
--- a/drivers/net/dsa/Kconfig --- a/drivers/net/dsa/Kconfig
+++ b/drivers/net/dsa/Kconfig +++ b/drivers/net/dsa/Kconfig
@@ -24,6 +24,15 @@ config NET_DSA_LOOP @@ -24,6 +24,15 @@ config NET_DSA_LOOP
@ -254,7 +254,7 @@ Christian Marangi (9):
obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o
--- a/drivers/net/phy/Kconfig --- a/drivers/net/phy/Kconfig
+++ b/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 help
Currently supports the Airoha EN8801SC PHY. Currently supports the Airoha EN8801SC PHY.
@ -268,14 +268,14 @@ Christian Marangi (9):
help help
--- a/drivers/net/phy/Makefile --- a/drivers/net/phy/Makefile
+++ b/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_ADIN_PHY) += adin.o
obj-$(CONFIG_ADIN1100_PHY) += adin1100.o obj-$(CONFIG_ADIN1100_PHY) += adin1100.o
obj-$(CONFIG_AIROHA_EN8801SC_PHY) += en8801sc.o obj-$(CONFIG_AIROHA_EN8801SC_PHY) += en8801sc.o
+obj-$(CONFIG_AIR_AN8855_PHY) += air_an8855.o +obj-$(CONFIG_AIR_AN8855_PHY) += air_an8855.o
obj-$(CONFIG_AIR_EN8811H_PHY) += air_en8811h.o obj-$(CONFIG_AIR_EN8811H_PHY) += air_en8811h.o
obj-$(CONFIG_AMD_PHY) += amd.o obj-$(CONFIG_AMD_PHY) += amd.o
obj-$(CONFIG_AQUANTIA_PHY) += aquantia/ obj-$(CONFIG_AMCC_QT2025_PHY) += qt2025.o
--- a/drivers/nvmem/Kconfig --- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig
@@ -29,6 +29,17 @@ source "drivers/nvmem/layouts/Kconfig" @@ -29,6 +29,17 @@ source "drivers/nvmem/layouts/Kconfig"

View file

@ -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) static unsigned int phylink_interface_signal_rate(phy_interface_t interface)
{ {
switch (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, static void phylink_pcs_pre_config(struct phylink_pcs *pcs,
phy_interface_t interface) 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); 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) static void phylink_pcs_poll_stop(struct phylink *pl)
{ {
if (pl->cfg_link_an_mode == MLO_AN_INBAND) 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, phylink_dbg(pl,
"%s: mode=%s/%s/%s adv=%*pb pause=%02x\n", "%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) 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, if (pl->pcs && linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
pl->link_config.advertising) && pl->link_config.advertising) &&
phy_interface_mode_is_8023z(pl->link_config.interface) && 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 * @interface: interface mode to be used
* @advertising: adertisement ethtool link mode mask * @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 * Note: this is for cases where the PCS itself is involved in negotiation
* (e.g. Clause 37, SGMII and similar) not Clause 73. * (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) { switch (interface) {
case PHY_INTERFACE_MODE_SGMII: 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 * inband communication. Note: there exist PHYs that run
* with SGMII but do not send the inband data. * with SGMII but do not send the inband data.
*/ */
@ -243,7 +243,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
break; break;
case PHY_INTERFACE_MODE_1000BASEX: 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 * as well, but drivers may not support this, so may
* need to override this. * 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, 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; unsigned int neg_mode;
int err; int err;
@ -409,7 +409,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
if (pl->using_mac_select_pcs) { if (pl->using_mac_select_pcs) {
pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface); 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; pcs_changed = pcs && pl->pcs != pcs;
} }
@ -428,7 +428,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
state->interface); state->interface);
if (err < 0) { if (err < 0) {
phylink_err(pl, "mac_prepare failed: %pe\n", 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) if (pl->pcs_state == PCS_STATE_STARTING || pcs_changed)
phylink_pcs_enable(pl->pcs); 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) if (pl->pcs && pl->pcs->neg_mode)
neg_mode = 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); phylink_pcs_an_restart(pl);
if (pl->mac_ops->mac_finish) { if (pl->mac_ops->mac_finish) {
@ -459,7 +459,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
if (pl->sfp_bus) { if (pl->sfp_bus) {
rate_kbd = phylink_interface_signal_rate(state->interface); rate_kbd = phylink_interface_signal_rate(state->interface);
if (rate_kbd) 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; return 0;
phylink_dbg(pl, "%s: mode=%s/%s adv=%*pb pause=%02x\n", __func__, 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) if (pl->pcs->neg_mode)
neg_mode = 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; struct phylink_link_state link_state;
@ -490,7 +490,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
case MLO_AN_PHY: case MLO_AN_PHY:
link_state = pl->phy_state; link_state = pl->phy_state;
break; 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; 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, pl->cur_interface, speed, duplex,
!!(link_state.pause & MLO_PAUSE_TX), rx_pause); !!(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) if (ndev)
netif_carrier_off(ndev); netif_carrier_off(ndev);
@ -516,7 +516,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
pl->cur_interface); pl->cur_interface);
phylink_info(pl, "Link is Down\n"); 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; link_state.link = false;
retrigger = true; retrigger = true;
} else { } else {
@ -525,7 +525,16 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
case MLO_AN_PHY: case MLO_AN_PHY:
link_state = pl->phy_state; link_state = pl->phy_state;
phylink_apply_manual_flow(pl, &link_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); ret = phylink_register_sfp(pl, fwnode);
if (ret < 0) { 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(); ASSERT_RTNL();
phylink_info(pl, "configuring for %s/%s link mode\n", 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)); phy_modes(pl->link_config.interface));
/* Always set the carrier off */ /* 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); 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: case MLO_AN_FIXED:
/* We are using fixed settings. Report these as the /* We are using fixed settings. Report these as the
* current link settings - and note that these also * 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); 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 * phylink_ethtool_ksettings_set() - set the link settings
* @pl: a pointer to a &struct phylink returned from phylink_create() * @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 we have a fixed link, refuse to change link parameters.
* If the link parameters match, accept them but do nothing. * 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 || if (s->speed != pl->link_config.speed ||
s->duplex != pl->link_config.duplex) s->duplex != pl->link_config.duplex)
return -EINVAL; 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 * is our default case) but do not allow the advertisement to
* be changed. If the advertisement matches, simply return. * 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, if (!linkmode_equal(config.advertising,
pl->link_config.advertising)) pl->link_config.advertising))
return -EINVAL; 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); linkmode_copy(support, pl->supported);
if (phylink_validate(pl, support, &config)) { if (phylink_validate(pl, support, &config)) {
phylink_err(pl, "validation of %s/%s with support %*pb failed\n", 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), phy_modes(config.interface),
__ETHTOOL_LINK_MODE_MASK_NBITS, support); __ETHTOOL_LINK_MODE_MASK_NBITS, support);
return -EINVAL; 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)) phylink_is_empty_linkmode(config.advertising))
return -EINVAL; return -EINVAL;
@ -620,7 +629,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
mutex_lock(&pl->state_mutex); mutex_lock(&pl->state_mutex);
pl->link_config.speed = config.speed; pl->link_config.speed = config.speed;
pl->link_config.duplex = config.duplex; 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(); ASSERT_RTNL();
@ -629,7 +638,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (!phylink_test(pl->supported, Pause) && 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; struct phylink_link_state state;
int val = 0xffff; int val = 0xffff;
@ -638,7 +647,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
case MLO_AN_FIXED: case MLO_AN_FIXED:
if (phy_id == 0) { if (phy_id == 0) {
phylink_get_fixed_state(pl, &state); 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, static int phylink_mii_write(struct phylink *pl, unsigned int phy_id,
unsigned int reg, unsigned int val) unsigned int reg, unsigned int val)
{ {
@ -647,7 +656,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
case MLO_AN_FIXED: case MLO_AN_FIXED:
break; 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; return interface;
} }
@ -660,7 +669,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
bool changed = false; bool changed = false;
phylink_dbg(pl, "requesting link mode %s/%s with support %*pb\n", 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; changed = true;
} }
@ -672,7 +681,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
pl->link_config.interface = state->interface; pl->link_config.interface = state->interface;
changed = true; 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); 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(support1);
__ETHTOOL_DECLARE_LINK_MODE_MASK(support); __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); ret = phylink_validate(pl, support1, &config);
if (ret) { if (ret) {
phylink_err(pl, phylink_err(pl,
@ -692,7 +701,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
phy_modes(config.interface), phy_modes(config.interface),
__ETHTOOL_LINK_MODE_MASK_NBITS, support, __ETHTOOL_LINK_MODE_MASK_NBITS, support,
ERR_PTR(ret)); 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; pl->link_port = pl->sfp_port;
@ -701,7 +710,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
return 0; 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", phylink_dbg(pl, "optical SFP: chosen %s interface\n",
phy_modes(interface)); phy_modes(interface));
@ -714,7 +723,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
config.interface = interface; config.interface = interface;
/* Ignore errors if we're expecting a PHY to attach later */ /* 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; pl->link_port = pl->sfp_port;
@ -723,7 +732,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
return 0; 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); 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; 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); 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 --- a/drivers/net/phy/phy.c
+++ b/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 --- a/include/linux/phy.h
+++ b/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 #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 * struct phy_plca_cfg - Configuration of the PLCA (Physical Layer Collision
* Avoidance) Reconciliation Sublayer. * Avoidance) Reconciliation Sublayer.
* *
@@ -939,6 +957,19 @@ struct phy_driver { @@ -958,6 +976,19 @@ struct phy_driver {
int (*get_features)(struct phy_device *phydev); 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 * @get_rate_matching: Get the supported type of rate matching for a
* particular phy interface. This is used by phy consumers to determine * particular phy interface. This is used by phy consumers to determine
* whether to advertise lower-speed modes for that interface. It is * whether to advertise lower-speed modes for that interface. It is
@@ -1774,6 +1805,9 @@ void phy_stop(struct phy_device *phydev) @@ -1842,6 +1873,9 @@ int phy_config_aneg(struct phy_device *p
int phy_config_aneg(struct phy_device *phydev); int _phy_start_aneg(struct phy_device *phydev);
int phy_start_aneg(struct phy_device *phydev); int phy_start_aneg(struct phy_device *phydev);
int phy_aneg_done(struct phy_device *phydev); int phy_aneg_done(struct phy_device *phydev);
+unsigned int phy_inband_caps(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); bool phy_check_valid(int speed, int duplex, unsigned long *features);
--- a/drivers/net/phy/bcm84881.c --- a/drivers/net/phy/bcm84881.c
+++ b/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); 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, .get_features = bcm84881_get_features,
--- a/drivers/net/phy/marvell.c --- a/drivers/net/phy/marvell.c
+++ b/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); 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) static int m88e1111_config_aneg(struct phy_device *phydev)
{ {
int extsr = phy_read(phydev, MII_M1111_PHY_EXT_SR); 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", .name = "Marvell 88E1112",
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
.probe = marvell_probe, .probe = marvell_probe,
@ -965,16 +974,16 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
.config_init = m88e1112_config_init, .config_init = m88e1112_config_init,
.config_aneg = marvell_config_aneg, .config_aneg = marvell_config_aneg,
.config_intr = marvell_config_intr, .config_intr = marvell_config_intr,
@@ -3312,6 +3356,8 @@ static struct phy_driver marvell_drivers @@ -3688,6 +3732,8 @@ static struct phy_driver marvell_drivers
.name = "Marvell 88E1111",
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
.flags = PHY_POLL_CABLE_TEST,
.probe = marvell_probe, .probe = marvell_probe,
+ .inband_caps = m88e1111_inband_caps, + .inband_caps = m88e1111_inband_caps,
+ .config_inband = m88e1111_config_inband, + .config_inband = m88e1111_config_inband,
.config_init = m88e1111gbe_config_init, .config_init = m88e1111gbe_config_init,
.config_aneg = m88e1111_config_aneg, .config_aneg = m88e1111_config_aneg,
.read_status = marvell_read_status, .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)", .name = "Marvell 88E1111 (Finisar)",
/* PHY_GBIT_FEATURES */ /* PHY_GBIT_FEATURES */
.probe = marvell_probe, .probe = marvell_probe,
@ -985,7 +994,7 @@ publishing the in-band capabilities from the BCM84881 PHY driver.
.read_status = marvell_read_status, .read_status = marvell_read_status,
--- a/include/linux/phylink.h --- a/include/linux/phylink.h
+++ b/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. * struct phylink_pcs_ops - MAC PCS operations structure.
* @pcs_validate: validate the link configuration. * @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_enable: enable the PCS.
* @pcs_disable: disable the PCS. * @pcs_disable: disable the PCS.
* @pcs_pre_config: pre-mac_config method (for errata) * @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 { struct phylink_pcs_ops {
int (*pcs_validate)(struct phylink_pcs *pcs, unsigned long *supported, int (*pcs_validate)(struct phylink_pcs *pcs, unsigned long *supported,
const struct phylink_link_state *state); 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); int (*pcs_enable)(struct phylink_pcs *pcs);
void (*pcs_disable)(struct phylink_pcs *pcs); void (*pcs_disable)(struct phylink_pcs *pcs);
void (*pcs_pre_config)(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); 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 --- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/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); 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, 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 = { 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, .pcs_an_restart = mvneta_pcs_an_restart,
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/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, .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, 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 = { 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, static void lynx_pcs_get_state_usxgmii(struct mdio_device *pcs,
struct phylink_link_state *state) 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 = { 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, .pcs_an_restart = mtk_pcs_lynxi_restart_an,
--- a/drivers/net/pcs/pcs-xpcs.c --- a/drivers/net/pcs/pcs-xpcs.c
+++ b/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; 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) void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces)
{ {
int i, j; 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 = { static const struct phylink_pcs_ops xpcs_phylink_ops = {
.pcs_validate = xpcs_validate, .pcs_validate = xpcs_validate,

View file

@ -68,11 +68,11 @@
+}; +};
--- a/arch/arm64/boot/dts/mediatek/Makefile --- a/arch/arm64/boot/dts/mediatek/Makefile
+++ b/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-nand.dtbo
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-nor.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-sd.dtbo
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-respeaker-2mics.dtbo +dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-respeaker-2mics.dtbo
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-rfb.dtb dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-rfb.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986b-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

View file

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
+++ b/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 /* Attention: GPIO 90 is used to switch between PCIe@1,0 and
* SATA functions. i.e. output-high: PCIe, output-low: SATA * SATA functions. i.e. output-high: PCIe, output-low: SATA
*/ */

View file

@ -1,6 +1,6 @@
--- a/arch/arm/Kconfig --- a/arch/arm/Kconfig
+++ b/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 endchoice
@ -17,7 +17,7 @@
default "" default ""
--- a/drivers/of/fdt.c --- a/drivers/of/fdt.c
+++ b/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) if (p != NULL && l > 0)
strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE)); strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE));
@ -29,7 +29,7 @@
+#ifdef CONFIG_CMDLINE_OVERRIDE +#ifdef CONFIG_CMDLINE_OVERRIDE
+ p = of_get_flat_dt_prop(node, "bootargs-override", &l); + p = of_get_flat_dt_prop(node, "bootargs-override", &l);
+ if (p != NULL && l > 0) + if (p != NULL && l > 0)
+ strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE)); + strscpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE));
+#endif +#endif
+ +
handle_cmdline: handle_cmdline:
@ -37,7 +37,7 @@
* CONFIG_CMDLINE is meant to be a default in case nothing else * CONFIG_CMDLINE is meant to be a default in case nothing else
--- a/arch/arm64/Kconfig --- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig
@@ -2309,6 +2309,14 @@ config CMDLINE_FORCE @@ -2380,6 +2380,14 @@ config CMDLINE_FORCE
endchoice endchoice

View file

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
+++ b/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 { &wmac {

View file

@ -10,7 +10,7 @@
}; };
cpus { cpus {
@@ -234,6 +237,28 @@ @@ -245,6 +248,28 @@
assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>; assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>;
assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>; assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
non-removable; non-removable;
@ -39,7 +39,7 @@
}; };
&mmc1 { &mmc1 {
@@ -249,6 +274,28 @@ @@ -260,6 +285,28 @@
vqmmc-supply = <&reg_3p3v>; vqmmc-supply = <&reg_3p3v>;
assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>; assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>;
assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>; assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
@ -68,7 +68,7 @@
}; };
&nandc { &nandc {
@@ -282,15 +329,30 @@ @@ -293,15 +340,30 @@
read-only; read-only;
}; };

View file

@ -1,6 +1,6 @@
--- a/drivers/spi/spi-mt65xx.c --- a/drivers/spi/spi-mt65xx.c
+++ b/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) if (ret < 0)
return dev_err_probe(dev, ret, "failed to enable hclk\n"); return dev_err_probe(dev, ret, "failed to enable hclk\n");

View file

@ -5,7 +5,7 @@
--- a/drivers/leds/Kconfig --- a/drivers/leds/Kconfig
+++ b/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" comment "RGB LED drivers"
source "drivers/leds/rgb/Kconfig" source "drivers/leds/rgb/Kconfig"
@ -24,11 +24,11 @@
--- a/drivers/leds/Makefile --- a/drivers/leds/Makefile
+++ b/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_PWM) += leds-pwm.o
obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o
obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o
+obj-$(CONFIG_LEDS_SMARTRG_LED) += leds-smartrg-system.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_ST1202) += leds-st1202.o
obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o
obj-$(CONFIG_LEDS_SYSCON) += leds-syscon.o

View file

@ -29,7 +29,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/mtd/nand/spi/core.c --- a/drivers/mtd/nand/spi/core.c
+++ b/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[] = { static const struct spi_device_id spinand_ids[] = {
{ .name = "spi-nand" }, { .name = "spi-nand" },
@ -37,7 +37,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
{ /* sentinel */ }, { /* sentinel */ },
}; };
MODULE_DEVICE_TABLE(spi, spinand_ids); 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 #ifdef CONFIG_OF
static const struct of_device_id spinand_of_ids[] = { static const struct of_device_id spinand_of_ids[] = {
{ .compatible = "spi-nand" }, { .compatible = "spi-nand" },