/*============================================================================*/ tmErrorCode_t tmbslTDA18250SetLoFreq ( tmUnitSelect_t tUnit, /* I: Unit number */ UInt32 uRF /* I: Frequency in Hz */ ) { ptmTDA18250Object_t pObj = Null; tmErrorCode_t err = TM_OK; UInt32 uLO = 0; /* Get a driver instance */ err = TDA18250GetInstance(tUnit, &pObj); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250GetInstance(0x%08X) failed.", tUnit)); if (err == TM_OK) { /* Try to acquire driver mutex */ err = TDA18250MutexAcquire(pObj, TDA18250_MUTEX_TIMEOUT); } if (err == TM_OK) { uLO = uRF + pObj->Std_Array[pObj->StandardMode].IF; err = tmddTDA18250SetLOFreq(tUnit, uLO); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250SetLOFreq(0x%08X) failed.", tUnit)); /* Release driver mutex */ (void)TDA18250MutexRelease(pObj); } return err; }
MT_FE_RET mt_fe_tn_init_TDA18250(void *dev_handle) { tmErrorCode_t err = TM_OK; tmbslFrontEndDependency_t sSrvTunerFunc; tda_handle = (MT_FE_DC2800_Device_Handle)dev_handle; /* Low layer struct set-up to link with user written functions */ sSrvTunerFunc.sIo.Write = UserWrittenI2CWrite; sSrvTunerFunc.sIo.Read = UserWrittenI2CRead; sSrvTunerFunc.sTime.Get = Null; sSrvTunerFunc.sTime.Wait = UserWrittenWait; sSrvTunerFunc.sDebug.Print = NULL; sSrvTunerFunc.sMutex.Init = NULL; sSrvTunerFunc.sMutex.DeInit = NULL; sSrvTunerFunc.sMutex.Acquire = NULL; sSrvTunerFunc.sMutex.Release = NULL; sSrvTunerFunc.dwAdditionalDataSize = 0; sSrvTunerFunc.pAdditionalData = Null; /* Initialize low level driver setup environment */ //err = tmddTDA18250Init(tUnit, &sSrvTunerFunc); err = tmbslTDA18250Init(0, &sSrvTunerFunc); /* TDA18250 Master Hardware initialization */ //err = tmddTDA18250Reset(0); err = TDA18250Reset(0); /* I: Unit number */ if(err != TM_OK) return MtFeErr_Fail; /* TDA18250 Master Hardware power state */ err = tmbslTDA18250SetPowerState(0, tmTDA18250_PowerNormalMode); ///* TDA18250 Master Hardware power state */ //err = tmddTDA18250SetPowerState(0, tmTDA18250_PowerNormalMode); err = TDA18250SetStandardMode(0, tmTDA18250_DIG_9MHz); if(err != TM_OK) return MtFeErr_Fail; #if 0 /* TDA18250 Master RF frequency */ err = tmddTDA18250SetLOFreq(0, uRFMaster); if(err != TM_OK) return err; /* Get TDA18250 Master PLL Lock status */ err = tmddTDA18250GetLockStatus(0, &PLLLockMaster); if(err != TM_OK) return err; /* Get TDA18250 Master IF */ err = tmddTDA18250GetIF(0, &uIFMaster); if(err != TM_OK) return err; #endif return MtFeErr_Ok; }
/*============================================================================*/ tmErrorCode_t tmbslTDA18250DigitalMasterReset ( tmUnitSelect_t tUnit /* I: Unit number */ ) { ptmTDA18250Object_t pObj = Null; tmErrorCode_t err = TM_OK; /* Get a driver instance */ err = TDA18250GetInstance(tUnit, &pObj); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250GetInstance(0x%08X) failed.", tUnit)); if (err == TM_OK) { /* Try to acquire driver mutex */ err = TDA18250MutexAcquire(pObj, TDA18250_MUTEX_TIMEOUT); } if (err == TM_OK) { /* Slave Type not supported */ if ( pObj->deviceType > tmTDA18250_DeviceTypeMasterWithoutXTout ) { err = TDA18250_ERR_NOT_SUPPORTED; } } if (err == TM_OK) { /* Switch smooth time constant setting to ensure smooth opening */ err = tmddTDA18250_SetRFSW_T_CST(tUnit, pObj->Switch_TimeCst); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250_SetRFSW_T_CST(0x%08X) failed.", tUnit)); if (err == TM_OK) { err = TDA18250SetSwitchOpen(tUnit); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250SetSwitchOpen(0x%08X) failed.", tUnit)); } if (err == TM_OK) { /***** Write all initialization bytes except AGC registers *****/ err = tmddTDA18250Reset(tUnit, pObj->clock_mode_auto, tmddTDA18250_WithoutResetAGC); } if (err == TM_OK) { err = tmddTDA18250ResetXtoutMTO(tUnit, (tmddTDA18250DeviceType_t)pObj->deviceType); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250ResetXtoutMTO(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err = tmddTDA18250SetResetMSM(tUnit); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250SetResetMSM(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err = tmddTDA18250SetLaunchMSM(tUnit); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250SetLaunchMSM(0x%08X) failed.", tUnit)); } /***** Image Rejection Calibration *****/ if (err == TM_OK) { /* stop AGC1 loop */ err = TDA18250SetAGC1_loop_off(tUnit, tmTDA18250_ON); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250SetAGC1_loop_off(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err = TDA18250IRCALDigitalMaster_InitRestore(tUnit, tmTDA18250_INIT); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250IRCAL_Init(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err = TDA18250IRCalibration(tUnit); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250IRCalibration(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err = TDA18250IRCALDigitalMaster_InitRestore(tUnit, tmTDA18250_RESTORE); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250IRCAL_Init(0x%08X) failed.", tUnit)); } if (err == TM_OK) { /* stop AGC1 loop */ err = TDA18250SetAGC1_loop_off(tUnit, tmTDA18250_OFF); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250SetAGC1_loop_off(0x%08X) failed.", tUnit)); } /***** Write default LO *****/ if (err == TM_OK) { tmddTDA18250SetLOFreq(tUnit, TMBSL_TDA18250_DEFAULT_LO); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250SetLOFreq(0x%08X) failed.", tUnit)); pObj->uRF = TMBSL_TDA18250_DEFAULT_LO - pObj->Std_Array[pObj->StandardMode].IF ; } /***** Write default smooth offset between RF and Loop throught *****/ if (err == TM_OK) { tmddTDA18250SetLT_smooth_offset(tUnit, 0); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250SetLT_smooth_offset(0x%08X) failed.", tUnit)); } /* Switch smooth time constant setting because in direct mode in register initialization */ if (err == TM_OK) { err = tmddTDA18250_SetRFSW_T_CST(tUnit, pObj->Switch_TimeCst); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250_SetRFSW_T_CST(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err = TDA18250SetSwitchClose(tUnit, tmTDA18250_IND_ANLG_Band_7); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "TDA18250SetSwitchClose(0x%08X) failed.", tUnit)); } /* default band is ANALOG 7MHz */ if (err == TM_OK) { pObj->BandIndex = tmTDA18250_IND_ANLG_Band_7; } if (err == TM_OK) { err= tmddTDA18250SetHP_MTO_T_CST(tUnit, pObj->MTO_TimeCst); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250SetHP_MTO_T_CST(0x%08X) failed.", tUnit)); } if (err == TM_OK) { err= tmddTDA18250Setnotch_select(tUnit, 01); tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "tmddTDA18250Setnotch_select(0x%08X) failed.", tUnit)); } /* Release driver mutex */ (void)TDA18250MutexRelease(pObj); } return err; }