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

qmod.h (10846B)


      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  *  
     18  * $Copyright:
     19  * All Rights Reserved.$
     20  */
     21 
     22 #ifndef _QMOD_H_
     23 #define _QMOD_H_
     24 
     25 #ifndef _DV_TB_
     26 #define _SDK_QMOD_ 1
     27 #endif
     28 
     29 #ifdef _SDK_QMOD_
     30 #include <phymod/phymod.h>
     31 #endif
     32 
     33 #ifndef PHYMOD_ST  
     34 #ifdef _SDK_QMOD_
     35   #define PHYMOD_ST   const phymod_access_t
     36 #else
     37   #define PHYMOD_ST  qmod_st
     38 #endif /* _SDK_QMOD_ */
     39 #endif /* PHYMOD_ST */
     40 
     41 #ifdef _DV_TB_
     42 #include <stdint.h>
     43 #include <stdio.h>
     44 #include <string.h>
     45 #include <stdlib.h>
     46 #include "errno.h"
     47 #endif
     48 
     49 typedef enum {
     50     QMOD_AN_MODE_NONE = 0,
     51     QMOD_AN_MODE_CL37 = 1,
     52     QMOD_AN_MODE_CL37BAM = 2,
     53     QMOD_AN_MODE_SGMII = 4,
     54     QMOD_AN_MODE_TYPE_COUNT
     55 }qmod_an_mode_type_t;
     56 
     57 typedef enum {
     58     QMOD_TX_LANE_RESET = 0,
     59     QMOD_TX_LANE_TRAFFIC_ENABLE = 1,
     60     QMOD_TX_LANE_TRAFFIC_DISABLE = 2,
     61     QMOD_TX_LANE_RESET_TRAFFIC_ENABLE = 3,
     62     QMOD_TX_LANE_RESET_TRAFFIC_DISABLE = 4,
     63     QMOD_TX_LANE_TYPE_COUNT
     64 
     65 }tx_lane_disable_type_t;
     66 
     67 
     68 typedef struct qmod_an_adv_ability_s{
     69   uint16_t an_base_speed; 
     70   uint16_t an_bam_speed; 
     71   uint16_t an_bam_speed1; 
     72   uint16_t an_nxt_page; 
     73   uint16_t an_pause;
     74   uint16_t an_duplex;
     75   uint16_t cl37_sgmii_speed;
     76   qmod_an_mode_type_t an_type;
     77 } qmod_an_adv_ability_t;
     78 
     79 #define QMOD_AN_FULL_DUPLEX_SET   0x1
     80 #define QMOD_AN_HALF_DUPLEX_SET   0x2
     81 
     82 typedef struct qmod_an_ability_s {
     83     qmod_an_adv_ability_t cl37_adv;  /*include cl37 and cl37-bam related */
     84 } qmod_an_ability_t;
     85 
     86 typedef struct qmod_an_control_s {
     87   qmod_an_mode_type_t an_type; 
     88   uint16_t num_lane_adv; 
     89   uint16_t enable;
     90   uint16_t pd_kx_en;
     91   uint16_t pd_kx4_en;
     92   an_property_enable  an_property_type;
     93 } qmod_an_control_t;
     94 
     95 typedef enum {
     96     QMOD_CL37_SGMII_10M = 0,
     97     QMOD_CL37_SGMII_100M,
     98     QMOD_CL37_SGMII_1000M,
     99     QMOD_CL37_SGMII_SPEED_COUNT
    100 }qmod_cl37_sgmii_speed_t;
    101 
    102 typedef enum {
    103     QMOD_CL37_BAM_2p5GBASE_X = 0,
    104     QMOD_CL37_BAM_SPEED_COUNT
    105 }qmod_cl37_bam_speed_t;
    106 
    107 typedef enum {
    108     QMOD_NO_PAUSE = 0,
    109     QMOD_SYMM_PAUSE,
    110     QMOD_ASYM_PAUSE,
    111     QMOD_ASYM_SYMM_PAUSE,
    112     QMOD_AN_PAUSE_COUNT
    113 }qmod_an_pause_t;
    114 
    115 typedef struct qmod_an_init_s{
    116   uint16_t  an_fail_cnt;
    117   uint16_t  an_oui_ctrl; 
    118   uint16_t  linkfailtimer_dis; 
    119   uint16_t  linkfailtimerqua_en; 
    120   uint16_t  an_good_check_trap; 
    121   uint16_t  an_good_trap; 
    122   uint16_t  disable_rf_report; 
    123   uint16_t  cl37_bam_ovr1g_pgcnt; 
    124   uint16_t  base_selector;
    125 } qmod_an_init_t;
    126 
    127 typedef enum {
    128     QMOD_PMD_LANE_SIGNAL_DETECT_OVRD = 0,
    129     QMOD_PMD_LANE_RX_LOCK_OVRD,
    130     QMOD_PMD_LANE_OVRD_COUNT
    131 }qmod_pmd_lane_override_t;
    132 
    133 
    134 typedef struct qmod_an_timers_s{
    135   uint16_t  value;
    136 } qmod_an_timers_t;
    137 
    138 extern int qmod_pll_lock_wait(PHYMOD_ST* pc, int timeOutValue);
    139 extern int qmod_credit_control(PHYMOD_ST* pc, int enable);
    140 extern int qmod_tx_lane_control(PHYMOD_ST* pc, int enable, tx_lane_disable_type_t tx_dis_type);
    141 extern int qmod_power_control(PHYMOD_ST* pc);
    142 extern int qmod_override_set(PHYMOD_ST* pc, override_type_t or_type, uint16_t or_val);
    143 extern int qmod_credit_set(PHYMOD_ST* pc, credit_type_t credit_type, int userCredit);
    144 extern int qmod_rx_lane_control_set(PHYMOD_ST* pc, int enable);        
    145 extern int qmod_mld_am_timers_set(PHYMOD_ST* pc, int rx_am_timer_init,int tx_am_timer_init_val);
    146 extern int qmod_init_pmd(PHYMOD_ST* pc, int pmd_touched, int uc_active);
    147 extern int qmod_pmd_osmode_set(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf, int os_mode);
    148 extern int qmod_pmd_osmode_get(PHYMOD_ST* pc, int* os_mode);
    149 extern int qmod_pll_lock_get(PHYMOD_ST* pc, int* lockStatus);
    150 extern int qmod_pmd_lock_get(PHYMOD_ST* pc, uint32_t* lockStatus);
    151 extern int qmod_wait_pmd_lock(PHYMOD_ST* pc, int timeOutValue, int* lockStatus);
    152 extern int qmod_pcs_bypass_ctl (PHYMOD_ST* pc, int cntl);
    153 extern int qmod_pmd_reset_bypass (PHYMOD_ST* pc, int cntl);
    154 extern int qmod_set_pll_mode(PHYMOD_ST* pc, int pmd_tched, qmod_spd_intfc_type sp, int pll_mode);
    155 extern int qmod_tick_override_set(PHYMOD_ST* pc, int tick_override, int numerator, int denominator);
    156 extern int qmod_tx_loopback_control(PHYMOD_ST* pc, int enable, int starting_lane, int port_type);
    157 extern int qmod_tx_pmd_loopback_control(PHYMOD_ST* pc, int cntl);
    158 extern int qmod_rx_loopback_control(PHYMOD_ST* pc, int enable, int starting_lane, int port_type);
    159 extern int qmod_encode_set(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf);
    160 extern int qmod_encode_set(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf);
    161 extern int qmod_decode_set(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf);
    162 extern int qmod_decode_set(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf);
    163 extern int qmod_spd_intf_get(PHYMOD_ST* pc, int *spd_intf);
    164 extern int qmod_revid_read(PHYMOD_ST* pc, uint32_t *revid);
    165 extern int qmod_init_pcs(PHYMOD_ST* pc);
    166 extern int qmod_pmd_reset_seq(PHYMOD_ST* pc, int pmd_touched);
    167 extern int qmod_wait_sc_done(PHYMOD_ST* pc, uint16_t *data);
    168 extern int qmod_get_pcs_link_status(PHYMOD_ST* pc, uint32_t sub_port, uint32_t *link);
    169 extern int qmod_disable_set(PHYMOD_ST* pc);
    170 extern int qmod_pmd_x4_reset(PHYMOD_ST* pc);
    171 extern int qmod_init_pmd_sw(PHYMOD_ST* pc, int pmd_touched, int uc_active,
    172                              qmod_spd_intfc_type spd_intf,  int t_pma_os_mode);
    173 extern int qmod_credit_override_set(PHYMOD_ST* pc, credit_type_t credit_type, int userCredit);
    174 extern int qmod_pmd_lane_reset(PHYMOD_ST* pc);
    175 extern int qmod_cjpat_crpat_mode_set(PHYMOD_ST* pc, qmod_spd_intfc_type spd, int port, int pat, int pnum, int size, int ipgsz);
    176 extern int qmod_cjpat_crpat_check(PHYMOD_ST* pc);
    177 extern int qmod_cjpat_crpat_control(PHYMOD_ST* pc, int enable);
    178 extern int qmod_pcs_lane_swap(PHYMOD_ST *pc, int lane_map);
    179 extern int qmod_pcs_lane_swap_get (PHYMOD_ST *pc,  uint32_t *tx_rx_swap);
    180 extern int qmod_master_port_num_set(PHYMOD_ST *pa,  int port_num);
    181 extern int qmod_pmd_addr_lane_swap (PHYMOD_ST *pc, uint32_t addr_lane_index);
    182 extern int qmod_pmd_lane_swap_tx(PHYMOD_ST *pc, uint32_t tx_lane_map);
    183 extern int qmod_trigger_speed_change(PHYMOD_ST* pc);
    184 extern int qmod_rx_lane_control_get(PHYMOD_ST* pc, int *value);
    185 extern int qmod_pmd_override_control(PHYMOD_ST* pc, int cntl, int value);
    186 extern int qmod_pll_sequencer_control(PHYMOD_ST *pa, int enable);
    187 extern int qmod_tx_rx_polarity_set (PHYMOD_ST *pc, uint32_t txp, uint32_t rxp);
    188 extern int qmod_pmd_lane_swap_tx_get (PHYMOD_ST *pc, uint32_t *tx_lane_map);
    189 extern int qmod_pram_abl_enable_set(PHYMOD_ST* pc, int enable);
    190 extern int qmod_tx_rx_polarity_get (PHYMOD_ST *pc, uint32_t* txp, uint32_t* rxp);
    191 extern int qmod_port_enable_set(PHYMOD_ST *pc, int enable);
    192 extern int qmod_tx_squelch_set(PHYMOD_ST *pc, int enable);
    193 extern int qmod_rx_squelch_set(PHYMOD_ST *pc, int enable);
    194 extern int qmod_tx_squelch_get(PHYMOD_ST *pc, int *enable);
    195 extern int qmod_rx_squelch_get(PHYMOD_ST *pc, int *enable);
    196 extern int qmod_tx_lane_control_set(PHYMOD_ST* pc, tx_lane_disable_type_t tx_dis_type);
    197 extern int qmod_tx_lane_control_get(PHYMOD_ST* pc, int *reset, int *enable);
    198 extern int qmod_get_plldiv (PHYMOD_ST *pc,  uint32_t *pll_div);
    199 extern int qmod_update_port_mode( PHYMOD_ST *pa, int *pll_restart);
    200 extern int qmod_plldiv_lkup_get(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf, uint32_t *plldiv, uint16_t *speed_vec);
    201 extern int qmod_osdfe_on_lkup_get(PHYMOD_ST* pc, qmod_spd_intfc_type spd_intf, uint32_t *osdfe_on);
    202 extern int qmod_pll_reset_enable_set (PHYMOD_ST *pa , int enable);
    203 extern int qmod_set_spd_intf(PHYMOD_ST *pc, qmod_spd_intfc_type spd_intf, int no_trig);
    204 extern int qmod_speed_id_get (PHYMOD_ST *pc,  int *speed_id, int subport);
    205 extern int qmod_refclk_set(PHYMOD_ST* pc, qmod_ref_clk_t refclk);
    206 int qmod_tx_loopback_get(PHYMOD_ST* pc, uint32_t *enable);      
    207 extern int qmod_autoneg_local_ability_get(PHYMOD_ST* pc, qmod_an_ability_t *an_ability_st, int sub_port);
    208 extern int qmod_autoneg_remote_ability_get(PHYMOD_ST* pc, qmod_an_ability_t *an_ability_st, int sub_port);
    209 extern int qmod_autoneg_control_get(PHYMOD_ST* pc, int sub_port, qmod_an_control_t *an_control, int *an_complete);
    210 extern int qmod_set_qport_spd(PHYMOD_ST* pc, int sub_port, qmod_spd_intfc_type spd_intf);
    211 extern int qmod_pmd_lane_override(PHYMOD_ST* pc, qmod_pmd_lane_override_t ovrd_type);
    212 #ifdef _SDK_QMOD_
    213 extern int qmod_autoneg_set_init(PHYMOD_ST* pc, qmod_an_init_t *an_init_st); 
    214 extern int qmod_autoneg_control(PHYMOD_ST* pc, qmod_an_control_t *an_control, int sub_port); 
    215 extern int qmod_autoneg_timer_init(PHYMOD_ST* pc);
    216 extern int qmod_autoneg_set(PHYMOD_ST* pc, qmod_an_ability_t *an_ability_st, int sub_port);
    217 extern int qmod_set_an_port_mode(PHYMOD_ST* pc, int num_of_lanes, int starting_lane, int single_port);
    218 extern int qmod_pmd_lane_swap_tx(PHYMOD_ST *pc, uint32_t tx_lane_map);
    219 extern int qmod_lane_info(PHYMOD_ST* pc, int *lane, int *sub_port);
    220 extern int qmod_get_mapped_speed(qmod_spd_intfc_type spd_intf, int *speed);
    221 extern int qmod_diag_disp(PHYMOD_ST *pc, const char* mystr);
    222 extern int qmod_reset(PHYMOD_ST* pc);
    223 extern int qmod_autoneg_cl37_base_abilities(PHYMOD_ST* pc, qmod_an_ability_t *an_ability, int sub_port);
    224 extern int qmod_an_cl37_bam_abilities(PHYMOD_ST* pc, qmod_an_ability_t *an_ability, int sub_port);
    225 extern int qmod_speedchange_get(PHYMOD_ST* pc, uint32_t *enable);
    226 extern int qmod_get_qport_spd(PHYMOD_ST* pc, int sub_port, qmod_spd_intfc_type *spd_intf);
    227 extern int qmod_port_state_set(PHYMOD_ST* pc, int qmod_state_type, int sub_port, int val);
    228 extern int qmod_port_state_get(PHYMOD_ST* pc, int qmod_state_type, int *all_sub_port_val);
    229 extern int qmod_pmd_x4_reset_get(PHYMOD_ST* pc, int *value);
    230 #endif
    231 
    232 #define QMOD_PORT_STATE_CONFIGED    1
    233 #define QMOD_PORT_STATE_TX_SQUELCH  2
    234 #define QMOD_PORT_STATE_RX_SQUELCH  3
    235 
    236 #define QMOD_NOF_LANES_IN_CORE (4)
    237 
    238 int qmod_eee_control_set(PHYMOD_ST* pc, uint32_t enable);
    239 int qmod_eee_control_get(PHYMOD_ST* pc, uint32_t *enable);
    240 
    241 extern int qmod_synce_mode_set(PHYMOD_ST *pc, int mode0, int mode1);
    242 extern int qmod_synce_mode_get(PHYMOD_ST *pc, int *mode0, int *mode1);
    243 extern int qmod_synce_clk_ctrl_set(PHYMOD_ST *pc, uint32_t val);
    244 extern int qmod_synce_clk_ctrl_get(PHYMOD_ST *pc, uint32_t *val);
    245 
    246 int get_mapped_speed(qmod_spd_intfc_type spd_intf, int *speed);
    247 int get_actual_speed(int speed_id, int *speed);
    248 
    249 #endif  /*  _qmod_H_ */
    250