pm4x10Q.h (11502B)
1 /* 2 * 3 * 4 * 5 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 6 * 7 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 8 * 9 * 10 * DO NOT EDIT THIS FILE! 11 */ 12 13 #ifndef _PM4X10Q_H__H_ 14 #define _PM4X10Q_H__H_ 15 16 #include <phymod/phymod.h> 17 #include <phymod/phymod_diagnostics.h> 18 #include <phymod/phymod_reg.h> 19 #include <soc/cprimod/cprimod.h> 20 #include <soc/portmod/portmod_defs.h> 21 /*Get whether the inerface type is supported by PM */ 22 int pm4x10Q_pm_interface_type_is_supported(int unit, soc_port_if_t interface, int* is_supported); 23 24 /*Add new pm.*/ 25 int pm4x10Q_pm_init(int unit, const portmod_pm_create_info_internal_t* pm_add_info, int wb_buffer_index, pm_info_t pm_info); 26 27 /*Release PM resources*/ 28 int pm4x10Q_pm_destroy(int unit, pm_info_t pm_info); 29 30 /*Add new port*/ 31 int pm4x10Q_port_attach(int unit, int port, pm_info_t pm_info, const portmod_port_add_info_t* add_info); 32 33 /*get port cores' phymod access*/ 34 int pm4x10Q_pm_core_info_get(int unit, pm_info_t pm_info, int phyn, portmod_pm_core_info_t* core_info); 35 36 /*Port remove in PM level*/ 37 int pm4x10Q_port_detach(int unit, int port, pm_info_t pm_info); 38 39 /*Port replace in PM level*/ 40 int pm4x10Q_port_replace(int unit, int port, pm_info_t pm_info, int new_port); 41 42 /*Port enable*/ 43 int pm4x10Q_port_enable_set(int unit, int port, pm_info_t pm_info, int flags, int enable); 44 int pm4x10Q_port_enable_get(int unit, int port, pm_info_t pm_info, int flags, int* enable); 45 46 /* set/get the interface, speed and encapsulation for the specified port. 47 For the First port within core this function initialize the PM, MAC and PHY before configure the port.*/ 48 int pm4x10Q_port_interface_config_set(int unit, int port, pm_info_t pm_info, const portmod_port_interface_config_t* config, int phy_init_flags); 49 int pm4x10Q_port_interface_config_get(int unit, int port, pm_info_t pm_info, portmod_port_interface_config_t* config, int phy_init_flags); 50 51 /* get the default line-side (outmost) interface type of a port based on its speed, encap, number of lanes, etc, when there is or there is not an ext PHY*/ 52 int pm4x10Q_port_default_interface_get(int unit, int port, pm_info_t pm_info, const portmod_port_interface_config_t* config, soc_port_if_t* interface); 53 54 /*Port speed set\get*/ 55 int pm4x10Q_port_loopback_set(int unit, int port, pm_info_t pm_info, portmod_loopback_mode_t loopback_type, int enable); 56 int pm4x10Q_port_loopback_get(int unit, int port, pm_info_t pm_info, portmod_loopback_mode_t loopback_type, int* enable); 57 58 /*Port RX MAC ENABLE set\get*/ 59 int pm4x10Q_port_rx_mac_enable_set(int unit, int port, pm_info_t pm_info, int enable); 60 int pm4x10Q_port_rx_mac_enable_get(int unit, int port, pm_info_t pm_info, int* enable); 61 62 /*get port auto negotiation local ability*/ 63 int pm4x10Q_port_ability_local_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 64 65 /*Set\Get autoneg*/ 66 int pm4x10Q_port_autoneg_set(int unit, int port, pm_info_t pm_info, uint32 phy_flags, const phymod_autoneg_control_t* an); 67 int pm4x10Q_port_autoneg_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, phymod_autoneg_control_t* an); 68 69 /*Get autoneg status*/ 70 int pm4x10Q_port_autoneg_status_get(int unit, int port, pm_info_t pm_info, phymod_autoneg_status_t* an_status); 71 72 /*get link status*/ 73 int pm4x10Q_port_link_get(int unit, int port, pm_info_t pm_info, int flags, int* link); 74 75 /* link up event */ 76 int pm4x10Q_port_phy_link_up_event(int unit, int port, pm_info_t pm_info); 77 78 /* link down event */ 79 int pm4x10Q_port_phy_link_down_event(int unit, int port, pm_info_t pm_info); 80 81 /*Number of lanes get*/ 82 int pm4x10Q_port_nof_lanes_get(int unit, int port, pm_info_t pm_info, int* nof_lanes); 83 84 /*Filter packets bigger than the specified value*/ 85 int pm4x10Q_port_max_packet_size_set(int unit, int port, pm_info_t pm_info, int value); 86 int pm4x10Q_port_max_packet_size_get(int unit, int port, pm_info_t pm_info, int* value); 87 88 /*TX pad packets to the specified size. values smaller than 17 means pad is disabled.*/ 89 int pm4x10Q_port_pad_size_set(int unit, int port, pm_info_t pm_info, int value); 90 int pm4x10Q_port_pad_size_get(int unit, int port, pm_info_t pm_info, int* value); 91 92 /*set/get the MAC source address that will be sent in case of Pause/LLFC*/ 93 int pm4x10Q_port_tx_mac_sa_set(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 94 int pm4x10Q_port_tx_mac_sa_get(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 95 96 /*set/get SA recognized for MAC control packets in addition to the standard 0x0180C2000001*/ 97 int pm4x10Q_port_rx_mac_sa_set(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 98 int pm4x10Q_port_rx_mac_sa_get(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 99 100 /*set/get Average inter-packet gap*/ 101 int pm4x10Q_port_tx_average_ipg_set(int unit, int port, pm_info_t pm_info, int value); 102 int pm4x10Q_port_tx_average_ipg_get(int unit, int port, pm_info_t pm_info, int* value); 103 104 /*local fault set/get*/ 105 int pm4x10Q_port_local_fault_control_set(int unit, int port, pm_info_t pm_info, const portmod_local_fault_control_t* control); 106 int pm4x10Q_port_local_fault_control_get(int unit, int port, pm_info_t pm_info, portmod_local_fault_control_t* control); 107 108 /*remote fault set/get*/ 109 int pm4x10Q_port_remote_fault_control_set(int unit, int port, pm_info_t pm_info, const portmod_remote_fault_control_t* control); 110 int pm4x10Q_port_remote_fault_control_get(int unit, int port, pm_info_t pm_info, portmod_remote_fault_control_t* control); 111 112 /*local fault steatus clear*/ 113 int pm4x10Q_port_local_fault_status_clear(int unit, int port, pm_info_t pm_info); 114 115 /*remote fault status clear*/ 116 int pm4x10Q_port_remote_fault_status_clear(int unit, int port, pm_info_t pm_info); 117 118 /*set/get Pause FC configuration*/ 119 int pm4x10Q_port_pause_control_set(int unit, int port, pm_info_t pm_info, const portmod_pause_control_t* control); 120 int pm4x10Q_port_pause_control_get(int unit, int port, pm_info_t pm_info, portmod_pause_control_t* control); 121 122 /*set/get PFC FC configuration*/ 123 int pm4x10Q_port_pfc_control_set(int unit, int port, pm_info_t pm_info, const portmod_pfc_control_t* control); 124 int pm4x10Q_port_pfc_control_get(int unit, int port, pm_info_t pm_info, portmod_pfc_control_t* control); 125 126 /*set/get LLFC FC configuration*/ 127 int pm4x10Q_port_llfc_control_set(int unit, int port, pm_info_t pm_info, const portmod_llfc_control_t* control); 128 int pm4x10Q_port_llfc_control_get(int unit, int port, pm_info_t pm_info, portmod_llfc_control_t* control); 129 130 /*Routine for MAC\PHY sync.*/ 131 int pm4x10Q_port_update(int unit, int port, pm_info_t pm_info, const portmod_port_update_control_t* update_control); 132 133 /*get port cores' phymod access*/ 134 int pm4x10Q_port_core_access_get(int unit, int port, pm_info_t pm_info, int phyn, int max_cores, phymod_core_access_t* core_access_arr, int* nof_cores, int* is_most_ext); 135 136 /*Get lane phymod access structure. can be used for per lane operations*/ 137 int pm4x10Q_port_phy_lane_access_get(int unit, int port, pm_info_t pm_info, const portmod_access_get_params_t* params, int max_phys, phymod_phy_access_t* access, int* nof_phys, int* is_most_ext); 138 139 /*Port duplex set\get*/ 140 int pm4x10Q_port_duplex_set(int unit, int port, pm_info_t pm_info, int enable); 141 int pm4x10Q_port_duplex_get(int unit, int port, pm_info_t pm_info, int* enable); 142 143 /*Drv Name Get*/ 144 int pm4x10Q_port_drv_name_get(int unit, int port, pm_info_t pm_info, char* name, int len); 145 146 /*get port auto negotiation local ability*/ 147 int pm4x10Q_port_ability_advert_set(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 148 int pm4x10Q_port_ability_advert_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 149 150 /*get port timestamps in fifo*/ 151 int pm4x10Q_port_diag_fifo_status_get(int unit, int port, pm_info_t pm_info, const portmod_fifo_status_t* diag_info); 152 153 /*set PFC config registers.*/ 154 int pm4x10Q_port_pfc_config_set(int unit, int port, pm_info_t pm_info, const portmod_pfc_config_t* pfc_cfg); 155 int pm4x10Q_port_pfc_config_get(int unit, int port, pm_info_t pm_info, portmod_pfc_config_t* pfc_cfg); 156 157 /*set EEE Config.*/ 158 int pm4x10Q_port_eee_set(int unit, int port, pm_info_t pm_info, const portmod_eee_t* eee); 159 int pm4x10Q_port_eee_get(int unit, int port, pm_info_t pm_info, portmod_eee_t* eee); 160 161 /*set Vlan Inner/Outer tag.*/ 162 int pm4x10Q_port_vlan_tag_set(int unit, int port, pm_info_t pm_info, const portmod_vlan_tag_t* vlan_tag); 163 int pm4x10Q_port_vlan_tag_get(int unit, int port, pm_info_t pm_info, portmod_vlan_tag_t* vlan_tag); 164 165 /*Attaches an external phy lane to a specific port macro*/ 166 int pm4x10Q_xphy_lane_attach_to_pm(int unit, pm_info_t pm_info, int iphy, int phyn, const portmod_xphy_lane_connection_t* lane_connection); 167 168 /*Attaches an external phy lane to a specific port macro*/ 169 int pm4x10Q_xphy_lane_detach_from_pm(int unit, pm_info_t pm_info, int iphy, int phyn, portmod_xphy_lane_connection_t* lane_connection); 170 171 /*Toggle Lag Failover Status.*/ 172 int pm4x10Q_port_lag_failover_status_toggle(int unit, int port, pm_info_t pm_info); 173 174 /*set port mode.*/ 175 int pm4x10Q_port_mode_set(int unit, int port, pm_info_t pm_info, const portmod_port_mode_info_t* mode); 176 int pm4x10Q_port_mode_get(int unit, int port, pm_info_t pm_info, portmod_port_mode_info_t* mode); 177 178 /*set port encap.*/ 179 int pm4x10Q_port_encap_set(int unit, int port, pm_info_t pm_info, int flags, portmod_encap_t encap); 180 int pm4x10Q_port_encap_get(int unit, int port, pm_info_t pm_info, int* flags, portmod_encap_t* encap); 181 182 /*port diagnostics control.*/ 183 int pm4x10Q_port_diag_ctrl(int unit, int port, pm_info_t pm_info, uint32 inst, int op_type, int op_cmd, const void* arg); 184 185 /*Get the reference clock value 156 or 125.*/ 186 int pm4x10Q_port_ref_clk_get(int unit, int port, pm_info_t pm_info, int* ref_clk); 187 188 /*Disable lag failover.*/ 189 int pm4x10Q_port_cntmaxsize_set(int unit, int port, pm_info_t pm_info, int val); 190 int pm4x10Q_port_cntmaxsize_get(int unit, int port, pm_info_t pm_info, int* val); 191 192 /*Get Info needed to restore after drain cells.*/ 193 int pm4x10Q_port_drain_cell_get(int unit, int port, pm_info_t pm_info, portmod_drain_cells_t* drain_cells); 194 195 /*Restore informaation after drain cells.*/ 196 int pm4x10Q_port_drain_cell_stop(int unit, int port, pm_info_t pm_info, const portmod_drain_cells_t* drain_cells); 197 198 /*Restore informaation after drain cells.*/ 199 int pm4x10Q_port_drain_cell_start(int unit, int port, pm_info_t pm_info); 200 201 /**/ 202 int pm4x10Q_port_drain_cells_rx_enable(int unit, int port, pm_info_t pm_info, int rx_en); 203 204 /**/ 205 int pm4x10Q_port_txfifo_cell_cnt_get(int unit, int port, pm_info_t pm_info, uint32* cnt); 206 207 /*Check if MAC needs to be reset.*/ 208 int pm4x10Q_port_mac_reset_check(int unit, int port, pm_info_t pm_info, int enable, int* reset); 209 210 /**/ 211 int pm4x10Q_port_core_num_get(int unit, int port, pm_info_t pm_info, int* core_num); 212 213 /*get the speed for the specified port*/ 214 int pm4x10Q_port_speed_get(int unit, int port, pm_info_t pm_info, int* speed); 215 216 /*Port discard set*/ 217 int pm4x10Q_port_discard_set(int unit, int port, pm_info_t pm_info, int discard); 218 219 /*Port soft reset set set*/ 220 int pm4x10Q_port_soft_reset_set(int unit, int port, pm_info_t pm_info, int idx, int val, int flags); 221 222 /*Port tx_en=0 and softreset mac*/ 223 int pm4x10Q_port_tx_down(int unit, int port, pm_info_t pm_info); 224 225 /* portmod check if external phy is legacy*/ 226 int pm4x10Q_port_check_legacy_phy(int unit, int port, pm_info_t pm_info, int* legacy_phy); 227 228 #endif /*_PM4X10Q_H_*/