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-dwmac-rk-validate-grf-and-peripheral-grf-during-probe'

Jonas Karlman says:

====================
net: stmmac: dwmac-rk: Validate GRF and peripheral GRF during probe

All Rockchip GMAC variants typically write to GRF regs to control e.g.
interface mode, speed and MAC rx/tx delay. Newer SoCs such as RK3576 and
RK3588 use a mix of GRF and peripheral GRF regs. These syscon regmaps is
located with help of a rockchip,grf and rockchip,php-grf phandle.

However, validating the rockchip,grf and rockchip,php-grf syscon regmap
is deferred until e.g. interface mode or speed is configured.

This series change to validate the GRF and peripheral GRF syscon regmap
at probe time to help simplify the SoC specific operations.

This should not introduce any backward compatibility issues as all
GMAC nodes have been added together with a rockchip,grf phandle (and
rockchip,php-grf where required) in their initial commit.
====================

Link: https://patch.msgid.link/20250308213720.2517944-1-jonas@kwiboo.se
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

+37 -254
+18 -3
Documentation/devicetree/bindings/net/rockchip-dwmac.yaml
··· 32 32 required: 33 33 - compatible 34 34 35 - allOf: 36 - - $ref: snps,dwmac.yaml# 37 - 38 35 properties: 39 36 compatible: 40 37 oneOf: ··· 111 114 - compatible 112 115 - clocks 113 116 - clock-names 117 + - rockchip,grf 118 + 119 + allOf: 120 + - $ref: snps,dwmac.yaml# 121 + 122 + - if: 123 + properties: 124 + compatible: 125 + contains: 126 + enum: 127 + - rockchip,rk3576-gmac 128 + - rockchip,rk3588-gmac 129 + then: 130 + required: 131 + - rockchip,php-grf 132 + else: 133 + properties: 134 + rockchip,php-grf: false 114 135 115 136 unevaluatedProperties: false 116 137
+19 -251
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
··· 33 33 void (*set_clock_selection)(struct rk_priv_data *bsp_priv, bool input, 34 34 bool enable); 35 35 void (*integrated_phy_powerup)(struct rk_priv_data *bsp_priv); 36 + bool php_grf_required; 36 37 bool regs_valid; 37 38 u32 regs[]; 38 39 }; ··· 102 101 103 102 static void px30_set_to_rmii(struct rk_priv_data *bsp_priv) 104 103 { 105 - struct device *dev = &bsp_priv->pdev->dev; 106 - 107 - if (IS_ERR(bsp_priv->grf)) { 108 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 109 - return; 110 - } 111 - 112 104 regmap_write(bsp_priv->grf, PX30_GRF_GMAC_CON1, 113 105 PX30_GMAC_PHY_INTF_SEL_RMII); 114 106 } ··· 175 181 static void rk3128_set_to_rgmii(struct rk_priv_data *bsp_priv, 176 182 int tx_delay, int rx_delay) 177 183 { 178 - struct device *dev = &bsp_priv->pdev->dev; 179 - 180 - if (IS_ERR(bsp_priv->grf)) { 181 - dev_err(dev, "Missing rockchip,grf property\n"); 182 - return; 183 - } 184 - 185 184 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, 186 185 RK3128_GMAC_PHY_INTF_SEL_RGMII | 187 186 RK3128_GMAC_RMII_MODE_CLR); ··· 186 199 187 200 static void rk3128_set_to_rmii(struct rk_priv_data *bsp_priv) 188 201 { 189 - struct device *dev = &bsp_priv->pdev->dev; 190 - 191 - if (IS_ERR(bsp_priv->grf)) { 192 - dev_err(dev, "Missing rockchip,grf property\n"); 193 - return; 194 - } 195 - 196 202 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, 197 203 RK3128_GMAC_PHY_INTF_SEL_RMII | RK3128_GMAC_RMII_MODE); 198 204 } ··· 193 213 static void rk3128_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 194 214 { 195 215 struct device *dev = &bsp_priv->pdev->dev; 196 - 197 - if (IS_ERR(bsp_priv->grf)) { 198 - dev_err(dev, "Missing rockchip,grf property\n"); 199 - return; 200 - } 201 216 202 217 if (speed == 10) 203 218 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, ··· 210 235 static void rk3128_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 211 236 { 212 237 struct device *dev = &bsp_priv->pdev->dev; 213 - 214 - if (IS_ERR(bsp_priv->grf)) { 215 - dev_err(dev, "Missing rockchip,grf property\n"); 216 - return; 217 - } 218 238 219 239 if (speed == 10) { 220 240 regmap_write(bsp_priv->grf, RK3128_GRF_MAC_CON1, ··· 267 297 static void rk3228_set_to_rgmii(struct rk_priv_data *bsp_priv, 268 298 int tx_delay, int rx_delay) 269 299 { 270 - struct device *dev = &bsp_priv->pdev->dev; 271 - 272 - if (IS_ERR(bsp_priv->grf)) { 273 - dev_err(dev, "Missing rockchip,grf property\n"); 274 - return; 275 - } 276 - 277 300 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, 278 301 RK3228_GMAC_PHY_INTF_SEL_RGMII | 279 302 RK3228_GMAC_RMII_MODE_CLR | ··· 279 316 280 317 static void rk3228_set_to_rmii(struct rk_priv_data *bsp_priv) 281 318 { 282 - struct device *dev = &bsp_priv->pdev->dev; 283 - 284 - if (IS_ERR(bsp_priv->grf)) { 285 - dev_err(dev, "Missing rockchip,grf property\n"); 286 - return; 287 - } 288 - 289 319 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, 290 320 RK3228_GMAC_PHY_INTF_SEL_RMII | 291 321 RK3228_GMAC_RMII_MODE); ··· 290 334 static void rk3228_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 291 335 { 292 336 struct device *dev = &bsp_priv->pdev->dev; 293 - 294 - if (IS_ERR(bsp_priv->grf)) { 295 - dev_err(dev, "Missing rockchip,grf property\n"); 296 - return; 297 - } 298 337 299 338 if (speed == 10) 300 339 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, ··· 307 356 static void rk3228_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 308 357 { 309 358 struct device *dev = &bsp_priv->pdev->dev; 310 - 311 - if (IS_ERR(bsp_priv->grf)) { 312 - dev_err(dev, "Missing rockchip,grf property\n"); 313 - return; 314 - } 315 359 316 360 if (speed == 10) 317 361 regmap_write(bsp_priv->grf, RK3228_GRF_MAC_CON1, ··· 365 419 static void rk3288_set_to_rgmii(struct rk_priv_data *bsp_priv, 366 420 int tx_delay, int rx_delay) 367 421 { 368 - struct device *dev = &bsp_priv->pdev->dev; 369 - 370 - if (IS_ERR(bsp_priv->grf)) { 371 - dev_err(dev, "Missing rockchip,grf property\n"); 372 - return; 373 - } 374 - 375 422 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, 376 423 RK3288_GMAC_PHY_INTF_SEL_RGMII | 377 424 RK3288_GMAC_RMII_MODE_CLR); ··· 376 437 377 438 static void rk3288_set_to_rmii(struct rk_priv_data *bsp_priv) 378 439 { 379 - struct device *dev = &bsp_priv->pdev->dev; 380 - 381 - if (IS_ERR(bsp_priv->grf)) { 382 - dev_err(dev, "Missing rockchip,grf property\n"); 383 - return; 384 - } 385 - 386 440 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, 387 441 RK3288_GMAC_PHY_INTF_SEL_RMII | RK3288_GMAC_RMII_MODE); 388 442 } ··· 383 451 static void rk3288_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 384 452 { 385 453 struct device *dev = &bsp_priv->pdev->dev; 386 - 387 - if (IS_ERR(bsp_priv->grf)) { 388 - dev_err(dev, "Missing rockchip,grf property\n"); 389 - return; 390 - } 391 454 392 455 if (speed == 10) 393 456 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, ··· 400 473 static void rk3288_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 401 474 { 402 475 struct device *dev = &bsp_priv->pdev->dev; 403 - 404 - if (IS_ERR(bsp_priv->grf)) { 405 - dev_err(dev, "Missing rockchip,grf property\n"); 406 - return; 407 - } 408 476 409 477 if (speed == 10) { 410 478 regmap_write(bsp_priv->grf, RK3288_GRF_SOC_CON1, ··· 433 511 434 512 static void rk3308_set_to_rmii(struct rk_priv_data *bsp_priv) 435 513 { 436 - struct device *dev = &bsp_priv->pdev->dev; 437 - 438 - if (IS_ERR(bsp_priv->grf)) { 439 - dev_err(dev, "Missing rockchip,grf property\n"); 440 - return; 441 - } 442 - 443 514 regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, 444 515 RK3308_GMAC_PHY_INTF_SEL_RMII); 445 516 } ··· 440 525 static void rk3308_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 441 526 { 442 527 struct device *dev = &bsp_priv->pdev->dev; 443 - 444 - if (IS_ERR(bsp_priv->grf)) { 445 - dev_err(dev, "Missing rockchip,grf property\n"); 446 - return; 447 - } 448 528 449 529 if (speed == 10) { 450 530 regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, ··· 493 583 static void rk3328_set_to_rgmii(struct rk_priv_data *bsp_priv, 494 584 int tx_delay, int rx_delay) 495 585 { 496 - struct device *dev = &bsp_priv->pdev->dev; 497 - 498 - if (IS_ERR(bsp_priv->grf)) { 499 - dev_err(dev, "Missing rockchip,grf property\n"); 500 - return; 501 - } 502 - 503 586 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, 504 587 RK3328_GMAC_PHY_INTF_SEL_RGMII | 505 588 RK3328_GMAC_RMII_MODE_CLR | ··· 506 603 507 604 static void rk3328_set_to_rmii(struct rk_priv_data *bsp_priv) 508 605 { 509 - struct device *dev = &bsp_priv->pdev->dev; 510 606 unsigned int reg; 511 - 512 - if (IS_ERR(bsp_priv->grf)) { 513 - dev_err(dev, "Missing rockchip,grf property\n"); 514 - return; 515 - } 516 607 517 608 reg = bsp_priv->integrated_phy ? RK3328_GRF_MAC_CON2 : 518 609 RK3328_GRF_MAC_CON1; ··· 519 622 static void rk3328_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 520 623 { 521 624 struct device *dev = &bsp_priv->pdev->dev; 522 - 523 - if (IS_ERR(bsp_priv->grf)) { 524 - dev_err(dev, "Missing rockchip,grf property\n"); 525 - return; 526 - } 527 625 528 626 if (speed == 10) 529 627 regmap_write(bsp_priv->grf, RK3328_GRF_MAC_CON1, ··· 537 645 { 538 646 struct device *dev = &bsp_priv->pdev->dev; 539 647 unsigned int reg; 540 - 541 - if (IS_ERR(bsp_priv->grf)) { 542 - dev_err(dev, "Missing rockchip,grf property\n"); 543 - return; 544 - } 545 648 546 649 reg = bsp_priv->integrated_phy ? RK3328_GRF_MAC_CON2 : 547 650 RK3328_GRF_MAC_CON1; ··· 598 711 static void rk3366_set_to_rgmii(struct rk_priv_data *bsp_priv, 599 712 int tx_delay, int rx_delay) 600 713 { 601 - struct device *dev = &bsp_priv->pdev->dev; 602 - 603 - if (IS_ERR(bsp_priv->grf)) { 604 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 605 - return; 606 - } 607 - 608 714 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, 609 715 RK3366_GMAC_PHY_INTF_SEL_RGMII | 610 716 RK3366_GMAC_RMII_MODE_CLR); ··· 609 729 610 730 static void rk3366_set_to_rmii(struct rk_priv_data *bsp_priv) 611 731 { 612 - struct device *dev = &bsp_priv->pdev->dev; 613 - 614 - if (IS_ERR(bsp_priv->grf)) { 615 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 616 - return; 617 - } 618 - 619 732 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, 620 733 RK3366_GMAC_PHY_INTF_SEL_RMII | RK3366_GMAC_RMII_MODE); 621 734 } ··· 616 743 static void rk3366_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 617 744 { 618 745 struct device *dev = &bsp_priv->pdev->dev; 619 - 620 - if (IS_ERR(bsp_priv->grf)) { 621 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 622 - return; 623 - } 624 746 625 747 if (speed == 10) 626 748 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, ··· 633 765 static void rk3366_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 634 766 { 635 767 struct device *dev = &bsp_priv->pdev->dev; 636 - 637 - if (IS_ERR(bsp_priv->grf)) { 638 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 639 - return; 640 - } 641 768 642 769 if (speed == 10) { 643 770 regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, ··· 685 822 static void rk3368_set_to_rgmii(struct rk_priv_data *bsp_priv, 686 823 int tx_delay, int rx_delay) 687 824 { 688 - struct device *dev = &bsp_priv->pdev->dev; 689 - 690 - if (IS_ERR(bsp_priv->grf)) { 691 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 692 - return; 693 - } 694 - 695 825 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, 696 826 RK3368_GMAC_PHY_INTF_SEL_RGMII | 697 827 RK3368_GMAC_RMII_MODE_CLR); ··· 696 840 697 841 static void rk3368_set_to_rmii(struct rk_priv_data *bsp_priv) 698 842 { 699 - struct device *dev = &bsp_priv->pdev->dev; 700 - 701 - if (IS_ERR(bsp_priv->grf)) { 702 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 703 - return; 704 - } 705 - 706 843 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, 707 844 RK3368_GMAC_PHY_INTF_SEL_RMII | RK3368_GMAC_RMII_MODE); 708 845 } ··· 703 854 static void rk3368_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 704 855 { 705 856 struct device *dev = &bsp_priv->pdev->dev; 706 - 707 - if (IS_ERR(bsp_priv->grf)) { 708 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 709 - return; 710 - } 711 857 712 858 if (speed == 10) 713 859 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, ··· 720 876 static void rk3368_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 721 877 { 722 878 struct device *dev = &bsp_priv->pdev->dev; 723 - 724 - if (IS_ERR(bsp_priv->grf)) { 725 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 726 - return; 727 - } 728 879 729 880 if (speed == 10) { 730 881 regmap_write(bsp_priv->grf, RK3368_GRF_SOC_CON15, ··· 772 933 static void rk3399_set_to_rgmii(struct rk_priv_data *bsp_priv, 773 934 int tx_delay, int rx_delay) 774 935 { 775 - struct device *dev = &bsp_priv->pdev->dev; 776 - 777 - if (IS_ERR(bsp_priv->grf)) { 778 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 779 - return; 780 - } 781 - 782 936 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, 783 937 RK3399_GMAC_PHY_INTF_SEL_RGMII | 784 938 RK3399_GMAC_RMII_MODE_CLR); ··· 783 951 784 952 static void rk3399_set_to_rmii(struct rk_priv_data *bsp_priv) 785 953 { 786 - struct device *dev = &bsp_priv->pdev->dev; 787 - 788 - if (IS_ERR(bsp_priv->grf)) { 789 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 790 - return; 791 - } 792 - 793 954 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, 794 955 RK3399_GMAC_PHY_INTF_SEL_RMII | RK3399_GMAC_RMII_MODE); 795 956 } ··· 790 965 static void rk3399_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) 791 966 { 792 967 struct device *dev = &bsp_priv->pdev->dev; 793 - 794 - if (IS_ERR(bsp_priv->grf)) { 795 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 796 - return; 797 - } 798 968 799 969 if (speed == 10) 800 970 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, ··· 807 987 static void rk3399_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 808 988 { 809 989 struct device *dev = &bsp_priv->pdev->dev; 810 - 811 - if (IS_ERR(bsp_priv->grf)) { 812 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 813 - return; 814 - } 815 990 816 991 if (speed == 10) { 817 992 regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, ··· 852 1037 static void rk3568_set_to_rgmii(struct rk_priv_data *bsp_priv, 853 1038 int tx_delay, int rx_delay) 854 1039 { 855 - struct device *dev = &bsp_priv->pdev->dev; 856 1040 u32 con0, con1; 857 - 858 - if (IS_ERR(bsp_priv->grf)) { 859 - dev_err(dev, "Missing rockchip,grf property\n"); 860 - return; 861 - } 862 1041 863 1042 con0 = (bsp_priv->id == 1) ? RK3568_GRF_GMAC1_CON0 : 864 1043 RK3568_GRF_GMAC0_CON0; ··· 871 1062 872 1063 static void rk3568_set_to_rmii(struct rk_priv_data *bsp_priv) 873 1064 { 874 - struct device *dev = &bsp_priv->pdev->dev; 875 1065 u32 con1; 876 - 877 - if (IS_ERR(bsp_priv->grf)) { 878 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 879 - return; 880 - } 881 1066 882 1067 con1 = (bsp_priv->id == 1) ? RK3568_GRF_GMAC1_CON1 : 883 1068 RK3568_GRF_GMAC0_CON1; ··· 950 1147 static void rk3576_set_to_rgmii(struct rk_priv_data *bsp_priv, 951 1148 int tx_delay, int rx_delay) 952 1149 { 953 - struct device *dev = &bsp_priv->pdev->dev; 954 1150 unsigned int offset_con; 955 - 956 - if (IS_ERR(bsp_priv->grf) || IS_ERR(bsp_priv->php_grf)) { 957 - dev_err(dev, "Missing rockchip,grf or rockchip,php-grf property\n"); 958 - return; 959 - } 960 1151 961 1152 offset_con = bsp_priv->id == 1 ? RK3576_GRF_GMAC_CON1 : 962 1153 RK3576_GRF_GMAC_CON0; ··· 977 1180 978 1181 static void rk3576_set_to_rmii(struct rk_priv_data *bsp_priv) 979 1182 { 980 - struct device *dev = &bsp_priv->pdev->dev; 981 1183 unsigned int offset_con; 982 - 983 - if (IS_ERR(bsp_priv->grf)) { 984 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 985 - return; 986 - } 987 1184 988 1185 offset_con = bsp_priv->id == 1 ? RK3576_GRF_GMAC_CON1 : 989 1186 RK3576_GRF_GMAC_CON0; ··· 1045 1254 .set_rgmii_speed = rk3576_set_gmac_speed, 1046 1255 .set_rmii_speed = rk3576_set_gmac_speed, 1047 1256 .set_clock_selection = rk3576_set_clock_selection, 1257 + .php_grf_required = true, 1048 1258 .regs_valid = true, 1049 1259 .regs = { 1050 1260 0x2a220000, /* gmac0 */ ··· 1098 1306 static void rk3588_set_to_rgmii(struct rk_priv_data *bsp_priv, 1099 1307 int tx_delay, int rx_delay) 1100 1308 { 1101 - struct device *dev = &bsp_priv->pdev->dev; 1102 1309 u32 offset_con, id = bsp_priv->id; 1103 - 1104 - if (IS_ERR(bsp_priv->grf) || IS_ERR(bsp_priv->php_grf)) { 1105 - dev_err(dev, "Missing rockchip,grf or rockchip,php_grf property\n"); 1106 - return; 1107 - } 1108 1310 1109 1311 offset_con = bsp_priv->id == 1 ? RK3588_GRF_GMAC_CON9 : 1110 1312 RK3588_GRF_GMAC_CON8; ··· 1120 1334 1121 1335 static void rk3588_set_to_rmii(struct rk_priv_data *bsp_priv) 1122 1336 { 1123 - struct device *dev = &bsp_priv->pdev->dev; 1124 - 1125 - if (IS_ERR(bsp_priv->php_grf)) { 1126 - dev_err(dev, "%s: Missing rockchip,php_grf property\n", __func__); 1127 - return; 1128 - } 1129 - 1130 1337 regmap_write(bsp_priv->php_grf, RK3588_GRF_GMAC_CON0, 1131 1338 RK3588_GMAC_PHY_INTF_SEL_RMII(bsp_priv->id)); 1132 1339 ··· 1180 1401 .set_rgmii_speed = rk3588_set_gmac_speed, 1181 1402 .set_rmii_speed = rk3588_set_gmac_speed, 1182 1403 .set_clock_selection = rk3588_set_clock_selection, 1404 + .php_grf_required = true, 1183 1405 .regs_valid = true, 1184 1406 .regs = { 1185 1407 0xfe1b0000, /* gmac0 */ ··· 1203 1423 1204 1424 static void rv1108_set_to_rmii(struct rk_priv_data *bsp_priv) 1205 1425 { 1206 - struct device *dev = &bsp_priv->pdev->dev; 1207 - 1208 - if (IS_ERR(bsp_priv->grf)) { 1209 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 1210 - return; 1211 - } 1212 - 1213 1426 regmap_write(bsp_priv->grf, RV1108_GRF_GMAC_CON0, 1214 1427 RV1108_GMAC_PHY_INTF_SEL_RMII); 1215 1428 } ··· 1210 1437 static void rv1108_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) 1211 1438 { 1212 1439 struct device *dev = &bsp_priv->pdev->dev; 1213 - 1214 - if (IS_ERR(bsp_priv->grf)) { 1215 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 1216 - return; 1217 - } 1218 1440 1219 1441 if (speed == 10) { 1220 1442 regmap_write(bsp_priv->grf, RV1108_GRF_GMAC_CON0, ··· 1259 1491 static void rv1126_set_to_rgmii(struct rk_priv_data *bsp_priv, 1260 1492 int tx_delay, int rx_delay) 1261 1493 { 1262 - struct device *dev = &bsp_priv->pdev->dev; 1263 - 1264 - if (IS_ERR(bsp_priv->grf)) { 1265 - dev_err(dev, "Missing rockchip,grf property\n"); 1266 - return; 1267 - } 1268 - 1269 1494 regmap_write(bsp_priv->grf, RV1126_GRF_GMAC_CON0, 1270 1495 RV1126_GMAC_PHY_INTF_SEL_RGMII | 1271 1496 RV1126_GMAC_M0_RXCLK_DLY_ENABLE | ··· 1277 1516 1278 1517 static void rv1126_set_to_rmii(struct rk_priv_data *bsp_priv) 1279 1518 { 1280 - struct device *dev = &bsp_priv->pdev->dev; 1281 - 1282 - if (IS_ERR(bsp_priv->grf)) { 1283 - dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); 1284 - return; 1285 - } 1286 - 1287 1519 regmap_write(bsp_priv->grf, RV1126_GRF_GMAC_CON0, 1288 1520 RV1126_GMAC_PHY_INTF_SEL_RMII); 1289 1521 } ··· 1566 1812 1567 1813 bsp_priv->grf = syscon_regmap_lookup_by_phandle(dev->of_node, 1568 1814 "rockchip,grf"); 1569 - bsp_priv->php_grf = syscon_regmap_lookup_by_phandle(dev->of_node, 1570 - "rockchip,php-grf"); 1815 + if (IS_ERR(bsp_priv->grf)) { 1816 + dev_err_probe(dev, PTR_ERR(bsp_priv->grf), 1817 + "failed to lookup rockchip,grf\n"); 1818 + return ERR_CAST(bsp_priv->grf); 1819 + } 1820 + 1821 + if (ops->php_grf_required) { 1822 + bsp_priv->php_grf = 1823 + syscon_regmap_lookup_by_phandle(dev->of_node, 1824 + "rockchip,php-grf"); 1825 + if (IS_ERR(bsp_priv->php_grf)) { 1826 + dev_err_probe(dev, PTR_ERR(bsp_priv->php_grf), 1827 + "failed to lookup rockchip,php-grf\n"); 1828 + return ERR_CAST(bsp_priv->php_grf); 1829 + } 1830 + } 1571 1831 1572 1832 if (plat->phy_node) { 1573 1833 bsp_priv->integrated_phy = of_property_read_bool(plat->phy_node,