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