// This function tunes a path tmErrorCode_t Tune(tmUnitSelect_t path, UInt32 uRF_Hz) { tmUnitSelect_t tunerUnit; tmErrorCode_t err; if (path == 0) { tunerUnit = TunerUnit0; } else { tunerUnit = TunerUnit1; } // Set Tuner err = tmbslTDA18250A_SetStandardMode(tunerUnit, TDA18250A_QAM_8MHz); if (err == TM_OK) { err = tmbslTDA18250A_SetRF(tunerUnit, uRF_Hz); } return err; }
INT32 tun_tda18250ab_control(UINT32 tuner_id, UINT32 freq, UINT32 sym) { INT32 result; tmErrorCode_t err; static INT8 tun_status=0; struct QAM_TUNER_CONFIG_EXT * tuner_dev_ptr = NULL; UInt32 uRF_Hz = freq*1000; tuner_dev_ptr = tda18250ab_dev_id[tuner_id]; TDA18250AStandardMode_t stdmodemaster = TDA18250A_QAM_8MHz; if(tuner_dev_ptr->c_tuner_freq_param !=0x00) { if(t_val!=tuner_dev_ptr->c_tuner_freq_param) { t_val=tuner_dev_ptr->c_tuner_freq_param; tun_status=0x00; } } if (0==tun_status) { /* Variable declarations */ tmbslFrontEndDependency_t sSrvFunc; tmErrorCode_t err = TM_OK; switch(tuner_dev_ptr->c_tuner_freq_param) { case 0x09: stdmodemaster=TDA18250A_QAM_8MHz; break; case 0x0C: stdmodemaster=TDA18250A_QAM_6MHz; break; default: stdmodemaster = TDA18250A_QAM_8MHz; break; } tuner_dev_ptr->c_tuner_freq_param =0x00; memset(&sSrvFunc, 0, sizeof(sSrvFunc)); sSrvFunc.sIo.Write = UserWrittenWrite_18250ab; sSrvFunc.sIo.Read = UserWrittenRead_18250ab; sSrvFunc.sTime.Wait = UserWrittenWait_18250ab; sSrvFunc.sDebug.Print = UserWrittenPrint_18250ab; sSrvFunc.sMutex.Init = Null; sSrvFunc.sMutex.DeInit = Null; sSrvFunc.sMutex.Acquire = Null; sSrvFunc.sMutex.Release = Null; /* Tuner init */ sSrvFunc.dwAdditionalDataSize = 0; sSrvFunc.pAdditionalData = Null; err = tmbslTDA18250A_Open(tuner_id, &sSrvFunc); //joey, 20130415, for 27M crystal support, in future, should be from the top setting. /* if (err == TM_OK) { TDA18250AXtalFreq_t tmp_crystal = TDA18250A_XtalFreq_Unknown; struct QAM_TUNER_CONFIG_EXT * tuner_dev_ptr = NULL; if ((tuner_id>=tda18250ab_tuner_cnt) || (tuner_id>=MAX_TUNER_SUPPORT_NUM)) return ERR_FAILUE; tuner_dev_ptr = tda18250ab_dev_id[tuner_id]; if (16 == tuner_dev_ptr->cTuner_Crystal) // tuner crystal selection. { tmp_crystal = TDA18250A_XtalFreq_16000000; } else if (24 == tuner_dev_ptr->cTuner_Crystal) { tmp_crystal = TDA18250A_XtalFreq_24000000; } else if (25 == tuner_dev_ptr->cTuner_Crystal) { tmp_crystal = TDA18250A_XtalFreq_25000000; } else if (27 == tuner_dev_ptr->cTuner_Crystal) { tmp_crystal = TDA18250A_XtalFreq_27000000; } else if (30 == tuner_dev_ptr->cTuner_Crystal) { tmp_crystal = TDA18250A_XtalFreq_30000000; } else { tmp_crystal = TDA18250A_XtalFreq_16000000; } err = tmbslTDA18250A_SetXtal(tuner_id, tmp_crystal); } */ if (err == TM_OK) { err = tmbslTDA18250A_HwInit(tuner_id); } if (err == TM_OK) { err = tmbslTDA18250A_SetPowerState(tuner_id, tmPowerOn); } if(err != TM_OK) return err; tun_status = 1; err = tmbslTDA18250A_SetStandardMode(tuner_id, stdmodemaster); TDA18250AB_PRINTF("2---the err is %d\n",err); } if (err == TM_OK) { err = tmbslTDA18250A_SetRF(tuner_id, uRF_Hz); } if (err !=TM_OK) { result= ERR_FAILED; } else { result = SUCCESS; } return result; }