Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1673245

[PATCH 07/11] net: stmmac: dwmac-rk: Add internal phy supprot for rk3328

From David Wu <david.wu@rock-chips.com>
Newsgroups linux.kernel
Subject [PATCH 07/11] net: stmmac: dwmac-rk: Add internal phy supprot for rk3328
Date 2017-06-23 07:00 +0200
Message-ID <tVoRj-62v-9@gated-at.bofh.it> (permalink)
References <tVoxX-5VY-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


There are two mac controllers in the rk3328, the one connects
to external phy, and the other one connects to internal phy.
Like the mac of external phy, the internal phy's mac also needs to
configure the related mac registers at GRF.

Signed-off-by: David Wu <david.wu@rock-chips.com>
---
 drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index 90e1fc8..c4c58a2 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -323,6 +323,8 @@ static void rk3288_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed)
 
 #define RK3328_GRF_MAC_CON0	0x0900
 #define RK3328_GRF_MAC_CON1	0x0904
+#define RK3328_GRF_MAC_CON2	0x0908
+#define RK3328_GRF_MACPHY_CON1	0xb04
 
 /* RK3328_GRF_MAC_CON0 */
 #define RK3328_GMAC_CLK_RX_DL_CFG(val)	HIWORD_UPDATE(val, 0x7F, 7)
@@ -349,6 +351,9 @@ static void rk3288_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed)
 #define RK3328_GMAC_RXCLK_DLY_ENABLE	GRF_BIT(1)
 #define RK3328_GMAC_RXCLK_DLY_DISABLE	GRF_CLR_BIT(0)
 
+/* RK3328_GRF_MACPHY_CON1 */
+#define RK3328_MACPHY_RMII_MODE		GRF_BIT(9)
+
 static void rk3328_set_to_rgmii(struct rk_priv_data *bsp_priv,
 				int tx_delay, int rx_delay)
 {
@@ -373,13 +378,17 @@ static void rk3328_set_to_rgmii(struct rk_priv_data *bsp_priv,
 static void rk3328_set_to_rmii(struct rk_priv_data *bsp_priv)
 {
 	struct device *dev = &bsp_priv->pdev->dev;
+	unsigned int reg;
 
 	if (IS_ERR(bsp_priv->grf)) {
 		dev_err(dev, "Missing rockchip,grf property\n");
 		return;
 	}
 
-	regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1,
+	reg = bsp_priv->internal_phy ? RK3328_GRF_MAC_CON2 :
+		  RK3328_GRF_MAC_CON1;
+
+	regmap_write(bsp_priv->grf, reg,
 		     RK3328_GMAC_PHY_INTF_SEL_RMII |
 		     RK3328_GMAC_RMII_MODE);
 }
@@ -409,29 +418,40 @@ static void rk3328_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed)
 static void rk3328_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed)
 {
 	struct device *dev = &bsp_priv->pdev->dev;
+	unsigned int reg;
 
 	if (IS_ERR(bsp_priv->grf)) {
 		dev_err(dev, "Missing rockchip,grf property\n");
 		return;
 	}
 
+	reg = bsp_priv->internal_phy ? RK3328_GRF_MAC_CON2 :
+		  RK3328_GRF_MAC_CON1;
+
 	if (speed == 10)
-		regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1,
+		regmap_write(bsp_priv->grf, reg,
 			     RK3328_GMAC_RMII_CLK_2_5M |
 			     RK3328_GMAC_SPEED_10M);
 	else if (speed == 100)
-		regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1,
+		regmap_write(bsp_priv->grf, reg,
 			     RK3328_GMAC_RMII_CLK_25M |
 			     RK3328_GMAC_SPEED_100M);
 	else
 		dev_err(dev, "unknown speed value for RMII! speed=%d", speed);
 }
 
+static void rk3328_internal_phy_powerup(struct rk_priv_data *priv)
+{
+	regmap_write(priv->grf, RK3328_GRF_MACPHY_CON1,
+		     RK3328_MACPHY_RMII_MODE);
+}
+
 static const struct rk_gmac_ops rk3328_ops = {
 	.set_to_rgmii = rk3328_set_to_rgmii,
 	.set_to_rmii = rk3328_set_to_rmii,
 	.set_rgmii_speed = rk3328_set_rgmii_speed,
 	.set_rmii_speed = rk3328_set_rmii_speed,
+	.internal_phy_powerup =  rk3328_internal_phy_powerup,
 };
 
 #define RK3366_GRF_SOC_CON6	0x0418
-- 
1.9.1

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/11] Add the mac internal ephy support David Wu <david.wu@rock-chips.com> - 2017-06-23 06:40 +0200
  [PATCH 03/11] arm64: defconfig: Enable CONFIG_ROCKCHIP_MAC_PHY David Wu <david.wu@rock-chips.com> - 2017-06-23 06:50 +0200
  [PATCH 04/11] net: stmmac: dwmac-rk: Remove unwanted code for rk3328_set_to_rmii() David Wu <david.wu@rock-chips.com> - 2017-06-23 06:50 +0200
    Re: [PATCH 04/11] net: stmmac: dwmac-rk: Remove unwanted code for  rk3328_set_to_rmii() Andrew Lunn <andrew@lunn.ch> - 2017-06-24 04:30 +0200
  [PATCH 09/11] ARM: dts: rk3228-evb: Enable the internal phy for gmac David Wu <david.wu@rock-chips.com> - 2017-06-23 07:00 +0200
  [PATCH 08/11] ARM: dts: rk322x: Add support internal phy for gmac David Wu <david.wu@rock-chips.com> - 2017-06-23 07:00 +0200
  [PATCH 07/11] net: stmmac: dwmac-rk: Add internal phy supprot for rk3328 David Wu <david.wu@rock-chips.com> - 2017-06-23 07:00 +0200
  [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support David Wu <david.wu@rock-chips.com> - 2017-06-23 07:00 +0200
    Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support Florian Fainelli <f.fainelli@gmail.com> - 2017-06-23 18:30 +0200
      Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support "David.Wu" <david.wu@rock-chips.com> - 2017-06-27 16:30 +0200
        Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support Andrew Lunn <andrew@lunn.ch> - 2017-06-27 17:00 +0200
    Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support Heiko Stuebner <heiko@sntech.de> - 2017-06-23 19:30 +0200
      Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support "David.Wu" <david.wu@rock-chips.com> - 2017-06-27 16:40 +0200
        Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support Heiko Stuebner <heiko@sntech.de> - 2017-06-27 17:50 +0200
    Re: [PATCH 05/11] net: stmmac: dwmac-rk: Add internal phy support Andrew Lunn <andrew@lunn.ch> - 2017-06-24 04:40 +0200
  [PATCH 06/11] net: stmmac: dwmac-rk: Add internal phy support for rk3228 David Wu <david.wu@rock-chips.com> - 2017-06-23 07:00 +0200
  [PATCH 10/11] ARM64: dts: rockchip: Add gmac2phy node support for rk3328 David Wu <david.wu@rock-chips.com> - 2017-06-23 07:10 +0200
  [PATCH 11/11] ARM64: dts: rockchip: Enable gmac2phy for rk3328-evb David Wu <david.wu@rock-chips.com> - 2017-06-23 07:10 +0200

csiph-web