Lines Matching refs:bsp_priv

30 	void (*set_to_rgmii)(struct rk_priv_data *bsp_priv,
32 void (*set_to_rmii)(struct rk_priv_data *bsp_priv);
33 void (*set_rgmii_speed)(struct rk_priv_data *bsp_priv, int speed);
34 void (*set_rmii_speed)(struct rk_priv_data *bsp_priv, int speed);
35 void (*integrated_phy_powerup)(struct rk_priv_data *bsp_priv);
89 static void px30_set_to_rmii(struct rk_priv_data *bsp_priv) in px30_set_to_rmii() argument
91 struct device *dev = &bsp_priv->pdev->dev; in px30_set_to_rmii()
93 if (IS_ERR(bsp_priv->grf)) { in px30_set_to_rmii()
98 regmap_write(bsp_priv->grf, PX30_GRF_GMAC_CON1, in px30_set_to_rmii()
102 static void px30_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in px30_set_rmii_speed() argument
104 struct device *dev = &bsp_priv->pdev->dev; in px30_set_rmii_speed()
107 if (IS_ERR(bsp_priv->clk_mac_speed)) { in px30_set_rmii_speed()
113 regmap_write(bsp_priv->grf, PX30_GRF_GMAC_CON1, in px30_set_rmii_speed()
116 ret = clk_set_rate(bsp_priv->clk_mac_speed, 2500000); in px30_set_rmii_speed()
121 regmap_write(bsp_priv->grf, PX30_GRF_GMAC_CON1, in px30_set_rmii_speed()
124 ret = clk_set_rate(bsp_priv->clk_mac_speed, 25000000); in px30_set_rmii_speed()
167 static void rk3128_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3128_set_to_rgmii() argument
170 struct device *dev = &bsp_priv->pdev->dev; in rk3128_set_to_rgmii()
172 if (IS_ERR(bsp_priv->grf)) { in rk3128_set_to_rgmii()
177 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_to_rgmii()
180 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON0, in rk3128_set_to_rgmii()
186 static void rk3128_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3128_set_to_rmii() argument
188 struct device *dev = &bsp_priv->pdev->dev; in rk3128_set_to_rmii()
190 if (IS_ERR(bsp_priv->grf)) { in rk3128_set_to_rmii()
195 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_to_rmii()
199 static void rk3128_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3128_set_rgmii_speed() argument
201 struct device *dev = &bsp_priv->pdev->dev; in rk3128_set_rgmii_speed()
203 if (IS_ERR(bsp_priv->grf)) { in rk3128_set_rgmii_speed()
209 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_rgmii_speed()
212 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_rgmii_speed()
215 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_rgmii_speed()
221 static void rk3128_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3128_set_rmii_speed() argument
223 struct device *dev = &bsp_priv->pdev->dev; in rk3128_set_rmii_speed()
225 if (IS_ERR(bsp_priv->grf)) { in rk3128_set_rmii_speed()
231 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_rmii_speed()
235 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, in rk3128_set_rmii_speed()
283 static void rk3228_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3228_set_to_rgmii() argument
286 struct device *dev = &bsp_priv->pdev->dev; in rk3228_set_to_rgmii()
288 if (IS_ERR(bsp_priv->grf)) { in rk3228_set_to_rgmii()
293 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_to_rgmii()
298 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON0, in rk3228_set_to_rgmii()
303 static void rk3228_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3228_set_to_rmii() argument
305 struct device *dev = &bsp_priv->pdev->dev; in rk3228_set_to_rmii()
307 if (IS_ERR(bsp_priv->grf)) { in rk3228_set_to_rmii()
312 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_to_rmii()
317 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, GRF_BIT(11)); in rk3228_set_to_rmii()
320 static void rk3228_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3228_set_rgmii_speed() argument
322 struct device *dev = &bsp_priv->pdev->dev; in rk3228_set_rgmii_speed()
324 if (IS_ERR(bsp_priv->grf)) { in rk3228_set_rgmii_speed()
330 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_rgmii_speed()
333 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_rgmii_speed()
336 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_rgmii_speed()
342 static void rk3228_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3228_set_rmii_speed() argument
344 struct device *dev = &bsp_priv->pdev->dev; in rk3228_set_rmii_speed()
346 if (IS_ERR(bsp_priv->grf)) { in rk3228_set_rmii_speed()
352 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_rmii_speed()
356 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, in rk3228_set_rmii_speed()
405 static void rk3288_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3288_set_to_rgmii() argument
408 struct device *dev = &bsp_priv->pdev->dev; in rk3288_set_to_rgmii()
410 if (IS_ERR(bsp_priv->grf)) { in rk3288_set_to_rgmii()
415 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_to_rgmii()
418 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON3, in rk3288_set_to_rgmii()
424 static void rk3288_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3288_set_to_rmii() argument
426 struct device *dev = &bsp_priv->pdev->dev; in rk3288_set_to_rmii()
428 if (IS_ERR(bsp_priv->grf)) { in rk3288_set_to_rmii()
433 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_to_rmii()
437 static void rk3288_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3288_set_rgmii_speed() argument
439 struct device *dev = &bsp_priv->pdev->dev; in rk3288_set_rgmii_speed()
441 if (IS_ERR(bsp_priv->grf)) { in rk3288_set_rgmii_speed()
447 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_rgmii_speed()
450 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_rgmii_speed()
453 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_rgmii_speed()
459 static void rk3288_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3288_set_rmii_speed() argument
461 struct device *dev = &bsp_priv->pdev->dev; in rk3288_set_rmii_speed()
463 if (IS_ERR(bsp_priv->grf)) { in rk3288_set_rmii_speed()
469 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_rmii_speed()
473 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, in rk3288_set_rmii_speed()
498 static void rk3308_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3308_set_to_rmii() argument
500 struct device *dev = &bsp_priv->pdev->dev; in rk3308_set_to_rmii()
502 if (IS_ERR(bsp_priv->grf)) { in rk3308_set_to_rmii()
507 regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, in rk3308_set_to_rmii()
511 static void rk3308_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3308_set_rmii_speed() argument
513 struct device *dev = &bsp_priv->pdev->dev; in rk3308_set_rmii_speed()
515 if (IS_ERR(bsp_priv->grf)) { in rk3308_set_rmii_speed()
521 regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, in rk3308_set_rmii_speed()
524 regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, in rk3308_set_rmii_speed()
569 static void rk3328_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3328_set_to_rgmii() argument
572 struct device *dev = &bsp_priv->pdev->dev; in rk3328_set_to_rgmii()
574 if (IS_ERR(bsp_priv->grf)) { in rk3328_set_to_rgmii()
579 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, in rk3328_set_to_rgmii()
585 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON0, in rk3328_set_to_rgmii()
590 static void rk3328_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3328_set_to_rmii() argument
592 struct device *dev = &bsp_priv->pdev->dev; in rk3328_set_to_rmii()
595 if (IS_ERR(bsp_priv->grf)) { in rk3328_set_to_rmii()
600 reg = bsp_priv->integrated_phy ? RK3328_GRF_MAC_CON2 : in rk3328_set_to_rmii()
603 regmap_write(bsp_priv->grf, reg, in rk3328_set_to_rmii()
608 static void rk3328_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3328_set_rgmii_speed() argument
610 struct device *dev = &bsp_priv->pdev->dev; in rk3328_set_rgmii_speed()
612 if (IS_ERR(bsp_priv->grf)) { in rk3328_set_rgmii_speed()
618 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, in rk3328_set_rgmii_speed()
621 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, in rk3328_set_rgmii_speed()
624 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, in rk3328_set_rgmii_speed()
630 static void rk3328_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3328_set_rmii_speed() argument
632 struct device *dev = &bsp_priv->pdev->dev; in rk3328_set_rmii_speed()
635 if (IS_ERR(bsp_priv->grf)) { in rk3328_set_rmii_speed()
640 reg = bsp_priv->integrated_phy ? RK3328_GRF_MAC_CON2 : in rk3328_set_rmii_speed()
644 regmap_write(bsp_priv->grf, reg, in rk3328_set_rmii_speed()
648 regmap_write(bsp_priv->grf, reg, in rk3328_set_rmii_speed()
697 static void rk3366_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3366_set_to_rgmii() argument
700 struct device *dev = &bsp_priv->pdev->dev; in rk3366_set_to_rgmii()
702 if (IS_ERR(bsp_priv->grf)) { in rk3366_set_to_rgmii()
707 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_to_rgmii()
710 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON7, in rk3366_set_to_rgmii()
716 static void rk3366_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3366_set_to_rmii() argument
718 struct device *dev = &bsp_priv->pdev->dev; in rk3366_set_to_rmii()
720 if (IS_ERR(bsp_priv->grf)) { in rk3366_set_to_rmii()
725 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_to_rmii()
729 static void rk3366_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3366_set_rgmii_speed() argument
731 struct device *dev = &bsp_priv->pdev->dev; in rk3366_set_rgmii_speed()
733 if (IS_ERR(bsp_priv->grf)) { in rk3366_set_rgmii_speed()
739 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_rgmii_speed()
742 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_rgmii_speed()
745 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_rgmii_speed()
751 static void rk3366_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3366_set_rmii_speed() argument
753 struct device *dev = &bsp_priv->pdev->dev; in rk3366_set_rmii_speed()
755 if (IS_ERR(bsp_priv->grf)) { in rk3366_set_rmii_speed()
761 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_rmii_speed()
765 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, in rk3366_set_rmii_speed()
808 static void rk3368_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3368_set_to_rgmii() argument
811 struct device *dev = &bsp_priv->pdev->dev; in rk3368_set_to_rgmii()
813 if (IS_ERR(bsp_priv->grf)) { in rk3368_set_to_rgmii()
818 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_to_rgmii()
821 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON16, in rk3368_set_to_rgmii()
827 static void rk3368_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3368_set_to_rmii() argument
829 struct device *dev = &bsp_priv->pdev->dev; in rk3368_set_to_rmii()
831 if (IS_ERR(bsp_priv->grf)) { in rk3368_set_to_rmii()
836 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_to_rmii()
840 static void rk3368_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3368_set_rgmii_speed() argument
842 struct device *dev = &bsp_priv->pdev->dev; in rk3368_set_rgmii_speed()
844 if (IS_ERR(bsp_priv->grf)) { in rk3368_set_rgmii_speed()
850 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_rgmii_speed()
853 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_rgmii_speed()
856 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_rgmii_speed()
862 static void rk3368_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3368_set_rmii_speed() argument
864 struct device *dev = &bsp_priv->pdev->dev; in rk3368_set_rmii_speed()
866 if (IS_ERR(bsp_priv->grf)) { in rk3368_set_rmii_speed()
872 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_rmii_speed()
876 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, in rk3368_set_rmii_speed()
919 static void rk3399_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3399_set_to_rgmii() argument
922 struct device *dev = &bsp_priv->pdev->dev; in rk3399_set_to_rgmii()
924 if (IS_ERR(bsp_priv->grf)) { in rk3399_set_to_rgmii()
929 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_to_rgmii()
932 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON6, in rk3399_set_to_rgmii()
938 static void rk3399_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3399_set_to_rmii() argument
940 struct device *dev = &bsp_priv->pdev->dev; in rk3399_set_to_rmii()
942 if (IS_ERR(bsp_priv->grf)) { in rk3399_set_to_rmii()
947 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_to_rmii()
951 static void rk3399_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3399_set_rgmii_speed() argument
953 struct device *dev = &bsp_priv->pdev->dev; in rk3399_set_rgmii_speed()
955 if (IS_ERR(bsp_priv->grf)) { in rk3399_set_rgmii_speed()
961 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_rgmii_speed()
964 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_rgmii_speed()
967 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_rgmii_speed()
973 static void rk3399_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rk3399_set_rmii_speed() argument
975 struct device *dev = &bsp_priv->pdev->dev; in rk3399_set_rmii_speed()
977 if (IS_ERR(bsp_priv->grf)) { in rk3399_set_rmii_speed()
983 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_rmii_speed()
987 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, in rk3399_set_rmii_speed()
1023 static void rk3568_set_to_rgmii(struct rk_priv_data *bsp_priv, in rk3568_set_to_rgmii() argument
1026 struct device *dev = &bsp_priv->pdev->dev; in rk3568_set_to_rgmii()
1029 if (IS_ERR(bsp_priv->grf)) { in rk3568_set_to_rgmii()
1034 con0 = (bsp_priv->id == 1) ? RK3568_GRF_GMAC1_CON0 : in rk3568_set_to_rgmii()
1036 con1 = (bsp_priv->id == 1) ? RK3568_GRF_GMAC1_CON1 : in rk3568_set_to_rgmii()
1039 regmap_write(bsp_priv->grf, con0, in rk3568_set_to_rgmii()
1043 regmap_write(bsp_priv->grf, con1, in rk3568_set_to_rgmii()
1049 static void rk3568_set_to_rmii(struct rk_priv_data *bsp_priv) in rk3568_set_to_rmii() argument
1051 struct device *dev = &bsp_priv->pdev->dev; in rk3568_set_to_rmii()
1054 if (IS_ERR(bsp_priv->grf)) { in rk3568_set_to_rmii()
1059 con1 = (bsp_priv->id == 1) ? RK3568_GRF_GMAC1_CON1 : in rk3568_set_to_rmii()
1061 regmap_write(bsp_priv->grf, con1, RK3568_GMAC_PHY_INTF_SEL_RMII); in rk3568_set_to_rmii()
1064 static void rk3568_set_gmac_speed(struct rk_priv_data *bsp_priv, int speed) in rk3568_set_gmac_speed() argument
1066 struct device *dev = &bsp_priv->pdev->dev; in rk3568_set_gmac_speed()
1085 ret = clk_set_rate(bsp_priv->clk_mac_speed, rate); in rk3568_set_gmac_speed()
1116 static void rv1108_set_to_rmii(struct rk_priv_data *bsp_priv) in rv1108_set_to_rmii() argument
1118 struct device *dev = &bsp_priv->pdev->dev; in rv1108_set_to_rmii()
1120 if (IS_ERR(bsp_priv->grf)) { in rv1108_set_to_rmii()
1125 regmap_write(bsp_priv->grf, RV1108_GRF_GMAC_CON0, in rv1108_set_to_rmii()
1129 static void rv1108_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) in rv1108_set_rmii_speed() argument
1131 struct device *dev = &bsp_priv->pdev->dev; in rv1108_set_rmii_speed()
1133 if (IS_ERR(bsp_priv->grf)) { in rv1108_set_rmii_speed()
1139 regmap_write(bsp_priv->grf, RV1108_GRF_GMAC_CON0, in rv1108_set_rmii_speed()
1143 regmap_write(bsp_priv->grf, RV1108_GRF_GMAC_CON0, in rv1108_set_rmii_speed()
1202 struct rk_priv_data *bsp_priv = plat->bsp_priv; in rk_gmac_clk_init() local
1203 struct device *dev = &bsp_priv->pdev->dev; in rk_gmac_clk_init()
1206 bsp_priv->clk_enabled = false; in rk_gmac_clk_init()
1208 bsp_priv->mac_clk_rx = devm_clk_get(dev, "mac_clk_rx"); in rk_gmac_clk_init()
1209 if (IS_ERR(bsp_priv->mac_clk_rx)) in rk_gmac_clk_init()
1213 bsp_priv->mac_clk_tx = devm_clk_get(dev, "mac_clk_tx"); in rk_gmac_clk_init()
1214 if (IS_ERR(bsp_priv->mac_clk_tx)) in rk_gmac_clk_init()
1218 bsp_priv->aclk_mac = devm_clk_get(dev, "aclk_mac"); in rk_gmac_clk_init()
1219 if (IS_ERR(bsp_priv->aclk_mac)) in rk_gmac_clk_init()
1223 bsp_priv->pclk_mac = devm_clk_get(dev, "pclk_mac"); in rk_gmac_clk_init()
1224 if (IS_ERR(bsp_priv->pclk_mac)) in rk_gmac_clk_init()
1228 bsp_priv->clk_mac = devm_clk_get(dev, "stmmaceth"); in rk_gmac_clk_init()
1229 if (IS_ERR(bsp_priv->clk_mac)) in rk_gmac_clk_init()
1233 if (bsp_priv->phy_iface == PHY_INTERFACE_MODE_RMII) { in rk_gmac_clk_init()
1234 bsp_priv->clk_mac_ref = devm_clk_get(dev, "clk_mac_ref"); in rk_gmac_clk_init()
1235 if (IS_ERR(bsp_priv->clk_mac_ref)) in rk_gmac_clk_init()
1239 if (!bsp_priv->clock_input) { in rk_gmac_clk_init()
1240 bsp_priv->clk_mac_refout = in rk_gmac_clk_init()
1242 if (IS_ERR(bsp_priv->clk_mac_refout)) in rk_gmac_clk_init()
1248 bsp_priv->clk_mac_speed = devm_clk_get(dev, "clk_mac_speed"); in rk_gmac_clk_init()
1249 if (IS_ERR(bsp_priv->clk_mac_speed)) in rk_gmac_clk_init()
1252 if (bsp_priv->clock_input) { in rk_gmac_clk_init()
1255 if (bsp_priv->phy_iface == PHY_INTERFACE_MODE_RMII) in rk_gmac_clk_init()
1256 clk_set_rate(bsp_priv->clk_mac, 50000000); in rk_gmac_clk_init()
1259 if (plat->phy_node && bsp_priv->integrated_phy) { in rk_gmac_clk_init()
1260 bsp_priv->clk_phy = of_clk_get(plat->phy_node, 0); in rk_gmac_clk_init()
1261 if (IS_ERR(bsp_priv->clk_phy)) { in rk_gmac_clk_init()
1262 ret = PTR_ERR(bsp_priv->clk_phy); in rk_gmac_clk_init()
1266 clk_set_rate(bsp_priv->clk_phy, 50000000); in rk_gmac_clk_init()
1272 static int gmac_clk_enable(struct rk_priv_data *bsp_priv, bool enable) in gmac_clk_enable() argument
1274 int phy_iface = bsp_priv->phy_iface; in gmac_clk_enable()
1277 if (!bsp_priv->clk_enabled) { in gmac_clk_enable()
1279 if (!IS_ERR(bsp_priv->mac_clk_rx)) in gmac_clk_enable()
1281 bsp_priv->mac_clk_rx); in gmac_clk_enable()
1283 if (!IS_ERR(bsp_priv->clk_mac_ref)) in gmac_clk_enable()
1285 bsp_priv->clk_mac_ref); in gmac_clk_enable()
1287 if (!IS_ERR(bsp_priv->clk_mac_refout)) in gmac_clk_enable()
1289 bsp_priv->clk_mac_refout); in gmac_clk_enable()
1292 if (!IS_ERR(bsp_priv->clk_phy)) in gmac_clk_enable()
1293 clk_prepare_enable(bsp_priv->clk_phy); in gmac_clk_enable()
1295 if (!IS_ERR(bsp_priv->aclk_mac)) in gmac_clk_enable()
1296 clk_prepare_enable(bsp_priv->aclk_mac); in gmac_clk_enable()
1298 if (!IS_ERR(bsp_priv->pclk_mac)) in gmac_clk_enable()
1299 clk_prepare_enable(bsp_priv->pclk_mac); in gmac_clk_enable()
1301 if (!IS_ERR(bsp_priv->mac_clk_tx)) in gmac_clk_enable()
1302 clk_prepare_enable(bsp_priv->mac_clk_tx); in gmac_clk_enable()
1304 if (!IS_ERR(bsp_priv->clk_mac_speed)) in gmac_clk_enable()
1305 clk_prepare_enable(bsp_priv->clk_mac_speed); in gmac_clk_enable()
1312 bsp_priv->clk_enabled = true; in gmac_clk_enable()
1315 if (bsp_priv->clk_enabled) { in gmac_clk_enable()
1317 clk_disable_unprepare(bsp_priv->mac_clk_rx); in gmac_clk_enable()
1319 clk_disable_unprepare(bsp_priv->clk_mac_ref); in gmac_clk_enable()
1321 clk_disable_unprepare(bsp_priv->clk_mac_refout); in gmac_clk_enable()
1324 clk_disable_unprepare(bsp_priv->clk_phy); in gmac_clk_enable()
1326 clk_disable_unprepare(bsp_priv->aclk_mac); in gmac_clk_enable()
1328 clk_disable_unprepare(bsp_priv->pclk_mac); in gmac_clk_enable()
1330 clk_disable_unprepare(bsp_priv->mac_clk_tx); in gmac_clk_enable()
1332 clk_disable_unprepare(bsp_priv->clk_mac_speed); in gmac_clk_enable()
1337 bsp_priv->clk_enabled = false; in gmac_clk_enable()
1344 static int phy_power_on(struct rk_priv_data *bsp_priv, bool enable) in phy_power_on() argument
1346 struct regulator *ldo = bsp_priv->regulator; in phy_power_on()
1348 struct device *dev = &bsp_priv->pdev->dev; in phy_power_on()
1370 struct rk_priv_data *bsp_priv; in rk_gmac_setup() local
1377 bsp_priv = devm_kzalloc(dev, sizeof(*bsp_priv), GFP_KERNEL); in rk_gmac_setup()
1378 if (!bsp_priv) in rk_gmac_setup()
1381 of_get_phy_mode(dev->of_node, &bsp_priv->phy_iface); in rk_gmac_setup()
1382 bsp_priv->ops = ops; in rk_gmac_setup()
1393 bsp_priv->id = i; in rk_gmac_setup()
1400 bsp_priv->regulator = devm_regulator_get_optional(dev, "phy"); in rk_gmac_setup()
1401 if (IS_ERR(bsp_priv->regulator)) { in rk_gmac_setup()
1402 if (PTR_ERR(bsp_priv->regulator) == -EPROBE_DEFER) { in rk_gmac_setup()
1407 bsp_priv->regulator = NULL; in rk_gmac_setup()
1413 bsp_priv->clock_input = true; in rk_gmac_setup()
1418 bsp_priv->clock_input = true; in rk_gmac_setup()
1420 bsp_priv->clock_input = false; in rk_gmac_setup()
1425 bsp_priv->tx_delay = 0x30; in rk_gmac_setup()
1428 bsp_priv->tx_delay); in rk_gmac_setup()
1431 bsp_priv->tx_delay = value; in rk_gmac_setup()
1436 bsp_priv->rx_delay = 0x10; in rk_gmac_setup()
1439 bsp_priv->rx_delay); in rk_gmac_setup()
1442 bsp_priv->rx_delay = value; in rk_gmac_setup()
1445 bsp_priv->grf = syscon_regmap_lookup_by_phandle(dev->of_node, in rk_gmac_setup()
1449 bsp_priv->integrated_phy = of_property_read_bool(plat->phy_node, in rk_gmac_setup()
1451 if (bsp_priv->integrated_phy) { in rk_gmac_setup()
1452 bsp_priv->phy_reset = of_reset_control_get(plat->phy_node, NULL); in rk_gmac_setup()
1453 if (IS_ERR(bsp_priv->phy_reset)) { in rk_gmac_setup()
1455 bsp_priv->phy_reset = NULL; in rk_gmac_setup()
1460 bsp_priv->integrated_phy ? "yes" : "no"); in rk_gmac_setup()
1462 bsp_priv->pdev = pdev; in rk_gmac_setup()
1464 return bsp_priv; in rk_gmac_setup()
1467 static int rk_gmac_check_ops(struct rk_priv_data *bsp_priv) in rk_gmac_check_ops() argument
1469 switch (bsp_priv->phy_iface) { in rk_gmac_check_ops()
1474 if (!bsp_priv->ops->set_to_rgmii) in rk_gmac_check_ops()
1478 if (!bsp_priv->ops->set_to_rmii) in rk_gmac_check_ops()
1482 dev_err(&bsp_priv->pdev->dev, in rk_gmac_check_ops()
1483 "unsupported interface %d", bsp_priv->phy_iface); in rk_gmac_check_ops()
1488 static int rk_gmac_powerup(struct rk_priv_data *bsp_priv) in rk_gmac_powerup() argument
1491 struct device *dev = &bsp_priv->pdev->dev; in rk_gmac_powerup()
1493 ret = rk_gmac_check_ops(bsp_priv); in rk_gmac_powerup()
1497 ret = gmac_clk_enable(bsp_priv, true); in rk_gmac_powerup()
1502 switch (bsp_priv->phy_iface) { in rk_gmac_powerup()
1505 bsp_priv->ops->set_to_rgmii(bsp_priv, bsp_priv->tx_delay, in rk_gmac_powerup()
1506 bsp_priv->rx_delay); in rk_gmac_powerup()
1510 bsp_priv->ops->set_to_rgmii(bsp_priv, 0, 0); in rk_gmac_powerup()
1514 bsp_priv->ops->set_to_rgmii(bsp_priv, bsp_priv->tx_delay, 0); in rk_gmac_powerup()
1518 bsp_priv->ops->set_to_rgmii(bsp_priv, 0, bsp_priv->rx_delay); in rk_gmac_powerup()
1522 bsp_priv->ops->set_to_rmii(bsp_priv); in rk_gmac_powerup()
1528 ret = phy_power_on(bsp_priv, true); in rk_gmac_powerup()
1530 gmac_clk_enable(bsp_priv, false); in rk_gmac_powerup()
1536 if (bsp_priv->integrated_phy) in rk_gmac_powerup()
1537 rk_gmac_integrated_phy_powerup(bsp_priv); in rk_gmac_powerup()
1555 struct rk_priv_data *bsp_priv = priv; in rk_fix_speed() local
1556 struct device *dev = &bsp_priv->pdev->dev; in rk_fix_speed()
1558 switch (bsp_priv->phy_iface) { in rk_fix_speed()
1563 if (bsp_priv->ops->set_rgmii_speed) in rk_fix_speed()
1564 bsp_priv->ops->set_rgmii_speed(bsp_priv, speed); in rk_fix_speed()
1567 if (bsp_priv->ops->set_rmii_speed) in rk_fix_speed()
1568 bsp_priv->ops->set_rmii_speed(bsp_priv, speed); in rk_fix_speed()
1571 dev_err(dev, "unsupported interface %d", bsp_priv->phy_iface); in rk_fix_speed()
1603 plat_dat->bsp_priv = rk_gmac_setup(pdev, plat_dat, data); in rk_gmac_probe()
1604 if (IS_ERR(plat_dat->bsp_priv)) { in rk_gmac_probe()
1605 ret = PTR_ERR(plat_dat->bsp_priv); in rk_gmac_probe()
1613 ret = rk_gmac_powerup(plat_dat->bsp_priv); in rk_gmac_probe()
1624 rk_gmac_powerdown(plat_dat->bsp_priv); in rk_gmac_probe()
1633 struct rk_priv_data *bsp_priv = get_stmmac_bsp_priv(&pdev->dev); in rk_gmac_remove() local
1636 rk_gmac_powerdown(bsp_priv); in rk_gmac_remove()
1644 struct rk_priv_data *bsp_priv = get_stmmac_bsp_priv(dev); in rk_gmac_suspend() local
1649 rk_gmac_powerdown(bsp_priv); in rk_gmac_suspend()
1650 bsp_priv->suspended = true; in rk_gmac_suspend()
1658 struct rk_priv_data *bsp_priv = get_stmmac_bsp_priv(dev); in rk_gmac_resume() local
1661 if (bsp_priv->suspended) { in rk_gmac_resume()
1662 rk_gmac_powerup(bsp_priv); in rk_gmac_resume()
1663 bsp_priv->suspended = false; in rk_gmac_resume()