📄 drv0297j.c
字号:
/*----------------------------------------------------------------------------
File Name : drv0297J.c (was drv0297.c)
Description : STV0297J 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 "reg0297j.h" /* register mappings for the stv0297J */
#include "d0297j.h" /* top level header for this driver */
#include "drv0297j.h" /* header for this file */
/* defines ----------------------------------------------------------------- */
#define STV0297J_DEMOD_WAITING_TIME 5 /* In ms */
#define STV0297J_DEMOD_TRACKING_LOCK 5
/*#define STV0297J_RELOAD_DEMOD_REGISTER*/
#define STV0297J_AGC2_MAX_LEVEL 600
#define STV0297J_FAST_SWEEP_SPEED 750
#define STV0297J_SLOW_SWEEP_SPEED 400
#define STV0297J_SYMBOLRATE_LEVEL 3000000 /* When SR < STV0297J_SYMBOLRATE_LEVEL, Sweep = Sweep/2 */
/* private types ----------------------------------------------------------- */
/* constants --------------------------------------------------------------- */
/* Current LLA revision */
static ST_Revision_t Revision297J = " STV0297J-LLA_REL_01.10 ";
/* Initialization of TDEE4 */
/* ======================= */
const U8 FECA_QAM16_TDEE4[] =
{
R0297J_EQU_0, 0x0a,
0x00
};
const U8 FECA_QAM32_TDEE4[] =
{
0x00
};
const U8 FECA_QAM64_TDEE4[] =
{
R0297J_EQU_0, 0x48,
R0297J_EQU_1, 0xa7,
R0297J_EQU_3, 0x00,
R0297J_EQU_4, 0x06,
R0297J_EQU_5, 0x7a,
R0297J_EQU_6, 0x00,
R0297J_INITDEM_0, 0x51,
R0297J_INITDEM_1, 0xb8,
R0297J_INITDEM_2, 0x00,
R0297J_INITDEM_3, 0x00,
R0297J_INITDEM_4, 0x40,
R0297J_INITDEM_5, 0x88,
R0297J_DELAGC_0, 0xff,
R0297J_DELAGC_1, 0x3f,
R0297J_DELAGC_2, 0xff,
R0297J_DELAGC_3, 0x00,
R0297J_DELAGC_4, 0x29,
R0297J_DELAGC_5, 0x4c,
R0297J_DELAGC_6, 0x80,
R0297J_DELAGC_7, 0x86,
R0297J_WBAGC_0, 0x65,
R0297J_WBAGC_1, 0x30,
R0297J_WBAGC_2, 0x1b,
R0297J_WBAGC_3, 0x18,
R0297J_WBAGC_4, 0x99,
R0297J_WBAGC_5, 0xb0,
R0297J_WBAGC_6, 0x80,
R0297J_WBAGC_7, 0x12,
R0297J_STLOOP_1, 0x06,
R0297J_STLOOP_2, 0x00,
R0297J_STLOOP_3, 0x06,
R0297J_STLOOP_4, 0x30,
R0297J_STLOOP_5, 0x30,
R0297J_STLOOP_6, 0x33,
R0297J_STLOOP_7, 0x33,
R0297J_STLOOP_8, 0x23,
R0297J_STLOOP_9, 0x1e,
R0297J_STLOOP_10, 0x04,
R0297J_CRL_1, 0x48,
R0297J_CRL_2, 0x8b,
R0297J_CRL_3, 0x00,
R0297J_CRL_4, 0xfe,
R0297J_CRL_5, 0x00,
R0297J_CRL_6, 0x00,
R0297J_CRL_7, 0x00,
R0297J_CRL_8, 0x26,
R0297J_CRL_9, 0xe0,
R0297J_CRL_10, 0x29,
R0297J_CRL_11, 0xfe,
R0297J_CRL_12, 0x0f,
R0297J_CRL_13, 0x00,
R0297J_CRL_14, 0x00,
R0297J_PMFAGC_0, 0xff,
R0297J_PMFAGC_1, 0x0f,
R0297J_PMFAGC_2, 0x10,
R0297J_PMFAGC_3, 0x00,
R0297J_PMFAGC_4, 0x00,
R0297J_PMFAGC_5, 0x00,
R0297J_INTER_0, 0xff,
R0297J_INTER_1, 0xff,
R0297J_SIG_FAD_0, 0x17,
R0297J_SIG_FAD_2, 0x1e,
R0297J_SIG_FAD_3, 0x37,
R0297J_NEW_CRL_0, 0x04,
R0297J_NEW_CRL_1, 0x08,
R0297J_NEW_CRL_2, 0x02,
R0297J_NEW_CRL_3, 0x05,
R0297J_NEW_CRL_4, 0x02,
R0297J_NEW_CRL_5, 0x05,
R0297J_NEW_CRL_6, 0x09,
R0297J_FREQ_0, 0x82,
R0297J_FREQ_1, 0x6b,
R0297J_FREQ_2, 0x05,
R0297J_FREQ_3, 0x06,
R0297J_FREQ_4, 0x0a,
R0297J_FREQ_5, 0xf0,
R0297J_FREQ_6, 0x00,
R0297J_FREQ_7, 0x50,
R0297J_FREQ_11, 0x22,
R0297J_FREQ_12, 0xb4,
R0297J_FREQ_13, 0x00,
R0297J_FREQ_14, 0x00,
R0297J_FREQ_15, 0xb0,
R0297J_FREQ_16, 0xc8,
R0297J_FREQ_17, 0x00,
R0297J_FREQ_18, 0x00,
R0297J_FREQ_19, 0x00,
R0297J_FREQ_23, 0x00,
R0297J_FREQ_24, 0x00,
R0297J_DEINT_SYNC_0, 0x02,
R0297J_BERT_0, 0x85,
R0297J_BERT_1, 0x00,
R0297J_BERT_2, 0x00,
R0297J_DEINT_0, 0x91,
R0297J_DEINT_1, 0x0b,
R0297J_RS_DESC_6, 0x00,
R0297J_RS_DESC_7, 0x00,
R0297J_RS_DESC_8, 0x01,
R0297J_CTRL_0, 0xc0,
R0297J_CTRL_1, 0x00,
R0297J_CTRL_2, 0x20,
R0297J_CTRL_3, 0x80,
R0297J_CTRL_4, 0xa0,
R0297J_CTRL_5, 0x00,
R0297J_CTRL_6, 0x00,
R0297J_CTRL_7, 0x00,
R0297J_CTRL_9, 0x00,
R0297J_CTRL_10, 0x1b, /* 58MHz */
R0297J_CTRL_11, 0x00,
R0297J_CTRL_12, 0x00,
0x00
};
const U8 FECA_QAM128_TDEE4[] =
{
R0297J_EQU_0, 0x29,
0x00
};
const U8 FECA_QAM256_TDEE4[] =
{
R0297J_EQU_0, 0x39,
R0297J_EQU_1, 0x69,
R0297J_EQU_3, 0x20,
R0297J_EQU_4, 0x16,
R0297J_EQU_5, 0x18,
R0297J_EQU_6, 0xe0,
R0297J_INITDEM_0, 0xf5,
R0297J_INITDEM_1, 0xb8,
R0297J_INITDEM_2, 0x00,
R0297J_INITDEM_3, 0x00,
R0297J_INITDEM_4, 0x00,
R0297J_INITDEM_5, 0x88,
R0297J_DELAGC_0, 0xff,
R0297J_DELAGC_1, 0x3f,
R0297J_DELAGC_2, 0xff,
R0297J_DELAGC_3, 0x4c,
R0297J_DELAGC_4, 0x29,
R0297J_DELAGC_5, 0x8c,
R0297J_DELAGC_6, 0x80,
R0297J_DELAGC_7, 0xe0,
R0297J_WBAGC_0, 0x0a,
R0297J_WBAGC_1, 0x21,
R0297J_WBAGC_2, 0x1c,
R0297J_WBAGC_3, 0x18,
R0297J_WBAGC_4, 0x00,
R0297J_WBAGC_5, 0x11,
R0297J_WBAGC_6, 0x80,
R0297J_WBAGC_7, 0x12,
R0297J_STLOOP_1, 0x06,
R0297J_STLOOP_2, 0x00,
R0297J_STLOOP_3, 0x06,
R0297J_STLOOP_4, 0x30,
R0297J_STLOOP_5, 0x79,
R0297J_STLOOP_6, 0x26,
R0297J_STLOOP_7, 0x77,
R0297J_STLOOP_8, 0x17,
R0297J_STLOOP_9, 0x1e,
R0297J_STLOOP_10, 0x04,
R0297J_CRL_1, 0x4a,
R0297J_CRL_2, 0x0b,
R0297J_CRL_3, 0x00,
R0297J_CRL_4, 0xb0,
R0297J_CRL_5, 0x00,
R0297J_CRL_6, 0x00,
R0297J_CRL_7, 0x00,
R0297J_CRL_8, 0x00,
R0297J_CRL_9, 0x00,
R0297J_CRL_10, 0x80,
R0297J_CRL_11, 0x04,
R0297J_CRL_12, 0x00,
R0297J_CRL_13, 0x00,
R0297J_CRL_14, 0x00,
R0297J_PMFAGC_0, 0xff,
R0297J_PMFAGC_1, 0x04,
R0297J_PMFAGC_2, 0x10,
R0297J_PMFAGC_3, 0x00,
R0297J_PMFAGC_4, 0x00,
R0297J_PMFAGC_5, 0x00,
R0297J_INTER_0, 0xff,
R0297J_INTER_1, 0xff,
R0297J_SIG_FAD_0, 0x17,
R0297J_SIG_FAD_2, 0x1e,
R0297J_SIG_FAD_3, 0x37,
R0297J_NEW_CRL_0, 0x04,
R0297J_NEW_CRL_1, 0x0a,
R0297J_NEW_CRL_2, 0x04,
R0297J_NEW_CRL_3, 0x07,
R0297J_NEW_CRL_4, 0x01,
R0297J_NEW_CRL_5, 0x06,
R0297J_NEW_CRL_6, 0x09,
R0297J_FREQ_0, 0xc1,
R0297J_FREQ_1, 0x7b,
R0297J_FREQ_2, 0x05,
R0297J_FREQ_3, 0x06,
R0297J_FREQ_4, 0x08,
R0297J_FREQ_5, 0xea,
R0297J_FREQ_6, 0x81,
R0297J_FREQ_7, 0x98,
R0297J_FREQ_11, 0x22,
R0297J_FREQ_12, 0xb4,
R0297J_FREQ_13, 0x00,
R0297J_FREQ_14, 0x00,
R0297J_FREQ_15, 0xb0,
R0297J_FREQ_16, 0xc8,
R0297J_FREQ_17, 0x00,
R0297J_FREQ_18, 0x00,
R0297J_FREQ_19, 0x00,
R0297J_FREQ_23, 0x00,
R0297J_FREQ_24, 0x00,
R0297J_DEINT_SYNC_0, 0x02,
R0297J_BERT_0, 0x85,
R0297J_BERT_1, 0x1a,
R0297J_BERT_2, 0x00,
R0297J_DEINT_0, 0x91,
R0297J_DEINT_1, 0x0b,
R0297J_RS_DESC_6, 0x00,
R0297J_RS_DESC_7, 0x00,
R0297J_RS_DESC_8, 0x01,
R0297J_CTRL_0, 0xc0,
R0297J_CTRL_1, 0x00,
R0297J_CTRL_2, 0x00,
R0297J_CTRL_3, 0x80,
R0297J_CTRL_4, 0x81,
R0297J_CTRL_5, 0x00,
R0297J_CTRL_6, 0x00,
R0297J_CTRL_7, 0x00,
R0297J_CTRL_9, 0x00,
R0297J_CTRL_10, 0x1f,
R0297J_CTRL_11, 0x00,
R0297J_CTRL_12, 0x00,
0x00
};
const U8 FECB_QAM64_TDEE4[] =
{
R0297J_EQU_0, 0x48,
R0297J_EQU_1, 0xa7,
R0297J_EQU_3, 0x00,
R0297J_EQU_4, 0x16,
R0297J_EQU_5, 0x7a,
R0297J_EQU_6, 0x00,
R0297J_INITDEM_0, 0xf5,
R0297J_INITDEM_1, 0xb8,
R0297J_INITDEM_2, 0x00,
R0297J_INITDEM_3, 0x00,
R0297J_INITDEM_4, 0x40,
R0297J_INITDEM_5, 0x88,
R0297J_DELAGC_0, 0xff,
R0297J_DELAGC_1, 0x3f,
R0297J_DELAGC_2, 0xff,
R0297J_DELAGC_3, 0x4c,
R0297J_DELAGC_4, 0x29,
R0297J_DELAGC_5, 0x8c,
R0297J_DELAGC_6, 0x80,
R0297J_DELAGC_7, 0x70,
R0297J_WBAGC_0, 0xd4,
R0297J_WBAGC_1, 0x20,
R0297J_WBAGC_2, 0x1c,
R0297J_WBAGC_3, 0x18,
R0297J_WBAGC_4, 0x3f,
R0297J_WBAGC_5, 0x0d,
R0297J_WBAGC_6, 0x80,
R0297J_WBAGC_7, 0x12,
R0297J_STLOOP_1, 0x06,
R0297J_STLOOP_2, 0x00,
R0297J_STLOOP_3, 0x06,
R0297J_STLOOP_4, 0x30,
R0297J_STLOOP_5, 0xfa,
R0297J_STLOOP_6, 0xee,
R0297J_STLOOP_7, 0xe3,
R0297J_STLOOP_8, 0x19,
R0297J_STLOOP_9, 0x1e,
R0297J_STLOOP_10, 0x84,
R0297J_CRL_1, 0x48,
R0297J_CRL_2, 0x0b,
R0297J_CRL_3, 0x00,
R0297J_CRL_4, 0xd1,
R0297J_CRL_5, 0x00,
R0297J_CRL_6, 0x00,
R0297J_CRL_7, 0x00,
R0297J_CRL_8, 0x00,
R0297J_CRL_9, 0xa0,
R0297J_CRL_10, 0x51,
R0297J_CRL_11, 0xfa,
R0297J_CRL_12, 0x0f,
R0297J_CRL_13, 0x00,
R0297J_CRL_14, 0x00,
R0297J_PMFAGC_0, 0xff,
R0297J_PMFAGC_1, 0x0f,
R0297J_PMFAGC_2, 0x10,
R0297J_PMFAGC_3, 0x00,
R0297J_PMFAGC_4, 0x00,
R0297J_PMFAGC_5, 0x00,
R0297J_INTER_0, 0xff,
R0297J_INTER_1, 0xff,
R0297J_SIG_FAD_0, 0x17,
R0297J_SIG_FAD_2, 0x1e,
R0297J_SIG_FAD_3, 0x37,
R0297J_NEW_CRL_0, 0x04,
R0297J_NEW_CRL_1, 0x08,
R0297J_NEW_CRL_2, 0x02,
R0297J_NEW_CRL_3, 0x05,
R0297J_NEW_CRL_4, 0x02,
R0297J_NEW_CRL_5, 0x05,
R0297J_NEW_CRL_6, 0x09,
R0297J_FREQ_0, 0x82,
R0297J_FREQ_1, 0x6b,
R0297J_FREQ_2, 0x05,
R0297J_FREQ_3, 0x06,
R0297J_FREQ_4, 0x07,
R0297J_FREQ_5, 0xf0,
R0297J_FREQ_6, 0x00,
R0297J_FREQ_7, 0x50,
R0297J_FREQ_11, 0x22,
R0297J_FREQ_12, 0xb4,
R0297J_FREQ_13, 0x00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -