Skip to content

Commit

Permalink
net: stmmac: support future possible different internal phy mode
Browse files Browse the repository at this point in the history
The current way to find if the phy is internal is to compare DT phy-mode
and emac_variant/internal_phy.
But it will negate a possible future SoC where an external PHY use the
same phy mode than the internal one.

By using phy-mode = "internal" we permit to have an external PHY with
the same mode than the internal one.

Reported-by: André Przywara <[email protected]>
Signed-off-by: Corentin Labbe <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
montjoie authored and davem330 committed Jun 29, 2017
1 parent eac306b commit 1c2fa5f
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
Original file line number Diff line number Diff line change
Expand Up @@ -638,7 +638,7 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
{
struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
struct device_node *node = priv->device->of_node;
int ret;
int ret, phy_interface;
u32 reg, val;

regmap_read(gmac->regmap, SYSCON_EMAC_REG, &val);
Expand Down Expand Up @@ -718,7 +718,11 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
if (gmac->variant->support_rmii)
reg &= ~SYSCON_RMII_EN;

switch (priv->plat->interface) {
phy_interface = priv->plat->interface;
/* if PHY is internal, select the mode (xMII) used by the SoC */
if (gmac->use_internal_phy)
phy_interface = gmac->variant->internal_phy;
switch (phy_interface) {
case PHY_INTERFACE_MODE_MII:
/* default */
break;
Expand Down Expand Up @@ -932,7 +936,7 @@ static int sun8i_dwmac_probe(struct platform_device *pdev)
}

plat_dat->interface = of_get_phy_mode(dev->of_node);
if (plat_dat->interface == gmac->variant->internal_phy) {
if (plat_dat->interface == PHY_INTERFACE_MODE_INTERNAL) {
dev_info(&pdev->dev, "Will use internal PHY\n");
gmac->use_internal_phy = true;
gmac->ephy_clk = of_clk_get(plat_dat->phy_node, 0);
Expand Down

0 comments on commit 1c2fa5f

Please sign in to comment.