aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsean.wang@mediatek.com <sean.wang@mediatek.com>2016-08-16 01:55:13 -0400
committerDavid S. Miller <davem@davemloft.net>2016-08-16 02:02:44 -0400
commit8ca7f4fe0733342c862b8585dd6eb6521b9bf533 (patch)
tree409ef5ac9b0920028e0888b384675e077ff7ec45
parentd2fbdf76b85bcdfe57b8ef2ba09d20e8ada79abd (diff)
net: ethernet: mediatek: fix RMII mode and add REVMII supported by GMAC
The patch fixes up the incorrect setup of reduced MII (RMII) on GMAC and adds the supplement for the setup of reverse MII (REVMII) on GMAC , and rearranges the error handling for invalid PHY argument. Signed-off-by: Sean Wang <sean.wang@mediatek.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mediatek/mtk_eth_soc.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 003036114a1c..bd0ea056405f 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -245,12 +245,16 @@ static int mtk_phy_connect(struct mtk_mac *mac)
245 case PHY_INTERFACE_MODE_MII: 245 case PHY_INTERFACE_MODE_MII:
246 ge_mode = 1; 246 ge_mode = 1;
247 break; 247 break;
248 case PHY_INTERFACE_MODE_RMII: 248 case PHY_INTERFACE_MODE_REVMII:
249 ge_mode = 2; 249 ge_mode = 2;
250 break; 250 break;
251 case PHY_INTERFACE_MODE_RMII:
252 if (!mac->id)
253 goto err_phy;
254 ge_mode = 3;
255 break;
251 default: 256 default:
252 dev_err(eth->dev, "invalid phy_mode\n"); 257 goto err_phy;
253 return -1;
254 } 258 }
255 259
256 /* put the gmac into the right mode */ 260 /* put the gmac into the right mode */
@@ -272,6 +276,11 @@ static int mtk_phy_connect(struct mtk_mac *mac)
272 of_node_put(np); 276 of_node_put(np);
273 277
274 return 0; 278 return 0;
279
280err_phy:
281 of_node_put(np);
282 dev_err(eth->dev, "invalid phy_mode\n");
283 return -EINVAL;
275} 284}
276 285
277static int mtk_mdio_init(struct mtk_eth *eth) 286static int mtk_mdio_init(struct mtk_eth *eth)