tdm_gh2_methods.h (10306B)
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 BCM53570 9 */ 10 11 #ifndef TDM_GH2_PREPROCESSOR_PROTOTYPES_H 12 #define TDM_GH2_PREPROCESSOR_PROTOTYPES_H 13 14 #ifdef _TDM_STANDALONE 15 #include <tdm_gh2_soc.h> 16 #else 17 #include <soc/tdm/greyhound2/tdm_gh2_soc.h> 18 #endif 19 20 /* 21 * CHIP function prototypes 22 */ 23 24 /* Functions managed by TDM chip executive */ 25 LINKER_DECL int tdm_gh2_init( tdm_mod_t *_tdm ); 26 LINKER_DECL int tdm_gh2_pmap_transcription( tdm_mod_t *_tdm ); 27 LINKER_DECL int tdm_gh2_scheduler_wrap_pipe( tdm_mod_t *_tdm ); 28 LINKER_DECL int tdm_gh2_scheduler_wrap( tdm_mod_t *_tdm ); 29 LINKER_DECL int tdm_gh2_proc_cal( tdm_mod_t *_tdm ); 30 LINKER_DECL int tdm_gh2_parse_tdm_tbl( tdm_mod_t *_tdm ); 31 LINKER_DECL int tdm_gh2_corereq( tdm_mod_t *_tdm ); 32 LINKER_DECL int tdm_gh2_filter( tdm_mod_t *_tdm ); 33 LINKER_DECL int tdm_gh2_post( tdm_mod_t *_tdm ); 34 LINKER_DECL int tdm_gh2_chk( tdm_mod_t *_tdm); 35 LINKER_DECL int tdm_gh2_check_ethernet( tdm_mod_t *_tdm ); 36 LINKER_DECL int tdm_gh2_pick_vec( tdm_mod_t *_tdm ); 37 LINKER_DECL int tdm_gh2_free( tdm_mod_t *_tdm ); 38 39 LINKER_DECL int tdm_gh2_proc_cal_tdm5( tdm_mod_t *_tdm ); 40 LINKER_DECL int tdm_gh2_filter_tdm5( tdm_mod_t *_tdm ); 41 LINKER_DECL int tdm_gh2_chk_tdm5( tdm_mod_t *_tdm); 42 43 /* Core executive polymorphic functions */ 44 LINKER_DECL int tdm_gh2_which_tsc( tdm_mod_t *_tdm ); 45 LINKER_DECL void tdm_gh2_parse_pipe( tdm_mod_t *_tdm ); 46 47 /* TDM.4 - Tomahawk chip API */ 48 LINKER_DECL int tdm_gh2_legacy_which_tsc(unsigned short port, int **tsc); 49 LINKER_DECL int tdm_gh2_proc_cal_ancl( tdm_mod_t *_tdm ); 50 LINKER_DECL int tdm_gh2_proc_cal_acc( tdm_mod_t *_tdm ); 51 LINKER_DECL int tdm_gh2_proc_cal_idle( tdm_mod_t *_tdm ); 52 LINKER_DECL int tdm_gh2_proc_cal_lr( tdm_mod_t *_tdm ); 53 54 /* TDM.4 - Tomahawk chip based filter methods */ 55 LINKER_DECL int tdm_gh2_filter_check_pipe_sister_min( tdm_mod_t *_tdm ); 56 LINKER_DECL int tdm_gh2_filter_check_port_sister_min( tdm_mod_t *_tdm, int port ); 57 LINKER_DECL int tdm_gh2_filter_check_migrate_lr_slot(int idx_src, int idx_dst, int *tdm_tbl, int tdm_tbl_len, int **tsc); 58 LINKER_DECL int tdm_gh2_filter_sister_min( tdm_mod_t *_tdm ); 59 LINKER_DECL int tdm_gh2_filter_migrate_lr_slot(int idx_src, int idx_dst, int *tdm_tbl, int tdm_tbl_len, int **tsc); 60 LINKER_DECL int tdm_gh2_filter_migrate_lr_slot_up(tdm_mod_t *_tdm); 61 LINKER_DECL int tdm_gh2_filter_migrate_lr_slot_dn(tdm_mod_t *_tdm); 62 LINKER_DECL int tdm_gh2_filter_dither(int *tdm_tbl, int lr_idx_limit, int accessories, int **tsc, int threshold, enum port_speed_e *speed); 63 LINKER_DECL int tdm_gh2_filter_fine_dither(int port, int *tdm_tbl, int lr_idx_limit, int accessories, int **tsc); 64 LINKER_DECL int tdm_gh2_filter_shift_lr_port(unsigned short port, int *tdm_tbl, int tdm_tbl_len, int dir); 65 LINKER_DECL int tdm_gh2_filter_migrate_os_slot(int idx_src, int idx_dst, int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 66 LINKER_DECL int tdm_gh2_filter_smooth_idle_slice(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 67 LINKER_DECL int tdm_gh2_filter_smooth_os_slice(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed, int dir); 68 LINKER_DECL int tdm_gh2_filter_smooth_os_slice_fine(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 69 LINKER_DECL int tdm_gh2_filter_smooth_os_os_up(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 70 LINKER_DECL int tdm_gh2_filter_smooth_os_os_dn(int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 71 LINKER_DECL int tdm_gh2_filter_smooth_ancl(int ancl_token, int *tdm_tbl, int tdm_tbl_len, int ancl_space_min); 72 LINKER_DECL int tdm_gh2_filter_ovsb_p2(tdm_mod_t *_tdm); 73 LINKER_DECL int tdm_gh2_filter_ovsb_p1(tdm_mod_t *_tdm); 74 LINKER_DECL int tdm_gh2_filter_ovsb_5x(tdm_mod_t *_tdm); 75 LINKER_DECL int tdm_gh2_filter_ovsb_4x(tdm_mod_t *_tdm); 76 LINKER_DECL int tdm_gh2_filter_ovsb_3x(tdm_mod_t *_tdm); 77 LINKER_DECL int tdm_gh2_filter_ovsb_2x(tdm_mod_t *_tdm); 78 LINKER_DECL int tdm_gh2_filter_ovsb_1x(tdm_mod_t *_tdm); 79 LINKER_DECL int tdm_gh2_filter_ovsb(tdm_mod_t *_tdm); 80 81 LINKER_DECL int tdm_gh2_filter_chk_slot_shift_cond(int slot, int dir, int cal_len, int *cal_main, tdm_mod_t *_tdm); 82 LINKER_DECL int tdm_gh2_filter_calc_jitter(int speed, int cal_len, int *space_min, int *space_max); 83 LINKER_DECL int tdm_gh2_filter_get_same_port_dist(int slot, int dir, int *cal_main, int cal_len); 84 LINKER_DECL int tdm_gh2_filter_get_port_pm(int port_token, tdm_mod_t *_tdm); 85 LINKER_DECL int tdm_gh2_filter_lr_jitter(tdm_mod_t *_tdm, int min_speed); 86 LINKER_DECL int tdm_gh2_filter_lr(tdm_mod_t *_tdm); 87 LINKER_DECL int tdm_gh2_filter_ovsb_4x_mix(tdm_mod_t *_tdm); 88 LINKER_DECL int tdm_gh2_filter_ovsb_3x_mix(tdm_mod_t *_tdm); 89 LINKER_DECL int tdm_gh2_filter_ovsb_2x_mix(tdm_mod_t *_tdm); 90 LINKER_DECL int tdm_gh2_filter_ovsb_mix(tdm_mod_t *_tdm); 91 LINKER_DECL int tdm_gh2_filter_mix(tdm_mod_t *_tdm); 92 93 /* TDM.4 - Tomahawk chip based check/scan methods */ 94 LINKER_DECL int tdm_gh2_check_same_port_dist_dn(int idx, int *tdm_tbl, int lim); 95 LINKER_DECL int tdm_gh2_check_same_port_dist_up(int idx, int *tdm_tbl, int lim); 96 LINKER_DECL int tdm_gh2_check_same_port_dist_dn_port(int port, int idx, int *tdm_tbl, int lim); 97 LINKER_DECL int tdm_gh2_check_same_port_dist_up_port(int port, int idx, int *tdm_tbl, int lim); 98 LINKER_DECL int tdm_gh2_check_fit_smooth(int *tdm_tbl, int port, int lr_idx_limit, int clump_thresh); 99 LINKER_DECL int tdm_gh2_slice_size_local(unsigned short idx, int *tdm, int lim); 100 LINKER_DECL int tdm_gh2_slice_prox_dn(int slot, int *tdm, int lim, int **tsc, enum port_speed_e *speed); 101 LINKER_DECL int tdm_gh2_slice_prox_up(int slot, int *tdm, int **tsc, enum port_speed_e *speed); 102 LINKER_DECL int tdm_gh2_slice_size(unsigned short port, int *tdm, int lim); 103 LINKER_DECL int tdm_gh2_slice_idx(unsigned short port, int *tdm, int lim); 104 LINKER_DECL int tdm_gh2_slice_prox_local(unsigned short idx, int *tdm, int lim, int **tsc); 105 LINKER_DECL int tdm_gh2_check_lls_flat_up(int idx, int *tdm_tbl, enum port_speed_e *speed); 106 LINKER_DECL int tdm_gh2_scan_lr_slot_num(int *tdm_tbl); 107 LINKER_DECL int tdm_gh2_scan_slice_min(unsigned short port, int *tdm, int lim, int *slice_start_idx, int pos); 108 LINKER_DECL int tdm_gh2_scan_slice_max(unsigned short port, int *tdm, int lim, int *slice_start_idx, int pos); 109 LINKER_DECL int tdm_gh2_scan_slice_size_local(unsigned short idx, int *tdm, int lim, int *slice_start_idx); 110 LINKER_DECL int tdm_gh2_scan_mix_slice_min(unsigned short port, int *tdm, int lim, int *slice_idx, int pos); 111 LINKER_DECL int tdm_gh2_scan_mix_slice_max(unsigned short port, int *tdm, int lim, int *slice_idx, int pos); 112 LINKER_DECL int tdm_gh2_scan_mix_slice_size_local(unsigned short idx, int *tdm, int lim, int *slice_start_idx); 113 LINKER_DECL int tdm_gh2_check_shift_cond_pattern(unsigned short port, int *tdm_tbl, int tdm_tbl_len, int **tsc, int dir); 114 LINKER_DECL int tdm_gh2_check_shift_cond_local_slice(unsigned short port, int *tdm_tbl, int tdm_tbl_len, int **tsc, int dir); 115 LINKER_DECL int tdm_gh2_check_slot_swap_cond(int idx, int *tdm_tbl, int tdm_tbl_len, int **tsc, enum port_speed_e *speed); 116 LINKER_DECL int tdm_gh2_scan_which_tsc( int port, tdm_mod_t *_tdm ); 117 LINKER_DECL int tdm_gh2_check_pipe_ethernet( int port, tdm_mod_t *_tdm ); 118 119 /* TDM.4 - Tomahawk linked list API */ 120 LINKER_DECL void tdm_gh2_ll_print(struct gh2_ll_node *llist); 121 LINKER_DECL void tdm_gh2_ll_deref(struct gh2_ll_node *llist, int *tdm[GH2_LR_VBS_LEN], int lim); 122 LINKER_DECL void tdm_gh2_ll_append(struct gh2_ll_node *llist, unsigned short port_append, int *pointer); 123 LINKER_DECL void tdm_gh2_ll_insert(struct gh2_ll_node *llist, unsigned short port_insert, int idx); 124 LINKER_DECL int tdm_gh2_ll_delete(struct gh2_ll_node *llist, int idx); 125 LINKER_DECL int tdm_gh2_ll_get(struct gh2_ll_node *llist, int idx); 126 LINKER_DECL int tdm_gh2_ll_len(struct gh2_ll_node *llist); 127 LINKER_DECL void tdm_gh2_ll_strip(struct gh2_ll_node *llist, int *pool, int token); 128 LINKER_DECL int tdm_gh2_ll_count(struct gh2_ll_node *llist, int token); 129 LINKER_DECL void tdm_gh2_ll_weave(struct gh2_ll_node *llist, int token, tdm_mod_t *_tdm); 130 LINKER_DECL void tdm_gh2_ll_retrace(struct gh2_ll_node *llist, tdm_mod_t *_tdm); 131 LINKER_DECL int tdm_gh2_ll_single_100(struct gh2_ll_node *llist); 132 LINKER_DECL int tdm_gh2_ll_free(struct gh2_ll_node *llist); 133 134 /* TDM.5 - Tomahawk chip-specific checker */ 135 LINKER_DECL int tdm_gh2_chk_get_port_tsc(tdm_mod_t *_tdm, int port); 136 LINKER_DECL int tdm_gh2_chk_get_cal_len(tdm_mod_t *_tdm, int cal_id); 137 LINKER_DECL int tdm_gh2_chk_get_speed_slot_num(int port_speed); 138 LINKER_DECL int tdm_gh2_chk_get_cal_token_num(tdm_mod_t *_tdm, int cal_id, int port_token); 139 LINKER_DECL int tdm_gh2_chk_is_pipe_ethernet(tdm_mod_t *_tdm); 140 LINKER_DECL int tdm_gh2_chk_struct_freq(tdm_mod_t *_tdm); 141 LINKER_DECL int tdm_gh2_chk_struct_calLength(tdm_mod_t *_tdm); 142 LINKER_DECL int tdm_gh2_chk_struct_speed(tdm_mod_t *_tdm); 143 LINKER_DECL int tdm_gh2_chk_struct(tdm_mod_t *_tdm); 144 LINKER_DECL int tdm_gh2_chk_transcription(tdm_mod_t *_tdm); 145 LINKER_DECL int tdm_gh2_chk_sister(tdm_mod_t *_tdm); 146 LINKER_DECL int tdm_gh2_chk_sub_cpu(tdm_mod_t *_tdm); 147 LINKER_DECL int tdm_gh2_chk_sub_lpbk(tdm_mod_t *_tdm); 148 LINKER_DECL int tdm_gh2_chk_sub_lr_pipe(tdm_mod_t *_tdm, int cal_id); 149 LINKER_DECL int tdm_gh2_chk_sub_os_pipe(tdm_mod_t *_tdm, int cal_id); 150 LINKER_DECL int tdm_gh2_chk_sub_lr(tdm_mod_t *_tdm); 151 LINKER_DECL int tdm_gh2_chk_sub_os(tdm_mod_t *_tdm); 152 LINKER_DECL int tdm_gh2_chk_sub(tdm_mod_t *_tdm); 153 LINKER_DECL int tdm_gh2_chk_jitter_os_pipe_tdm5(tdm_mod_t *_tdm, int cal_id); 154 LINKER_DECL int tdm_gh2_chk_jitter_os_tdm5(tdm_mod_t *_tdm); 155 LINKER_DECL int tdm_gh2_chk_jitter_lr_pipe_tdm5(tdm_mod_t *_tdm, int cal_id); 156 LINKER_DECL int tdm_gh2_chk_jitter_lr_tdm5(tdm_mod_t *_tdm); 157 LINKER_DECL int tdm_gh2_chk_jitter_os_pipe(tdm_mod_t *_tdm, int cal_id); 158 LINKER_DECL int tdm_gh2_chk_jitter_os(tdm_mod_t *_tdm); 159 LINKER_DECL int tdm_gh2_chk_jitter_lr_pipe(tdm_mod_t *_tdm, int cal_id); 160 LINKER_DECL int tdm_gh2_chk_jitter_lr(tdm_mod_t *_tdm); 161 162 /* Print */ 163 LINKER_DECL void tdm_gh2_print_tbl(tdm_mod_t *_tdm); 164 LINKER_DECL void tdm_gh2_print_config(tdm_mod_t *_tdm); 165 166 #endif /* TDM_GH2_PREPROCESSOR_PROTOTYPES_H */