Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * stv0900_init.h
0004  *
0005  * Driver for ST STV0900 satellite demodulator IC.
0006  *
0007  * Copyright (C) ST Microelectronics.
0008  * Copyright (C) 2009 NetUP Inc.
0009  * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
0010  */
0011 
0012 #ifndef STV0900_INIT_H
0013 #define STV0900_INIT_H
0014 
0015 #include "stv0900_priv.h"
0016 
0017 /* DVBS2 C/N Look-Up table */
0018 static const struct stv0900_table stv0900_s2_cn = {
0019     55,
0020     {
0021         { -30,  13348 }, /*C/N=-3dB*/
0022         { -20,  12640 }, /*C/N=-2dB*/
0023         { -10,  11883 }, /*C/N=-1dB*/
0024         { 0,    11101 }, /*C/N=-0dB*/
0025         { 5,    10718 }, /*C/N=0.5dB*/
0026         { 10,   10339 }, /*C/N=1.0dB*/
0027         { 15,   9947 }, /*C/N=1.5dB*/
0028         { 20,   9552 }, /*C/N=2.0dB*/
0029         { 25,   9183 }, /*C/N=2.5dB*/
0030         { 30,   8799 }, /*C/N=3.0dB*/
0031         { 35,   8422 }, /*C/N=3.5dB*/
0032         { 40,   8062 }, /*C/N=4.0dB*/
0033         { 45,   7707 }, /*C/N=4.5dB*/
0034         { 50,   7353 }, /*C/N=5.0dB*/
0035         { 55,   7025 }, /*C/N=5.5dB*/
0036         { 60,   6684 }, /*C/N=6.0dB*/
0037         { 65,   6331 }, /*C/N=6.5dB*/
0038         { 70,   6036 }, /*C/N=7.0dB*/
0039         { 75,   5727 }, /*C/N=7.5dB*/
0040         { 80,   5437 }, /*C/N=8.0dB*/
0041         { 85,   5164 }, /*C/N=8.5dB*/
0042         { 90,   4902 }, /*C/N=9.0dB*/
0043         { 95,   4653 }, /*C/N=9.5dB*/
0044         { 100,  4408 }, /*C/N=10.0dB*/
0045         { 105,  4187 }, /*C/N=10.5dB*/
0046         { 110,  3961 }, /*C/N=11.0dB*/
0047         { 115,  3751 }, /*C/N=11.5dB*/
0048         { 120,  3558 }, /*C/N=12.0dB*/
0049         { 125,  3368 }, /*C/N=12.5dB*/
0050         { 130,  3191 }, /*C/N=13.0dB*/
0051         { 135,  3017 }, /*C/N=13.5dB*/
0052         { 140,  2862 }, /*C/N=14.0dB*/
0053         { 145,  2710 }, /*C/N=14.5dB*/
0054         { 150,  2565 }, /*C/N=15.0dB*/
0055         { 160,  2300 }, /*C/N=16.0dB*/
0056         { 170,  2058 }, /*C/N=17.0dB*/
0057         { 180,  1849 }, /*C/N=18.0dB*/
0058         { 190,  1663 }, /*C/N=19.0dB*/
0059         { 200,  1495 }, /*C/N=20.0dB*/
0060         { 210,  1349 }, /*C/N=21.0dB*/
0061         { 220,  1222 }, /*C/N=22.0dB*/
0062         { 230,  1110 }, /*C/N=23.0dB*/
0063         { 240,  1011 }, /*C/N=24.0dB*/
0064         { 250,  925 }, /*C/N=25.0dB*/
0065         { 260,  853 }, /*C/N=26.0dB*/
0066         { 270,  789 }, /*C/N=27.0dB*/
0067         { 280,  734 }, /*C/N=28.0dB*/
0068         { 290,  690 }, /*C/N=29.0dB*/
0069         { 300,  650 }, /*C/N=30.0dB*/
0070         { 310,  619 }, /*C/N=31.0dB*/
0071         { 320,  593 }, /*C/N=32.0dB*/
0072         { 330,  571 }, /*C/N=33.0dB*/
0073         { 400,  498 }, /*C/N=40.0dB*/
0074         { 450,  484 }, /*C/N=45.0dB*/
0075         { 500,  481 }  /*C/N=50.0dB*/
0076     }
0077 };
0078 
0079 /* RF level C/N Look-Up table */
0080 static const struct stv0900_table stv0900_rf = {
0081     14,
0082     {
0083         { -5, 0xCAA1 }, /*-5dBm*/
0084         { -10, 0xC229 }, /*-10dBm*/
0085         { -15, 0xBB08 }, /*-15dBm*/
0086         { -20, 0xB4BC }, /*-20dBm*/
0087         { -25, 0xAD5A }, /*-25dBm*/
0088         { -30, 0xA298 }, /*-30dBm*/
0089         { -35, 0x98A8 }, /*-35dBm*/
0090         { -40, 0x8389 }, /*-40dBm*/
0091         { -45, 0x59BE }, /*-45dBm*/
0092         { -50, 0x3A14 }, /*-50dBm*/
0093         { -55, 0x2D11 }, /*-55dBm*/
0094         { -60, 0x210D }, /*-60dBm*/
0095         { -65, 0xA14F }, /*-65dBm*/
0096         { -70, 0x7AA }  /*-70dBm*/
0097     }
0098 };
0099 
0100 struct stv0900_car_loop_optim {
0101     enum fe_stv0900_modcode modcode;
0102     u8 car_loop_pilots_on_2;
0103     u8 car_loop_pilots_off_2;
0104     u8 car_loop_pilots_on_5;
0105     u8 car_loop_pilots_off_5;
0106     u8 car_loop_pilots_on_10;
0107     u8 car_loop_pilots_off_10;
0108     u8 car_loop_pilots_on_20;
0109     u8 car_loop_pilots_off_20;
0110     u8 car_loop_pilots_on_30;
0111     u8 car_loop_pilots_off_30;
0112 
0113 };
0114 
0115 struct stv0900_short_frames_car_loop_optim {
0116     enum fe_stv0900_modulation modulation;
0117     u8 car_loop_cut12_2;    /* Cut 1.2,   SR<=3msps     */
0118     u8 car_loop_cut20_2;    /* Cut 2.0,   SR<3msps      */
0119     u8 car_loop_cut12_5;    /* Cut 1.2,   3<SR<=7msps   */
0120     u8 car_loop_cut20_5;    /* Cut 2.0,   3<SR<=7msps   */
0121     u8 car_loop_cut12_10;   /* Cut 1.2,   7<SR<=15msps  */
0122     u8 car_loop_cut20_10;   /* Cut 2.0,   7<SR<=15msps  */
0123     u8 car_loop_cut12_20;   /* Cut 1.2,   10<SR<=25msps */
0124     u8 car_loop_cut20_20;   /* Cut 2.0,   10<SR<=25msps */
0125     u8 car_loop_cut12_30;   /* Cut 1.2,   25<SR<=45msps */
0126     u8 car_loop_cut20_30;   /* Cut 2.0,   10<SR<=45msps */
0127 
0128 };
0129 
0130 struct stv0900_short_frames_car_loop_optim_vs_mod {
0131     enum fe_stv0900_modulation modulation;
0132     u8 car_loop_2;    /* SR<3msps      */
0133     u8 car_loop_5;    /* 3<SR<=7msps   */
0134     u8 car_loop_10;   /* 7<SR<=15msps  */
0135     u8 car_loop_20;   /* 10<SR<=25msps */
0136     u8 car_loop_30;   /* 10<SR<=45msps */
0137 };
0138 
0139 /* Cut 1.x Tracking carrier loop carrier QPSK 1/2 to 8PSK 9/10 long Frame */
0140 static const struct stv0900_car_loop_optim FE_STV0900_S2CarLoop[14] = {
0141     /*Modcod        2MPon   2MPoff  5MPon   5MPoff  10MPon
0142                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
0143     { STV0900_QPSK_12,  0x1C,   0x0D,   0x1B,   0x2C,   0x3A,
0144                 0x1C,   0x2A,   0x3B,   0x2A,   0x1B },
0145     { STV0900_QPSK_35,  0x2C,   0x0D,   0x2B,   0x2C,   0x3A,
0146                 0x0C,   0x3A,   0x2B,   0x2A,   0x0B },
0147     { STV0900_QPSK_23,  0x2C,   0x0D,   0x2B,   0x2C,   0x0B,
0148                 0x0C,   0x3A,   0x1B,   0x2A,   0x3A },
0149     { STV0900_QPSK_34,  0x3C,   0x0D,   0x3B,   0x1C,   0x0B,
0150                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
0151     { STV0900_QPSK_45,  0x3C,   0x0D,   0x3B,   0x1C,   0x0B,
0152                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
0153     { STV0900_QPSK_56,  0x0D,   0x0D,   0x3B,   0x1C,   0x0B,
0154                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
0155     { STV0900_QPSK_89,  0x0D,   0x0D,   0x3B,   0x1C,   0x1B,
0156                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
0157     { STV0900_QPSK_910, 0x1D,   0x0D,   0x3B,   0x1C,   0x1B,
0158                 0x3B,   0x3A,   0x0B,   0x2A,   0x3A },
0159     { STV0900_8PSK_35,  0x29,   0x3B,   0x09,   0x2B,   0x38,
0160                 0x0B,   0x18,   0x1A,   0x08,   0x0A },
0161     { STV0900_8PSK_23,  0x0A,   0x3B,   0x29,   0x2B,   0x19,
0162                 0x0B,   0x38,   0x1A,   0x18,   0x0A },
0163     { STV0900_8PSK_34,  0x3A,   0x3B,   0x2A,   0x2B,   0x39,
0164                 0x0B,   0x19,   0x1A,   0x38,   0x0A },
0165     { STV0900_8PSK_56,  0x1B,   0x3B,   0x0B,   0x2B,   0x1A,
0166                 0x0B,   0x39,   0x1A,   0x19,   0x0A },
0167     { STV0900_8PSK_89,  0x3B,   0x3B,   0x0B,   0x2B,   0x2A,
0168                 0x0B,   0x39,   0x1A,   0x29,   0x39 },
0169     { STV0900_8PSK_910, 0x3B,   0x3B,   0x0B,   0x2B,   0x2A,
0170                 0x0B,   0x39,   0x1A,   0x29,   0x39 }
0171 };
0172 
0173 
0174 /* Cut 2.0 Tracking carrier loop carrier QPSK 1/2 to 8PSK 9/10 long Frame */
0175 static const struct stv0900_car_loop_optim FE_STV0900_S2CarLoopCut20[14] = {
0176     /* Modcod       2MPon   2MPoff  5MPon   5MPoff  10MPon
0177                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
0178     { STV0900_QPSK_12,  0x1F,   0x3F,   0x1E,   0x3F,   0x3D,
0179                 0x1F,   0x3D,   0x3E,   0x3D,   0x1E },
0180     { STV0900_QPSK_35,  0x2F,   0x3F,   0x2E,   0x2F,   0x3D,
0181                 0x0F,   0x0E,   0x2E,   0x3D,   0x0E },
0182     { STV0900_QPSK_23,  0x2F,   0x3F,   0x2E,   0x2F,   0x0E,
0183                 0x0F,   0x0E,   0x1E,   0x3D,   0x3D },
0184     { STV0900_QPSK_34,  0x3F,   0x3F,   0x3E,   0x1F,   0x0E,
0185                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
0186     { STV0900_QPSK_45,  0x3F,   0x3F,   0x3E,   0x1F,   0x0E,
0187                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
0188     { STV0900_QPSK_56,  0x3F,   0x3F,   0x3E,   0x1F,   0x0E,
0189                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
0190     { STV0900_QPSK_89,  0x3F,   0x3F,   0x3E,   0x1F,   0x1E,
0191                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
0192     { STV0900_QPSK_910, 0x3F,   0x3F,   0x3E,   0x1F,   0x1E,
0193                 0x3E,   0x0E,   0x1E,   0x3D,   0x3D },
0194     { STV0900_8PSK_35,  0x3c,   0x0c,   0x1c,   0x3b,   0x0c,
0195                 0x3b,   0x2b,   0x2b,   0x1b,   0x2b },
0196     { STV0900_8PSK_23,  0x1d,   0x0c,   0x3c,   0x0c,   0x2c,
0197                 0x3b,   0x0c,   0x2b,   0x2b,   0x2b },
0198     { STV0900_8PSK_34,  0x0e,   0x1c,   0x3d,   0x0c,   0x0d,
0199                 0x3b,   0x2c,   0x3b,   0x0c,   0x2b },
0200     { STV0900_8PSK_56,  0x2e,   0x3e,   0x1e,   0x2e,   0x2d,
0201                 0x1e,   0x3c,   0x2d,   0x2c,   0x1d },
0202     { STV0900_8PSK_89,  0x3e,   0x3e,   0x1e,   0x2e,   0x3d,
0203                 0x1e,   0x0d,   0x2d,   0x3c,   0x1d },
0204     { STV0900_8PSK_910, 0x3e,   0x3e,   0x1e,   0x2e,   0x3d,
0205                 0x1e,   0x1d,   0x2d,   0x0d,   0x1d },
0206 };
0207 
0208 
0209 
0210 /* Cut 2.0 Tracking carrier loop carrier 16APSK 2/3 to 32APSK 9/10 long Frame */
0211 static const struct stv0900_car_loop_optim FE_STV0900_S2APSKCarLoopCut20[11] = {
0212     /* Modcod       2MPon   2MPoff  5MPon   5MPoff  10MPon
0213                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
0214     { STV0900_16APSK_23,    0x0C,   0x0C,   0x0C,   0x0C,   0x1D,
0215                 0x0C,   0x3C,   0x0C,   0x2C,   0x0C },
0216     { STV0900_16APSK_34,    0x0C,   0x0C,   0x0C,   0x0C,   0x0E,
0217                 0x0C,   0x2D,   0x0C,   0x1D,   0x0C },
0218     { STV0900_16APSK_45,    0x0C,   0x0C,   0x0C,   0x0C,   0x1E,
0219                 0x0C,   0x3D,   0x0C,   0x2D,   0x0C },
0220     { STV0900_16APSK_56,    0x0C,   0x0C,   0x0C,   0x0C,   0x1E,
0221                 0x0C,   0x3D,   0x0C,   0x2D,   0x0C },
0222     { STV0900_16APSK_89,    0x0C,   0x0C,   0x0C,   0x0C,   0x2E,
0223                 0x0C,   0x0E,   0x0C,   0x3D,   0x0C },
0224     { STV0900_16APSK_910,   0x0C,   0x0C,   0x0C,   0x0C,   0x2E,
0225                 0x0C,   0x0E,   0x0C,   0x3D,   0x0C },
0226     { STV0900_32APSK_34,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
0227                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
0228     { STV0900_32APSK_45,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
0229                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
0230     { STV0900_32APSK_56,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
0231                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
0232     { STV0900_32APSK_89,    0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
0233                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
0234     { STV0900_32APSK_910,   0x0C,   0x0C,   0x0C,   0x0C,   0x0C,
0235                 0x0C,   0x0C,   0x0C,   0x0C,   0x0C },
0236 };
0237 
0238 
0239 /* Cut 2.0 Tracking carrier loop carrier QPSK 1/4 to QPSK 2/5 long Frame */
0240 static const struct stv0900_car_loop_optim FE_STV0900_S2LowQPCarLoopCut20[3] = {
0241     /* Modcod       2MPon   2MPoff  5MPon   5MPoff  10MPon
0242                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
0243     { STV0900_QPSK_14,  0x0F,   0x3F,   0x0E,   0x3F,   0x2D,
0244                 0x2F,   0x2D,   0x1F,   0x3D,   0x3E },
0245     { STV0900_QPSK_13,  0x0F,   0x3F,   0x0E,   0x3F,   0x2D,
0246                 0x2F,   0x3D,   0x0F,   0x3D,   0x2E },
0247     { STV0900_QPSK_25,  0x1F,   0x3F,   0x1E,   0x3F,   0x3D,
0248                 0x1F,   0x3D,   0x3E,   0x3D,   0x2E }
0249 };
0250 
0251 
0252 /* Cut 2.0 Tracking carrier loop carrier  short Frame, cut 1.2 and 2.0 */
0253 static const
0254 struct stv0900_short_frames_car_loop_optim FE_STV0900_S2ShortCarLoop[4] = {
0255     /*Mod       2Mcut1.2 2Mcut2.0 5Mcut1.2 5Mcut2.0 10Mcut1.2
0256             10Mcut2.0 20Mcut1.2 20M_cut2.0 30Mcut1.2 30Mcut2.0*/
0257     { STV0900_QPSK,     0x3C,   0x2F,   0x2B,   0x2E,   0x0B,
0258                 0x0E,   0x3A,   0x0E,   0x2A,   0x3D },
0259     { STV0900_8PSK,     0x0B,   0x3E,   0x2A,   0x0E,   0x0A,
0260                 0x2D,   0x19,   0x0D,   0x09,   0x3C },
0261     { STV0900_16APSK,   0x1B,   0x1E,   0x1B,   0x1E,   0x1B,
0262                 0x1E,   0x3A,   0x3D,   0x2A,   0x2D },
0263     { STV0900_32APSK,   0x1B,   0x1E,   0x1B,   0x1E,   0x1B,
0264                 0x1E,   0x3A,   0x3D,   0x2A,   0x2D }
0265 };
0266 
0267 static  const struct stv0900_car_loop_optim FE_STV0900_S2CarLoopCut30[14] = {
0268     /*Modcod        2MPon   2MPoff  5MPon   5MPoff  10MPon
0269                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
0270     { STV0900_QPSK_12,  0x3C,   0x2C,   0x0C,   0x2C,   0x1B,
0271                 0x2C,   0x1B,   0x1C,   0x0B,   0x3B },
0272     { STV0900_QPSK_35,  0x0D,   0x0D,   0x0C,   0x0D,   0x1B,
0273                 0x3C,   0x1B,   0x1C,   0x0B,   0x3B },
0274     { STV0900_QPSK_23,  0x1D,   0x0D,   0x0C,   0x1D,   0x2B,
0275                 0x3C,   0x1B,   0x1C,   0x0B,   0x3B },
0276     { STV0900_QPSK_34,  0x1D,   0x1D,   0x0C,   0x1D,   0x2B,
0277                 0x3C,   0x1B,   0x1C,   0x0B,   0x3B },
0278     { STV0900_QPSK_45,  0x2D,   0x1D,   0x1C,   0x1D,   0x2B,
0279                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
0280     { STV0900_QPSK_56,  0x2D,   0x1D,   0x1C,   0x1D,   0x2B,
0281                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
0282     { STV0900_QPSK_89,  0x3D,   0x2D,   0x1C,   0x1D,   0x3B,
0283                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
0284     { STV0900_QPSK_910, 0x3D,   0x2D,   0x1C,   0x1D,   0x3B,
0285                 0x3C,   0x2B,   0x0C,   0x1B,   0x3B },
0286     { STV0900_8PSK_35,  0x39,   0x19,   0x39,   0x19,   0x19,
0287                 0x19,   0x19,   0x19,   0x09,   0x19 },
0288     { STV0900_8PSK_23,  0x2A,   0x39,   0x1A,   0x0A,   0x39,
0289                 0x0A,   0x29,   0x39,   0x29,   0x0A },
0290     { STV0900_8PSK_34,  0x0B,   0x3A,   0x0B,   0x0B,   0x3A,
0291                 0x1B,   0x1A,   0x0B,   0x1A,   0x3A },
0292     { STV0900_8PSK_56,  0x0C,   0x1B,   0x3B,   0x2B,   0x1B,
0293                 0x3B,   0x3A,   0x3B,   0x3A,   0x1B },
0294     { STV0900_8PSK_89,  0x2C,   0x2C,   0x2C,   0x1C,   0x2B,
0295                 0x0C,   0x0B,   0x3B,   0x0B,   0x1B },
0296     { STV0900_8PSK_910, 0x2C,   0x3C,   0x2C,   0x1C,   0x3B,
0297                 0x1C,   0x0B,   0x3B,   0x0B,   0x1B }
0298 };
0299 
0300 static  const
0301 struct stv0900_car_loop_optim FE_STV0900_S2APSKCarLoopCut30[11] = {
0302     /*Modcod        2MPon   2MPoff  5MPon   5MPoff  10MPon
0303                 10MPoff 20MPon  20MPoff 30MPon  30MPoff */
0304     { STV0900_16APSK_23,    0x0A,   0x0A,   0x0A,   0x0A,   0x1A,
0305                 0x0A,   0x3A,   0x0A,   0x2A,   0x0A },
0306     { STV0900_16APSK_34,    0x0A,   0x0A,   0x0A,   0x0A,   0x0B,
0307                 0x0A,   0x3B,   0x0A,   0x1B,   0x0A },
0308     { STV0900_16APSK_45,    0x0A,   0x0A,   0x0A,   0x0A,   0x1B,
0309                 0x0A,   0x3B,   0x0A,   0x2B,   0x0A },
0310     { STV0900_16APSK_56,    0x0A,   0x0A,   0x0A,   0x0A,   0x1B,
0311                 0x0A,   0x3B,   0x0A,   0x2B,   0x0A },
0312     { STV0900_16APSK_89,    0x0A,   0x0A,   0x0A,   0x0A,   0x2B,
0313                 0x0A,   0x0C,   0x0A,   0x3B,   0x0A },
0314     { STV0900_16APSK_910,   0x0A,   0x0A,   0x0A,   0x0A,   0x2B,
0315                 0x0A,   0x0C,   0x0A,   0x3B,   0x0A },
0316     { STV0900_32APSK_34,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
0317                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
0318     { STV0900_32APSK_45,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
0319                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
0320     { STV0900_32APSK_56,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
0321                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
0322     { STV0900_32APSK_89,    0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
0323                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A },
0324     { STV0900_32APSK_910,   0x0A,   0x0A,   0x0A,   0x0A,   0x0A,
0325                 0x0A,   0x0A,   0x0A,   0x0A,   0x0A }
0326 };
0327 
0328 static  const
0329 struct stv0900_car_loop_optim FE_STV0900_S2LowQPCarLoopCut30[3] = {
0330     /*Modcod        2MPon   2MPoff  5MPon   5MPoff  10MPon
0331                 10MPoff 20MPon  20MPoff 30MPon  30MPoff*/
0332     { STV0900_QPSK_14,  0x0C,   0x3C,   0x0B,   0x3C,   0x2A,
0333                 0x2C,   0x2A,   0x1C,   0x3A,   0x3B },
0334     { STV0900_QPSK_13,  0x0C,   0x3C,   0x0B,   0x3C,   0x2A,
0335                 0x2C,   0x3A,   0x0C,   0x3A,   0x2B },
0336     { STV0900_QPSK_25,  0x1C,   0x3C,   0x1B,   0x3C,   0x3A,
0337                 0x1C,   0x3A,   0x3B,   0x3A,   0x2B }
0338 };
0339 
0340 static  const struct stv0900_short_frames_car_loop_optim_vs_mod
0341 FE_STV0900_S2ShortCarLoopCut30[4] = {
0342     /*Mod       2Mcut3.0 5Mcut3.0 10Mcut3.0 20Mcut3.0 30Mcut3.0*/
0343     { STV0900_QPSK,     0x2C,   0x2B,   0x0B,   0x0B,   0x3A },
0344     { STV0900_8PSK,     0x3B,   0x0B,   0x2A,   0x0A,   0x39 },
0345     { STV0900_16APSK,   0x1B,   0x1B,   0x1B,   0x3A,   0x2A },
0346     { STV0900_32APSK,   0x1B,   0x1B,   0x1B,   0x3A,   0x2A },
0347 
0348 };
0349 
0350 static const u16 STV0900_InitVal[181][2] = {
0351     { R0900_OUTCFG      , 0x00  },
0352     { R0900_AGCRF1CFG   , 0x11  },
0353     { R0900_AGCRF2CFG   , 0x13  },
0354     { R0900_TSGENERAL1X , 0x14  },
0355     { R0900_TSTTNR2     , 0x21  },
0356     { R0900_TSTTNR4     , 0x21  },
0357     { R0900_P2_DISTXCTL , 0x22  },
0358     { R0900_P2_F22TX    , 0xc0  },
0359     { R0900_P2_F22RX    , 0xc0  },
0360     { R0900_P2_DISRXCTL , 0x00  },
0361     { R0900_P2_TNRSTEPS , 0x87  },
0362     { R0900_P2_TNRGAIN  , 0x09  },
0363     { R0900_P2_DMDCFGMD , 0xF9  },
0364     { R0900_P2_DEMOD    , 0x08  },
0365     { R0900_P2_DMDCFG3  , 0xc4  },
0366     { R0900_P2_CARFREQ  , 0xed  },
0367     { R0900_P2_TNRCFG2  , 0x02  },
0368     { R0900_P2_TNRCFG3  , 0x02  },
0369     { R0900_P2_LDT      , 0xd0  },
0370     { R0900_P2_LDT2     , 0xb8  },
0371     { R0900_P2_TMGCFG   , 0xd2  },
0372     { R0900_P2_TMGTHRISE    , 0x20  },
0373     { R0900_P2_TMGTHFALL    , 0x00  },
0374     { R0900_P2_FECSPY   , 0x88  },
0375     { R0900_P2_FSPYDATA , 0x3a  },
0376     { R0900_P2_FBERCPT4 , 0x00  },
0377     { R0900_P2_FSPYBER  , 0x10  },
0378     { R0900_P2_ERRCTRL1 , 0x35  },
0379     { R0900_P2_ERRCTRL2 , 0xc1  },
0380     { R0900_P2_CFRICFG  , 0xf8  },
0381     { R0900_P2_NOSCFG   , 0x1c  },
0382     { R0900_P2_DMDT0M   , 0x20  },
0383     { R0900_P2_CORRELMANT   , 0x70  },
0384     { R0900_P2_CORRELABS    , 0x88  },
0385     { R0900_P2_AGC2O    , 0x5b  },
0386     { R0900_P2_AGC2REF  , 0x38  },
0387     { R0900_P2_CARCFG   , 0xe4  },
0388     { R0900_P2_ACLC     , 0x1A  },
0389     { R0900_P2_BCLC     , 0x09  },
0390     { R0900_P2_CARHDR   , 0x08  },
0391     { R0900_P2_KREFTMG  , 0xc1  },
0392     { R0900_P2_SFRUPRATIO   , 0xf0  },
0393     { R0900_P2_SFRLOWRATIO  , 0x70  },
0394     { R0900_P2_SFRSTEP  , 0x58  },
0395     { R0900_P2_TMGCFG2  , 0x01  },
0396     { R0900_P2_CAR2CFG  , 0x26  },
0397     { R0900_P2_BCLC2S2Q , 0x86  },
0398     { R0900_P2_BCLC2S28 , 0x86  },
0399     { R0900_P2_SMAPCOEF7    , 0x77  },
0400     { R0900_P2_SMAPCOEF6    , 0x85  },
0401     { R0900_P2_SMAPCOEF5    , 0x77  },
0402     { R0900_P2_TSCFGL   , 0x20  },
0403     { R0900_P2_DMDCFG2  , 0x3b  },
0404     { R0900_P2_MODCODLST0   , 0xff  },
0405     { R0900_P2_MODCODLST1   , 0xff  },
0406     { R0900_P2_MODCODLST2   , 0xff  },
0407     { R0900_P2_MODCODLST3   , 0xff  },
0408     { R0900_P2_MODCODLST4   , 0xff  },
0409     { R0900_P2_MODCODLST5   , 0xff  },
0410     { R0900_P2_MODCODLST6   , 0xff  },
0411     { R0900_P2_MODCODLST7   , 0xcc  },
0412     { R0900_P2_MODCODLST8   , 0xcc  },
0413     { R0900_P2_MODCODLST9   , 0xcc  },
0414     { R0900_P2_MODCODLSTA   , 0xcc  },
0415     { R0900_P2_MODCODLSTB   , 0xcc  },
0416     { R0900_P2_MODCODLSTC   , 0xcc  },
0417     { R0900_P2_MODCODLSTD   , 0xcc  },
0418     { R0900_P2_MODCODLSTE   , 0xcc  },
0419     { R0900_P2_MODCODLSTF   , 0xcf  },
0420     { R0900_P1_DISTXCTL , 0x22  },
0421     { R0900_P1_F22TX    , 0xc0  },
0422     { R0900_P1_F22RX    , 0xc0  },
0423     { R0900_P1_DISRXCTL , 0x00  },
0424     { R0900_P1_TNRSTEPS , 0x87  },
0425     { R0900_P1_TNRGAIN  , 0x09  },
0426     { R0900_P1_DMDCFGMD , 0xf9  },
0427     { R0900_P1_DEMOD    , 0x08  },
0428     { R0900_P1_DMDCFG3  , 0xc4  },
0429     { R0900_P1_DMDT0M   , 0x20  },
0430     { R0900_P1_CARFREQ  , 0xed  },
0431     { R0900_P1_TNRCFG2  , 0x82  },
0432     { R0900_P1_TNRCFG3  , 0x02  },
0433     { R0900_P1_LDT      , 0xd0  },
0434     { R0900_P1_LDT2     , 0xb8  },
0435     { R0900_P1_TMGCFG   , 0xd2  },
0436     { R0900_P1_TMGTHRISE    , 0x20  },
0437     { R0900_P1_TMGTHFALL    , 0x00  },
0438     { R0900_P1_SFRUPRATIO   , 0xf0  },
0439     { R0900_P1_SFRLOWRATIO  , 0x70  },
0440     { R0900_P1_TSCFGL   , 0x20  },
0441     { R0900_P1_FECSPY   , 0x88  },
0442     { R0900_P1_FSPYDATA , 0x3a  },
0443     { R0900_P1_FBERCPT4 , 0x00  },
0444     { R0900_P1_FSPYBER  , 0x10  },
0445     { R0900_P1_ERRCTRL1 , 0x35  },
0446     { R0900_P1_ERRCTRL2 , 0xc1  },
0447     { R0900_P1_CFRICFG  , 0xf8  },
0448     { R0900_P1_NOSCFG   , 0x1c  },
0449     { R0900_P1_CORRELMANT   , 0x70  },
0450     { R0900_P1_CORRELABS    , 0x88  },
0451     { R0900_P1_AGC2O    , 0x5b  },
0452     { R0900_P1_AGC2REF  , 0x38  },
0453     { R0900_P1_CARCFG   , 0xe4  },
0454     { R0900_P1_ACLC     , 0x1A  },
0455     { R0900_P1_BCLC     , 0x09  },
0456     { R0900_P1_CARHDR   , 0x08  },
0457     { R0900_P1_KREFTMG  , 0xc1  },
0458     { R0900_P1_SFRSTEP  , 0x58  },
0459     { R0900_P1_TMGCFG2  , 0x01  },
0460     { R0900_P1_CAR2CFG  , 0x26  },
0461     { R0900_P1_BCLC2S2Q , 0x86  },
0462     { R0900_P1_BCLC2S28 , 0x86  },
0463     { R0900_P1_SMAPCOEF7    , 0x77  },
0464     { R0900_P1_SMAPCOEF6    , 0x85  },
0465     { R0900_P1_SMAPCOEF5    , 0x77  },
0466     { R0900_P1_DMDCFG2  , 0x3b  },
0467     { R0900_P1_MODCODLST0   , 0xff  },
0468     { R0900_P1_MODCODLST1   , 0xff  },
0469     { R0900_P1_MODCODLST2   , 0xff  },
0470     { R0900_P1_MODCODLST3   , 0xff  },
0471     { R0900_P1_MODCODLST4   , 0xff  },
0472     { R0900_P1_MODCODLST5   , 0xff  },
0473     { R0900_P1_MODCODLST6   , 0xff  },
0474     { R0900_P1_MODCODLST7   , 0xcc  },
0475     { R0900_P1_MODCODLST8   , 0xcc  },
0476     { R0900_P1_MODCODLST9   , 0xcc  },
0477     { R0900_P1_MODCODLSTA   , 0xcc  },
0478     { R0900_P1_MODCODLSTB   , 0xcc  },
0479     { R0900_P1_MODCODLSTC   , 0xcc  },
0480     { R0900_P1_MODCODLSTD   , 0xcc  },
0481     { R0900_P1_MODCODLSTE   , 0xcc  },
0482     { R0900_P1_MODCODLSTF   , 0xcf  },
0483     { R0900_GENCFG      , 0x1d  },
0484     { R0900_NBITER_NF4  , 0x37  },
0485     { R0900_NBITER_NF5  , 0x29  },
0486     { R0900_NBITER_NF6  , 0x37  },
0487     { R0900_NBITER_NF7  , 0x33  },
0488     { R0900_NBITER_NF8  , 0x31  },
0489     { R0900_NBITER_NF9  , 0x2f  },
0490     { R0900_NBITER_NF10 , 0x39  },
0491     { R0900_NBITER_NF11 , 0x3a  },
0492     { R0900_NBITER_NF12 , 0x29  },
0493     { R0900_NBITER_NF13 , 0x37  },
0494     { R0900_NBITER_NF14 , 0x33  },
0495     { R0900_NBITER_NF15 , 0x2f  },
0496     { R0900_NBITER_NF16 , 0x39  },
0497     { R0900_NBITER_NF17 , 0x3a  },
0498     { R0900_NBITERNOERR , 0x04  },
0499     { R0900_GAINLLR_NF4 , 0x0C  },
0500     { R0900_GAINLLR_NF5 , 0x0F  },
0501     { R0900_GAINLLR_NF6 , 0x11  },
0502     { R0900_GAINLLR_NF7 , 0x14  },
0503     { R0900_GAINLLR_NF8 , 0x17  },
0504     { R0900_GAINLLR_NF9 , 0x19  },
0505     { R0900_GAINLLR_NF10    , 0x20  },
0506     { R0900_GAINLLR_NF11    , 0x21  },
0507     { R0900_GAINLLR_NF12    , 0x0D  },
0508     { R0900_GAINLLR_NF13    , 0x0F  },
0509     { R0900_GAINLLR_NF14    , 0x13  },
0510     { R0900_GAINLLR_NF15    , 0x1A  },
0511     { R0900_GAINLLR_NF16    , 0x1F  },
0512     { R0900_GAINLLR_NF17    , 0x21  },
0513     { R0900_RCCFG2      , 0x20  },
0514     { R0900_P1_FECM     , 0x01  }, /*disable DSS modes*/
0515     { R0900_P2_FECM     , 0x01  }, /*disable DSS modes*/
0516     { R0900_P1_PRVIT    , 0x2F  }, /*disable puncture rate 6/7*/
0517     { R0900_P2_PRVIT    , 0x2F  }, /*disable puncture rate 6/7*/
0518     { R0900_STROUT1CFG  , 0x4c  },
0519     { R0900_STROUT2CFG  , 0x4c  },
0520     { R0900_CLKOUT1CFG  , 0x50  },
0521     { R0900_CLKOUT2CFG  , 0x50  },
0522     { R0900_DPN1CFG     , 0x4a  },
0523     { R0900_DPN2CFG     , 0x4a  },
0524     { R0900_DATA71CFG   , 0x52  },
0525     { R0900_DATA72CFG   , 0x52  },
0526     { R0900_P1_TSCFGM   , 0xc0  },
0527     { R0900_P2_TSCFGM   , 0xc0  },
0528     { R0900_P1_TSCFGH   , 0xe0  }, /* DVB-CI timings */
0529     { R0900_P2_TSCFGH   , 0xe0  }, /* DVB-CI timings */
0530     { R0900_P1_TSSPEED  , 0x40  },
0531     { R0900_P2_TSSPEED  , 0x40  },
0532 };
0533 
0534 static const u16 STV0900_Cut20_AddOnVal[32][2] = {
0535     { R0900_P2_DMDCFG3  , 0xe8  },
0536     { R0900_P2_DMDCFG4  , 0x10  },
0537     { R0900_P2_CARFREQ  , 0x38  },
0538     { R0900_P2_CARHDR   , 0x20  },
0539     { R0900_P2_KREFTMG  , 0x5a  },
0540     { R0900_P2_SMAPCOEF7    , 0x06  },
0541     { R0900_P2_SMAPCOEF6    , 0x00  },
0542     { R0900_P2_SMAPCOEF5    , 0x04  },
0543     { R0900_P2_NOSCFG   , 0x0c  },
0544     { R0900_P1_DMDCFG3  , 0xe8  },
0545     { R0900_P1_DMDCFG4  , 0x10  },
0546     { R0900_P1_CARFREQ  , 0x38  },
0547     { R0900_P1_CARHDR   , 0x20  },
0548     { R0900_P1_KREFTMG  , 0x5a  },
0549     { R0900_P1_SMAPCOEF7    , 0x06  },
0550     { R0900_P1_SMAPCOEF6    , 0x00  },
0551     { R0900_P1_SMAPCOEF5    , 0x04  },
0552     { R0900_P1_NOSCFG   , 0x0c  },
0553     { R0900_GAINLLR_NF4 , 0x21  },
0554     { R0900_GAINLLR_NF5 , 0x21  },
0555     { R0900_GAINLLR_NF6 , 0x20  },
0556     { R0900_GAINLLR_NF7 , 0x1F  },
0557     { R0900_GAINLLR_NF8 , 0x1E  },
0558     { R0900_GAINLLR_NF9 , 0x1E  },
0559     { R0900_GAINLLR_NF10    , 0x1D  },
0560     { R0900_GAINLLR_NF11    , 0x1B  },
0561     { R0900_GAINLLR_NF12    , 0x20  },
0562     { R0900_GAINLLR_NF13    , 0x20  },
0563     { R0900_GAINLLR_NF14    , 0x20  },
0564     { R0900_GAINLLR_NF15    , 0x20  },
0565     { R0900_GAINLLR_NF16    , 0x20  },
0566     { R0900_GAINLLR_NF17    , 0x21  }
0567 
0568 };
0569 
0570 #endif