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

📄 lnbh21.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 5 页
字号:

    switch (Status)
    {
        case LNB_STATUS_ON:
        STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 1, &(Instance->RegVal)  );
           
        break;
        case LNB_STATUS_OFF:
        STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 0,&(Instance->RegVal)  );
     
        break;
        default:
        break;
    }

	Error |= Instance->DeviceMap.Error;
    
   Instance->DeviceMap.Error = ST_NO_ERROR;

    return(Error);
}
#endif

#ifdef STTUNER_MINIDRIVER
/*----------------------------------------------------
 FUNCTION     LNBH21_SetPower
 ACTION        set lnb power
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_SetPower(LNB_Status_t Status)
{
	U8 powerstatus;
	ST_ErrorCode_t Error = ST_NO_ERROR;

    switch (Status)
    {
        case LNB_STATUS_ON:
                 
            Error = STTUNER_IODIRECT_ReadWrite(STTUNER_IO_LNB_READ, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
            powerstatus |= 0x04;
            Error |= STTUNER_IODIRECT_ReadWrite(STTUNER_IO_SA_LNB_WRITE, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
            break;
        case LNB_STATUS_OFF:/* always remain LNB ON, to get uninterrupted LNB power supply*/
            Error = STTUNER_IODIRECT_ReadWrite(STTUNER_IO_LNB_READ, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
            powerstatus &= 0xFB;
            Error |= STTUNER_IODIRECT_ReadWrite(STTUNER_IO_SA_LNB_WRITE, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
            break;
        default:
            break;
    }

    return(Error);
}
#endif

#ifndef STTUNER_MINIDRIVER
/*----------------------------------------------------
 FUNCTION     LNBH21_GetStatus

 ACTION        Get LNb status -> ShortCircuit(OLF), Over Temperature(OTF)
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_GetStatus(LNB_Handle_t Handle, STTUNER_IOREG_DeviceMap_t *DeviceMap, LNB_Status_t *Status)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_getstatus()";
#endif
	U8 olf_otf; /* short circuit and over temp. reporting*/
	LNBH21_InstanceData_t     *Instance;
	ST_ErrorCode_t Error = ST_NO_ERROR;

    	Instance = (LNBH21_InstanceData_t *)Handle;

	if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
	 {
	   #ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
	        STTBX_Print(("%s invalid handle\n", identity));
	   #endif
	        return(ST_ERROR_INVALID_HANDLE);
	 }
	 
	 Instance->DeviceMap.Mode = IOREG_MODE_NOSUBADR; /* LNB21 read require no subaddress*/
	
	olf_otf = STTUNER_IOREG_GetRegister(&Instance->DeviceMap, Instance->IOHandle, (U16)RLNBH21_REGS);
	
	if((olf_otf & 0x01)== 0x01)
	(*Status) = LNB_STATUS_SHORT_CIRCUIT;
	
	if((olf_otf & 0x02) == 0x02)
        (*Status) = LNB_STATUS_OVER_TEMPERATURE;
        
        if((olf_otf & 0x03) == 0x03)
        (*Status) = LNB_STATUS_SHORTCIRCUIT_OVERTEMPERATURE;
  
	Error |= Instance->DeviceMap.Error;
    
    Instance->DeviceMap.Error = ST_NO_ERROR;
		
		return(Error);      
}
#endif

#ifdef STTUNER_MINIDRIVER
/*----------------------------------------------------
 FUNCTION     LNBH21_GetStatus
 ACTION        Get LNb status -> ShortCircuit(OLF), Over Temperature(OTF)
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_GetStatus(LNB_Status_t *Status)
{
	U8 olf_otf; /* short circuit and over temp. reporting*/
	
	ST_ErrorCode_t Error = ST_NO_ERROR;
	
	Error = STTUNER_IODIRECT_ReadWrite(STTUNER_IO_LNB_READ, RLNBH21_REGS, 0x00, 0x00, &olf_otf, 1, FALSE);
	
	if((olf_otf & 0x01)== 0x01)
	(*Status) = LNB_STATUS_SHORT_CIRCUIT;
	
	if((olf_otf & 0x02) == 0x02)
        (*Status) = LNB_STATUS_OVER_TEMPERATURE;
        
        if((olf_otf & 0x03) == 0x03)
        (*Status) = LNB_STATUS_SHORTCIRCUIT_OVERTEMPERATURE;

	  
  return(Error);      
}

#endif

#ifndef STTUNER_MINIDRIVER
 /*----------------------------------------------------
 FUNCTION      LNBH21_Reg_Install

 ACTION        
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_Reg_Install(STTUNER_IOREG_DeviceMap_t *DeviceMap)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
    const char *identity = "STTUNER lnbh21.c LNBH21_Reg_Install()";
#endif
   ST_ErrorCode_t Error = ST_NO_ERROR;
     
       
    if (Error != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
        STTBX_Print(("%s fail error=%d\n", identity, Error));
#endif
    }
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
        STTBX_Print(("%s installed ok\n", identity));
#endif
    }



    return (Error);
}
#endif   
#ifndef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_ioctl_set()

Description:
    access device specific low-level functions
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_ioctl_set(LNB_Handle_t Handle,void *InParams)
   
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_ioctl_get()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    LNBH21_InstanceData_t     *Instance;
    LNB_IOCTL_Config_t    *lnb_ioctl_input;
	
    
    lnb_ioctl_input = (LNB_IOCTL_Config_t *)InParams;
    Instance = (LNBH21_InstanceData_t *)Handle;
    Instance->DeviceMap.Mode = IOREG_MODE_SUBADR_8;

    
    if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
        STTBX_Print(("%s invalid handle\n", identity));
#endif
        return(ST_ERROR_INVALID_HANDLE);
    }
  
/* set the Tx mode */
  switch(lnb_ioctl_input->TTX_Mode)
  {
    case  LNB_IOCTL_TTXMODE_NOCHANGE : /* Do nothing */
           break;
    case  LNB_IOCTL_TTXMODE_RX  : /* set LNBH21 to receiver mode */
        	STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_ISEL, 0, &(Instance->RegVal) );
     break;
    case  LNB_IOCTL_TTXMODE_TX : /* set LNBH21 to transmitter mode */
            STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_ISEL, 1, &(Instance->RegVal)  );
     break;
     default:
       break; /* do nothing */ 
      
  }
  
  /* set current protection mode */
  switch(lnb_ioctl_input->ShortCircuitProtectionMode)
  {
    case  LNB_IOCTL_PROTECTION_NOCHANGE : /* Do nothing */
           break;
    case  LNB_IOCTL_PROTECTION_STATIC  : /* set current portection to static mode */
          STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_PCL, 1, &(Instance->RegVal) );
     break;
    case  LNB_IOCTL_PROTECTION_DYNAMIC : /* set current portection to dynamic mode */
          STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_PCL, 0, &(Instance->RegVal));
     break;
     default:
       break; /* do nothing */ 
      
  }
 
  /* setpower block  mode */
  switch(lnb_ioctl_input->PowerControl)
  {
    case  LNB_IOCTL_POWERBLCOKS_NOCHANGE : /* Do nothing */
           break;
    case  LNB_IOCTL_POWERBLCOKS_ENABLED  : /* set LNBH21 to power enable mode */
      	STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 1,&(Instance->RegVal)  );
     break;
    case  LNB_IOCTL_POWERBLCOKS_DISABLED : /* set LNBH21 to power disable mode */
        STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 0,&(Instance->RegVal) );
     break;
     default:
       break; /* do nothing */ 
      
  }
   /* setpower LLC Mode */
  switch(lnb_ioctl_input->LLC_Mode)
  {
    case  LNB_IOCTL_LLCMODE_NOCHANGE : /* Do nothing */
           break;
    case  LNB_IOCTL_LLCMODE_ENABLED  : /* set LNBH21 to LLC mode ON 13/18V +1 */
      	STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_LLC, 1, &(Instance->RegVal)  );
     break;
    case  LNB_IOCTL_LLCMODE_DISABLED : /* set LNBH21 to LLC mode OFF 13/18V */
        STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_LLC, 0, &(Instance->RegVal) );
     break;
     default:
       break; /* do nothing */ 
      
  }
  
	Error = LNBH21_UpdateLNB(Instance);

#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
    STTBX_Print(("%s function called\n", identity));
#endif


	Error |= Instance->DeviceMap.Error;
    
    Instance->DeviceMap.Error = ST_NO_ERROR;

    return(Error);

}
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_ioctl_get()

Description:
    access device specific low-level functions
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_ioctl_get(LNB_Handle_t Handle,void *OutParams)
   
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_ioctl_get()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    LNBH21_InstanceData_t     *Instance;
    LNB_IOCTL_Config_t   *lnb_ioctl_output;
    
     
    lnb_ioctl_output = (LNB_IOCTL_Config_t *)OutParams;  
    Instance = (LNBH21_InstanceData_t *)Handle;
    Instance->DeviceMap.Mode = IOREG_MODE_NOSUBADR;/* LNBH21 read require no subaddress*/
    
       
    if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
        STTBX_Print(("%s invalid handle\n", identity));
#endif
        return(ST_ERROR_INVALID_HANDLE);
    } 
  /* Get the TTX mode */
  lnb_ioctl_output->TTX_Mode = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle,  FLNBH21_ISEL);
  switch( lnb_ioctl_output->TTX_Mode)
  {
    case 0:
	    lnb_ioctl_output->TTX_Mode = LNB_IOCTL_TTXMODE_RX;
		break;
    case 1:
	    lnb_ioctl_output->TTX_Mode = LNB_IOCTL_TTXMODE_TX;
		break;
    default:
	    break;
  } 
  /* Get current protection mode */
  lnb_ioctl_output->ShortCircuitProtectionMode = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle,  FLNBH21_PCL);
   switch( lnb_ioctl_output->ShortCircuitProtectionMode)
  {
    case 0:
	    lnb_ioctl_output->ShortCircuitProtectionMode = LNB_IOCTL_PROTECTION_DYNAMIC;
		break;
    case 1:
	    lnb_ioctl_output->ShortCircuitProtectionMode = LNB_IOCTL_PROTECTION_STATIC;
		break;
    default:
	    break;
  } 
  /* Get lnb power mode */
  lnb_ioctl_output->PowerControl = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle ,  FLNBH21_EN);
   switch( lnb_ioctl_output->PowerControl)
  {
    case 0:
	    lnb_ioctl_output->PowerControl = LNB_IOCTL_POWERBLCOKS_DISABLED;
		break;
    case 1:
	    lnb_ioctl_output->PowerControl = LNB_IOCTL_POWERBLCOKS_ENABLED;
		break;
    default:
	    break;
  } 
  
  lnb_ioctl_output->LLC_Mode = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle ,  FLNBH21_LLC);
   switch( lnb_ioctl_output->LLC_Mode)
  {
    case 0:
	    lnb_ioctl_output->LLC_Mode = LNB_IOCTL_LLCMODE_DISABLED;
		break;
    case 1:
	    lnb_ioctl_output->LLC_Mode = LNB_IOCTL_LLCMODE_ENABLED;
		break;
    default:
	    break;
  } 

#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
    STTBX_Print(("%s function  called\n", identity));
#endif

    Error |= Instance->DeviceMap.Error;
	    
    Instance->DeviceMap.Error = ST_NO_ERROR;


    return(Error);

}
#endif
#ifndef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_overloadcheck()

Description:
    access device specific low-level functions
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */

ST_ErrorCode_t lnb_lnbh21_overloadcheck(LNB_Handle_t Handle, BOOL  *IsOverTemp, BOOL *IsCurrentOvrLoad)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_overloadcheck()";
#endif
    ST_ErrorCode_t Error = ST_NO_E

⌨️ 快捷键说明

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