/** @see DVBT_NIM_FP_INITIALIZE */ int rtl2832_fc2580_Initialize( DVBT_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2832_FC2580_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DVBT_DAGC_TRG_VAL, 0x39 }, {DVBT_AGC_TARG_VAL_0, 0x0 }, {DVBT_AGC_TARG_VAL_8_1, 0x5a }, {DVBT_AAGC_LOOP_GAIN, 0x16 }, {DVBT_LOOP_GAIN2_3_0, 0x6 }, {DVBT_LOOP_GAIN2_4, 0x1 }, {DVBT_LOOP_GAIN3, 0x16 }, {DVBT_VTOP1, 0x35 }, {DVBT_VTOP2, 0x21 }, {DVBT_VTOP3, 0x21 }, {DVBT_KRF1, 0x0 }, {DVBT_KRF2, 0x40 }, {DVBT_KRF3, 0x10 }, {DVBT_KRF4, 0x10 }, {DVBT_IF_AGC_MIN, 0x80 }, {DVBT_IF_AGC_MAX, 0x7f }, {DVBT_RF_AGC_MIN, 0x9c }, {DVBT_RF_AGC_MAX, 0x7f }, {DVBT_POLAR_RF_AGC, 0x0 }, {DVBT_POLAR_IF_AGC, 0x0 }, {DVBT_AD7_SETTING, 0xe9f4 }, }; TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; int i; int RegBitName; unsigned long Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize demod. if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod IF frequency with 0 Hz. if(pDemod->SetIfFreqHz(pDemod, IF_FREQ_0HZ) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with SPECTRUM_NORMAL. if(pDemod->SetSpectrumMode(pDemod, SPECTRUM_NORMAL) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod registers. for(i = 0; i < RTL2832_FC2580_ADDITIONAL_INIT_REG_TABLE_LEN; i++) { // Get register bit name and its value. RegBitName = AdditionalInitRegValueTable[i].RegBitName; Value = AdditionalInitRegValueTable[i].Value; // Set demod registers if(pDemod->SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } // Set TS interface according to TS interface mode. switch(pNim->DemodTsInterfaceMode) { case TS_INTERFACE_PARALLEL: // Set demod TS interface with parallel mode. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_SERIAL, 0) != FUNCTION_SUCCESS) goto error_status_set_registers; if(pDemod->SetRegBitsWithPage(pDemod, DVBT_CDIV_PH0, 9) != FUNCTION_SUCCESS) goto error_status_set_registers; if(pDemod->SetRegBitsWithPage(pDemod, DVBT_CDIV_PH1, 9) != FUNCTION_SUCCESS) goto error_status_set_registers; break; default: case TS_INTERFACE_SERIAL: // Set demod TS interface with serial mode. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_SERIAL, 1) != FUNCTION_SUCCESS) goto error_status_set_registers; if(pDemod->SetRegBitsWithPage(pDemod, DVBT_CDIV_PH0, 2) != FUNCTION_SUCCESS) goto error_status_set_registers; if(pDemod->SetRegBitsWithPage(pDemod, DVBT_CDIV_PH1, 2) != FUNCTION_SUCCESS) goto error_status_set_registers; break; } return FUNCTION_SUCCESS; error_status_execute_function: error_status_set_registers: return FUNCTION_ERROR; }
/** * @see DVBT_NIM_FP_INITIALIZE */ s32 rtl2832_tda18272_Initialize(DVBT_NIM_MODULE *pNim) { typedef struct { s32 RegBitName; u64 Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2832_TDA18272_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DVBT_DAGC_TRG_VAL, 0x39 }, {DVBT_AGC_TARG_VAL_0, 0x0 }, {DVBT_AGC_TARG_VAL_8_1, 0x40 }, {DVBT_AAGC_LOOP_GAIN, 0x16 }, {DVBT_LOOP_GAIN2_3_0, 0x8 }, {DVBT_LOOP_GAIN2_4, 0x1 }, {DVBT_LOOP_GAIN3, 0x18 }, {DVBT_VTOP1, 0x35 }, {DVBT_VTOP2, 0x21 }, {DVBT_VTOP3, 0x21 }, {DVBT_KRF1, 0x0 }, {DVBT_KRF2, 0x40 }, {DVBT_KRF3, 0x10 }, {DVBT_KRF4, 0x10 }, {DVBT_IF_AGC_MIN, 0x80 }, {DVBT_IF_AGC_MAX, 0x7f }, {DVBT_RF_AGC_MIN, 0x80 }, {DVBT_RF_AGC_MAX, 0x7f }, {DVBT_POLAR_RF_AGC, 0x0 }, {DVBT_POLAR_IF_AGC, 0x0 }, {DVBT_AD7_SETTING, 0xe9f4 }, }; TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; s32 i; s32 RegBitName; u64 Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize demod. // Note: TDA18272 tuner uses dynamic IF frequency, so we will set demod IF frequency in SetParameters(). if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with SPECTRUM_INVERSE. if(pDemod->SetSpectrumMode(pDemod, SPECTRUM_INVERSE) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod registers. for(i = 0; i < RTL2832_TDA18272_ADDITIONAL_INIT_REG_TABLE_LEN; i++) { // Get register bit name and its value. RegBitName = AdditionalInitRegValueTable[i].RegBitName; Value = AdditionalInitRegValueTable[i].Value; // Set demod registers if(pDemod->SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } return FUNCTION_SUCCESS; error_status_execute_function: error_status_set_registers: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_INITIALIZE */ int rtl2832_fc0013_Initialize( DVBT_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2832_FC0013_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DVBT_DAGC_TRG_VAL, 0x5a }, {DVBT_AGC_TARG_VAL_0, 0x0 }, {DVBT_AGC_TARG_VAL_8_1, 0x5a }, {DVBT_AAGC_LOOP_GAIN, 0x16 }, {DVBT_LOOP_GAIN2_3_0, 0x6 }, {DVBT_LOOP_GAIN2_4, 0x1 }, {DVBT_LOOP_GAIN3, 0x16 }, {DVBT_VTOP1, 0x35 }, {DVBT_VTOP2, 0x21 }, {DVBT_VTOP3, 0x21 }, {DVBT_KRF1, 0x0 }, {DVBT_KRF2, 0x40 }, {DVBT_KRF3, 0x10 }, {DVBT_KRF4, 0x10 }, {DVBT_IF_AGC_MIN, 0x80 }, {DVBT_IF_AGC_MAX, 0x7f }, {DVBT_RF_AGC_MIN, 0x80 }, {DVBT_RF_AGC_MAX, 0x7f }, {DVBT_POLAR_RF_AGC, 0x0 }, {DVBT_POLAR_IF_AGC, 0x0 }, {DVBT_AD7_SETTING, 0xe9bf }, {DVBT_EN_GI_PGA, 0x0 }, {DVBT_THD_LOCK_UP, 0x0 }, {DVBT_THD_LOCK_DW, 0x0 }, {DVBT_THD_UP1, 0x11 }, {DVBT_THD_DW1, 0xef }, {DVBT_INTER_CNT_LEN, 0xc }, {DVBT_GI_PGA_STATE, 0x0 }, {DVBT_EN_AGC_PGA, 0x1 }, // {DVBT_REG_GPE, 0x1 }, // {DVBT_REG_GPO, 0x0 }, // {DVBT_REG_MONSEL, 0x0 }, // {DVBT_REG_MON, 0x3 }, // {DVBT_REG_4MSEL, 0x0 }, }; TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; int i; int RegBitName; unsigned long Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set FC0013 up-dowm AGC. //(0xFE for master of dual). //(0xFC for slave of dual, and for 2832 mini dongle). if(fc0013_SetRegMaskBits(pTuner, 0x0c, 7, 0, 0xFC) != FC0013_I2C_SUCCESS) goto error_status_set_tuner_registers; // Disable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize demod. if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod IF frequency with 0 Hz. if(pDemod->SetIfFreqHz(pDemod, IF_FREQ_0HZ) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with SPECTRUM_NORMAL. if(pDemod->SetSpectrumMode(pDemod, SPECTRUM_NORMAL) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod registers. for(i = 0; i < RTL2832_FC0013_ADDITIONAL_INIT_REG_TABLE_LEN; i++) { // Get register bit name and its value. RegBitName = AdditionalInitRegValueTable[i].RegBitName; Value = AdditionalInitRegValueTable[i].Value; // Set demod registers if(pDemod->SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } // Reset demod by software reset. if(pDemod->SoftwareReset(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Get tuner RSSI value when calibration is on. // Note: Need to execute rtl2832_fc0013_GetTunerRssiCalOn() after demod AD7 is on. if(rtl2832_fc0013_GetTunerRssiCalOn(pNim) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; return FUNCTION_SUCCESS; error_status_execute_function: error_status_set_registers: error_status_set_tuner_registers: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_INITIALIZE */ int rtl2832_max3543_Initialize( DVBT_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2832_MAX3543_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DVBT_DAGC_TRG_VAL, 0x39 }, {DVBT_AGC_TARG_VAL_0, 0x0 }, {DVBT_AGC_TARG_VAL_8_1, 0x4b }, {DVBT_AAGC_LOOP_GAIN, 0x16 }, {DVBT_LOOP_GAIN2_3_0, 0x6 }, {DVBT_LOOP_GAIN2_4, 0x1 }, {DVBT_LOOP_GAIN3, 0x16 }, {DVBT_VTOP1, 0x35 }, {DVBT_VTOP2, 0x21 }, {DVBT_VTOP3, 0x21 }, {DVBT_KRF1, 0x0 }, {DVBT_KRF2, 0x40 }, {DVBT_KRF3, 0x10 }, {DVBT_KRF4, 0x10 }, {DVBT_IF_AGC_MIN, 0x80 }, {DVBT_IF_AGC_MAX, 0x7f }, {DVBT_RF_AGC_MIN, 0x80 }, {DVBT_RF_AGC_MAX, 0x7f }, {DVBT_POLAR_RF_AGC, 0x0 }, {DVBT_POLAR_IF_AGC, 0x0 }, {DVBT_AD7_SETTING, 0xe9d4 }, {DVBT_AD_EN_REG1, 0x0 }, {DVBT_CKOUT_PWR_PID, 0x0 }, }; TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; int i; int RegBitName; unsigned long Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize demod. if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod IF frequency with NIM default. if(pDemod->SetIfFreqHz(pDemod, RTL2832_MAX3543_IF_FREQ_HZ_DEFAULT) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with NIM default. if(pDemod->SetSpectrumMode(pDemod, RTL2832_MAX3543_SPECTRUM_MODE_DEFAULT) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod registers. for(i = 0; i < RTL2832_MAX3543_ADDITIONAL_INIT_REG_TABLE_LEN; i++) { // Get register bit name and its value. RegBitName = AdditionalInitRegValueTable[i].RegBitName; Value = AdditionalInitRegValueTable[i].Value; // Set demod registers if(pDemod->SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } return FUNCTION_SUCCESS; error_status_execute_function: error_status_set_registers: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_INITIALIZE */ int rtl2832_r820t_Initialize( DVBT_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2832_R820T_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DVBT_DAGC_TRG_VAL, 0x39 }, {DVBT_AGC_TARG_VAL_0, 0x0 }, {DVBT_AGC_TARG_VAL_8_1, 0x40 }, {DVBT_AAGC_LOOP_GAIN, 0x16 }, {DVBT_LOOP_GAIN2_3_0, 0x8 }, {DVBT_LOOP_GAIN2_4, 0x1 }, {DVBT_LOOP_GAIN3, 0x18 }, {DVBT_VTOP1, 0x35 }, {DVBT_VTOP2, 0x21 }, {DVBT_VTOP3, 0x21 }, {DVBT_KRF1, 0x0 }, {DVBT_KRF2, 0x40 }, {DVBT_KRF3, 0x10 }, {DVBT_KRF4, 0x10 }, {DVBT_IF_AGC_MIN, 0x80 }, {DVBT_IF_AGC_MAX, 0x7f }, {DVBT_RF_AGC_MIN, 0x80 }, {DVBT_RF_AGC_MAX, 0x7f }, {DVBT_POLAR_RF_AGC, 0x0 }, {DVBT_POLAR_IF_AGC, 0x0 }, {DVBT_AD7_SETTING, 0xe9f4 }, }; TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; int i; int RegBitName; unsigned long Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize demod. if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with SPECTRUM_INVERSE. if(pDemod->SetSpectrumMode(pDemod, SPECTRUM_INVERSE) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod registers. for(i = 0; i < RTL2832_R820T_ADDITIONAL_INIT_REG_TABLE_LEN; i++) { // Get register bit name and its value. RegBitName = AdditionalInitRegValueTable[i].RegBitName; Value = AdditionalInitRegValueTable[i].Value; // Set demod registers if(pDemod->SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } // Reset demod by software reset. if(pDemod->SoftwareReset(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: error_status_set_registers: //error_status_set_tuner_registers: return FUNCTION_ERROR; }