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