📄 drv0297.c
字号:
/*----------------------------------------------------------------------------
File Name : drv0297.c (was drv0299.c)
Description : STV0297 front-end driver routines.
Copyright (C) 1999-2001 STMicroelectronics
date: 01-October-2001
version: 3.2.0
author: from STV0299 and MB validation drivers.
comment: Write for multi-instance/multi-FrontEnd.
Revision History:
Reference:
ST API Definition "TUNER Driver API" DVD-API-06
----------------------------------------------------------------------------*/
/* Includes ---------------------------------------------------------------- */
/* C libs */
#include <string.h>
#include <stdlib.h> /* for abs() */
/* STAPI common includes */
#include "stlite.h" /* Standard includes */
#include "stddefs.h"
/* STAPI */
#include "sttuner.h"
#include "sti2c.h"
#include "stcommon.h"
#include "sttbx.h"
#include "stevt.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" /* I/O for this driver */
#include "ioreg.h" /* I/O for this driver */
#include "reg0297.h" /* register mappings for the stv0297 */
#include "d0297.h" /* top level header for this driver */
#include "drv0297.h" /* header for this file */
/* defines ----------------------------------------------------------------- */
#define STV0297_DEMOD_WAITING_TIME 5 /* In ms */
#define STV0297_DEMOD_TRACKING_LOCK 5
#define STV0297_CARRIER_SEARCH_A
#define STV0297_DATA_SEARCH_A
#define STV0297_RELOAD_DEMOD_REGISTER
#define STV0297_FAST_SWEEP_SPEED 750
#define STV0297_SLOW_SWEEP_SPEED 400
#define STV0297_SYMBOLRATE_LEVEL 3000000 /* When SR < STV0297_SYMBOLRATE_LEVEL, Sweep = Sweep/2 */
/* private types ----------------------------------------------------------- */
/* constants --------------------------------------------------------------- */
/* Current LLA revision */
static ST_Revision_t Revision297 = " STV0297-LLA_REL_32.02(GUI) ";
extern U16 Address[];
extern U8 DefVal[];
/* Common initialization for all tuners */
/* ==================================== */
const U8 QAM16[] =
{
R0297_EQU_0, 0x08,
R0297_EQU_1, 0x58,
R0297_CTRL_8, 0x08,
R0297_DEINT_SYNC_0, 0x00,
R0297_BERT_0, 0x84,
0x00
};
const U8 QAM32[] =
{
R0297_EQU_0, 0x18,
R0297_EQU_1, 0x58,
R0297_CTRL_8, 0x00,
R0297_DEINT_SYNC_0, 0x02,
R0297_BERT_0, 0x85,
0x00
};
const U8 QAM64[] =
{
R0297_EQU_0, 0x48,
R0297_EQU_1, 0x58,
R0297_CTRL_8, 0x00,
R0297_DEINT_SYNC_0, 0x02,
R0297_BERT_0, 0x85,
0x00
};
const U8 QAM128[] =
{
R0297_EQU_0, 0x29,
R0297_EQU_1, 0x89,
R0297_CTRL_8, 0x00,
R0297_DEINT_SYNC_0, 0x00,
R0297_BERT_0, 0x84,
0x00
};
const U8 QAM256[] =
{
R0297_EQU_0, 0x39,
R0297_EQU_1, 0x69,
R0297_CTRL_8, 0x08,
R0297_DEINT_SYNC_0, 0x00,
R0297_BERT_0, 0x85,
0x00
};
/* Initialization of TDBE1 */
/* ======================= */
const U8 QAM16_TDBE1[] =
{
R0297_DELAGC_0, 0xFF,
R0297_DELAGC_1, 0x33,
R0297_DELAGC_2, 0xF4,
R0297_DELAGC_3, 0x44,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x33,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x6F,
R0297_DELAGC_8, 0xDC,
R0297_WBAGC_1, 0xE5,
R0297_WBAGC_2, 0x2F,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0xC4,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x09,
R0297_WBAGC_10, 0x66,
R0297_WBAGC_11, 0xE6,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x06,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x5E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x0B,
R0297_CRL_9, 0x0F,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x04,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x0C,
0x00
};
const U8 QAM32_TDBE1[] =
{
R0297_DELAGC_0, 0xFF,
R0297_DELAGC_1, 0x33,
R0297_DELAGC_2, 0xEB,
R0297_DELAGC_3, 0x44,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x33,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x6C,
R0297_DELAGC_8, 0x33,
R0297_WBAGC_1, 0x4A,
R0297_WBAGC_2, 0x2D,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0xC4,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x09,
R0297_WBAGC_10, 0x0A,
R0297_WBAGC_11, 0xF7,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x08,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x1E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x05,
R0297_CRL_9, 0x00,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x84,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x0C,
0x00
};
const U8 QAM64_TDBE1[] =
{
R0297_DELAGC_0, 0xFF,
R0297_DELAGC_1, 0x33,
R0297_DELAGC_2, 0xE5,
R0297_DELAGC_3, 0x44,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x33,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x6C,
R0297_DELAGC_8, 0x6E,
R0297_WBAGC_1, 0x9F,
R0297_WBAGC_2, 0x20,
R0297_WBAGC_3, 0x18,
R0297_WBAGC_4, 0x80,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x12,
R0297_WBAGC_10, 0x51,
R0297_WBAGC_11, 0xF8,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x06,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x1E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x05,
R0297_CRL_9, 0x00,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x04,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x00,
0x00
};
const U8 QAM128_TDBE1[] =
{
R0297_DELAGC_0, 0xFF,
R0297_DELAGC_1, 0x33,
R0297_DELAGC_2, 0xE5,
R0297_DELAGC_3, 0x44,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x33,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x60,
R0297_DELAGC_8, 0x00,
R0297_WBAGC_1, 0xED,
R0297_WBAGC_2, 0x2F,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0xC4,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x09,
R0297_WBAGC_10, 0x14,
R0297_WBAGC_11, 0xFE,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x06,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x5E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x0B,
R0297_CRL_9, 0x0F,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x04,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x0C,
0x00
};
const U8 QAM256_TDBE1[] =
{
R0297_DELAGC_0, 0xFF,
R0297_DELAGC_1, 0x33,
R0297_DELAGC_2, 0xE5,
R0297_DELAGC_3, 0x44,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x33,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x6C,
R0297_DELAGC_8, 0x42,
R0297_WBAGC_1, 0xFF,
R0297_WBAGC_2, 0x2F,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0xC4,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x09,
R0297_WBAGC_10, 0x76,
R0297_WBAGC_11, 0xFE,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x06,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x5E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x0B,
R0297_CRL_9, 0x0F,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x04,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x00,
0x00
};
/* Initialization of MT2040 */
/* ======================== */
const U8 QAM16_MT2040[] =
{
R0297_DELAGC_0, 0xF9,
R0297_DELAGC_1, 0x6B,
R0297_DELAGC_2, 0xA6,
R0297_DELAGC_3, 0x17,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x6C,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x64,
R0297_DELAGC_8, 0xB8,
R0297_WBAGC_1, 0xE4,
R0297_WBAGC_2, 0x3B,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0x10,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x27,
R0297_WBAGC_10, 0x66,
R0297_WBAGC_11, 0xE6,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x06,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x5E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x0B,
R0297_CRL_9, 0x05,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x04,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x0C,
0x00
};
const U8 QAM32_MT2040[] =
{
R0297_DELAGC_0, 0xF9,
R0297_DELAGC_1, 0x6B,
R0297_DELAGC_2, 0xA6,
R0297_DELAGC_3, 0x17,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x6C,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x6D,
R0297_DELAGC_8, 0x6D,
R0297_WBAGC_1, 0xF6,
R0297_WBAGC_2, 0x3B,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0x10,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x27,
R0297_WBAGC_10, 0xFF,
R0297_WBAGC_11, 0xFF,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x08,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x5E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x05,
R0297_CRL_9, 0x0F,
R0297_CRL_10, 0x03,
R0297_PMFAGC_0, 0xFF,
R0297_PMFAGC_1, 0x04,
R0297_PMFAGC_2, 0x00,
R0297_PMFAGC_3, 0x00,
R0297_PMFAGC_4, 0x0C,
0x00
};
const U8 QAM64_MT2040[] =
{
R0297_DELAGC_0, 0xF9,
R0297_DELAGC_1, 0x6B,
R0297_DELAGC_2, 0xA6,
R0297_DELAGC_3, 0x17,
R0297_DELAGC_4, 0x29,
R0297_DELAGC_5, 0x6B,
R0297_DELAGC_6, 0x80,
R0297_DELAGC_7, 0x66,
R0297_DELAGC_8, 0x9B,
R0297_WBAGC_1, 0xEA,
R0297_WBAGC_2, 0x33,
R0297_WBAGC_3, 0x00,
R0297_WBAGC_4, 0xFF,
R0297_WBAGC_5, 0x00,
R0297_WBAGC_6, 0x00,
R0297_WBAGC_9, 0x04,
R0297_WBAGC_10, 0x51,
R0297_WBAGC_11, 0xF8,
R0297_STLOOP_2, 0x30,
R0297_STLOOP_3, 0x06,
R0297_STLOOP_9, 0x08,
R0297_STLOOP_10, 0x5E,
R0297_STLOOP_11, 0x04,
R0297_CRL_1, 0x49,
R0297_CRL_2, 0x0B,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -