]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: macb: rename macb_default_usrio to at91_default_usrio as not all platforms have...
authorConor Dooley <conor.dooley@microchip.com>
Wed, 25 Mar 2026 16:28:06 +0000 (16:28 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sun, 29 Mar 2026 21:34:27 +0000 (14:34 -0700)
Calling this structure macb_default_usrio is misleading, I believe, as
it implies that it should be used if your platform has nothing special
to do in usrio. Since usrio is platform dependent, the default here is
probably for each usrio to do nothing, with the macb documentation I
have access to prescribing no standard behaviour here. We noticed that
this was problematic because on mpfs, a bit that macb_default_usrio
sets to deal with the MII mode actually changes the source for the
tsu_clk to something with how the majority of mpfs devices are actually
configured!

Rename it to at91_default_usrio, since that's where the values actually
come from for these. I have no idea if any of the other platforms that
use the default actually copied at91's usrio configuration or if they
have usrio configurations where what the driver does has no impact.

Gate touching these bits behind a capability, like the clken refclock
usrio knob, so that platforms without the MII mode stuff can avoid
running this code.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://patch.msgid.link/20260325-landowner-preformed-2922ce736337@spud
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cadence/macb.h
drivers/net/ethernet/cadence/macb_main.c

index c69828b27dae6b7a9d6c299204b22ce1ef4a5e65..32217de5e0730bd92db1a400ecd3bc34e67b0d5e 100644 (file)
 #define MACB_CAPS_RSC                          BIT(23)
 #define MACB_CAPS_NO_LSO                       BIT(24)
 #define MACB_CAPS_EEE                          BIT(25)
+#define MACB_CAPS_USRIO_HAS_MII                        BIT(26)
 
 /* LSO settings */
 #define MACB_LSO_UFO_ENABLE                    0x01
index 6623b91b5efae98125e0a3547a7afd62af936daf..a96d2cf5355ddd02288229fca9890765f142b6ed 100644 (file)
@@ -4884,13 +4884,15 @@ static int macb_init_dflt(struct platform_device *pdev)
 
        if (!(bp->caps & MACB_CAPS_USRIO_DISABLED)) {
                val = 0;
-               if (phy_interface_mode_is_rgmii(bp->phy_interface))
-                       val = bp->usrio->rgmii;
-               else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII &&
-                        (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII))
-                       val = bp->usrio->rmii;
-               else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII))
-                       val = bp->usrio->mii;
+               if (bp->caps & MACB_CAPS_USRIO_HAS_MII) {
+                       if (phy_interface_mode_is_rgmii(bp->phy_interface))
+                               val = bp->usrio->rgmii;
+                       else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII &&
+                                (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII))
+                               val = bp->usrio->rmii;
+                       else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII))
+                               val = bp->usrio->mii;
+               }
 
                if (bp->caps & MACB_CAPS_USRIO_HAS_CLKEN)
                        val |= bp->usrio->refclk;
@@ -4917,13 +4919,6 @@ static int macb_init(struct platform_device *pdev,
                return macb_init_dflt(pdev);
 }
 
-static const struct macb_usrio_config macb_default_usrio = {
-       .mii = MACB_BIT(MII),
-       .rmii = MACB_BIT(RMII),
-       .rgmii = GEM_BIT(RGMII),
-       .refclk = MACB_BIT(CLKEN),
-};
-
 #if defined(CONFIG_OF)
 /* 1518 rounded up */
 #define AT91ETHER_MAX_RBUFF_SZ 0x600
@@ -5498,6 +5493,13 @@ static int eyeq5_init(struct platform_device *pdev)
        return ret;
 }
 
+static const struct macb_usrio_config at91_default_usrio = {
+       .mii = MACB_BIT(MII),
+       .rmii = MACB_BIT(RMII),
+       .rgmii = GEM_BIT(RGMII),
+       .refclk = MACB_BIT(CLKEN),
+};
+
 static const struct macb_usrio_config sama7g5_usrio = {
        .mii = 0,
        .rmii = 1,
@@ -5508,85 +5510,95 @@ static const struct macb_usrio_config sama7g5_usrio = {
 
 static const struct macb_config fu540_c000_config = {
        .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO |
-               MACB_CAPS_GEM_HAS_PTP,
+               MACB_CAPS_GEM_HAS_PTP | MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .clk_init = fu540_c000_clk_init,
        .init = fu540_c000_init,
        .jumbo_max_len = 10240,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config at91sam9260_config = {
-       .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
-       .usrio = &macb_default_usrio,
+       .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII |
+               MACB_CAPS_USRIO_HAS_MII,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config sama5d3macb_config = {
        .caps = MACB_CAPS_SG_DISABLED |
-               MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
-       .usrio = &macb_default_usrio,
+               MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII |
+               MACB_CAPS_USRIO_HAS_MII,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config pc302gem_config = {
-       .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE,
+       .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config sama5d2_config = {
-       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII | MACB_CAPS_JUMBO,
+       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII | MACB_CAPS_JUMBO |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .jumbo_max_len = 10240,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config sama5d29_config = {
-       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII | MACB_CAPS_GEM_HAS_PTP,
+       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII | MACB_CAPS_GEM_HAS_PTP |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config sama5d3_config = {
        .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE |
-               MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII | MACB_CAPS_JUMBO,
+               MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII | MACB_CAPS_JUMBO |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .jumbo_max_len = 10240,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config sama5d4_config = {
-       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
+       .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 4,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config emac_config = {
-       .caps = MACB_CAPS_NEEDS_RSTONUBR | MACB_CAPS_MACB_IS_EMAC,
+       .caps = MACB_CAPS_NEEDS_RSTONUBR | MACB_CAPS_MACB_IS_EMAC |
+               MACB_CAPS_USRIO_HAS_MII,
        .clk_init = at91ether_clk_init,
        .init = at91ether_init,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config np4_config = {
        .caps = MACB_CAPS_USRIO_DISABLED,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config zynqmp_config = {
        .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE |
                MACB_CAPS_JUMBO |
-               MACB_CAPS_GEM_HAS_PTP | MACB_CAPS_BD_RD_PREFETCH,
+               MACB_CAPS_GEM_HAS_PTP | MACB_CAPS_BD_RD_PREFETCH |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .init = init_reset_optional,
        .jumbo_max_len = 10240,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config zynq_config = {
        .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_NO_GIGABIT_HALF |
-               MACB_CAPS_NEEDS_RSTONUBR,
+               MACB_CAPS_NEEDS_RSTONUBR |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config mpfs_config = {
@@ -5595,7 +5607,7 @@ static const struct macb_config mpfs_config = {
                MACB_CAPS_GEM_HAS_PTP,
        .dma_burst_length = 16,
        .init = init_reset_optional,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
        .max_tx_length = 4040, /* Cadence Erratum 1686 */
        .jumbo_max_len = 4040,
 };
@@ -5603,7 +5615,8 @@ static const struct macb_config mpfs_config = {
 static const struct macb_config sama7g5_gem_config = {
        .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_CLK_HW_CHG |
                MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII |
-               MACB_CAPS_MIIONRGMII | MACB_CAPS_GEM_HAS_PTP,
+               MACB_CAPS_MIIONRGMII | MACB_CAPS_GEM_HAS_PTP |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .usrio = &sama7g5_usrio,
 };
@@ -5611,7 +5624,8 @@ static const struct macb_config sama7g5_gem_config = {
 static const struct macb_config sama7g5_emac_config = {
        .caps = MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII |
                MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_MIIONRGMII |
-               MACB_CAPS_GEM_HAS_PTP,
+               MACB_CAPS_GEM_HAS_PTP |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .usrio = &sama7g5_usrio,
 };
@@ -5620,11 +5634,12 @@ static const struct macb_config versal_config = {
        .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO |
                MACB_CAPS_GEM_HAS_PTP | MACB_CAPS_BD_RD_PREFETCH |
                MACB_CAPS_NEED_TSUCLK | MACB_CAPS_QUEUE_DISABLE |
-               MACB_CAPS_QBV,
+               MACB_CAPS_QBV |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
        .init = init_reset_optional,
        .jumbo_max_len = 10240,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config eyeq5_config = {
@@ -5634,16 +5649,17 @@ static const struct macb_config eyeq5_config = {
        .dma_burst_length = 16,
        .init = eyeq5_init,
        .jumbo_max_len = 10240,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
 };
 
 static const struct macb_config raspberrypi_rp1_config = {
        .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_CLK_HW_CHG |
                MACB_CAPS_JUMBO |
                MACB_CAPS_GEM_HAS_PTP |
-               MACB_CAPS_EEE,
+               MACB_CAPS_EEE |
+               MACB_CAPS_USRIO_HAS_MII,
        .dma_burst_length = 16,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
        .jumbo_max_len = 10240,
 };
 
@@ -5691,7 +5707,7 @@ static const struct macb_config default_gem_config = {
                MACB_CAPS_JUMBO |
                MACB_CAPS_GEM_HAS_PTP,
        .dma_burst_length = 16,
-       .usrio = &macb_default_usrio,
+       .usrio = &at91_default_usrio,
        .jumbo_max_len = 10240,
 };