cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

stv0900_init.h (19289B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * stv0900_init.h
      4 *
      5 * Driver for ST STV0900 satellite demodulator IC.
      6 *
      7 * Copyright (C) ST Microelectronics.
      8 * Copyright (C) 2009 NetUP Inc.
      9 * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
     10 */
     11
     12#ifndef STV0900_INIT_H
     13#define STV0900_INIT_H
     14
     15#include "stv0900_priv.h"
     16
     17/* DVBS2 C/N Look-Up table */
     18static const struct stv0900_table stv0900_s2_cn = {
     19	55,
     20	{
     21		{ -30,	13348 }, /*C/N=-3dB*/
     22		{ -20,	12640 }, /*C/N=-2dB*/
     23		{ -10,	11883 }, /*C/N=-1dB*/
     24		{ 0,	11101 }, /*C/N=-0dB*/
     25		{ 5,	10718 }, /*C/N=0.5dB*/
     26		{ 10,	10339 }, /*C/N=1.0dB*/
     27		{ 15,	9947 }, /*C/N=1.5dB*/
     28		{ 20,	9552 }, /*C/N=2.0dB*/
     29		{ 25,	9183 }, /*C/N=2.5dB*/
     30		{ 30,	8799 }, /*C/N=3.0dB*/
     31		{ 35,	8422 }, /*C/N=3.5dB*/
     32		{ 40,	8062 }, /*C/N=4.0dB*/
     33		{ 45,	7707 }, /*C/N=4.5dB*/
     34		{ 50,	7353 }, /*C/N=5.0dB*/
     35		{ 55,	7025 }, /*C/N=5.5dB*/
     36		{ 60,	6684 }, /*C/N=6.0dB*/
     37		{ 65,	6331 }, /*C/N=6.5dB*/
     38		{ 70,	6036 }, /*C/N=7.0dB*/
     39		{ 75,	5727 }, /*C/N=7.5dB*/
     40		{ 80,	5437 }, /*C/N=8.0dB*/
     41		{ 85,	5164 }, /*C/N=8.5dB*/
     42		{ 90,	4902 }, /*C/N=9.0dB*/
     43		{ 95,	4653 }, /*C/N=9.5dB*/
     44		{ 100,	4408 }, /*C/N=10.0dB*/
     45		{ 105,	4187 }, /*C/N=10.5dB*/
     46		{ 110,	3961 }, /*C/N=11.0dB*/
     47		{ 115,	3751 }, /*C/N=11.5dB*/
     48		{ 120,	3558 }, /*C/N=12.0dB*/
     49		{ 125,	3368 }, /*C/N=12.5dB*/
     50		{ 130,	3191 }, /*C/N=13.0dB*/
     51		{ 135,	3017 }, /*C/N=13.5dB*/
     52		{ 140,	2862 }, /*C/N=14.0dB*/
     53		{ 145,	2710 }, /*C/N=14.5dB*/
     54		{ 150,	2565 }, /*C/N=15.0dB*/
     55		{ 160,	2300 }, /*C/N=16.0dB*/
     56		{ 170,	2058 }, /*C/N=17.0dB*/
     57		{ 180,	1849 }, /*C/N=18.0dB*/
     58		{ 190,	1663 }, /*C/N=19.0dB*/
     59		{ 200,	1495 }, /*C/N=20.0dB*/
     60		{ 210,	1349 }, /*C/N=21.0dB*/
     61		{ 220,	1222 }, /*C/N=22.0dB*/
     62		{ 230,	1110 }, /*C/N=23.0dB*/
     63		{ 240,	1011 }, /*C/N=24.0dB*/
     64		{ 250,	925 }, /*C/N=25.0dB*/
     65		{ 260,	853 }, /*C/N=26.0dB*/
     66		{ 270,	789 }, /*C/N=27.0dB*/
     67		{ 280,	734 }, /*C/N=28.0dB*/
     68		{ 290,	690 }, /*C/N=29.0dB*/
     69		{ 300,	650 }, /*C/N=30.0dB*/
     70		{ 310,	619 }, /*C/N=31.0dB*/
     71		{ 320,	593 }, /*C/N=32.0dB*/
     72		{ 330,	571 }, /*C/N=33.0dB*/
     73		{ 400,	498 }, /*C/N=40.0dB*/
     74		{ 450,	484 }, /*C/N=45.0dB*/
     75		{ 500,	481 }  /*C/N=50.0dB*/
     76	}
     77};
     78
     79/* RF level C/N Look-Up table */
     80static const struct stv0900_table stv0900_rf = {
     81	14,
     82	{
     83		{ -5, 0xCAA1 }, /*-5dBm*/
     84		{ -10, 0xC229 }, /*-10dBm*/
     85		{ -15, 0xBB08 }, /*-15dBm*/
     86		{ -20, 0xB4BC }, /*-20dBm*/
     87		{ -25, 0xAD5A }, /*-25dBm*/
     88		{ -30, 0xA298 }, /*-30dBm*/
     89		{ -35, 0x98A8 }, /*-35dBm*/
     90		{ -40, 0x8389 }, /*-40dBm*/
     91		{ -45, 0x59BE }, /*-45dBm*/
     92		{ -50, 0x3A14 }, /*-50dBm*/
     93		{ -55, 0x2D11 }, /*-55dBm*/
     94		{ -60, 0x210D }, /*-60dBm*/
     95		{ -65, 0xA14F }, /*-65dBm*/
     96		{ -70, 0x7AA }	/*-70dBm*/
     97	}
     98};
     99
    100struct stv0900_car_loop_optim {
    101	enum fe_stv0900_modcode modcode;
    102	u8 car_loop_pilots_on_2;
    103	u8 car_loop_pilots_off_2;
    104	u8 car_loop_pilots_on_5;
    105	u8 car_loop_pilots_off_5;
    106	u8 car_loop_pilots_on_10;
    107	u8 car_loop_pilots_off_10;
    108	u8 car_loop_pilots_on_20;
    109	u8 car_loop_pilots_off_20;
    110	u8 car_loop_pilots_on_30;
    111	u8 car_loop_pilots_off_30;
    112
    113};
    114
    115struct stv0900_short_frames_car_loop_optim {
    116	enum fe_stv0900_modulation modulation;
    117	u8 car_loop_cut12_2;    /* Cut 1.2,   SR<=3msps     */
    118	u8 car_loop_cut20_2;    /* Cut 2.0,   SR<3msps      */
    119	u8 car_loop_cut12_5;    /* Cut 1.2,   3<SR<=7msps   */
    120	u8 car_loop_cut20_5;    /* Cut 2.0,   3<SR<=7msps   */
    121	u8 car_loop_cut12_10;   /* Cut 1.2,   7<SR<=15msps  */
    122	u8 car_loop_cut20_10;   /* Cut 2.0,   7<SR<=15msps  */
    123	u8 car_loop_cut12_20;   /* Cut 1.2,   10<SR<=25msps */
    124	u8 car_loop_cut20_20;   /* Cut 2.0,   10<SR<=25msps */
    125	u8 car_loop_cut12_30;   /* Cut 1.2,   25<SR<=45msps */
    126	u8 car_loop_cut20_30;   /* Cut 2.0,   10<SR<=45msps */
    127
    128};
    129
    130struct stv0900_short_frames_car_loop_optim_vs_mod {
    131	enum fe_stv0900_modulation modulation;
    132	u8 car_loop_2;	  /* SR<3msps      */
    133	u8 car_loop_5;	  /* 3<SR<=7msps   */
    134	u8 car_loop_10;   /* 7<SR<=15msps  */
    135	u8 car_loop_20;   /* 10<SR<=25msps */
    136	u8 car_loop_30;   /* 10<SR<=45msps */
    137};
    138
    139/* Cut 1.x Tracking carrier loop carrier QPSK 1/2 to 8PSK 9/10 long Frame */
    140static const struct stv0900_car_loop_optim FE_STV0900_S2CarLoop[14] = {
    141	/*Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    142				10MPoff	20MPon	20MPoff	30MPon	30MPoff */
    143	{ STV0900_QPSK_12,	0x1C,	0x0D,	0x1B,	0x2C,	0x3A,
    144				0x1C,	0x2A,	0x3B,	0x2A,	0x1B },
    145	{ STV0900_QPSK_35,	0x2C,	0x0D,	0x2B,	0x2C,	0x3A,
    146				0x0C,	0x3A,	0x2B,	0x2A,	0x0B },
    147	{ STV0900_QPSK_23,	0x2C,	0x0D,	0x2B,	0x2C,	0x0B,
    148				0x0C,	0x3A,	0x1B,	0x2A,	0x3A },
    149	{ STV0900_QPSK_34,	0x3C,	0x0D,	0x3B,	0x1C,	0x0B,
    150				0x3B,	0x3A,	0x0B,	0x2A,	0x3A },
    151	{ STV0900_QPSK_45,	0x3C,	0x0D,	0x3B,	0x1C,	0x0B,
    152				0x3B,	0x3A,	0x0B,	0x2A,	0x3A },
    153	{ STV0900_QPSK_56,	0x0D,	0x0D,	0x3B,	0x1C,	0x0B,
    154				0x3B,	0x3A,	0x0B,	0x2A,	0x3A },
    155	{ STV0900_QPSK_89,	0x0D,	0x0D,	0x3B,	0x1C,	0x1B,
    156				0x3B,	0x3A,	0x0B,	0x2A,	0x3A },
    157	{ STV0900_QPSK_910,	0x1D,	0x0D,	0x3B,	0x1C,	0x1B,
    158				0x3B,	0x3A,	0x0B,	0x2A,	0x3A },
    159	{ STV0900_8PSK_35,	0x29,	0x3B,	0x09,	0x2B,	0x38,
    160				0x0B,	0x18,	0x1A,	0x08,	0x0A },
    161	{ STV0900_8PSK_23,	0x0A,	0x3B,	0x29,	0x2B,	0x19,
    162				0x0B,	0x38,	0x1A,	0x18,	0x0A },
    163	{ STV0900_8PSK_34,	0x3A,	0x3B,	0x2A,	0x2B,	0x39,
    164				0x0B,	0x19,	0x1A,	0x38,	0x0A },
    165	{ STV0900_8PSK_56,	0x1B,	0x3B,	0x0B,	0x2B,	0x1A,
    166				0x0B,	0x39,	0x1A,	0x19,	0x0A },
    167	{ STV0900_8PSK_89,	0x3B,	0x3B,	0x0B,	0x2B,	0x2A,
    168				0x0B,	0x39,	0x1A,	0x29,	0x39 },
    169	{ STV0900_8PSK_910,	0x3B,	0x3B,	0x0B,	0x2B,	0x2A,
    170				0x0B,	0x39,	0x1A,	0x29,	0x39 }
    171};
    172
    173
    174/* Cut 2.0 Tracking carrier loop carrier QPSK 1/2 to 8PSK 9/10 long Frame */
    175static const struct stv0900_car_loop_optim FE_STV0900_S2CarLoopCut20[14] = {
    176	/* Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    177				10MPoff	20MPon	20MPoff	30MPon	30MPoff */
    178	{ STV0900_QPSK_12,	0x1F,	0x3F,	0x1E,	0x3F,	0x3D,
    179				0x1F,	0x3D,	0x3E,	0x3D,	0x1E },
    180	{ STV0900_QPSK_35,	0x2F,	0x3F,	0x2E,	0x2F,	0x3D,
    181				0x0F,	0x0E,	0x2E,	0x3D,	0x0E },
    182	{ STV0900_QPSK_23,	0x2F,	0x3F,	0x2E,	0x2F,	0x0E,
    183				0x0F,	0x0E,	0x1E,	0x3D,	0x3D },
    184	{ STV0900_QPSK_34,	0x3F,	0x3F,	0x3E,	0x1F,	0x0E,
    185				0x3E,	0x0E,	0x1E,	0x3D,	0x3D },
    186	{ STV0900_QPSK_45,	0x3F,	0x3F,	0x3E,	0x1F,	0x0E,
    187				0x3E,	0x0E,	0x1E,	0x3D,	0x3D },
    188	{ STV0900_QPSK_56,	0x3F,	0x3F,	0x3E,	0x1F,	0x0E,
    189				0x3E,	0x0E,	0x1E,	0x3D,	0x3D },
    190	{ STV0900_QPSK_89,	0x3F,	0x3F,	0x3E,	0x1F,	0x1E,
    191				0x3E,	0x0E,	0x1E,	0x3D,	0x3D },
    192	{ STV0900_QPSK_910,	0x3F,	0x3F,	0x3E,	0x1F,	0x1E,
    193				0x3E,	0x0E,	0x1E,	0x3D,	0x3D },
    194	{ STV0900_8PSK_35,	0x3c,	0x0c,	0x1c,	0x3b,	0x0c,
    195				0x3b,	0x2b,	0x2b,	0x1b,	0x2b },
    196	{ STV0900_8PSK_23,	0x1d,	0x0c,	0x3c,	0x0c,	0x2c,
    197				0x3b,	0x0c,	0x2b,	0x2b,	0x2b },
    198	{ STV0900_8PSK_34,	0x0e,	0x1c,	0x3d,	0x0c,	0x0d,
    199				0x3b,	0x2c,	0x3b,	0x0c,	0x2b },
    200	{ STV0900_8PSK_56,	0x2e,	0x3e,	0x1e,	0x2e,	0x2d,
    201				0x1e,	0x3c,	0x2d,	0x2c,	0x1d },
    202	{ STV0900_8PSK_89,	0x3e,	0x3e,	0x1e,	0x2e,	0x3d,
    203				0x1e,	0x0d,	0x2d,	0x3c,	0x1d },
    204	{ STV0900_8PSK_910,	0x3e,	0x3e,	0x1e,	0x2e,	0x3d,
    205				0x1e,	0x1d,	0x2d,	0x0d,	0x1d },
    206};
    207
    208
    209
    210/* Cut 2.0 Tracking carrier loop carrier 16APSK 2/3 to 32APSK 9/10 long Frame */
    211static const struct stv0900_car_loop_optim FE_STV0900_S2APSKCarLoopCut20[11] = {
    212	/* Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    213				10MPoff	20MPon	20MPoff	30MPon	30MPoff */
    214	{ STV0900_16APSK_23,	0x0C,	0x0C,	0x0C,	0x0C,	0x1D,
    215				0x0C,	0x3C,	0x0C,	0x2C,	0x0C },
    216	{ STV0900_16APSK_34,	0x0C,	0x0C,	0x0C,	0x0C,	0x0E,
    217				0x0C,	0x2D,	0x0C,	0x1D,	0x0C },
    218	{ STV0900_16APSK_45,	0x0C,	0x0C,	0x0C,	0x0C,	0x1E,
    219				0x0C,	0x3D,	0x0C,	0x2D,	0x0C },
    220	{ STV0900_16APSK_56,	0x0C,	0x0C,	0x0C,	0x0C,	0x1E,
    221				0x0C,	0x3D,	0x0C,	0x2D,	0x0C },
    222	{ STV0900_16APSK_89,	0x0C,	0x0C,	0x0C,	0x0C,	0x2E,
    223				0x0C,	0x0E,	0x0C,	0x3D,	0x0C },
    224	{ STV0900_16APSK_910,	0x0C,	0x0C,	0x0C,	0x0C,	0x2E,
    225				0x0C,	0x0E,	0x0C,	0x3D,	0x0C },
    226	{ STV0900_32APSK_34,	0x0C,	0x0C,	0x0C,	0x0C,	0x0C,
    227				0x0C,	0x0C,	0x0C,	0x0C,	0x0C },
    228	{ STV0900_32APSK_45,	0x0C,	0x0C,	0x0C,	0x0C,	0x0C,
    229				0x0C,	0x0C,	0x0C,	0x0C,	0x0C },
    230	{ STV0900_32APSK_56,	0x0C,	0x0C,	0x0C,	0x0C,	0x0C,
    231				0x0C,	0x0C,	0x0C,	0x0C,	0x0C },
    232	{ STV0900_32APSK_89,	0x0C,	0x0C,	0x0C,	0x0C,	0x0C,
    233				0x0C,	0x0C,	0x0C,	0x0C,	0x0C },
    234	{ STV0900_32APSK_910,	0x0C,	0x0C,	0x0C,	0x0C,	0x0C,
    235				0x0C,	0x0C,	0x0C,	0x0C,	0x0C },
    236};
    237
    238
    239/* Cut 2.0 Tracking carrier loop carrier QPSK 1/4 to QPSK 2/5 long Frame */
    240static const struct stv0900_car_loop_optim FE_STV0900_S2LowQPCarLoopCut20[3] = {
    241	/* Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    242				10MPoff	20MPon	20MPoff	30MPon	30MPoff */
    243	{ STV0900_QPSK_14,	0x0F,	0x3F,	0x0E,	0x3F,	0x2D,
    244				0x2F,	0x2D,	0x1F,	0x3D,	0x3E },
    245	{ STV0900_QPSK_13,	0x0F,	0x3F,	0x0E,	0x3F,	0x2D,
    246				0x2F,	0x3D,	0x0F,	0x3D,	0x2E },
    247	{ STV0900_QPSK_25,	0x1F,	0x3F,	0x1E,	0x3F,	0x3D,
    248				0x1F,	0x3D,	0x3E,	0x3D,	0x2E }
    249};
    250
    251
    252/* Cut 2.0 Tracking carrier loop carrier  short Frame, cut 1.2 and 2.0 */
    253static const
    254struct stv0900_short_frames_car_loop_optim FE_STV0900_S2ShortCarLoop[4] = {
    255	/*Mod		2Mcut1.2 2Mcut2.0 5Mcut1.2 5Mcut2.0 10Mcut1.2
    256			10Mcut2.0 20Mcut1.2 20M_cut2.0 30Mcut1.2 30Mcut2.0*/
    257	{ STV0900_QPSK,		0x3C,	0x2F,	0x2B,	0x2E,	0x0B,
    258				0x0E,	0x3A,	0x0E,	0x2A,	0x3D },
    259	{ STV0900_8PSK,		0x0B,	0x3E,	0x2A,	0x0E,	0x0A,
    260				0x2D,	0x19,	0x0D,	0x09,	0x3C },
    261	{ STV0900_16APSK,	0x1B,	0x1E,	0x1B,	0x1E,	0x1B,
    262				0x1E,	0x3A,	0x3D,	0x2A,	0x2D },
    263	{ STV0900_32APSK,	0x1B,	0x1E,	0x1B,	0x1E,	0x1B,
    264				0x1E,	0x3A,	0x3D,	0x2A,	0x2D }
    265};
    266
    267static	const struct stv0900_car_loop_optim FE_STV0900_S2CarLoopCut30[14] = {
    268	/*Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    269				10MPoff	20MPon	20MPoff	30MPon	30MPoff	*/
    270	{ STV0900_QPSK_12,	0x3C,	0x2C,	0x0C,	0x2C,	0x1B,
    271				0x2C,	0x1B,	0x1C,	0x0B,	0x3B },
    272	{ STV0900_QPSK_35,	0x0D,	0x0D,	0x0C,	0x0D,	0x1B,
    273				0x3C,	0x1B,	0x1C,	0x0B,	0x3B },
    274	{ STV0900_QPSK_23,	0x1D,	0x0D,	0x0C,	0x1D,	0x2B,
    275				0x3C,	0x1B,	0x1C,	0x0B,	0x3B },
    276	{ STV0900_QPSK_34,	0x1D,	0x1D,	0x0C,	0x1D,	0x2B,
    277				0x3C,	0x1B,	0x1C,	0x0B,	0x3B },
    278	{ STV0900_QPSK_45,	0x2D,	0x1D,	0x1C,	0x1D,	0x2B,
    279				0x3C,	0x2B,	0x0C,	0x1B,	0x3B },
    280	{ STV0900_QPSK_56,	0x2D,	0x1D,	0x1C,	0x1D,	0x2B,
    281				0x3C,	0x2B,	0x0C,	0x1B,	0x3B },
    282	{ STV0900_QPSK_89,	0x3D,	0x2D,	0x1C,	0x1D,	0x3B,
    283				0x3C,	0x2B,	0x0C,	0x1B,	0x3B },
    284	{ STV0900_QPSK_910,	0x3D,	0x2D,	0x1C,	0x1D,	0x3B,
    285				0x3C,	0x2B,	0x0C,	0x1B,	0x3B },
    286	{ STV0900_8PSK_35,	0x39,	0x19,	0x39,	0x19,	0x19,
    287				0x19,	0x19,	0x19,	0x09,	0x19 },
    288	{ STV0900_8PSK_23,	0x2A,	0x39,	0x1A,	0x0A,	0x39,
    289				0x0A,	0x29,	0x39,	0x29,	0x0A },
    290	{ STV0900_8PSK_34,	0x0B,	0x3A,	0x0B,	0x0B,	0x3A,
    291				0x1B,	0x1A,	0x0B,	0x1A,	0x3A },
    292	{ STV0900_8PSK_56,	0x0C,	0x1B,	0x3B,	0x2B,	0x1B,
    293				0x3B,	0x3A,	0x3B,	0x3A,	0x1B },
    294	{ STV0900_8PSK_89,	0x2C,	0x2C,	0x2C,	0x1C,	0x2B,
    295				0x0C,	0x0B,	0x3B,	0x0B,	0x1B },
    296	{ STV0900_8PSK_910,	0x2C,	0x3C,	0x2C,	0x1C,	0x3B,
    297				0x1C,	0x0B,	0x3B,	0x0B,	0x1B }
    298};
    299
    300static	const
    301struct stv0900_car_loop_optim FE_STV0900_S2APSKCarLoopCut30[11] = {
    302	/*Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    303				10MPoff	20MPon	20MPoff	30MPon	30MPoff	*/
    304	{ STV0900_16APSK_23,	0x0A,	0x0A,	0x0A,	0x0A,	0x1A,
    305				0x0A,	0x3A,	0x0A,	0x2A,	0x0A },
    306	{ STV0900_16APSK_34,	0x0A,	0x0A,	0x0A,	0x0A,	0x0B,
    307				0x0A,	0x3B,	0x0A,	0x1B,	0x0A },
    308	{ STV0900_16APSK_45,	0x0A,	0x0A,	0x0A,	0x0A,	0x1B,
    309				0x0A,	0x3B,	0x0A,	0x2B,	0x0A },
    310	{ STV0900_16APSK_56,	0x0A,	0x0A,	0x0A,	0x0A,	0x1B,
    311				0x0A,	0x3B,	0x0A,	0x2B,	0x0A },
    312	{ STV0900_16APSK_89,	0x0A,	0x0A,	0x0A,	0x0A,	0x2B,
    313				0x0A,	0x0C,	0x0A,	0x3B,	0x0A },
    314	{ STV0900_16APSK_910,	0x0A,	0x0A,	0x0A,	0x0A,	0x2B,
    315				0x0A,	0x0C,	0x0A,	0x3B,	0x0A },
    316	{ STV0900_32APSK_34,	0x0A,	0x0A,	0x0A,	0x0A,	0x0A,
    317				0x0A,	0x0A,	0x0A,	0x0A,	0x0A },
    318	{ STV0900_32APSK_45,	0x0A,	0x0A,	0x0A,	0x0A,	0x0A,
    319				0x0A,	0x0A,	0x0A,	0x0A,	0x0A },
    320	{ STV0900_32APSK_56,	0x0A,	0x0A,	0x0A,	0x0A,	0x0A,
    321				0x0A,	0x0A,	0x0A,	0x0A,	0x0A },
    322	{ STV0900_32APSK_89,	0x0A,	0x0A,	0x0A,	0x0A,	0x0A,
    323				0x0A,	0x0A,	0x0A,	0x0A,	0x0A },
    324	{ STV0900_32APSK_910,	0x0A,	0x0A,	0x0A,	0x0A,	0x0A,
    325				0x0A,	0x0A,	0x0A,	0x0A,	0x0A }
    326};
    327
    328static	const
    329struct stv0900_car_loop_optim FE_STV0900_S2LowQPCarLoopCut30[3] = {
    330	/*Modcod		2MPon	2MPoff	5MPon	5MPoff	10MPon
    331				10MPoff	20MPon	20MPoff	30MPon	30MPoff*/
    332	{ STV0900_QPSK_14,	0x0C,	0x3C,	0x0B,	0x3C,	0x2A,
    333				0x2C,	0x2A,	0x1C,	0x3A,	0x3B },
    334	{ STV0900_QPSK_13,	0x0C,	0x3C,	0x0B,	0x3C,	0x2A,
    335				0x2C,	0x3A,	0x0C,	0x3A,	0x2B },
    336	{ STV0900_QPSK_25,	0x1C,	0x3C,	0x1B,	0x3C,	0x3A,
    337				0x1C,	0x3A,	0x3B,	0x3A,	0x2B }
    338};
    339
    340static	const struct stv0900_short_frames_car_loop_optim_vs_mod
    341FE_STV0900_S2ShortCarLoopCut30[4] = {
    342	/*Mod		2Mcut3.0 5Mcut3.0 10Mcut3.0 20Mcut3.0 30Mcut3.0*/
    343	{ STV0900_QPSK,		0x2C,	0x2B,	0x0B,	0x0B,	0x3A },
    344	{ STV0900_8PSK,		0x3B,	0x0B,	0x2A,	0x0A,	0x39 },
    345	{ STV0900_16APSK,	0x1B,	0x1B,	0x1B,	0x3A,	0x2A },
    346	{ STV0900_32APSK,	0x1B,	0x1B,	0x1B,	0x3A,	0x2A },
    347
    348};
    349
    350static const u16 STV0900_InitVal[181][2] = {
    351	{ R0900_OUTCFG		, 0x00	},
    352	{ R0900_AGCRF1CFG	, 0x11	},
    353	{ R0900_AGCRF2CFG	, 0x13	},
    354	{ R0900_TSGENERAL1X	, 0x14	},
    355	{ R0900_TSTTNR2		, 0x21	},
    356	{ R0900_TSTTNR4		, 0x21	},
    357	{ R0900_P2_DISTXCTL	, 0x22	},
    358	{ R0900_P2_F22TX	, 0xc0	},
    359	{ R0900_P2_F22RX	, 0xc0	},
    360	{ R0900_P2_DISRXCTL	, 0x00	},
    361	{ R0900_P2_TNRSTEPS	, 0x87	},
    362	{ R0900_P2_TNRGAIN	, 0x09	},
    363	{ R0900_P2_DMDCFGMD	, 0xF9	},
    364	{ R0900_P2_DEMOD	, 0x08	},
    365	{ R0900_P2_DMDCFG3	, 0xc4	},
    366	{ R0900_P2_CARFREQ	, 0xed	},
    367	{ R0900_P2_TNRCFG2	, 0x02	},
    368	{ R0900_P2_TNRCFG3	, 0x02	},
    369	{ R0900_P2_LDT		, 0xd0	},
    370	{ R0900_P2_LDT2		, 0xb8	},
    371	{ R0900_P2_TMGCFG	, 0xd2	},
    372	{ R0900_P2_TMGTHRISE	, 0x20	},
    373	{ R0900_P2_TMGTHFALL	, 0x00	},
    374	{ R0900_P2_FECSPY	, 0x88	},
    375	{ R0900_P2_FSPYDATA	, 0x3a	},
    376	{ R0900_P2_FBERCPT4	, 0x00	},
    377	{ R0900_P2_FSPYBER	, 0x10	},
    378	{ R0900_P2_ERRCTRL1	, 0x35	},
    379	{ R0900_P2_ERRCTRL2	, 0xc1	},
    380	{ R0900_P2_CFRICFG	, 0xf8	},
    381	{ R0900_P2_NOSCFG	, 0x1c	},
    382	{ R0900_P2_DMDT0M	, 0x20	},
    383	{ R0900_P2_CORRELMANT	, 0x70	},
    384	{ R0900_P2_CORRELABS	, 0x88	},
    385	{ R0900_P2_AGC2O	, 0x5b	},
    386	{ R0900_P2_AGC2REF	, 0x38	},
    387	{ R0900_P2_CARCFG	, 0xe4	},
    388	{ R0900_P2_ACLC		, 0x1A	},
    389	{ R0900_P2_BCLC		, 0x09	},
    390	{ R0900_P2_CARHDR	, 0x08	},
    391	{ R0900_P2_KREFTMG	, 0xc1	},
    392	{ R0900_P2_SFRUPRATIO	, 0xf0	},
    393	{ R0900_P2_SFRLOWRATIO	, 0x70	},
    394	{ R0900_P2_SFRSTEP	, 0x58	},
    395	{ R0900_P2_TMGCFG2	, 0x01	},
    396	{ R0900_P2_CAR2CFG	, 0x26	},
    397	{ R0900_P2_BCLC2S2Q	, 0x86	},
    398	{ R0900_P2_BCLC2S28	, 0x86	},
    399	{ R0900_P2_SMAPCOEF7	, 0x77	},
    400	{ R0900_P2_SMAPCOEF6	, 0x85	},
    401	{ R0900_P2_SMAPCOEF5	, 0x77	},
    402	{ R0900_P2_TSCFGL	, 0x20	},
    403	{ R0900_P2_DMDCFG2	, 0x3b	},
    404	{ R0900_P2_MODCODLST0	, 0xff	},
    405	{ R0900_P2_MODCODLST1	, 0xff	},
    406	{ R0900_P2_MODCODLST2	, 0xff	},
    407	{ R0900_P2_MODCODLST3	, 0xff	},
    408	{ R0900_P2_MODCODLST4	, 0xff	},
    409	{ R0900_P2_MODCODLST5	, 0xff	},
    410	{ R0900_P2_MODCODLST6	, 0xff	},
    411	{ R0900_P2_MODCODLST7	, 0xcc	},
    412	{ R0900_P2_MODCODLST8	, 0xcc	},
    413	{ R0900_P2_MODCODLST9	, 0xcc	},
    414	{ R0900_P2_MODCODLSTA	, 0xcc	},
    415	{ R0900_P2_MODCODLSTB	, 0xcc	},
    416	{ R0900_P2_MODCODLSTC	, 0xcc	},
    417	{ R0900_P2_MODCODLSTD	, 0xcc	},
    418	{ R0900_P2_MODCODLSTE	, 0xcc	},
    419	{ R0900_P2_MODCODLSTF	, 0xcf	},
    420	{ R0900_P1_DISTXCTL	, 0x22	},
    421	{ R0900_P1_F22TX	, 0xc0	},
    422	{ R0900_P1_F22RX	, 0xc0	},
    423	{ R0900_P1_DISRXCTL	, 0x00	},
    424	{ R0900_P1_TNRSTEPS	, 0x87	},
    425	{ R0900_P1_TNRGAIN	, 0x09	},
    426	{ R0900_P1_DMDCFGMD	, 0xf9	},
    427	{ R0900_P1_DEMOD	, 0x08	},
    428	{ R0900_P1_DMDCFG3	, 0xc4	},
    429	{ R0900_P1_DMDT0M	, 0x20	},
    430	{ R0900_P1_CARFREQ	, 0xed	},
    431	{ R0900_P1_TNRCFG2	, 0x82	},
    432	{ R0900_P1_TNRCFG3	, 0x02	},
    433	{ R0900_P1_LDT		, 0xd0	},
    434	{ R0900_P1_LDT2		, 0xb8	},
    435	{ R0900_P1_TMGCFG	, 0xd2	},
    436	{ R0900_P1_TMGTHRISE	, 0x20	},
    437	{ R0900_P1_TMGTHFALL	, 0x00	},
    438	{ R0900_P1_SFRUPRATIO	, 0xf0	},
    439	{ R0900_P1_SFRLOWRATIO	, 0x70	},
    440	{ R0900_P1_TSCFGL	, 0x20	},
    441	{ R0900_P1_FECSPY	, 0x88	},
    442	{ R0900_P1_FSPYDATA	, 0x3a	},
    443	{ R0900_P1_FBERCPT4	, 0x00	},
    444	{ R0900_P1_FSPYBER	, 0x10	},
    445	{ R0900_P1_ERRCTRL1	, 0x35	},
    446	{ R0900_P1_ERRCTRL2	, 0xc1	},
    447	{ R0900_P1_CFRICFG	, 0xf8	},
    448	{ R0900_P1_NOSCFG	, 0x1c	},
    449	{ R0900_P1_CORRELMANT	, 0x70	},
    450	{ R0900_P1_CORRELABS	, 0x88	},
    451	{ R0900_P1_AGC2O	, 0x5b	},
    452	{ R0900_P1_AGC2REF	, 0x38	},
    453	{ R0900_P1_CARCFG	, 0xe4	},
    454	{ R0900_P1_ACLC		, 0x1A	},
    455	{ R0900_P1_BCLC		, 0x09	},
    456	{ R0900_P1_CARHDR	, 0x08	},
    457	{ R0900_P1_KREFTMG	, 0xc1	},
    458	{ R0900_P1_SFRSTEP	, 0x58	},
    459	{ R0900_P1_TMGCFG2	, 0x01	},
    460	{ R0900_P1_CAR2CFG	, 0x26	},
    461	{ R0900_P1_BCLC2S2Q	, 0x86	},
    462	{ R0900_P1_BCLC2S28	, 0x86	},
    463	{ R0900_P1_SMAPCOEF7	, 0x77	},
    464	{ R0900_P1_SMAPCOEF6	, 0x85	},
    465	{ R0900_P1_SMAPCOEF5	, 0x77	},
    466	{ R0900_P1_DMDCFG2	, 0x3b	},
    467	{ R0900_P1_MODCODLST0	, 0xff	},
    468	{ R0900_P1_MODCODLST1	, 0xff	},
    469	{ R0900_P1_MODCODLST2	, 0xff	},
    470	{ R0900_P1_MODCODLST3	, 0xff	},
    471	{ R0900_P1_MODCODLST4	, 0xff	},
    472	{ R0900_P1_MODCODLST5	, 0xff	},
    473	{ R0900_P1_MODCODLST6	, 0xff	},
    474	{ R0900_P1_MODCODLST7	, 0xcc	},
    475	{ R0900_P1_MODCODLST8	, 0xcc	},
    476	{ R0900_P1_MODCODLST9	, 0xcc	},
    477	{ R0900_P1_MODCODLSTA	, 0xcc	},
    478	{ R0900_P1_MODCODLSTB	, 0xcc	},
    479	{ R0900_P1_MODCODLSTC	, 0xcc	},
    480	{ R0900_P1_MODCODLSTD	, 0xcc	},
    481	{ R0900_P1_MODCODLSTE	, 0xcc	},
    482	{ R0900_P1_MODCODLSTF	, 0xcf	},
    483	{ R0900_GENCFG		, 0x1d	},
    484	{ R0900_NBITER_NF4	, 0x37	},
    485	{ R0900_NBITER_NF5	, 0x29	},
    486	{ R0900_NBITER_NF6	, 0x37	},
    487	{ R0900_NBITER_NF7	, 0x33	},
    488	{ R0900_NBITER_NF8	, 0x31	},
    489	{ R0900_NBITER_NF9	, 0x2f	},
    490	{ R0900_NBITER_NF10	, 0x39	},
    491	{ R0900_NBITER_NF11	, 0x3a	},
    492	{ R0900_NBITER_NF12	, 0x29	},
    493	{ R0900_NBITER_NF13	, 0x37	},
    494	{ R0900_NBITER_NF14	, 0x33	},
    495	{ R0900_NBITER_NF15	, 0x2f	},
    496	{ R0900_NBITER_NF16	, 0x39	},
    497	{ R0900_NBITER_NF17	, 0x3a	},
    498	{ R0900_NBITERNOERR	, 0x04	},
    499	{ R0900_GAINLLR_NF4	, 0x0C	},
    500	{ R0900_GAINLLR_NF5	, 0x0F	},
    501	{ R0900_GAINLLR_NF6	, 0x11	},
    502	{ R0900_GAINLLR_NF7	, 0x14	},
    503	{ R0900_GAINLLR_NF8	, 0x17	},
    504	{ R0900_GAINLLR_NF9	, 0x19	},
    505	{ R0900_GAINLLR_NF10	, 0x20	},
    506	{ R0900_GAINLLR_NF11	, 0x21	},
    507	{ R0900_GAINLLR_NF12	, 0x0D	},
    508	{ R0900_GAINLLR_NF13	, 0x0F	},
    509	{ R0900_GAINLLR_NF14	, 0x13	},
    510	{ R0900_GAINLLR_NF15	, 0x1A	},
    511	{ R0900_GAINLLR_NF16	, 0x1F	},
    512	{ R0900_GAINLLR_NF17	, 0x21	},
    513	{ R0900_RCCFG2		, 0x20	},
    514	{ R0900_P1_FECM		, 0x01	}, /*disable DSS modes*/
    515	{ R0900_P2_FECM		, 0x01	}, /*disable DSS modes*/
    516	{ R0900_P1_PRVIT	, 0x2F	}, /*disable puncture rate 6/7*/
    517	{ R0900_P2_PRVIT	, 0x2F	}, /*disable puncture rate 6/7*/
    518	{ R0900_STROUT1CFG	, 0x4c	},
    519	{ R0900_STROUT2CFG	, 0x4c	},
    520	{ R0900_CLKOUT1CFG	, 0x50	},
    521	{ R0900_CLKOUT2CFG	, 0x50	},
    522	{ R0900_DPN1CFG		, 0x4a	},
    523	{ R0900_DPN2CFG		, 0x4a	},
    524	{ R0900_DATA71CFG	, 0x52	},
    525	{ R0900_DATA72CFG	, 0x52	},
    526	{ R0900_P1_TSCFGM	, 0xc0	},
    527	{ R0900_P2_TSCFGM	, 0xc0	},
    528	{ R0900_P1_TSCFGH	, 0xe0	}, /* DVB-CI timings */
    529	{ R0900_P2_TSCFGH	, 0xe0	}, /* DVB-CI timings */
    530	{ R0900_P1_TSSPEED	, 0x40	},
    531	{ R0900_P2_TSSPEED	, 0x40	},
    532};
    533
    534static const u16 STV0900_Cut20_AddOnVal[32][2] = {
    535	{ R0900_P2_DMDCFG3	, 0xe8	},
    536	{ R0900_P2_DMDCFG4	, 0x10	},
    537	{ R0900_P2_CARFREQ	, 0x38	},
    538	{ R0900_P2_CARHDR	, 0x20	},
    539	{ R0900_P2_KREFTMG	, 0x5a	},
    540	{ R0900_P2_SMAPCOEF7	, 0x06	},
    541	{ R0900_P2_SMAPCOEF6	, 0x00	},
    542	{ R0900_P2_SMAPCOEF5	, 0x04	},
    543	{ R0900_P2_NOSCFG	, 0x0c	},
    544	{ R0900_P1_DMDCFG3	, 0xe8	},
    545	{ R0900_P1_DMDCFG4	, 0x10	},
    546	{ R0900_P1_CARFREQ	, 0x38	},
    547	{ R0900_P1_CARHDR	, 0x20	},
    548	{ R0900_P1_KREFTMG	, 0x5a	},
    549	{ R0900_P1_SMAPCOEF7	, 0x06	},
    550	{ R0900_P1_SMAPCOEF6	, 0x00	},
    551	{ R0900_P1_SMAPCOEF5	, 0x04	},
    552	{ R0900_P1_NOSCFG	, 0x0c	},
    553	{ R0900_GAINLLR_NF4	, 0x21	},
    554	{ R0900_GAINLLR_NF5	, 0x21	},
    555	{ R0900_GAINLLR_NF6	, 0x20	},
    556	{ R0900_GAINLLR_NF7	, 0x1F	},
    557	{ R0900_GAINLLR_NF8	, 0x1E	},
    558	{ R0900_GAINLLR_NF9	, 0x1E	},
    559	{ R0900_GAINLLR_NF10	, 0x1D	},
    560	{ R0900_GAINLLR_NF11	, 0x1B	},
    561	{ R0900_GAINLLR_NF12	, 0x20	},
    562	{ R0900_GAINLLR_NF13	, 0x20	},
    563	{ R0900_GAINLLR_NF14	, 0x20	},
    564	{ R0900_GAINLLR_NF15	, 0x20	},
    565	{ R0900_GAINLLR_NF16	, 0x20	},
    566	{ R0900_GAINLLR_NF17	, 0x21	}
    567
    568};
    569
    570#endif