openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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_*/