/** @see DTMB_NIM_FP_SET_PARAMETERS */ s32 dtmb_nim_default_SetParameters( DTMB_NIM_MODULE *pNim, u64 RfFreqHz ) { TUNER_MODULE *pTuner; DTMB_DEMOD_MODULE *pDemod; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod particular registers. if(pDemod->ResetFunction(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod by software reset. if(pDemod->SoftwareReset(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_GET_PARAMETERS */ s32 dvbt_nim_default_GetParameters( DVBT_NIM_MODULE *pNim, u64 *pRfFreqHz, s32 *pBandwidthMode ) { TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Get tuner RF frequency in Hz. if(pTuner->GetRfFreqHz(pTuner, pRfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Get demod bandwidth mode. if(pDemod->GetBandwidthMode(pDemod, pBandwidthMode) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: return FUNCTION_ERROR; }
/** @see QAM_NIM_FP_SET_PARAMETERS */ int qam_nim_default_SetParameters( QAM_NIM_MODULE *pNim, unsigned long RfFreqHz, int QamMode, unsigned long SymbolRateHz, int AlphaMode ) { TUNER_MODULE *pTuner; QAM_DEMOD_MODULE *pDemod; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod QAM mode. if(pDemod->SetQamMode(pDemod, QamMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod symbol rate in Hz. if(pDemod->SetSymbolRateHz(pDemod, SymbolRateHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod alpha mode. if(pDemod->SetAlphaMode(pDemod, AlphaMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod particular registers. if(pDemod->ResetFunction(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod by software reset. if(pDemod->SoftwareReset(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: return FUNCTION_ERROR; }
/** @see DTMB_NIM_FP_SET_PARAMETERS */ s32 rtl2836_mxl5007t_SetParameters( DTMB_NIM_MODULE *pNim, u64 RfFreqHz ) { TUNER_MODULE *pTuner; DTMB_DEMOD_MODULE *pDemod; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DTMB_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, DTMB_I2CT_EN_CTRL, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DTMB_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, DTMB_I2CT_EN_CTRL, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Reset demod particular registers. if(pDemod->ResetFunction(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // 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: return FUNCTION_ERROR; }
//UINT32 MxL_I2C_Read(UINT8 DeviceAddr, UINT8 Addr, UINT8* mData) UINT32 MxL_I2C_Read(MxL5007_TunerConfigS* myTuner, UINT8 Addr, UINT8* mData) { TUNER_MODULE *pTuner; I2C_BRIDGE_MODULE *pI2cBridge; unsigned char DeviceAddr; unsigned char Buffer[LEN_2_BYTE]; // Get tuner module and I2C bridge. pTuner = myTuner->pTuner; pI2cBridge = pTuner->pI2cBridge; // Get tuner device address. pTuner->GetDeviceAddr(pTuner, &DeviceAddr); // Set tuner register reading address. // Note: The I2C format of tuner register reading address setting is as follows: // start_bit + (DeviceAddr | writing_bit) + 0xfb + RegReadingAddr + stop_bit Buffer[0] = (unsigned char)MXL5007T_I2C_READING_CONST; Buffer[1] = (unsigned char)Addr; if(pI2cBridge->ForwardI2cWritingCmd(pI2cBridge, DeviceAddr, Buffer, LEN_2_BYTE) != FUNCTION_SUCCESS) goto error_status_set_tuner_register_reading_address; // Get tuner register bytes. // Note: The I2C format of tuner register byte getting is as follows: // start_bit + (DeviceAddr | reading_bit) + reading_byte + stop_bit if(pI2cBridge->ForwardI2cReadingCmd(pI2cBridge, DeviceAddr, Buffer, LEN_1_BYTE) != FUNCTION_SUCCESS) goto error_status_get_tuner_registers; *mData = (UINT8)Buffer[0]; return MxL_OK; error_status_get_tuner_registers: error_status_set_tuner_register_reading_address: return MxL_ERR_OTHERS; }
/** @see QAM_NIM_FP_GET_PARAMETERS */ int qam_nim_default_GetParameters( QAM_NIM_MODULE *pNim, unsigned long *pRfFreqHz, int *pQamMode, unsigned long *pSymbolRateHz, int *pAlphaMode ) { TUNER_MODULE *pTuner; QAM_DEMOD_MODULE *pDemod; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Get tuner RF frequency in Hz. if(pTuner->GetRfFreqHz(pTuner, pRfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Get demod QAM mode. if(pDemod->GetQamMode(pDemod, pQamMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Get demod symbol rate in Hz. if(pDemod->GetSymbolRateHz(pDemod, pSymbolRateHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Get demod alpha mode. if(pDemod->GetAlphaMode(pDemod, pAlphaMode) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: return FUNCTION_ERROR; }
/** @see DTMB_NIM_FP_GET_PARAMETERS */ s32 dtmb_nim_default_GetParameters( DTMB_NIM_MODULE *pNim, u64 *pRfFreqHz ) { TUNER_MODULE *pTuner; // Get tuner module. pTuner = pNim->pTuner; // Get tuner RF frequency in Hz. if(pTuner->GetRfFreqHz(pTuner, pRfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: return FUNCTION_ERROR; }
/** @see DTMB_NIM_FP_INITIALIZE */ int rtl2836b_dtmb_va1e1ed2403_Initialize( DTMB_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2836B_DTMB_VA1E1ED2403_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DTMB_AGC_DRIVE_LV, 0x0 }, {DTMB_Z_AGC, 0x1 }, {DTMB_EN_PGA_MODE, 0x0 }, {DTMB_TARGET_VAL, 0x38 }, {DTMB_AAGC_LOOPGAIN1, 0x15 }, {DTMB_INTEGRAL_CNT_LEN, 0xc }, {DTMB_AAGC_LOCK_PGA_HIT_LEN, 0x1 }, {DTMB_THD_LOCK_UP, 0x205 }, {DTMB_THD_LOCK_DW, 0x1fb }, {DTMB_THD_UP1, 0x205 }, {DTMB_THD_DW1, 0x1fb }, {DTMB_THD_UP2, 0x86 }, {DTMB_THD_DW2, 0x7a }, {DTMB_GAIN_PULSE_SPACE_LEN, 0x1 }, {DTMB_GAIN_PULSE_HOLD_LEN, 0x1 }, {DTMB_GAIN_STEP_SUM_UP_THD, 0xb }, {DTMB_GAIN_STEP_SUM_DW_THD, 0x5 }, }; TUNER_MODULE *pTuner; DTMB_DEMOD_MODULE *pDemod; int i; int RegBitName; unsigned long Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Enable demod DTMB_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, DTMB_I2CT_EN_CTRL, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DTMB_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, DTMB_I2CT_EN_CTRL, 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 36 MHz. if(pDemod->SetIfFreqHz(pDemod, IF_FREQ_36000000HZ) != 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 < RTL2836B_DTMB_VA1E1ED2403_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->RegAccess.Addr16Bit.SetRegBits(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 DTMB_NIM_FP_INITIALIZE */ s32 rtl2836_mxl5007t_Initialize( DTMB_NIM_MODULE *pNim ) { typedef struct { s32 RegBitName; u64 Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2836_MXL5007T_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {DTMB_TARGET_VAL, 0x38 }, }; TUNER_MODULE *pTuner; DTMB_DEMOD_MODULE *pDemod; MXL5007T_EXTRA_MODULE *pTunerExtra; s32 i; s32 RegBitName; u64 Value; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Get tuner extra module. pTunerExtra = &(pTuner->Extra.Mxl5007t); // Enable demod DTMB_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, DTMB_I2CT_EN_CTRL, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set tuner bandwidth mode with 8 MHz. if(pTunerExtra->SetBandwidthMode(pTuner, MXL5007T_BANDWIDTH_8000000HZ) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod DTMB_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, DTMB_I2CT_EN_CTRL, 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, RTL2836_MXL5007T_IF_FREQ_HZ_DEFAULT) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with NIM default. if(pDemod->SetSpectrumMode(pDemod, RTL2836_MXL5007T_SPECTRUM_MODE_DEFAULT) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod registers. for(i = 0; i < RTL2836_MXL5007T_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->RegAccess.Addr8Bit.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_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 QAM_NIM_FP_INITIALIZE */ s32 rtl2840_max3543_Initialize( QAM_NIM_MODULE *pNim ) { typedef struct { s32 RegBitName; u64 Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2840_MAX3543_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {QAM_OPT_RF_AAGC_DRIVE, 0x1 }, {QAM_OPT_IF_AAGC_DRIVE, 0x1 }, {QAM_OPT_RF_AAGC_OEN, 0x1 }, {QAM_OPT_IF_AAGC_OEN, 0x1 }, {QAM_RF_AAGC_MAX, 0xff }, {QAM_RF_AAGC_MIN, 0x0 }, {QAM_IF_AAGC_MAX, 0xff }, {QAM_IF_AAGC_MIN, 0x0 }, {QAM_AAGC_MODE_SEL, 0x0 }, }; QAM_DEMOD_MODULE *pDemod; TUNER_MODULE *pTuner; s32 i; s32 RegBitName; u64 Value; // Get demod module and tuner module. pDemod = pNim->pDemod; pTuner = pNim->pTuner; // Initialize demod. if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod IF frequency in Hz with NIM default. if(pDemod->SetIfFreqHz(pDemod, RTL2840_MAX3543_IF_FREQ_HZ_DEFAULT) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with NIM default. if(pDemod->SetSpectrumMode(pDemod, RTL2840_MAX3543_SPECTRUM_MODE_DEFAULT) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod AAGC registers. // Note: SetParameters() will set QAM_AAGC_TARGET and QAM_VTOP according to parameters. for(i = 0; i < RTL2840_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->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } return FUNCTION_SUCCESS; error_status_set_registers: error_status_execute_function: return FUNCTION_ERROR; }
/** @see QAM_NIM_FP_SET_PARAMETERS */ s32 rtl2840_max3543_SetParameters( QAM_NIM_MODULE *pNim, u64 RfFreqHz, s32 QamMode, u64 SymbolRateHz, s32 AlphaMode ) { QAM_DEMOD_MODULE *pDemod; TUNER_MODULE *pTuner; // Get demod module and tuner module. pDemod = pNim->pDemod; pTuner = pNim->pTuner; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod QAM mode. if(pDemod->SetQamMode(pDemod, QamMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod symbol rate in Hz. if(pDemod->SetSymbolRateHz(pDemod, SymbolRateHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod alpha mode. if(pDemod->SetAlphaMode(pDemod, AlphaMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod QAM_AAGC_TARGET and QAM_VTOP according to QAM mode and enhancement mode. switch(QamMode) { default: case QAM_QAM_4: case QAM_QAM_16: case QAM_QAM_32: case QAM_QAM_64: if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, QAM_VTOP, 0x3f) != FUNCTION_SUCCESS) goto error_status_execute_function; switch(pNim->EnhancementMode) { case QAM_DEMOD_EN_NONE: if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, QAM_AAGC_TARGET, 0x6b) != FUNCTION_SUCCESS) goto error_status_execute_function; break; default: case QAM_DEMOD_EN_AM_HUM: if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, QAM_AAGC_TARGET, 0x64) != FUNCTION_SUCCESS) goto error_status_execute_function; break; } break; case QAM_QAM_128: case QAM_QAM_256: case QAM_QAM_512: case QAM_QAM_1024: if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, QAM_VTOP, 0x38) != FUNCTION_SUCCESS) goto error_status_execute_function; if(pDemod->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, QAM_AAGC_TARGET, 0x6b) != FUNCTION_SUCCESS) goto error_status_execute_function; break; } // Reset demod by software reset. if(pDemod->SoftwareReset(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_execute_function: return FUNCTION_ERROR; }
/** @see QAM_NIM_FP_INITIALIZE */ int rtl2840_mt2063_Initialize( QAM_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2840_MT2063_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {QAM_OPT_RF_AAGC_DRIVE, 0x1 }, {QAM_OPT_IF_AAGC_DRIVE, 0x1 }, {QAM_OPT_RF_AAGC_OEN, 0x1 }, {QAM_OPT_IF_AAGC_OEN, 0x1 }, {QAM_RF_AAGC_MAX, 0x80 }, {QAM_RF_AAGC_MIN, 0x80 }, {QAM_IF_AAGC_MAX, 0xff }, {QAM_IF_AAGC_MIN, 0x0 }, {QAM_AAGC_MODE_SEL, 0x0 }, }; TUNER_MODULE *pTuner; QAM_DEMOD_MODULE *pDemod; MT2063_EXTRA_MODULE *pTunerExtra; RTL2840_MT2063_EXTRA_MODULE *pNimExtra; int i; int RegBitName; unsigned long Value; // Get modules. pTuner = pNim->pTuner; pDemod = pNim->pDemod; pTunerExtra = &(pTuner->Extra.Mt2063); pNimExtra = &(pNim->Extra.Rtl2840Mt2063); // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set tuner IF frequency in Hz. if(pTunerExtra->SetIfFreqHz(pTuner, pNimExtra->IfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Initialize demod. if(pDemod->Initialize(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod IF frequency in Hz. if(pDemod->SetIfFreqHz(pDemod, pNimExtra->IfFreqHz) != 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 AAGC registers. // Note: SetParameters() will set QAM_AAGC_TARGET and QAM_VTOP according to parameters. for(i = 0; i < RTL2840_MT2063_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->RegAccess.Addr8Bit.SetRegBitsWithPage(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } return FUNCTION_SUCCESS; error_status_set_registers: error_status_execute_function: return FUNCTION_ERROR; }
/** @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; }
//UINT32 MxL_I2C_Write(UINT8 DeviceAddr, UINT8* pArray, UINT32 count) UINT32 MxL_I2C_Write(MxL5007_TunerConfigS* myTuner, UINT8* pArray, UINT32 count) { TUNER_MODULE *pTuner; BASE_INTERFACE_MODULE *pBaseInterface; I2C_BRIDGE_MODULE *pI2cBridge; unsigned char DeviceAddr; unsigned long WritingByteNumMax; unsigned long i; unsigned char Buffer[I2C_BUFFER_LEN]; unsigned long WritingIndex; unsigned char *pData; unsigned long DataLen; // Get tuner module, base interface, and I2C bridge. pTuner = myTuner->pTuner; pBaseInterface = pTuner->pBaseInterface; pI2cBridge = pTuner->pI2cBridge; // Get tuner device address. pTuner->GetDeviceAddr(pTuner, &DeviceAddr); // Get writing byte and byte number. pData = (unsigned char *)pArray; DataLen = (unsigned long)count; // Calculate MxL5007T maximum writing byte number. // Note: MxL5007T maximum writing byte number must be a multiple of 2. WritingByteNumMax = pBaseInterface->I2cWritingByteNumMax; WritingByteNumMax = ((WritingByteNumMax % 2) == 0) ? WritingByteNumMax : (WritingByteNumMax - 1); // Set register bytes. // Note: The 2 kind of I2C formats of MxL5007T is described as follows: // 1. start_bit + (device_addr | writing_bit) + (register_addr + writing_byte) * n + stop_bit // ... // start_bit + (device_addr | writing_bit) + (register_addr + writing_byte) * m + stop_bit // 2. start_bit + (device_addr | writing_bit) + 0xff + stop_bit for(i = 0, WritingIndex = 0; i < DataLen; i++, WritingIndex++) { // Put data into buffer. Buffer[WritingIndex] = pData[i]; // If writing buffer is full or put data into buffer completely, send the I2C writing command with buffer. if( (WritingIndex == (WritingByteNumMax - 1)) || (i == (DataLen - 1)) ) { if(pI2cBridge->ForwardI2cWritingCmd(pI2cBridge, DeviceAddr, Buffer, (WritingIndex + LEN_1_BYTE)) != FUNCTION_SUCCESS) goto error_status_set_tuner_registers; WritingIndex = -1; } } return MxL_OK; error_status_set_tuner_registers: return MxL_ERR_OTHERS; }
/** @see QAM_NIM_FP_SET_PARAMETERS */ int rtl2836b_dvbc_va1t1ed6093_SetParameters( QAM_NIM_MODULE *pNim, unsigned long RfFreqHz, int QamMode, unsigned long SymbolRateHz, int AlphaMode ) { QAM_DEMOD_MODULE *pDemod; TUNER_MODULE *pTuner; // Get demod module and tuner module. pDemod = pNim->pDemod; pTuner = pNim->pTuner; // Enable demod QAM_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_I2CT_EN_CTRL, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod QAM_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_I2CT_EN_CTRL, 0x0) != FUNCTION_SUCCESS) goto error_status_set_registers; // Set demod QAM mode. if(pDemod->SetQamMode(pDemod, QamMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod symbol rate in Hz. if(pDemod->SetSymbolRateHz(pDemod, SymbolRateHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod alpha mode. if(pDemod->SetAlphaMode(pDemod, AlphaMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod QAM_AAGC_TARGET and QAM_VTOP according to QAM mode and enhancement mode. switch(QamMode) { default: case QAM_QAM_4: case QAM_QAM_16: case QAM_QAM_32: case QAM_QAM_64: switch(pNim->EnhancementMode) { case QAM_DEMOD_EN_NONE: if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_AAGC_TARGET, 0x6b) != FUNCTION_SUCCESS) goto error_status_execute_function; break; default: case QAM_DEMOD_EN_AM_HUM: if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_AAGC_TARGET, 0x64) != FUNCTION_SUCCESS) goto error_status_execute_function; break; } break; case QAM_QAM_128: case QAM_QAM_256: case QAM_QAM_512: case QAM_QAM_1024: if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_AAGC_TARGET, 0x6b) != FUNCTION_SUCCESS) goto error_status_execute_function; break; } // Reset demod by software reset. if(pDemod->SoftwareReset(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; return FUNCTION_SUCCESS; error_status_set_registers: error_status_execute_function: return FUNCTION_ERROR; }
/** @see QAM_NIM_FP_INITIALIZE */ int rtl2836b_dvbc_va1t1ed6093_Initialize( QAM_NIM_MODULE *pNim ) { typedef struct { int RegBitName; unsigned long Value; } REG_VALUE_ENTRY; static const REG_VALUE_ENTRY AdditionalInitRegValueTable[RTL2836B_DVBC_VA1T1ED6093_ADDITIONAL_INIT_REG_TABLE_LEN] = { // RegBitName, Value {QAM_AGC_DRIVE_LV, 0x0 }, {QAM_OPT_RF_AAGC_DRIVE, 0x0 }, {QAM_OPT_IF_AAGC_DRIVE, 0x0 }, {QAM_OPT_RF_AAGC_OE, 0x0 }, {QAM_OPT_IF_AAGC_OE, 0x1 }, {QAM_PAR_RF_SD_IB, 0x1 }, {QAM_PAR_IF_SD_IB, 0x1 }, {QAM_RF_AAGC_MAX, 0x80 }, {QAM_RF_AAGC_MIN, 0x80 }, {QAM_IF_AAGC_MAX, 0xff }, {QAM_IF_AAGC_MIN, 0x0 }, {QAM_VTOP, 0x80 }, {QAM_KRF_MSB, 0x1 }, {QAM_KRF_LSB, 0x1 }, {QAM_AAGC_MODE_SEL, 0x0 }, }; QAM_DEMOD_MODULE *pDemod; TUNER_MODULE *pTuner; int i; int RegBitName; unsigned long Value; // Get demod module and tuner module. pDemod = pNim->pDemod; pTuner = pNim->pTuner; // Enable demod QAM_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_I2CT_EN_CTRL, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Initialize tuner. if(pTuner->Initialize(pTuner) != FUNCTION_SUCCESS) goto error_status_execute_function; // Disable demod QAM_I2CT_EN_CTRL. if(pDemod->RegAccess.Addr16Bit.SetRegBits(pDemod, QAM_I2CT_EN_CTRL, 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 36 MHz. if(pDemod->SetIfFreqHz(pDemod, IF_FREQ_36000000HZ) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod spectrum mode with SPECTRUM_NORMAL. // Note: RTL2836B DVB-C demod hardware will detect spectrum mode automatically, // even if one uses SetSpectrumMode() to set spectrum mode. if(pDemod->SetSpectrumMode(pDemod, SPECTRUM_NORMAL) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod AAGC registers. // Note: SetParameters() will set QAM_AAGC_TARGET and QAM_VTOP according to parameters. for(i = 0; i < RTL2836B_DVBC_VA1T1ED6093_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->RegAccess.Addr16Bit.SetRegBits(pDemod, RegBitName, Value) != FUNCTION_SUCCESS) goto error_status_set_registers; } return FUNCTION_SUCCESS; error_status_set_registers: error_status_execute_function: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_SET_PARAMETERS */ s32 rtl2832_tda18272_SetParameters( DVBT_NIM_MODULE *pNim, u64 RfFreqHz, s32 BandwidthMode ) { TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; TDA18272_EXTRA_MODULE *pTunerExtra; s32 TunerStandardBandwidthMode; u64 IfFreqHz; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Get tuner extra module. pTunerExtra = &(pTuner->Extra.Tda18272); // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Determine TunerBandwidthMode according to bandwidth mode. switch(BandwidthMode) { default: case DVBT_BANDWIDTH_6MHZ: TunerStandardBandwidthMode = TDA18272_STANDARD_BANDWIDTH_DVBT_6MHZ; break; case DVBT_BANDWIDTH_7MHZ: TunerStandardBandwidthMode = TDA18272_STANDARD_BANDWIDTH_DVBT_7MHZ; break; case DVBT_BANDWIDTH_8MHZ: TunerStandardBandwidthMode = TDA18272_STANDARD_BANDWIDTH_DVBT_8MHZ; break; } // Set tuner standard and bandwidth mode with TunerStandardBandwidthMode. if(pTunerExtra->SetStandardBandwidthMode(pTuner, TunerStandardBandwidthMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set tuner RF frequency in Hz. // Note: Must run SetRfFreqHz() after SetStandardBandwidthMode(), because SetRfFreqHz() needs some // SetStandardBandwidthMode() information. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Get tuner IF frequency in Hz. // Note: 1. Must run GetIfFreqHz() after SetRfFreqHz(), because GetIfFreqHz() needs some SetRfFreqHz() information. // 2. TDA18272 tuner uses dynamic IF frequency. if(pTunerExtra->GetIfFreqHz(pTuner, &IfFreqHz) != 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; // Set demod IF frequency according to IfFreqHz. // Note: TDA18272 tuner uses dynamic IF frequency. if(pDemod->SetIfFreqHz(pDemod, IfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Set demod bandwidth mode. if(pDemod->SetBandwidthMode(pDemod, BandwidthMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod particular registers. if(pDemod->ResetFunction(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // 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: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_SET_PARAMETERS */ int rtl2832_mt2266_SetParameters( DVBT_NIM_MODULE *pNim, unsigned long RfFreqHz, int BandwidthMode ) { TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; MT2266_EXTRA_MODULE *pMt2266Extra; Handle_t Mt2266Handle; unsigned long BandwidthHz; RTL2832_MT2266_EXTRA_MODULE *pRtl2832Mt2266Extra; UData_t Status; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Get tuner extra module. pMt2266Extra = (MT2266_EXTRA_MODULE *)pTuner->pExtra; // Get tuner handle. Mt2266Handle = pMt2266Extra->DeviceHandle; // Get NIM extra module. pRtl2832Mt2266Extra = (RTL2832_MT2266_EXTRA_MODULE *)pNim->pExtra; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Determine BandwidthHz according to bandwidth mode. switch(BandwidthMode) { default: case DVBT_BANDWIDTH_6MHZ: BandwidthHz = MT2266_BANDWIDTH_6MHZ; break; case DVBT_BANDWIDTH_7MHZ: BandwidthHz = MT2266_BANDWIDTH_7MHZ; break; case DVBT_BANDWIDTH_8MHZ: BandwidthHz = MT2266_BANDWIDTH_8MHZ; break; } // Set tuner bandwidth in Hz with BandwidthHz. if(pMt2266Extra->SetBandwidthHz(pTuner, BandwidthHz) != 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; // Set demod bandwidth mode. if(pDemod->SetBandwidthMode(pDemod, BandwidthMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod particular registers. if(pDemod->ResetFunction(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // 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; // Reset MT2266 update procedure. Status = demod_pdcontrol_reset(pDemod, Mt2266Handle, &pRtl2832Mt2266Extra->AgcCurrentState); if(MT_IS_ERROR(Status)) 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: return FUNCTION_ERROR; }
/** @see DVBT_NIM_FP_SET_PARAMETERS */ int rtl2832_fc2580_SetParameters( DVBT_NIM_MODULE *pNim, unsigned long RfFreqHz, int BandwidthMode ) { TUNER_MODULE *pTuner; DVBT_DEMOD_MODULE *pDemod; FC2580_EXTRA_MODULE *pTunerExtra; int TunerBandwidthMode; // Get tuner module and demod module. pTuner = pNim->pTuner; pDemod = pNim->pDemod; // Get tuner extra module. pTunerExtra = (FC2580_EXTRA_MODULE *)pTuner->pExtra; // Enable demod DVBT_IIC_REPEAT. if(pDemod->SetRegBitsWithPage(pDemod, DVBT_IIC_REPEAT, 0x1) != FUNCTION_SUCCESS) goto error_status_set_registers; // Set tuner RF frequency in Hz. if(pTuner->SetRfFreqHz(pTuner, RfFreqHz) != FUNCTION_SUCCESS) goto error_status_execute_function; // Determine TunerBandwidthMode according to bandwidth mode. switch(BandwidthMode) { default: case DVBT_BANDWIDTH_6MHZ: TunerBandwidthMode = FC2580_BANDWIDTH_6000000HZ; break; case DVBT_BANDWIDTH_7MHZ: TunerBandwidthMode = FC2580_BANDWIDTH_7000000HZ; break; case DVBT_BANDWIDTH_8MHZ: TunerBandwidthMode = FC2580_BANDWIDTH_8000000HZ; break; } // Set tuner bandwidth mode with TunerBandwidthMode. if(pTunerExtra->SetBandwidthMode(pTuner, TunerBandwidthMode) != 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; // Set demod bandwidth mode. if(pDemod->SetBandwidthMode(pDemod, BandwidthMode) != FUNCTION_SUCCESS) goto error_status_execute_function; // Reset demod particular registers. if(pDemod->ResetFunction(pDemod) != FUNCTION_SUCCESS) goto error_status_execute_function; // 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: 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; }