1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Afatech AF9013 demodulator driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2007 Antti Palosaari <crope@iki.fi> 6*4882a593Smuzhiyun * Copyright (C) 2011 Antti Palosaari <crope@iki.fi> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Thanks to Afatech who kindly provided information. 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef AF9013_PRIV_H 12*4882a593Smuzhiyun #define AF9013_PRIV_H 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include <media/dvb_frontend.h> 15*4882a593Smuzhiyun #include <media/dvb_math.h> 16*4882a593Smuzhiyun #include "af9013.h" 17*4882a593Smuzhiyun #include <linux/firmware.h> 18*4882a593Smuzhiyun #include <linux/i2c-mux.h> 19*4882a593Smuzhiyun #include <linux/math64.h> 20*4882a593Smuzhiyun #include <linux/regmap.h> 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #define AF9013_FIRMWARE "dvb-fe-af9013.fw" 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun struct af9013_reg_mask_val { 25*4882a593Smuzhiyun u16 reg; 26*4882a593Smuzhiyun u8 mask; 27*4882a593Smuzhiyun u8 val; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun struct af9013_coeff { 31*4882a593Smuzhiyun u32 clock; 32*4882a593Smuzhiyun u32 bandwidth_hz; 33*4882a593Smuzhiyun u8 val[24]; 34*4882a593Smuzhiyun }; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* pre-calculated coeff lookup table */ 37*4882a593Smuzhiyun static const struct af9013_coeff coeff_lut[] = { 38*4882a593Smuzhiyun /* 28.800 MHz */ 39*4882a593Smuzhiyun { 28800000, 8000000, { 0x02, 0x8a, 0x28, 0xa3, 0x05, 0x14, 40*4882a593Smuzhiyun 0x51, 0x11, 0x00, 0xa2, 0x8f, 0x3d, 0x00, 0xa2, 0x8a, 41*4882a593Smuzhiyun 0x29, 0x00, 0xa2, 0x85, 0x14, 0x01, 0x45, 0x14, 0x14 } }, 42*4882a593Smuzhiyun { 28800000, 7000000, { 0x02, 0x38, 0xe3, 0x8e, 0x04, 0x71, 43*4882a593Smuzhiyun 0xc7, 0x07, 0x00, 0x8e, 0x3d, 0x55, 0x00, 0x8e, 0x38, 44*4882a593Smuzhiyun 0xe4, 0x00, 0x8e, 0x34, 0x72, 0x01, 0x1c, 0x71, 0x32 } }, 45*4882a593Smuzhiyun { 28800000, 6000000, { 0x01, 0xe7, 0x9e, 0x7a, 0x03, 0xcf, 46*4882a593Smuzhiyun 0x3c, 0x3d, 0x00, 0x79, 0xeb, 0x6e, 0x00, 0x79, 0xe7, 47*4882a593Smuzhiyun 0x9e, 0x00, 0x79, 0xe3, 0xcf, 0x00, 0xf3, 0xcf, 0x0f } }, 48*4882a593Smuzhiyun /* 20.480 MHz */ 49*4882a593Smuzhiyun { 20480000, 8000000, { 0x03, 0x92, 0x49, 0x26, 0x07, 0x24, 50*4882a593Smuzhiyun 0x92, 0x13, 0x00, 0xe4, 0x99, 0x6e, 0x00, 0xe4, 0x92, 51*4882a593Smuzhiyun 0x49, 0x00, 0xe4, 0x8b, 0x25, 0x01, 0xc9, 0x24, 0x25 } }, 52*4882a593Smuzhiyun { 20480000, 7000000, { 0x03, 0x20, 0x00, 0x01, 0x06, 0x40, 53*4882a593Smuzhiyun 0x00, 0x00, 0x00, 0xc8, 0x06, 0x40, 0x00, 0xc8, 0x00, 54*4882a593Smuzhiyun 0x00, 0x00, 0xc7, 0xf9, 0xc0, 0x01, 0x90, 0x00, 0x00 } }, 55*4882a593Smuzhiyun { 20480000, 6000000, { 0x02, 0xad, 0xb6, 0xdc, 0x05, 0x5b, 56*4882a593Smuzhiyun 0x6d, 0x2e, 0x00, 0xab, 0x73, 0x13, 0x00, 0xab, 0x6d, 57*4882a593Smuzhiyun 0xb7, 0x00, 0xab, 0x68, 0x5c, 0x01, 0x56, 0xdb, 0x1c } }, 58*4882a593Smuzhiyun /* 28.000 MHz */ 59*4882a593Smuzhiyun { 28000000, 8000000, { 0x02, 0x9c, 0xbc, 0x15, 0x05, 0x39, 60*4882a593Smuzhiyun 0x78, 0x0a, 0x00, 0xa7, 0x34, 0x3f, 0x00, 0xa7, 0x2f, 61*4882a593Smuzhiyun 0x05, 0x00, 0xa7, 0x29, 0xcc, 0x01, 0x4e, 0x5e, 0x03 } }, 62*4882a593Smuzhiyun { 28000000, 7000000, { 0x02, 0x49, 0x24, 0x92, 0x04, 0x92, 63*4882a593Smuzhiyun 0x49, 0x09, 0x00, 0x92, 0x4d, 0xb7, 0x00, 0x92, 0x49, 64*4882a593Smuzhiyun 0x25, 0x00, 0x92, 0x44, 0x92, 0x01, 0x24, 0x92, 0x12 } }, 65*4882a593Smuzhiyun { 28000000, 6000000, { 0x01, 0xf5, 0x8d, 0x10, 0x03, 0xeb, 66*4882a593Smuzhiyun 0x1a, 0x08, 0x00, 0x7d, 0x67, 0x2f, 0x00, 0x7d, 0x63, 67*4882a593Smuzhiyun 0x44, 0x00, 0x7d, 0x5f, 0x59, 0x00, 0xfa, 0xc6, 0x22 } }, 68*4882a593Smuzhiyun /* 25.000 MHz */ 69*4882a593Smuzhiyun { 25000000, 8000000, { 0x02, 0xec, 0xfb, 0x9d, 0x05, 0xd9, 70*4882a593Smuzhiyun 0xf7, 0x0e, 0x00, 0xbb, 0x44, 0xc1, 0x00, 0xbb, 0x3e, 71*4882a593Smuzhiyun 0xe7, 0x00, 0xbb, 0x39, 0x0d, 0x01, 0x76, 0x7d, 0x34 } }, 72*4882a593Smuzhiyun { 25000000, 7000000, { 0x02, 0x8f, 0x5c, 0x29, 0x05, 0x1e, 73*4882a593Smuzhiyun 0xb8, 0x14, 0x00, 0xa3, 0xdc, 0x29, 0x00, 0xa3, 0xd7, 74*4882a593Smuzhiyun 0x0a, 0x00, 0xa3, 0xd1, 0xec, 0x01, 0x47, 0xae, 0x05 } }, 75*4882a593Smuzhiyun { 25000000, 6000000, { 0x02, 0x31, 0xbc, 0xb5, 0x04, 0x63, 76*4882a593Smuzhiyun 0x79, 0x1b, 0x00, 0x8c, 0x73, 0x91, 0x00, 0x8c, 0x6f, 77*4882a593Smuzhiyun 0x2d, 0x00, 0x8c, 0x6a, 0xca, 0x01, 0x18, 0xde, 0x17 } }, 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun /* 81*4882a593Smuzhiyun * Afatech AF9013 demod init 82*4882a593Smuzhiyun */ 83*4882a593Smuzhiyun static const struct af9013_reg_mask_val demod_init_tab[] = { 84*4882a593Smuzhiyun {0xd73a, 0xff, 0xa1}, 85*4882a593Smuzhiyun {0xd73b, 0xff, 0x1f}, 86*4882a593Smuzhiyun {0xd73c, 0xf0, 0xa0}, 87*4882a593Smuzhiyun {0xd732, 0x08, 0x00}, 88*4882a593Smuzhiyun {0xd731, 0x30, 0x30}, 89*4882a593Smuzhiyun {0xd73d, 0x80, 0x80}, 90*4882a593Smuzhiyun {0xd740, 0x01, 0x00}, 91*4882a593Smuzhiyun {0xd740, 0x02, 0x00}, 92*4882a593Smuzhiyun {0xd740, 0x04, 0x00}, 93*4882a593Smuzhiyun {0xd740, 0x08, 0x08}, 94*4882a593Smuzhiyun {0xd3c1, 0x10, 0x10}, 95*4882a593Smuzhiyun {0x9124, 0xff, 0x58}, 96*4882a593Smuzhiyun {0x9125, 0x03, 0x02}, 97*4882a593Smuzhiyun {0xd3a2, 0xff, 0x00}, 98*4882a593Smuzhiyun {0xd3a3, 0xff, 0x04}, 99*4882a593Smuzhiyun {0xd305, 0xff, 0x32}, 100*4882a593Smuzhiyun {0xd306, 0xff, 0x10}, 101*4882a593Smuzhiyun {0xd304, 0xff, 0x04}, 102*4882a593Smuzhiyun {0x9112, 0x01, 0x01}, 103*4882a593Smuzhiyun {0x911d, 0x01, 0x01}, 104*4882a593Smuzhiyun {0x911a, 0x01, 0x01}, 105*4882a593Smuzhiyun {0x911b, 0x01, 0x01}, 106*4882a593Smuzhiyun {0x9bce, 0x0f, 0x02}, 107*4882a593Smuzhiyun {0x9116, 0x01, 0x01}, 108*4882a593Smuzhiyun {0x9122, 0xff, 0xd0}, 109*4882a593Smuzhiyun {0xd2e0, 0xff, 0xd0}, 110*4882a593Smuzhiyun {0xd2e9, 0x0f, 0x0d}, 111*4882a593Smuzhiyun {0xd38c, 0xff, 0xfc}, 112*4882a593Smuzhiyun {0xd38d, 0xff, 0x00}, 113*4882a593Smuzhiyun {0xd38e, 0xff, 0x7e}, 114*4882a593Smuzhiyun {0xd38f, 0xff, 0x00}, 115*4882a593Smuzhiyun {0xd390, 0xff, 0x2f}, 116*4882a593Smuzhiyun {0xd145, 0x10, 0x10}, 117*4882a593Smuzhiyun {0xd1a9, 0x10, 0x10}, 118*4882a593Smuzhiyun {0xd158, 0xe0, 0x20}, 119*4882a593Smuzhiyun {0xd159, 0x3f, 0x06}, 120*4882a593Smuzhiyun {0xd167, 0xff, 0x00}, 121*4882a593Smuzhiyun {0xd168, 0x0f, 0x07}, 122*4882a593Smuzhiyun {0xd1c3, 0xe0, 0x00}, 123*4882a593Smuzhiyun {0xd1c4, 0x3f, 0x00}, 124*4882a593Smuzhiyun {0xd1c5, 0x7f, 0x10}, 125*4882a593Smuzhiyun {0xd1c6, 0x07, 0x02}, 126*4882a593Smuzhiyun {0xd080, 0x7c, 0x0c}, 127*4882a593Smuzhiyun {0xd081, 0xf0, 0x90}, 128*4882a593Smuzhiyun {0xd098, 0xf0, 0xf0}, 129*4882a593Smuzhiyun {0xd098, 0x0f, 0x03}, 130*4882a593Smuzhiyun {0xdbc0, 0x10, 0x10}, 131*4882a593Smuzhiyun {0xdbc7, 0xff, 0x08}, 132*4882a593Smuzhiyun {0xdbc8, 0xf0, 0x00}, 133*4882a593Smuzhiyun {0xdbc9, 0x1f, 0x01}, 134*4882a593Smuzhiyun {0xd280, 0xff, 0xe0}, 135*4882a593Smuzhiyun {0xd281, 0xff, 0xff}, 136*4882a593Smuzhiyun {0xd282, 0xff, 0xff}, 137*4882a593Smuzhiyun {0xd283, 0xff, 0xc3}, 138*4882a593Smuzhiyun {0xd284, 0xff, 0xff}, 139*4882a593Smuzhiyun {0xd285, 0x0f, 0x01}, 140*4882a593Smuzhiyun {0xd0f0, 0x7f, 0x1a}, 141*4882a593Smuzhiyun {0xd0f1, 0x10, 0x10}, 142*4882a593Smuzhiyun {0xd0f2, 0xff, 0x0c}, 143*4882a593Smuzhiyun {0xd101, 0xe0, 0xc0}, 144*4882a593Smuzhiyun {0xd103, 0x0f, 0x08}, 145*4882a593Smuzhiyun {0xd0f8, 0x7f, 0x20}, 146*4882a593Smuzhiyun {0xd111, 0x20, 0x00}, 147*4882a593Smuzhiyun {0xd111, 0x40, 0x00}, 148*4882a593Smuzhiyun {0x910b, 0xff, 0x0a}, 149*4882a593Smuzhiyun {0x9115, 0xff, 0x02}, 150*4882a593Smuzhiyun {0x910c, 0xff, 0x02}, 151*4882a593Smuzhiyun {0x910d, 0xff, 0x08}, 152*4882a593Smuzhiyun {0x910e, 0xff, 0x0a}, 153*4882a593Smuzhiyun {0x9bf6, 0xff, 0x06}, 154*4882a593Smuzhiyun {0x9bf8, 0xff, 0x02}, 155*4882a593Smuzhiyun {0x9bf7, 0xff, 0x05}, 156*4882a593Smuzhiyun {0x9bf9, 0xff, 0x0f}, 157*4882a593Smuzhiyun {0x9bfc, 0xff, 0x13}, 158*4882a593Smuzhiyun {0x9bd3, 0xff, 0xff}, 159*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 160*4882a593Smuzhiyun {0x9bcc, 0x01, 0x01}, 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun /* 164*4882a593Smuzhiyun * Panasonic ENV77H11D5 tuner init 165*4882a593Smuzhiyun * AF9013_TUNER_ENV77H11D5 0x81 166*4882a593Smuzhiyun */ 167*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_env77h11d5[] = { 168*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 169*4882a593Smuzhiyun {0x9bd6, 0xff, 0x03}, 170*4882a593Smuzhiyun {0x9bbe, 0xff, 0x01}, 171*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 172*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 173*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 174*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 175*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 176*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 177*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 178*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 179*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 180*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 181*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 182*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 183*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 184*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 185*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 186*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 187*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 188*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 189*4882a593Smuzhiyun {0x9bda, 0xff, 0x00}, 190*4882a593Smuzhiyun {0x9be3, 0xff, 0x00}, 191*4882a593Smuzhiyun {0xd015, 0xff, 0x50}, 192*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 193*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 194*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 195*4882a593Smuzhiyun {0xd008, 0xff, 0xdf}, 196*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 197*4882a593Smuzhiyun {0xd006, 0xff, 0x44}, 198*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 199*4882a593Smuzhiyun {0xd00c, 0xff, 0xeb}, 200*4882a593Smuzhiyun {0xd00d, 0x03, 0x02}, 201*4882a593Smuzhiyun {0xd00a, 0xff, 0xf4}, 202*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 203*4882a593Smuzhiyun {0x9bba, 0xff, 0xf9}, 204*4882a593Smuzhiyun {0x9bc3, 0xff, 0xdf}, 205*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 206*4882a593Smuzhiyun {0x9bc5, 0xff, 0xeb}, 207*4882a593Smuzhiyun {0x9bc6, 0xff, 0x02}, 208*4882a593Smuzhiyun {0x9bc9, 0xff, 0x52}, 209*4882a593Smuzhiyun {0xd011, 0xff, 0x3c}, 210*4882a593Smuzhiyun {0xd012, 0x03, 0x01}, 211*4882a593Smuzhiyun {0xd013, 0xff, 0xf7}, 212*4882a593Smuzhiyun {0xd014, 0x03, 0x02}, 213*4882a593Smuzhiyun {0xd040, 0xff, 0x0b}, 214*4882a593Smuzhiyun {0xd041, 0x03, 0x02}, 215*4882a593Smuzhiyun {0xd042, 0xff, 0x4d}, 216*4882a593Smuzhiyun {0xd043, 0x03, 0x00}, 217*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 218*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 219*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 220*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 221*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 222*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 223*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 224*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 225*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 226*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 227*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 228*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 229*4882a593Smuzhiyun }; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun /* 232*4882a593Smuzhiyun * Microtune MT2060 tuner init 233*4882a593Smuzhiyun * AF9013_TUNER_MT2060 0x82 234*4882a593Smuzhiyun */ 235*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_mt2060[] = { 236*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 237*4882a593Smuzhiyun {0x9bd6, 0xff, 0x07}, 238*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 239*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 240*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 241*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 242*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 243*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 244*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 245*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 246*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 247*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 248*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 249*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 250*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 251*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 252*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 253*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 254*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 255*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 256*4882a593Smuzhiyun {0x9bda, 0xff, 0x00}, 257*4882a593Smuzhiyun {0x9be3, 0xff, 0x00}, 258*4882a593Smuzhiyun {0x9bbe, 0x01, 0x00}, 259*4882a593Smuzhiyun {0x9bcc, 0x01, 0x00}, 260*4882a593Smuzhiyun {0x9bb9, 0xff, 0x75}, 261*4882a593Smuzhiyun {0x9bcd, 0xff, 0x24}, 262*4882a593Smuzhiyun {0x9bff, 0xff, 0x30}, 263*4882a593Smuzhiyun {0xd015, 0xff, 0x46}, 264*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 265*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 266*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 267*4882a593Smuzhiyun {0xd008, 0xff, 0x0f}, 268*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 269*4882a593Smuzhiyun {0xd006, 0xff, 0x32}, 270*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 271*4882a593Smuzhiyun {0xd00c, 0xff, 0x36}, 272*4882a593Smuzhiyun {0xd00d, 0x03, 0x03}, 273*4882a593Smuzhiyun {0xd00a, 0xff, 0x35}, 274*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 275*4882a593Smuzhiyun {0x9bc7, 0xff, 0x07}, 276*4882a593Smuzhiyun {0x9bc8, 0xff, 0x90}, 277*4882a593Smuzhiyun {0x9bc3, 0xff, 0x0f}, 278*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 279*4882a593Smuzhiyun {0x9bc5, 0xff, 0x36}, 280*4882a593Smuzhiyun {0x9bc6, 0xff, 0x03}, 281*4882a593Smuzhiyun {0x9bba, 0xff, 0xc9}, 282*4882a593Smuzhiyun {0x9bc9, 0xff, 0x79}, 283*4882a593Smuzhiyun {0xd011, 0xff, 0x10}, 284*4882a593Smuzhiyun {0xd012, 0x03, 0x01}, 285*4882a593Smuzhiyun {0xd013, 0xff, 0x45}, 286*4882a593Smuzhiyun {0xd014, 0x03, 0x03}, 287*4882a593Smuzhiyun {0xd040, 0xff, 0x98}, 288*4882a593Smuzhiyun {0xd041, 0x03, 0x00}, 289*4882a593Smuzhiyun {0xd042, 0xff, 0xcf}, 290*4882a593Smuzhiyun {0xd043, 0x03, 0x03}, 291*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 292*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 293*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 294*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 295*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 296*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 297*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 298*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 299*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 300*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 301*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 302*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 303*4882a593Smuzhiyun {0x9bd0, 0xff, 0xcc}, 304*4882a593Smuzhiyun {0x9be4, 0xff, 0xa0}, 305*4882a593Smuzhiyun {0x9bbd, 0xff, 0x8e}, 306*4882a593Smuzhiyun {0x9be2, 0xff, 0x4d}, 307*4882a593Smuzhiyun {0x9bee, 0x01, 0x01}, 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun /* 311*4882a593Smuzhiyun * Microtune MT2060 tuner init 312*4882a593Smuzhiyun * AF9013_TUNER_MT2060_2 0x93 313*4882a593Smuzhiyun */ 314*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_mt2060_2[] = { 315*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 316*4882a593Smuzhiyun {0x9bd6, 0xff, 0x06}, 317*4882a593Smuzhiyun {0x9bbe, 0xff, 0x01}, 318*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 319*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 320*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 321*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 322*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 323*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 324*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 325*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 326*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 327*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 328*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 329*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 330*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 331*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 332*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 333*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 334*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 335*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 336*4882a593Smuzhiyun {0xd015, 0xff, 0x46}, 337*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 338*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 339*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 340*4882a593Smuzhiyun {0xd008, 0xff, 0x0f}, 341*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 342*4882a593Smuzhiyun {0xd006, 0xff, 0x32}, 343*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 344*4882a593Smuzhiyun {0xd00c, 0xff, 0x36}, 345*4882a593Smuzhiyun {0xd00d, 0x03, 0x03}, 346*4882a593Smuzhiyun {0xd00a, 0xff, 0x35}, 347*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 348*4882a593Smuzhiyun {0x9bc7, 0xff, 0x07}, 349*4882a593Smuzhiyun {0x9bc8, 0xff, 0x90}, 350*4882a593Smuzhiyun {0x9bc3, 0xff, 0x0f}, 351*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 352*4882a593Smuzhiyun {0x9bc5, 0xff, 0x36}, 353*4882a593Smuzhiyun {0x9bc6, 0xff, 0x03}, 354*4882a593Smuzhiyun {0x9bba, 0xff, 0xc9}, 355*4882a593Smuzhiyun {0x9bc9, 0xff, 0x79}, 356*4882a593Smuzhiyun {0xd011, 0xff, 0x10}, 357*4882a593Smuzhiyun {0xd012, 0x03, 0x01}, 358*4882a593Smuzhiyun {0xd013, 0xff, 0x45}, 359*4882a593Smuzhiyun {0xd014, 0x03, 0x03}, 360*4882a593Smuzhiyun {0xd040, 0xff, 0x98}, 361*4882a593Smuzhiyun {0xd041, 0x03, 0x00}, 362*4882a593Smuzhiyun {0xd042, 0xff, 0xcf}, 363*4882a593Smuzhiyun {0xd043, 0x03, 0x03}, 364*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 365*4882a593Smuzhiyun {0x9bcf, 0xff, 0x01}, 366*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 367*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 368*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 369*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 370*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 371*4882a593Smuzhiyun {0xd053, 0xff, 0x96}, 372*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 373*4882a593Smuzhiyun {0xd045, 0x80, 0x00}, 374*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 375*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 376*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 377*4882a593Smuzhiyun }; 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun /* 380*4882a593Smuzhiyun * MaxLinear MXL5003 tuner init 381*4882a593Smuzhiyun * AF9013_TUNER_MXL5003D 0x03 382*4882a593Smuzhiyun */ 383*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_mxl5003d[] = { 384*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 385*4882a593Smuzhiyun {0x9bd6, 0xff, 0x09}, 386*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 387*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 388*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 389*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 390*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 391*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 392*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 393*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 394*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 395*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 396*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 397*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 398*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 399*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 400*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 401*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 402*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 403*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 404*4882a593Smuzhiyun {0x9bda, 0xff, 0x00}, 405*4882a593Smuzhiyun {0x9be3, 0xff, 0x00}, 406*4882a593Smuzhiyun {0x9bfc, 0xff, 0x0f}, 407*4882a593Smuzhiyun {0x9bf6, 0xff, 0x01}, 408*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 409*4882a593Smuzhiyun {0xd015, 0xff, 0x33}, 410*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 411*4882a593Smuzhiyun {0xd044, 0xff, 0x40}, 412*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 413*4882a593Smuzhiyun {0xd008, 0xff, 0x0f}, 414*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 415*4882a593Smuzhiyun {0xd006, 0xff, 0x6c}, 416*4882a593Smuzhiyun {0xd007, 0x03, 0x00}, 417*4882a593Smuzhiyun {0xd00c, 0xff, 0x3d}, 418*4882a593Smuzhiyun {0xd00d, 0x03, 0x00}, 419*4882a593Smuzhiyun {0xd00a, 0xff, 0x45}, 420*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 421*4882a593Smuzhiyun {0x9bc7, 0xff, 0x07}, 422*4882a593Smuzhiyun {0x9bc8, 0xff, 0x52}, 423*4882a593Smuzhiyun {0x9bc3, 0xff, 0x0f}, 424*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 425*4882a593Smuzhiyun {0x9bc5, 0xff, 0x3d}, 426*4882a593Smuzhiyun {0x9bc6, 0xff, 0x00}, 427*4882a593Smuzhiyun {0x9bba, 0xff, 0xa2}, 428*4882a593Smuzhiyun {0x9bc9, 0xff, 0xa0}, 429*4882a593Smuzhiyun {0xd011, 0xff, 0x56}, 430*4882a593Smuzhiyun {0xd012, 0x03, 0x00}, 431*4882a593Smuzhiyun {0xd013, 0xff, 0x50}, 432*4882a593Smuzhiyun {0xd014, 0x03, 0x00}, 433*4882a593Smuzhiyun {0xd040, 0xff, 0x56}, 434*4882a593Smuzhiyun {0xd041, 0x03, 0x00}, 435*4882a593Smuzhiyun {0xd042, 0xff, 0x50}, 436*4882a593Smuzhiyun {0xd043, 0x03, 0x00}, 437*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 438*4882a593Smuzhiyun {0x9bcf, 0xff, 0x01}, 439*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 440*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 441*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 442*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 443*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 444*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 445*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 446*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 447*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 448*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 449*4882a593Smuzhiyun }; 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun /* 452*4882a593Smuzhiyun * MaxLinear MXL5005S & MXL5007T tuner init 453*4882a593Smuzhiyun * AF9013_TUNER_MXL5005D 0x0d 454*4882a593Smuzhiyun * AF9013_TUNER_MXL5005R 0x1e 455*4882a593Smuzhiyun * AF9013_TUNER_MXL5007T 0xb1 456*4882a593Smuzhiyun */ 457*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_mxl5005[] = { 458*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 459*4882a593Smuzhiyun {0x9bd6, 0xff, 0x07}, 460*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 461*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 462*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 463*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 464*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 465*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 466*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 467*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 468*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 469*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 470*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 471*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 472*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 473*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 474*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 475*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 476*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 477*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 478*4882a593Smuzhiyun {0x9bda, 0xff, 0x01}, 479*4882a593Smuzhiyun {0x9be3, 0xff, 0x01}, 480*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 481*4882a593Smuzhiyun {0x9bcc, 0x01, 0x01}, 482*4882a593Smuzhiyun {0x9bb9, 0xff, 0x00}, 483*4882a593Smuzhiyun {0x9bcd, 0xff, 0x28}, 484*4882a593Smuzhiyun {0x9bff, 0xff, 0x24}, 485*4882a593Smuzhiyun {0xd015, 0xff, 0x40}, 486*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 487*4882a593Smuzhiyun {0xd044, 0xff, 0x40}, 488*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 489*4882a593Smuzhiyun {0xd008, 0xff, 0x0f}, 490*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 491*4882a593Smuzhiyun {0xd006, 0xff, 0x73}, 492*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 493*4882a593Smuzhiyun {0xd00c, 0xff, 0xfa}, 494*4882a593Smuzhiyun {0xd00d, 0x03, 0x01}, 495*4882a593Smuzhiyun {0xd00a, 0xff, 0xff}, 496*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 497*4882a593Smuzhiyun {0x9bc7, 0xff, 0x23}, 498*4882a593Smuzhiyun {0x9bc8, 0xff, 0x55}, 499*4882a593Smuzhiyun {0x9bc3, 0xff, 0x01}, 500*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 501*4882a593Smuzhiyun {0x9bc5, 0xff, 0xfa}, 502*4882a593Smuzhiyun {0x9bc6, 0xff, 0x01}, 503*4882a593Smuzhiyun {0x9bba, 0xff, 0xff}, 504*4882a593Smuzhiyun {0x9bc9, 0xff, 0xff}, 505*4882a593Smuzhiyun {0x9bd3, 0xff, 0x95}, 506*4882a593Smuzhiyun {0xd011, 0xff, 0x70}, 507*4882a593Smuzhiyun {0xd012, 0x03, 0x01}, 508*4882a593Smuzhiyun {0xd013, 0xff, 0xfb}, 509*4882a593Smuzhiyun {0xd014, 0x03, 0x01}, 510*4882a593Smuzhiyun {0xd040, 0xff, 0x70}, 511*4882a593Smuzhiyun {0xd041, 0x03, 0x01}, 512*4882a593Smuzhiyun {0xd042, 0xff, 0xfb}, 513*4882a593Smuzhiyun {0xd043, 0x03, 0x01}, 514*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 515*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 516*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 517*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 518*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 519*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 520*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 521*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 522*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 523*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 524*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 525*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 526*4882a593Smuzhiyun {0x9bd0, 0xff, 0x93}, 527*4882a593Smuzhiyun {0x9be4, 0xff, 0xfe}, 528*4882a593Smuzhiyun {0x9bbd, 0xff, 0x63}, 529*4882a593Smuzhiyun {0x9be2, 0xff, 0xfe}, 530*4882a593Smuzhiyun {0x9bee, 0x01, 0x01}, 531*4882a593Smuzhiyun }; 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun /* 534*4882a593Smuzhiyun * Quantek QT1010 tuner init 535*4882a593Smuzhiyun * AF9013_TUNER_QT1010 0x86 536*4882a593Smuzhiyun * AF9013_TUNER_QT1010A 0xa2 537*4882a593Smuzhiyun */ 538*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_qt1010[] = { 539*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 540*4882a593Smuzhiyun {0x9bd6, 0xff, 0x09}, 541*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 542*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 543*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 544*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 545*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 546*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 547*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 548*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 549*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 550*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 551*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 552*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 553*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 554*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 555*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 556*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 557*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 558*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 559*4882a593Smuzhiyun {0x9bda, 0xff, 0x01}, 560*4882a593Smuzhiyun {0x9be3, 0xff, 0x01}, 561*4882a593Smuzhiyun {0xd015, 0xff, 0x46}, 562*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 563*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 564*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 565*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 566*4882a593Smuzhiyun {0x9bcc, 0x01, 0x01}, 567*4882a593Smuzhiyun {0x9bb9, 0xff, 0x00}, 568*4882a593Smuzhiyun {0x9bcd, 0xff, 0x28}, 569*4882a593Smuzhiyun {0x9bff, 0xff, 0x20}, 570*4882a593Smuzhiyun {0xd008, 0xff, 0x0f}, 571*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 572*4882a593Smuzhiyun {0xd006, 0xff, 0x99}, 573*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 574*4882a593Smuzhiyun {0xd00c, 0xff, 0x0f}, 575*4882a593Smuzhiyun {0xd00d, 0x03, 0x02}, 576*4882a593Smuzhiyun {0xd00a, 0xff, 0x50}, 577*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 578*4882a593Smuzhiyun {0x9bc7, 0xff, 0x00}, 579*4882a593Smuzhiyun {0x9bc8, 0xff, 0x00}, 580*4882a593Smuzhiyun {0x9bc3, 0xff, 0x0f}, 581*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 582*4882a593Smuzhiyun {0x9bc5, 0xff, 0x0f}, 583*4882a593Smuzhiyun {0x9bc6, 0xff, 0x02}, 584*4882a593Smuzhiyun {0x9bba, 0xff, 0xc5}, 585*4882a593Smuzhiyun {0x9bc9, 0xff, 0xff}, 586*4882a593Smuzhiyun {0xd011, 0xff, 0x58}, 587*4882a593Smuzhiyun {0xd012, 0x03, 0x02}, 588*4882a593Smuzhiyun {0xd013, 0xff, 0x89}, 589*4882a593Smuzhiyun {0xd014, 0x03, 0x01}, 590*4882a593Smuzhiyun {0xd040, 0xff, 0x58}, 591*4882a593Smuzhiyun {0xd041, 0x03, 0x02}, 592*4882a593Smuzhiyun {0xd042, 0xff, 0x89}, 593*4882a593Smuzhiyun {0xd043, 0x03, 0x01}, 594*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 595*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 596*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 597*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 598*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 599*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 600*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 601*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 602*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 603*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 604*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 605*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 606*4882a593Smuzhiyun {0x9bd0, 0xff, 0xcd}, 607*4882a593Smuzhiyun {0x9be4, 0xff, 0xbb}, 608*4882a593Smuzhiyun {0x9bbd, 0xff, 0x93}, 609*4882a593Smuzhiyun {0x9be2, 0xff, 0x80}, 610*4882a593Smuzhiyun {0x9bee, 0x01, 0x01}, 611*4882a593Smuzhiyun }; 612*4882a593Smuzhiyun 613*4882a593Smuzhiyun /* 614*4882a593Smuzhiyun * Freescale MC44S803 tuner init 615*4882a593Smuzhiyun * AF9013_TUNER_MC44S803 0x85 616*4882a593Smuzhiyun */ 617*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_mc44s803[] = { 618*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 619*4882a593Smuzhiyun {0x9bd6, 0xff, 0x06}, 620*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 621*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 622*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 623*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 624*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 625*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 626*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 627*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 628*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 629*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 630*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 631*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 632*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 633*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 634*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 635*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 636*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 637*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 638*4882a593Smuzhiyun {0x9bda, 0xff, 0x00}, 639*4882a593Smuzhiyun {0x9be3, 0xff, 0x00}, 640*4882a593Smuzhiyun {0x9bf6, 0xff, 0x01}, 641*4882a593Smuzhiyun {0x9bf8, 0xff, 0x02}, 642*4882a593Smuzhiyun {0x9bf9, 0xff, 0x02}, 643*4882a593Smuzhiyun {0x9bfc, 0xff, 0x1f}, 644*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 645*4882a593Smuzhiyun {0x9bcc, 0x01, 0x01}, 646*4882a593Smuzhiyun {0x9bb9, 0xff, 0x00}, 647*4882a593Smuzhiyun {0x9bcd, 0xff, 0x24}, 648*4882a593Smuzhiyun {0x9bff, 0xff, 0x24}, 649*4882a593Smuzhiyun {0xd015, 0xff, 0x46}, 650*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 651*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 652*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 653*4882a593Smuzhiyun {0xd008, 0xff, 0x01}, 654*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 655*4882a593Smuzhiyun {0xd006, 0xff, 0x7b}, 656*4882a593Smuzhiyun {0xd007, 0x03, 0x00}, 657*4882a593Smuzhiyun {0xd00c, 0xff, 0x7c}, 658*4882a593Smuzhiyun {0xd00d, 0x03, 0x02}, 659*4882a593Smuzhiyun {0xd00a, 0xff, 0xfe}, 660*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 661*4882a593Smuzhiyun {0x9bc7, 0xff, 0x08}, 662*4882a593Smuzhiyun {0x9bc8, 0xff, 0x9a}, 663*4882a593Smuzhiyun {0x9bc3, 0xff, 0x01}, 664*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 665*4882a593Smuzhiyun {0x9bc5, 0xff, 0x7c}, 666*4882a593Smuzhiyun {0x9bc6, 0xff, 0x02}, 667*4882a593Smuzhiyun {0x9bba, 0xff, 0xfc}, 668*4882a593Smuzhiyun {0x9bc9, 0xff, 0xaa}, 669*4882a593Smuzhiyun {0xd011, 0xff, 0x6b}, 670*4882a593Smuzhiyun {0xd012, 0x03, 0x00}, 671*4882a593Smuzhiyun {0xd013, 0xff, 0x88}, 672*4882a593Smuzhiyun {0xd014, 0x03, 0x02}, 673*4882a593Smuzhiyun {0xd040, 0xff, 0x6b}, 674*4882a593Smuzhiyun {0xd041, 0x03, 0x00}, 675*4882a593Smuzhiyun {0xd042, 0xff, 0x7c}, 676*4882a593Smuzhiyun {0xd043, 0x03, 0x02}, 677*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 678*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 679*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 680*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 681*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 682*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 683*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 684*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 685*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 686*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 687*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 688*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 689*4882a593Smuzhiyun {0x9bd0, 0xff, 0x9e}, 690*4882a593Smuzhiyun {0x9be4, 0xff, 0xff}, 691*4882a593Smuzhiyun {0x9bbd, 0xff, 0x9e}, 692*4882a593Smuzhiyun {0x9be2, 0xff, 0x25}, 693*4882a593Smuzhiyun {0x9bee, 0x01, 0x01}, 694*4882a593Smuzhiyun {0xd73b, 0x08, 0x00}, 695*4882a593Smuzhiyun }; 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun /* 698*4882a593Smuzhiyun * Unknown, probably for tin can tuner, tuner init 699*4882a593Smuzhiyun * AF9013_TUNER_UNKNOWN 0x8c 700*4882a593Smuzhiyun */ 701*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_unknown[] = { 702*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 703*4882a593Smuzhiyun {0x9bd6, 0xff, 0x02}, 704*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 705*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 706*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 707*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 708*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 709*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 710*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 711*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 712*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 713*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 714*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 715*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 716*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 717*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 718*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 719*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 720*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 721*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 722*4882a593Smuzhiyun {0x9bda, 0xff, 0x01}, 723*4882a593Smuzhiyun {0x9be3, 0xff, 0x01}, 724*4882a593Smuzhiyun {0xd1a0, 0x02, 0x00}, 725*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 726*4882a593Smuzhiyun {0x9bcc, 0x01, 0x01}, 727*4882a593Smuzhiyun {0x9bb9, 0xff, 0x00}, 728*4882a593Smuzhiyun {0x9bcd, 0xff, 0x18}, 729*4882a593Smuzhiyun {0x9bff, 0xff, 0x2c}, 730*4882a593Smuzhiyun {0xd015, 0xff, 0x46}, 731*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 732*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 733*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 734*4882a593Smuzhiyun {0xd008, 0xff, 0xdf}, 735*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 736*4882a593Smuzhiyun {0xd006, 0xff, 0x44}, 737*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 738*4882a593Smuzhiyun {0xd00c, 0xff, 0x00}, 739*4882a593Smuzhiyun {0xd00d, 0x03, 0x02}, 740*4882a593Smuzhiyun {0xd00a, 0xff, 0xf6}, 741*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 742*4882a593Smuzhiyun {0x9bba, 0xff, 0xf9}, 743*4882a593Smuzhiyun {0x9bc8, 0xff, 0xaa}, 744*4882a593Smuzhiyun {0x9bc3, 0xff, 0xdf}, 745*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 746*4882a593Smuzhiyun {0x9bc5, 0xff, 0x00}, 747*4882a593Smuzhiyun {0x9bc6, 0xff, 0x02}, 748*4882a593Smuzhiyun {0x9bc9, 0xff, 0xf0}, 749*4882a593Smuzhiyun {0xd011, 0xff, 0x3c}, 750*4882a593Smuzhiyun {0xd012, 0x03, 0x01}, 751*4882a593Smuzhiyun {0xd013, 0xff, 0xf7}, 752*4882a593Smuzhiyun {0xd014, 0x03, 0x02}, 753*4882a593Smuzhiyun {0xd040, 0xff, 0x0b}, 754*4882a593Smuzhiyun {0xd041, 0x03, 0x02}, 755*4882a593Smuzhiyun {0xd042, 0xff, 0x4d}, 756*4882a593Smuzhiyun {0xd043, 0x03, 0x00}, 757*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 758*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 759*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 760*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 761*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 762*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 763*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 764*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 765*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 766*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 767*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 768*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 769*4882a593Smuzhiyun }; 770*4882a593Smuzhiyun 771*4882a593Smuzhiyun /* 772*4882a593Smuzhiyun * NXP TDA18271 & TDA18218 tuner init 773*4882a593Smuzhiyun * AF9013_TUNER_TDA18271 0x9c 774*4882a593Smuzhiyun * AF9013_TUNER_TDA18218 0xb3 775*4882a593Smuzhiyun */ 776*4882a593Smuzhiyun static const struct af9013_reg_mask_val tuner_init_tab_tda18271[] = { 777*4882a593Smuzhiyun {0x9bd5, 0xff, 0x01}, 778*4882a593Smuzhiyun {0x9bd6, 0xff, 0x04}, 779*4882a593Smuzhiyun {0xd1a0, 0x02, 0x02}, 780*4882a593Smuzhiyun {0xd000, 0x01, 0x01}, 781*4882a593Smuzhiyun {0xd000, 0x02, 0x00}, 782*4882a593Smuzhiyun {0xd001, 0x02, 0x02}, 783*4882a593Smuzhiyun {0xd001, 0x01, 0x00}, 784*4882a593Smuzhiyun {0xd001, 0x20, 0x00}, 785*4882a593Smuzhiyun {0xd002, 0x1f, 0x19}, 786*4882a593Smuzhiyun {0xd003, 0x1f, 0x1a}, 787*4882a593Smuzhiyun {0xd004, 0x1f, 0x19}, 788*4882a593Smuzhiyun {0xd005, 0x1f, 0x1a}, 789*4882a593Smuzhiyun {0xd00e, 0x1f, 0x10}, 790*4882a593Smuzhiyun {0xd00f, 0x07, 0x04}, 791*4882a593Smuzhiyun {0xd00f, 0x38, 0x28}, 792*4882a593Smuzhiyun {0xd010, 0x07, 0x04}, 793*4882a593Smuzhiyun {0xd010, 0x38, 0x28}, 794*4882a593Smuzhiyun {0xd016, 0xf0, 0x30}, 795*4882a593Smuzhiyun {0xd01f, 0x3f, 0x0a}, 796*4882a593Smuzhiyun {0xd020, 0x3f, 0x0a}, 797*4882a593Smuzhiyun {0x9bda, 0xff, 0x01}, 798*4882a593Smuzhiyun {0x9be3, 0xff, 0x01}, 799*4882a593Smuzhiyun {0xd1a0, 0x02, 0x00}, 800*4882a593Smuzhiyun {0x9bbe, 0x01, 0x01}, 801*4882a593Smuzhiyun {0x9bcc, 0x01, 0x01}, 802*4882a593Smuzhiyun {0x9bb9, 0xff, 0x00}, 803*4882a593Smuzhiyun {0x9bcd, 0xff, 0x18}, 804*4882a593Smuzhiyun {0x9bff, 0xff, 0x2c}, 805*4882a593Smuzhiyun {0xd015, 0xff, 0x46}, 806*4882a593Smuzhiyun {0xd016, 0x01, 0x00}, 807*4882a593Smuzhiyun {0xd044, 0xff, 0x46}, 808*4882a593Smuzhiyun {0xd045, 0x01, 0x00}, 809*4882a593Smuzhiyun {0xd008, 0xff, 0xdf}, 810*4882a593Smuzhiyun {0xd009, 0x03, 0x02}, 811*4882a593Smuzhiyun {0xd006, 0xff, 0x44}, 812*4882a593Smuzhiyun {0xd007, 0x03, 0x01}, 813*4882a593Smuzhiyun {0xd00c, 0xff, 0x00}, 814*4882a593Smuzhiyun {0xd00d, 0x03, 0x02}, 815*4882a593Smuzhiyun {0xd00a, 0xff, 0xf6}, 816*4882a593Smuzhiyun {0xd00b, 0x03, 0x01}, 817*4882a593Smuzhiyun {0x9bba, 0xff, 0xf9}, 818*4882a593Smuzhiyun {0x9bc8, 0xff, 0xaa}, 819*4882a593Smuzhiyun {0x9bc3, 0xff, 0xdf}, 820*4882a593Smuzhiyun {0x9bc4, 0xff, 0x02}, 821*4882a593Smuzhiyun {0x9bc5, 0xff, 0x00}, 822*4882a593Smuzhiyun {0x9bc6, 0xff, 0x02}, 823*4882a593Smuzhiyun {0x9bc9, 0xff, 0xf0}, 824*4882a593Smuzhiyun {0xd011, 0xff, 0x3c}, 825*4882a593Smuzhiyun {0xd012, 0x03, 0x01}, 826*4882a593Smuzhiyun {0xd013, 0xff, 0xf7}, 827*4882a593Smuzhiyun {0xd014, 0x03, 0x02}, 828*4882a593Smuzhiyun {0xd040, 0xff, 0x0b}, 829*4882a593Smuzhiyun {0xd041, 0x03, 0x02}, 830*4882a593Smuzhiyun {0xd042, 0xff, 0x4d}, 831*4882a593Smuzhiyun {0xd043, 0x03, 0x00}, 832*4882a593Smuzhiyun {0xd045, 0x02, 0x00}, 833*4882a593Smuzhiyun {0x9bcf, 0x01, 0x01}, 834*4882a593Smuzhiyun {0xd045, 0x04, 0x04}, 835*4882a593Smuzhiyun {0xd04f, 0xff, 0x9a}, 836*4882a593Smuzhiyun {0xd050, 0x01, 0x01}, 837*4882a593Smuzhiyun {0xd051, 0xff, 0x5a}, 838*4882a593Smuzhiyun {0xd052, 0x01, 0x01}, 839*4882a593Smuzhiyun {0xd053, 0xff, 0x50}, 840*4882a593Smuzhiyun {0xd054, 0xff, 0x46}, 841*4882a593Smuzhiyun {0x9bd7, 0xff, 0x0a}, 842*4882a593Smuzhiyun {0x9bd8, 0xff, 0x14}, 843*4882a593Smuzhiyun {0x9bd9, 0xff, 0x08}, 844*4882a593Smuzhiyun {0x9bd0, 0xff, 0xa8}, 845*4882a593Smuzhiyun {0x9be4, 0xff, 0x7f}, 846*4882a593Smuzhiyun {0x9bbd, 0xff, 0xa8}, 847*4882a593Smuzhiyun {0x9be2, 0xff, 0x20}, 848*4882a593Smuzhiyun {0x9bee, 0x01, 0x01}, 849*4882a593Smuzhiyun }; 850*4882a593Smuzhiyun 851*4882a593Smuzhiyun #endif /* AF9013_PRIV_H */ 852