devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/3] net: phy: bcm54811: Fix the PHY initialization
@ 2025-06-26 11:56 Kamil Horák - 2N
  2025-06-26 11:56 ` [PATCH 1/3] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Kamil Horák - 2N @ 2025-06-26 11:56 UTC (permalink / raw)
  To: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
	linux, davem, edumazet, kuba, pabeni, krzk+dt, conor+dt
  Cc: kamilh, netdev, devicetree, linux-kernel, f.fainelli, robh,
	andrew+netdev

PATCH 1 - Add MII-Lite PHY interface mode as defined by Broadcom for
   their two-wire PHYs. It can be used with most Ethernet controllers
   under certain limitations (no half-duplex link modes etc.).

PATCH 2 - Add MII-Lite PHY interface type

PATCH 3 - Fix the BCM54811 PHY initialization so that it conforms
   to the datasheet regarding a reserved bit in the LRE Control
   register, which must be written to zero after every device reset.
   
Kamil Horák - 2N (3):
  net: phy: MII-Lite PHY interface mode
  dt-bindings: ethernet-phy: add MII-Lite phy interface type
  net: phy: bcm54811: Fix the PHY initialization

 .../bindings/net/ethernet-controller.yaml     |  1 +
 drivers/net/phy/broadcom.c                    | 30 ++++++++++++++++---
 drivers/net/phy/phy-core.c                    |  1 +
 drivers/net/phy/phy_caps.c                    |  4 +++
 drivers/net/phy/phylink.c                     |  1 +
 include/linux/brcmphy.h                       |  7 +++++
 include/linux/phy.h                           |  4 +++
 7 files changed, 44 insertions(+), 4 deletions(-)

-- 
2.39.5


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] net: phy: MII-Lite PHY interface mode
  2025-06-26 11:56 [PATCH net 0/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
@ 2025-06-26 11:56 ` Kamil Horák - 2N
  2025-06-26 13:02   ` Russell King (Oracle)
  2025-06-26 11:56 ` [PATCH 2/3] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
  2025-06-26 11:56 ` [PATCH 3/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
  2 siblings, 1 reply; 7+ messages in thread
From: Kamil Horák - 2N @ 2025-06-26 11:56 UTC (permalink / raw)
  To: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
	linux, davem, edumazet, kuba, pabeni, krzk+dt, conor+dt
  Cc: kamilh, netdev, devicetree, linux-kernel, f.fainelli, robh,
	andrew+netdev

Some Broadcom PHYs are capable to operate in simplified MII mode,
without TXER, RXER, CRS and COL signals as defined for the MII.
The MII-Lite mode can be used on most Ethernet controllers with full
MII interface by just leaving the input signals (RXER, CRS, COL)
inactive. The absence of COL signal makes half-duplex link modes
impossible but does not interfere with BroadR-Reach link modes on
Broadcom PHYs, because they are all full-duplex only.

Add MII-Lite interface mode, especially for Broadcom two-wire PHYs.
Add MII-Lite activation for bcm5481x PHYs.

Fixes: 03ab6c244bb0 ("net: phy: bcm-phy-lib: Implement BroadR-Reach link modes")
Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
---
 drivers/net/phy/broadcom.c | 7 +++++++
 drivers/net/phy/phy-core.c | 1 +
 drivers/net/phy/phy_caps.c | 4 ++++
 drivers/net/phy/phylink.c  | 1 +
 include/linux/brcmphy.h    | 6 ++++++
 include/linux/phy.h        | 4 ++++
 6 files changed, 23 insertions(+)

diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index 9b1de54fd483..7d3b85a07b8c 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -423,6 +423,13 @@ static int bcm54811_config_init(struct phy_device *phydev)
 	/* With BCM54811, BroadR-Reach implies no autoneg */
 	if (priv->brr_mode)
 		phydev->autoneg = 0;
+	/* Enable MII Lite (No TXER, RXER, CRS, COL) if configured */
+	err = bcm_phy_modify_exp(phydev, BCM_EXP_SYNC_ETHERNET,
+				 BCM_EXP_SYNC_ETHERNET_MII_LITE,
+				 phydev->interface == PHY_INTERFACE_MODE_MIILITE ?
+				 BCM_EXP_SYNC_ETHERNET_MII_LITE : 0);
+	if (err < 0)
+		return err;
 
 	return bcm5481x_set_brrmode(phydev, priv->brr_mode);
 }
diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c
index e177037f9110..b2df06343b7e 100644
--- a/drivers/net/phy/phy-core.c
+++ b/drivers/net/phy/phy-core.c
@@ -115,6 +115,7 @@ int phy_interface_num_ports(phy_interface_t interface)
 		return 0;
 	case PHY_INTERFACE_MODE_INTERNAL:
 	case PHY_INTERFACE_MODE_MII:
+	case PHY_INTERFACE_MODE_MIILITE:
 	case PHY_INTERFACE_MODE_GMII:
 	case PHY_INTERFACE_MODE_TBI:
 	case PHY_INTERFACE_MODE_REVMII:
diff --git a/drivers/net/phy/phy_caps.c b/drivers/net/phy/phy_caps.c
index 38417e288611..b4a4dea3e756 100644
--- a/drivers/net/phy/phy_caps.c
+++ b/drivers/net/phy/phy_caps.c
@@ -316,6 +316,10 @@ unsigned long phy_caps_from_interface(phy_interface_t interface)
 		link_caps |= BIT(LINK_CAPA_100HD) | BIT(LINK_CAPA_100FD);
 		break;
 
+	case PHY_INTERFACE_MODE_MIILITE:
+		link_caps |= BIT(LINK_CAPA_10FD) | BIT(LINK_CAPA_100FD);
+		break;
+
 	case PHY_INTERFACE_MODE_TBI:
 	case PHY_INTERFACE_MODE_MOCA:
 	case PHY_INTERFACE_MODE_RTBI:
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 0faa3d97e06b..766cad40f1b8 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -234,6 +234,7 @@ static int phylink_interface_max_speed(phy_interface_t interface)
 	case PHY_INTERFACE_MODE_SMII:
 	case PHY_INTERFACE_MODE_REVMII:
 	case PHY_INTERFACE_MODE_MII:
+	case PHY_INTERFACE_MODE_MIILITE:
 		return SPEED_100;
 
 	case PHY_INTERFACE_MODE_TBI:
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
index 028b3e00378e..15c35655f482 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -182,6 +182,12 @@
 #define BCM_LED_MULTICOLOR_ACT		0x9
 #define BCM_LED_MULTICOLOR_PROGRAM	0xa
 
+/*
+ * Broadcom Synchronous Ethernet Controls (expansion register 0x0E)
+ */
+#define BCM_EXP_SYNC_ETHERNET		(MII_BCM54XX_EXP_SEL_ER + 0x0E)
+#define BCM_EXP_SYNC_ETHERNET_MII_LITE	BIT(11)
+
 /*
  * BCM5482: Shadow registers
  * Shadow values go into bits [14:10] of register 0x1c to select a shadow
diff --git a/include/linux/phy.h b/include/linux/phy.h
index e194dad1623d..6aad4b741c01 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -103,6 +103,7 @@ extern const int phy_basic_ports_array[3];
  * @PHY_INTERFACE_MODE_QUSGMII: Quad Universal SGMII
  * @PHY_INTERFACE_MODE_1000BASEKX: 1000Base-KX - with Clause 73 AN
  * @PHY_INTERFACE_MODE_10G_QXGMII: 10G-QXGMII - 4 ports over 10G USXGMII
+ * @PHY_INTERFACE_MODE_MIILITE: MII-Lite - MII without RXER TXER CRS COL
  * @PHY_INTERFACE_MODE_MAX: Book keeping
  *
  * Describes the interface between the MAC and PHY.
@@ -144,6 +145,7 @@ typedef enum {
 	PHY_INTERFACE_MODE_QUSGMII,
 	PHY_INTERFACE_MODE_1000BASEKX,
 	PHY_INTERFACE_MODE_10G_QXGMII,
+	PHY_INTERFACE_MODE_MIILITE,
 	PHY_INTERFACE_MODE_MAX,
 } phy_interface_t;
 
@@ -260,6 +262,8 @@ static inline const char *phy_modes(phy_interface_t interface)
 		return "qusgmii";
 	case PHY_INTERFACE_MODE_10G_QXGMII:
 		return "10g-qxgmii";
+	case PHY_INTERFACE_MODE_MIILITE:
+		return "mii-lite";
 	default:
 		return "unknown";
 	}
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] dt-bindings: ethernet-phy: add MII-Lite phy interface type
  2025-06-26 11:56 [PATCH net 0/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
  2025-06-26 11:56 ` [PATCH 1/3] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
@ 2025-06-26 11:56 ` Kamil Horák - 2N
  2025-06-26 11:58   ` Krzysztof Kozlowski
  2025-06-26 11:56 ` [PATCH 3/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
  2 siblings, 1 reply; 7+ messages in thread
From: Kamil Horák - 2N @ 2025-06-26 11:56 UTC (permalink / raw)
  To: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
	linux, davem, edumazet, kuba, pabeni, krzk+dt, conor+dt
  Cc: kamilh, netdev, devicetree, linux-kernel, f.fainelli, robh,
	andrew+netdev

Some Broadcom PHYs are capable to operate in simplified MII mode,
without TXER, RXER, CRS and COL signals as defined for the MII.
The MII-Lite mode can be used on most Ethernet controllers with full
MII interface by just leaving the input signals (RXER, CRS, COL)
inactive. The absence of COL signal makes half-duplex link modes
impossible but does not interfere with BroadR-Reach link modes on
Broadcom PHYs, because they are all full-duplex only.

Add new interface type "mii-lite" to phy-connection-type enum.

Fixes: 03ab6c244bb0 ("net: phy: bcm-phy-lib: Implement BroadR-Reach link modes")
Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
---
 Documentation/devicetree/bindings/net/ethernet-controller.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/net/ethernet-controller.yaml b/Documentation/devicetree/bindings/net/ethernet-controller.yaml
index 7cbf11bbe99c..66b1cfbbfe22 100644
--- a/Documentation/devicetree/bindings/net/ethernet-controller.yaml
+++ b/Documentation/devicetree/bindings/net/ethernet-controller.yaml
@@ -39,6 +39,7 @@ properties:
       # MAC.
       - internal
       - mii
+      - mii-lite
       - gmii
       - sgmii
       - psgmii
--
2.39.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] net: phy: bcm54811: Fix the PHY initialization
  2025-06-26 11:56 [PATCH net 0/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
  2025-06-26 11:56 ` [PATCH 1/3] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
  2025-06-26 11:56 ` [PATCH 2/3] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
@ 2025-06-26 11:56 ` Kamil Horák - 2N
  2025-06-26 13:05   ` Russell King (Oracle)
  2 siblings, 1 reply; 7+ messages in thread
From: Kamil Horák - 2N @ 2025-06-26 11:56 UTC (permalink / raw)
  To: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
	linux, davem, edumazet, kuba, pabeni, krzk+dt, conor+dt
  Cc: kamilh, netdev, devicetree, linux-kernel, f.fainelli, robh,
	andrew+netdev

Reset the bit 12 in PHY's LRE Control register upon initialization.
According to the datasheet, this bit must be written to zero after
every device reset.

Fixes: 03ab6c244bb0 ("net: phy: bcm-phy-lib: Implement BroadR-Reach link modes")
Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
---
 drivers/net/phy/broadcom.c | 23 +++++++++++++++++++----
 include/linux/brcmphy.h    |  1 +
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index 7d3b85a07b8c..9d38aa7f3b45 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -662,7 +662,7 @@ static int bcm5481x_read_abilities(struct phy_device *phydev)
 {
 	struct device_node *np = phydev->mdio.dev.of_node;
 	struct bcm54xx_phy_priv *priv = phydev->priv;
-	int i, val, err;
+	int i, val, err, aneg;

 	for (i = 0; i < ARRAY_SIZE(bcm54811_linkmodes); i++)
 		linkmode_clear_bit(bcm54811_linkmodes[i], phydev->supported);
@@ -683,9 +683,17 @@ static int bcm5481x_read_abilities(struct phy_device *phydev)
 		if (val < 0)
 			return val;

+		/* BCM54811 is not capable of LDS but the corresponding bit
+		 * in LRESR is set to 1 and marked "Ignore" in the datasheet.
+		 * So we must read the bcm54811 as unable to auto-negotiate
+		 * in BroadR-Reach mode.
+		 */
+		aneg = (BRCM_PHY_MODEL(phydev) != PHY_ID_BCM54811) ?
+			(val & LRESR_LDSABILITY) : 0;
+
 		linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
 				 phydev->supported,
-				 val & LRESR_LDSABILITY);
+				 aneg);
 		linkmode_mod_bit(ETHTOOL_LINK_MODE_100baseT1_Full_BIT,
 				 phydev->supported,
 				 val & LRESR_100_1PAIR);
@@ -742,8 +750,15 @@ static int bcm54811_config_aneg(struct phy_device *phydev)

 	/* Aneg firstly. */
 	if (priv->brr_mode) {
-		/* BCM54811 is only capable of autonegotiation in IEEE mode */
-		phydev->autoneg = 0;
+		/* BCM54811 is only capable of autonegotiation in IEEE mode.
+		 * In BroadR-Reach mode, disable the Long Distance Signaling,
+		 * the BRR mode autoneg as supported in other Broadcom PHYs.
+		 * This bit is marked as "Reserved" and "Default 1, must be
+		 *  written to 0 after every device reset" in the datasheet.
+		 */
+		ret = phy_modify(phydev, MII_BCM54XX_LRECR, LRECR_LDSEN, 0);
+		if (ret < 0)
+			return ret;
 		ret = bcm_config_lre_aneg(phydev, false);
 	} else {
 		ret = genphy_config_aneg(phydev);
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
index 15c35655f482..115a964f3006 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -137,6 +137,7 @@

 #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC			0x07
 #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN	0x0010
+#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RSVD		0x0060
 #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN	0x0080
 #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN	0x0100
 #define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX		0x0200
--
2.39.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] dt-bindings: ethernet-phy: add MII-Lite phy interface type
  2025-06-26 11:56 ` [PATCH 2/3] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
@ 2025-06-26 11:58   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2025-06-26 11:58 UTC (permalink / raw)
  To: Kamil Horák - 2N, florian.fainelli, bcm-kernel-feedback-list,
	andrew, hkallweit1, linux, davem, edumazet, kuba, pabeni, krzk+dt,
	conor+dt
  Cc: netdev, devicetree, linux-kernel, f.fainelli, robh, andrew+netdev

On 26/06/2025 13:56, Kamil Horák - 2N wrote:
> Some Broadcom PHYs are capable to operate in simplified MII mode,
> without TXER, RXER, CRS and COL signals as defined for the MII.
> The MII-Lite mode can be used on most Ethernet controllers with full
> MII interface by just leaving the input signals (RXER, CRS, COL)
> inactive. The absence of COL signal makes half-duplex link modes
> impossible but does not interfere with BroadR-Reach link modes on
> Broadcom PHYs, because they are all full-duplex only.
> 
> Add new interface type "mii-lite" to phy-connection-type enum.
> 
> Fixes: 03ab6c244bb0 ("net: phy: bcm-phy-lib: Implement BroadR-Reach link modes")
> Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
> ---
>  Documentation/devicetree/bindings/net/ethernet-controller.yaml | 1 +

You just sent v3 (double v3!) of this, no changelog, no explanations.

Please slow down and don't send the same triple time. Provide changelog,
as explained in submitting patches.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] net: phy: MII-Lite PHY interface mode
  2025-06-26 11:56 ` [PATCH 1/3] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
@ 2025-06-26 13:02   ` Russell King (Oracle)
  0 siblings, 0 replies; 7+ messages in thread
From: Russell King (Oracle) @ 2025-06-26 13:02 UTC (permalink / raw)
  To: Kamil Horák - 2N
  Cc: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
	davem, edumazet, kuba, pabeni, krzk+dt, conor+dt, netdev,
	devicetree, linux-kernel, f.fainelli, robh, andrew+netdev

On Thu, Jun 26, 2025 at 01:56:17PM +0200, Kamil Horák - 2N wrote:
> diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
> index 9b1de54fd483..7d3b85a07b8c 100644
> --- a/drivers/net/phy/broadcom.c
> +++ b/drivers/net/phy/broadcom.c
> @@ -423,6 +423,13 @@ static int bcm54811_config_init(struct phy_device *phydev)
>  	/* With BCM54811, BroadR-Reach implies no autoneg */
>  	if (priv->brr_mode)
>  		phydev->autoneg = 0;

Blank line here to aid readability please.

> +	/* Enable MII Lite (No TXER, RXER, CRS, COL) if configured */
> +	err = bcm_phy_modify_exp(phydev, BCM_EXP_SYNC_ETHERNET,
> +				 BCM_EXP_SYNC_ETHERNET_MII_LITE,
> +				 phydev->interface == PHY_INTERFACE_MODE_MIILITE ?
> +				 BCM_EXP_SYNC_ETHERNET_MII_LITE : 0);

In cases like this, where the ternary op leads to less readable code,
it's better to do:

	if (phydev->interface == PHY_INTERFACE_MODE_MIILITE)
		exp_sync_ethernet = BCM_EXP_SYNC_ETHERNET_MII_LITE;
	else
		exp_sync_ethernet = 0;

	err = bcm_phy_modify_exp(phydev, BCM_EXP_SYNC_ETHERNET,
				 BCM_EXP_SYNC_ETHERNET_MII_LITE,
				 exp_sync_ethernet);

> +	if (err < 0)
> +		return err;
>  
>  	return bcm5481x_set_brrmode(phydev, priv->brr_mode);
>  }

I'd include this with the above change:

> diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
> index 028b3e00378e..15c35655f482 100644
> --- a/include/linux/brcmphy.h
> +++ b/include/linux/brcmphy.h
> @@ -182,6 +182,12 @@
>  #define BCM_LED_MULTICOLOR_ACT		0x9
>  #define BCM_LED_MULTICOLOR_PROGRAM	0xa
>  
> +/*
> + * Broadcom Synchronous Ethernet Controls (expansion register 0x0E)
> + */
> +#define BCM_EXP_SYNC_ETHERNET		(MII_BCM54XX_EXP_SEL_ER + 0x0E)
> +#define BCM_EXP_SYNC_ETHERNET_MII_LITE	BIT(11)
> +
>  /*
>   * BCM5482: Shadow registers
>   * Shadow values go into bits [14:10] of register 0x1c to select a shadow

... and send the changes below as a separate patch as these changes
below are modifying generic code.

> diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c
> index e177037f9110..b2df06343b7e 100644
> --- a/drivers/net/phy/phy-core.c
> +++ b/drivers/net/phy/phy-core.c
> @@ -115,6 +115,7 @@ int phy_interface_num_ports(phy_interface_t interface)
>  		return 0;
>  	case PHY_INTERFACE_MODE_INTERNAL:
>  	case PHY_INTERFACE_MODE_MII:
> +	case PHY_INTERFACE_MODE_MIILITE:
>  	case PHY_INTERFACE_MODE_GMII:
>  	case PHY_INTERFACE_MODE_TBI:
>  	case PHY_INTERFACE_MODE_REVMII:
> diff --git a/drivers/net/phy/phy_caps.c b/drivers/net/phy/phy_caps.c
> index 38417e288611..b4a4dea3e756 100644
> --- a/drivers/net/phy/phy_caps.c
> +++ b/drivers/net/phy/phy_caps.c
> @@ -316,6 +316,10 @@ unsigned long phy_caps_from_interface(phy_interface_t interface)
>  		link_caps |= BIT(LINK_CAPA_100HD) | BIT(LINK_CAPA_100FD);
>  		break;
>  
> +	case PHY_INTERFACE_MODE_MIILITE:
> +		link_caps |= BIT(LINK_CAPA_10FD) | BIT(LINK_CAPA_100FD);
> +		break;
> +
>  	case PHY_INTERFACE_MODE_TBI:
>  	case PHY_INTERFACE_MODE_MOCA:
>  	case PHY_INTERFACE_MODE_RTBI:
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 0faa3d97e06b..766cad40f1b8 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -234,6 +234,7 @@ static int phylink_interface_max_speed(phy_interface_t interface)
>  	case PHY_INTERFACE_MODE_SMII:
>  	case PHY_INTERFACE_MODE_REVMII:
>  	case PHY_INTERFACE_MODE_MII:
> +	case PHY_INTERFACE_MODE_MIILITE:
>  		return SPEED_100;
>  
>  	case PHY_INTERFACE_MODE_TBI:
> diff --git a/include/linux/phy.h b/include/linux/phy.h
> index e194dad1623d..6aad4b741c01 100644
> --- a/include/linux/phy.h
> +++ b/include/linux/phy.h
> @@ -103,6 +103,7 @@ extern const int phy_basic_ports_array[3];
>   * @PHY_INTERFACE_MODE_QUSGMII: Quad Universal SGMII
>   * @PHY_INTERFACE_MODE_1000BASEKX: 1000Base-KX - with Clause 73 AN
>   * @PHY_INTERFACE_MODE_10G_QXGMII: 10G-QXGMII - 4 ports over 10G USXGMII
> + * @PHY_INTERFACE_MODE_MIILITE: MII-Lite - MII without RXER TXER CRS COL
>   * @PHY_INTERFACE_MODE_MAX: Book keeping
>   *
>   * Describes the interface between the MAC and PHY.
> @@ -144,6 +145,7 @@ typedef enum {
>  	PHY_INTERFACE_MODE_QUSGMII,
>  	PHY_INTERFACE_MODE_1000BASEKX,
>  	PHY_INTERFACE_MODE_10G_QXGMII,
> +	PHY_INTERFACE_MODE_MIILITE,
>  	PHY_INTERFACE_MODE_MAX,
>  } phy_interface_t;
>  
> @@ -260,6 +262,8 @@ static inline const char *phy_modes(phy_interface_t interface)
>  		return "qusgmii";
>  	case PHY_INTERFACE_MODE_10G_QXGMII:
>  		return "10g-qxgmii";
> +	case PHY_INTERFACE_MODE_MIILITE:
> +		return "mii-lite";
>  	default:
>  		return "unknown";
>  	}

Otherwise, I think this is fine.

Please remember netdev's rules, which can be found in the tl;dr on:
https://www.kernel.org/doc/html/v6.1/process/maintainer-netdev.html

(There's probably an updated version, but I can never remember the URL.)

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] net: phy: bcm54811: Fix the PHY initialization
  2025-06-26 11:56 ` [PATCH 3/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
@ 2025-06-26 13:05   ` Russell King (Oracle)
  0 siblings, 0 replies; 7+ messages in thread
From: Russell King (Oracle) @ 2025-06-26 13:05 UTC (permalink / raw)
  To: Kamil Horák - 2N
  Cc: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
	davem, edumazet, kuba, pabeni, krzk+dt, conor+dt, netdev,
	devicetree, linux-kernel, f.fainelli, robh, andrew+netdev

On Thu, Jun 26, 2025 at 01:56:19PM +0200, Kamil Horák - 2N wrote:
> +		/* BCM54811 is not capable of LDS but the corresponding bit
> +		 * in LRESR is set to 1 and marked "Ignore" in the datasheet.
> +		 * So we must read the bcm54811 as unable to auto-negotiate
> +		 * in BroadR-Reach mode.
> +		 */
> +		aneg = (BRCM_PHY_MODEL(phydev) != PHY_ID_BCM54811) ?
> +			(val & LRESR_LDSABILITY) : 0;

Wouldn't:

		if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54811)
			aneg = 0;
		else
			aneg = val & LRESR_LDSABILITY;

be more readable?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-06-26 13:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-26 11:56 [PATCH net 0/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-26 11:56 ` [PATCH 1/3] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
2025-06-26 13:02   ` Russell King (Oracle)
2025-06-26 11:56 ` [PATCH 2/3] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
2025-06-26 11:58   ` Krzysztof Kozlowski
2025-06-26 11:56 ` [PATCH 3/3] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-26 13:05   ` Russell King (Oracle)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).