#define DP83867_STRAP_STS1 0x006E
#define DP83867_RGMIIDCTL 0x0086
#define DP83867_IO_MUX_CFG 0x0170
+#define DP83867_SGMIITYPE 0x00D3
#define DP83867_SW_RESET BIT(15)
#define DP83867_SW_RESTART BIT(14)
/* CFG4 bits */
#define DP83867_CFG4_PORT_MIRROR_EN BIT(0)
+#define DP83867_SGMIICLK_EN 0x4000
+
enum {
DP83867_PORT_MIRRORING_KEEP,
DP83867_PORT_MIRRORING_EN,
bool rxctrl_strap_quirk;
int port_mirroring;
int clk_output_sel;
+ bool wiremode_6;
};
/**
if (ofnode_read_bool(node, "enet-phy-lane-no-swap"))
dp83867->port_mirroring = DP83867_PORT_MIRRORING_DIS;
+ /*
+ * 6-wire mode enables differential SGMII clock to MAC
+ */
+ if (dev_read_bool(phydev->dev, "ti,6-wire-mode"))
+ dp83867->wiremode_6 = true;
/* Clock output selection if muxing property is set */
if (dp83867->clk_output_sel != DP83867_CLK_O_SEL_REF_CLK) {
}
} else if (phy_interface_is_sgmii(phydev)) {
+ if (dp83867->wiremode_6)
+ phy_write_mmd_indirect(phydev, DP83867_SGMIITYPE,
+ DP83867_DEVADDR, phydev->addr,
+ DP83867_SGMIICLK_EN);
phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR,
(BMCR_ANENABLE | BMCR_FULLDPLX | BMCR_SPEED1000));