Commit e8e42230 authored by Antoine Tenart's avatar Antoine Tenart Committed by David S. Miller
Browse files

net: phy: mscc: add support for RGMII MAC mode



This patch adds support for connecting VSC8584 PHYs to the MAC using
RGMII.

Signed-off-by: default avatarAntoine Tenart <antoine.tenart@bootlin.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9096a03f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -241,6 +241,7 @@ enum rgmii_rx_clock_delay {
#define MAC_CFG_MASK			  0xc000
#define MAC_CFG_SGMII			  0x0000
#define MAC_CFG_QSGMII			  0x4000
#define MAC_CFG_RGMII			  0x8000

/* Test page Registers */
#define MSCC_PHY_TEST_PAGE_5		  5
+20 −12
Original line number Diff line number Diff line
@@ -1360,15 +1360,22 @@ static int vsc8584_config_init(struct phy_device *phydev)

	val = phy_base_read(phydev, MSCC_PHY_MAC_CFG_FASTLINK);
	val &= ~MAC_CFG_MASK;
	if (phydev->interface == PHY_INTERFACE_MODE_QSGMII)
	if (phydev->interface == PHY_INTERFACE_MODE_QSGMII) {
		val |= MAC_CFG_QSGMII;
	else
	} else if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
		val |= MAC_CFG_SGMII;
	} else if (phy_interface_is_rgmii(phydev)) {
		val |= MAC_CFG_RGMII;
	} else {
		ret = -EINVAL;
		goto err;
	}

	ret = phy_base_write(phydev, MSCC_PHY_MAC_CFG_FASTLINK, val);
	if (ret)
		goto err;

	if (!phy_interface_is_rgmii(phydev)) {
		val = PROC_CMD_MCB_ACCESS_MAC_CONF | PROC_CMD_RST_CONF_PORT |
			PROC_CMD_READ_MOD_WRITE_PORT;
		if (phydev->interface == PHY_INTERFACE_MODE_QSGMII)
@@ -1381,6 +1388,7 @@ static int vsc8584_config_init(struct phy_device *phydev)
			goto err;

		usleep_range(10000, 20000);
	}

	/* Disable SerDes for 100Base-FX */
	ret = vsc8584_cmd(phydev, PROC_CMD_FIBER_MEDIA_CONF |