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

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