223 lines
5.1 KiB
C
223 lines
5.1 KiB
C
![]() |
#ifndef COMMON_INC_PHY_PARA_H_
|
|||
|
#define COMMON_INC_PHY_PARA_H_
|
|||
|
|
|||
|
#include "ucp_drv_common.h"
|
|||
|
|
|||
|
#define MTIMER_NULL 0xFFFF
|
|||
|
#define PHY_SCS_MAX_NUM 4
|
|||
|
#define SFN_PERIOD 10000 // 10ms
|
|||
|
|
|||
|
#define PROTO_SEL_ADDR (0x0A4D7000)
|
|||
|
#define PROTO_OPT_ADDR (0x0A4D7004)
|
|||
|
#define PHY_PARA_ADDR (0x0A4D7008)
|
|||
|
#define PHY_CELL_ADDR (0x0A4D7100)
|
|||
|
|
|||
|
#define STC_TOD_INT_ADDR (0x0A4D7200)
|
|||
|
#define STC_RT_ADDR (0x0A4D7204)
|
|||
|
#define STC_CTW_EN_ADDR (0x0A4D7208)
|
|||
|
|
|||
|
#define CPRI_DELAY_ADDR (0x0A4D7210)
|
|||
|
#define CPRI_ADVANCE_ADDR (0x0A4D7214)
|
|||
|
#define CPRI_TDD_ADVANCE_ADDR (0x0A4D7218)
|
|||
|
|
|||
|
#define ARM_SFN_VALID_ADDR (0x0A4D7220) // 0xAA not valid, 0x55 valid
|
|||
|
#define ARM_SFN_NUM_ADDR (0x0A4D7224)
|
|||
|
#define ARM_SFN_FLIP_ADDR (0x0A4D7228)
|
|||
|
#define ARM_LOCK_FLAG_ADDR (0x0A4D722C)
|
|||
|
|
|||
|
#define ARM_SFN_VALID_FLAG (0x55)
|
|||
|
#define ARM_SFN_NOTVALID_FLAG (0xAA)
|
|||
|
|
|||
|
#define CSU_STOP_CMD_ADDR (0x0A4D7230)
|
|||
|
//#define CSU_ADVANCE_US_ADDR (0x0A4D7234)
|
|||
|
|
|||
|
#define CTC_INT_TYPE_ADDR (0x0A4D7234)
|
|||
|
#define CSU_RX_TD_SAMPLE (0x0A4D7238)
|
|||
|
#define CSU_TX_ADVANCE_SAMPLE (0x0A4D723C)
|
|||
|
|
|||
|
#define SERDES_INIT_FLAG_ADDR (0x0A4D7240) // cpri or jesd clk init finished
|
|||
|
#define STC_ONEPPS_OUT_ADDR (0x0A4D7244)
|
|||
|
|
|||
|
#define DDR_MONITOR_ENABLE (0x0A4D7250) // 开始监测ddr性能
|
|||
|
#define DDR_MONITOR_CNT (0x0A4D7254)
|
|||
|
|
|||
|
#define SLOT_NUM_DEBUG_ADDR (0x0A4D7300)
|
|||
|
#define APE_INT_INFO_ADDR (0x0A4D7400)
|
|||
|
|
|||
|
#define PHY_CELL_FLAG 0xAFAFAFAF
|
|||
|
#define ARM_SFN_UPDATE_FLAG 0xA5A5A5A5
|
|||
|
|
|||
|
#define ENABLE_SFNCAL // 使能与arm的帧号校准功能
|
|||
|
//#define DISTRIBUTED_BS
|
|||
|
//#define INTEGRATION_BS
|
|||
|
|
|||
|
//#define GPS_PP1S_SYNC
|
|||
|
#define GPS_LTE_OFFSET 700 // us
|
|||
|
#define GPS_NR_OFFSET 2700 // us
|
|||
|
#define LTE_NR_OFFSET 2000 // us
|
|||
|
|
|||
|
#define SCS_MAX_NUM 2
|
|||
|
|
|||
|
#ifdef DISTRIBUTED_BS
|
|||
|
#define MTIMER_MAX_NUM 2
|
|||
|
#endif
|
|||
|
#ifdef INTEGRATED_BS
|
|||
|
#define MTIMER_MAX_NUM 4
|
|||
|
#endif
|
|||
|
typedef enum _tagMtimerDistributeOptId
|
|||
|
{
|
|||
|
MTIMER_CPRI_ID = 0,
|
|||
|
MTIMER_ECPRI_ID
|
|||
|
}mtimerDistributeOptId;
|
|||
|
|
|||
|
typedef enum _tagMtimerIntegrateOptId
|
|||
|
{
|
|||
|
MTIMER_JESD_RX0_ID = 0,
|
|||
|
MTIMER_JESD_RX1_ID,
|
|||
|
MTIMER_JESD_TX0_ID,
|
|||
|
MTIMER_JESD_TX1_ID
|
|||
|
}mtimerIntegrateOptId;
|
|||
|
|
|||
|
typedef enum _tagAPEIntInfoId
|
|||
|
{
|
|||
|
APE_INT_TX_SLOT = 0,
|
|||
|
APE_INT_RX_SLOT = 1,
|
|||
|
APE_INT_STC_0US = 2,
|
|||
|
APE_INT_STC = 3,
|
|||
|
APE_INT_MAXNUM = 8
|
|||
|
}numAPEIntInfoId;
|
|||
|
|
|||
|
typedef enum _tagCtcIntType
|
|||
|
{
|
|||
|
CTC_INT_TYPE_NULL = 0,
|
|||
|
CTC_INT_TYPE_CAL = 1
|
|||
|
}numCtcIntType;
|
|||
|
|
|||
|
typedef enum _tagProtocolID
|
|||
|
{
|
|||
|
PROTOCOL_NULL = 0,
|
|||
|
PROTOCOL_CPRI = 1,
|
|||
|
PROTOCOL_ECPRI,
|
|||
|
PROTOCOL_JESD
|
|||
|
}numProtoID;
|
|||
|
#define PROTO_OPTION_NULL 0
|
|||
|
|
|||
|
typedef enum _tagCpriOptionID
|
|||
|
{
|
|||
|
CPRI_OPTION_7 = 7,
|
|||
|
CPRI_OPTION_8 = 8,
|
|||
|
CPRI_OPTION_9 = 9,
|
|||
|
CPRI_OPTION_10 = 10
|
|||
|
}cpriOptID;
|
|||
|
|
|||
|
typedef enum _tagEcpriOptionID
|
|||
|
{
|
|||
|
ECPRI_OPTION_10G = 1,
|
|||
|
ECPRI_OPTION_25G = 2
|
|||
|
}ecpriOptID;
|
|||
|
|
|||
|
typedef enum _tagScsID
|
|||
|
{
|
|||
|
LTE_SCS_ID = 0,
|
|||
|
NR_SCS_30K,
|
|||
|
NR_SCS_60K,
|
|||
|
NR_SCS_120K,
|
|||
|
SCS_NULL = 0xFFFF
|
|||
|
}numScsID;
|
|||
|
|
|||
|
typedef struct _tagCoreInt
|
|||
|
{
|
|||
|
uint32_t intNum;
|
|||
|
uint32_t intCnt;
|
|||
|
}stCoreInt;
|
|||
|
|
|||
|
typedef struct _tagPhyScsPara
|
|||
|
{
|
|||
|
uint16_t scsId;
|
|||
|
uint16_t runCoreId;
|
|||
|
uint16_t mtimerId;
|
|||
|
uint16_t gpsOffset; // us as unit
|
|||
|
uint16_t slotPeriod;
|
|||
|
uint16_t slotNumOfTdd;
|
|||
|
uint16_t slotNumOfSfn;
|
|||
|
uint16_t reserved;
|
|||
|
uint32_t rxSlotNum;
|
|||
|
uint32_t txSlotNum;
|
|||
|
uint32_t rxSfnNum;
|
|||
|
uint32_t txSfnNum;
|
|||
|
uint32_t rxSetVal;
|
|||
|
uint32_t txSetVal;
|
|||
|
uint32_t txSlotIntFlag;
|
|||
|
uint32_t rxSlotIntFlag;
|
|||
|
// UINT64 rxSlotStcCnt;
|
|||
|
// UINT64 txSlotStcCnt;
|
|||
|
}stPhyScsPara;
|
|||
|
|
|||
|
typedef struct phy_timer_config_ind_t
|
|||
|
{
|
|||
|
uint32_t scsId;
|
|||
|
uint32_t runCoreId; // 此次需要建小区的ape core id,bitmap方式,bit0对应ape0,bit1对应ape1,。。。
|
|||
|
uint16_t bandWidth; //带宽:5M,10M,15M,20M,25M,30M,40M,50M,60M,80M,100M
|
|||
|
uint16_t t_period; //timer周期=t_us*num_t, 500us, 625us, 1000us, 1250us, 2500us, 5000us, 10000us, 20000us
|
|||
|
|
|||
|
uint16_t t_us; //物理层时隙定时长度, 125us, 250us, 500us, 1000us
|
|||
|
uint8_t num_t; //timer周期内时隙的个数5,10,20,40,80
|
|||
|
uint8_t num_t_per_sfn; //一个SFN内的时隙个数
|
|||
|
|
|||
|
uint8_t num_t_dl; //下行时隙个数
|
|||
|
uint8_t num_t_dl_symb; //时隙内下行符号个数
|
|||
|
uint8_t num_t_ul_symb; //时隙内上行符号个数
|
|||
|
uint8_t num_ants; //天线个数
|
|||
|
}phy_timer_config_ind_t;
|
|||
|
|
|||
|
typedef struct _tagPhyCellPara
|
|||
|
{
|
|||
|
uint32_t flag;
|
|||
|
phy_timer_config_ind_t phyPara;
|
|||
|
}stPhyCellPara;
|
|||
|
|
|||
|
typedef struct _tagSfnPara
|
|||
|
{
|
|||
|
uint32_t scsId;
|
|||
|
uint32_t slotPeriod; // slot period, us as unit
|
|||
|
uint32_t tddPeriod; // tdd period, us as unit
|
|||
|
uint32_t tddSlotNum; // slot num of every tdd period
|
|||
|
uint32_t slotMaxNum;
|
|||
|
uint32_t ctcIntFlag;
|
|||
|
uint32_t txSlotNum;
|
|||
|
uint32_t rxSlotNum;
|
|||
|
uint32_t txSfnNum;
|
|||
|
uint32_t rxSfnNum;
|
|||
|
uint32_t txSlotIntCnt;
|
|||
|
uint32_t rxSlotIntCnt;
|
|||
|
uint64_t txSlotTiming;
|
|||
|
uint64_t rxSlotTiming;
|
|||
|
}stSfnPara;
|
|||
|
|
|||
|
void sfn_para_init(void);
|
|||
|
|
|||
|
void phy_para_init(int32_t protocol, int32_t option);
|
|||
|
void phy_scs_para_init(int32_t scsId);
|
|||
|
|
|||
|
int32_t get_protocol_sel();
|
|||
|
int32_t get_protocol_opt();
|
|||
|
|
|||
|
void set_tx_slot_intflag(uint8_t scs, int32_t flag);
|
|||
|
|
|||
|
int32_t get_tx_slot_intflag(uint8_t scs);
|
|||
|
|
|||
|
void set_rx_slot_intflag(uint8_t scs, int32_t flag);
|
|||
|
|
|||
|
int32_t get_rx_slot_intflag(uint8_t scs);
|
|||
|
|
|||
|
void get_cpri_delay(uint32_t* delay);
|
|||
|
|
|||
|
void get_cpri_advance(uint32_t* advance);
|
|||
|
|
|||
|
int32_t send_cpri_csu_stop_cmd();
|
|||
|
|
|||
|
int32_t send_cpri_csu_start_cmd();
|
|||
|
|
|||
|
|
|||
|
#endif /* COMMON_INC_PHY_PARA_H_ */
|