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

tdm_th2_methods.h (8792B)


      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 BCM56970
      9  */
     10 
     11 #ifndef TDM_TH2_PREPROCESSOR_PROTOTYPES_H
     12 #define TDM_TH2_PREPROCESSOR_PROTOTYPES_H
     13 
     14 #ifdef _TDM_STANDALONE
     15 	#include <tdm_th2_soc.h>
     16 #else
     17 	#include <soc/tdm/tomahawk2/tdm_th2_soc.h>
     18 #endif
     19 
     20 /*
     21  * CHIP function prototypes 
     22  */
     23 
     24 /* Functions managed by TDM chip executive */
     25 LINKER_DECL int tdm_th2_init( tdm_mod_t *_tdm );
     26 LINKER_DECL int tdm_th2_dealloc( tdm_mod_t *_tdm );
     27 LINKER_DECL int tdm_th2_alloc_prev_chip_data( tdm_mod_t *_tdm_pkg );
     28 LINKER_DECL int tdm_th2_pmap_transcription( tdm_mod_t *_tdm );
     29 LINKER_DECL int tdm_th2_scheduler_wrap( tdm_mod_t *_tdm );
     30 LINKER_DECL int tdm_th2_vmap_alloc( tdm_mod_t *_tdm );
     31 LINKER_DECL int tdm_th2_parse_tdm_tbl( tdm_mod_t *_tdm );
     32 LINKER_DECL int tdm_th2_parse_tdm_tbl_new( tdm_mod_t *_tdm );
     33 LINKER_DECL int tdm_th2_corereq( tdm_mod_t *_tdm );
     34 LINKER_DECL int tdm_th2_filter_chain( tdm_mod_t *_tdm );
     35 LINKER_DECL int tdm_th2_post( tdm_mod_t *_tdm );
     36 LINKER_DECL int tdm_th2_filter_chain( tdm_mod_t *_tdm );
     37 LINKER_DECL int tdm_th2_pick_vec( tdm_mod_t *_tdm );
     38 LINKER_DECL int tdm_th2_vbs_scheduler( tdm_mod_t *_tdm );
     39 LINKER_DECL int tdm_th2_vbs_scheduler_ovs( tdm_mod_t *_tdm );
     40 LINKER_DECL int tdm_th2_acc_alloc( tdm_mod_t *_tdm );
     41 
     42 /* Core executive polymorphic functions */
     43 LINKER_DECL int tdm_th2_which_tsc( tdm_mod_t *_tdm );
     44 LINKER_DECL void tdm_th2_parse_pipe( tdm_mod_t *_tdm );
     45 
     46 /* Internalized functions */
     47 LINKER_DECL int tdm_th2_check_ethernet( tdm_mod_t *_tdm );
     48 LINKER_DECL int tdm_th2_ovs_apply_constraints( tdm_mod_t *_tdm );
     49 LINKER_DECL int tdm_th2_ovs_part_halfpipe( tdm_mod_t *_tdm );
     50 LINKER_DECL int tdm_th2_ovs_fill_group( tdm_mod_t *_tdm);
     51 LINKER_DECL int tdm_th2_ovs_pkt_shaper( tdm_mod_t *_tdm );
     52 LINKER_DECL int tdm_th2_ovs_pkt_shaper_per_port( tdm_mod_t *_tdm );
     53 LINKER_DECL int tdm_th2_ovs_pkt_shaper_find_pm_indx( tdm_mod_t *_tdm );
     54 LINKER_DECL int tdm_th2_ovs_map_pm_num_to_pblk( tdm_mod_t *_tdm );
     55 
     56 /* TDM.4 - Tomahawk2 chip API */
     57 LINKER_DECL int tdm_th2_legacy_which_tsc(unsigned short port, int **tsc);
     58 LINKER_DECL int tdm_th2_vec_load(unsigned short **map, int bw, int port_speed, int yy, int len, int num_ext_ports);
     59 
     60 LINKER_DECL int tdm_th2_vmap_alloc_v2( tdm_mod_t *_tdm );
     61 LINKER_DECL int tdm_th2_get_pm_speed_and_place_table( enum port_speed_e *_pm_speeds, int num_lanes, int *place_tbl,  int *place_table_length);
     62 LINKER_DECL int tdm_th2_find_first_avail_slot(int *tdm_pipe_main, int pm_slot_distance, int avail_token);
     63 LINKER_DECL int tdm_th2_find_first_avail_slot_w_start(int *tdm_pipe_main, int tdm_cal_length, int avail_token, int start_pos);
     64 LINKER_DECL int tdm_th2_place_lr_port(tdm_mod_t *_tdm, int *tdm_pipe_main, int phy_port, int ideal_pos, int port_jitter, int tdm_cal_length, int avail_token);
     65 LINKER_DECL int tdm_th2_vbs_scheduler_place_pm( tdm_mod_t *_tdm );
     66 LINKER_DECL int tdm_th2_div_round_up(int nominator, int denominator);
     67 LINKER_DECL int tdm_th2_div_round_down(int nominator, int denominator);
     68 LINKER_DECL int tdm_th2_div_round(int nominator, int denominator);
     69 LINKER_DECL int tdm_th2_get_min_max_jitter(int tbl_len, int port_slots, int lr_jitter_pct, int *min_spacing, int *max_spacing);
     70 LINKER_DECL int tdm_th2_shift_left(tdm_mod_t *_tdm, int *tdm_pipe_main, int tdm_cal_length, int phy_port, int ideal_pos, int shift_jitter, int left_slice_length, int avail_token, int lr_jitter_pct, int try, int *is_sist_fail);
     71 LINKER_DECL int tdm_th2_shift_right(tdm_mod_t *_tdm, int *tdm_pipe_main, int tdm_cal_length, int phy_port, int ideal_pos, int shift_jitter, int right_slice_length, int avail_token, int lr_jitter_pct, int try, int *is_sist_fail);
     72 LINKER_DECL int tdm_th2_check_swap(tdm_mod_t *_tdm, int *tdm_pipe_main, int tbl_len, int pos_1, int pos_2, int avail_token, int lr_jitter_pct);
     73 LINKER_DECL int tdm_th2_check_lr_placement(tdm_mod_t *_tdm, int *tdm_pipe_main, int tbl_len, int phy_port, int pos, int lr_jitter_pct, int avail_token);
     74 
     75 
     76 /* FlexPort */
     77 LINKER_DECL int tdm_th2_vbs_scheduler_ovs_flex_port( tdm_mod_t *_tdm );
     78 LINKER_DECL int tdm_th2_ovs_get_pm_flexport_state( tdm_mod_t *_tdm, enum flexport_pm_state_e *pm_flexport_state);
     79 LINKER_DECL int tdm_th2_ovs_apply_constraints_flexport( tdm_mod_t *_tdm, enum flexport_pm_state_e *pm_flexport_state);
     80 LINKER_DECL int tdm_th2_ovs_flexport_find_hp( tdm_mod_t *_tdm );
     81 LINKER_DECL int tdm_th2_ovs_pkt_shaper_flex_port( tdm_mod_t *_tdm );
     82 LINKER_DECL int tdm_th2_ovs_pkt_shaper_flexport_remove_port( tdm_mod_t *_tdm );
     83 
     84 /* OVS  tables */
     85 LINKER_DECL int tdm_th2_flex_ovs_tables_init( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     86 LINKER_DECL int tdm_th2_flex_ovs_tables_evaluate( tdm_mod_t *_tdm, th2_flxport_t *_flxport, int only_weight);
     87 LINKER_DECL int tdm_th2_flex_ovs_tables_remove( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     88 LINKER_DECL int tdm_th2_flex_ovs_tables_remove_port( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     89 LINKER_DECL int tdm_th2_flex_ovs_tables_consolidate( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     90 LINKER_DECL int tdm_th2_flex_ovs_tables_consolidate_speed( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     91 LINKER_DECL int tdm_th2_flex_ovs_tables_add_ports( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     92 LINKER_DECL int tdm_th2_flex_ovs_tables_add_ports_speed( tdm_mod_t *_tdm, th2_flxport_t *_flxport );
     93 LINKER_DECL int tdm_th2_flex_ovs_tables_add_pm( tdm_mod_t *_tdm, th2_flxport_t *_flxport, int pm_num, int hp_indx );
     94 LINKER_DECL int tdm_th2_sort_desc(int size, int *val_array, int *indx_array);
     95 LINKER_DECL int tdm_th2_flex_ovs_tables_rebalance( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     96 LINKER_DECL int tdm_th2_flex_ovs_tables_rebalance_speed( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     97 LINKER_DECL int tdm_th2_flex_ovs_tables_move_pm( tdm_mod_t *_tdm, th2_flxport_t *_flxport, int src_grp, int dst_grp);
     98 LINKER_DECL int tdm_th2_flex_ovs_tables_post( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
     99 LINKER_DECL int tdm_th2_vbs_scheduler_ovs_flex_port_delta( tdm_mod_t *_tdm );
    100 LINKER_DECL enum port_speed_e        tdm_th2_vbs_scheduler_ovs_indx_to_speed(enum port_speed_indx_e _speed_indx);
    101 LINKER_DECL enum port_speed_indx_e   tdm_th2_vbs_scheduler_ovs_speed_to_indx(enum port_speed_e _speed);
    102 
    103 LINKER_DECL int tdm_th2_print_th2_flxport_t( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
    104 LINKER_DECL int tdm_th2_flex_ovs_tables_update_grp_pms( tdm_mod_t *_tdm, th2_flxport_t *_flxport);
    105 LINKER_DECL int tdm_th2_ovs_map_pm_num_to_pblk_flex_port( tdm_mod_t *_tdm, enum flexport_pm_state_e *pm_flexport_state );
    106 
    107 /* TDM.4 - Tomahawk2 chip based filter methods */
    108 LINKER_DECL int tdm_th2_filter_vector_shift(int *tdm_tbl, int port, int dir);
    109 LINKER_DECL void tdm_th2_filter_local_slice_dn(int port, int *tdm_tbl, int **tsc, enum port_speed_e *speed);
    110 LINKER_DECL void tdm_th2_filter_local_slice_up(int port, int *tdm_tbl, int **tsc, enum port_speed_e *speed);
    111 LINKER_DECL void tdm_th2_filter_ancillary_smooth(int port, int *tdm_tbl, int lr_idx_limit, int accessories);
    112 LINKER_DECL int tdm_th2_filter_slice_dn(int port, int *tdm_tbl, int lr_idx_limit, int **tsc, enum port_speed_e *speed);
    113 LINKER_DECL int tdm_th2_filter_slice_up(int port, int *tdm_tbl, int lr_idx_limit, int **tsc, enum port_speed_e *speed);
    114 LINKER_DECL void tdm_th2_filter_dither(int *tdm_tbl, int lr_idx_limit, int accessories, int **tsc, int threshold, enum port_speed_e *speed);
    115 LINKER_DECL int tdm_th2_filter_fine_dither(int port, int *tdm_tbl, int lr_idx_limit, int accessories, int **tsc);
    116 LINKER_DECL int tdm_th2_check_same_port_dist_dn(int idx, int *tdm_tbl, int lim);
    117 LINKER_DECL int tdm_th2_check_same_port_dist_up(int idx, int *tdm_tbl, int lim);
    118 LINKER_DECL int tdm_th2_check_same_port_dist_dn_port(int port, int idx, int *tdm_tbl, int lim);
    119 LINKER_DECL int tdm_th2_check_same_port_dist_up_port(int port, int idx, int *tdm_tbl, int lim);
    120 LINKER_DECL int tdm_th2_check_fit_smooth(int *tdm_tbl, int port, int lr_idx_limit, int clump_thresh);
    121 LINKER_DECL int tdm_th2_slice_size_local(unsigned short idx, int *tdm, int lim);
    122 LINKER_DECL int tdm_th2_slice_prox_dn(int slot, int *tdm, int lim, int **tsc, enum port_speed_e *speed);
    123 LINKER_DECL int tdm_th2_slice_prox_up(int slot, int *tdm, int **tsc, enum port_speed_e *speed);
    124 LINKER_DECL int tdm_th2_slice_size(unsigned short port, int *tdm, int lim);
    125 LINKER_DECL int tdm_th2_slice_idx(unsigned short port, int *tdm, int lim);
    126 LINKER_DECL int tdm_th2_slice_prox_local(unsigned short idx, int *tdm, int lim, int **tsc);
    127 LINKER_DECL int tdm_th2_check_lls_flat_up(int idx, int *tdm_tbl, enum port_speed_e *speed);
    128 LINKER_DECL int tdm_th2_num_lr_slots(int *tdm_tbl);
    129 
    130 
    131 #endif /* TDM_TH2_PREPROCESSOR_PROTOTYPES_H */