tdm_td2p_methods.h (10301B)
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 * All Rights Reserved.$ 7 * 8 * TDM function prototypes for BCM56860 9 */ 10 11 #ifndef TDM_TD2P_PREPROCESSOR_PROTOTYPES_H 12 #define TDM_TD2P_PREPROCESSOR_PROTOTYPES_H 13 14 #ifdef _TDM_STANDALONE 15 #include <tdm_td2p_soc.h> 16 #else 17 #include <soc/tdm/trident2p/tdm_td2p_soc.h> 18 #endif 19 20 /* 21 * CHIP function prototypes 22 */ 23 24 /* Functions managed by TDM chip executive */ 25 LINKER_DECL int tdm_td2p_init( tdm_mod_t *_tdm ); 26 LINKER_DECL int tdm_td2p_pmap_transcription( tdm_mod_t *_tdm ); 27 LINKER_DECL int tdm_td2p_lls_wrapper( tdm_mod_t *_tdm ); 28 LINKER_DECL int tdm_td2p_vbs_wrapper( tdm_mod_t *_tdm ); 29 LINKER_DECL int tdm_td2p_filter( tdm_mod_t *_tdm ); 30 LINKER_DECL int tdm_td2p_chk( tdm_mod_t *_tdm); 31 LINKER_DECL int tdm_td2p_free( tdm_mod_t *_tdm ); 32 LINKER_DECL int tdm_td2p_corereq( tdm_mod_t *_tdm ); 33 LINKER_DECL int tdm_td2p_post( tdm_mod_t *_tdm ); 34 35 /* Core executive polymorphic functions */ 36 LINKER_DECL int tdm_td2p_which_tsc( tdm_mod_t *_tdm_s ); 37 LINKER_DECL int tdm_td2p_parse_mmu_tdm_tbl( tdm_mod_t *_tdm ); 38 LINKER_DECL int tdm_td2p_proc_cal( tdm_mod_t *_tdm ); 39 40 LINKER_DECL int tdm_td2p_filter_tdm5( tdm_mod_t *_tdm ); 41 LINKER_DECL int tdm_td2p_proc_cal_tdm5( tdm_mod_t *_tdm ); 42 43 /* Internalized functions */ 44 LINKER_DECL int tdm_td2p_check_ethernet( tdm_mod_t *_tdm_s ); 45 46 /* TDM.4 - Trident2+ linked list API */ 47 LINKER_DECL void tdm_td2p_ll_print(struct ll_node *llist); 48 LINKER_DECL void tdm_td2p_ll_deref(struct ll_node *llist, int *tdm[TD2P_LR_LLS_LEN], int lim); 49 LINKER_DECL void tdm_td2p_ll_append(struct ll_node *llist, unsigned short port_append, int *pointer); 50 LINKER_DECL void tdm_td2p_ll_insert(struct ll_node *llist, unsigned short port_insert, int idx); 51 LINKER_DECL int tdm_td2p_ll_delete(struct ll_node *llist, int idx); 52 LINKER_DECL int tdm_td2p_ll_get(struct ll_node *llist, int idx); 53 LINKER_DECL int tdm_td2p_ll_len(struct ll_node *llist); 54 LINKER_DECL void tdm_td2p_ll_strip(struct ll_node *llist, int *pool, int token); 55 LINKER_DECL int tdm_td2p_ll_count(struct ll_node *llist, int token); 56 LINKER_DECL void tdm_td2p_ll_weave(struct ll_node *llist, int wc_array[TD2P_NUM_PHY_PM][TD2P_NUM_PM_LNS], int token); 57 LINKER_DECL void tdm_td2p_ll_retrace(struct ll_node *llist, int wc_array[TD2P_NUM_PHY_PM][TD2P_NUM_PM_LNS]); 58 LINKER_DECL int tdm_td2p_ll_single_100(struct ll_node *llist); 59 LINKER_DECL int tdm_td2p_ll_free(struct ll_node *llist); 60 61 /* TDM.4 - Trident2+ chip API */ 62 LINKER_DECL int tdm_td2p_proc_pgw_os_cal(tdm_chip_legacy_t *td2p_chip, td2p_pgw_scheduler_vars_t *vars_pkg, int *ovs_tdm_tbl, int *ovs_spacing); 63 LINKER_DECL int tdm_td2p_lls_scheduler(struct ll_node *pgw_tdm, tdm_chip_legacy_t *td2p_chip, td2p_pgw_pntrs_t *pntrs_pkg, td2p_pgw_scheduler_vars_t *vars_pkg, int *pgw_tdm_tbl[TD2P_LR_LLS_LEN], int *ovs_tdm_tbl[TD2P_OS_LLS_GRP_LEN], int op_flags[2]); 64 LINKER_DECL void tdm_td2p_ovs_spacer(int (*wc)[TD2P_NUM_PHY_PM][TD2P_NUM_PM_LNS], int *ovs_tdm_tbl, int *ovs_spacing, enum port_speed_e *port_speeds); 65 LINKER_DECL int tdm_td2p_legacy_which_tsc(unsigned short port, int **tsc); 66 LINKER_DECL int tdm_td2p_proc_cal_ancl( tdm_mod_t *_tdm ); 67 LINKER_DECL int tdm_td2p_proc_cal_acc( tdm_mod_t *_tdm ); 68 LINKER_DECL int tdm_td2p_proc_cal_idle( tdm_mod_t *_tdm ); 69 LINKER_DECL int tdm_td2p_proc_cal_lr( tdm_mod_t *_tdm ); 70 71 /* TDM.4 - Trident2+ chip based prints and parses */ 72 LINKER_DECL void tdm_td2p_print_tbl(int *cal, int len, const char* name, int id); 73 LINKER_DECL void tdm_td2p_print_tbl_ovs(int *cal, int *spc, int len, const char* name, int id); 74 LINKER_DECL void tdm_td2p_print_quad(enum port_speed_e *speed, enum port_state_e *state, int len, int idx_start, int idx_end); 75 76 /* TDM.4 - Trident2+ chip based checks and scans */ 77 LINKER_DECL int tdm_td2p_check_same_port_dist_dn(int idx, int *tdm_tbl, int lim); 78 LINKER_DECL int tdm_td2p_check_same_port_dist_up(int idx, int *tdm_tbl, int lim); 79 LINKER_DECL int tdm_td2p_check_same_port_dist_dn_port(int port, int idx, int *tdm_tbl, int lim); 80 LINKER_DECL int tdm_td2p_check_same_port_dist_up_port(int port, int idx, int *tdm_tbl, int lim); 81 LINKER_DECL int tdm_td2p_check_fit_smooth(int *tdm_tbl, int port, int lr_idx_limit, int clump_thresh); 82 LINKER_DECL int tdm_td2p_slice_size_local(unsigned short idx, int *tdm, int lim); 83 LINKER_DECL int tdm_td2p_slice_prox_dn(int slot, int *tdm, int lim, int **tsc, enum port_speed_e *speed); 84 LINKER_DECL int tdm_td2p_slice_prox_up(int slot, int *tdm, int **tsc, enum port_speed_e *speed); 85 LINKER_DECL int tdm_td2p_slice_size(unsigned short port, int *tdm, int lim); 86 LINKER_DECL int tdm_td2p_slice_idx(unsigned short port, int *tdm, int lim); 87 LINKER_DECL int tdm_td2p_slice_prox_local(unsigned short idx, int *tdm, int lim, int **tsc); 88 LINKER_DECL int tdm_td2p_check_lls_flat_up(int idx, int *tdm_tbl, enum port_speed_e *speed); 89 LINKER_DECL int tdm_td2p_num_lr_slots(int *tdm_tbl); 90 LINKER_DECL int tdm_td2p_scan_slice_min(unsigned short port, int *tdm, int lim, int *slice_start_idx, int pos); 91 LINKER_DECL int tdm_td2p_scan_slice_max(unsigned short port, int *tdm, int lim, int *slice_start_idx, int pos); 92 LINKER_DECL int tdm_td2p_scan_slice_size_local(unsigned short idx, int *tdm, int lim, int *slice_start_idx); 93 LINKER_DECL int tdm_td2p_scan_mix_slice_min(unsigned short port, int *tdm, int lim, int *slice_idx, int pos); 94 LINKER_DECL int tdm_td2p_scan_mix_slice_max(unsigned short port, int *tdm, int lim, int *slice_idx, int pos); 95 LINKER_DECL int tdm_td2p_scan_mix_slice_size_local(unsigned short idx, int *tdm, int lim, int *slice_start_idx); 96 LINKER_DECL int tdm_td2p_check_shift_cond_pattern(unsigned short port, int *tdm_tbl, int tdm_tbl_len, int **tsc, int dir); 97 LINKER_DECL int tdm_td2p_check_shift_cond_local_slice(unsigned short port, int *tdm_tbl, int tdm_tbl_len, int **tsc, int dir); 98 LINKER_DECL int tdm_td2p_check_slot_swap_cond(int idx, int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 99 LINKER_DECL int tdm_td2p_scan_which_tsc(int port, int tsc[TD2P_NUM_PHY_PM][TD2P_NUM_PM_LNS]); 100 LINKER_DECL int tdm_td2p_check_pipe_ethernet(int port, tdm_mod_t *_tdm); 101 102 /* TDM.4 - Trident2+ chip based filter methods */ 103 LINKER_DECL int tdm_td2p_filter_dither(int *tdm_tbl, int lr_idx_limit, int accessories, int **tsc, int threshold, enum port_speed_e *speed); 104 LINKER_DECL int tdm_td2p_filter_fine_dither(int port, int *tdm_tbl, int lr_idx_limit, int accessories, int **tsc); 105 LINKER_DECL int tdm_td2p_filter_shift_lr_port(unsigned short port, int *tdm_tbl, int tdm_tbl_len, int dir); 106 LINKER_DECL int tdm_td2p_filter_migrate_os_slot(int idx_src, int idx_dst, int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 107 LINKER_DECL int tdm_td2p_filter_smooth_idle_slice(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 108 LINKER_DECL int tdm_td2p_filter_smooth_os_slice(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed, int dir); 109 LINKER_DECL int tdm_td2p_filter_smooth_os_slice_fine(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 110 LINKER_DECL int tdm_td2p_filter_smooth_os_os_up(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 111 LINKER_DECL int tdm_td2p_filter_smooth_os_os_dn(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 112 LINKER_DECL int tdm_td2p_filter_chk_shift_slot(tdm_mod_t *_tdm, int slot_idx, int dir); 113 LINKER_DECL int tdm_td2p_filter_shift_slot(tdm_mod_t *_tdm, int slot_idx, int dir); 114 LINKER_DECL int tdm_td2p_filter_shift_lr_port_e(tdm_mod_t *_tdm, int port_token, int port_tsc, int dir); 115 LINKER_DECL int tdm_td2p_filter_smooth_ancl(tdm_mod_t *_tdm); 116 LINKER_DECL int tdm_td2p_filter_ovsb_p2(tdm_mod_t *_tdm); 117 LINKER_DECL int tdm_td2p_filter_ovsb_p1(tdm_mod_t *_tdm); 118 LINKER_DECL int tdm_td2p_filter_ovsb_5x(tdm_mod_t *_tdm); 119 LINKER_DECL int tdm_td2p_filter_ovsb_4x(tdm_mod_t *_tdm); 120 LINKER_DECL int tdm_td2p_filter_ovsb_3x(tdm_mod_t *_tdm); 121 LINKER_DECL int tdm_td2p_filter_ovsb_2x(tdm_mod_t *_tdm); 122 LINKER_DECL int tdm_td2p_filter_ovsb_1x(tdm_mod_t *_tdm); 123 LINKER_DECL int tdm_td2p_filter_ovsb(tdm_mod_t *_tdm); 124 125 /* TDM.4 - Trident2+ chip specific IARB calendars */ 126 LINKER_DECL void tdm_td2p_init_iarb_tdm_ovs_table(int core_bw, int mgm4x1, int mgm4x2p5, int mgm1x10, int *iarb_tdm_wrap_ptr_ovs_x, int *iarb_tdm_wrap_ptr_ovs_y, int *iarb_tdm_tbl_ovs_x, int *iarb_tdm_tbl_ovs_y); 127 LINKER_DECL void tdm_td2p_init_iarb_tdm_lr_table(int core_bw, int mgm4x1, int mgm4x2p5, int mgm1x10, int *iarb_tdm_wrap_ptr_lr_x, int *iarb_tdm_wrap_ptr_lr_y, int *iarb_tdm_tbl_lr_x, int *iarb_tdm_tbl_lr_y); 128 LINKER_DECL int tdm_td2p_set_iarb_tdm_table(int core_bw, int is_x_ovs, int is_y_ovs, int mgm4x1, int mgm4x2p5, int mgm1x10, int *iarb_tdm_wrap_ptr_x, int *iarb_tdm_wrap_ptr_y, int iarb_tdm_tbl_x[512], int iarb_tdm_tbl_y[512]); 129 130 /* Trident2+ TDM self-check operations */ 131 LINKER_DECL int tdm_td2p_chk_calc_speed_slots(int port_speed); 132 LINKER_DECL int tdm_td2p_chk_get_port_tsc(tdm_mod_t *_tdm, int port); 133 LINKER_DECL int tdm_td2p_chk_get_cal_len(tdm_mod_t *_tdm); 134 LINKER_DECL int tdm_td2p_chk_struct_freq(tdm_mod_t *_tdm); 135 LINKER_DECL int tdm_td2p_chk_struct_calLength(tdm_mod_t *_tdm); 136 LINKER_DECL int tdm_td2p_chk_struct_speed(tdm_mod_t *_tdm); 137 LINKER_DECL int tdm_td2p_chk_struct(tdm_mod_t *_tdm); 138 LINKER_DECL int tdm_td2p_chk_transcription(tdm_mod_t *_tdm); 139 LINKER_DECL int tdm_td2p_chk_samePortMin(tdm_mod_t *_tdm); 140 LINKER_DECL int tdm_td2p_chk_sisterMin(tdm_mod_t *_tdm); 141 LINKER_DECL int tdm_td2p_chk_sub_lr( tdm_mod_t *_tdm, int cal_id); 142 LINKER_DECL int tdm_td2p_chk_sub_os(tdm_mod_t *_tdm, int cal_id); 143 LINKER_DECL int tdm_td2p_chk_sub_cpu( tdm_mod_t *_tdm); 144 LINKER_DECL int tdm_td2p_chk_sub_lpbk( tdm_mod_t *_tdm); 145 LINKER_DECL int tdm_td2p_chk_sub_acc( tdm_mod_t *_tdm); 146 LINKER_DECL int tdm_td2p_chk_subscription(tdm_mod_t *_tdm); 147 LINKER_DECL int tdm_td2p_chk_jitter_lr_pipe(tdm_mod_t *_tdm, int cal_id); 148 LINKER_DECL int tdm_td2p_chk_jitter_lr(tdm_mod_t *_tdm); 149 LINKER_DECL int tdm_td2p_chk_jitter_os_pipe(tdm_mod_t *_tdm, int cal_id); 150 LINKER_DECL int tdm_td2p_chk_jitter_os(tdm_mod_t *_tdm); 151 LINKER_DECL int tdm_td2p_chk_lls(tdm_mod_t *_tdm); 152 LINKER_DECL void tdm_td2p_chk_chip_specific(tdm_mod_t *_tdm, int fail[15]); 153 154 #endif /* TDM_TD2P_PREPROCESSOR_PROTOTYPES_H */