* [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization
@ 2025-06-30 13:58 Kamil Horák - 2N
2025-06-30 13:58 ` [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Kamil Horák - 2N @ 2025-06-30 13:58 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 - Activation of MII-Lite interface mode on Broadcom bcm5481x
PHYs
PATCH 4 - 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.
Also fix the LRE Status register reading, there is another bit to
be ignored on bcm54811.
Changes in v2:
- Applied reviewers' comments
- Divided into more patches (separated common and Broadcom
PHY specific code)
Changes in v3:
- Added MII-Lite documentation
Changes in v4:
- Added missing Fixes headers
Kamil Horák - 2N (4):
net: phy: MII-Lite PHY interface mode
dt-bindings: ethernet-phy: add MII-Lite phy interface type
net: phy: bcm5481x: MII-Lite activation
net: phy: bcm54811: Fix the PHY initialization
.../bindings/net/ethernet-controller.yaml | 1 +
Documentation/networking/phy.rst | 7 ++++
drivers/net/phy/broadcom.c | 39 ++++++++++++++++---
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 ++
8 files changed, 59 insertions(+), 5 deletions(-)
--
2.39.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode
2025-06-30 13:58 [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
@ 2025-06-30 13:58 ` Kamil Horák - 2N
2025-06-30 17:06 ` Florian Fainelli
2025-06-30 13:58 ` [PATCH net v4 2/4] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Kamil Horák - 2N @ 2025-06-30 13:58 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, Maxime Chevallier
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.
Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
---
Documentation/networking/phy.rst | 7 +++++++
drivers/net/phy/phy-core.c | 1 +
drivers/net/phy/phy_caps.c | 4 ++++
drivers/net/phy/phylink.c | 1 +
include/linux/phy.h | 4 ++++
5 files changed, 17 insertions(+)
diff --git a/Documentation/networking/phy.rst b/Documentation/networking/phy.rst
index f64641417c54..7f159043ad5a 100644
--- a/Documentation/networking/phy.rst
+++ b/Documentation/networking/phy.rst
@@ -333,6 +333,13 @@ Some of the interface modes are described below:
SerDes lane, each port having speeds of 2.5G / 1G / 100M / 10M achieved
through symbol replication. The PCS expects the standard USXGMII code word.
+``PHY_INTERFACE_MODE_MIILITE``
+ Non-standard, simplified MII mode, without TXER, RXER, CRS and COL signals
+ as defined for the MII. The absence of COL signal makes half-duplex link
+ modes impossible but does not interfere with BroadR-Reach link modes on
+ Broadcom (and other two-wire Ethernet) PHYs, because they are full-duplex
+ only.
+
Pause frames / flow control
===========================
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";
}
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net v4 2/4] dt-bindings: ethernet-phy: add MII-Lite phy interface type
2025-06-30 13:58 [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-30 13:58 ` [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
@ 2025-06-30 13:58 ` Kamil Horák - 2N
2025-06-30 17:06 ` Florian Fainelli
2025-06-30 13:58 ` [PATCH net v4 3/4] net: phy: bcm5481x: MII-Lite activation Kamil Horák - 2N
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Kamil Horák - 2N @ 2025-06-30 13:58 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, Maxime Chevallier
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.
Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.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] 10+ messages in thread
* [PATCH net v4 3/4] net: phy: bcm5481x: MII-Lite activation
2025-06-30 13:58 [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-30 13:58 ` [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
2025-06-30 13:58 ` [PATCH net v4 2/4] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
@ 2025-06-30 13:58 ` Kamil Horák - 2N
2025-06-30 17:06 ` Florian Fainelli
2025-06-30 13:58 ` [PATCH net v4 4/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-30 17:06 ` [PATCH net v4 0/4] " Florian Fainelli
4 siblings, 1 reply; 10+ messages in thread
From: Kamil Horák - 2N @ 2025-06-30 13:58 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
Broadcom PHYs featuring the BroadR-Reach two-wire link mode are usually
capable to operate in simplified MII mode, without TXER, RXER, CRS and
COL signals as defined for the MII. The absence of COL signal makes
half-duplex link modes impossible, however, the BroadR-Reach modes are
all full-duplex only.
Depending on the IC encapsulation, there exist MII-Lite-only PHYs such
as bcm54811 in MLP. The PHY itself is hardware-strapped to select among
multiple RGMII and MII-Lite modes, but the MII-Lite mode must be also
activated by software.
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 | 14 +++++++++++++-
include/linux/brcmphy.h | 6 ++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index 9b1de54fd483..8547983bd72f 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -407,7 +407,7 @@ static int bcm5481x_set_brrmode(struct phy_device *phydev, bool on)
static int bcm54811_config_init(struct phy_device *phydev)
{
struct bcm54xx_phy_priv *priv = phydev->priv;
- int err, reg;
+ int err, reg, exp_sync_ethernet;
/* Enable CLK125 MUX on LED4 if ref clock is enabled. */
if (!(phydev->dev_flags & PHY_BRCM_RX_REFCLK_UNUSED)) {
@@ -424,6 +424,18 @@ static int bcm54811_config_init(struct phy_device *phydev)
if (priv->brr_mode)
phydev->autoneg = 0;
+ /* Enable MII Lite (No TXER, RXER, CRS, COL) if configured */
+ 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);
}
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
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net v4 4/4] net: phy: bcm54811: Fix the PHY initialization
2025-06-30 13:58 [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
` (2 preceding siblings ...)
2025-06-30 13:58 ` [PATCH net v4 3/4] net: phy: bcm5481x: MII-Lite activation Kamil Horák - 2N
@ 2025-06-30 13:58 ` Kamil Horák - 2N
2025-06-30 17:07 ` Florian Fainelli
2025-06-30 17:06 ` [PATCH net v4 0/4] " Florian Fainelli
4 siblings, 1 reply; 10+ messages in thread
From: Kamil Horák - 2N @ 2025-06-30 13:58 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 | 25 +++++++++++++++++++++----
include/linux/brcmphy.h | 1 +
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index 8547983bd72f..a60e58ef90c4 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -667,7 +667,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);
@@ -688,9 +688,19 @@ 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.
+ */
+ if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54811)
+ aneg = 0;
+ else
+ aneg = val & LRESR_LDSABILITY;
+
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);
@@ -747,8 +757,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] 10+ messages in thread
* Re: [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization
2025-06-30 13:58 [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
` (3 preceding siblings ...)
2025-06-30 13:58 ` [PATCH net v4 4/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
@ 2025-06-30 17:06 ` Florian Fainelli
4 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2025-06-30 17:06 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, robh, andrew+netdev
On 6/30/25 06:58, Kamil Horák - 2N wrote:
> 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 - Activation of MII-Lite interface mode on Broadcom bcm5481x
> PHYs
>
> PATCH 4 - 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.
> Also fix the LRE Status register reading, there is another bit to
> be ignored on bcm54811.
>
> Changes in v2:
> - Applied reviewers' comments
> - Divided into more patches (separated common and Broadcom
> PHY specific code)
>
> Changes in v3:
> - Added MII-Lite documentation
>
> Changes in v4:
> - Added missing Fixes headers
Kamil, you posted your v4 less than 24 hrs after the v3, please don't do
that per:
https://www.kernel.org/doc/html/next/process/maintainer-netdev.html#updating-patch-status
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode
2025-06-30 13:58 ` [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
@ 2025-06-30 17:06 ` Florian Fainelli
0 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2025-06-30 17:06 UTC (permalink / raw)
To: Kamil Horák - 2N, 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,
Maxime Chevallier
On 6/30/25 06:58, 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 MII-Lite interface mode, especially for Broadcom two-wire PHYs.
>
> Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net v4 2/4] dt-bindings: ethernet-phy: add MII-Lite phy interface type
2025-06-30 13:58 ` [PATCH net v4 2/4] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
@ 2025-06-30 17:06 ` Florian Fainelli
0 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2025-06-30 17:06 UTC (permalink / raw)
To: Kamil Horák - 2N, 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,
Maxime Chevallier
On 6/30/25 06:58, 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.
>
> Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net v4 3/4] net: phy: bcm5481x: MII-Lite activation
2025-06-30 13:58 ` [PATCH net v4 3/4] net: phy: bcm5481x: MII-Lite activation Kamil Horák - 2N
@ 2025-06-30 17:06 ` Florian Fainelli
0 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2025-06-30 17:06 UTC (permalink / raw)
To: Kamil Horák - 2N, 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 6/30/25 06:58, Kamil Horák - 2N wrote:
> Broadcom PHYs featuring the BroadR-Reach two-wire link mode are usually
> capable to operate in simplified MII mode, without TXER, RXER, CRS and
> COL signals as defined for the MII. The absence of COL signal makes
> half-duplex link modes impossible, however, the BroadR-Reach modes are
> all full-duplex only.
> Depending on the IC encapsulation, there exist MII-Lite-only PHYs such
> as bcm54811 in MLP. The PHY itself is hardware-strapped to select among
> multiple RGMII and MII-Lite modes, but the MII-Lite mode must be also
> activated by software.
>
> 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>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net v4 4/4] net: phy: bcm54811: Fix the PHY initialization
2025-06-30 13:58 ` [PATCH net v4 4/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
@ 2025-06-30 17:07 ` Florian Fainelli
0 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2025-06-30 17:07 UTC (permalink / raw)
To: Kamil Horák - 2N, 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 6/30/25 06:58, Kamil Horák - 2N wrote:
> 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>
> ---
[snip]
> 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
This register is not used in this patch or previous ones, please drop
it, with that:
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-06-30 17:07 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-30 13:58 [PATCH net v4 0/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-30 13:58 ` [PATCH net v4 1/4] net: phy: MII-Lite PHY interface mode Kamil Horák - 2N
2025-06-30 17:06 ` Florian Fainelli
2025-06-30 13:58 ` [PATCH net v4 2/4] dt-bindings: ethernet-phy: add MII-Lite phy interface type Kamil Horák - 2N
2025-06-30 17:06 ` Florian Fainelli
2025-06-30 13:58 ` [PATCH net v4 3/4] net: phy: bcm5481x: MII-Lite activation Kamil Horák - 2N
2025-06-30 17:06 ` Florian Fainelli
2025-06-30 13:58 ` [PATCH net v4 4/4] net: phy: bcm54811: Fix the PHY initialization Kamil Horák - 2N
2025-06-30 17:07 ` Florian Fainelli
2025-06-30 17:06 ` [PATCH net v4 0/4] " Florian Fainelli
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).