#endif /* __MXL862XX_CMD_H */
--- a/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
+++ b/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
-@@ -7,20 +7,371 @@
+@@ -7,20 +7,369 @@
* Copyright (C) 2025 Daniel Golle <daniel@makrotopia.org>
*/
+ break;
+ case 9:
+ case 13:
-+ if (!MXL862XX_FW_VER_MIN(priv, 1, 0, 84))
-+ break;
+ __set_bit(PHY_INTERFACE_MODE_SGMII, config->supported_interfaces);
+ __set_bit(PHY_INTERFACE_MODE_1000BASEX, config->supported_interfaces);
+ __set_bit(PHY_INTERFACE_MODE_2500BASEX, config->supported_interfaces);
}
static void mxl862xx_phylink_mac_config(struct phylink_config *config,
-@@ -48,4 +399,5 @@ const struct phylink_mac_ops mxl862xx_ph
+@@ -48,4 +397,5 @@ const struct phylink_mac_ops mxl862xx_ph
.mac_config = mxl862xx_phylink_mac_config,
.mac_link_down = mxl862xx_phylink_mac_link_down,
.mac_link_up = mxl862xx_phylink_mac_link_up,
--- a/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
+++ b/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
-@@ -401,3 +401,100 @@ const struct phylink_mac_ops mxl862xx_ph
+@@ -399,3 +399,100 @@ const struct phylink_mac_ops mxl862xx_ph
.mac_link_up = mxl862xx_phylink_mac_link_up,
.mac_select_pcs = mxl862xx_phylink_mac_select_pcs,
};
#define MXL862XX_XPCS_PCS_GET_STATE (MXL862XX_XPCS_MAGIC + 0x2)
--- a/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
+++ b/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
-@@ -62,6 +62,152 @@ static struct mxl862xx_pcs *pcs_to_mxl86
+@@ -60,6 +60,152 @@ static struct mxl862xx_pcs *pcs_to_mxl86
return container_of(pcs, struct mxl862xx_pcs, pcs);
}
static int mxl862xx_xpcs_if_mode(phy_interface_t interface)
{
switch (interface) {
-@@ -351,7 +497,10 @@ void mxl862xx_setup_pcs(struct mxl862xx_
+@@ -349,7 +495,10 @@ void mxl862xx_setup_pcs(struct mxl862xx_
pcs->slot = MXL862XX_SERDES_SLOT(port);
pcs->interface = PHY_INTERFACE_MODE_NA;
pcs->pcs.poll = true;
}
-@@ -363,9 +512,6 @@ mxl862xx_phylink_mac_select_pcs(struct p
+@@ -361,9 +510,6 @@ mxl862xx_phylink_mac_select_pcs(struct p
struct mxl862xx_priv *priv = dp->ds->priv;
int port = dp->index;
#endif /* __MXL862XX_CMD_H */
--- a/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
+++ b/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
-@@ -7,20 +7,384 @@
+@@ -7,20 +7,382 @@
* Copyright (C) 2025 Daniel Golle <daniel@makrotopia.org>
*/
+ break;
+ case 9:
+ case 13:
-+ if (!MXL862XX_FW_VER_MIN(priv, 1, 0, 84))
-+ break;
+ __set_bit(PHY_INTERFACE_MODE_SGMII, config->supported_interfaces);
+ __set_bit(PHY_INTERFACE_MODE_1000BASEX, config->supported_interfaces);
+ __set_bit(PHY_INTERFACE_MODE_2500BASEX, config->supported_interfaces);
}
static void mxl862xx_phylink_mac_config(struct phylink_config *config,
-@@ -48,4 +412,5 @@ const struct phylink_mac_ops mxl862xx_ph
+@@ -48,4 +410,5 @@ const struct phylink_mac_ops mxl862xx_ph
.mac_config = mxl862xx_phylink_mac_config,
.mac_link_down = mxl862xx_phylink_mac_link_down,
.mac_link_up = mxl862xx_phylink_mac_link_up,
--- a/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
+++ b/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
-@@ -414,3 +414,100 @@ const struct phylink_mac_ops mxl862xx_ph
+@@ -412,3 +412,100 @@ const struct phylink_mac_ops mxl862xx_ph
.mac_link_up = mxl862xx_phylink_mac_link_up,
.mac_select_pcs = mxl862xx_phylink_mac_select_pcs,
};
#define MXL862XX_XPCS_PCS_GET_STATE (MXL862XX_XPCS_MAGIC + 0x2)
--- a/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
+++ b/drivers/net/dsa/mxl862xx/mxl862xx-phylink.c
-@@ -62,6 +62,153 @@ static struct mxl862xx_pcs *pcs_to_mxl86
+@@ -60,6 +60,153 @@ static struct mxl862xx_pcs *pcs_to_mxl86
return container_of(pcs, struct mxl862xx_pcs, pcs);
}
static int mxl862xx_xpcs_if_mode(phy_interface_t interface)
{
switch (interface) {
-@@ -352,7 +499,10 @@ void mxl862xx_setup_pcs(struct mxl862xx_
+@@ -350,7 +497,10 @@ void mxl862xx_setup_pcs(struct mxl862xx_
pcs->slot = MXL862XX_SERDES_SLOT(port);
pcs->interface = PHY_INTERFACE_MODE_NA;
pcs->pcs.poll = true;
__set_bit(PHY_INTERFACE_MODE_QSGMII, pcs->pcs.supported_interfaces);
-@@ -376,9 +526,6 @@ mxl862xx_phylink_mac_select_pcs(struct p
+@@ -374,9 +524,6 @@ mxl862xx_phylink_mac_select_pcs(struct p
struct mxl862xx_priv *priv = dp->ds->priv;
int port = dp->index;