Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'net-stmmac-rk-simplify-per-soc-configuration'

Russell King says:

====================
net: stmmac: rk: simplify per-SoC configuration [part]
====================

Link: https://patch.msgid.link/aXdTi4ViCkhhXvFI@shell.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+32 -24
+32 -24
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
··· 162 162 ((rx) ? soc##_GMAC_RXCLK_DLY_ENABLE : soc##_GMAC_RXCLK_DLY_DISABLE)) 163 163 164 164 #define RK_GRF_MACPHY_CON0 0xb00 165 - #define RK_GRF_MACPHY_CON1 0xb04 166 - #define RK_GRF_MACPHY_CON2 0xb08 167 - #define RK_GRF_MACPHY_CON3 0xb0c 168 - 169 165 #define RK_MACPHY_ENABLE GRF_BIT(0) 170 166 #define RK_MACPHY_DISABLE GRF_CLR_BIT(0) 171 167 #define RK_MACPHY_CFG_CLK_50M GRF_BIT(14) 172 168 #define RK_GMAC2PHY_RMII_MODE GRF_FIELD(7, 6, 1) 169 + 170 + #define RK_GRF_MACPHY_CON1 0xb04 171 + 172 + #define RK_GRF_MACPHY_CON2 0xb08 173 173 #define RK_GRF_CON2_MACPHY_ID GRF_FIELD(15, 0, 0x1234) 174 + 175 + #define RK_GRF_MACPHY_CON3 0xb0c 174 176 #define RK_GRF_CON3_MACPHY_ID GRF_FIELD(5, 0, 0x35) 175 177 176 178 static void rk_gmac_integrated_ephy_powerup(struct rk_priv_data *priv) ··· 572 570 { 573 571 unsigned int reg; 574 572 575 - reg = bsp_priv->integrated_phy ? RK3328_GRF_MAC_CON2 : 576 - RK3328_GRF_MAC_CON1; 573 + reg = bsp_priv->id ? RK3328_GRF_MAC_CON2 : RK3328_GRF_MAC_CON1; 577 574 578 575 regmap_write(bsp_priv->grf, reg, 579 576 RK3328_GMAC_PHY_INTF_SEL(PHY_INTF_SEL_RMII) | ··· 592 591 { 593 592 unsigned int reg; 594 593 595 - if (interface == PHY_INTERFACE_MODE_RMII && bsp_priv->integrated_phy) 596 - reg = RK3328_GRF_MAC_CON2; 597 - else 598 - reg = RK3328_GRF_MAC_CON1; 594 + reg = bsp_priv->id ? RK3328_GRF_MAC_CON2 : RK3328_GRF_MAC_CON1; 599 595 600 596 return rk_set_reg_speed(bsp_priv, &rk3328_reg_speed_data, reg, 601 597 interface, speed); ··· 612 614 .set_speed = rk3328_set_speed, 613 615 .integrated_phy_powerup = rk3328_integrated_phy_powerup, 614 616 .integrated_phy_powerdown = rk_gmac_integrated_ephy_powerdown, 617 + 618 + .regs_valid = true, 619 + .regs = { 620 + 0xff540000, /* gmac2io */ 621 + 0xff550000, /* gmac2phy */ 622 + 0, /* sentinel */ 623 + }, 615 624 }; 616 625 617 626 #define RK3366_GRF_SOC_CON6 0x0418 ··· 1503 1498 return 0; 1504 1499 } 1505 1500 1506 - static int phy_power_on(struct rk_priv_data *bsp_priv, bool enable) 1501 + static int rk_phy_powerup(struct rk_priv_data *bsp_priv) 1507 1502 { 1508 1503 struct regulator *ldo = bsp_priv->regulator; 1509 - struct device *dev = bsp_priv->dev; 1510 1504 int ret; 1511 1505 1512 - if (enable) { 1513 - ret = regulator_enable(ldo); 1514 - if (ret) 1515 - dev_err(dev, "fail to enable phy-supply\n"); 1516 - } else { 1517 - ret = regulator_disable(ldo); 1518 - if (ret) 1519 - dev_err(dev, "fail to disable phy-supply\n"); 1520 - } 1506 + ret = regulator_enable(ldo); 1507 + if (ret) 1508 + dev_err(bsp_priv->dev, "fail to enable phy-supply\n"); 1521 1509 1522 - return 0; 1510 + return ret; 1511 + } 1512 + 1513 + static void rk_phy_powerdown(struct rk_priv_data *bsp_priv) 1514 + { 1515 + struct regulator *ldo = bsp_priv->regulator; 1516 + int ret; 1517 + 1518 + ret = regulator_disable(ldo); 1519 + if (ret) 1520 + dev_err(bsp_priv->dev, "fail to disable phy-supply\n"); 1523 1521 } 1524 1522 1525 1523 static struct rk_priv_data *rk_gmac_setup(struct platform_device *pdev, ··· 1700 1692 dev_err(dev, "NO interface defined!\n"); 1701 1693 } 1702 1694 1703 - ret = phy_power_on(bsp_priv, true); 1695 + ret = rk_phy_powerup(bsp_priv); 1704 1696 if (ret) { 1705 1697 gmac_clk_enable(bsp_priv, false); 1706 1698 return ret; ··· 1721 1713 1722 1714 pm_runtime_put_sync(gmac->dev); 1723 1715 1724 - phy_power_on(gmac, false); 1716 + rk_phy_powerdown(gmac); 1725 1717 gmac_clk_enable(gmac, false); 1726 1718 } 1727 1719