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