⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tunshdrv.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
				
					}
					
				}
				else if (frequency <= 902000)
				{
					
					STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_BS,2,Instance->TunerRegVal);
					STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_P_3_2,0x01,Instance->TunerRegVal);
				
					if(frequency <=514000)
					{
						
						STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,0,Instance->TunerRegVal);
				
					}
					else if(frequency <= 745000)
					{
						
						STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,1,Instance->TunerRegVal);
				
					}
					else if(frequency <= 820000)
					{
						
						STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,2,Instance->TunerRegVal);
				
					}
					else
					{
						
						STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,3,Instance->TunerRegVal);
				
					}
					
				}
					
				Error = STTUNER_IOREG_SetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,0,Instance->TunerRegVal,4);
				if( Error != ST_NO_ERROR)
    				  {
				  #ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        				STTBX_Print(("%s fail, error=%d\n", identity, Error));
				 #endif
        
        				return(Error);
    				  }
    				 divider =0;
    				 frequency =0;
    				 
				
				value1=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FT2000_N_MSB,Instance->TunerRegVal)<<8;
		 		value2=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FT2000_N_LSB,Instance->TunerRegVal);
	
				 divider=value1+value2;           
				frequency = (divider*SharedTunerGetStepsize(Instance) )/1000 - Instance->Status.IntermediateFrequency;
				*NewFrequency = Instance->Status.Frequency = frequency;
			        break;
			        #endif
			        
			    /***************************/
			    
			    #ifdef STTUNER_DRV_SHARED_TUN_DTT7600
			case STTUNER_TUNER_DTT7600:
			
				frequency = Frequency +(Instance->Status.IntermediateFrequency);
				divider = (frequency * 100) / (SharedTunerGetStepsize(Instance)  / 10);
				
				STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_N_MSB,((divider >> 8) & 0x7F),Instance->TunerRegVal);
				
				STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_N_LSB,((divider) & 0xFF),Instance->TunerRegVal);
				
				if 	(Frequency <= 147000) 
				STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_P,0x09,Instance->TunerRegVal);
				else if (Frequency <= 417000)
				STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_P,0x0A,Instance->TunerRegVal);
				else if (Frequency <= 863000)
				STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_P,0x0C,Instance->TunerRegVal);
				Error = STTUNER_IOREG_SetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RDTT7600_P_DIV1,Instance->TunerRegVal,4);
				
				
			
    				 divider =0;
    				 frequency =0;
    				 
				
				value1=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FDTT7600_N_MSB,Instance->TunerRegVal)<<8;
		 		value2=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FDTT7600_N_LSB,Instance->TunerRegVal);
		 
				 divider=value1+value2;
				 
				           
				frequency = (divider*SharedTunerGetStepsize(Instance) )/1000 - Instance->Status.IntermediateFrequency;
				*NewFrequency = Instance->Status.Frequency = frequency;
				break;
			#endif
			    
			        
			   /**************************/     
			        
			default:
			/*Do nothing now. but return error value later on */
			        break;
	}
      }


#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
    STTBX_Print(("%s ok\n", identity));
#endif

    return(Error);
}   



/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_GetStatus()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_GetStatus(TUNER_Handle_t Handle, TUNER_Status_t *Status)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
   const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_GetStatus()";
#endif
     TUNSHDRV_InstanceData_t *Instance;
     ST_ErrorCode_t Error;

    Instance = TUNSHDRV_GetInstFromHandle(Handle);

    switch (Instance->TunerType)
    {
        #ifdef STTUNER_DRV_SHARED_TUN_TD1336 
        case STTUNER_TUNER_TD1336:
        
 		    *Status = Instance->Status;
 		    Error=ST_NO_ERROR;
        break;
        #endif
        #ifdef STTUNER_DRV_SHARED_TUN_FQD1236 
        case STTUNER_TUNER_FQD1236:
        
 		    *Status = Instance->Status;
 		    Error=ST_NO_ERROR;
        break;
        #endif
        #ifdef STTUNER_DRV_SHARED_TUN_T2000 
        case STTUNER_TUNER_T2000:
        
 		    *Status = Instance->Status;
 		    Error=ST_NO_ERROR;
        break;
	#endif
	
	#ifdef STTUNER_DRV_SHARED_TUN_DTT7600 
        case STTUNER_TUNER_DTT7600:
        
 		    *Status = Instance->Status;
 		    Error=ST_NO_ERROR;
        break;
	#endif
	
        default:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
            STTBX_Print(("%s WARNING - no TUNER specified\n",identity));
#endif
        break;
    }
   
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
    STTBX_Print(("%s GetStatus (%d) ok\n", identity, Handle));
#endif
    return(Error);
}   



/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_IsTunerLocked()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_IsTunerLocked(TUNER_Handle_t Handle, BOOL *Locked)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
   const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_IsTunerLocked()";
#endif

    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSHDRV_InstanceData_t *Instance;

    Instance = TUNSHDRV_GetInstFromHandle(Handle);

/*????Need to read tuner to get the correct update of the tuner status*/
    switch(Instance->TunerType)
    {   
    	#ifdef STTUNER_DRV_SHARED_TUN_TD1336      
        case STTUNER_TUNER_TD1336:        	
    		*Locked = FALSE;    /* Assume not locked */
    		Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RTD1336_STATUS,1,Instance->TunerRegVal);
    		if( Error != ST_NO_ERROR)
    		 {
		  #ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        		STTBX_Print(("%s fail, error=%d\n", identity, Error));
		  #endif
        
        	   return(Error);
    		 }
    		*Locked = STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FTD1336_FL,Instance->TunerRegVal);
    	        break;
    	    #endif    
    	        #ifdef STTUNER_DRV_SHARED_TUN_FQD1236 
    	case STTUNER_TUNER_FQD1236:
    		*Locked = FALSE;    /* Assume not locked */
    		Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RFQD1236_STATUS,1,Instance->TunerRegVal);
    		if( Error != ST_NO_ERROR)
    		 {
		  #ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        		STTBX_Print(("%s fail, error=%d\n", identity, Error));
		  #endif
        
        	   return(Error);
    		 }
    		*Locked=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FFQD1236_FL,Instance->TunerRegVal);
			
    	         break; 
    	     #endif    
    	         #ifdef STTUNER_DRV_SHARED_TUN_T2000 
    	case STTUNER_TUNER_T2000:
    		*Locked = FALSE;    /* Assume not locked */
    		Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RT2000_STATUS,1,Instance->TunerRegVal);
    		if( Error != ST_NO_ERROR)
    		{
		  #ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        		STTBX_Print(("%s fail, error=%d\n", identity, Error));
		  #endif
        
        	   return(Error);
    		}
    		*Locked=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FT2000_FL,Instance->TunerRegVal);
		
    	         break; 
    	         #endif
    	         /***********************/
    	         
    	         #ifdef STTUNER_DRV_SHARED_TUN_DTT7600     
        case STTUNER_TUNER_DTT7600:        	
    		*Locked = FALSE;    /* Assume not locked */
    		 Error =  STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RDTT7600_STATUS,1,Instance->TunerRegVal);
 		if (Error == ST_NO_ERROR)
    		{
		#ifdef STTUNER_DEBUG_MODULE_TERDRV_TUNTDRV
   		 STTBX_Print(("%s Error during reading tuner  ...\n", identity));
		#endif
    		}
    		 
    	     	 *Locked=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FDTT7600_FL,Instance->TunerRegVal);
			
    	        break;
    	        #endif
    	         
    	         /**********************/
        default:
        /*Do nothing now*/
               break;    			
    }
        
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
    STTBX_Print(("%s Locked: ", identity));
    if (*Locked == TRUE)
    {
        STTBX_Print(("Yes\n"));
    }
    else
    {
        STTBX_Print(("no\n"));
    }
#endif

    return(Error);
}   



/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_SetBandWidth()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_SetBandWidth(TUNER_Handle_t Handle, U32 BandWidth, U32 *NewBandWidth)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
   const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_SetBandWidth()";
#endif

#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
    STTBX_Print(("%s SetBandWidth (%d) ok\n", identity, Handle));
#endif
    return(ST_NO_ERROR);
}   



/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_ioctl()

Description:
    access device specific low-level functions
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_ioctl(TUNER_Handle_t Handle, U32 Function, void *InParams, void *OutParams, STTUNER_Da_Status_t *Status)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
   const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_ioctl()";
#endif
    ST_ErrorCode_t Error;
    TUNSHDRV_InstanceData_t *Instance;

    Instance = TUNSHDRV_GetInstFromHandle(Handle);

    if(Installed == FALSE)
    {
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        STTBX_Print(("%s fail driver not installed\n", identity));
#endif
        return(STTUNER_ERROR_INITSTATE);
    }

#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        STTBX_Print(("%s tuner driver instance handle=%d\n", identity, Handle));
        STTBX_Print(("%s                     function=%d\n", identity, Function));
        STTBX_Print(("%s                   I/O handle=%d\n", identity, Instance->IOHandle));
#endif

    /* ---------- select what to do ---------- */
    switch(Function){

        case STTUNER_IOCTL_RAWIO: /* raw I/O to device */
            Error =  STTUNER_IOARCH_ReadWrite( Instance->IOHandle,
                                                 ((SHIOCTL_IOARCH_Params_t *)InParams)->Operation,
                                                 ((SHIOCTL_IOARCH_Params_t *)InParams)->SubAddr,
                                                 ((SHIOCTL_IOARCH_Params_t *)InParams)->Data,
                                                 ((SHIOCTL_IOARCH_Params_t *)InParams)->TransferSize,
                                                 ((SHIOCTL_IOARCH_Params_t *)InParams)->Timeout );
            break;

       default:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
            STTBX_Print(("%s function %d not found\n", identity, Function));
#endif
            return(ST_ERROR_FEATURE_NOT_SUPPORTED);
    }



#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
    STTBX_Print(("%s function %d called\n", identity, Function));
#endif
    return(Error);
}   



/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_ioaccess()

Description:
    we get called with the instance of
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_ioaccess(TUNER_Handle_t Handle, IOARCH_Handle_t IOHandle, STTUNER_IOARCH_Operation_t Operation, U16 SubAddr, U8 *Data, U32 TransferSize, U32 Timeout)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
   const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_ioaccess()";
#endif

    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSHDRV_InstanceData_t *Instance;

    Instance = TUNSHDRV_GetInstFromHandle(Handle);

    if(Installed == FALSE)
    {
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
        STTBX_Print(("%s fail driver not installed\n", identity));
#endif
        return(STTUNER_ERROR_INITSTATE);
    }

        /* if STTUNER_IOARCH_MAX_HANDLES then passthrough function required using our device handle/address */
    if (IOHandle == STTUNER_IOARCH_MAX_HANDLES)
    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -