Commit 78368804d4cfdbcbdf57727bb4cde8e79850130c
Committed by
Priyanka Jain
1 parent
919feb7911
Exists in
smarc_8mq_lf_v2020.04
and in
4 other branches
board: freescale: powerpc: add support for all RGMII modes
Make sure are RGMII internal delay modes are covered. Signed-off-by: Madalin Bucur <madalin.bucur@oss.nxp.com>
Showing 11 changed files with 96 additions and 19 deletions Side-by-side Diff
- board/freescale/corenet_ds/eth_hydra.c
- board/freescale/corenet_ds/eth_p4080.c
- board/freescale/corenet_ds/eth_superhydra.c
- board/freescale/p2041rdb/eth.c
- board/freescale/t102xqds/eth_t102xqds.c
- board/freescale/t102xrdb/eth_t102xrdb.c
- board/freescale/t1040qds/eth.c
- board/freescale/t104xrdb/eth.c
- board/freescale/t208xqds/eth_t208xqds.c
- board/freescale/t208xrdb/eth_t208xrdb.c
- board/freescale/t4qds/eth.c
board/freescale/corenet_ds/eth_hydra.c
... | ... | @@ -349,6 +349,9 @@ |
349 | 349 | } |
350 | 350 | break; |
351 | 351 | case PHY_INTERFACE_MODE_RGMII: |
352 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
353 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
354 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
352 | 355 | fdt_status_okay_by_alias(fdt, "emi1_rgmii"); |
353 | 356 | break; |
354 | 357 | default: |
... | ... | @@ -448,6 +451,9 @@ |
448 | 451 | miiphy_get_dev_by_name("HYDRA_SGMII_MDIO")); |
449 | 452 | break; |
450 | 453 | case PHY_INTERFACE_MODE_RGMII: |
454 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
455 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
456 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
451 | 457 | /* |
452 | 458 | * If DTSEC4 is RGMII, then it's routed via via EC1 to |
453 | 459 | * the first on-board RGMII port. If DTSEC5 is RGMII, |
board/freescale/corenet_ds/eth_p4080.c
... | ... | @@ -364,6 +364,9 @@ |
364 | 364 | }; |
365 | 365 | break; |
366 | 366 | case PHY_INTERFACE_MODE_RGMII: |
367 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
368 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
369 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
367 | 370 | fm_info_set_phy_address(i, 0); |
368 | 371 | mdio_mux[i] = EMI1_RGMII; |
369 | 372 | fm_info_set_mdio(i, |
... | ... | @@ -431,6 +434,9 @@ |
431 | 434 | }; |
432 | 435 | break; |
433 | 436 | case PHY_INTERFACE_MODE_RGMII: |
437 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
438 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
439 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
434 | 440 | fm_info_set_phy_address(i, 0); |
435 | 441 | mdio_mux[i] = EMI1_RGMII; |
436 | 442 | fm_info_set_mdio(i, |
board/freescale/corenet_ds/eth_superhydra.c
... | ... | @@ -315,6 +315,9 @@ |
315 | 315 | } |
316 | 316 | break; |
317 | 317 | case PHY_INTERFACE_MODE_RGMII: |
318 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
319 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
320 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
318 | 321 | fdt_status_okay_by_alias(fdt, "hydra_rg"); |
319 | 322 | debug("Enabled MDIO node hydra_rg\n"); |
320 | 323 | break; |
... | ... | @@ -351,6 +354,9 @@ |
351 | 354 | } |
352 | 355 | break; |
353 | 356 | case PHY_INTERFACE_MODE_RGMII: |
357 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
358 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
359 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
354 | 360 | fdt_status_okay_by_alias(fdt, "hydra_rg"); |
355 | 361 | debug("Enabled MDIO node hydra_rg\n"); |
356 | 362 | break; |
... | ... | @@ -555,6 +561,9 @@ |
555 | 561 | miiphy_get_dev_by_name("SUPER_HYDRA_FM1_SGMII_MDIO")); |
556 | 562 | break; |
557 | 563 | case PHY_INTERFACE_MODE_RGMII: |
564 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
565 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
566 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
558 | 567 | /* |
559 | 568 | * FM1 DTSEC5 is routed via EC1 to the first on-board |
560 | 569 | * RGMII port. FM2 DTSEC5 is routed via EC2 to the |
... | ... | @@ -702,6 +711,9 @@ |
702 | 711 | |
703 | 712 | break; |
704 | 713 | case PHY_INTERFACE_MODE_RGMII: |
714 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
715 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
716 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
705 | 717 | /* |
706 | 718 | * FM1 DTSEC5 is routed via EC1 to the first on-board |
707 | 719 | * RGMII port. FM2 DTSEC5 is routed via EC2 to the |
board/freescale/p2041rdb/eth.c
... | ... | @@ -80,17 +80,21 @@ |
80 | 80 | { |
81 | 81 | phy_interface_t intf = fm_info_get_enet_if(port); |
82 | 82 | char phy[16]; |
83 | + int lane; | |
84 | + u8 slot; | |
83 | 85 | |
86 | + switch (intf) { | |
84 | 87 | /* The RGMII PHY is identified by the MAC connected to it */ |
85 | - if (intf == PHY_INTERFACE_MODE_RGMII) { | |
88 | + case PHY_INTERFACE_MODE_RGMII: | |
89 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
90 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
91 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
86 | 92 | sprintf(phy, "phy_rgmii_%u", port == FM1_DTSEC5 ? 0 : 1); |
87 | 93 | fdt_set_phy_handle(fdt, compat, addr, phy); |
88 | - } | |
89 | - | |
94 | + break; | |
90 | 95 | /* The SGMII PHY is identified by the MAC connected to it */ |
91 | - if (intf == PHY_INTERFACE_MODE_SGMII) { | |
92 | - int lane = serdes_get_first_lane(SGMII_FM1_DTSEC1 + port); | |
93 | - u8 slot; | |
96 | + case PHY_INTERFACE_MODE_SGMII: | |
97 | + lane = serdes_get_first_lane(SGMII_FM1_DTSEC1 + port); | |
94 | 98 | if (lane < 0) |
95 | 99 | return; |
96 | 100 | slot = lane_to_slot[lane]; |
97 | 101 | |
98 | 102 | |
... | ... | @@ -105,16 +109,18 @@ |
105 | 109 | + (port - FM1_DTSEC1)); |
106 | 110 | fdt_set_phy_handle(fdt, compat, addr, phy); |
107 | 111 | } |
108 | - } | |
109 | - | |
110 | - if (intf == PHY_INTERFACE_MODE_XGMII) { | |
112 | + break; | |
113 | + case PHY_INTERFACE_MODE_XGMII: | |
111 | 114 | /* XAUI */ |
112 | - int lane = serdes_get_first_lane(XAUI_FM1); | |
115 | + lane = serdes_get_first_lane(XAUI_FM1); | |
113 | 116 | if (lane >= 0) { |
114 | 117 | /* The XAUI PHY is identified by the slot */ |
115 | 118 | sprintf(phy, "phy_xgmii_%u", lane_to_slot[lane]); |
116 | 119 | fdt_set_phy_handle(fdt, compat, addr, phy); |
117 | 120 | } |
121 | + break; | |
122 | + default: | |
123 | + break; | |
118 | 124 | } |
119 | 125 | } |
120 | 126 | #endif /* #ifdef CONFIG_FMAN_ENET */ |
... | ... | @@ -168,6 +174,9 @@ |
168 | 174 | fm_info_set_phy_address(i, riser_phy_addr[i]); |
169 | 175 | break; |
170 | 176 | case PHY_INTERFACE_MODE_RGMII: |
177 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
178 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
179 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
171 | 180 | /* Only DTSEC4 and DTSEC5 can be routed to RGMII */ |
172 | 181 | fm_info_set_phy_address(i, i == FM1_DTSEC5 ? |
173 | 182 | CONFIG_SYS_FM1_DTSEC5_PHY_ADDR : |
board/freescale/t102xqds/eth_t102xqds.c
... | ... | @@ -168,14 +168,19 @@ |
168 | 168 | { |
169 | 169 | struct fixed_link f_link; |
170 | 170 | |
171 | - if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_RGMII) { | |
171 | + switch (fm_info_get_enet_if(port)) { | |
172 | + case PHY_INTERFACE_MODE_RGMII: | |
173 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
174 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
175 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
172 | 176 | if (port == FM1_DTSEC3) { |
173 | 177 | fdt_set_phy_handle(fdt, compat, addr, "rgmii_phy2"); |
174 | 178 | fdt_setprop_string(fdt, offset, "phy-connection-type", |
175 | 179 | "rgmii"); |
176 | 180 | fdt_status_okay_by_alias(fdt, "emi1_rgmii1"); |
177 | 181 | } |
178 | - } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_SGMII) { | |
182 | + break; | |
183 | + case PHY_INTERFACE_MODE_SGMII: | |
179 | 184 | if (port == FM1_DTSEC1) { |
180 | 185 | fdt_set_phy_handle(fdt, compat, addr, |
181 | 186 | "sgmii_vsc8234_phy_s5"); |
182 | 187 | |
... | ... | @@ -183,12 +188,14 @@ |
183 | 188 | fdt_set_phy_handle(fdt, compat, addr, |
184 | 189 | "sgmii_vsc8234_phy_s4"); |
185 | 190 | } |
186 | - } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_SGMII_2500) { | |
191 | + break; | |
192 | + case PHY_INTERFACE_MODE_SGMII_2500: | |
187 | 193 | if (port == FM1_DTSEC3) { |
188 | 194 | fdt_set_phy_handle(fdt, compat, addr, |
189 | 195 | "sgmii_aqr105_phy_s3"); |
190 | 196 | } |
191 | - } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_QSGMII) { | |
197 | + break; | |
198 | + case PHY_INTERFACE_MODE_QSGMII: | |
192 | 199 | switch (port) { |
193 | 200 | case FM1_DTSEC1: |
194 | 201 | fdt_set_phy_handle(fdt, compat, addr, "qsgmii_phy_p1"); |
... | ... | @@ -209,7 +216,8 @@ |
209 | 216 | fdt_setprop_string(fdt, offset, "phy-connection-type", |
210 | 217 | "qsgmii"); |
211 | 218 | fdt_status_okay_by_alias(fdt, "emi1_slot2"); |
212 | - } else if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_XGMII) { | |
219 | + break; | |
220 | + case PHY_INTERFACE_MODE_XGMII: | |
213 | 221 | /* XFI interface */ |
214 | 222 | f_link.phy_id = port; |
215 | 223 | f_link.duplex = 1; |
... | ... | @@ -220,6 +228,9 @@ |
220 | 228 | fdt_delprop(fdt, offset, "phy-handle"); |
221 | 229 | fdt_setprop(fdt, offset, "fixed-link", &f_link, sizeof(f_link)); |
222 | 230 | fdt_setprop_string(fdt, offset, "phy-connection-type", "xgmii"); |
231 | + break; | |
232 | + default: | |
233 | + break; | |
223 | 234 | } |
224 | 235 | } |
225 | 236 | |
... | ... | @@ -408,6 +419,9 @@ |
408 | 419 | } |
409 | 420 | break; |
410 | 421 | case PHY_INTERFACE_MODE_RGMII: |
422 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
423 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
424 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
411 | 425 | if (i == FM1_DTSEC3) |
412 | 426 | mdio_mux[i] = EMI1_RGMII2; |
413 | 427 | else if (i == FM1_DTSEC4) |
board/freescale/t102xrdb/eth_t102xrdb.c
... | ... | @@ -87,6 +87,9 @@ |
87 | 87 | interface = fm_info_get_enet_if(i); |
88 | 88 | switch (interface) { |
89 | 89 | case PHY_INTERFACE_MODE_RGMII: |
90 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
91 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
92 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
90 | 93 | dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME); |
91 | 94 | fm_info_set_mdio(i, dev); |
92 | 95 | break; |
board/freescale/t1040qds/eth.c
... | ... | @@ -288,14 +288,17 @@ |
288 | 288 | phy_interface_t intf = fm_info_get_enet_if(port); |
289 | 289 | char phy[16]; |
290 | 290 | |
291 | + switch (intf) { | |
291 | 292 | /* The RGMII PHY is identified by the MAC connected to it */ |
292 | - if (intf == PHY_INTERFACE_MODE_RGMII) { | |
293 | + case PHY_INTERFACE_MODE_RGMII: | |
294 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
295 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
296 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
293 | 297 | sprintf(phy, "rgmii_phy%u", port == FM1_DTSEC4 ? 1 : 2); |
294 | 298 | fdt_set_phy_handle(fdt, compat, addr, phy); |
295 | - } | |
296 | - | |
299 | + break; | |
297 | 300 | /* The SGMII PHY is identified by the MAC connected to it */ |
298 | - if (intf == PHY_INTERFACE_MODE_SGMII) { | |
301 | + case PHY_INTERFACE_MODE_SGMII: | |
299 | 302 | int lane = serdes_get_first_lane(FSL_SRDS_1, SGMII_FM1_DTSEC1 |
300 | 303 | + port); |
301 | 304 | u8 slot; |
... | ... | @@ -309,6 +312,9 @@ |
309 | 312 | CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR + 1)); |
310 | 313 | fdt_set_phy_handle(fdt, compat, addr, phy); |
311 | 314 | } |
315 | + break; | |
316 | + default: | |
317 | + break; | |
312 | 318 | } |
313 | 319 | } |
314 | 320 | |
... | ... | @@ -341,6 +347,9 @@ |
341 | 347 | } |
342 | 348 | break; |
343 | 349 | case PHY_INTERFACE_MODE_RGMII: |
350 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
351 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
352 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
344 | 353 | if (i == FM1_DTSEC4) |
345 | 354 | fdt_status_okay_by_alias(fdt, "emi1_rgmii0"); |
346 | 355 | |
... | ... | @@ -491,6 +500,9 @@ |
491 | 500 | break; |
492 | 501 | |
493 | 502 | case PHY_INTERFACE_MODE_RGMII: |
503 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
504 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
505 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
494 | 506 | /* Only DTSEC4 and DTSEC5 can be routed to RGMII */ |
495 | 507 | t1040_handle_phy_interface_rgmii(i); |
496 | 508 | break; |
board/freescale/t104xrdb/eth.c
... | ... | @@ -76,6 +76,9 @@ |
76 | 76 | break; |
77 | 77 | #endif |
78 | 78 | case PHY_INTERFACE_MODE_RGMII: |
79 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
80 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
81 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
79 | 82 | if (FM1_DTSEC4 == i) |
80 | 83 | phy_addr = CONFIG_SYS_RGMII1_PHY_ADDR; |
81 | 84 | if (FM1_DTSEC5 == i) |
board/freescale/t208xqds/eth_t208xqds.c
... | ... | @@ -750,6 +750,9 @@ |
750 | 750 | } |
751 | 751 | break; |
752 | 752 | case PHY_INTERFACE_MODE_RGMII: |
753 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
754 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
755 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
753 | 756 | if (i == FM1_DTSEC3) |
754 | 757 | mdio_mux[i] = EMI1_RGMII1; |
755 | 758 | else if (i == FM1_DTSEC4 || FM1_DTSEC10) |
board/freescale/t208xrdb/eth_t208xrdb.c
... | ... | @@ -74,6 +74,9 @@ |
74 | 74 | interface = fm_info_get_enet_if(i); |
75 | 75 | switch (interface) { |
76 | 76 | case PHY_INTERFACE_MODE_RGMII: |
77 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
78 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
79 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
77 | 80 | dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME); |
78 | 81 | fm_info_set_mdio(i, dev); |
79 | 82 | break; |
board/freescale/t4qds/eth.c
... | ... | @@ -638,6 +638,9 @@ |
638 | 638 | }; |
639 | 639 | break; |
640 | 640 | case PHY_INTERFACE_MODE_RGMII: |
641 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
642 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
643 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
641 | 644 | /* FM1 DTSEC5 routes to RGMII with EC2 */ |
642 | 645 | debug("FM1@DTSEC%u is RGMII at address %u\n", |
643 | 646 | idx + 1, 2); |
... | ... | @@ -816,6 +819,9 @@ |
816 | 819 | }; |
817 | 820 | break; |
818 | 821 | case PHY_INTERFACE_MODE_RGMII: |
822 | + case PHY_INTERFACE_MODE_RGMII_TXID: | |
823 | + case PHY_INTERFACE_MODE_RGMII_RXID: | |
824 | + case PHY_INTERFACE_MODE_RGMII_ID: | |
819 | 825 | /* |
820 | 826 | * If DTSEC5 is RGMII, then it's routed via via EC1 to |
821 | 827 | * the first on-board RGMII port. If DTSEC6 is RGMII, |