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

📄 reg0370qam.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
/* ----------------------------------------------------------------------------
File Name: reg0370qam.c 

Description:

Copyright (C) 2005-2006 STMicroelectronics

   date: 
version: 
 author: 
comment: 

Reference:
    ST API Definition "TUNER Driver API" DVD-API-06
---------------------------------------------------------------------------- */


/* Includes ---------------------------------------------------------------- */

/* C libs */
#include <string.h>

/* Standard includes */
#include "stlite.h"

/* STAPI */
#include "sttbx.h"
#include "sttuner.h"

/* local to sttuner */
#include "util.h"       /* generic utility functions for sttuner */
#include "dbtypes.h"    /* data types for databases */
#include "sysdbase.h"   /* functions to accesss system data */

#include "ioarch.h"     /* IO access layer */
#include "ioreg.h"      /* register mapping */

#include "d0370qam.h"     /* top level driver header */
#include "reg0370qam.h"   /* header for this file */


/* private variables ------------------------------------------------------- */


/* functions --------------------------------------------------------------- */



/* ----------------------------------------------------------------------------
Name: Reg0370QAM_Open()

Description:

Parameters:

Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t Reg0370QAM_Open(STTUNER_IOREG_DeviceMap_t *DeviceMap, U32 ExternalClock)
{
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    const char *identity = "STTUNER reg0370qam.c Reg0370QAM_Open()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;

    DeviceMap->RegExtClk = ExternalClock * 2L;

#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    STTBX_Print(("%s External clock=%u KHz\n", identity, ExternalClock));
#endif
    return(Error);
}


/* ----------------------------------------------------------------------------
Name: Reg0370QAM_SetQAMSize()

Description:

Parameters:

Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t Reg0370QAM_SetQAMSize(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle,S32 QAMSize)
{
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    const char *identity = "STTUNER reg0370qam.c Reg0370QAM_SetQAMSize()";
#endif
ST_ErrorCode_t  Error = ST_NO_ERROR;

    switch(QAMSize)
    {
        case STTUNER_MOD_16QAM:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM16\n", identity));
#endif
            STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_MODE_SEL, _370_QAM_QAM16);
            break;
        case STTUNER_MOD_32QAM:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM32\n", identity));
#endif
            STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_MODE_SEL, _370_QAM_QAM32);
            break;
        case STTUNER_MOD_64QAM:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM64\n", identity));
#endif
            STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_MODE_SEL, _370_QAM_QAM64);
            break;
        case STTUNER_MOD_128QAM:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM128\n", identity));
#endif
            STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_MODE_SEL, _370_QAM_QAM128);
            break;
        case STTUNER_MOD_256QAM:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM256\n", identity));
#endif
            STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_MODE_SEL, _370_QAM_QAM256);
            break;
        default:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s fail Bad Parameter\n", identity));
#endif
            break;
    }
    return Error;
}

/* ----------------------------------------------------------------------------
Name: Reg0370QAM_GetQAMSize()

Description:

Parameters:

Return Value:
---------------------------------------------------------------------------- */
STTUNER_Modulation_t Reg0370QAM_GetQAMSize(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle)
{
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    const char *identity = "STTUNER reg0370qam.c Reg0370QAM_GetQAMSize()";
#endif
    STTUNER_Modulation_t Value;

    Value = STTUNER_IOREG_GetField(DeviceMap, IOHandle,F0370QAM_MODE_SEL);

    switch(Value)
    {
        case _370_QAM_QAM16:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM16\n", identity));
#endif
            return STTUNER_MOD_16QAM;
        case _370_QAM_QAM32:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM32\n", identity));
#endif
            return STTUNER_MOD_32QAM;
        case _370_QAM_QAM64:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM64\n", identity));
#endif
            return STTUNER_MOD_64QAM;
        case _370_QAM_QAM128:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM128\n", identity));
#endif
            return STTUNER_MOD_128QAM;
        case _370_QAM_QAM256:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s QAM256\n", identity));
#endif
            return STTUNER_MOD_256QAM;
        default:
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
            STTBX_Print(("%s fail Bad Parameter\n", identity));
#endif
            return STTUNER_MOD_ALL;
            break;
    }
}

/* ----------------------------------------------------------------------------
Name: Reg0370QAM_SetAGC()

Description:

Parameters:

Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t Reg0370QAM_SetAGC(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle,short ref)
{
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    const char *identity = "STTUNER reg0370qam.c Reg0370QAM_SetAGC()";
#endif
      ST_ErrorCode_t  Error = ST_NO_ERROR;
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    STTBX_Print(("%s ==> AGC2 %u\n", identity, ref));
#endif

   
	
	STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_AGC2SD_MSB,(unsigned char)(ref>>8));
	STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_AGC2SD_LSB,(unsigned char)ref);
	
	
	return Error;

}

/* ----------------------------------------------------------------------------
Name: Reg0370QAM_GetAGC()

Description:

Parameters:

Return Value:
---------------------------------------------------------------------------- */
U16 Reg0370QAM_GetAGC(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle)
{
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    const char *identity = "STTUNER reg0370qam.c Reg0370QAM_GetAGC()";
#endif
    short val=0;
    val = ((STTUNER_IOREG_GetField(DeviceMap, IOHandle,F0370QAM_AGC2SD_MSB))<<8) + STTUNER_IOREG_GetField(DeviceMap, IOHandle,F0370QAM_AGC2SD_LSB);
    return(val);
}

/*----------------------------------------------------
 FUNCTION      Reg0370QAM_SetWBAGCloop
 ACTION	       Sets the Roll value of the WBAGC loop	
           
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
ST_ErrorCode_t Reg0370QAM_SetWBAGCloop(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle,unsigned short loop)
{
	ST_ErrorCode_t  Error = ST_NO_ERROR;
	
	STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_ROLL_MSB,(unsigned char)(loop>>8));  
	STTUNER_IOREG_SetField(DeviceMap,IOHandle,F0370QAM_ROLL_LSB,(unsigned char)loop);
	

	return  Error;
}

/*----------------------------------------------------
 FUNCTION      Reg0370QAM_GetWBAGCloop
 ACTION	       Gets the Roll value of the WBAGC loop	
           
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
U16 Reg0370QAM_GetWBAGCloop(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle)
{
        unsigned short val=0;

	val =  STTUNER_IOREG_GetField(DeviceMap,IOHandle,F0370QAM_ROLL_MSB)<<8; 
	val += STTUNER_IOREG_GetField(DeviceMap,IOHandle,F0370QAM_ROLL_LSB); 
	return(val);
}

/*----------------------------------------------------
 FUNCTION      Reg0370QAM_GetSymbolRate
 ACTION	       Gets the symbol rate	
           
 PARAMS IN     
 PARAMS OUT    
 RETURN        
------------------------------------------------------*/
unsigned long	Reg0370QAM_GetSymbolRate(STTUNER_IOREG_DeviceMap_t *DeviceMap, IOARCH_Handle_t IOHandle,S32 ExtClk)
{
#ifdef STTUNER_DEBUG_MODULE_CABDRV_REG0370QAM
    const char *identity = "STTUNER reg0370QAM.c Reg0370QAM_GetSymbolRate()";
#endif
    unsigned long regsym;
	long ExtClk_Khz;
	unsigned long RegSymbolRate; /* Ecrasie lors de l'appel*/
	ExtClk_Khz=(long)ExtClk/1000;
/*	_ExtClk = (long)(1000*UserGetExternalClock());	 unit kHz*/
	regsym  = (U32)(STTUNER_IOREG_GetField(DeviceMap,IOHandle,F0370QAM_SYMB_RATE_3)<<24)	;
	regsym += (U32)(STTUNER_IOREG_GetField(DeviceMap,IOHandle,F0370QAM_SYMB_RATE_2)<<16)	;
	regsym += (U32)(STTUNER_IOREG_GetField(DeviceMap,IOHandle,F0370QAM_SYMB_RATE_1)<<8)	;
	regsym += STTUNER_IOREG_GetField(DeviceMap,IOHandle,F0370QAM_SYMB_RATE_0);

	if(regsym < 134217728L)				/* 134217728L = 2**27*/
	/* # 1.56 MBd (clock = 50 MHz)*/
	{
		regsym = regsym * 32;			/* 32 = 2**5*/
		regsym = regsym / 65536L;		/* 65536L = 2**16 */
		regsym = ExtClk_Khz * regsym;		/* ExtClk in kHz */
		RegSymbolRate = regsym/256L;	/* 256 = 2**8 */
		RegSymbolRate *= 125 ;			/* 125 = 1000/2**3 */
		RegSymbolRate /= 1024L ;			/* 1024 = 2**10	  */
	}
	else if(regsym < 268435456L)		/* 268435456L = 2**28 */
	/* # 3.13 MBd (clock = 50 MHz) */
	{
		regsym = regsym * 16;			/* 16 = 2**4*/

⌨️ 快捷键说明

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