diff --git a/inc/drv_jesd_csu.h b/inc/drv_jesd_csu.h index 1666fc9..b726653 100644 --- a/inc/drv_jesd_csu.h +++ b/inc/drv_jesd_csu.h @@ -32,7 +32,7 @@ typedef struct _tagJesdCsuPara uint8_t nTotal; // n+cs+padding uint8_t seq; uint8_t margin; - uint8_t reserved; + uint8_t tfMode; }stJesdCsuPara; // 链表节点结构体定义 @@ -48,12 +48,13 @@ typedef struct _tagJesdCsuNodePara 函数入参: uint8_t antNum: 天线数 uint8_t margin: jesd csu一次搬移的数据量xnum=(32*2^margin)B,设置合理的margin值,确保allnum/xnum是个整数值 + uint8_t tfMode: tdd/fdd mode 返回值: 0 : 正常 -1: 输入参数错误 函数功能:JESD CSU初始化 ********************************************************************************************************************/ -int32_t jesd_csu_init(uint8_t antNum, uint8_t margin); +int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode); /******************************************************************************************************************* 函数名称:jesd_orx_csu_init diff --git a/inc/drv_rfm.h b/inc/drv_rfm.h index 4c6e449..0d38ca4 100644 --- a/inc/drv_rfm.h +++ b/inc/drv_rfm.h @@ -51,6 +51,24 @@ typedef struct _tagFrontHaulDrvPara uint32_t mapOption; // CpriMapType }stFrontHaulDrvPara; +typedef enum _tagScsID +{ + LTE_SCS_ID = 0, + NR_SCS_30K, + NR_SCS_60K, + NR_SCS_120K, + SCS_NULL = 0xFFFF +}numScsID; + +typedef enum _tagFrameType +{ + FDD_MODE = 0, + TDD_MODE = 1, + TDD_2500US_DOUBLE = 2, + FRAME_NULL = 0xFFFF +}numFrameType; + + /* 函数名称:fronthaul_drv_cfg 函数入参:stFrontHaulDrvPara* pFhDrvPara :前传接口配置参数 @@ -226,6 +244,15 @@ int32_t set_cpri_rru_msg(CpriRruMsg_t rru_msg); 函数功能:物理层通知平台,进行orx数据搬移 */ int32_t phy_sniffer_start(); + +/* + 函数名称:spu_ddr_monitor_start + 函数入参:uint32_t monitorCnt: 本次启动需要监控的次数 + 函数返回:无 + 函数功能:物理层通知平台,启动ddr监控功能,且配置需要监控的次数 +*/ +void spu_ddr_monitor_start(uint32_t monitorCnt); + /**************************************************/ /* ape csu相关 */ diff --git a/public/ecs_rfm_spu1/driver/inc/jesd_csu.h b/public/ecs_rfm_spu1/driver/inc/jesd_csu.h index f8508d0..e80e0e5 100644 --- a/public/ecs_rfm_spu1/driver/inc/jesd_csu.h +++ b/public/ecs_rfm_spu1/driver/inc/jesd_csu.h @@ -33,7 +33,7 @@ typedef struct _tagJesdCsuPara uint8_t nTotal; // n+cs+padding uint8_t seq; uint8_t margin; - uint8_t reserved; + uint8_t tfMode; }stJesdCsuPara; typedef struct _tagJesdCsuNodePara @@ -49,7 +49,7 @@ typedef struct _tagJesdListPara uint32_t listNodeNum; }stJesdListPara; -int32_t jesd_csu_init(uint8_t antNum, uint8_t margin); +int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode); int32_t jesd_orx_csu_init(void); @@ -73,6 +73,8 @@ int32_t jesd_csu_rx_list_init(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNode int32_t jesd_csu_tx_list_init(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId); +int32_t jesd_csu_rx_list_desc0_flush(uint8_t nChId, uint8_t nListId); + int32_t jesd_csu_rx_dmaReg_Cfg(uint8_t nChId, uint8_t nListId); int32_t jesd_csu_tx_dmaReg_Cfg(uint8_t nChId, uint8_t nListId); diff --git a/public/ecs_rfm_spu1/driver/inc/jesd_csu_nr_fdd.h b/public/ecs_rfm_spu1/driver/inc/jesd_csu_nr_fdd.h index 321ab6c..0f10587 100644 --- a/public/ecs_rfm_spu1/driver/inc/jesd_csu_nr_fdd.h +++ b/public/ecs_rfm_spu1/driver/inc/jesd_csu_nr_fdd.h @@ -34,6 +34,9 @@ int32_t jesd_csu_init_nr_fdd(); int32_t jesd_csu_init_nr_fdd_slot0(); +int32_t jesd_csu_init_nr_fdd_rx_slot2(); + + #if 0 int32_t jesd_csu_init_nr_7ds2u_iomode(); int32_t jesd_csu_init_nr_7ds2u_8t8r(); diff --git a/public/ecs_rfm_spu1/driver/inc/rfm1_drv.h b/public/ecs_rfm_spu1/driver/inc/rfm1_drv.h index 73ba372..0c75851 100644 --- a/public/ecs_rfm_spu1/driver/inc/rfm1_drv.h +++ b/public/ecs_rfm_spu1/driver/inc/rfm1_drv.h @@ -11,6 +11,8 @@ void check_10ms_offset(void); int32_t fronthaul_drv_cfg(stFrontHaulDrvPara* pFhDrvPara); +void spu_ddr_monitor_start(uint32_t monitorCnt); + #endif diff --git a/public/ecs_rfm_spu1/driver/src/jesd_csu.s.c b/public/ecs_rfm_spu1/driver/src/jesd_csu.s.c index 8614cfc..2bf9810 100644 --- a/public/ecs_rfm_spu1/driver/src/jesd_csu.s.c +++ b/public/ecs_rfm_spu1/driver/src/jesd_csu.s.c @@ -15,7 +15,7 @@ stJesdListPara gJesdRxListPara[JESD_CH_NUM][JESD_LIST_NUM]; uint32_t gJesdOrxCsuIntCnt = 0; uint32_t gJesdListInitFinished = 0; -extern uint32_t gJesdTFMode; +//extern uint32_t gJesdTFMode; extern void phy_sniffer_data_proc(); void isr_jesd_orx_csu() @@ -38,7 +38,7 @@ void isr_jesd_orx_csu() } } -int32_t jesd_csu_init(uint8_t antNum, uint8_t margin) +int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode) { if ((0 == antNum) || (8 < antNum)) { @@ -80,6 +80,7 @@ int32_t jesd_csu_init(uint8_t antNum, uint8_t margin) } gJesdCsuPara.seq = antNum; gJesdCsuPara.margin = margin; + gJesdCsuPara.tfMode = tfMode; // [ 1: 0] -> CS // [ 6: 4] -> Margin @@ -255,16 +256,13 @@ int32_t jesd_csu_rx_list_init(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNode int32_t i = 0; for(i = 0; i < nodeNum; i++) { - if ((FDD_MODE != gJesdTFMode) && (1 != orxFlag)) + if (0 == i) { - if (0 == i) - { - rxListCmdL = (1<<4)+(0<<5)+(3<<6)+(1<<23); - } - else - { - rxListCmdL = (1<<4)+(0<<5)+(3<<6); - } + rxListCmdL = (1<<4)+(0<<5)+(3<<6)+(1<<23); + } + else + { + rxListCmdL = (1<<4)+(0<<5)+(3<<6); } uint32_t yStep = (1 == orxFlag) ? (0x20 * (1<cmdFifoL = rxListCmdL; + + debug_write((DBG_DDR_IDX_DRV_BASE+124), rxListCmdL); // 0x1F0 + debug_write((DBG_DDR_IDX_DRV_BASE+125), (uint32_t)(pLinkDesc)); // 0x110 + + return 0; +} + + int32_t jesd_csu_rx_dmaReg_Cfg(uint8_t nChId, uint8_t nListId) // uint32_t listAddr, uint32_t nodeNum) { if ((JESD_CH_NUM <= nChId) || (JESD_LIST_NUM <= nListId)) @@ -421,7 +438,6 @@ int32_t jesd_csu_rx_start_ch(uint8_t nChId, uint8_t nListId) { return -1; // list not init } - gJesdListInitFinished++; stCsuDmaCmdL cpriCmdL; *(uint32_t*)(&cpriCmdL) = 0; @@ -443,6 +459,8 @@ int32_t jesd_csu_rx_start_ch(uint8_t nChId, uint8_t nListId) do_write(&(JS_CSU_CMDHIGHDATA), 0); do_write(((uint32_t*)&(JS_CSU_CMDFIFO0)+(nChId<<1)), *(uint32_t*)(&cpriCmdL)); + gJesdListInitFinished++; + return 0; } diff --git a/public/ecs_rfm_spu1/driver/src/jesd_csu_lte_fdd.s.c b/public/ecs_rfm_spu1/driver/src/jesd_csu_lte_fdd.s.c index a5614e1..0008285 100644 --- a/public/ecs_rfm_spu1/driver/src/jesd_csu_lte_fdd.s.c +++ b/public/ecs_rfm_spu1/driver/src/jesd_csu_lte_fdd.s.c @@ -1,10 +1,10 @@ #include "jesd_csu_lte_fdd.h" #include "jesd_csu.h" - +#include "phy_para.h" int32_t jesd_csu_init_lte_fdd() { - jesd_csu_init(JESD_LTEFDD_ANT_NUM, JESD_LTEFDD_MARGIN); + jesd_csu_init(JESD_LTEFDD_ANT_NUM, JESD_LTEFDD_MARGIN, FDD_MODE); stJesdCsuNodePara txCsuNode[JESD_LTEFDD_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_LTEFDD_RX_NODENUM]; //tx的链表地址 @@ -51,7 +51,7 @@ int32_t jesd_csu_init_lte_fdd() int32_t jesd_csu_init_lte_fdd_slot0() { - jesd_csu_init(JESD_LTEFDD_ANT_NUM, JESD_LTEFDD_MARGIN); + jesd_csu_init(JESD_LTEFDD_ANT_NUM, JESD_LTEFDD_MARGIN, FDD_MODE); stJesdCsuNodePara txCsuNode[JESD_LTEFDD_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_LTEFDD_RX_NODENUM]; //tx的链表地址 diff --git a/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_7ds2u.s.c b/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_7ds2u.s.c index 6c55e9b..fa06682 100644 --- a/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_7ds2u.s.c +++ b/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_7ds2u.s.c @@ -1,10 +1,10 @@ #include "jesd_csu_nr_7ds2u.h" #include "jesd_csu.h" - +#include "phy_para.h" int32_t jesd_csu_init_nr_7ds2u() { - jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN); + jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN, TDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NR7DS2U_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NR7DS2U_RX_NODENUM]; //tx的链表地址 @@ -73,7 +73,7 @@ int32_t jesd_csu_init_nr_7ds2u() int32_t jesd_csu_init_nr_7d2u() { - jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN); + jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN, TDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NR7DS2U_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NR7DS2U_RX_NODENUM]; //tx的链表地址 @@ -138,7 +138,7 @@ int32_t jesd_csu_init_nr_7d2u() int32_t jesd_csu_init_nr_7d2u_slot0() { - jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN); + jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN, TDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NR7DS2U_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NR7DS2U_RX_NODENUM]; //tx的链表地址 @@ -203,7 +203,7 @@ int32_t jesd_csu_init_nr_7d2u_slot0() int32_t jesd_csu_init_nr_7ds2u_iomode() { - jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN); + jesd_csu_init(JESD_NR7DS2U_ANT_NUM, JESD_NR7DS2U_MARGIN, TDD_MODE); stJesdCsuNodePara txCsuNode[20]; stJesdCsuNodePara rxCsuNode[20]; //tx的链表地址 @@ -272,7 +272,7 @@ int32_t jesd_csu_init_nr_7ds2u_iomode() int32_t jesd_csu_init_nr_7ds2u_8t8r() { - jesd_csu_init(8, JESD_NR7DS2U_MARGIN); + jesd_csu_init(8, JESD_NR7DS2U_MARGIN, TDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NR7DS2U_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NR7DS2U_RX_NODENUM]; //tx的链表地址 @@ -351,7 +351,7 @@ int32_t jesd_csu_init_nr_7ds2u_8t8r() int32_t jesd_csu_init_nr_7ds2u_4t4r_98() { - jesd_csu_init(4, JESD_98_NR7DS2U_MARGIN); + jesd_csu_init(4, JESD_98_NR7DS2U_MARGIN, TDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NR7DS2U_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NR7DS2U_RX_NODENUM]; //tx的链表地址 @@ -423,7 +423,7 @@ int32_t jesd_csu_init_nr_7ds2u_4t4r_98() // 4t4r, 245.76M int32_t jesd_csu_init_nr_2500us_double() { - jesd_csu_init(4, JESD_98_NR7DS2U_MARGIN); + jesd_csu_init(4, JESD_98_NR7DS2U_MARGIN, TDD_2500US_DOUBLE); stJesdCsuNodePara txCsuNode1[JESD_2500US_DOUBLE_TX_NODENUM1]; stJesdCsuNodePara rxCsuNode1[JESD_2500US_DOUBLE_RX_NODENUM1]; stJesdCsuNodePara txCsuNode2[JESD_2500US_DOUBLE_TX_NODENUM2]; @@ -538,7 +538,7 @@ int32_t jesd_csu_init_nr_2500us_double() // 4t4r, 245.76M, slot0 int32_t jesd_csu_init_nr_2500us_double_slot0() { - jesd_csu_init(4, JESD_98_NR7DS2U_MARGIN); + jesd_csu_init(4, JESD_98_NR7DS2U_MARGIN, TDD_2500US_DOUBLE); stJesdCsuNodePara txCsuNode1[JESD_2500US_DOUBLE_TX_NODENUM1]; stJesdCsuNodePara rxCsuNode1[JESD_2500US_DOUBLE_RX_NODENUM1]; stJesdCsuNodePara txCsuNode2[JESD_2500US_DOUBLE_TX_NODENUM2]; @@ -669,12 +669,3 @@ int32_t jesd_sniffer_orx_csu_init() return 0; } -#if 1 -int32_t jesd_csu_start_nr_7ds2u() -{ - //jesd_csu_start(); - - return 0; -} -#endif - diff --git a/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_fdd.s.c b/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_fdd.s.c index 678e6d5..af76bcf 100644 --- a/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_fdd.s.c +++ b/public/ecs_rfm_spu1/driver/src/jesd_csu_nr_fdd.s.c @@ -1,10 +1,10 @@ #include "jesd_csu_nr_fdd.h" #include "jesd_csu.h" - +#include "phy_para.h" int32_t jesd_csu_init_nr_fdd() { - jesd_csu_init(JESD_NRFDD_ANT_NUM, JESD_NRFDD_MARGIN); + jesd_csu_init(JESD_NRFDD_ANT_NUM, JESD_NRFDD_MARGIN, FDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NRFDD_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NRFDD_RX_NODENUM]; //tx的链表地址 @@ -51,7 +51,7 @@ int32_t jesd_csu_init_nr_fdd() int32_t jesd_csu_init_nr_fdd_slot0() { - jesd_csu_init(JESD_NRFDD_ANT_NUM, JESD_NRFDD_MARGIN); + jesd_csu_init(JESD_NRFDD_ANT_NUM, JESD_NRFDD_MARGIN, FDD_MODE); stJesdCsuNodePara txCsuNode[JESD_NRFDD_TX_NODENUM]; stJesdCsuNodePara rxCsuNode[JESD_NRFDD_RX_NODENUM]; //tx的链表地址 @@ -96,12 +96,46 @@ int32_t jesd_csu_init_nr_fdd_slot0() return 0; } -#if 0 -int32_t jesd_csu_start_lte() +int32_t jesd_csu_init_nr_fdd_rx_slot2() { - jesd_csu_start(); + jesd_csu_init(JESD_NRFDD_ANT_NUM, JESD_NRFDD_MARGIN, FDD_MODE); + stJesdCsuNodePara txCsuNode[JESD_NRFDD_TX_NODENUM]; + stJesdCsuNodePara rxCsuNode[JESD_NRFDD_RX_NODENUM]; + //tx的链表地址 + uint32_t txListAddr = JESD_NRFDD_TX_LIST_ADDR; // 0x8A000000 + //rx的链表地址 + uint32_t rxListAddr = JESD_NRFDD_RX_LIST_ADDR; // 0x8A008000 + int32_t i = 0; + + // tx/rx, subframe 0~9 + for (i = 0; i < JESD_NRFDD_TX_NODENUM; i++) + { + if (0 == (i&0x1)) + { + txCsuNode[i].dataAddr = JESD_NRFDD_TX_SLOT_EVEN_DATA_ADDR; + txCsuNode[i].yStep = (JESD_NRFDD_SLOT_SAM_CNT<<2); + txCsuNode[i].allNum = (JESD_NRFDD_SLOT_SAM_CNT<<2)*JESD_NRFDD_ANT_NUM; + } + else if (1 == (i&0x1)) + { + txCsuNode[i].dataAddr = JESD_NRFDD_TX_SLOT_ODD_DATA_ADDR; + txCsuNode[i].yStep = (JESD_NRFDD_SLOT_SAM_CNT<<2); + txCsuNode[i].allNum = (JESD_NRFDD_SLOT_SAM_CNT<<2)*JESD_NRFDD_ANT_NUM; + } + + rxCsuNode[i].dataAddr = JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR; + rxCsuNode[i].yStep = (JESD_NRFDD_SLOT_SAM_CNT<<2); + rxCsuNode[i].allNum = (JESD_NRFDD_SLOT_SAM_CNT<<2)*JESD_NRFDD_ANT_NUM; + } + + rxCsuNode[2].dataAddr = JESD_NRFDD_RX_SLOT_ODD_DATA_ADDR; + rxCsuNode[2].yStep = (JESD_NRFDD_SLOT_SAM_CNT<<2); + rxCsuNode[2].allNum = (JESD_NRFDD_SLOT_SAM_CNT<<2)*JESD_NRFDD_ANT_NUM; + + jesd_csu_tx_cfg(txListAddr, JESD_NRFDD_TX_NODENUM, txCsuNode, JESD_CSU_CH0, 0); + jesd_csu_rx_cfg(rxListAddr, JESD_NRFDD_RX_NODENUM, rxCsuNode, JESD_CSU_CH0, 0); return 0; } -#endif + diff --git a/public/ecs_rfm_spu1/driver/src/jesd_timer.s.c b/public/ecs_rfm_spu1/driver/src/jesd_timer.s.c index 18c07e8..c403544 100644 --- a/public/ecs_rfm_spu1/driver/src/jesd_timer.s.c +++ b/public/ecs_rfm_spu1/driver/src/jesd_timer.s.c @@ -220,12 +220,12 @@ int32_t jesd_timer_get_csu_point(int32_t nTmrId, phy_timer_config_ind_t *my_jesd &pMtimerTxPara->txCsuOn[0].pointM, &pMtimerTxPara->txCsuOn[0].pointH); //pMtimerPara->rxCsuOn[0].timerPoint = (tdd*1000.0 - gCsuRxAdvanceNs - pJesdDelay->gps_offset*1000.0 - INT_DELAY*1000.0)/1000; - pMtimerPara->rxCsuOn[0].timerPoint = tdd - gCsuRxAdvanceNs/1000 - pJesdDelay->gps_offset - INT_DELAY; + pMtimerPara->rxCsuOn[0].timerPoint = tdd - gCsuRxAdvanceNs/1000 - pJesdDelay->gps_offset - INT_DELAY; // pJesdDelay->jesd_10ms2pp1s_txoffset; get_jesd_timer_point_para(nTmrId, pMtimerPara->rxCsuOn[0].timerPoint, &pMtimerPara->rxCsuOn[0].pointL, &pMtimerPara->rxCsuOn[0].pointM, &pMtimerPara->rxCsuOn[0].pointH); - debug_write((DBG_DDR_IDX_DRV_BASE+108+(0<<2)), pMtimerTxPara->txCsuOn[0].timerPoint); // 0x1b0 - debug_write((DBG_DDR_IDX_DRV_BASE+110+(0<<2)), pMtimerPara->rxCsuOn[0].timerPoint); // 0x1b8 + debug_write((DBG_DDR_IDX_DRV_BASE+48+(0<<2)), pMtimerTxPara->txCsuOn[0].timerPoint); // 0xC0 + debug_write((DBG_DDR_IDX_DRV_BASE+50+(0<<2)), pMtimerPara->rxCsuOn[0].timerPoint); // 0xC8 } else { @@ -260,10 +260,10 @@ int32_t jesd_timer_get_csu_point(int32_t nTmrId, phy_timer_config_ind_t *my_jesd get_jesd_timer_point_para(nTmrId, pMtimerPara->rxCsuOff[i].timerPoint, &pMtimerPara->rxCsuOff[i].pointL, &pMtimerPara->rxCsuOff[i].pointM, &pMtimerPara->rxCsuOff[i].pointH); - debug_write((DBG_DDR_IDX_DRV_BASE+108+(i<<2)), pMtimerTxPara->txCsuOn[i].timerPoint); // 0x1b0 - debug_write((DBG_DDR_IDX_DRV_BASE+109+(i<<2)), pMtimerTxPara->txCsuOff[i].timerPoint); // 0x1b4 - debug_write((DBG_DDR_IDX_DRV_BASE+110+(i<<2)), pMtimerPara->rxCsuOn[i].timerPoint); // 0x1b8 - debug_write((DBG_DDR_IDX_DRV_BASE+111+(i<<2)), pMtimerPara->rxCsuOff[i].timerPoint); // 0x1bc + debug_write((DBG_DDR_IDX_DRV_BASE+48+(i<<2)), pMtimerTxPara->txCsuOn[i].timerPoint); // 0xC0 + debug_write((DBG_DDR_IDX_DRV_BASE+49+(i<<2)), pMtimerTxPara->txCsuOff[i].timerPoint); // 0xC4 + debug_write((DBG_DDR_IDX_DRV_BASE+50+(i<<2)), pMtimerPara->rxCsuOn[i].timerPoint); // 0xC8 + debug_write((DBG_DDR_IDX_DRV_BASE+51+(i<<2)), pMtimerPara->rxCsuOff[i].timerPoint); // 0xCC } } @@ -321,10 +321,10 @@ int32_t jesd_timer_get_rf_point(int32_t nTmrId, phy_timer_config_ind_t *my_jesdt get_jesd_timer_point_para(nTmrId, pMtimerPara->rxRfOff[i].timerPoint, &pMtimerPara->rxRfOff[i].pointL, &pMtimerPara->rxRfOff[i].pointM, &pMtimerPara->rxRfOff[i].pointH); - debug_write((DBG_DDR_IDX_DRV_BASE+100+(i<<2)), pMtimerPara->txRfOn[i].timerPoint); // 0x190 - debug_write((DBG_DDR_IDX_DRV_BASE+101+(i<<2)), pMtimerPara->txRfOff[i].timerPoint);// 0x194 - debug_write((DBG_DDR_IDX_DRV_BASE+102+(i<<2)), pMtimerPara->rxRfOn[i].timerPoint); // 0x198 - debug_write((DBG_DDR_IDX_DRV_BASE+103+(i<<2)), pMtimerPara->rxRfOff[i].timerPoint);// 0x19c + debug_write((DBG_DDR_IDX_DRV_BASE+56+(i<<2)), pMtimerPara->txRfOn[i].timerPoint); // 0xE0 + debug_write((DBG_DDR_IDX_DRV_BASE+57+(i<<2)), pMtimerPara->txRfOff[i].timerPoint);// 0xE4 + debug_write((DBG_DDR_IDX_DRV_BASE+58+(i<<2)), pMtimerPara->rxRfOn[i].timerPoint); // 0xE8 + debug_write((DBG_DDR_IDX_DRV_BASE+59+(i<<2)), pMtimerPara->rxRfOff[i].timerPoint);// 0xEC } return 0; @@ -395,9 +395,6 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr) } __ucps2_synch(0); - //jesd_timer_get_csu_point(nTmrId, my_jesdtmr); - //jesd_timer_get_rf_point(nTmrId, my_jesdtmr); - while (JESD_TRANS_INIT != (do_read_volatile(SERDES_INIT_FLAG_ADDR))) // wait jesd serdes clk init finished { ucp_nop(1); @@ -409,14 +406,6 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr) debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag); // 0xBC #endif -#if 0 - set_jesd_tmr_period(nTmrId); // set OVF value, every slot int and 10ms int, cevent0/2 for ape0, report link status - if (MTIMER_JESD_RX0_ID == nTmrId) - { - set_jesd_tmr_period(MTIMER_JESD_TX0_ID); - } -#endif - pMtimerPara->tempL_max = pMtimerPara->tmrMsPeriod * pMtimerPara->slotPeriod / 1000 - 1; pMtimerPara->tempM_max = pMtimerPara->tddSlotNum-1; pMtimerPara->tempH_max = SFN_PERIOD / pMtimerPara->slotPeriod / pMtimerPara->tddSlotNum - 1; @@ -459,8 +448,6 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr) if (FDD_MODE == gJesdTFMode) { jesd_timer_get_csu_point(nTmrId, my_jesdtmr); - //set_jesd_csuon_point(MTIMER_JESD_RX0_ID, 0); - //set_jesd_csuon_point(MTIMER_JESD_TX0_ID, 0); } else { @@ -1372,6 +1359,11 @@ void jesd_tdd_callback(uint8_t nTmrId) { nListId = 1; } + if ((1 == gJesdListInitFinished) && (FDD_MODE == gJesdTFMode)) + { + jesd_csu_rx_list_desc0_flush(0, nListId); + } + jesd_csu_tx_start(nListId); if ((FDD_MODE == gJesdTFMode) || (JESD_IO_CTRL == gJesdIOMode)) { diff --git a/public/ecs_rfm_spu1/driver/src/rfm1_drv.s.c b/public/ecs_rfm_spu1/driver/src/rfm1_drv.s.c index 8ee2c7f..5e8c558 100644 --- a/public/ecs_rfm_spu1/driver/src/rfm1_drv.s.c +++ b/public/ecs_rfm_spu1/driver/src/rfm1_drv.s.c @@ -189,5 +189,12 @@ int32_t fronthaul_drv_cfg(stFrontHaulDrvPara* pFhDrvPara) return 0; } +void spu_ddr_monitor_start(uint32_t monitorCnt) +{ + do_write(DDR_MONITOR_ENABLE, 1); + do_write(DDR_MONITOR_CNT, monitorCnt); +} + + diff --git a/public/ecs_rfm_spu1/top/src/main.s.c b/public/ecs_rfm_spu1/top/src/main.s.c index 258f48e..a248f61 100644 --- a/public/ecs_rfm_spu1/top/src/main.s.c +++ b/public/ecs_rfm_spu1/top/src/main.s.c @@ -129,8 +129,8 @@ int32_t main(int32_t argc, char* argv[]) check_10ms_offset(); } #ifdef TEST_ENABLE - do_write(CSU_TX_ADVANCE_SAMPLE, 10000); // 10us - do_write(CSU_RX_TD_SAMPLE, 10000); + //do_write(CSU_TX_ADVANCE_SAMPLE, 10000); // 10us + //do_write(CSU_RX_TD_SAMPLE, 10000); check_test_outcome(0); #endif diff --git a/public/ecs_rfm_spu1/top/src/phy_init.s.c b/public/ecs_rfm_spu1/top/src/phy_init.s.c index 0a3a57a..2e3cf68 100644 --- a/public/ecs_rfm_spu1/top/src/phy_init.s.c +++ b/public/ecs_rfm_spu1/top/src/phy_init.s.c @@ -19,6 +19,7 @@ #include "phy_para.h" #include "rfm1_drv.h" #include "jesd_orx_timer.h" +#include "ecs_rfm_dm_mgt.h" #define CELL_SETUP_TYPE_SIMULATION (0x5a6b7c8d) #define ORX_MSG_TYPE_SIMULATION (0xaabb7788) @@ -280,6 +281,8 @@ void phy_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size) { uint32_t msg_buf = do_read(u32msg_addr); uint32_t msg_type = do_read(msg_buf); +// EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt(); +// JesdOrxPara_t* orx_para_ptr = pEcsDmLocalMgt->jesd_orx_para_ptr; //memcpy_ucp(0x60000000, msg_buf, 32); // temp code if (CELL_SETUP_TYPE_SIMULATION == msg_type) @@ -311,8 +314,11 @@ void phy_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size) } else if (ORX_MSG_TYPE_SIMULATION == msg_type) { - phy_sniffer_start(); - debug_write(DBG_DDR_COMMON_IDX(get_core_id(),2), ORX_MSG_TYPE_SIMULATION); +// if (1 > orx_para_ptr->orx_calldrv_cnt) +// { + phy_sniffer_start(); + debug_write(DBG_DDR_COMMON_IDX(get_core_id(),2), ORX_MSG_TYPE_SIMULATION); +// } } return; diff --git a/public/test/testcases/case40/fronthaul/src/jesd_test_case40.s.c b/public/test/testcases/case40/fronthaul/src/jesd_test_case40.s.c index df35fa2..a73c34b 100644 --- a/public/test/testcases/case40/fronthaul/src/jesd_test_case40.s.c +++ b/public/test/testcases/case40/fronthaul/src/jesd_test_case40.s.c @@ -73,7 +73,7 @@ int32_t fh_csu_test_init(void) void fh_test_case() { - jesd_csu_start_nr_7ds2u(); + //jesd_csu_start_nr_7ds2u(); } void fh_data_check(uint32_t times) diff --git a/public/test/testcases/case41/fronthaul/src/jesd_test_case41.s.c b/public/test/testcases/case41/fronthaul/src/jesd_test_case41.s.c index 40fb797..94f49b2 100644 --- a/public/test/testcases/case41/fronthaul/src/jesd_test_case41.s.c +++ b/public/test/testcases/case41/fronthaul/src/jesd_test_case41.s.c @@ -58,8 +58,9 @@ int32_t fh_drv_init(void) int32_t fh_csu_test_init(void) { - jesd_csu_init_nr_fdd(); + //jesd_csu_init_nr_fdd(); //jesd_csu_init_nr_fdd_slot0(); + jesd_csu_init_nr_fdd_rx_slot2(); //jesd_pin_ctrl(MTIMER_JESD_RX0_ID); //jesd_pin_ctrl(MTIMER_JESD_TX0_ID); diff --git a/public/test/testcases/case43/fronthaul/src/jesd_test_case43.s.c b/public/test/testcases/case43/fronthaul/src/jesd_test_case43.s.c index 4b3916b..93421eb 100644 --- a/public/test/testcases/case43/fronthaul/src/jesd_test_case43.s.c +++ b/public/test/testcases/case43/fronthaul/src/jesd_test_case43.s.c @@ -181,7 +181,7 @@ int32_t fh_csu_test_init(void) void fh_test_case() { - jesd_csu_start_nr_7ds2u(); + //jesd_csu_start_nr_7ds2u(); } void fh_data_check(uint32_t times) diff --git a/public/test/testcases/case44/fronthaul/src/jesd_test_case44.s.c b/public/test/testcases/case44/fronthaul/src/jesd_test_case44.s.c index 59202f8..8c05617 100644 --- a/public/test/testcases/case44/fronthaul/src/jesd_test_case44.s.c +++ b/public/test/testcases/case44/fronthaul/src/jesd_test_case44.s.c @@ -34,7 +34,7 @@ int32_t fh_data_init(void) { gJesdTestMode = JESD_TEST_MODE; gJesdIOMode = JESD_CSU_CTRL; - //gJesdTFMode = FDD_MODE; + gJesdTFMode = TDD_MODE; debug_write((DBG_DDR_IDX_DRV_BASE+192), gJesdTestMode); // 0x300 debug_write((DBG_DDR_IDX_DRV_BASE+193), gJesdIOMode); // 0x304 debug_write((DBG_DDR_IDX_DRV_BASE+194), gJesdTFMode); // 0x308 @@ -76,7 +76,7 @@ int32_t fh_csu_test_init(void) void fh_test_case() { - jesd_csu_start_nr_7ds2u(); + //jesd_csu_start_nr_7ds2u(); } void fh_data_check(uint32_t times) diff --git a/public/test/testcases/case45/fronthaul/src/jesd_test_case45.s.c b/public/test/testcases/case45/fronthaul/src/jesd_test_case45.s.c index cd738fb..f7bdfb0 100644 --- a/public/test/testcases/case45/fronthaul/src/jesd_test_case45.s.c +++ b/public/test/testcases/case45/fronthaul/src/jesd_test_case45.s.c @@ -73,7 +73,7 @@ int32_t fh_csu_test_init(void) void fh_test_case() { - jesd_csu_start_nr_7ds2u(); + //jesd_csu_start_nr_7ds2u(); } void fh_data_check(uint32_t times) diff --git a/public/test/testcases/case48/fronthaul/src/jesd_test_case48.s.c b/public/test/testcases/case48/fronthaul/src/jesd_test_case48.s.c index 1aa6f1a..768cc9d 100644 --- a/public/test/testcases/case48/fronthaul/src/jesd_test_case48.s.c +++ b/public/test/testcases/case48/fronthaul/src/jesd_test_case48.s.c @@ -67,7 +67,7 @@ int32_t fh_csu_test_init(void) void fh_test_case() { - jesd_csu_start_nr_7ds2u(); + //jesd_csu_start_nr_7ds2u(); } void fh_data_check(uint32_t times) diff --git a/public/test/testcases/case49/fronthaul/src/jesd_test_case49.s.c b/public/test/testcases/case49/fronthaul/src/jesd_test_case49.s.c index bc344ad..5b6c907 100644 --- a/public/test/testcases/case49/fronthaul/src/jesd_test_case49.s.c +++ b/public/test/testcases/case49/fronthaul/src/jesd_test_case49.s.c @@ -67,7 +67,7 @@ int32_t fh_csu_test_init(void) void fh_test_case() { - jesd_csu_start_nr_7ds2u(); + //jesd_csu_start_nr_7ds2u(); } void fh_data_check(uint32_t times)