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

blackhawk_tsc_dependencies.c (5072B)


      1 /*
      2  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      3  * 
      4  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      5  * 
      6 */
      7 
      8 #ifdef LINUX
      9 /* #include <stdint.h> */
     10 #endif
     11 
     12 #include "blackhawk_tsc_dependencies.h"
     13 #include "common/srds_api_err_code.h"
     14 #include "blackhawk_tsc_common.h"
     15 #include <phymod/phymod.h>
     16 #include <phymod/phymod_system.h>
     17 #include <phymod/acc/phymod_tsc_iblk.h>
     18 #include "blackhawk_tsc_fields.h"
     19 #include "blackhawk_tsc_field_access.h"
     20 #include "blackhawk_tsc_interface.h"
     21 #include "blackhawk_tsc_functions.h"
     22 #include "common/srds_api_types.h"
     23 
     24 extern srds_info_t blackhawk_tsc_info[NUM_SERDES_INFO_TABLES];
     25 
     26 
     27 err_code_t blackhawk_tsc_pmd_mwr_reg(srds_access_t *sa__, uint16_t addr, uint16_t mask, uint8_t lsb, uint16_t val) {
     28     uint32_t mymask = ( uint32_t) mask;
     29     phymod_access_t sa_copy;
     30     uint32_t i;
     31     uint32_t error_code;
     32 
     33     uint32_t data = ((mymask << 16) & 0xffff0000) | val << lsb;
     34 
     35     error_code=0;
     36     PHYMOD_MEMCPY(&sa_copy, sa__, sizeof(srds_access_t));
     37     for(i=1; i <= 0x80; i = i << 1) {
     38         if ( i & sa__->lane_mask ) {
     39             sa_copy.lane_mask = i;
     40             error_code+=phymod_tscbh_iblk_write(&sa_copy, (PHYMOD_REG_ACC_TSC_IBLK | 0x10000 | (uint32_t) addr), data);
     41         }
     42     }
     43     if(error_code)
     44       return  ERR_CODE_DATA_NOTAVAIL;
     45     return  ERR_CODE_NONE;
     46 }
     47 
     48 uint8_t blackhawk_tsc_get_lane(srds_access_t *sa__) {
     49     if (sa__->lane_mask == 0x1) {
     50         return ( 0 );
     51     } else if (sa__->lane_mask == 0x2) {
     52         return ( 1 );
     53     } else if (sa__->lane_mask == 0x4) {
     54         return ( 2 );
     55     } else if (sa__->lane_mask == 0x8) {
     56         return ( 3 );
     57     } else if (sa__->lane_mask == 0x10) {
     58         return ( 4 );
     59     } else if (sa__->lane_mask == 0x20) {
     60         return ( 5 );
     61     } else if (sa__->lane_mask == 0x40) {
     62         return ( 6 );
     63     } else if (sa__->lane_mask == 0x80) {
     64         return ( 7 );
     65     } else {
     66         return ( 0 );
     67     }
     68 }
     69 
     70 uint16_t blackhawk_tsc_pmd_rd_reg(srds_access_t *sa__, uint16_t address){
     71 
     72     uint32_t data;
     73     phymod_tscbh_iblk_read(sa__, (PHYMOD_REG_ACC_TSC_IBLK | 0x10000 | (uint32_t) address), &data);
     74     data = data & 0xffff;
     75     return ( (uint16_t)data );
     76 }
     77 
     78 err_code_t blackhawk_tsc_delay_ns(uint16_t delay_ns) {
     79     uint32_t delay;
     80     delay = delay_ns / 1000;
     81     if (!delay ) {
     82         delay = 1;
     83     }
     84     PHYMOD_USLEEP(delay);
     85     return ( 0 );
     86 }
     87 
     88 err_code_t blackhawk_tsc_delay_ms(uint32_t delay_ms) {
     89 
     90     uint32_t delay;
     91     delay = delay_ms * 1000;
     92     if (!delay ) {
     93         delay = 1;
     94     }
     95     PHYMOD_USLEEP(delay);
     96     return ( 0 );
     97 }
     98 
     99 
    100 /**
    101 @brief   Falcon PMD Write
    102 @param   phymod access handle to current Falcon Context
    103 @param   address
    104 @param   val
    105 @returns The ERR_CODE_NONE upon successful completion, else returns ERR_CODE_DATA_NOTAVAIL
    106 */
    107 err_code_t blackhawk_tsc_pmd_wr_reg(srds_access_t *sa__, uint16_t address, uint16_t val){
    108     uint32_t data = 0xffff & val;
    109     uint32_t error_code;
    110     error_code = phymod_tscbh_iblk_write(sa__, (PHYMOD_REG_ACC_TSC_IBLK | 0x10000 | (uint32_t) address), data);
    111     if(error_code)
    112       return  ERR_CODE_DATA_NOTAVAIL;
    113     return  ERR_CODE_NONE;
    114 }
    115 
    116 err_code_t blackhawk_tsc_delay_us(uint32_t delay_us){
    117     PHYMOD_USLEEP(delay_us);
    118     return ( 0 );
    119 }
    120 
    121 err_code_t blackhawk_tsc_pmd_rdt_reg(phymod_access_t *pa, uint16_t address, uint16_t *val) {
    122     uint32_t data;
    123     phymod_tscbh_iblk_read(pa, (PHYMOD_REG_ACC_TSC_IBLK | 0x10000 | (uint32_t) address), &data);
    124     data = data & 0xffff;
    125     *val = (uint16_t)data;
    126     return ( 0 );
    127 }
    128 
    129 uint8_t blackhawk_tsc_get_core(srds_access_t *sa__) {
    130     return(0);
    131 }
    132 
    133 err_code_t blackhawk_tsc_uc_lane_idx_to_system_id(srds_access_t *sa__, char string[16], uint8_t uc_lane_idx){
    134     static char info[256];
    135    /* Indicates Falcon Core */
    136     PHYMOD_SPRINTF(info, "%s_%d", "FC_", uc_lane_idx);
    137     PHYMOD_STRNCPY(string,info, PHYMOD_STRLEN(info)+1);
    138     return ERR_CODE_NONE;
    139 }
    140 
    141 err_code_t blackhawk_tsc_pmd_wr_pram(srds_access_t *sa__, uint8_t val){
    142 
    143     return ERR_CODE_NONE;
    144 
    145 }
    146 
    147 err_code_t blackhawk_tsc_set_lane(srds_access_t *sa__, uint8_t lane_index)
    148 {
    149     sa__->lane_mask = 1 << lane_index;
    150     return ERR_CODE_NONE;
    151 
    152 }
    153 
    154 uint8_t blackhawk_tsc_get_pll_idx(srds_access_t *sa__)
    155 {
    156     uint32_t data;
    157     data = sa__->pll_idx;
    158     return (data & 0x1);
    159 }
    160 
    161 err_code_t blackhawk_tsc_set_pll_idx(srds_access_t *sa__, uint8_t pll_index)
    162 {
    163     sa__->pll_idx = pll_index;
    164     return ERR_CODE_NONE;
    165 }
    166 
    167 uint8_t blackhawk_tsc_get_micro_idx(srds_access_t *sa__)
    168 {
    169     uint32_t data;
    170     data = sa__->pll_idx;
    171     return (data & 0x3);
    172 }
    173 
    174 err_code_t blackhawk_tsc_set_micro_idx(srds_access_t *sa__, uint8_t micro_index)
    175 {
    176     sa__->pll_idx = micro_index;
    177     return ERR_CODE_NONE;
    178 
    179 }
    180 
    181 srds_info_t *blackhawk_tsc_INTERNAL_get_blackhawk_tsc_info_ptr(srds_access_t *sa__) {
    182 
    183 #if  defined(PHYMOD_SUPPORT) && defined(SERDES_EXTERNAL_INFO_TABLE_EN)
    184     return (srds_info_t *) (sa__->pmd_info_ptr);
    185 #else
    186     uint8_t index = 0;
    187     return &blackhawk_tsc_info[index];
    188 #endif
    189 
    190 }
    191 
    192 
    193