Commit bc1a65eb authored by Jonas Gorski's avatar Jonas Gorski Committed by Paolo Abeni
Browse files

net: dsa: b53: do not touch DLL_IQQD on bcm53115

According to OpenMDK, bit 2 of the RGMII register has a different
meaning for BCM53115 [1]:

"DLL_IQQD         1: In the IDDQ mode, power is down0: Normal function
                  mode"

Configuring RGMII delay works without setting this bit, so let's keep it
at the default. For other chips, we always set it, so not clearing it
is not an issue.

One would assume BCM53118 works the same, but OpenMDK is not quite sure
what this bit actually means [2]:

"BYPASS_IMP_2NS_DEL #1: In the IDDQ mode, power is down#0: Normal
                    function mode1: Bypass dll65_2ns_del IP0: Use
                    dll65_2ns_del IP"

So lets keep setting it for now.

[1] https://github.com/Broadcom-Network-Switching-Software/OpenMDK/blob/master/cdk/PKG/chip/bcm53115/bcm53115_a0_defs.h#L19871
[2] https://github.com/Broadcom-Network-Switching-Software/OpenMDK/blob/master/cdk/PKG/chip/bcm53118/bcm53118_a0_defs.h#L14392



Fixes: 967dd82f ("net: dsa: b53: Add support for Broadcom RoboSwitch")
Signed-off-by: default avatarJonas Gorski <jonas.gorski@gmail.com>
Link: https://patch.msgid.link/20250602193953.1010487-6-jonas.gorski@gmail.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 5ea0d42c
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1354,8 +1354,7 @@ static void b53_adjust_531x5_rgmii(struct dsa_switch *ds, int port,
	 * tx_clk aligned timing (restoring to reset defaults)
	 */
	b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);
	rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC |
			RGMII_CTRL_TIMING_SEL);
	rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);

	/* PHY_INTERFACE_MODE_RGMII_TXID means TX internal delay, make
	 * sure that we enable the port TX clock internal delay to
@@ -1375,7 +1374,10 @@ static void b53_adjust_531x5_rgmii(struct dsa_switch *ds, int port,
		rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
	if (interface == PHY_INTERFACE_MODE_RGMII)
		rgmii_ctrl |= RGMII_CTRL_DLL_TXC | RGMII_CTRL_DLL_RXC;

	if (dev->chip_id != BCM53115_DEVICE_ID)
		rgmii_ctrl |= RGMII_CTRL_TIMING_SEL;

	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);

	dev_info(ds->dev, "Configured port %d for %s\n", port,