Merge branch 'dev_ck_v2.1_bug#1967' into 'dev_ck_v2.1'

UCP4008-SL bug#1967

See merge request ucp/driver/ucp4008_platform_spu!118
This commit is contained in:
Weihua Li 2024-06-13 01:43:59 +00:00
commit 8e4bbcf0bd
3 changed files with 94 additions and 14 deletions

View File

@ -15,6 +15,8 @@ typedef struct JesdDelay
int32_t jesd_10ms2pp1s_txoffset; int32_t jesd_10ms2pp1s_txoffset;
int32_t jesd_10ms2pp1s_rxoffset; int32_t jesd_10ms2pp1s_rxoffset;
int32_t jesd_tdd2pp1s_offset; int32_t jesd_tdd2pp1s_offset;
int32_t jesd_sfn10ms2pp1s_offset;
}JesdDelay_t; }JesdDelay_t;
typedef struct JesdOrxPara typedef struct JesdOrxPara

View File

@ -117,6 +117,7 @@ void jesd_delay_init()
jesd_delay_ptr->jesd_10ms2pp1s_txoffset = jesd_delay_ptr->tx_offset; // advance ns jesd_delay_ptr->jesd_10ms2pp1s_txoffset = jesd_delay_ptr->tx_offset; // advance ns
jesd_delay_ptr->jesd_10ms2pp1s_rxoffset = jesd_delay_ptr->rx_offset; // gpsOffset - pJesdDelay->rxOffset; // delay ns jesd_delay_ptr->jesd_10ms2pp1s_rxoffset = jesd_delay_ptr->rx_offset; // gpsOffset - pJesdDelay->rxOffset; // delay ns
jesd_delay_ptr->jesd_tdd2pp1s_offset = jesd_delay_ptr->tdd_offset; // advance ns as positive number jesd_delay_ptr->jesd_tdd2pp1s_offset = jesd_delay_ptr->tdd_offset; // advance ns as positive number
jesd_delay_ptr->jesd_sfn10ms2pp1s_offset = 30000;
} }
int32_t jesd_mtimer_init(int32_t nTmrId, int32_t nScsId, int32_t nTddSlotNum) int32_t jesd_mtimer_init(int32_t nTmrId, int32_t nScsId, int32_t nTddSlotNum)
@ -529,7 +530,6 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr)
} }
reCfgFlag = 1; reCfgFlag = 1;
pMtimerSfn->cellSetup = 1;
debug_write((DBG_DDR_IDX_DRV_BASE+912), pMtimerSfn->txSfnNum); // 0xE40 debug_write((DBG_DDR_IDX_DRV_BASE+912), pMtimerSfn->txSfnNum); // 0xE40
debug_write((DBG_DDR_IDX_DRV_BASE+913), GET_STC_CNT()); // 0xE44 debug_write((DBG_DDR_IDX_DRV_BASE+913), GET_STC_CNT()); // 0xE44
@ -552,7 +552,7 @@ int32_t jesd_timer_clear_cell(int32_t nTmrId, uint8_t scsId)
jesd_csu_clear_list(); jesd_csu_clear_list();
} }
clear_jesd_tx_slot_offset(nTmrId); clear_jesd_tx_slot_offset(nTmrId);
clear_jesd_rx_slot_offset(nTmrId); //clear_jesd_rx_slot_offset(nTmrId);
pMtimerSfn->cellSetup = 0; pMtimerSfn->cellSetup = 0;
@ -629,6 +629,7 @@ void jesd_timer_rcfg_act(int32_t nTmrId)
reCfgFlag = 0; // 5; reCfgFlag = 0; // 5;
disable_mtimer_cevent_int(nTmrId, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // disable 10ms int disable_mtimer_cevent_int(nTmrId, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // disable 10ms int
pMtimerSfn->cellSetup = 1;
debug_write((DBG_DDR_IDX_DRV_BASE+916), pMtimerSfn->txSfnNum); // 0xE50 debug_write((DBG_DDR_IDX_DRV_BASE+916), pMtimerSfn->txSfnNum); // 0xE50
debug_write((DBG_DDR_IDX_DRV_BASE+917), GET_STC_CNT()); // 0xE54 debug_write((DBG_DDR_IDX_DRV_BASE+917), GET_STC_CNT()); // 0xE54
} }
@ -733,7 +734,7 @@ void set_jesd_1pps_scratch(int32_t nTmrId)
void set_jesd_sfn_offset(int32_t nTmrId) void set_jesd_sfn_offset(int32_t nTmrId)
{ {
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt(); EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
uint32_t tmr0Point = SFN_PERIOD*1000 - pEcsDmLocalMgt->jesd_delay_ptr->jesd_10ms2pp1s_txoffset; // ns uint32_t tmr0Point = SFN_PERIOD*1000 - pEcsDmLocalMgt->jesd_delay_ptr->jesd_sfn10ms2pp1s_offset; // pEcsDmLocalMgt->jesd_delay_ptr->jesd_10ms2pp1s_txoffset; // ns
set_mtimer_tmrpoint_ns(nTmrId, MTMR_10ms_OFFSET, tmr0Point, MTIMER_MASK_62BIT); set_mtimer_tmrpoint_ns(nTmrId, MTMR_10ms_OFFSET, tmr0Point, MTIMER_MASK_62BIT);
enable_mtimer_tmrpoint_int(nTmrId, MTMR_10ms_OFFSET, MTMR_INT_10ms); enable_mtimer_tmrpoint_int(nTmrId, MTMR_10ms_OFFSET, MTMR_INT_10ms);
@ -838,8 +839,8 @@ int32_t set_jesd_ape_slot_offset(int32_t nTmrId, uint32_t apeCoreId)
} }
reCfgFlag = 4; reCfgFlag = 4;
debug_write((DBG_DDR_IDX_DRV_BASE+914), pMtimerSfn->txSfnNum); // 0xE48 debug_write((DBG_DDR_IDX_DRV_BASE+922), pMtimerSfn->txSfnNum); // 0xE68
debug_write((DBG_DDR_IDX_DRV_BASE+915), GET_STC_CNT()); // 0xE4c debug_write((DBG_DDR_IDX_DRV_BASE+923), GET_STC_CNT()); // 0xE6c
return 0; return 0;
} }
@ -1349,6 +1350,10 @@ uint32_t start = GET_STC_CNT();
pMtimerCal->sfnCalFinished = 1; pMtimerCal->sfnCalFinished = 1;
pMtimerInt->tddOffsetIntCnt = 0; pMtimerInt->tddOffsetIntCnt = 0;
gRxOnCnt = 0;
gRxOffCnt = 0;
gTxOnCnt = 0;
gTxOffCnt = 0;
debug_write((DBG_DDR_IDX_DRV_BASE+910), cEventFlag); // pMtimerInt->txSlotIntCnt); // 0xe38 debug_write((DBG_DDR_IDX_DRV_BASE+910), cEventFlag); // pMtimerInt->txSlotIntCnt); // 0xe38
debug_write((DBG_DDR_IDX_DRV_BASE+911), get_mtimer_rt_scr_value(MTIMER_CPRI_ID)); // pMtimerInt->tddOffsetIntCnt); // 0xe3C debug_write((DBG_DDR_IDX_DRV_BASE+911), get_mtimer_rt_scr_value(MTIMER_CPRI_ID)); // pMtimerInt->tddOffsetIntCnt); // 0xe3C
} }
@ -1394,6 +1399,10 @@ void isr_jesd_10ms_rx1(void)
jesd_10ms_callback(tmrId); jesd_10ms_callback(tmrId);
} }
uint32_t gRxCsuOnStc = 0;
uint32_t gRxCsuOffStc = 0;
uint32_t gRxCsuOnTime = 0;
uint32_t gRxCsuOnTimeErr = 0;
void jesd_tdd_callback(uint8_t nTmrId) void jesd_tdd_callback(uint8_t nTmrId)
{ {
uint32_t tmrIntcFlag = 0; uint32_t tmrIntcFlag = 0;
@ -1408,6 +1417,7 @@ void jesd_tdd_callback(uint8_t nTmrId)
uint32_t rfCtlVal = (1<<MTMR_JESD_TXOFF)|(1<<MTMR_JESD_TXON)|(1<<MTMR_JESD_RXON)|(1<<MTMR_CSU_INSERT); uint32_t rfCtlVal = (1<<MTMR_JESD_TXOFF)|(1<<MTMR_JESD_TXON)|(1<<MTMR_JESD_RXON)|(1<<MTMR_CSU_INSERT);
uint32_t csuCtlVal = (1<<MTMR_CEVENT_RXEN2CSU0) | (1<<MTMR_CEVENT_RXEN2CSU1) | (1<<MTMR_CEVENT_TXEN2CSU0) | (1<<MTMR_CEVENT_TXEN2CSU1); uint32_t csuCtlVal = (1<<MTMR_CEVENT_RXEN2CSU0) | (1<<MTMR_CEVENT_RXEN2CSU1) | (1<<MTMR_CEVENT_TXEN2CSU0) | (1<<MTMR_CEVENT_TXEN2CSU1);
uint32_t cellFlag = gMtimerSfnNum[SCS_1st_MTIMER_ID].cellSetup | gMtimerSfnNum[SCS_2nd_MTIMER_ID].cellSetup;
tmrIntcFlag = do_read_volatile(tmrBaseAddr+MTMR_INTC_REG); tmrIntcFlag = do_read_volatile(tmrBaseAddr+MTMR_INTC_REG);
__ucps2_synch(0); __ucps2_synch(0);
if ((tmrIntcFlag & (1 << MTMR_INT_TDD_OFFSET))) /* tmr int */ if ((tmrIntcFlag & (1 << MTMR_INT_TDD_OFFSET))) /* tmr int */
@ -1424,6 +1434,11 @@ void jesd_tdd_callback(uint8_t nTmrId)
{ {
do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (tEventFlag & tddVal)); do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (tEventFlag & tddVal));
do_write(tFlagAddr, (tEventFlag & tddVal)); // clear int flag do_write(tFlagAddr, (tEventFlag & tddVal)); // clear int flag
if (0 == cellFlag)
{
do_write((tmrBaseAddr+MTMR_INTC_REG), (1 << MTMR_INT_TDD_OFFSET)); // clear int
return;
}
pMtimerInt->tddOffsetIntCnt++; pMtimerInt->tddOffsetIntCnt++;
// start_csu_timing // start_csu_timing
#ifdef PALLADIUM_TEST #ifdef PALLADIUM_TEST
@ -1457,6 +1472,11 @@ void jesd_tdd_callback(uint8_t nTmrId)
{ {
do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_JESD_RXON)); do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_JESD_RXON));
do_write(tFlagAddr, (1<<MTMR_JESD_RXON)); // clear int flag do_write(tFlagAddr, (1<<MTMR_JESD_RXON)); // clear int flag
if (0 == cellFlag)
{
do_write((tmrBaseAddr+MTMR_INTC_REG), (1 << MTMR_INT_TDD_OFFSET)); // clear int
return;
}
gRxOnCnt++; gRxOnCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+78), gRxOnCnt); // 0x138 debug_write((DBG_DDR_IDX_DRV_BASE+78), gRxOnCnt); // 0x138
@ -1476,6 +1496,11 @@ void jesd_tdd_callback(uint8_t nTmrId)
{ {
do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_CSU_INSERT)); do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_CSU_INSERT));
do_write(tFlagAddr, (1<<MTMR_CSU_INSERT)); // clear int flag do_write(tFlagAddr, (1<<MTMR_CSU_INSERT)); // clear int flag
if (0 == cellFlag)
{
do_write((tmrBaseAddr+MTMR_INTC_REG), (1 << MTMR_INT_TDD_OFFSET)); // clear int
return;
}
gRxOffCnt++; gRxOffCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+79), gRxOffCnt); // 0x13C debug_write((DBG_DDR_IDX_DRV_BASE+79), gRxOffCnt); // 0x13C
if (6 > gPP1sFlag) if (6 > gPP1sFlag)
@ -1493,6 +1518,11 @@ void jesd_tdd_callback(uint8_t nTmrId)
{ {
do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_JESD_TXON)); do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_JESD_TXON));
do_write(tFlagAddr, (1<<MTMR_JESD_TXON)); // clear int flag do_write(tFlagAddr, (1<<MTMR_JESD_TXON)); // clear int flag
if (0 == cellFlag)
{
do_write((tmrBaseAddr+MTMR_INTC_REG), (1 << MTMR_INT_TDD_OFFSET)); // clear int
return;
}
gTxOnCnt++; gTxOnCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+76), gTxOnCnt); // 0x130 debug_write((DBG_DDR_IDX_DRV_BASE+76), gTxOnCnt); // 0x130
if (6 > gPP1sFlag) if (6 > gPP1sFlag)
@ -1555,6 +1585,11 @@ void jesd_tdd_callback(uint8_t nTmrId)
{ {
do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_JESD_TXOFF)); do_write((tmrBaseAddr+MTMR_TEVENT0_REG), (1<<MTMR_JESD_TXOFF));
do_write(tFlagAddr, (1<<MTMR_JESD_TXOFF)); // clear int flag do_write(tFlagAddr, (1<<MTMR_JESD_TXOFF)); // clear int flag
if (0 == cellFlag)
{
do_write((tmrBaseAddr+MTMR_INTC_REG), (1 << MTMR_INT_TDD_OFFSET)); // clear int
return;
}
gTxOffCnt++; gTxOffCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+77), gTxOffCnt); // 0x134 debug_write((DBG_DDR_IDX_DRV_BASE+77), gTxOffCnt); // 0x134
set_jesd_all_rf_state(0, GPIO_OFF); set_jesd_all_rf_state(0, GPIO_OFF);
@ -1570,6 +1605,22 @@ void jesd_tdd_callback(uint8_t nTmrId)
gRxCsuOnCnt++; gRxCsuOnCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+392), gRxCsuOnCnt); // 0x620 debug_write((DBG_DDR_IDX_DRV_BASE+392), gRxCsuOnCnt); // 0x620
debug_write((DBG_DDR_IDX_DRV_BASE+393), GET_STC_CNT()); // 0x624 debug_write((DBG_DDR_IDX_DRV_BASE+393), GET_STC_CNT()); // 0x624
gRxCsuOnStc = GET_STC_CNT();
if (0 == (pMtimerInt->tddOffsetIntCnt & 0x1))
{
debug_write((DBG_DDR_IDX_DRV_BASE+400), do_read_volatile(0x05f60070)); // 0x640
debug_write((DBG_DDR_IDX_DRV_BASE+401), do_read_volatile(0x05f60060)); // 0x644
debug_write((DBG_DDR_IDX_DRV_BASE+402), do_read_volatile(0x05f600e0)); // 0x658
debug_write((DBG_DDR_IDX_DRV_BASE+403), pMtimerInt->tddOffsetIntCnt); // 0x65c
}
else
{
debug_write((DBG_DDR_IDX_DRV_BASE+408), do_read_volatile(0x05f60070)); // 0x660
debug_write((DBG_DDR_IDX_DRV_BASE+409), do_read_volatile(0x05f60060)); // 0x664
debug_write((DBG_DDR_IDX_DRV_BASE+410), do_read_volatile(0x05f600e0)); // 0x668
debug_write((DBG_DDR_IDX_DRV_BASE+411), pMtimerInt->tddOffsetIntCnt); // 0x66c
}
} }
if (cEventFlag & (1<<MTMR_CEVENT_RXEN2CSU1)) if (cEventFlag & (1<<MTMR_CEVENT_RXEN2CSU1))
{ {
@ -1579,6 +1630,30 @@ void jesd_tdd_callback(uint8_t nTmrId)
gRxCsuOffCnt++; gRxCsuOffCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+394), gRxCsuOffCnt); // 0x628 debug_write((DBG_DDR_IDX_DRV_BASE+394), gRxCsuOffCnt); // 0x628
debug_write((DBG_DDR_IDX_DRV_BASE+395), GET_STC_CNT()); // 0x62C debug_write((DBG_DDR_IDX_DRV_BASE+395), GET_STC_CNT()); // 0x62C
gRxCsuOffStc = GET_STC_CNT();
gRxCsuOnTime = gRxCsuOffStc - gRxCsuOnStc;
debug_write((DBG_DDR_IDX_DRV_BASE+396), gRxCsuOnTime); // 0x630
if ((640000 > gRxCsuOnTime) || (1150000 < gRxCsuOnTime))
{
gRxCsuOnTimeErr++;
debug_write((DBG_DDR_IDX_DRV_BASE+397), gRxCsuOnTimeErr); // 0x634
debug_write((DBG_DDR_IDX_DRV_BASE+398), gRxCsuOnTime); // 0x638
}
if (0 == (pMtimerInt->tddOffsetIntCnt & 0x1))
{
debug_write((DBG_DDR_IDX_DRV_BASE+404), do_read_volatile(0x05f60070)); // 0x650
debug_write((DBG_DDR_IDX_DRV_BASE+405), do_read_volatile(0x05f60060)); // 0x654
debug_write((DBG_DDR_IDX_DRV_BASE+406), do_read_volatile(0x05f600e0)); // 0x658
debug_write((DBG_DDR_IDX_DRV_BASE+407), pMtimerInt->tddOffsetIntCnt); // 0x65c
}
else
{
debug_write((DBG_DDR_IDX_DRV_BASE+412), do_read_volatile(0x05f60070)); // 0x670
debug_write((DBG_DDR_IDX_DRV_BASE+413), do_read_volatile(0x05f60060)); // 0x674
debug_write((DBG_DDR_IDX_DRV_BASE+414), do_read_volatile(0x05f600e0)); // 0x678
debug_write((DBG_DDR_IDX_DRV_BASE+415), pMtimerInt->tddOffsetIntCnt); // 0x67c
}
} }
cEventFlag = do_read_volatile(cFlagAddr); cEventFlag = do_read_volatile(cFlagAddr);
tEventFlag = do_read_volatile(tFlagAddr); tEventFlag = do_read_volatile(tFlagAddr);

View File

@ -26,6 +26,7 @@ extern stMtimerIntStat gMtimerIntCnt[SCS_MAX_NUM];
extern stMtimerPhyPara gMtimerSfnNum[SCS_MAX_NUM]; extern stMtimerPhyPara gMtimerSfnNum[SCS_MAX_NUM];
extern stMtimerSfnCal gMtimerSfnCalPara[SCS_MAX_NUM]; extern stMtimerSfnCal gMtimerSfnCalPara[SCS_MAX_NUM];
extern stPhyScsPara* phyPara; extern stPhyScsPara* phyPara;
extern volatile uint32_t reCfgFlag;
void mtimer_1pps_resync(uint8_t nTmrId) void mtimer_1pps_resync(uint8_t nTmrId)
{ {
@ -71,7 +72,7 @@ void mtimer_1pps_resync(uint8_t nTmrId)
uint32_t addr = (uint32_t)&(phyPara[pMtimerPara->scsId].gpsOffset); uint32_t addr = (uint32_t)&(phyPara[pMtimerPara->scsId].gpsOffset);
uint16_t gpsOffset = do_read_volatile_short(addr); uint16_t gpsOffset = do_read_volatile_short(addr);
pSfnCal->sfnCalBeta = 0; pSfnCal->sfnCalBeta = 0;
pSfnCal->sfnCalAlpha = (float)(n10msOffset+gpsOffset) * 1228.8; // advance * 1.2288*(10^3) pSfnCal->sfnCalAlpha = (float)(n10msOffset+gpsOffset) * 1.2288; // advance * 1.2288*(10^3)
} }
void mtimer_1pps_sfn_cal(uint8_t nTmrId) void mtimer_1pps_sfn_cal(uint8_t nTmrId)
@ -99,13 +100,13 @@ void mtimer_1pps_sfn_cal(uint8_t nTmrId)
debug_write((DBG_DDR_IDX_DRV_BASE+965), pMtimerSfn->rxSfnNum); // 0xf14 debug_write((DBG_DDR_IDX_DRV_BASE+965), pMtimerSfn->rxSfnNum); // 0xf14
debug_write((DBG_DDR_IDX_DRV_BASE+966), pMtimerSfn->txSlotNum); // 0xf18 debug_write((DBG_DDR_IDX_DRV_BASE+966), pMtimerSfn->txSlotNum); // 0xf18
debug_write((DBG_DDR_IDX_DRV_BASE+967), pMtimerSfn->rxSlotNum); // 0xf1c debug_write((DBG_DDR_IDX_DRV_BASE+967), pMtimerSfn->rxSlotNum); // 0xf1c
debug_write((DBG_DDR_IDX_DRV_BASE+524+11), GET_STC_CNT()); // 0x830+11*4, 11:apeId debug_write((DBG_DDR_IDX_DRV_BASE+524+11), GET_STC_CNT()); // 0x830+11*4, 11:apeId
#endif #endif
pMtimerSfn->txSfnNum = sfnCalNum; pMtimerSfn->txSfnNum = sfnCalNum;
//gCpriTimerPara.txSfnNum = gCpriTimerPara.sfnCalCnt; // + 1; //gSfnCalCnt; //gCpriTimerPara.txSfnNum = gCpriTimerPara.sfnCalCnt; // + 1; //gSfnCalCnt;
pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum; //gSfnCalCnt-1; pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum; //sfnCalNum-1; //
pMtimerSfn->txSlotNum = pMtimerSfn->slotNumPP1s; // 0; pMtimerSfn->txSlotNum = pMtimerSfn->slotNumPP1s; // 0;
pMtimerSfn->rxSlotNum = pMtimerSfn->slotNumPP1s; // 0; //gCpriTimerPara.slotMaxNum - 1; pMtimerSfn->rxSlotNum = pMtimerSfn->slotNumPP1s; // + pMtimerPara->slotMaxNum - 1;
//pMtimerInt->txSlotIntCnt = 0; //pMtimerInt->txSlotIntCnt = 0;
//pMtimerInt->rxSlotIntCnt = 0; //pMtimerInt->rxSlotIntCnt = 0;
@ -122,7 +123,7 @@ void mtimer_1pps_sfn_cal(uint8_t nTmrId)
__ucps2_synch(f_SMW); __ucps2_synch(f_SMW);
pMtimerSfn->rxSfnNum = pSfnCal->sfnCalCnt-1; pMtimerSfn->rxSfnNum = pSfnCal->sfnCalCnt-1;
pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1; pMtimerSfn->rxSlotNum = pMtimerSfn->slotNumPP1s + pMtimerSfn->slotMaxNum - 1;
do_write(CTC_INT_TYPE_ADDR, (nTmrId+1)); do_write(CTC_INT_TYPE_ADDR, (nTmrId+1));
if (PROTOCOL_ECPRI == nBsType) if (PROTOCOL_ECPRI == nBsType)
@ -154,12 +155,13 @@ int32_t gPP1sLockCnt = 0;
int32_t mtimer_1pps_func(uint8_t nTmrId) int32_t mtimer_1pps_func(uint8_t nTmrId)
{ {
stMtimerSfnCal* pMtimerCal = &gMtimerSfnCalPara[nTmrId]; stMtimerSfnCal* pMtimerCal = &gMtimerSfnCalPara[nTmrId];
//stMtimerIntStat* pMtimerInt = &gMtimerIntCnt[nTmrId]; EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
JesdOrxPara_t* orx_para_ptr = pEcsDmLocalMgt->jesd_orx_para_ptr;
// gps unlock -> lock, adjust pp1s // gps unlock -> lock, adjust pp1s
pMtimerCal->pp1sLockFlag = do_read_volatile(ARM_LOCK_FLAG_ADDR); pMtimerCal->pp1sLockFlag = do_read_volatile(ARM_LOCK_FLAG_ADDR);
__ucps2_synch(f_SMR); __ucps2_synch(f_SMR);
if ((0 == pMtimerCal->pp1sLockFlagPre) && (1 == pMtimerCal->pp1sLockFlag)) // pp1s刚锁定 if (((0 == pMtimerCal->pp1sLockFlagPre) && (1 == pMtimerCal->pp1sLockFlag)) || (0 < orx_para_ptr->orx_calldrv_cnt)) // pp1s刚锁定
{ {
#ifdef PALLADIUM_TEST #ifdef PALLADIUM_TEST
debug_write((DBG_DDR_IDX_DRV_BASE+968), GET_STC_CNT()); // 0xf20 debug_write((DBG_DDR_IDX_DRV_BASE+968), GET_STC_CNT()); // 0xf20
@ -177,7 +179,8 @@ int32_t mtimer_1pps_func(uint8_t nTmrId)
pMtimerCal->sfnValidFlag = do_read_volatile(ARM_SFN_VALID_ADDR); pMtimerCal->sfnValidFlag = do_read_volatile(ARM_SFN_VALID_ADDR);
pMtimerCal->sfnFlipFlag = do_read_volatile(ARM_SFN_FLIP_ADDR); pMtimerCal->sfnFlipFlag = do_read_volatile(ARM_SFN_FLIP_ADDR);
__ucps2_synch(f_SMR); __ucps2_synch(f_SMR);
if (/*(0 < pMtimerInt->txSlotIntCnt) && */(ARM_SFN_VALID_FLAG == pMtimerCal->sfnValidFlag) && (pMtimerCal->sfnFlipFlag != pMtimerCal->sfnFlipFlagPre)) //if ((0 < pMtimerInt->txSlotIntCnt) && (ARM_SFN_VALID_FLAG == pMtimerCal->sfnValidFlag) && (pMtimerCal->sfnFlipFlag != pMtimerCal->sfnFlipFlagPre))
if ((0 == reCfgFlag) && (ARM_SFN_VALID_FLAG == pMtimerCal->sfnValidFlag) && (pMtimerCal->sfnFlipFlag != pMtimerCal->sfnFlipFlagPre))
{ {
do_write(ARM_SFN_VALID_ADDR, ARM_SFN_NOTVALID_FLAG); do_write(ARM_SFN_VALID_ADDR, ARM_SFN_NOTVALID_FLAG);
__ucps2_synch(f_SMW); __ucps2_synch(f_SMW);