Merge branch 'dev_ck_v2.1_feature#1854#' into 'dev_ck_v2.1'
UCP4008-SL feature enhancement #1854 See merge request ucp/driver/ucp4008_platform_spu!103
This commit is contained in:
commit
57f144a163
@ -40,8 +40,18 @@ typedef struct _tagGpioInfo
|
|||||||
uint8_t vaFlag; // 0: low as valid; 1: high as valid
|
uint8_t vaFlag; // 0: low as valid; 1: high as valid
|
||||||
}stGpioInfo;
|
}stGpioInfo;
|
||||||
|
|
||||||
|
typedef struct _tagRfGpioInfo
|
||||||
|
{
|
||||||
|
uint32_t pinInfo; // 1 bit 1 pin
|
||||||
|
uint32_t validInfo; // 0: low as valid; 1: high as valid
|
||||||
|
}stRfGpioInfo;
|
||||||
|
|
||||||
typedef struct _tagGpioJesd
|
typedef struct _tagGpioJesd
|
||||||
{
|
{
|
||||||
|
stRfGpioInfo txRfGpioInfo[JESD_RF_CH_NUM];
|
||||||
|
stRfGpioInfo rxRfGpioInfo[JESD_RF_CH_NUM];
|
||||||
|
stRfGpioInfo orxRfGpioInfo[JESD_RF_CH_NUM];
|
||||||
|
|
||||||
stGpioInfo txTransGpioInfo[JESD_RF_CH_NUM];
|
stGpioInfo txTransGpioInfo[JESD_RF_CH_NUM];
|
||||||
stGpioInfo txGpioInfo[JESD_RF_CH_NUM];
|
stGpioInfo txGpioInfo[JESD_RF_CH_NUM];
|
||||||
stGpioInfo txAntGpioInfo[JESD_RF_CH_NUM];
|
stGpioInfo txAntGpioInfo[JESD_RF_CH_NUM];
|
||||||
@ -63,6 +73,8 @@ int32_t hw_gpio_init();
|
|||||||
|
|
||||||
int32_t set_jesd_rf_state(uint8_t nTRCh, uint8_t nState);
|
int32_t set_jesd_rf_state(uint8_t nTRCh, uint8_t nState);
|
||||||
|
|
||||||
|
int32_t set_jesd_all_rf_state(uint8_t nTRCh, uint8_t nState); // tx, rx, orx
|
||||||
|
|
||||||
int32_t set_trigger_state(uint8_t nState);
|
int32_t set_trigger_state(uint8_t nState);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -144,9 +144,9 @@ void cpri_timer_reconfig(phy_timer_config_ind_t *my_cpritmr)
|
|||||||
|
|
||||||
pCpriDelay->cpriTddOffset = pCpriDelay->cpri10msOffset + EDMA_OFFSET;
|
pCpriDelay->cpriTddOffset = pCpriDelay->cpri10msOffset + EDMA_OFFSET;
|
||||||
|
|
||||||
|
do_write(CPRI_DELAY_ADDR, pCpriDelay->cpri10msRxOffset);
|
||||||
do_write(CPRI_ADVANCE_ADDR, pCpriDelay->cpri10msOffset);
|
do_write(CPRI_ADVANCE_ADDR, pCpriDelay->cpri10msOffset);
|
||||||
do_write(CPRI_TDD_ADVANCE_ADDR, pCpriDelay->cpriTddOffset);
|
do_write(CPRI_TDD_ADVANCE_ADDR, pCpriDelay->cpriTddOffset);
|
||||||
do_write(CPRI_DELAY_ADDR, pCpriDelay->cpri10msRxOffset);
|
|
||||||
|
|
||||||
uint32_t addr = (uint32_t)&(phyPara[my_cpritmr->scsId].gpsOffset);
|
uint32_t addr = (uint32_t)&(phyPara[my_cpritmr->scsId].gpsOffset);
|
||||||
uint16_t gpsOffset = do_read_volatile_short(addr);
|
uint16_t gpsOffset = do_read_volatile_short(addr);
|
||||||
@ -178,7 +178,7 @@ void cpri_timer_reconfig(phy_timer_config_ind_t *my_cpritmr)
|
|||||||
do_write(CPRI_RX_ADVANCE_PP1S_ADDR, pCpriDelay->cpri10ms2PP1sRxOffset);
|
do_write(CPRI_RX_ADVANCE_PP1S_ADDR, pCpriDelay->cpri10ms2PP1sRxOffset);
|
||||||
do_write(CPRI_TDD_ADVANCE_PP1S_ADDR, pCpriDelay->cpriTdd2PP1sOffset);
|
do_write(CPRI_TDD_ADVANCE_PP1S_ADDR, pCpriDelay->cpriTdd2PP1sOffset);
|
||||||
|
|
||||||
enable_mtimer_cevent_int(MTIMER_CPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
//enable_mtimer_cevent_int(MTIMER_CPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
||||||
#ifdef PALLADIUM_TEST
|
#ifdef PALLADIUM_TEST
|
||||||
flag++;
|
flag++;
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag);
|
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag);
|
||||||
@ -339,6 +339,7 @@ void cpri_timer_rcfg_act()
|
|||||||
}
|
}
|
||||||
|
|
||||||
reCfgFlag = 5;
|
reCfgFlag = 5;
|
||||||
|
disable_mtimer_cevent_int(MTIMER_CPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // disable 10ms int
|
||||||
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
|
||||||
}
|
}
|
||||||
@ -551,15 +552,15 @@ int32_t set_cpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
volatile uint32_t h1Pos = 0;
|
volatile uint32_t h1Pos = 0;
|
||||||
uint8_t apeId = 0;
|
uint8_t apeId = 0;
|
||||||
int32_t tmrId = 0;
|
int32_t tmrId = 0;
|
||||||
//#ifdef INTEGRATED_BS
|
|
||||||
//#else
|
|
||||||
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
|
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
|
||||||
stMtimerPara* pMtimerPara = pEcsDmLocalMgt->pMtimerPara[MTIMER_CPRI_ID];
|
stMtimerPara* pMtimerPara = pEcsDmLocalMgt->pMtimerPara[MTIMER_CPRI_ID];
|
||||||
stMtimerPhyPara* pMtimerSfn = &gMtimerSfnNum[MTIMER_CPRI_ID];
|
stMtimerPhyPara* pMtimerSfn = &gMtimerSfnNum[MTIMER_CPRI_ID];
|
||||||
pMtimerPara->runCoreId = apeCoreId;
|
pMtimerPara->runCoreId = apeCoreId;
|
||||||
txOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sTxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msOffset;
|
txOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sTxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msOffset;
|
||||||
rxOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sRxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msRxOffset;
|
rxOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sRxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msRxOffset;
|
||||||
//#endif
|
|
||||||
|
enable_mtimer_cevent_int(MTIMER_CPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
||||||
|
|
||||||
uint32_t tmr3Point = SFN_PERIOD*1000 - txOffset; // us
|
uint32_t tmr3Point = SFN_PERIOD*1000 - txOffset; // us
|
||||||
uint32_t tmr4Point = 0; // offset; // us
|
uint32_t tmr4Point = 0; // offset; // us
|
||||||
@ -574,7 +575,6 @@ int32_t set_cpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
|
|
||||||
// ape tmrpoints
|
// ape tmrpoints
|
||||||
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
||||||
__ucps2_synch(0);
|
|
||||||
while (32 > h1Pos)
|
while (32 > h1Pos)
|
||||||
{
|
{
|
||||||
apeId = 31 - h1Pos;
|
apeId = 31 - h1Pos;
|
||||||
@ -593,7 +593,6 @@ int32_t set_cpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
|
|
||||||
runCore &= (~(1 << apeId));
|
runCore &= (~(1 << apeId));
|
||||||
h1Pos = __builtin_clz(runCore);
|
h1Pos = __builtin_clz(runCore);
|
||||||
__ucps2_synch(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reCfgFlag = 4;
|
reCfgFlag = 4;
|
||||||
@ -612,7 +611,6 @@ int32_t clear_cpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
|
|
||||||
// ape tmrpoints
|
// ape tmrpoints
|
||||||
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
||||||
__ucps2_synch(0);
|
|
||||||
while (32 > h1Pos)
|
while (32 > h1Pos)
|
||||||
{
|
{
|
||||||
apeId = 31 - h1Pos;
|
apeId = 31 - h1Pos;
|
||||||
@ -629,7 +627,6 @@ int32_t clear_cpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
|
|
||||||
runCore &= (~(1 << apeId));
|
runCore &= (~(1 << apeId));
|
||||||
h1Pos = __builtin_clz(runCore);
|
h1Pos = __builtin_clz(runCore);
|
||||||
__ucps2_synch(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -91,7 +91,7 @@ void ecpri_timer_reconfig(phy_timer_config_ind_t *my_ecpritmr)
|
|||||||
|
|
||||||
//set_ecpri_tmr_period(); // set OVF value, every slot int and 10ms int, cevent0/2 for ape0, report link status
|
//set_ecpri_tmr_period(); // set OVF value, every slot int and 10ms int, cevent0/2 for ape0, report link status
|
||||||
//set_ecpri_tdd_offset(); // 5ms int, tevent2 for all ape cores, dma
|
//set_ecpri_tdd_offset(); // 5ms int, tevent2 for all ape cores, dma
|
||||||
enable_mtimer_cevent_int(MTIMER_ECPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
//enable_mtimer_cevent_int(MTIMER_ECPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
||||||
set_ecpri_tx_slot_offset();
|
set_ecpri_tx_slot_offset();
|
||||||
set_ecpri_rx_slot_offset();
|
set_ecpri_rx_slot_offset();
|
||||||
|
|
||||||
@ -140,8 +140,9 @@ void ecpri_timer_rcfg_act()
|
|||||||
|
|
||||||
if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell
|
if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell
|
||||||
{
|
{
|
||||||
|
pMtimerSfn->txSfnNum++;
|
||||||
|
pMtimerSfn->txSfnNum &= 0x3FF;
|
||||||
pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum;
|
pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum;
|
||||||
//pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1;
|
|
||||||
}
|
}
|
||||||
addr = (uint32_t)&(phyPara[nScsId].txSfnNum);
|
addr = (uint32_t)&(phyPara[nScsId].txSfnNum);
|
||||||
do_write(addr, pMtimerSfn->txSfnNum);
|
do_write(addr, pMtimerSfn->txSfnNum);
|
||||||
@ -180,6 +181,7 @@ void ecpri_timer_rcfg_act()
|
|||||||
}
|
}
|
||||||
|
|
||||||
reCfgFlag = 5;
|
reCfgFlag = 5;
|
||||||
|
disable_mtimer_cevent_int(MTIMER_ECPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // disable 10ms int
|
||||||
}
|
}
|
||||||
|
|
||||||
void ecpri_1pps_src_init(uint8_t srcId)
|
void ecpri_1pps_src_init(uint8_t srcId)
|
||||||
@ -305,9 +307,10 @@ int32_t set_ecpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
|
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
|
||||||
txOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sTxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msOffset;
|
txOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sTxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msOffset;
|
||||||
rxOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sRxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msRxOffset;
|
rxOffset = pEcsDmLocalMgt->pCpriDelay->cpri10ms2PP1sRxOffset; // pEcsDmLocalMgt->pCpriDelay->cpri10msRxOffset;
|
||||||
|
enable_mtimer_cevent_int(MTIMER_ECPRI_ID, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t tmr3Point = SFN_PERIOD - txOffset; // us
|
uint32_t tmr3Point = SFN_PERIOD*1000 - txOffset; // us
|
||||||
uint32_t tmr4Point = 0; // offset; // us
|
uint32_t tmr4Point = 0; // offset; // us
|
||||||
if (rxOffset < 0)
|
if (rxOffset < 0)
|
||||||
{
|
{
|
||||||
@ -315,12 +318,11 @@ int32_t set_ecpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmr4Point = SFN_PERIOD - rxOffset; // us
|
tmr4Point = SFN_PERIOD*1000 - rxOffset; // us
|
||||||
}
|
}
|
||||||
|
|
||||||
// ape tmrpoints
|
// ape tmrpoints
|
||||||
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
||||||
__ucps2_synch(0);
|
|
||||||
while (32 > h1Pos)
|
while (32 > h1Pos)
|
||||||
{
|
{
|
||||||
apeId = 31 - h1Pos;
|
apeId = 31 - h1Pos;
|
||||||
@ -330,16 +332,15 @@ int32_t set_ecpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
}
|
}
|
||||||
// tx slot int
|
// tx slot int
|
||||||
tmrId = MTMR_APE0_TXSLOT + (apeId<<1);
|
tmrId = MTMR_APE0_TXSLOT + (apeId<<1);
|
||||||
set_mtimer_tmrpoint(MTIMER_ECPRI_ID, tmrId, tmr3Point, MTIMER_MASK_32BIT);
|
set_mtimer_tmrpoint_ns(MTIMER_ECPRI_ID, tmrId, tmr3Point, MTIMER_MASK_32BIT);
|
||||||
enable_mtimer_tmrpoint_int(MTIMER_ECPRI_ID, tmrId, (MTMR_INT_APE0_SLOT+apeId));
|
enable_mtimer_tmrpoint_int(MTIMER_ECPRI_ID, tmrId, (MTMR_INT_APE0_SLOT+apeId));
|
||||||
// rx slot int
|
// rx slot int
|
||||||
tmrId = MTMR_APE0_RXSLOT + (apeId<<1);
|
tmrId = MTMR_APE0_RXSLOT + (apeId<<1);
|
||||||
set_mtimer_tmrpoint(MTIMER_ECPRI_ID, tmrId, tmr4Point, MTIMER_MASK_32BIT);
|
set_mtimer_tmrpoint_ns(MTIMER_ECPRI_ID, tmrId, tmr4Point, MTIMER_MASK_32BIT);
|
||||||
enable_mtimer_tmrpoint_int(MTIMER_ECPRI_ID, tmrId, (MTMR_INT_APE0_SLOT+apeId));
|
enable_mtimer_tmrpoint_int(MTIMER_ECPRI_ID, tmrId, (MTMR_INT_APE0_SLOT+apeId));
|
||||||
|
|
||||||
runCore &= (~(1 << apeId));
|
runCore &= (~(1 << apeId));
|
||||||
h1Pos = __builtin_clz(runCore);
|
h1Pos = __builtin_clz(runCore);
|
||||||
__ucps2_synch(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reCfgFlag = 4;
|
reCfgFlag = 4;
|
||||||
@ -356,7 +357,6 @@ int32_t clear_ecpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
|
|
||||||
// ape tmrpoints
|
// ape tmrpoints
|
||||||
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
h1Pos = __builtin_clz(runCore); // 从高bit开始,第一个1前面的0的个数
|
||||||
__ucps2_synch(0);
|
|
||||||
while (32 > h1Pos)
|
while (32 > h1Pos)
|
||||||
{
|
{
|
||||||
apeId = 31 - h1Pos;
|
apeId = 31 - h1Pos;
|
||||||
@ -373,7 +373,6 @@ int32_t clear_ecpri_ape_slot_offset(uint32_t apeCoreId)
|
|||||||
|
|
||||||
runCore &= (~(1 << apeId));
|
runCore &= (~(1 << apeId));
|
||||||
h1Pos = __builtin_clz(runCore);
|
h1Pos = __builtin_clz(runCore);
|
||||||
__ucps2_synch(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -386,8 +385,8 @@ int32_t set_ecpri_tx_symbol_offset(uint8_t symbolId)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t longCp = (uint32_t)4448*500000/(4448+4384); // ns
|
uint32_t longCp = (uint32_t)4448*500000/(4448+13*4384); // ns
|
||||||
uint32_t shortCp = (uint32_t)4384*500000/(4448+4384); // ns
|
uint32_t shortCp = (uint32_t)4384*500000/(4448+13*4384); // ns
|
||||||
|
|
||||||
uint32_t tmrPoint = SFN_PERIOD*1000 - CPRI_INT_DELAY;
|
uint32_t tmrPoint = SFN_PERIOD*1000 - CPRI_INT_DELAY;
|
||||||
if (1 >= symbolId)
|
if (1 >= symbolId)
|
||||||
|
@ -52,6 +52,26 @@ int32_t hw_gpio_init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stRfGpioInfo* pRfGpio = NULL;
|
||||||
|
uint32_t pinNum = 0;
|
||||||
|
uint32_t pinValid = 0;
|
||||||
|
for (i = 0; i < JESD_GPIOGROUP_NUM; i++) // tx, rx, orx, trans_tx, trans_rx, trans_orx
|
||||||
|
{
|
||||||
|
for (j = 0; j < JESD_RF_CH_NUM; j++)
|
||||||
|
{
|
||||||
|
pRfGpio = pGpioInfo->jesdGpioInfo.txRfGpioInfo + ((i/3)*JESD_RF_CH_NUM+j); //*sizeof(stRfGpioInfo);
|
||||||
|
pinNum = do_read_volatile(GPIO_JESD_RF_BIT + (i<<5) + (j<<2));
|
||||||
|
pRfGpio->pinInfo |= pinNum;
|
||||||
|
pinValid = do_read_volatile(GPIO_JESD_RF_VALID + (i<<5) + (j<<2));
|
||||||
|
pRfGpio->validInfo |= pinValid;
|
||||||
|
__ucps2_synch(0);
|
||||||
|
do_write((0x0A4F4000+((i*4+j)<<2)), (uint32_t)(&(pRfGpio->pinInfo)));
|
||||||
|
do_write((0x0A4F4100+((i*4+j)<<2)), (pRfGpio->pinInfo));
|
||||||
|
do_write((0x0A4F4200+((i*4+j)<<2)), (GPIO_JESD_RF_BIT + (i<<5) + (j<<2)));
|
||||||
|
do_write((0x0A4F4300+((i*4+j)<<2)), (pinNum));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
k = 0;
|
k = 0;
|
||||||
for (j = 0; j < 4; j++)
|
for (j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
@ -136,6 +156,41 @@ int32_t set_jesd_rf_state(uint8_t nTRCh, uint8_t nState)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t set_jesd_all_rf_state(uint8_t nTRCh, uint8_t nState) // tx, rx, orx
|
||||||
|
{
|
||||||
|
EcsRfmDmLocalMgt_t* pEcsDmLocalMgt = get_ecs_rfm_dm_local_mgt();
|
||||||
|
stGpioOnBoard* pGpioInfo = pEcsDmLocalMgt->pGpioInfo;
|
||||||
|
uint32_t regData = 0;
|
||||||
|
uint32_t tempData = 0;
|
||||||
|
uint32_t gpioVal = 0;
|
||||||
|
|
||||||
|
stRfGpioInfo* pRfGpio = pGpioInfo->jesdGpioInfo.txRfGpioInfo + nTRCh*JESD_RF_CH_NUM; //*sizeof(stRfGpioInfo);
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < JESD_RF_CH_NUM; i++) // 128pin, 4 group
|
||||||
|
{
|
||||||
|
regData = do_read_volatile(gGpioDataAddr[i]);
|
||||||
|
tempData = regData & (~pRfGpio[i].pinInfo);
|
||||||
|
|
||||||
|
if (GPIO_ON == nState)
|
||||||
|
{
|
||||||
|
gpioVal = pRfGpio[i].pinInfo & pRfGpio[i].validInfo;
|
||||||
|
}
|
||||||
|
else if (GPIO_OFF == nState)
|
||||||
|
{
|
||||||
|
gpioVal = pRfGpio[i].pinInfo ^ pRfGpio[i].validInfo;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
regData = tempData | gpioVal;
|
||||||
|
do_write(gGpioDataAddr[i], regData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t set_trigger_state(uint8_t nState)
|
int32_t set_trigger_state(uint8_t nState)
|
||||||
{
|
{
|
||||||
if ((GPIO_ON != nState) && (GPIO_OFF != nState))
|
if ((GPIO_ON != nState) && (GPIO_OFF != nState))
|
||||||
|
@ -42,7 +42,7 @@ int32_t jesd_orx_timer_init(void)
|
|||||||
jesd_orx_1pps_src_init(MTIMER_PP1S_SRC_TOD);
|
jesd_orx_1pps_src_init(MTIMER_PP1S_SRC_TOD);
|
||||||
//mtimer_clear_all_event(MTIMER_JESD_RX1_ID);
|
//mtimer_clear_all_event(MTIMER_JESD_RX1_ID);
|
||||||
set_jesd_orx_tmr_period();
|
set_jesd_orx_tmr_period();
|
||||||
set_jesd_orx_1pps_scratch();
|
//set_jesd_orx_1pps_scratch();
|
||||||
//set_jesd_orx_tmr_point(25000); // 25ms
|
//set_jesd_orx_tmr_point(25000); // 25ms
|
||||||
|
|
||||||
jesd_orx_pin_ctrl();
|
jesd_orx_pin_ctrl();
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern stPhyScsPara* phyPara;
|
extern stPhyScsPara* phyPara;
|
||||||
extern stSfnPara gCellSfnPara[2];
|
//extern stSfnPara gCellSfnPara[2];
|
||||||
extern uint32_t gScsId;
|
extern uint32_t gScsId;
|
||||||
|
|
||||||
uint32_t gJesdTestMode = 0;
|
uint32_t gJesdTestMode = 0;
|
||||||
@ -401,8 +401,9 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr)
|
|||||||
uint16_t gpsOffset = do_read_volatile_short(addr);
|
uint16_t gpsOffset = do_read_volatile_short(addr);
|
||||||
|
|
||||||
pJesdDelay->gps_offset = gpsOffset;
|
pJesdDelay->gps_offset = gpsOffset;
|
||||||
pJesdDelay->tx_offset = pMtimerInt->tmrPP1sCost * 2;
|
pJesdDelay->tx_offset = pMtimerInt->tmrPP1sCost * 5;
|
||||||
pJesdDelay->rx_offset = pMtimerInt->tmrPP1sCost * 2;
|
pJesdDelay->rx_offset = pMtimerInt->tmrPP1sCost * 5;
|
||||||
|
pJesdDelay->tdd_offset = pMtimerInt->tmrPP1sCost * 5 + EDMA_OFFSET;
|
||||||
|
|
||||||
do_write(CPRI_ADVANCE_ADDR, pJesdDelay->tx_offset);
|
do_write(CPRI_ADVANCE_ADDR, pJesdDelay->tx_offset);
|
||||||
do_write(CPRI_DELAY_ADDR, pJesdDelay->rx_offset);
|
do_write(CPRI_DELAY_ADDR, pJesdDelay->rx_offset);
|
||||||
@ -469,7 +470,7 @@ int32_t jesd_timer_reconfig(int32_t nTmrId, phy_timer_config_ind_t *my_jesdtmr)
|
|||||||
pMtimerTxPara->tempM_max = pMtimerPara->tddSlotNum-1;
|
pMtimerTxPara->tempM_max = pMtimerPara->tddSlotNum-1;
|
||||||
pMtimerTxPara->tempH_max = SFN_PERIOD / pMtimerPara->slotPeriod / pMtimerPara->tddSlotNum - 1;
|
pMtimerTxPara->tempH_max = SFN_PERIOD / pMtimerPara->slotPeriod / pMtimerPara->tddSlotNum - 1;
|
||||||
|
|
||||||
enable_mtimer_cevent_int(nTmrId, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
//enable_mtimer_cevent_int(nTmrId, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
||||||
#ifdef PALLADIUM_TEST
|
#ifdef PALLADIUM_TEST
|
||||||
flag++;
|
flag++;
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag); // 0xBC
|
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag); // 0xBC
|
||||||
@ -481,8 +482,8 @@ 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
|
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag); // 0xBC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
set_jesd_tx_slot_offset(nTmrId);
|
//set_jesd_tx_slot_offset(nTmrId);
|
||||||
set_jesd_rx_slot_offset(nTmrId);
|
//set_jesd_rx_slot_offset(nTmrId);
|
||||||
#ifdef PALLADIUM_TEST
|
#ifdef PALLADIUM_TEST
|
||||||
flag++;
|
flag++;
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag); // 0xBC
|
debug_write((DBG_DDR_IDX_DRV_BASE+3+(apeId<<2)), flag); // 0xBC
|
||||||
@ -584,10 +585,11 @@ void jesd_timer_rcfg_act(int32_t nTmrId)
|
|||||||
//pMtimerSfn->rxSfnNum = 0; // 1023;
|
//pMtimerSfn->rxSfnNum = 0; // 1023;
|
||||||
pMtimerSfn->rxSlotNum = pMtimerSfn->slotNumPP1s; // 0 // pMtimerSfn->slotMaxNum - 1;
|
pMtimerSfn->rxSlotNum = pMtimerSfn->slotNumPP1s; // 0 // pMtimerSfn->slotMaxNum - 1;
|
||||||
|
|
||||||
if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell
|
//if ((0 == pMtimerSfn->slotNumPP1s) && (runCore == cellCore)) // no frame header offset, and the first cell
|
||||||
|
if (0 == pMtimerSfn->slotNumPP1s) // no frame header offset, and the first cell
|
||||||
{
|
{
|
||||||
pMtimerSfn->txSfnNum++;
|
//pMtimerSfn->txSfnNum++;
|
||||||
pMtimerSfn->txSfnNum &= 0x3FF;
|
//pMtimerSfn->txSfnNum &= 0x3FF;
|
||||||
pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum;
|
pMtimerSfn->rxSfnNum = pMtimerSfn->txSfnNum;
|
||||||
//pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1;
|
//pMtimerSfn->rxSlotNum = pMtimerSfn->slotMaxNum - 1;
|
||||||
}
|
}
|
||||||
@ -625,7 +627,8 @@ void jesd_timer_rcfg_act(int32_t nTmrId)
|
|||||||
__ucps2_synch(0);
|
__ucps2_synch(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
reCfgFlag = 5;
|
reCfgFlag = 0; // 5;
|
||||||
|
disable_mtimer_cevent_int(nTmrId, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // disable 10ms int
|
||||||
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
|
||||||
}
|
}
|
||||||
@ -799,6 +802,8 @@ int32_t set_jesd_ape_slot_offset(int32_t nTmrId, uint32_t apeCoreId)
|
|||||||
txOffset = pJesdDelay->jesd_10ms2pp1s_txoffset;
|
txOffset = pJesdDelay->jesd_10ms2pp1s_txoffset;
|
||||||
rxOffset = pJesdDelay->jesd_10ms2pp1s_txoffset;
|
rxOffset = pJesdDelay->jesd_10ms2pp1s_txoffset;
|
||||||
|
|
||||||
|
enable_mtimer_cevent_int(nTmrId, MTMR_CEVENT_CNT14H, MTMR_INT_10ms); // 10ms int
|
||||||
|
|
||||||
uint32_t tmr3Point = SFN_PERIOD*1000 - txOffset; // ns
|
uint32_t tmr3Point = SFN_PERIOD*1000 - txOffset; // ns
|
||||||
uint32_t tmr4Point = SFN_PERIOD*1000 - txOffset; // ns
|
uint32_t tmr4Point = SFN_PERIOD*1000 - txOffset; // ns
|
||||||
if (rxOffset < 0)
|
if (rxOffset < 0)
|
||||||
@ -1220,7 +1225,7 @@ uint32_t gRxCsuOnCnt = 0;
|
|||||||
uint32_t gRxCsuOffCnt = 0;
|
uint32_t gRxCsuOffCnt = 0;
|
||||||
uint32_t gTxCsuOnCnt = 0;
|
uint32_t gTxCsuOnCnt = 0;
|
||||||
uint32_t gTxCsuOffCnt = 0;
|
uint32_t gTxCsuOffCnt = 0;
|
||||||
//extern int32_t gPP1sLockCnt;
|
uint32_t gPP1sFlag = 0;
|
||||||
void jesd_10ms_callback(uint8_t nTmrId)
|
void jesd_10ms_callback(uint8_t nTmrId)
|
||||||
{
|
{
|
||||||
uint32_t tmrBaseAddr = JS_RX0_TMR_BASE + nTmrId*0x1000;
|
uint32_t tmrBaseAddr = JS_RX0_TMR_BASE + nTmrId*0x1000;
|
||||||
@ -1257,12 +1262,13 @@ void jesd_10ms_callback(uint8_t nTmrId)
|
|||||||
if (MTIMER_JESD_RX0_ID == nTmrId)
|
if (MTIMER_JESD_RX0_ID == nTmrId)
|
||||||
{
|
{
|
||||||
start_jesd_timer(MTIMER_JESD_TX0_ID);
|
start_jesd_timer(MTIMER_JESD_TX0_ID);
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+57), GET_STC_CNT());
|
//debug_write((DBG_DDR_IDX_DRV_BASE+57), GET_STC_CNT());
|
||||||
}
|
}
|
||||||
pMtimerSfn->txSfnNum = 0;
|
pMtimerSfn->txSfnNum = 0;
|
||||||
pMtimerInt->tmrPP1sCost = GET_STC_CNT();
|
pMtimerInt->tmrPP1sCost = JESD_INT_DELAY; // GET_STC_CNT();
|
||||||
}
|
}
|
||||||
|
gPP1sFlag = 1;
|
||||||
|
debug_write((DBG_DDR_IDX_DRV_BASE+70), GET_STC_CNT()); // 0x118
|
||||||
//if (MTIMER_JESD_RX1_ID == nTmrId)
|
//if (MTIMER_JESD_RX1_ID == nTmrId)
|
||||||
if (MTIMER_JESD_RX0_ID == nTmrId)
|
if (MTIMER_JESD_RX0_ID == nTmrId)
|
||||||
{
|
{
|
||||||
@ -1280,7 +1286,7 @@ void jesd_10ms_callback(uint8_t nTmrId)
|
|||||||
debug_write((DBG_DDR_IDX_DRV_BASE+64+1+(nTmrId<<2)), pMtimerInt->pp1sIntCnt); // 0x104, 0x114
|
debug_write((DBG_DDR_IDX_DRV_BASE+64+1+(nTmrId<<2)), pMtimerInt->pp1sIntCnt); // 0x104, 0x114
|
||||||
|
|
||||||
|
|
||||||
#if 0 //def PALLADIUM_TEST
|
#ifdef PALLADIUM_TEST
|
||||||
uint32_t val = 0;
|
uint32_t val = 0;
|
||||||
for (int32_t core = 0; core < 12; core++)
|
for (int32_t core = 0; core < 12; core++)
|
||||||
{
|
{
|
||||||
@ -1313,6 +1319,11 @@ void jesd_10ms_callback(uint8_t nTmrId)
|
|||||||
}
|
}
|
||||||
#ifdef PALLADIUM_TEST
|
#ifdef PALLADIUM_TEST
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+64+3+(nTmrId<<2)), pMtimerInt->sfnOffsetIntCnt); // 0x10C
|
debug_write((DBG_DDR_IDX_DRV_BASE+64+3+(nTmrId<<2)), pMtimerInt->sfnOffsetIntCnt); // 0x10C
|
||||||
|
if (6 > gPP1sFlag)
|
||||||
|
{
|
||||||
|
debug_write((DBG_DDR_IDX_DRV_BASE+51+gPP1sFlag), (GET_STC_CNT() | (1<<30))); // 0xD0
|
||||||
|
gPP1sFlag++;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
if ((MTIMER_JESD_RX0_ID == nTmrId) && (0 == (pMtimerInt->sfnOffsetIntCnt&0x3)))
|
if ((MTIMER_JESD_RX0_ID == nTmrId) && (0 == (pMtimerInt->sfnOffsetIntCnt&0x3)))
|
||||||
{
|
{
|
||||||
@ -1446,9 +1457,10 @@ void jesd_tdd_callback(uint8_t nTmrId)
|
|||||||
gRxOnCnt++;
|
gRxOnCnt++;
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+78), gRxOnCnt); // 0x138
|
debug_write((DBG_DDR_IDX_DRV_BASE+78), gRxOnCnt); // 0x138
|
||||||
|
|
||||||
set_jesd_rf_state(JESD_ANT_RX, GPIO_ON);
|
set_jesd_all_rf_state(1, GPIO_ON);
|
||||||
set_jesd_rf_state(JESD_RF_RX, GPIO_ON);
|
//set_jesd_rf_state(JESD_ANT_RX, GPIO_ON);
|
||||||
set_jesd_rf_state(JESD_TRANS_RX, GPIO_ON);
|
//set_jesd_rf_state(JESD_RF_RX, GPIO_ON);
|
||||||
|
//set_jesd_rf_state(JESD_TRANS_RX, GPIO_ON);
|
||||||
|
|
||||||
uint8_t nListId = 0;
|
uint8_t nListId = 0;
|
||||||
if ((TDD_2500US_DOUBLE == pMtimerPara->frameType) && (pMtimerInt->tddOffsetIntCnt&0x1))
|
if ((TDD_2500US_DOUBLE == pMtimerPara->frameType) && (pMtimerInt->tddOffsetIntCnt&0x1))
|
||||||
@ -1463,10 +1475,16 @@ void jesd_tdd_callback(uint8_t nTmrId)
|
|||||||
do_write(tFlagAddr, (1<<MTMR_CSU_INSERT)); // clear int flag
|
do_write(tFlagAddr, (1<<MTMR_CSU_INSERT)); // clear int flag
|
||||||
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)
|
||||||
|
{
|
||||||
|
debug_write((DBG_DDR_IDX_DRV_BASE+51+gPP1sFlag), (GET_STC_CNT() | (2<<30))); // 0xD0
|
||||||
|
gPP1sFlag++;
|
||||||
|
}
|
||||||
|
|
||||||
set_jesd_rf_state(JESD_ANT_RX, GPIO_OFF);
|
set_jesd_all_rf_state(1, GPIO_OFF);
|
||||||
set_jesd_rf_state(JESD_RF_RX, GPIO_OFF);
|
//set_jesd_rf_state(JESD_ANT_RX, GPIO_OFF);
|
||||||
set_jesd_rf_state(JESD_TRANS_RX, GPIO_OFF);
|
//set_jesd_rf_state(JESD_RF_RX, GPIO_OFF);
|
||||||
|
//set_jesd_rf_state(JESD_TRANS_RX, GPIO_OFF);
|
||||||
}
|
}
|
||||||
if (tEventFlag & (1<<MTMR_JESD_TXON)) // tx on int
|
if (tEventFlag & (1<<MTMR_JESD_TXON)) // tx on int
|
||||||
{
|
{
|
||||||
@ -1474,13 +1492,19 @@ void jesd_tdd_callback(uint8_t nTmrId)
|
|||||||
do_write(tFlagAddr, (1<<MTMR_JESD_TXON)); // clear int flag
|
do_write(tFlagAddr, (1<<MTMR_JESD_TXON)); // clear int flag
|
||||||
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)
|
||||||
|
{
|
||||||
|
debug_write((DBG_DDR_IDX_DRV_BASE+51+gPP1sFlag), (GET_STC_CNT() | (3<<30))); // 0xD0
|
||||||
|
gPP1sFlag++;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t startTick = 0;
|
uint32_t startTick = 0;
|
||||||
uint32_t cost = 0;
|
uint32_t cost = 0;
|
||||||
startTick = GET_STC_CNT();
|
startTick = GET_STC_CNT();
|
||||||
set_jesd_rf_state(JESD_TRANS_TX, GPIO_ON);
|
set_jesd_all_rf_state(0, GPIO_ON);
|
||||||
set_jesd_rf_state(JESD_RF_TX, GPIO_ON);
|
//set_jesd_rf_state(JESD_TRANS_TX, GPIO_ON);
|
||||||
set_jesd_rf_state(JESD_ANT_TX, GPIO_ON);
|
//set_jesd_rf_state(JESD_RF_TX, GPIO_ON);
|
||||||
|
//set_jesd_rf_state(JESD_ANT_TX, GPIO_ON);
|
||||||
cost = GET_STC_CNT() - startTick;
|
cost = GET_STC_CNT() - startTick;
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+120), cost); // 0x1e0
|
debug_write((DBG_DDR_IDX_DRV_BASE+120), cost); // 0x1e0
|
||||||
//jesd_csu_start();
|
//jesd_csu_start();
|
||||||
@ -1530,9 +1554,10 @@ void jesd_tdd_callback(uint8_t nTmrId)
|
|||||||
do_write(tFlagAddr, (1<<MTMR_JESD_TXOFF)); // clear int flag
|
do_write(tFlagAddr, (1<<MTMR_JESD_TXOFF)); // clear int flag
|
||||||
gTxOffCnt++;
|
gTxOffCnt++;
|
||||||
debug_write((DBG_DDR_IDX_DRV_BASE+77), gTxOffCnt); // 0x134
|
debug_write((DBG_DDR_IDX_DRV_BASE+77), gTxOffCnt); // 0x134
|
||||||
set_jesd_rf_state(JESD_TRANS_TX, GPIO_OFF);
|
set_jesd_all_rf_state(0, GPIO_OFF);
|
||||||
set_jesd_rf_state(JESD_RF_TX, GPIO_OFF);
|
//set_jesd_rf_state(JESD_TRANS_TX, GPIO_OFF);
|
||||||
set_jesd_rf_state(JESD_ANT_TX, GPIO_OFF);
|
//set_jesd_rf_state(JESD_RF_TX, GPIO_OFF);
|
||||||
|
//set_jesd_rf_state(JESD_ANT_TX, GPIO_OFF);
|
||||||
}
|
}
|
||||||
if (cEventFlag & (1<<MTMR_CEVENT_RXEN2CSU0))
|
if (cEventFlag & (1<<MTMR_CEVENT_RXEN2CSU0))
|
||||||
{
|
{
|
||||||
@ -1596,7 +1621,7 @@ void jesd_slot_callback(uint8_t nTmrId)
|
|||||||
if (5 == reCfgFlag)
|
if (5 == reCfgFlag)
|
||||||
{
|
{
|
||||||
reCfgFlag = 0;
|
reCfgFlag = 0;
|
||||||
//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->txSlotTiming = GET_STC_CNT();
|
pMtimerSfn->txSlotTiming = GET_STC_CNT();
|
||||||
pMtimerSfn->txSlotNum++;
|
pMtimerSfn->txSlotNum++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user