net-next: mediatek: properly handle RGMII modes
authorJohn Crispin <john@phrozen.org>
Fri, 3 Jun 2016 08:17:09 +0000 (10:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Jun 2016 23:54:16 +0000 (19:54 -0400)
If an external Gigabit PHY is connected to either of the MACs we need to
be able to tell the PHY to use a delay. Not doing so will result in heavy
packet loss and/or data corruption when using PHYs such as the IC+ IP1001.
We tell the PHY which MII delay mode to use via the devictree.

The ethernet driver needs to be adapted to handle all 3 rgmii-*id modes
in the same way as normal rgmii when setting up the MAC.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: John Crispin <john@phrozen.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mediatek/mtk_eth_soc.c

index 231d28444a54d0967e4af560b727adfb3925600e..4763252bbf8557ac98c73876e685d4b7413e3f43 100644 (file)
@@ -236,6 +236,9 @@ static int mtk_phy_connect(struct mtk_mac *mac)
                return -ENODEV;
 
        switch (of_get_phy_mode(np)) {
+       case PHY_INTERFACE_MODE_RGMII_TXID:
+       case PHY_INTERFACE_MODE_RGMII_RXID:
+       case PHY_INTERFACE_MODE_RGMII_ID:
        case PHY_INTERFACE_MODE_RGMII:
                ge_mode = 0;
                break;