Lines Matching refs:interface

133  * Return the number of interfaces the chip has. Each interface
136 * one interface.
177 * Return the number of ports on an interface. Depending on the
179 * specifies that the interface doesn't exist or isn't usable.
181 * @param interface Interface to get the port count for
183 * @return Number of ports on interface. Can be Zero.
185 int cvmx_helper_ports_on_interface(int interface)
188 return cvmx_helper_interface_enumerate(interface);
190 return __cvmx_helper_get_num_ipd_ports(interface);
198 * Get the operating mode of an interface. Depending on the Octeon
200 * of the type of packet I/O supported by an interface.
202 * @param interface Interface to probe
204 * @return Mode of the interface. Unknown or unsupported interfaces return
207 cvmx_helper_interface_mode_t cvmx_helper_interface_get_mode(int interface)
214 switch(interface)
245 qlm_cfg.u64 = cvmx_read_csr(CVMX_MIO_QLMX_CFG(interface));
259 qlm_cfg.u64 = cvmx_read_csr(CVMX_MIO_QLMX_CFG(interface - 4));
293 if (interface == 2)
296 if (interface == 3)
308 if ((OCTEON_IS_MODEL(OCTEON_CN63XX) && (interface == 4 || interface == 5))
309 || (OCTEON_IS_MODEL(OCTEON_CN66XX) && interface >= 4 && interface <= 7))
314 if ((interface == 5 || interface == 7) && OCTEON_IS_MODEL(OCTEON_CN66XX_PASS1_0))
317 sriox_status_reg.u64 = cvmx_read_csr(CVMX_SRIOX_STATUS_REG(interface-4));
330 if (interface == 0)
332 else if (interface == 1)
351 if (interface == 0)
361 else if (interface == 1)
378 if (interface == 0 && cvmx_sysinfo_get()->board_type == CVMX_BOARD_TYPE_CN3005_EVB_HS5 && cvmx_sysinfo_get()->board_rev_major == 1)
380 /* Lie about interface type of CN3005 board. This board has a switch on port 1 like
389 if ((interface == 1)
398 mode.u64 = cvmx_read_csr(CVMX_GMXX_INF_MODE(interface));
448 * not the per interface numbering
459 int interface, index, pknd;
462 interface = cvmx_helper_get_interface_num(ipd_port);
464 pknd = cvmx_helper_get_pknd(interface, index);
517 * Enable or disable FCS stripping for all the ports on an interface.
519 * @param interface
523 static int cvmx_helper_fcs_op(int interface, int nports, int has_fcs)
536 port_bit |= ((uint64_t)1 << cvmx_helper_get_pknd(interface, index));
560 * interface. It doesn't setup the ports or enable them.
562 * @param interface Interface to enumerate
564 * @return The number of ports on the interface, negative on failure
566 int cvmx_helper_interface_enumerate(int interface)
568 switch (cvmx_helper_interface_get_mode(interface)) {
572 return __cvmx_helper_xaui_enumerate(interface);
577 return __cvmx_helper_rgmii_enumerate(interface);
580 return __cvmx_helper_spi_enumerate(interface);
584 return __cvmx_helper_sgmii_enumerate(interface);
587 return __cvmx_helper_npi_enumerate(interface);
591 return __cvmx_helper_loop_enumerate(interface);
594 return __cvmx_helper_srio_enumerate(interface);
597 return __cvmx_helper_ilk_enumerate(interface);
607 * This function probes an interface to determine the actual number of
610 * interface_port_count[interface] correctly. Final hardware setup of
613 * @param interface Interface to probe
617 int cvmx_helper_interface_probe(int interface)
628 switch (cvmx_helper_interface_get_mode(interface))
638 nports = __cvmx_helper_xaui_probe(interface);
646 nports = __cvmx_helper_rgmii_probe(interface);
651 nports = __cvmx_helper_spi_probe(interface);
658 nports = __cvmx_helper_sgmii_probe(interface);
663 nports = __cvmx_helper_npi_probe(interface);
668 nports = __cvmx_helper_loop_probe(interface);
672 nports = __cvmx_helper_srio_probe(interface);
675 nports = __cvmx_helper_ilk_probe(interface);
687 nports = __cvmx_helper_board_interface_probe(interface, nports);
688 __cvmx_helper_init_interface(interface, nports, has_fcs, padding);
689 cvmx_helper_fcs_op(interface, nports, has_fcs);
700 * Setup the IPD/PIP for the ports on an interface. Packet
702 * interface. The number of ports on the interface must already
705 * @param interface Interface to setup IPD/PIP for
709 static int __cvmx_helper_interface_setup_ipd(int interface)
713 int ipd_port = cvmx_helper_get_ipd_port(interface, 0);
714 int num_ports = cvmx_helper_ports_on_interface(interface);
720 mode = cvmx_helper_interface_get_mode(interface);
723 __cvmx_helper_loop_enable(interface);
745 * interface or port. This must be called before IPD is enabled.
769 * Setup the PKO for the ports on an interface. The number of
773 * @param interface Interface to setup PKO for
777 static int __cvmx_helper_interface_setup_pko(int interface)
794 int ipd_port = cvmx_helper_get_ipd_port(interface, 0);
795 int num_ports = cvmx_helper_ports_on_interface(interface);
813 * interface or port. This must be called before PKO is enabled.
857 int interface;
858 for (interface=0; interface<num_interfaces; interface++)
860 switch (cvmx_helper_interface_get_mode(interface))
876 cvmx_gmx_set_backpressure_override(interface, 0xf);
1008 * @param interface Interface to enable
1012 static int __cvmx_helper_packet_hardware_enable(int interface)
1015 switch (cvmx_helper_interface_get_mode(interface))
1026 result = __cvmx_helper_xaui_enable(interface);
1032 result = __cvmx_helper_rgmii_enable(interface);
1036 result = __cvmx_helper_spi_enable(interface);
1041 result = __cvmx_helper_sgmii_enable(interface);
1045 result = __cvmx_helper_npi_enable(interface);
1049 result = __cvmx_helper_srio_enable(interface);
1052 result = __cvmx_helper_ilk_enable(interface);
1055 result |= __cvmx_helper_board_hardware_enable(interface);
1069 int interface;
1077 for (interface=0; interface<num_interfaces; interface++)
1079 if (cvmx_helper_ports_on_interface(interface) > 0)
1081 //cvmx_dprintf("Enabling packet I/O on interface %d\n", interface);
1082 __cvmx_helper_packet_hardware_enable(interface);
1258 int interface;
1291 /* Newer chips have more than one SMI/MDIO interface */
1313 for (interface=0; interface<num_interfaces; interface++)
1314 result |= cvmx_helper_interface_probe(interface);
1317 for (interface=0; interface<num_interfaces; interface++)
1319 if (cvmx_helper_ports_on_interface(interface) > 0)
1321 interface, cvmx_helper_ports_on_interface(interface),
1322 cvmx_helper_interface_mode_to_string(cvmx_helper_interface_get_mode(interface)));
1323 result |= __cvmx_helper_interface_setup_ipd(interface);
1325 result |= __cvmx_helper_interface_setup_pko(interface);
1399 int interface;
1407 for (interface=0; interface<CVMX_HELPER_MAX_GMX; interface++)
1408 if (cvmx_helper_interface_get_mode(interface) != CVMX_HELPER_INTERFACE_MODE_DISABLED)
1409 cvmx_gmx_set_backpressure_override(interface, 0xf);
1430 for (interface=0; interface<num_interfaces; interface++)
1432 num_ports = cvmx_helper_ports_on_interface(interface);
1435 int pko_port = cvmx_helper_get_ipd_port(interface, index);
1453 for (interface=0; interface<CVMX_HELPER_MAX_GMX; interface++)
1455 switch (cvmx_helper_interface_get_mode(interface))
1459 /* Not a packet interface */
1479 cvmx_write_csr(CVMX_ASXX_RX_PRT_EN(interface), 0);
1480 num_ports = cvmx_helper_ports_on_interface(interface);
1486 gmx_cfg.u64 = cvmx_read_csr(CVMX_GMXX_PRTX_CFG(index, interface));
1488 cvmx_write_csr(CVMX_GMXX_PRTX_CFG(index, interface), gmx_cfg.u64);
1490 cvmx_write_csr(CVMX_NPI_DBG_SELECT, interface*0x800 + index*0x100 + 0x880);
1503 cvmx_write_csr(CVMX_ASXX_TX_PRT_EN(interface), 0);
1504 /* Disable interrupts for interface */
1505 cvmx_write_csr(CVMX_ASXX_INT_EN(interface), 0);
1506 cvmx_write_csr(CVMX_GMXX_TX_INT_EN(interface), 0);
1512 num_ports = cvmx_helper_ports_on_interface(interface);
1518 gmx_cfg.u64 = cvmx_read_csr(CVMX_GMXX_PRTX_CFG(index, interface));
1520 cvmx_write_csr(CVMX_GMXX_PRTX_CFG(index, interface), gmx_cfg.u64);
1521 if (CVMX_WAIT_FOR_FIELD64(CVMX_GMXX_PRTX_CFG(index, interface), cvmx_gmxx_prtx_cfg_t, rx_idle, ==, 1, timeout*1000000))
1526 if (CVMX_WAIT_FOR_FIELD64(CVMX_GMXX_PRTX_CFG(index, interface), cvmx_gmxx_prtx_cfg_t, tx_idle, ==, 1, timeout*1000000))
1624 for (interface=0; interface<CVMX_HELPER_MAX_GMX; interface++)
1626 switch (cvmx_helper_interface_get_mode(interface))
1642 num_ports = cvmx_helper_ports_on_interface(interface);
1647 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CTL(index, interface), 1);
1648 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM_EN(index, interface), 0);
1649 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM0(index, interface), 0);
1650 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM1(index, interface), 0);
1651 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM2(index, interface), 0);
1652 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM3(index, interface), 0);
1653 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM4(index, interface), 0);
1654 cvmx_write_csr(CVMX_GMXX_RXX_ADR_CAM5(index, interface), 0);
1747 /* Step 12: Release interface structures */
1783 int interface = cvmx_helper_get_interface_num(ipd_port);
1786 if (index >= cvmx_helper_ports_on_interface(interface))
1793 if (link_info.u64 == (__cvmx_helper_get_link_info(interface, index)).u64)
1828 int interface = cvmx_helper_get_interface_num(ipd_port);
1835 if (index >= cvmx_helper_ports_on_interface(interface))
1838 switch (cvmx_helper_interface_get_mode(interface))
1901 int interface = cvmx_helper_get_interface_num(ipd_port);
1904 if (index >= cvmx_helper_ports_on_interface(interface))
1907 switch (cvmx_helper_interface_get_mode(interface))
1943 __cvmx_helper_set_link_info(interface, index, link_info);
1967 int interface = cvmx_helper_get_interface_num(ipd_port);
1970 if (index >= cvmx_helper_ports_on_interface(interface))
1973 switch (cvmx_helper_interface_get_mode(interface))