📄 dcf_reg.c
字号:
{ ST0_RID_PMFAGC_4, 0x74, 0x00, 0x01, 0x0C, 0x00, 0x38, 0x0C, 0x00, "PMFAGC_4" },
/* CONFIGURATION AND CONTROL */
{ ST0_RID_CTRL_0, 0x80, 0x00, 0x01, 0x00, 0x00, 0x39, 0x00, 0x00, "CTRL_0" },
{ ST0_RID_CTRL_1, 0x81, 0x00, 0x01, 0x00, 0x00, 0x3A, 0x00, 0x00, "CTRL_1" },
{ ST0_RID_CTRL_2, 0x82, 0x00, 0x01, 0x0F, 0x00, 0x3B, 0x00, 0x00, "CTRL_2" },
{ ST0_RID_CTRL_3, 0x83, 0x00, 0x01, 0x00, 0x00, 0x3C, 0x00, 0x00, "CTRL_3" },
{ ST0_RID_CTRL_4, 0x84, 0x00, 0x01, 0x2A, 0x00, 0x3D, 0x2A, 0x00, "CTRL_4" },
{ ST0_RID_CTRL_5, 0x85, 0x00, 0x01, 0x00, 0x00, 0x3E, 0x00, 0x00, "CTRL_5" },
{ ST0_RID_CTRL_6, 0x86, 0x00, 0x01, 0x40, 0x00, 0x3F, 0x40, 0x00, "CTRL_6" },
{ ST0_RID_CTRL_7, 0x87, 0x00, 0x01, 0x6B, 0x00, 0x40, 0x83, 0x00, "CTRL_7" },
{ ST0_RID_CTRL_8, 0x88, 0x00, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, "CTRL_8" },
{ ST0_RID_CTRL_9, 0x89, 0x00, 0x01, 0x00, 0x00, 0x42, 0x00, 0x00, "CTRL_9" },
/* DEINTERLEAVER SYNC DETECTOR */
{ ST0_RID_DEINT_SYNC_0, 0x90, 0x00, 0x01, 0x02, 0x00, 0x43, 0x01, 0x00, "DEINT_SYNC_0" },
{ ST0_RID_DEINT_SYNC_1, 0x91, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, "DEINT_SYNC_1" },
/* INTEGRATED BER TESTER */
{ ST0_RID_BERT_0, 0xA0, 0x00, 0x01, 0x00, 0x00, 0x45, 0x00, 0x00, "BERT_0" },
{ ST0_RID_BERT_1, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, "BERT_1" },
{ ST0_RID_BERT_2, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, "BERT_2" },
/* DEINTERLEAVER: Interleaving depth is 12, cell depth is 17. */
{ ST0_RID_DEINT_0, 0xB0, 0x00, 0x01, 0x91, 0x00, 0x48, 0x91, 0x00, "DEINT_0" },
{ ST0_RID_DEINT_1, 0xB1, 0x00, 0x01, 0x0B, 0x00, 0x49, 0x0B, 0x00, "DEINT_1" },
/* OUTPUT FORMATTER */
{ ST0_RID_OUTFORMAT_0, 0xC0, 0x00, 0x01, 0x4B, 0x00, 0x4A, 0x53, 0x00, "OUTFORMAT_0" },
{ ST0_RID_OUTFORMAT_1, 0xC1, 0x00, 0x01, 0x30, 0x00, 0x4B, 0x10, 0x00, "OUTFORMAT_1" },
{ ST0_RID_OUTFORMAT_2, 0xC2, 0x00, 0x01, 0x24, 0x00, 0x4C, 0x24, 0x00, "OUTFORMAT_2" },
/* REED-SOLOMON DESCRAMBLER SYNC DETECTOR */
{ ST0_RID_RS_DESC_0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, "RS_DESC_0" },
{ ST0_RID_RS_DESC_1, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, "RS_DESC_1" },
{ ST0_RID_RS_DESC_2, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, "RS_DESC_2" },
{ ST0_RID_RS_DESC_3, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, "RS_DESC_3" },
{ ST0_RID_RS_DESC_4, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, "RS_DESC_4" },
{ ST0_RID_RS_DESC_5, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, "RS_DESC_5" },
{ ST0_RID_RS_DESC_14, 0xDE, 0x00, 0x01, 0x00, 0x00, 0x53, 0x00, 0x00, "RS_DESC_14" },
{ ST0_RID_RS_DESC_15, 0xDF, 0x00, 0x01, 0x81, 0x00, 0x54, 0x00, 0x00, "RS_DESC_15" },
/* !!! Don't insert or delete these registers. !!! */
/* !!! Add new registers here. !!! */
/* addr value wflag start store resv1 resv2 resv3 name[] */
{ ST0_RID_EQU_2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, "EQU_2" }, /* reserved */
{ ST0_RID_EQU_5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, "EQU_5" }, /* reserved */
{ ST0_RID_EQU_6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, "EQU_6" }, /* reserved */
{ ST0_RID_DEINT_2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, "DEINT_2" }, /* reserved */
{ ST0_RID_DEINT_3, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, "DEINT_3" } /* reserved */
};
#elif (NIM_DCF_VENDOR == CTT_XIMEI_NIM)
/***************************/
/* FOR XIMEI DTC1SA02-E14D */
/***************************/
#error "ERROR! NO VALID DEMODULATOR INITIALIZATION PARAMETERS DEFINED"
#elif (NIM_DCF_VENDOR == CTT_SVA_NIM)
/***************************/
/* FOR SVA */
/***************************/
#error "ERROR! NO VALID DEMODULATOR INITIALIZATION PARAMETERS DEFINED"
#else
#error "ERROR! NO VALID DEMODULATOR INITIALIZATION PARAMETERS DEFINED"
#endif
#endif /*#if defined(TOWER_CABLE_TUNER) && (TOWER_CABLE_TUNER==YES)*/
/*****************************************************************************/
/* FUNCTION: DCF_RegRead */
/* */
/* PARAMETERS: pNim - Pointer to DCF_NIM structure allocated by app. */
/* U16RegIndex - Register offset to be read. */
/* pu8RegData - Pointer to register value. */
/* i2c_dev - Use specified io method for read/write. */
/* */
/* DESCRIPTION: This function reads from the specified register offset of */
/* the specified demod unit and returns the value read. */
/* */
/* RETURNS: True if successful, False if unsuccessful. */
/* */
/* CONTEXT: Must be called from non-interrupt context. */
/* */
/*****************************************************************************/
bool DCF_RegRead(
DCF_NIM *pNim,
unsigned short u16RegIndex,
unsigned char u8RegCount,
unsigned char* pu8RegData,
DCF_IIC_DEV i2c_dev)
{
bool bRetVal;
int i;
/* sanity check */
if((pNim == NULL) || (pu8RegData == NULL) || (u8RegCount > DCF_I2CBF_LEN))
return(False);
/* get the semaphore that protects the NIM operation */
if (RC_OK != sem_get(gsemDCFRegRW, KAL_WAIT_FOREVER))
{
return(False);
}
/* initialize input registers shadow */
for(i = 0; i < u8RegCount; i++)
{
*(pu8RegData + i) = 0;
}
/* handle register read */
switch(i2c_dev)
{
/* Assume that DEMOD is bound to CPU via I2C, or customer will extend in BusRead */
case DCF_DEMOD_I2C:
bRetVal = (pNim->BusRead)(pNim->demod_handle, u16RegIndex, u8RegCount, pu8RegData);
break;
case DCF_TUNER_I2C:
/* set repeater mode */
bRetVal = TUA_TUNER_DRIVER_Start_I2C_Repeater(pNim);
if(bRetVal == False)
{
sem_put(gsemDCFRegRW);
break;
}
/* read target tuner register */
#if(DCF_INCLUDE_TUA)
bRetVal = (pNim->BusRead)((pNim->tuner.tua6020.tuner_handle), u16RegIndex, u8RegCount, pu8RegData);
if(bRetVal == False)
{
sem_put(gsemDCFRegRW);
break;
}
#endif
/* disable I2C repeater mode */
bRetVal = TUA_TUNER_DRIVER_Stop_I2C_Repeater(pNim);
break;
default:
bRetVal = False;
break;
}
sem_put(gsemDCFRegRW);
return(bRetVal);
} /* DCF_RegisterRead */
/*****************************************************************************/
/* FUNCTION: DCF_RegWrite */
/* */
/* PARAMETERS: pNim - Pointer to DCF_NIM structure allocated by app. */
/* u16RegIndex - Register offset to be writren. */
/* u8RegCount - Number of registers to be written */
/* pu8RegData - Pointer to CMD to be written to resgisters. */
/* i2c_dev - Use specified io method for read/write. */
/* */
/* DESCRIPTION: This function reads from the specified register offset of */
/* the specified demod unit and returns the value read. */
/* */
/* RETURNS: True - successful, False - unsuccessful. */
/* */
/* CONTEXT: Must be called from non-interrupt context. */
/* */
/*****************************************************************************/
bool DCF_RegWrite(
DCF_NIM *pNim,
unsigned short u16RegIndex,
unsigned char u8RegCount,
unsigned char *pu8RegData,
DCF_IIC_DEV i2c_dev)
{
bool bRetVal;
/* sanity check */
if((pNim == NULL) || (pu8RegData == NULL) || (u8RegCount > DCF_I2CBF_LEN))
return(False);
/* handle I2C write */
switch (i2c_dev)
{
/* Assume that DEMOD is bound to CPU via I2C, or customer will extend in BusWrite */
case DCF_DEMOD_I2C:
bRetVal = (pNim->BusWrite)(pNim->demod_handle, u16RegIndex, u8RegCount, pu8RegData);
break;
case DCF_TUNER_I2C:
/* set repeater mode */
bRetVal = TUA_TUNER_DRIVER_Start_I2C_Repeater(pNim);
if(bRetVal == False)
break;
/* write target tuner register */
#if(DCF_INCLUDE_TUA)
bRetVal = (pNim->BusWrite)((pNim->tuner.tua6020.tuner_handle), u16RegIndex, u8RegCount, pu8RegData);
if(bRetVal == False)
break;
#endif
/* disable I2C repeater mode */
bRetVal = TUA_TUNER_DRIVER_Stop_I2C_Repeater(pNim);
break;
default:
bRetVal = False;
break;
}
return(bRetVal);
} /* DCF_RegWrite */
/****************************************************************************
* Modifications:
* $Log:
*
* $
*
****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -