[PATCH] net/ftgmac100: Expose pause frames support and add comment about RGMII
Benjamin Herrenschmidt
benh at kernel.crashing.org
Wed Mar 29 14:48:51 AEDT 2017
Expose to the phydev that we support Pause frame and add a comment
mentioning how we handle RGMII clock delays via u-boot.
Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
---
This is the diff between v3 that was merged and v4 that I posted
shortly afterward.
drivers/net/ethernet/faraday/ftgmac100.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
index d42489c..5fe2827 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -111,8 +111,8 @@ struct ftgmac100 {
bool rx_pause;
bool aneg_pause;
- uint32_t rxdes0_edorr_mask;
- uint32_t txdes0_edotr_mask;
+ u32 rxdes0_edorr_mask;
+ u32 txdes0_edotr_mask;
};
static int ftgmac100_alloc_rx_buf(struct ftgmac100 *priv,
@@ -1390,6 +1390,12 @@ static int ftgmac100_mii_probe(struct ftgmac100 *priv, phy_interface_t intf)
return PTR_ERR(phydev);
}
+ /*
+ * Indicate that we support PAUSE frames (see comment in
+ * Documentation/networking/phy.txt as of v4.10
+ */
+ phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
+
phydev->advertising = phydev->supported;
phy_attached_info(phydev);
@@ -1490,6 +1496,21 @@ static int ftgmac100_setup_mdio(struct net_device *ndev)
iowrite32(reg, priv->base + FTGMAC100_OFFSET_REVR);
}
+ /*
+ * Note: When using RGMII mode, we simply pass "RGMII" to the
+ * PHY and assume that u-boot will have configured the
+ * clock delays appropriately for the system.
+ *
+ * The implementation of the MAC in the Aspeed chips
+ * supports sub-ns programable delays that need to be
+ * configured in the SCU while the MAC IP block is in
+ * reset.
+ *
+ * If needed in the future, we can support configuring this
+ * here based on device-tree properties but unless absolutely
+ * needed I'd rather avoid poking at the SCU registers from
+ * this driver.
+ */
if (np)
intf_prop = of_get_property(np, "phy-interface", NULL);
if (intf_prop) {
--
2.9.
More information about the openbmc
mailing list