📄 reg0370qam.c
字号:
/* ----------------------------------------------------------------------------
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 + -