Skip to content

Commit

Permalink
ramips: mt7620: add ephy-disable option to switch driver
Browse files Browse the repository at this point in the history
Add back the register write to disable internal PHYs
as a separate option in the code that can be set using a DTS property.

Set the option to true by default
when an external mt7530 switch is identified.

This makes the driver more in sync with original SDK code
while keeping the lines separated into different options
to accommodate any board with any PHY layout.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
  • Loading branch information
mpratt14 authored and 981213 committed Jun 23, 2021
1 parent 6972e49 commit cc6fd6f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
14 changes: 12 additions & 2 deletions target/linux/ramips/files/drivers/net/ethernet/ralink/gsw_mt7620.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,13 @@ static void mt7620_hw_init(struct mt7620_gsw *gsw)
/* Enable MIB stats */
mtk_switch_w32(gsw, mtk_switch_r32(gsw, GSW_REG_MIB_CNT_EN) | (1 << 1), GSW_REG_MIB_CNT_EN);

if (gsw->ephy_base) {
if (gsw->ephy_disable) {
mtk_switch_w32(gsw, mtk_switch_r32(gsw, GSW_REG_GPC1) |
(gsw->ephy_base << 16) | (0x1f << 24),
GSW_REG_GPC1);

pr_info("gsw: internal ephy disabled\n");
} else if (gsw->ephy_base) {
mtk_switch_w32(gsw, mtk_switch_r32(gsw, GSW_REG_GPC1) |
(gsw->ephy_base << 16),
GSW_REG_GPC1);
Expand Down Expand Up @@ -194,13 +200,17 @@ int mtk_gsw_init(struct fe_priv *priv)
gsw = platform_get_drvdata(pdev);
priv->soc->swpriv = gsw;

gsw->ephy_disable = of_property_read_bool(np, "mediatek,ephy-disable");

mdiobus_node = of_get_child_by_name(eth_node, "mdio-bus");
if (mdiobus_node) {
for_each_child_of_node(mdiobus_node, phy_node) {
id = of_get_property(phy_node, "reg", NULL);
if (id && (be32_to_cpu(*id) == 0x1f))
of_node_put(mdiobus_node);
gsw->ephy_disable = true;
}

of_node_put(mdiobus_node);
}

gsw->port4_ephy = !of_property_read_bool(np, "mediatek,port4-gmac");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ struct mt7620_gsw {
struct device *dev;
void __iomem *base;
int irq;
bool ephy_disable;
bool port4_ephy;
unsigned long int autopoll;
u16 ephy_base;
Expand Down

0 comments on commit cc6fd6f

Please sign in to comment.