| .. | .. |
|---|
| 200 | 200 | */ |
|---|
| 201 | 201 | static int __cvmx_helper_sgmii_hardware_init_link_speed(int interface, |
|---|
| 202 | 202 | int index, |
|---|
| 203 | | - cvmx_helper_link_info_t |
|---|
| 203 | + union cvmx_helper_link_info |
|---|
| 204 | 204 | link_info) |
|---|
| 205 | 205 | { |
|---|
| 206 | 206 | int is_enabled; |
|---|
| .. | .. |
|---|
| 394 | 394 | * |
|---|
| 395 | 395 | * Returns Link state |
|---|
| 396 | 396 | */ |
|---|
| 397 | | -cvmx_helper_link_info_t __cvmx_helper_sgmii_link_get(int ipd_port) |
|---|
| 397 | +union cvmx_helper_link_info __cvmx_helper_sgmii_link_get(int ipd_port) |
|---|
| 398 | 398 | { |
|---|
| 399 | | - cvmx_helper_link_info_t result; |
|---|
| 399 | + union cvmx_helper_link_info result; |
|---|
| 400 | 400 | union cvmx_pcsx_miscx_ctl_reg pcs_misc_ctl_reg; |
|---|
| 401 | 401 | int interface = cvmx_helper_get_interface_num(ipd_port); |
|---|
| 402 | 402 | int index = cvmx_helper_get_interface_index_num(ipd_port); |
|---|
| .. | .. |
|---|
| 505 | 505 | * Returns Zero on success, negative on failure |
|---|
| 506 | 506 | */ |
|---|
| 507 | 507 | int __cvmx_helper_sgmii_link_set(int ipd_port, |
|---|
| 508 | | - cvmx_helper_link_info_t link_info) |
|---|
| 508 | + union cvmx_helper_link_info link_info) |
|---|
| 509 | 509 | { |
|---|
| 510 | 510 | int interface = cvmx_helper_get_interface_num(ipd_port); |
|---|
| 511 | 511 | int index = cvmx_helper_get_interface_index_num(ipd_port); |
|---|
| 512 | 512 | __cvmx_helper_sgmii_hardware_init_link(interface, index); |
|---|
| 513 | 513 | return __cvmx_helper_sgmii_hardware_init_link_speed(interface, index, |
|---|
| 514 | 514 | link_info); |
|---|
| 515 | | -} |
|---|
| 516 | | - |
|---|
| 517 | | -/** |
|---|
| 518 | | - * Configure a port for internal and/or external loopback. Internal |
|---|
| 519 | | - * loopback causes packets sent by the port to be received by |
|---|
| 520 | | - * Octeon. External loopback causes packets received from the wire to |
|---|
| 521 | | - * sent out again. |
|---|
| 522 | | - * |
|---|
| 523 | | - * @ipd_port: IPD/PKO port to loopback. |
|---|
| 524 | | - * @enable_internal: |
|---|
| 525 | | - * Non zero if you want internal loopback |
|---|
| 526 | | - * @enable_external: |
|---|
| 527 | | - * Non zero if you want external loopback |
|---|
| 528 | | - * |
|---|
| 529 | | - * Returns Zero on success, negative on failure. |
|---|
| 530 | | - */ |
|---|
| 531 | | -int __cvmx_helper_sgmii_configure_loopback(int ipd_port, int enable_internal, |
|---|
| 532 | | - int enable_external) |
|---|
| 533 | | -{ |
|---|
| 534 | | - int interface = cvmx_helper_get_interface_num(ipd_port); |
|---|
| 535 | | - int index = cvmx_helper_get_interface_index_num(ipd_port); |
|---|
| 536 | | - union cvmx_pcsx_mrx_control_reg pcsx_mrx_control_reg; |
|---|
| 537 | | - union cvmx_pcsx_miscx_ctl_reg pcsx_miscx_ctl_reg; |
|---|
| 538 | | - |
|---|
| 539 | | - pcsx_mrx_control_reg.u64 = |
|---|
| 540 | | - cvmx_read_csr(CVMX_PCSX_MRX_CONTROL_REG(index, interface)); |
|---|
| 541 | | - pcsx_mrx_control_reg.s.loopbck1 = enable_internal; |
|---|
| 542 | | - cvmx_write_csr(CVMX_PCSX_MRX_CONTROL_REG(index, interface), |
|---|
| 543 | | - pcsx_mrx_control_reg.u64); |
|---|
| 544 | | - |
|---|
| 545 | | - pcsx_miscx_ctl_reg.u64 = |
|---|
| 546 | | - cvmx_read_csr(CVMX_PCSX_MISCX_CTL_REG(index, interface)); |
|---|
| 547 | | - pcsx_miscx_ctl_reg.s.loopbck2 = enable_external; |
|---|
| 548 | | - cvmx_write_csr(CVMX_PCSX_MISCX_CTL_REG(index, interface), |
|---|
| 549 | | - pcsx_miscx_ctl_reg.u64); |
|---|
| 550 | | - |
|---|
| 551 | | - __cvmx_helper_sgmii_hardware_init_link(interface, index); |
|---|
| 552 | | - return 0; |
|---|
| 553 | 515 | } |
|---|