pm_qtc.h (15365B)
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 _PM_QTC_H__H_ 14 #define _PM_QTC_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 pm_qtc_pm_interface_type_is_supported(int unit, soc_port_if_t interface, int* is_supported); 23 24 /*Add new pm.*/ 25 int pm_qtc_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 pm_qtc_pm_destroy(int unit, pm_info_t pm_info); 29 30 /*Add new port*/ 31 int pm_qtc_port_attach(int unit, int port, pm_info_t pm_info, const portmod_port_add_info_t* add_info); 32 33 /*Replace the default bus and FW load method*/ 34 int pm_qtc_default_bus_update(int unit, pm_info_t pm_info, const portmod_bus_update_t* update); 35 36 /*Set PM in bypass mode. should be called in the aggregator code.*/ 37 int pm_qtc_pm_bypass_set(int unit, pm_info_t pm_info, int enable); 38 39 /*get port cores' phymod access*/ 40 int pm_qtc_pm_core_info_get(int unit, pm_info_t pm_info, int phyn, portmod_pm_core_info_t* core_info); 41 42 /*Port remove in PM level*/ 43 int pm_qtc_port_detach(int unit, int port, pm_info_t pm_info); 44 45 /*Port enable*/ 46 int pm_qtc_port_enable_set(int unit, int port, pm_info_t pm_info, int flags, int enable); 47 int pm_qtc_port_enable_get(int unit, int port, pm_info_t pm_info, int flags, int* enable); 48 49 /* set/get the interface, speed and encapsulation for the specified port. 50 For the First port within core this function initialize the PM, MAC and PHY before configure the port.*/ 51 int pm_qtc_port_interface_config_set(int unit, int port, pm_info_t pm_info, const portmod_port_interface_config_t* config, int phy_init_flags); 52 int pm_qtc_port_interface_config_get(int unit, int port, pm_info_t pm_info, portmod_port_interface_config_t* config, int phy_init_flags); 53 54 /* 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*/ 55 int pm_qtc_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); 56 57 /*Port speed set\get*/ 58 int pm_qtc_port_loopback_set(int unit, int port, pm_info_t pm_info, portmod_loopback_mode_t loopback_type, int enable); 59 int pm_qtc_port_loopback_get(int unit, int port, pm_info_t pm_info, portmod_loopback_mode_t loopback_type, int* enable); 60 61 /*Port RX MAC ENABLE set\get*/ 62 int pm_qtc_port_rx_mac_enable_set(int unit, int port, pm_info_t pm_info, int enable); 63 int pm_qtc_port_rx_mac_enable_get(int unit, int port, pm_info_t pm_info, int* enable); 64 65 /*get port auto negotiation local ability*/ 66 int pm_qtc_port_ability_local_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 67 68 /*Set\Get autoneg*/ 69 int pm_qtc_port_autoneg_set(int unit, int port, pm_info_t pm_info, uint32 phy_flags, const phymod_autoneg_control_t* an); 70 int pm_qtc_port_autoneg_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, phymod_autoneg_control_t* an); 71 72 /*Get autoneg status*/ 73 int pm_qtc_port_autoneg_status_get(int unit, int port, pm_info_t pm_info, phymod_autoneg_status_t* an_status); 74 75 /*get link status*/ 76 int pm_qtc_port_link_get(int unit, int port, pm_info_t pm_info, int flags, int* link); 77 78 /*PRBS configuration set/get*/ 79 int pm_qtc_port_prbs_config_set(int unit, int port, pm_info_t pm_info, portmod_prbs_mode_t mode, int flags, const phymod_prbs_t* config); 80 int pm_qtc_port_prbs_config_get(int unit, int port, pm_info_t pm_info, portmod_prbs_mode_t mode, int flags, phymod_prbs_t* config); 81 82 /*PRBS enable set/get*/ 83 int pm_qtc_port_prbs_enable_set(int unit, int port, pm_info_t pm_info, portmod_prbs_mode_t mode, int flags, int enable); 84 int pm_qtc_port_prbs_enable_get(int unit, int port, pm_info_t pm_info, portmod_prbs_mode_t mode, int flags, int* enable); 85 86 /*PRBS status get*/ 87 int pm_qtc_port_prbs_status_get(int unit, int port, pm_info_t pm_info, portmod_prbs_mode_t mode, int flags, phymod_prbs_status_t* status); 88 89 /*Set port PHYs' firmware mode*/ 90 int pm_qtc_port_firmware_mode_set(int unit, int port, pm_info_t pm_info, phymod_firmware_mode_t fw_mode); 91 int pm_qtc_port_firmware_mode_get(int unit, int port, pm_info_t pm_info, phymod_firmware_mode_t* fw_mode); 92 93 /*Filter packets smaller than the specified threshold*/ 94 int pm_qtc_port_runt_threshold_set(int unit, int port, pm_info_t pm_info, int value); 95 int pm_qtc_port_runt_threshold_get(int unit, int port, pm_info_t pm_info, int* value); 96 97 /*Filter packets bigger than the specified value*/ 98 int pm_qtc_port_max_packet_size_set(int unit, int port, pm_info_t pm_info, int value); 99 int pm_qtc_port_max_packet_size_get(int unit, int port, pm_info_t pm_info, int* value); 100 101 /*TX pad packets to the specified size. values smaller than 17 means pad is disabled.*/ 102 int pm_qtc_port_pad_size_set(int unit, int port, pm_info_t pm_info, int value); 103 int pm_qtc_port_pad_size_get(int unit, int port, pm_info_t pm_info, int* value); 104 105 /*set/get the MAC source address that will be sent in case of Pause/LLFC*/ 106 int pm_qtc_port_tx_mac_sa_set(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 107 int pm_qtc_port_tx_mac_sa_get(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 108 109 /*set/get SA recognized for MAC control packets in addition to the standard 0x0180C2000001*/ 110 int pm_qtc_port_rx_mac_sa_set(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 111 int pm_qtc_port_rx_mac_sa_get(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_sa); 112 113 /*set/get Average inter-packet gap*/ 114 int pm_qtc_port_tx_average_ipg_set(int unit, int port, pm_info_t pm_info, int value); 115 int pm_qtc_port_tx_average_ipg_get(int unit, int port, pm_info_t pm_info, int* value); 116 117 /*local fault set/get*/ 118 int pm_qtc_port_local_fault_control_set(int unit, int port, pm_info_t pm_info, const portmod_local_fault_control_t* control); 119 int pm_qtc_port_local_fault_control_get(int unit, int port, pm_info_t pm_info, portmod_local_fault_control_t* control); 120 121 /*remote fault set/get*/ 122 int pm_qtc_port_remote_fault_control_set(int unit, int port, pm_info_t pm_info, const portmod_remote_fault_control_t* control); 123 int pm_qtc_port_remote_fault_control_get(int unit, int port, pm_info_t pm_info, portmod_remote_fault_control_t* control); 124 125 /*local fault steatus get*/ 126 int pm_qtc_port_local_fault_status_get(int unit, int port, pm_info_t pm_info, int* value); 127 128 /*remote fault status get*/ 129 int pm_qtc_port_remote_fault_status_get(int unit, int port, pm_info_t pm_info, int* value); 130 131 /*set/get Pause FC configuration*/ 132 int pm_qtc_port_pause_control_set(int unit, int port, pm_info_t pm_info, const portmod_pause_control_t* control); 133 int pm_qtc_port_pause_control_get(int unit, int port, pm_info_t pm_info, portmod_pause_control_t* control); 134 135 /*set/get PFC FC configuration*/ 136 int pm_qtc_port_pfc_control_set(int unit, int port, pm_info_t pm_info, const portmod_pfc_control_t* control); 137 int pm_qtc_port_pfc_control_get(int unit, int port, pm_info_t pm_info, portmod_pfc_control_t* control); 138 139 /*set/get LLFC FC configuration*/ 140 int pm_qtc_port_llfc_control_set(int unit, int port, pm_info_t pm_info, const portmod_llfc_control_t* control); 141 int pm_qtc_port_llfc_control_get(int unit, int port, pm_info_t pm_info, portmod_llfc_control_t* control); 142 143 /*Routine for MAC\PHY sync.*/ 144 int pm_qtc_port_update(int unit, int port, pm_info_t pm_info, const portmod_port_update_control_t* update_control); 145 146 /*get port cores' phymod access*/ 147 int pm_qtc_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); 148 149 /*Get lane phymod access structure. can be used for per lane operations*/ 150 int pm_qtc_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); 151 152 /*Port duplex set\get*/ 153 int pm_qtc_port_duplex_set(int unit, int port, pm_info_t pm_info, int enable); 154 int pm_qtc_port_duplex_get(int unit, int port, pm_info_t pm_info, int* enable); 155 156 /*Port PHY Control register read*/ 157 int pm_qtc_port_phy_reg_read(int unit, int port, pm_info_t pm_info, int lane, int flags, int reg_addr, uint32* value); 158 159 /*Port PHY Control register write*/ 160 int pm_qtc_port_phy_reg_write(int unit, int port, pm_info_t pm_info, int lane, int flags, int reg_addr, uint32 value); 161 162 /*Port Reset set\get*/ 163 int pm_qtc_port_reset_set(int unit, int port, pm_info_t pm_info, int mode, int opcode, int value); 164 int pm_qtc_port_reset_get(int unit, int port, pm_info_t pm_info, int mode, int opcode, int* value); 165 166 /*Port remote Adv get*/ 167 int pm_qtc_port_adv_remote_get(int unit, int port, pm_info_t pm_info, int* value); 168 169 /*Drv Name Get*/ 170 int pm_qtc_port_drv_name_get(int unit, int port, pm_info_t pm_info, char* name, int len); 171 172 /*get port auto negotiation local ability*/ 173 int pm_qtc_port_ability_advert_set(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 174 int pm_qtc_port_ability_advert_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 175 176 /*Port ability remote Adv get*/ 177 int pm_qtc_port_ability_remote_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags, portmod_port_ability_t* ability); 178 179 /*Port Mac Control Spacing Stretch*/ 180 int pm_qtc_port_frame_spacing_stretch_set(int unit, int port, pm_info_t pm_info, int spacing); 181 int pm_qtc_port_frame_spacing_stretch_get(int unit, int port, pm_info_t pm_info, const int* spacing); 182 183 /*get port timestamps in fifo*/ 184 int pm_qtc_port_diag_fifo_status_get(int unit, int port, pm_info_t pm_info, const portmod_fifo_status_t* diag_info); 185 186 /*set/get pass control frames.*/ 187 int pm_qtc_port_rx_control_set(int unit, int port, pm_info_t pm_info, const portmod_rx_control_t* rx_ctrl); 188 int pm_qtc_port_rx_control_get(int unit, int port, pm_info_t pm_info, portmod_rx_control_t* rx_ctrl); 189 190 /*set PFC config registers.*/ 191 int pm_qtc_port_pfc_config_set(int unit, int port, pm_info_t pm_info, const portmod_pfc_config_t* pfc_cfg); 192 int pm_qtc_port_pfc_config_get(int unit, int port, pm_info_t pm_info, portmod_pfc_config_t* pfc_cfg); 193 194 /*set EEE Config.*/ 195 int pm_qtc_port_eee_set(int unit, int port, pm_info_t pm_info, const portmod_eee_t* eee); 196 int pm_qtc_port_eee_get(int unit, int port, pm_info_t pm_info, portmod_eee_t* eee); 197 198 /*set Vlan Inner/Outer tag.*/ 199 int pm_qtc_port_vlan_tag_set(int unit, int port, pm_info_t pm_info, const portmod_vlan_tag_t* vlan_tag); 200 int pm_qtc_port_vlan_tag_get(int unit, int port, pm_info_t pm_info, portmod_vlan_tag_t* vlan_tag); 201 202 /*set modid field.*/ 203 int pm_qtc_port_modid_set(int unit, int port, pm_info_t pm_info, int value); 204 205 /*set modid field.*/ 206 int pm_qtc_port_clear_rx_lss_status_set(int unit, int port, pm_info_t pm_info, int lcl_fault, int rmt_fault); 207 int pm_qtc_port_clear_rx_lss_status_get(int unit, int port, pm_info_t pm_info, int* lcl_fault, int* rmt_fault); 208 209 /*Toggle Lag Failover Status.*/ 210 int pm_qtc_port_lag_failover_status_toggle(int unit, int port, pm_info_t pm_info); 211 212 /*Toggle Lag Failover loopback set / get.*/ 213 int pm_qtc_port_lag_failover_loopback_set(int unit, int port, pm_info_t pm_info, int value); 214 int pm_qtc_port_lag_failover_loopback_get(int unit, int port, pm_info_t pm_info, int* value); 215 216 /*set port mode.*/ 217 int pm_qtc_port_mode_set(int unit, int port, pm_info_t pm_info, const portmod_port_mode_info_t* mode); 218 int pm_qtc_port_mode_get(int unit, int port, pm_info_t pm_info, portmod_port_mode_info_t* mode); 219 220 /*set port encap.*/ 221 int pm_qtc_port_encap_set(int unit, int port, pm_info_t pm_info, int flags, portmod_encap_t encap); 222 int pm_qtc_port_encap_get(int unit, int port, pm_info_t pm_info, int* flags, portmod_encap_t* encap); 223 224 /*set port register port type field.*/ 225 int pm_qtc_port_config_port_type_set(int unit, int port, pm_info_t pm_info, int type); 226 int pm_qtc_port_config_port_type_get(int unit, int port, pm_info_t pm_info, int* type); 227 228 /*set/get hwfailover for trident.*/ 229 int pm_qtc_port_trunk_hwfailover_config_set(int unit, int port, pm_info_t pm_info, int hw_count); 230 int pm_qtc_port_trunk_hwfailover_config_get(int unit, int port, pm_info_t pm_info, int* enable); 231 232 /*set/get hwfailover for trident.*/ 233 int pm_qtc_port_trunk_hwfailover_status_get(int unit, int port, pm_info_t pm_info, int* loopback); 234 235 /*port diagnostics control.*/ 236 int pm_qtc_port_diag_ctrl(int unit, int port, pm_info_t pm_info, uint32 inst, int op_type, int op_cmd, const void* arg); 237 238 /*Get the reference clock value 156 or 125.*/ 239 int pm_qtc_port_ref_clk_get(int unit, int port, pm_info_t pm_info, int* ref_clk); 240 241 /*Disable lag failover.*/ 242 int pm_qtc_port_lag_failover_disable(int unit, int port, pm_info_t pm_info); 243 244 /*Disable lag failover.*/ 245 int pm_qtc_port_lag_remove_failover_lpbk_set(int unit, int port, pm_info_t pm_info, int val); 246 int pm_qtc_port_lag_remove_failover_lpbk_get(int unit, int port, pm_info_t pm_info, int* val); 247 248 /*Disable lag failover.*/ 249 int pm_qtc_port_cntmaxsize_set(int unit, int port, pm_info_t pm_info, int val); 250 int pm_qtc_port_cntmaxsize_get(int unit, int port, pm_info_t pm_info, int* val); 251 252 /*Get Info needed to restore after drain cells.*/ 253 int pm_qtc_port_drain_cell_get(int unit, int port, pm_info_t pm_info, portmod_drain_cells_t* drain_cells); 254 255 /*Restore informaation after drain cells.*/ 256 int pm_qtc_port_drain_cell_stop(int unit, int port, pm_info_t pm_info, const portmod_drain_cells_t* drain_cells); 257 258 /*Restore informaation after drain cells.*/ 259 int pm_qtc_port_drain_cell_start(int unit, int port, pm_info_t pm_info); 260 261 /**/ 262 int pm_qtc_port_drain_cells_rx_enable(int unit, int port, pm_info_t pm_info, int rx_en); 263 264 /**/ 265 int pm_qtc_port_egress_queue_drain_rx_en(int unit, int port, pm_info_t pm_info, int rx_en); 266 267 /**/ 268 int pm_qtc_port_mac_ctrl_set(int unit, int port, pm_info_t pm_info, uint64 ctrl); 269 270 /**/ 271 int pm_qtc_port_txfifo_cell_cnt_get(int unit, int port, pm_info_t pm_info, uint32* cnt); 272 273 /**/ 274 int pm_qtc_port_egress_queue_drain_get(int unit, int port, pm_info_t pm_info, uint64* ctrl, int* rxen); 275 276 /*Set/get port mac reset */ 277 int pm_qtc_port_mac_reset_set(int unit, int port, pm_info_t pm_info, int val); 278 int pm_qtc_port_mac_reset_get(int unit, int port, pm_info_t pm_info, int* val); 279 280 /**/ 281 int pm_qtc_port_soft_reset_toggle(int unit, int port, pm_info_t pm_info, int idx); 282 283 /*Check if MAC needs to be reset.*/ 284 int pm_qtc_port_mac_reset_check(int unit, int port, pm_info_t pm_info, int enable, int* reset); 285 286 /**/ 287 int pm_qtc_port_core_num_get(int unit, int port, pm_info_t pm_info, int* core_num); 288 289 /**/ 290 int pm_qtc_port_e2ecc_hdr_set(int unit, int port, pm_info_t pm_info, const portmod_port_higig_e2ecc_hdr_t* e2ecc_hdr); 291 int pm_qtc_port_e2ecc_hdr_get(int unit, int port, pm_info_t pm_info, portmod_port_higig_e2ecc_hdr_t* e2ecc_hdr); 292 293 /**/ 294 int pm_qtc_port_e2e_enable_set(int unit, int port, pm_info_t pm_info, int enable); 295 int pm_qtc_port_e2e_enable_get(int unit, int port, pm_info_t pm_info, int* enable); 296 297 /**/ 298 int pm_qtc_port_fallback_lane_get(int unit, int port, pm_info_t pm_info, int* fallback_lane); 299 300 #endif /*_PM_QTC_H_*/