linux/drivers/media/dvb/frontends/af9013_priv.h
<<
>>
Prefs
   1/*
   2 * DVB USB Linux driver for Afatech AF9015 DVB-T USB2.0 receiver
   3 *
   4 * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
   5 *
   6 * Thanks to Afatech who kindly provided information.
   7 *
   8 *    This program is free software; you can redistribute it and/or modify
   9 *    it under the terms of the GNU General Public License as published by
  10 *    the Free Software Foundation; either version 2 of the License, or
  11 *    (at your option) any later version.
  12 *
  13 *    This program is distributed in the hope that it will be useful,
  14 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 *    GNU General Public License for more details.
  17 *
  18 *    You should have received a copy of the GNU General Public License
  19 *    along with this program; if not, write to the Free Software
  20 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21 *
  22 */
  23
  24#ifndef _AF9013_PRIV_
  25#define _AF9013_PRIV_
  26
  27#define LOG_PREFIX "af9013"
  28extern int af9013_debug;
  29
  30#define dprintk(var, level, args...) \
  31            do { if ((var & level)) printk(args); } while (0)
  32
  33#define debug_dump(b, l, func) {\
  34        int loop_; \
  35        for (loop_ = 0; loop_ < l; loop_++) \
  36                func("%02x ", b[loop_]); \
  37        func("\n");\
  38}
  39
  40#define deb_info(args...) dprintk(af9013_debug, 0x01, args)
  41
  42#undef err
  43#define err(f, arg...)  printk(KERN_ERR     LOG_PREFIX": " f "\n" , ## arg)
  44#undef info
  45#define info(f, arg...) printk(KERN_INFO    LOG_PREFIX": " f "\n" , ## arg)
  46#undef warn
  47#define warn(f, arg...) printk(KERN_WARNING LOG_PREFIX": " f "\n" , ## arg)
  48
  49#define AF9013_DEFAULT_FIRMWARE     "dvb-fe-af9013.fw"
  50
  51struct regdesc {
  52        u16 addr;
  53        u8  pos:4;
  54        u8  len:4;
  55        u8  val;
  56};
  57
  58struct snr_table {
  59        u32 val;
  60        u8 snr;
  61};
  62
  63/* QPSK SNR lookup table */
  64static struct snr_table qpsk_snr_table[] = {
  65        { 0x0b4771,  0 },
  66        { 0x0c1aed,  1 },
  67        { 0x0d0d27,  2 },
  68        { 0x0e4d19,  3 },
  69        { 0x0e5da8,  4 },
  70        { 0x107097,  5 },
  71        { 0x116975,  6 },
  72        { 0x1252d9,  7 },
  73        { 0x131fa4,  8 },
  74        { 0x13d5e1,  9 },
  75        { 0x148e53, 10 },
  76        { 0x15358b, 11 },
  77        { 0x15dd29, 12 },
  78        { 0x168112, 13 },
  79        { 0x170b61, 14 },
  80        { 0xffffff, 15 },
  81};
  82
  83/* QAM16 SNR lookup table */
  84static struct snr_table qam16_snr_table[] = {
  85        { 0x05eb62,  5 },
  86        { 0x05fecf,  6 },
  87        { 0x060b80,  7 },
  88        { 0x062501,  8 },
  89        { 0x064865,  9 },
  90        { 0x069604, 10 },
  91        { 0x06f356, 11 },
  92        { 0x07706a, 12 },
  93        { 0x0804d3, 13 },
  94        { 0x089d1a, 14 },
  95        { 0x093e3d, 15 },
  96        { 0x09e35d, 16 },
  97        { 0x0a7c3c, 17 },
  98        { 0x0afaf8, 18 },
  99        { 0x0b719d, 19 },
 100        { 0xffffff, 20 },
 101};
 102
 103/* QAM64 SNR lookup table */
 104static struct snr_table qam64_snr_table[] = {
 105        { 0x03109b, 12 },
 106        { 0x0310d4, 13 },
 107        { 0x031920, 14 },
 108        { 0x0322d0, 15 },
 109        { 0x0339fc, 16 },
 110        { 0x0364a1, 17 },
 111        { 0x038bcc, 18 },
 112        { 0x03c7d3, 19 },
 113        { 0x0408cc, 20 },
 114        { 0x043bed, 21 },
 115        { 0x048061, 22 },
 116        { 0x04be95, 23 },
 117        { 0x04fa7d, 24 },
 118        { 0x052405, 25 },
 119        { 0x05570d, 26 },
 120        { 0xffffff, 27 },
 121};
 122
 123static struct regdesc ofsm_init[] = {
 124        { 0xd73a, 0, 8, 0xa1 },
 125        { 0xd73b, 0, 8, 0x1f },
 126        { 0xd73c, 4, 4, 0x0a },
 127        { 0xd732, 3, 1, 0x00 },
 128        { 0xd731, 4, 2, 0x03 },
 129        { 0xd73d, 7, 1, 0x01 },
 130        { 0xd740, 0, 1, 0x00 },
 131        { 0xd740, 1, 1, 0x00 },
 132        { 0xd740, 2, 1, 0x00 },
 133        { 0xd740, 3, 1, 0x01 },
 134        { 0xd3c1, 4, 1, 0x01 },
 135        { 0xd3a2, 0, 8, 0x00 },
 136        { 0xd3a3, 0, 8, 0x04 },
 137        { 0xd305, 0, 8, 0x32 },
 138        { 0xd306, 0, 8, 0x10 },
 139        { 0xd304, 0, 8, 0x04 },
 140        { 0x9112, 0, 1, 0x01 },
 141        { 0x911d, 0, 1, 0x01 },
 142        { 0x911a, 0, 1, 0x01 },
 143        { 0x911b, 0, 1, 0x01 },
 144        { 0x9bce, 0, 4, 0x02 },
 145        { 0x9116, 0, 1, 0x01 },
 146        { 0x9bd1, 0, 1, 0x01 },
 147        { 0xd2e0, 0, 8, 0xd0 },
 148        { 0xd2e9, 0, 4, 0x0d },
 149        { 0xd38c, 0, 8, 0xfc },
 150        { 0xd38d, 0, 8, 0x00 },
 151        { 0xd38e, 0, 8, 0x7e },
 152        { 0xd38f, 0, 8, 0x00 },
 153        { 0xd390, 0, 8, 0x2f },
 154        { 0xd145, 4, 1, 0x01 },
 155        { 0xd1a9, 4, 1, 0x01 },
 156        { 0xd158, 5, 3, 0x01 },
 157        { 0xd159, 0, 6, 0x06 },
 158        { 0xd167, 0, 8, 0x00 },
 159        { 0xd168, 0, 4, 0x07 },
 160        { 0xd1c3, 5, 3, 0x00 },
 161        { 0xd1c4, 0, 6, 0x00 },
 162        { 0xd1c5, 0, 7, 0x10 },
 163        { 0xd1c6, 0, 3, 0x02 },
 164        { 0xd080, 2, 5, 0x03 },
 165        { 0xd081, 4, 4, 0x09 },
 166        { 0xd098, 4, 4, 0x0f },
 167        { 0xd098, 0, 4, 0x03 },
 168        { 0xdbc0, 3, 1, 0x01 },
 169        { 0xdbc0, 4, 1, 0x01 },
 170        { 0xdbc7, 0, 8, 0x08 },
 171        { 0xdbc8, 4, 4, 0x00 },
 172        { 0xdbc9, 0, 5, 0x01 },
 173        { 0xd280, 0, 8, 0xe0 },
 174        { 0xd281, 0, 8, 0xff },
 175        { 0xd282, 0, 8, 0xff },
 176        { 0xd283, 0, 8, 0xc3 },
 177        { 0xd284, 0, 8, 0xff },
 178        { 0xd285, 0, 4, 0x01 },
 179        { 0xd0f0, 0, 7, 0x1a },
 180        { 0xd0f1, 4, 1, 0x01 },
 181        { 0xd0f2, 0, 8, 0x0c },
 182        { 0xd103, 0, 4, 0x08 },
 183        { 0xd0f8, 0, 7, 0x20 },
 184        { 0xd111, 5, 1, 0x00 },
 185        { 0xd111, 6, 1, 0x00 },
 186        { 0x910b, 0, 8, 0x0a },
 187        { 0x9115, 0, 8, 0x02 },
 188        { 0x910c, 0, 8, 0x02 },
 189        { 0x910d, 0, 8, 0x08 },
 190        { 0x910e, 0, 8, 0x0a },
 191        { 0x9bf6, 0, 8, 0x06 },
 192        { 0x9bf8, 0, 8, 0x02 },
 193        { 0x9bf7, 0, 8, 0x05 },
 194        { 0x9bf9, 0, 8, 0x0f },
 195        { 0x9bfc, 0, 8, 0x13 },
 196        { 0x9bd3, 0, 8, 0xff },
 197        { 0x9bbe, 0, 1, 0x01 },
 198        { 0x9bcc, 0, 1, 0x01 },
 199};
 200
 201/* Panasonic ENV77H11D5 tuner init
 202   AF9013_TUNER_ENV77H11D5 = 129 */
 203static struct regdesc tuner_init_env77h11d5[] = {
 204        { 0x9bd5, 0, 8, 0x01 },
 205        { 0x9bd6, 0, 8, 0x03 },
 206        { 0x9bbe, 0, 8, 0x01 },
 207        { 0xd1a0, 1, 1, 0x01 },
 208        { 0xd000, 0, 1, 0x01 },
 209        { 0xd000, 1, 1, 0x00 },
 210        { 0xd001, 1, 1, 0x01 },
 211        { 0xd001, 0, 1, 0x00 },
 212        { 0xd001, 5, 1, 0x00 },
 213        { 0xd002, 0, 5, 0x19 },
 214        { 0xd003, 0, 5, 0x1a },
 215        { 0xd004, 0, 5, 0x19 },
 216        { 0xd005, 0, 5, 0x1a },
 217        { 0xd00e, 0, 5, 0x10 },
 218        { 0xd00f, 0, 3, 0x04 },
 219        { 0xd00f, 3, 3, 0x05 },
 220        { 0xd010, 0, 3, 0x04 },
 221        { 0xd010, 3, 3, 0x05 },
 222        { 0xd016, 4, 4, 0x03 },
 223        { 0xd01f, 0, 6, 0x0a },
 224        { 0xd020, 0, 6, 0x0a },
 225        { 0x9bda, 0, 8, 0x00 },
 226        { 0x9be3, 0, 8, 0x00 },
 227        { 0xd015, 0, 8, 0x50 },
 228        { 0xd016, 0, 1, 0x00 },
 229        { 0xd044, 0, 8, 0x46 },
 230        { 0xd045, 0, 1, 0x00 },
 231        { 0xd008, 0, 8, 0xdf },
 232        { 0xd009, 0, 2, 0x02 },
 233        { 0xd006, 0, 8, 0x44 },
 234        { 0xd007, 0, 2, 0x01 },
 235        { 0xd00c, 0, 8, 0xeb },
 236        { 0xd00d, 0, 2, 0x02 },
 237        { 0xd00a, 0, 8, 0xf4 },
 238        { 0xd00b, 0, 2, 0x01 },
 239        { 0x9bba, 0, 8, 0xf9 },
 240        { 0x9bc3, 0, 8, 0xdf },
 241        { 0x9bc4, 0, 8, 0x02 },
 242        { 0x9bc5, 0, 8, 0xeb },
 243        { 0x9bc6, 0, 8, 0x02 },
 244        { 0x9bc9, 0, 8, 0x52 },
 245        { 0xd011, 0, 8, 0x3c },
 246        { 0xd012, 0, 2, 0x01 },
 247        { 0xd013, 0, 8, 0xf7 },
 248        { 0xd014, 0, 2, 0x02 },
 249        { 0xd040, 0, 8, 0x0b },
 250        { 0xd041, 0, 2, 0x02 },
 251        { 0xd042, 0, 8, 0x4d },
 252        { 0xd043, 0, 2, 0x00 },
 253        { 0xd045, 1, 1, 0x00 },
 254        { 0x9bcf, 0, 1, 0x01 },
 255        { 0xd045, 2, 1, 0x01 },
 256        { 0xd04f, 0, 8, 0x9a },
 257        { 0xd050, 0, 1, 0x01 },
 258        { 0xd051, 0, 8, 0x5a },
 259        { 0xd052, 0, 1, 0x01 },
 260        { 0xd053, 0, 8, 0x50 },
 261        { 0xd054, 0, 8, 0x46 },
 262        { 0x9bd7, 0, 8, 0x0a },
 263        { 0x9bd8, 0, 8, 0x14 },
 264        { 0x9bd9, 0, 8, 0x08 },
 265};
 266
 267/* Microtune MT2060 tuner init
 268   AF9013_TUNER_MT2060     = 130 */
 269static struct regdesc tuner_init_mt2060[] = {
 270        { 0x9bd5, 0, 8, 0x01 },
 271        { 0x9bd6, 0, 8, 0x07 },
 272        { 0xd1a0, 1, 1, 0x01 },
 273        { 0xd000, 0, 1, 0x01 },
 274        { 0xd000, 1, 1, 0x00 },
 275        { 0xd001, 1, 1, 0x01 },
 276        { 0xd001, 0, 1, 0x00 },
 277        { 0xd001, 5, 1, 0x00 },
 278        { 0xd002, 0, 5, 0x19 },
 279        { 0xd003, 0, 5, 0x1a },
 280        { 0xd004, 0, 5, 0x19 },
 281        { 0xd005, 0, 5, 0x1a },
 282        { 0xd00e, 0, 5, 0x10 },
 283        { 0xd00f, 0, 3, 0x04 },
 284        { 0xd00f, 3, 3, 0x05 },
 285        { 0xd010, 0, 3, 0x04 },
 286        { 0xd010, 3, 3, 0x05 },
 287        { 0xd016, 4, 4, 0x03 },
 288        { 0xd01f, 0, 6, 0x0a },
 289        { 0xd020, 0, 6, 0x0a },
 290        { 0x9bda, 0, 8, 0x00 },
 291        { 0x9be3, 0, 8, 0x00 },
 292        { 0x9bbe, 0, 1, 0x00 },
 293        { 0x9bcc, 0, 1, 0x00 },
 294        { 0x9bb9, 0, 8, 0x75 },
 295        { 0x9bcd, 0, 8, 0x24 },
 296        { 0x9bff, 0, 8, 0x30 },
 297        { 0xd015, 0, 8, 0x46 },
 298        { 0xd016, 0, 1, 0x00 },
 299        { 0xd044, 0, 8, 0x46 },
 300        { 0xd045, 0, 1, 0x00 },
 301        { 0xd008, 0, 8, 0x0f },
 302        { 0xd009, 0, 2, 0x02 },
 303        { 0xd006, 0, 8, 0x32 },
 304        { 0xd007, 0, 2, 0x01 },
 305        { 0xd00c, 0, 8, 0x36 },
 306        { 0xd00d, 0, 2, 0x03 },
 307        { 0xd00a, 0, 8, 0x35 },
 308        { 0xd00b, 0, 2, 0x01 },
 309        { 0x9bc7, 0, 8, 0x07 },
 310        { 0x9bc8, 0, 8, 0x90 },
 311        { 0x9bc3, 0, 8, 0x0f },
 312        { 0x9bc4, 0, 8, 0x02 },
 313        { 0x9bc5, 0, 8, 0x36 },
 314        { 0x9bc6, 0, 8, 0x03 },
 315        { 0x9bba, 0, 8, 0xc9 },
 316        { 0x9bc9, 0, 8, 0x79 },
 317        { 0xd011, 0, 8, 0x10 },
 318        { 0xd012, 0, 2, 0x01 },
 319        { 0xd013, 0, 8, 0x45 },
 320        { 0xd014, 0, 2, 0x03 },
 321        { 0xd040, 0, 8, 0x98 },
 322        { 0xd041, 0, 2, 0x00 },
 323        { 0xd042, 0, 8, 0xcf },
 324        { 0xd043, 0, 2, 0x03 },
 325        { 0xd045, 1, 1, 0x00 },
 326        { 0x9bcf, 0, 1, 0x01 },
 327        { 0xd045, 2, 1, 0x01 },
 328        { 0xd04f, 0, 8, 0x9a },
 329        { 0xd050, 0, 1, 0x01 },
 330        { 0xd051, 0, 8, 0x5a },
 331        { 0xd052, 0, 1, 0x01 },
 332        { 0xd053, 0, 8, 0x50 },
 333        { 0xd054, 0, 8, 0x46 },
 334        { 0x9bd7, 0, 8, 0x0a },
 335        { 0x9bd8, 0, 8, 0x14 },
 336        { 0x9bd9, 0, 8, 0x08 },
 337        { 0x9bd0, 0, 8, 0xcc },
 338        { 0x9be4, 0, 8, 0xa0 },
 339        { 0x9bbd, 0, 8, 0x8e },
 340        { 0x9be2, 0, 8, 0x4d },
 341        { 0x9bee, 0, 1, 0x01 },
 342};
 343
 344/* Microtune MT2060 tuner init
 345   AF9013_TUNER_MT2060_2   = 147 */
 346static struct regdesc tuner_init_mt2060_2[] = {
 347        { 0x9bd5, 0, 8, 0x01 },
 348        { 0x9bd6, 0, 8, 0x06 },
 349        { 0x9bbe, 0, 8, 0x01 },
 350        { 0xd1a0, 1, 1, 0x01 },
 351        { 0xd000, 0, 1, 0x01 },
 352        { 0xd000, 1, 1, 0x00 },
 353        { 0xd001, 1, 1, 0x01 },
 354        { 0xd001, 0, 1, 0x00 },
 355        { 0xd001, 5, 1, 0x00 },
 356        { 0xd002, 0, 5, 0x19 },
 357        { 0xd003, 0, 5, 0x1a },
 358        { 0xd004, 0, 5, 0x19 },
 359        { 0xd005, 0, 5, 0x1a },
 360        { 0xd00e, 0, 5, 0x10 },
 361        { 0xd00f, 0, 3, 0x04 },
 362        { 0xd00f, 3, 3, 0x05 },
 363        { 0xd010, 0, 3, 0x04 },
 364        { 0xd010, 3, 3, 0x05 },
 365        { 0xd016, 4, 4, 0x03 },
 366        { 0xd01f, 0, 6, 0x0a },
 367        { 0xd020, 0, 6, 0x0a },
 368        { 0xd015, 0, 8, 0x46 },
 369        { 0xd016, 0, 1, 0x00 },
 370        { 0xd044, 0, 8, 0x46 },
 371        { 0xd045, 0, 1, 0x00 },
 372        { 0xd008, 0, 8, 0x0f },
 373        { 0xd009, 0, 2, 0x02 },
 374        { 0xd006, 0, 8, 0x32 },
 375        { 0xd007, 0, 2, 0x01 },
 376        { 0xd00c, 0, 8, 0x36 },
 377        { 0xd00d, 0, 2, 0x03 },
 378        { 0xd00a, 0, 8, 0x35 },
 379        { 0xd00b, 0, 2, 0x01 },
 380        { 0x9bc7, 0, 8, 0x07 },
 381        { 0x9bc8, 0, 8, 0x90 },
 382        { 0x9bc3, 0, 8, 0x0f },
 383        { 0x9bc4, 0, 8, 0x02 },
 384        { 0x9bc5, 0, 8, 0x36 },
 385        { 0x9bc6, 0, 8, 0x03 },
 386        { 0x9bba, 0, 8, 0xc9 },
 387        { 0x9bc9, 0, 8, 0x79 },
 388        { 0xd011, 0, 8, 0x10 },
 389        { 0xd012, 0, 2, 0x01 },
 390        { 0xd013, 0, 8, 0x45 },
 391        { 0xd014, 0, 2, 0x03 },
 392        { 0xd040, 0, 8, 0x98 },
 393        { 0xd041, 0, 2, 0x00 },
 394        { 0xd042, 0, 8, 0xcf },
 395        { 0xd043, 0, 2, 0x03 },
 396        { 0xd045, 1, 1, 0x00 },
 397        { 0x9bcf, 0, 8, 0x01 },
 398        { 0xd045, 2, 1, 0x01 },
 399        { 0xd04f, 0, 8, 0x9a },
 400        { 0xd050, 0, 1, 0x01 },
 401        { 0xd051, 0, 8, 0x5a },
 402        { 0xd052, 0, 1, 0x01 },
 403        { 0xd053, 0, 8, 0x96 },
 404        { 0xd054, 0, 8, 0x46 },
 405        { 0xd045, 7, 1, 0x00 },
 406        { 0x9bd7, 0, 8, 0x0a },
 407        { 0x9bd8, 0, 8, 0x14 },
 408        { 0x9bd9, 0, 8, 0x08 },
 409};
 410
 411/* MaxLinear MXL5003 tuner init
 412   AF9013_TUNER_MXL5003D   =   3 */
 413static struct regdesc tuner_init_mxl5003d[] = {
 414        { 0x9bd5, 0, 8, 0x01 },
 415        { 0x9bd6, 0, 8, 0x09 },
 416        { 0xd1a0, 1, 1, 0x01 },
 417        { 0xd000, 0, 1, 0x01 },
 418        { 0xd000, 1, 1, 0x00 },
 419        { 0xd001, 1, 1, 0x01 },
 420        { 0xd001, 0, 1, 0x00 },
 421        { 0xd001, 5, 1, 0x00 },
 422        { 0xd002, 0, 5, 0x19 },
 423        { 0xd003, 0, 5, 0x1a },
 424        { 0xd004, 0, 5, 0x19 },
 425        { 0xd005, 0, 5, 0x1a },
 426        { 0xd00e, 0, 5, 0x10 },
 427        { 0xd00f, 0, 3, 0x04 },
 428        { 0xd00f, 3, 3, 0x05 },
 429        { 0xd010, 0, 3, 0x04 },
 430        { 0xd010, 3, 3, 0x05 },
 431        { 0xd016, 4, 4, 0x03 },
 432        { 0xd01f, 0, 6, 0x0a },
 433        { 0xd020, 0, 6, 0x0a },
 434        { 0x9bda, 0, 8, 0x00 },
 435        { 0x9be3, 0, 8, 0x00 },
 436        { 0x9bfc, 0, 8, 0x0f },
 437        { 0x9bf6, 0, 8, 0x01 },
 438        { 0x9bbe, 0, 1, 0x01 },
 439        { 0xd015, 0, 8, 0x33 },
 440        { 0xd016, 0, 1, 0x00 },
 441        { 0xd044, 0, 8, 0x40 },
 442        { 0xd045, 0, 1, 0x00 },
 443        { 0xd008, 0, 8, 0x0f },
 444        { 0xd009, 0, 2, 0x02 },
 445        { 0xd006, 0, 8, 0x6c },
 446        { 0xd007, 0, 2, 0x00 },
 447        { 0xd00c, 0, 8, 0x3d },
 448        { 0xd00d, 0, 2, 0x00 },
 449        { 0xd00a, 0, 8, 0x45 },
 450        { 0xd00b, 0, 2, 0x01 },
 451        { 0x9bc7, 0, 8, 0x07 },
 452        { 0x9bc8, 0, 8, 0x52 },
 453        { 0x9bc3, 0, 8, 0x0f },
 454        { 0x9bc4, 0, 8, 0x02 },
 455        { 0x9bc5, 0, 8, 0x3d },
 456        { 0x9bc6, 0, 8, 0x00 },
 457        { 0x9bba, 0, 8, 0xa2 },
 458        { 0x9bc9, 0, 8, 0xa0 },
 459        { 0xd011, 0, 8, 0x56 },
 460        { 0xd012, 0, 2, 0x00 },
 461        { 0xd013, 0, 8, 0x50 },
 462        { 0xd014, 0, 2, 0x00 },
 463        { 0xd040, 0, 8, 0x56 },
 464        { 0xd041, 0, 2, 0x00 },
 465        { 0xd042, 0, 8, 0x50 },
 466        { 0xd043, 0, 2, 0x00 },
 467        { 0xd045, 1, 1, 0x00 },
 468        { 0x9bcf, 0, 8, 0x01 },
 469        { 0xd045, 2, 1, 0x01 },
 470        { 0xd04f, 0, 8, 0x9a },
 471        { 0xd050, 0, 1, 0x01 },
 472        { 0xd051, 0, 8, 0x5a },
 473        { 0xd052, 0, 1, 0x01 },
 474        { 0xd053, 0, 8, 0x50 },
 475        { 0xd054, 0, 8, 0x46 },
 476        { 0x9bd7, 0, 8, 0x0a },
 477        { 0x9bd8, 0, 8, 0x14 },
 478        { 0x9bd9, 0, 8, 0x08 },
 479};
 480
 481/* MaxLinear MXL5005 tuner init
 482   AF9013_TUNER_MXL5005D   =  13
 483   AF9013_TUNER_MXL5005R   =  30 */
 484static struct regdesc tuner_init_mxl5005[] = {
 485        { 0x9bd5, 0, 8, 0x01 },
 486        { 0x9bd6, 0, 8, 0x07 },
 487        { 0xd1a0, 1, 1, 0x01 },
 488        { 0xd000, 0, 1, 0x01 },
 489        { 0xd000, 1, 1, 0x00 },
 490        { 0xd001, 1, 1, 0x01 },
 491        { 0xd001, 0, 1, 0x00 },
 492        { 0xd001, 5, 1, 0x00 },
 493        { 0xd002, 0, 5, 0x19 },
 494        { 0xd003, 0, 5, 0x1a },
 495        { 0xd004, 0, 5, 0x19 },
 496        { 0xd005, 0, 5, 0x1a },
 497        { 0xd00e, 0, 5, 0x10 },
 498        { 0xd00f, 0, 3, 0x04 },
 499        { 0xd00f, 3, 3, 0x05 },
 500        { 0xd010, 0, 3, 0x04 },
 501        { 0xd010, 3, 3, 0x05 },
 502        { 0xd016, 4, 4, 0x03 },
 503        { 0xd01f, 0, 6, 0x0a },
 504        { 0xd020, 0, 6, 0x0a },
 505        { 0x9bda, 0, 8, 0x01 },
 506        { 0x9be3, 0, 8, 0x01 },
 507        { 0x9bbe, 0, 1, 0x01 },
 508        { 0x9bcc, 0, 1, 0x01 },
 509        { 0x9bb9, 0, 8, 0x00 },
 510        { 0x9bcd, 0, 8, 0x28 },
 511        { 0x9bff, 0, 8, 0x24 },
 512        { 0xd015, 0, 8, 0x40 },
 513        { 0xd016, 0, 1, 0x00 },
 514        { 0xd044, 0, 8, 0x40 },
 515        { 0xd045, 0, 1, 0x00 },
 516        { 0xd008, 0, 8, 0x0f },
 517        { 0xd009, 0, 2, 0x02 },
 518        { 0xd006, 0, 8, 0x73 },
 519        { 0xd007, 0, 2, 0x01 },
 520        { 0xd00c, 0, 8, 0xfa },
 521        { 0xd00d, 0, 2, 0x01 },
 522        { 0xd00a, 0, 8, 0xff },
 523        { 0xd00b, 0, 2, 0x01 },
 524        { 0x9bc7, 0, 8, 0x23 },
 525        { 0x9bc8, 0, 8, 0x55 },
 526        { 0x9bc3, 0, 8, 0x01 },
 527        { 0x9bc4, 0, 8, 0x02 },
 528        { 0x9bc5, 0, 8, 0xfa },
 529        { 0x9bc6, 0, 8, 0x01 },
 530        { 0x9bba, 0, 8, 0xff },
 531        { 0x9bc9, 0, 8, 0xff },
 532        { 0x9bd3, 0, 8, 0x95 },
 533        { 0xd011, 0, 8, 0x70 },
 534        { 0xd012, 0, 2, 0x01 },
 535        { 0xd013, 0, 8, 0xfb },
 536        { 0xd014, 0, 2, 0x01 },
 537        { 0xd040, 0, 8, 0x70 },
 538        { 0xd041, 0, 2, 0x01 },
 539        { 0xd042, 0, 8, 0xfb },
 540        { 0xd043, 0, 2, 0x01 },
 541        { 0xd045, 1, 1, 0x00 },
 542        { 0x9bcf, 0, 1, 0x01 },
 543        { 0xd045, 2, 1, 0x01 },
 544        { 0xd04f, 0, 8, 0x9a },
 545        { 0xd050, 0, 1, 0x01 },
 546        { 0xd051, 0, 8, 0x5a },
 547        { 0xd052, 0, 1, 0x01 },
 548        { 0xd053, 0, 8, 0x50 },
 549        { 0xd054, 0, 8, 0x46 },
 550        { 0x9bd7, 0, 8, 0x0a },
 551        { 0x9bd8, 0, 8, 0x14 },
 552        { 0x9bd9, 0, 8, 0x08 },
 553        { 0x9bd0, 0, 8, 0x93 },
 554        { 0x9be4, 0, 8, 0xfe },
 555        { 0x9bbd, 0, 8, 0x63 },
 556        { 0x9be2, 0, 8, 0xfe },
 557        { 0x9bee, 0, 1, 0x01 },
 558};
 559
 560/* Quantek QT1010 tuner init
 561   AF9013_TUNER_QT1010     = 134
 562   AF9013_TUNER_QT1010A    = 162 */
 563static struct regdesc tuner_init_qt1010[] = {
 564        { 0x9bd5, 0, 8, 0x01 },
 565        { 0x9bd6, 0, 8, 0x09 },
 566        { 0xd1a0, 1, 1, 0x01 },
 567        { 0xd000, 0, 1, 0x01 },
 568        { 0xd000, 1, 1, 0x00 },
 569        { 0xd001, 1, 1, 0x01 },
 570        { 0xd001, 0, 1, 0x00 },
 571        { 0xd001, 5, 1, 0x00 },
 572        { 0xd002, 0, 5, 0x19 },
 573        { 0xd003, 0, 5, 0x1a },
 574        { 0xd004, 0, 5, 0x19 },
 575        { 0xd005, 0, 5, 0x1a },
 576        { 0xd00e, 0, 5, 0x10 },
 577        { 0xd00f, 0, 3, 0x04 },
 578        { 0xd00f, 3, 3, 0x05 },
 579        { 0xd010, 0, 3, 0x04 },
 580        { 0xd010, 3, 3, 0x05 },
 581        { 0xd016, 4, 4, 0x03 },
 582        { 0xd01f, 0, 6, 0x0a },
 583        { 0xd020, 0, 6, 0x0a },
 584        { 0x9bda, 0, 8, 0x01 },
 585        { 0x9be3, 0, 8, 0x01 },
 586        { 0xd015, 0, 8, 0x46 },
 587        { 0xd016, 0, 1, 0x00 },
 588        { 0xd044, 0, 8, 0x46 },
 589        { 0xd045, 0, 1, 0x00 },
 590        { 0x9bbe, 0, 1, 0x01 },
 591        { 0x9bcc, 0, 1, 0x01 },
 592        { 0x9bb9, 0, 8, 0x00 },
 593        { 0x9bcd, 0, 8, 0x28 },
 594        { 0x9bff, 0, 8, 0x20 },
 595        { 0xd008, 0, 8, 0x0f },
 596        { 0xd009, 0, 2, 0x02 },
 597        { 0xd006, 0, 8, 0x99 },
 598        { 0xd007, 0, 2, 0x01 },
 599        { 0xd00c, 0, 8, 0x0f },
 600        { 0xd00d, 0, 2, 0x02 },
 601        { 0xd00a, 0, 8, 0x50 },
 602        { 0xd00b, 0, 2, 0x01 },
 603        { 0x9bc7, 0, 8, 0x00 },
 604        { 0x9bc8, 0, 8, 0x00 },
 605        { 0x9bc3, 0, 8, 0x0f },
 606        { 0x9bc4, 0, 8, 0x02 },
 607        { 0x9bc5, 0, 8, 0x0f },
 608        { 0x9bc6, 0, 8, 0x02 },
 609        { 0x9bba, 0, 8, 0xc5 },
 610        { 0x9bc9, 0, 8, 0xff },
 611        { 0xd011, 0, 8, 0x58 },
 612        { 0xd012, 0, 2, 0x02 },
 613        { 0xd013, 0, 8, 0x89 },
 614        { 0xd014, 0, 2, 0x01 },
 615        { 0xd040, 0, 8, 0x58 },
 616        { 0xd041, 0, 2, 0x02 },
 617        { 0xd042, 0, 8, 0x89 },
 618        { 0xd043, 0, 2, 0x01 },
 619        { 0xd045, 1, 1, 0x00 },
 620        { 0x9bcf, 0, 1, 0x01 },
 621        { 0xd045, 2, 1, 0x01 },
 622        { 0xd04f, 0, 8, 0x9a },
 623        { 0xd050, 0, 1, 0x01 },
 624        { 0xd051, 0, 8, 0x5a },
 625        { 0xd052, 0, 1, 0x01 },
 626        { 0xd053, 0, 8, 0x50 },
 627        { 0xd054, 0, 8, 0x46 },
 628        { 0x9bd7, 0, 8, 0x0a },
 629        { 0x9bd8, 0, 8, 0x14 },
 630        { 0x9bd9, 0, 8, 0x08 },
 631        { 0x9bd0, 0, 8, 0xcd },
 632        { 0x9be4, 0, 8, 0xbb },
 633        { 0x9bbd, 0, 8, 0x93 },
 634        { 0x9be2, 0, 8, 0x80 },
 635        { 0x9bee, 0, 1, 0x01 },
 636};
 637
 638/* Freescale MC44S803 tuner init
 639   AF9013_TUNER_MC44S803   = 133 */
 640static struct regdesc tuner_init_mc44s803[] = {
 641        { 0x9bd5, 0, 8, 0x01 },
 642        { 0x9bd6, 0, 8, 0x06 },
 643        { 0xd1a0, 1, 1, 0x01 },
 644        { 0xd000, 0, 1, 0x01 },
 645        { 0xd000, 1, 1, 0x00 },
 646        { 0xd001, 1, 1, 0x01 },
 647        { 0xd001, 0, 1, 0x00 },
 648        { 0xd001, 5, 1, 0x00 },
 649        { 0xd002, 0, 5, 0x19 },
 650        { 0xd003, 0, 5, 0x1a },
 651        { 0xd004, 0, 5, 0x19 },
 652        { 0xd005, 0, 5, 0x1a },
 653        { 0xd00e, 0, 5, 0x10 },
 654        { 0xd00f, 0, 3, 0x04 },
 655        { 0xd00f, 3, 3, 0x05 },
 656        { 0xd010, 0, 3, 0x04 },
 657        { 0xd010, 3, 3, 0x05 },
 658        { 0xd016, 4, 4, 0x03 },
 659        { 0xd01f, 0, 6, 0x0a },
 660        { 0xd020, 0, 6, 0x0a },
 661        { 0x9bda, 0, 8, 0x00 },
 662        { 0x9be3, 0, 8, 0x00 },
 663        { 0x9bf6, 0, 8, 0x01 },
 664        { 0x9bf8, 0, 8, 0x02 },
 665        { 0x9bf9, 0, 8, 0x02 },
 666        { 0x9bfc, 0, 8, 0x1f },
 667        { 0x9bbe, 0, 1, 0x01 },
 668        { 0x9bcc, 0, 1, 0x01 },
 669        { 0x9bb9, 0, 8, 0x00 },
 670        { 0x9bcd, 0, 8, 0x24 },
 671        { 0x9bff, 0, 8, 0x24 },
 672        { 0xd015, 0, 8, 0x46 },
 673        { 0xd016, 0, 1, 0x00 },
 674        { 0xd044, 0, 8, 0x46 },
 675        { 0xd045, 0, 1, 0x00 },
 676        { 0xd008, 0, 8, 0x01 },
 677        { 0xd009, 0, 2, 0x02 },
 678        { 0xd006, 0, 8, 0x7b },
 679        { 0xd007, 0, 2, 0x00 },
 680        { 0xd00c, 0, 8, 0x7c },
 681        { 0xd00d, 0, 2, 0x02 },
 682        { 0xd00a, 0, 8, 0xfe },
 683        { 0xd00b, 0, 2, 0x01 },
 684        { 0x9bc7, 0, 8, 0x08 },
 685        { 0x9bc8, 0, 8, 0x9a },
 686        { 0x9bc3, 0, 8, 0x01 },
 687        { 0x9bc4, 0, 8, 0x02 },
 688        { 0x9bc5, 0, 8, 0x7c },
 689        { 0x9bc6, 0, 8, 0x02 },
 690        { 0x9bba, 0, 8, 0xfc },
 691        { 0x9bc9, 0, 8, 0xaa },
 692        { 0xd011, 0, 8, 0x6b },
 693        { 0xd012, 0, 2, 0x00 },
 694        { 0xd013, 0, 8, 0x88 },
 695        { 0xd014, 0, 2, 0x02 },
 696        { 0xd040, 0, 8, 0x6b },
 697        { 0xd041, 0, 2, 0x00 },
 698        { 0xd042, 0, 8, 0x7c },
 699        { 0xd043, 0, 2, 0x02 },
 700        { 0xd045, 1, 1, 0x00 },
 701        { 0x9bcf, 0, 1, 0x01 },
 702        { 0xd045, 2, 1, 0x01 },
 703        { 0xd04f, 0, 8, 0x9a },
 704        { 0xd050, 0, 1, 0x01 },
 705        { 0xd051, 0, 8, 0x5a },
 706        { 0xd052, 0, 1, 0x01 },
 707        { 0xd053, 0, 8, 0x50 },
 708        { 0xd054, 0, 8, 0x46 },
 709        { 0x9bd7, 0, 8, 0x0a },
 710        { 0x9bd8, 0, 8, 0x14 },
 711        { 0x9bd9, 0, 8, 0x08 },
 712        { 0x9bd0, 0, 8, 0x9e },
 713        { 0x9be4, 0, 8, 0xff },
 714        { 0x9bbd, 0, 8, 0x9e },
 715        { 0x9be2, 0, 8, 0x25 },
 716        { 0x9bee, 0, 1, 0x01 },
 717        { 0xd73b, 3, 1, 0x00 },
 718};
 719
 720/* unknown, probably for tin can tuner, tuner init
 721   AF9013_TUNER_UNKNOWN   = 140 */
 722static struct regdesc tuner_init_unknown[] = {
 723        { 0x9bd5, 0, 8, 0x01 },
 724        { 0x9bd6, 0, 8, 0x02 },
 725        { 0xd1a0, 1, 1, 0x01 },
 726        { 0xd000, 0, 1, 0x01 },
 727        { 0xd000, 1, 1, 0x00 },
 728        { 0xd001, 1, 1, 0x01 },
 729        { 0xd001, 0, 1, 0x00 },
 730        { 0xd001, 5, 1, 0x00 },
 731        { 0xd002, 0, 5, 0x19 },
 732        { 0xd003, 0, 5, 0x1a },
 733        { 0xd004, 0, 5, 0x19 },
 734        { 0xd005, 0, 5, 0x1a },
 735        { 0xd00e, 0, 5, 0x10 },
 736        { 0xd00f, 0, 3, 0x04 },
 737        { 0xd00f, 3, 3, 0x05 },
 738        { 0xd010, 0, 3, 0x04 },
 739        { 0xd010, 3, 3, 0x05 },
 740        { 0xd016, 4, 4, 0x03 },
 741        { 0xd01f, 0, 6, 0x0a },
 742        { 0xd020, 0, 6, 0x0a },
 743        { 0x9bda, 0, 8, 0x01 },
 744        { 0x9be3, 0, 8, 0x01 },
 745        { 0xd1a0, 1, 1, 0x00 },
 746        { 0x9bbe, 0, 1, 0x01 },
 747        { 0x9bcc, 0, 1, 0x01 },
 748        { 0x9bb9, 0, 8, 0x00 },
 749        { 0x9bcd, 0, 8, 0x18 },
 750        { 0x9bff, 0, 8, 0x2c },
 751        { 0xd015, 0, 8, 0x46 },
 752        { 0xd016, 0, 1, 0x00 },
 753        { 0xd044, 0, 8, 0x46 },
 754        { 0xd045, 0, 1, 0x00 },
 755        { 0xd008, 0, 8, 0xdf },
 756        { 0xd009, 0, 2, 0x02 },
 757        { 0xd006, 0, 8, 0x44 },
 758        { 0xd007, 0, 2, 0x01 },
 759        { 0xd00c, 0, 8, 0x00 },
 760        { 0xd00d, 0, 2, 0x02 },
 761        { 0xd00a, 0, 8, 0xf6 },
 762        { 0xd00b, 0, 2, 0x01 },
 763        { 0x9bba, 0, 8, 0xf9 },
 764        { 0x9bc8, 0, 8, 0xaa },
 765        { 0x9bc3, 0, 8, 0xdf },
 766        { 0x9bc4, 0, 8, 0x02 },
 767        { 0x9bc5, 0, 8, 0x00 },
 768        { 0x9bc6, 0, 8, 0x02 },
 769        { 0x9bc9, 0, 8, 0xf0 },
 770        { 0xd011, 0, 8, 0x3c },
 771        { 0xd012, 0, 2, 0x01 },
 772        { 0xd013, 0, 8, 0xf7 },
 773        { 0xd014, 0, 2, 0x02 },
 774        { 0xd040, 0, 8, 0x0b },
 775        { 0xd041, 0, 2, 0x02 },
 776        { 0xd042, 0, 8, 0x4d },
 777        { 0xd043, 0, 2, 0x00 },
 778        { 0xd045, 1, 1, 0x00 },
 779        { 0x9bcf, 0, 1, 0x01 },
 780        { 0xd045, 2, 1, 0x01 },
 781        { 0xd04f, 0, 8, 0x9a },
 782        { 0xd050, 0, 1, 0x01 },
 783        { 0xd051, 0, 8, 0x5a },
 784        { 0xd052, 0, 1, 0x01 },
 785        { 0xd053, 0, 8, 0x50 },
 786        { 0xd054, 0, 8, 0x46 },
 787        { 0x9bd7, 0, 8, 0x0a },
 788        { 0x9bd8, 0, 8, 0x14 },
 789        { 0x9bd9, 0, 8, 0x08 },
 790};
 791
 792/* NXP TDA18271 tuner init
 793   AF9013_TUNER_TDA18271   = 156 */
 794static struct regdesc tuner_init_tda18271[] = {
 795        { 0x9bd5, 0, 8, 0x01 },
 796        { 0x9bd6, 0, 8, 0x04 },
 797        { 0xd1a0, 1, 1, 0x01 },
 798        { 0xd000, 0, 1, 0x01 },
 799        { 0xd000, 1, 1, 0x00 },
 800        { 0xd001, 1, 1, 0x01 },
 801        { 0xd001, 0, 1, 0x00 },
 802        { 0xd001, 5, 1, 0x00 },
 803        { 0xd002, 0, 5, 0x19 },
 804        { 0xd003, 0, 5, 0x1a },
 805        { 0xd004, 0, 5, 0x19 },
 806        { 0xd005, 0, 5, 0x1a },
 807        { 0xd00e, 0, 5, 0x10 },
 808        { 0xd00f, 0, 3, 0x04 },
 809        { 0xd00f, 3, 3, 0x05 },
 810        { 0xd010, 0, 3, 0x04 },
 811        { 0xd010, 3, 3, 0x05 },
 812        { 0xd016, 4, 4, 0x03 },
 813        { 0xd01f, 0, 6, 0x0a },
 814        { 0xd020, 0, 6, 0x0a },
 815        { 0x9bda, 0, 8, 0x01 },
 816        { 0x9be3, 0, 8, 0x01 },
 817        { 0xd1a0, 1, 1, 0x00 },
 818        { 0x9bbe, 0, 1, 0x01 },
 819        { 0x9bcc, 0, 1, 0x01 },
 820        { 0x9bb9, 0, 8, 0x00 },
 821        { 0x9bcd, 0, 8, 0x18 },
 822        { 0x9bff, 0, 8, 0x2c },
 823        { 0xd015, 0, 8, 0x46 },
 824        { 0xd016, 0, 1, 0x00 },
 825        { 0xd044, 0, 8, 0x46 },
 826        { 0xd045, 0, 1, 0x00 },
 827        { 0xd008, 0, 8, 0xdf },
 828        { 0xd009, 0, 2, 0x02 },
 829        { 0xd006, 0, 8, 0x44 },
 830        { 0xd007, 0, 2, 0x01 },
 831        { 0xd00c, 0, 8, 0x00 },
 832        { 0xd00d, 0, 2, 0x02 },
 833        { 0xd00a, 0, 8, 0xf6 },
 834        { 0xd00b, 0, 2, 0x01 },
 835        { 0x9bba, 0, 8, 0xf9 },
 836        { 0x9bc8, 0, 8, 0xaa },
 837        { 0x9bc3, 0, 8, 0xdf },
 838        { 0x9bc4, 0, 8, 0x02 },
 839        { 0x9bc5, 0, 8, 0x00 },
 840        { 0x9bc6, 0, 8, 0x02 },
 841        { 0x9bc9, 0, 8, 0xf0 },
 842        { 0xd011, 0, 8, 0x3c },
 843        { 0xd012, 0, 2, 0x01 },
 844        { 0xd013, 0, 8, 0xf7 },
 845        { 0xd014, 0, 2, 0x02 },
 846        { 0xd040, 0, 8, 0x0b },
 847        { 0xd041, 0, 2, 0x02 },
 848        { 0xd042, 0, 8, 0x4d },
 849        { 0xd043, 0, 2, 0x00 },
 850        { 0xd045, 1, 1, 0x00 },
 851        { 0x9bcf, 0, 1, 0x01 },
 852        { 0xd045, 2, 1, 0x01 },
 853        { 0xd04f, 0, 8, 0x9a },
 854        { 0xd050, 0, 1, 0x01 },
 855        { 0xd051, 0, 8, 0x5a },
 856        { 0xd052, 0, 1, 0x01 },
 857        { 0xd053, 0, 8, 0x50 },
 858        { 0xd054, 0, 8, 0x46 },
 859        { 0x9bd7, 0, 8, 0x0a },
 860        { 0x9bd8, 0, 8, 0x14 },
 861        { 0x9bd9, 0, 8, 0x08 },
 862        { 0x9bd0, 0, 8, 0xa8 },
 863        { 0x9be4, 0, 8, 0x7f },
 864        { 0x9bbd, 0, 8, 0xa8 },
 865        { 0x9be2, 0, 8, 0x20 },
 866        { 0x9bee, 0, 1, 0x01 },
 867};
 868
 869#endif /* _AF9013_PRIV_ */
 870