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

qmod16.h (10632B)


      1 /*----------------------------------------------------------------------
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  *  Broadcom Corporation
      8  *  Proprietary and Confidential information
      9  *  All rights reserved
     10  *  This source file is the property of Broadcom Corporation, and
     11  *  may not be copied or distributed in any isomorphic form without the
     12  *  prior written consent of Broadcom Corporation.
     13  *----------------------------------------------------------------------
     14  *  Description: define enumerators  
     15  *----------------------------------------------------------------------*/
     16 
     17 #ifndef _QMOD16_H_
     18 #define _QMOD16_H_
     19 
     20 #ifndef _DV_TB_
     21 #define _SDK_QMOD16_ 1
     22 #endif
     23 
     24 #ifdef _SDK_QMOD16_
     25 #include <phymod/phymod.h>
     26 #endif
     27 
     28 #ifndef PHYMOD_ST  
     29 #ifdef _SDK_QMOD16_
     30   #define PHYMOD_ST   const phymod_access_t
     31 #else
     32   #define PHYMOD_ST  qmod16_st
     33 #endif /* _SDK_QMOD16_ */
     34 #endif /* PHYMOD_ST */
     35 
     36 #ifdef _DV_TB_
     37 #include <stdint.h>
     38 #include <stdio.h>
     39 #include <string.h>
     40 #include <stdlib.h>
     41 #include "errno.h"
     42 #endif
     43 
     44 typedef enum {
     45     QMOD16_AN_MODE_NONE = 0,
     46     QMOD16_AN_MODE_CL37 = 1,
     47     QMOD16_AN_MODE_CL37BAM = 2,
     48     QMOD16_AN_MODE_SGMII = 4,
     49     QMOD16_AN_MODE_TYPE_COUNT
     50 }qmod16_an_mode_type_t;
     51 
     52 typedef enum {
     53     QMOD16_TX_LANE_RESET = 0,
     54     QMOD16_TX_LANE_TRAFFIC_ENABLE = 1,
     55     QMOD16_TX_LANE_TRAFFIC_DISABLE = 2,
     56     QMOD16_TX_LANE_RESET_TRAFFIC_ENABLE = 3,
     57     QMOD16_TX_LANE_RESET_TRAFFIC_DISABLE = 4,
     58     QMOD16_TX_LANE_TYPE_COUNT
     59 
     60 }tx_lane_disable_type_t;
     61 
     62 
     63 typedef struct qmod16_an_adv_ability_s{
     64   uint16_t an_base_speed; 
     65   uint16_t an_bam_speed; 
     66   uint16_t an_bam_speed1; 
     67   uint16_t an_nxt_page; 
     68   uint16_t an_pause;
     69   uint16_t an_duplex;
     70   uint16_t cl37_sgmii_speed;
     71   qmod16_an_mode_type_t an_type;
     72 } qmod16_an_adv_ability_t;
     73 
     74 #define QMOD16_AN_FULL_DUPLEX_SET   0x1
     75 #define QMOD16_AN_HALF_DUPLEX_SET   0x2
     76 
     77 typedef struct qmod16_an_ability_s {
     78     qmod16_an_adv_ability_t cl37_adv;  /*include cl37 and cl37-bam related */
     79 } qmod16_an_ability_t;
     80 
     81 typedef struct qmod16_an_control_s {
     82   qmod16_an_mode_type_t an_type; 
     83   uint16_t num_lane_adv; 
     84   uint16_t enable;
     85   uint16_t pd_kx_en;
     86   uint16_t pd_kx4_en;
     87   an_property_enable  an_property_type;
     88 } qmod16_an_control_t;
     89 
     90 typedef enum {
     91     QMOD16_CL37_SGMII_10M = 0,
     92     QMOD16_CL37_SGMII_100M,
     93     QMOD16_CL37_SGMII_1000M,
     94     QMOD16_CL37_SGMII_2500M = 4,
     95     QMOD16_CL37_SGMII_SPEED_COUNT
     96 }qmod16_cl37_sgmii_speed_t;
     97 
     98 typedef enum {
     99     QMOD16_CL37_BAM_2p5GBASE_X = 0,
    100     QMOD16_CL37_BAM_SPEED_COUNT
    101 }qmod16_cl37_bam_speed_t;
    102 
    103 typedef enum {
    104     QMOD16_NO_PAUSE = 0,
    105     QMOD16_SYMM_PAUSE,
    106     QMOD16_ASYM_PAUSE,
    107     QMOD16_ASYM_SYMM_PAUSE,
    108     QMOD16_AN_PAUSE_COUNT
    109 }qmod16_an_pause_t;
    110 
    111 typedef struct qmod16_an_init_s{
    112   uint16_t  an_fail_cnt;
    113   uint16_t  an_oui_ctrl; 
    114   uint16_t  linkfailtimer_dis; 
    115   uint16_t  linkfailtimerqua_en; 
    116   uint16_t  an_good_check_trap; 
    117   uint16_t  an_good_trap; 
    118   uint16_t  disable_rf_report; 
    119   uint16_t  cl37_bam_ovr1g_pgcnt; 
    120   uint16_t  base_selector;
    121 } qmod16_an_init_t;
    122 
    123 
    124 typedef struct qmod16_an_timers_s{
    125   uint16_t  value;
    126 } qmod16_an_timers_t;
    127 
    128 extern int qmod16_pll_lock_wait(PHYMOD_ST* pc, int timeOutValue);
    129 extern int qmod16_credit_control(PHYMOD_ST* pc, int enable);
    130 extern int qmod16_tx_lane_control(PHYMOD_ST* pc, int enable, tx_lane_disable_type_t tx_dis_type);
    131 extern int qmod16_power_control(PHYMOD_ST* pc);
    132 extern int qmod16_override_set(PHYMOD_ST* pc, override_type_t or_type, uint16_t or_val);
    133 extern int qmod16_credit_set(PHYMOD_ST* pc, credit_type_t credit_type, int userCredit);
    134 extern int qmod16_rx_lane_control_set(PHYMOD_ST* pc, int enable);        
    135 extern int qmod16_mld_am_timers_set(PHYMOD_ST* pc, int rx_am_timer_init,int tx_am_timer_init_val);
    136 extern int qmod16_init_pmd(PHYMOD_ST* pc, int pmd_touched, int uc_active);
    137 extern int qmod16_pmd_osmode_set(PHYMOD_ST* pc, qmod16_spd_intfc_type spd_intf, int os_mode);
    138 extern int qmod16_pmd_osmode_get(PHYMOD_ST* pc, int* os_mode);
    139 extern int qmod16_pll_lock_get(PHYMOD_ST* pc, int* lockStatus);
    140 extern int qmod16_pmd_lock_get(PHYMOD_ST* pc, uint32_t* lockStatus);
    141 extern int qmod16_wait_pmd_lock(PHYMOD_ST* pc, int timeOutValue, int* lockStatus);
    142 extern int qmod16_pcs_bypass_ctl (PHYMOD_ST* pc, int cntl);
    143 extern int qmod16_pmd_reset_bypass (PHYMOD_ST* pc, int cntl);
    144 extern int qmod16_set_pll_mode(PHYMOD_ST* pc, int pmd_tched, qmod16_spd_intfc_type sp, int pll_mode);
    145 extern int qmod16_tick_override_set(PHYMOD_ST* pc, int tick_override, int numerator, int denominator);
    146 extern int qmod16_tx_loopback_control(PHYMOD_ST* pc, int enable, int starting_lane, int port_type);
    147 extern int qmod16_tx_pmd_loopback_control(PHYMOD_ST* pc, int cntl);
    148 extern int qmod16_rx_loopback_control(PHYMOD_ST* pc, int enable, int starting_lane, int port_type);
    149 extern int qmod16_rx_loopback_get(PHYMOD_ST* pc, uint32_t *enable);
    150 extern int qmod16_spd_intf_get(PHYMOD_ST* pc, int *spd_intf);
    151 extern int qmod16_revid_read(PHYMOD_ST* pc, uint32_t *revid);
    152 extern int qmod16_init_pcs(PHYMOD_ST* pc);
    153 extern int qmod16_pmd_reset_seq(PHYMOD_ST* pc, int pmd_touched);
    154 extern int qmod16_wait_sc_done(PHYMOD_ST* pc, uint16_t *data);
    155 extern int qmod16_get_pcs_link_status(PHYMOD_ST* pc, uint32_t sub_port, uint32_t *link);
    156 extern int qmod16_disable_set(PHYMOD_ST* pc);
    157 extern int qmod16_pmd_x4_reset(PHYMOD_ST* pc);
    158 extern int qmod16_init_pmd_sw(PHYMOD_ST* pc, int pmd_touched, int uc_active,
    159                              qmod16_spd_intfc_type spd_intf,  int t_pma_os_mode);
    160 extern int qmod16_credit_override_set(PHYMOD_ST* pc, credit_type_t credit_type, int userCredit);
    161 extern int qmod16_pmd_lane_reset(PHYMOD_ST* pc);
    162 extern int qmod16_pcs_lane_swap(PHYMOD_ST *pc, int lane_tx_map, int lane_rx_map);
    163 extern int qmod16_pcs_lane_swap_get (PHYMOD_ST *pc,  uint32_t *tx_swap, uint32_t *rx_swap);
    164 extern int qmod16_master_port_num_set(PHYMOD_ST *pa,  int port_num);
    165 extern int qmod16_pmd_addr_lane_swap (PHYMOD_ST *pc, uint32_t addr_lane_index);
    166 extern int qmod16_pmd_lane_swap_tx(PHYMOD_ST *pc, uint32_t tx_lane_map);
    167 extern int qmod16_rx_lane_control_get(PHYMOD_ST* pc, int *value);
    168 extern int qmod16_trigger_speed_change(PHYMOD_ST* pc);
    169 extern int qmod16_pmd_override_control(PHYMOD_ST* pc, int cntl, int value);
    170 extern int qmod16_tx_rx_polarity_set (PHYMOD_ST *pc, uint32_t txp, uint32_t rxp);
    171 extern int qmod16_pmd_lane_swap_tx_get (PHYMOD_ST *pc, uint32_t *tx_lane_map);
    172 extern int qmod16_pram_abl_enable_set(PHYMOD_ST* pc, int enable);
    173 extern int qmod16_tx_rx_polarity_get (PHYMOD_ST *pc, uint32_t* txp, uint32_t* rxp);
    174 extern int qmod16_clause72_control(PHYMOD_ST *pc, int cl72_en);
    175 extern int qmod16_port_enable_set(PHYMOD_ST *pc, int enable);
    176 extern int qmod16_update_port_mode(PHYMOD_ST *pa, int single_port_mode);
    177 extern int qmod16_tx_squelch_set(PHYMOD_ST *pc, int enable);
    178 extern int qmod16_rx_squelch_set(PHYMOD_ST *pc, int enable);
    179 extern int qmod16_tx_squelch_get(PHYMOD_ST *pc, int *enable);
    180 extern int qmod16_rx_squelch_get(PHYMOD_ST *pc, int *enable);
    181 extern int qmod16_tx_lane_control_set(PHYMOD_ST* pc, tx_lane_disable_type_t tx_dis_type);
    182 extern int qmod16_tx_lane_control_get(PHYMOD_ST* pc, int *reset, int *enable);
    183 extern int qmod16_get_plldiv (PHYMOD_ST *pc,  uint32_t *pll_div);
    184 extern int qmod16_plldiv_lkup_get(PHYMOD_ST* pc, qmod16_spd_intfc_type spd_intf, uint32_t *plldiv, uint16_t *speed_vec);
    185 extern int qmod16_osdfe_on_lkup_get(PHYMOD_ST* pc, qmod16_spd_intfc_type spd_intf, uint32_t *osdfe_on);
    186 extern int qmod16_pll_reset_enable_set (PHYMOD_ST *pa , int enable);
    187 extern int qmod16_set_spd_intf(PHYMOD_ST *pc, qmod16_spd_intfc_type spd_intf, int no_trig);
    188 extern int qmod16_speed_id_get (PHYMOD_ST *pc,  int *speed_id, int subport);
    189 extern int qmod16_refclk_set(PHYMOD_ST* pc, qmod16_ref_clk_t refclk);
    190 int qmod16_tx_loopback_get(PHYMOD_ST* pc, uint32_t *enable);      
    191 extern int qmod16_autoneg_local_ability_get(PHYMOD_ST* pc, qmod16_an_ability_t *an_ability_st, int sub_port);
    192 extern int qmod16_autoneg_remote_ability_get(PHYMOD_ST* pc, qmod16_an_ability_t *an_ability_st, int sub_port);
    193 extern int qmod16_autoneg_resolution_ability_get(PHYMOD_ST* pc, qmod16_an_ability_t *an_ability_st, int sub_port);
    194 extern int qmod16_autoneg_control_get(PHYMOD_ST* pc, int sub_port, qmod16_an_control_t *an_control, int *an_complete);
    195 extern int qmod16_set_qport_spd(PHYMOD_ST* pc, int sub_port, qmod16_spd_intfc_type spd_intf);
    196 #ifdef _SDK_QMOD16_
    197 extern int qmod16_autoneg_set_init(PHYMOD_ST* pc, qmod16_an_init_t *an_init_st); 
    198 extern int qmod16_autoneg_control(PHYMOD_ST* pc, qmod16_an_control_t *an_control, int sub_port); 
    199 extern int qmod16_autoneg_timer_init(PHYMOD_ST* pc);
    200 extern int qmod16_autoneg_set(PHYMOD_ST* pc, qmod16_an_ability_t *an_ability_st, int sub_port);
    201 extern int qmod16_set_an_port_mode(PHYMOD_ST* pc, int num_of_lanes, int starting_lane, int single_port);
    202 extern int qmod16_pmd_lane_swap_tx(PHYMOD_ST *pc, uint32_t tx_lane_map);
    203 extern int qmod16_lane_info(PHYMOD_ST* pc, int *lane, int *sub_port);
    204 extern int qmod16_get_mapped_speed(qmod16_spd_intfc_type spd_intf, int *speed);
    205 extern int qmod16_diag_disp(PHYMOD_ST *pc, const char* mystr);
    206 extern int qmod16_reset(PHYMOD_ST* pc);
    207 extern int qmod16_autoneg_cl37_base_abilities(PHYMOD_ST* pc, qmod16_an_ability_t *an_ability, int sub_port);
    208 extern int qmod16_an_cl37_bam_abilities(PHYMOD_ST* pc, qmod16_an_ability_t *an_ability, int sub_port);
    209 extern int qmod16_speedchange_get(PHYMOD_ST* pc, uint32_t *enable);
    210 extern int qmod16_get_qport_spd(PHYMOD_ST* pc, int sub_port, qmod16_spd_intfc_type *spd_intf);
    211 extern int qmod16_port_state_set(PHYMOD_ST* pc, int qmod16_state_type, int sub_port, int val);
    212 extern int qmod16_port_state_get(PHYMOD_ST* pc, int qmod16_state_type, int *all_sub_port_val);
    213 extern int qmod16_pmd_x4_reset_get(PHYMOD_ST* pc, int *value);
    214 extern int qmod16_usgmii_shim_fifo_threshold_set(PHYMOD_ST* pc);
    215 #endif
    216 
    217 #define QMOD16_PORT_STATE_CONFIGED    1
    218 #define QMOD16_PORT_STATE_TX_SQUELCH  2
    219 #define QMOD16_PORT_STATE_RX_SQUELCH  3
    220 
    221 int qmod16_eee_control_set(PHYMOD_ST* pc, uint32_t enable);
    222 int qmod16_eee_control_get(PHYMOD_ST* pc, uint32_t *enable);
    223 
    224 extern int qmod16_synce_mode_set(PHYMOD_ST *pc, int mode0, int mode1);
    225 extern int qmod16_synce_mode_get(PHYMOD_ST *pc, int *mode0, int *mode1);
    226 extern int qmod16_synce_clk_ctrl_set(PHYMOD_ST *pc, uint32_t val);
    227 extern int qmod16_synce_clk_ctrl_get(PHYMOD_ST *pc, uint32_t *val);
    228 
    229 int get_mapped_speed(qmod16_spd_intfc_type spd_intf, int *speed);
    230 int get_actual_speed(int speed_id, int *speed);
    231 
    232 #endif  /*  _qmod16_H_ */
    233