Path: blob/master/drivers/media/dvb/frontends/af9013_priv.h
15112 views
/*1* Afatech AF9013 demodulator driver2*3* Copyright (C) 2007 Antti Palosaari <[email protected]>4*5* Thanks to Afatech who kindly provided information.6*7* This program is free software; you can redistribute it and/or modify8* it under the terms of the GNU General Public License as published by9* the Free Software Foundation; either version 2 of the License, or10* (at your option) any later version.11*12* This program is distributed in the hope that it will be useful,13* but WITHOUT ANY WARRANTY; without even the implied warranty of14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the15* GNU General Public License for more details.16*17* You should have received a copy of the GNU General Public License18* along with this program; if not, write to the Free Software19* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.20*21*/2223#ifndef _AF9013_PRIV_24#define _AF9013_PRIV_2526#define LOG_PREFIX "af9013"27extern int af9013_debug;2829#define dprintk(var, level, args...) \30do { if ((var & level)) printk(args); } while (0)3132#define debug_dump(b, l, func) {\33int loop_; \34for (loop_ = 0; loop_ < l; loop_++) \35func("%02x ", b[loop_]); \36func("\n");\37}3839#define deb_info(args...) dprintk(af9013_debug, 0x01, args)4041#undef err42#define err(f, arg...) printk(KERN_ERR LOG_PREFIX": " f "\n" , ## arg)43#undef info44#define info(f, arg...) printk(KERN_INFO LOG_PREFIX": " f "\n" , ## arg)45#undef warn46#define warn(f, arg...) printk(KERN_WARNING LOG_PREFIX": " f "\n" , ## arg)4748#define AF9013_DEFAULT_FIRMWARE "dvb-fe-af9013.fw"4950struct regdesc {51u16 addr;52u8 pos:4;53u8 len:4;54u8 val;55};5657struct snr_table {58u32 val;59u8 snr;60};6162struct coeff {63u32 adc_clock;64fe_bandwidth_t bw;65u8 val[24];66};6768/* pre-calculated coeff lookup table */69static struct coeff coeff_table[] = {70/* 28.800 MHz */71{ 28800, BANDWIDTH_8_MHZ, { 0x02, 0x8a, 0x28, 0xa3, 0x05, 0x14,720x51, 0x11, 0x00, 0xa2, 0x8f, 0x3d, 0x00, 0xa2, 0x8a,730x29, 0x00, 0xa2, 0x85, 0x14, 0x01, 0x45, 0x14, 0x14 } },74{ 28800, BANDWIDTH_7_MHZ, { 0x02, 0x38, 0xe3, 0x8e, 0x04, 0x71,750xc7, 0x07, 0x00, 0x8e, 0x3d, 0x55, 0x00, 0x8e, 0x38,760xe4, 0x00, 0x8e, 0x34, 0x72, 0x01, 0x1c, 0x71, 0x32 } },77{ 28800, BANDWIDTH_6_MHZ, { 0x01, 0xe7, 0x9e, 0x7a, 0x03, 0xcf,780x3c, 0x3d, 0x00, 0x79, 0xeb, 0x6e, 0x00, 0x79, 0xe7,790x9e, 0x00, 0x79, 0xe3, 0xcf, 0x00, 0xf3, 0xcf, 0x0f } },80/* 20.480 MHz */81{ 20480, BANDWIDTH_8_MHZ, { 0x03, 0x92, 0x49, 0x26, 0x07, 0x24,820x92, 0x13, 0x00, 0xe4, 0x99, 0x6e, 0x00, 0xe4, 0x92,830x49, 0x00, 0xe4, 0x8b, 0x25, 0x01, 0xc9, 0x24, 0x25 } },84{ 20480, BANDWIDTH_7_MHZ, { 0x03, 0x20, 0x00, 0x01, 0x06, 0x40,850x00, 0x00, 0x00, 0xc8, 0x06, 0x40, 0x00, 0xc8, 0x00,860x00, 0x00, 0xc7, 0xf9, 0xc0, 0x01, 0x90, 0x00, 0x00 } },87{ 20480, BANDWIDTH_6_MHZ, { 0x02, 0xad, 0xb6, 0xdc, 0x05, 0x5b,880x6d, 0x2e, 0x00, 0xab, 0x73, 0x13, 0x00, 0xab, 0x6d,890xb7, 0x00, 0xab, 0x68, 0x5c, 0x01, 0x56, 0xdb, 0x1c } },90/* 28.000 MHz */91{ 28000, BANDWIDTH_8_MHZ, { 0x02, 0x9c, 0xbc, 0x15, 0x05, 0x39,920x78, 0x0a, 0x00, 0xa7, 0x34, 0x3f, 0x00, 0xa7, 0x2f,930x05, 0x00, 0xa7, 0x29, 0xcc, 0x01, 0x4e, 0x5e, 0x03 } },94{ 28000, BANDWIDTH_7_MHZ, { 0x02, 0x49, 0x24, 0x92, 0x04, 0x92,950x49, 0x09, 0x00, 0x92, 0x4d, 0xb7, 0x00, 0x92, 0x49,960x25, 0x00, 0x92, 0x44, 0x92, 0x01, 0x24, 0x92, 0x12 } },97{ 28000, BANDWIDTH_6_MHZ, { 0x01, 0xf5, 0x8d, 0x10, 0x03, 0xeb,980x1a, 0x08, 0x00, 0x7d, 0x67, 0x2f, 0x00, 0x7d, 0x63,990x44, 0x00, 0x7d, 0x5f, 0x59, 0x00, 0xfa, 0xc6, 0x22 } },100/* 25.000 MHz */101{ 25000, BANDWIDTH_8_MHZ, { 0x02, 0xec, 0xfb, 0x9d, 0x05, 0xd9,1020xf7, 0x0e, 0x00, 0xbb, 0x44, 0xc1, 0x00, 0xbb, 0x3e,1030xe7, 0x00, 0xbb, 0x39, 0x0d, 0x01, 0x76, 0x7d, 0x34 } },104{ 25000, BANDWIDTH_7_MHZ, { 0x02, 0x8f, 0x5c, 0x29, 0x05, 0x1e,1050xb8, 0x14, 0x00, 0xa3, 0xdc, 0x29, 0x00, 0xa3, 0xd7,1060x0a, 0x00, 0xa3, 0xd1, 0xec, 0x01, 0x47, 0xae, 0x05 } },107{ 25000, BANDWIDTH_6_MHZ, { 0x02, 0x31, 0xbc, 0xb5, 0x04, 0x63,1080x79, 0x1b, 0x00, 0x8c, 0x73, 0x91, 0x00, 0x8c, 0x6f,1090x2d, 0x00, 0x8c, 0x6a, 0xca, 0x01, 0x18, 0xde, 0x17 } },110};111112/* QPSK SNR lookup table */113static struct snr_table qpsk_snr_table[] = {114{ 0x0b4771, 0 },115{ 0x0c1aed, 1 },116{ 0x0d0d27, 2 },117{ 0x0e4d19, 3 },118{ 0x0e5da8, 4 },119{ 0x107097, 5 },120{ 0x116975, 6 },121{ 0x1252d9, 7 },122{ 0x131fa4, 8 },123{ 0x13d5e1, 9 },124{ 0x148e53, 10 },125{ 0x15358b, 11 },126{ 0x15dd29, 12 },127{ 0x168112, 13 },128{ 0x170b61, 14 },129{ 0xffffff, 15 },130};131132/* QAM16 SNR lookup table */133static struct snr_table qam16_snr_table[] = {134{ 0x05eb62, 5 },135{ 0x05fecf, 6 },136{ 0x060b80, 7 },137{ 0x062501, 8 },138{ 0x064865, 9 },139{ 0x069604, 10 },140{ 0x06f356, 11 },141{ 0x07706a, 12 },142{ 0x0804d3, 13 },143{ 0x089d1a, 14 },144{ 0x093e3d, 15 },145{ 0x09e35d, 16 },146{ 0x0a7c3c, 17 },147{ 0x0afaf8, 18 },148{ 0x0b719d, 19 },149{ 0xffffff, 20 },150};151152/* QAM64 SNR lookup table */153static struct snr_table qam64_snr_table[] = {154{ 0x03109b, 12 },155{ 0x0310d4, 13 },156{ 0x031920, 14 },157{ 0x0322d0, 15 },158{ 0x0339fc, 16 },159{ 0x0364a1, 17 },160{ 0x038bcc, 18 },161{ 0x03c7d3, 19 },162{ 0x0408cc, 20 },163{ 0x043bed, 21 },164{ 0x048061, 22 },165{ 0x04be95, 23 },166{ 0x04fa7d, 24 },167{ 0x052405, 25 },168{ 0x05570d, 26 },169{ 0xffffff, 27 },170};171172static struct regdesc ofsm_init[] = {173{ 0xd73a, 0, 8, 0xa1 },174{ 0xd73b, 0, 8, 0x1f },175{ 0xd73c, 4, 4, 0x0a },176{ 0xd732, 3, 1, 0x00 },177{ 0xd731, 4, 2, 0x03 },178{ 0xd73d, 7, 1, 0x01 },179{ 0xd740, 0, 1, 0x00 },180{ 0xd740, 1, 1, 0x00 },181{ 0xd740, 2, 1, 0x00 },182{ 0xd740, 3, 1, 0x01 },183{ 0xd3c1, 4, 1, 0x01 },184{ 0x9124, 0, 8, 0x58 },185{ 0x9125, 0, 2, 0x02 },186{ 0xd3a2, 0, 8, 0x00 },187{ 0xd3a3, 0, 8, 0x04 },188{ 0xd305, 0, 8, 0x32 },189{ 0xd306, 0, 8, 0x10 },190{ 0xd304, 0, 8, 0x04 },191{ 0x9112, 0, 1, 0x01 },192{ 0x911d, 0, 1, 0x01 },193{ 0x911a, 0, 1, 0x01 },194{ 0x911b, 0, 1, 0x01 },195{ 0x9bce, 0, 4, 0x02 },196{ 0x9116, 0, 1, 0x01 },197{ 0x9122, 0, 8, 0xd0 },198{ 0xd2e0, 0, 8, 0xd0 },199{ 0xd2e9, 0, 4, 0x0d },200{ 0xd38c, 0, 8, 0xfc },201{ 0xd38d, 0, 8, 0x00 },202{ 0xd38e, 0, 8, 0x7e },203{ 0xd38f, 0, 8, 0x00 },204{ 0xd390, 0, 8, 0x2f },205{ 0xd145, 4, 1, 0x01 },206{ 0xd1a9, 4, 1, 0x01 },207{ 0xd158, 5, 3, 0x01 },208{ 0xd159, 0, 6, 0x06 },209{ 0xd167, 0, 8, 0x00 },210{ 0xd168, 0, 4, 0x07 },211{ 0xd1c3, 5, 3, 0x00 },212{ 0xd1c4, 0, 6, 0x00 },213{ 0xd1c5, 0, 7, 0x10 },214{ 0xd1c6, 0, 3, 0x02 },215{ 0xd080, 2, 5, 0x03 },216{ 0xd081, 4, 4, 0x09 },217{ 0xd098, 4, 4, 0x0f },218{ 0xd098, 0, 4, 0x03 },219{ 0xdbc0, 4, 1, 0x01 },220{ 0xdbc7, 0, 8, 0x08 },221{ 0xdbc8, 4, 4, 0x00 },222{ 0xdbc9, 0, 5, 0x01 },223{ 0xd280, 0, 8, 0xe0 },224{ 0xd281, 0, 8, 0xff },225{ 0xd282, 0, 8, 0xff },226{ 0xd283, 0, 8, 0xc3 },227{ 0xd284, 0, 8, 0xff },228{ 0xd285, 0, 4, 0x01 },229{ 0xd0f0, 0, 7, 0x1a },230{ 0xd0f1, 4, 1, 0x01 },231{ 0xd0f2, 0, 8, 0x0c },232{ 0xd101, 5, 3, 0x06 },233{ 0xd103, 0, 4, 0x08 },234{ 0xd0f8, 0, 7, 0x20 },235{ 0xd111, 5, 1, 0x00 },236{ 0xd111, 6, 1, 0x00 },237{ 0x910b, 0, 8, 0x0a },238{ 0x9115, 0, 8, 0x02 },239{ 0x910c, 0, 8, 0x02 },240{ 0x910d, 0, 8, 0x08 },241{ 0x910e, 0, 8, 0x0a },242{ 0x9bf6, 0, 8, 0x06 },243{ 0x9bf8, 0, 8, 0x02 },244{ 0x9bf7, 0, 8, 0x05 },245{ 0x9bf9, 0, 8, 0x0f },246{ 0x9bfc, 0, 8, 0x13 },247{ 0x9bd3, 0, 8, 0xff },248{ 0x9bbe, 0, 1, 0x01 },249{ 0x9bcc, 0, 1, 0x01 },250};251252/* Panasonic ENV77H11D5 tuner init253AF9013_TUNER_ENV77H11D5 = 129 */254static struct regdesc tuner_init_env77h11d5[] = {255{ 0x9bd5, 0, 8, 0x01 },256{ 0x9bd6, 0, 8, 0x03 },257{ 0x9bbe, 0, 8, 0x01 },258{ 0xd1a0, 1, 1, 0x01 },259{ 0xd000, 0, 1, 0x01 },260{ 0xd000, 1, 1, 0x00 },261{ 0xd001, 1, 1, 0x01 },262{ 0xd001, 0, 1, 0x00 },263{ 0xd001, 5, 1, 0x00 },264{ 0xd002, 0, 5, 0x19 },265{ 0xd003, 0, 5, 0x1a },266{ 0xd004, 0, 5, 0x19 },267{ 0xd005, 0, 5, 0x1a },268{ 0xd00e, 0, 5, 0x10 },269{ 0xd00f, 0, 3, 0x04 },270{ 0xd00f, 3, 3, 0x05 },271{ 0xd010, 0, 3, 0x04 },272{ 0xd010, 3, 3, 0x05 },273{ 0xd016, 4, 4, 0x03 },274{ 0xd01f, 0, 6, 0x0a },275{ 0xd020, 0, 6, 0x0a },276{ 0x9bda, 0, 8, 0x00 },277{ 0x9be3, 0, 8, 0x00 },278{ 0xd015, 0, 8, 0x50 },279{ 0xd016, 0, 1, 0x00 },280{ 0xd044, 0, 8, 0x46 },281{ 0xd045, 0, 1, 0x00 },282{ 0xd008, 0, 8, 0xdf },283{ 0xd009, 0, 2, 0x02 },284{ 0xd006, 0, 8, 0x44 },285{ 0xd007, 0, 2, 0x01 },286{ 0xd00c, 0, 8, 0xeb },287{ 0xd00d, 0, 2, 0x02 },288{ 0xd00a, 0, 8, 0xf4 },289{ 0xd00b, 0, 2, 0x01 },290{ 0x9bba, 0, 8, 0xf9 },291{ 0x9bc3, 0, 8, 0xdf },292{ 0x9bc4, 0, 8, 0x02 },293{ 0x9bc5, 0, 8, 0xeb },294{ 0x9bc6, 0, 8, 0x02 },295{ 0x9bc9, 0, 8, 0x52 },296{ 0xd011, 0, 8, 0x3c },297{ 0xd012, 0, 2, 0x01 },298{ 0xd013, 0, 8, 0xf7 },299{ 0xd014, 0, 2, 0x02 },300{ 0xd040, 0, 8, 0x0b },301{ 0xd041, 0, 2, 0x02 },302{ 0xd042, 0, 8, 0x4d },303{ 0xd043, 0, 2, 0x00 },304{ 0xd045, 1, 1, 0x00 },305{ 0x9bcf, 0, 1, 0x01 },306{ 0xd045, 2, 1, 0x01 },307{ 0xd04f, 0, 8, 0x9a },308{ 0xd050, 0, 1, 0x01 },309{ 0xd051, 0, 8, 0x5a },310{ 0xd052, 0, 1, 0x01 },311{ 0xd053, 0, 8, 0x50 },312{ 0xd054, 0, 8, 0x46 },313{ 0x9bd7, 0, 8, 0x0a },314{ 0x9bd8, 0, 8, 0x14 },315{ 0x9bd9, 0, 8, 0x08 },316};317318/* Microtune MT2060 tuner init319AF9013_TUNER_MT2060 = 130 */320static struct regdesc tuner_init_mt2060[] = {321{ 0x9bd5, 0, 8, 0x01 },322{ 0x9bd6, 0, 8, 0x07 },323{ 0xd1a0, 1, 1, 0x01 },324{ 0xd000, 0, 1, 0x01 },325{ 0xd000, 1, 1, 0x00 },326{ 0xd001, 1, 1, 0x01 },327{ 0xd001, 0, 1, 0x00 },328{ 0xd001, 5, 1, 0x00 },329{ 0xd002, 0, 5, 0x19 },330{ 0xd003, 0, 5, 0x1a },331{ 0xd004, 0, 5, 0x19 },332{ 0xd005, 0, 5, 0x1a },333{ 0xd00e, 0, 5, 0x10 },334{ 0xd00f, 0, 3, 0x04 },335{ 0xd00f, 3, 3, 0x05 },336{ 0xd010, 0, 3, 0x04 },337{ 0xd010, 3, 3, 0x05 },338{ 0xd016, 4, 4, 0x03 },339{ 0xd01f, 0, 6, 0x0a },340{ 0xd020, 0, 6, 0x0a },341{ 0x9bda, 0, 8, 0x00 },342{ 0x9be3, 0, 8, 0x00 },343{ 0x9bbe, 0, 1, 0x00 },344{ 0x9bcc, 0, 1, 0x00 },345{ 0x9bb9, 0, 8, 0x75 },346{ 0x9bcd, 0, 8, 0x24 },347{ 0x9bff, 0, 8, 0x30 },348{ 0xd015, 0, 8, 0x46 },349{ 0xd016, 0, 1, 0x00 },350{ 0xd044, 0, 8, 0x46 },351{ 0xd045, 0, 1, 0x00 },352{ 0xd008, 0, 8, 0x0f },353{ 0xd009, 0, 2, 0x02 },354{ 0xd006, 0, 8, 0x32 },355{ 0xd007, 0, 2, 0x01 },356{ 0xd00c, 0, 8, 0x36 },357{ 0xd00d, 0, 2, 0x03 },358{ 0xd00a, 0, 8, 0x35 },359{ 0xd00b, 0, 2, 0x01 },360{ 0x9bc7, 0, 8, 0x07 },361{ 0x9bc8, 0, 8, 0x90 },362{ 0x9bc3, 0, 8, 0x0f },363{ 0x9bc4, 0, 8, 0x02 },364{ 0x9bc5, 0, 8, 0x36 },365{ 0x9bc6, 0, 8, 0x03 },366{ 0x9bba, 0, 8, 0xc9 },367{ 0x9bc9, 0, 8, 0x79 },368{ 0xd011, 0, 8, 0x10 },369{ 0xd012, 0, 2, 0x01 },370{ 0xd013, 0, 8, 0x45 },371{ 0xd014, 0, 2, 0x03 },372{ 0xd040, 0, 8, 0x98 },373{ 0xd041, 0, 2, 0x00 },374{ 0xd042, 0, 8, 0xcf },375{ 0xd043, 0, 2, 0x03 },376{ 0xd045, 1, 1, 0x00 },377{ 0x9bcf, 0, 1, 0x01 },378{ 0xd045, 2, 1, 0x01 },379{ 0xd04f, 0, 8, 0x9a },380{ 0xd050, 0, 1, 0x01 },381{ 0xd051, 0, 8, 0x5a },382{ 0xd052, 0, 1, 0x01 },383{ 0xd053, 0, 8, 0x50 },384{ 0xd054, 0, 8, 0x46 },385{ 0x9bd7, 0, 8, 0x0a },386{ 0x9bd8, 0, 8, 0x14 },387{ 0x9bd9, 0, 8, 0x08 },388{ 0x9bd0, 0, 8, 0xcc },389{ 0x9be4, 0, 8, 0xa0 },390{ 0x9bbd, 0, 8, 0x8e },391{ 0x9be2, 0, 8, 0x4d },392{ 0x9bee, 0, 1, 0x01 },393};394395/* Microtune MT2060 tuner init396AF9013_TUNER_MT2060_2 = 147 */397static struct regdesc tuner_init_mt2060_2[] = {398{ 0x9bd5, 0, 8, 0x01 },399{ 0x9bd6, 0, 8, 0x06 },400{ 0x9bbe, 0, 8, 0x01 },401{ 0xd1a0, 1, 1, 0x01 },402{ 0xd000, 0, 1, 0x01 },403{ 0xd000, 1, 1, 0x00 },404{ 0xd001, 1, 1, 0x01 },405{ 0xd001, 0, 1, 0x00 },406{ 0xd001, 5, 1, 0x00 },407{ 0xd002, 0, 5, 0x19 },408{ 0xd003, 0, 5, 0x1a },409{ 0xd004, 0, 5, 0x19 },410{ 0xd005, 0, 5, 0x1a },411{ 0xd00e, 0, 5, 0x10 },412{ 0xd00f, 0, 3, 0x04 },413{ 0xd00f, 3, 3, 0x05 },414{ 0xd010, 0, 3, 0x04 },415{ 0xd010, 3, 3, 0x05 },416{ 0xd016, 4, 4, 0x03 },417{ 0xd01f, 0, 6, 0x0a },418{ 0xd020, 0, 6, 0x0a },419{ 0xd015, 0, 8, 0x46 },420{ 0xd016, 0, 1, 0x00 },421{ 0xd044, 0, 8, 0x46 },422{ 0xd045, 0, 1, 0x00 },423{ 0xd008, 0, 8, 0x0f },424{ 0xd009, 0, 2, 0x02 },425{ 0xd006, 0, 8, 0x32 },426{ 0xd007, 0, 2, 0x01 },427{ 0xd00c, 0, 8, 0x36 },428{ 0xd00d, 0, 2, 0x03 },429{ 0xd00a, 0, 8, 0x35 },430{ 0xd00b, 0, 2, 0x01 },431{ 0x9bc7, 0, 8, 0x07 },432{ 0x9bc8, 0, 8, 0x90 },433{ 0x9bc3, 0, 8, 0x0f },434{ 0x9bc4, 0, 8, 0x02 },435{ 0x9bc5, 0, 8, 0x36 },436{ 0x9bc6, 0, 8, 0x03 },437{ 0x9bba, 0, 8, 0xc9 },438{ 0x9bc9, 0, 8, 0x79 },439{ 0xd011, 0, 8, 0x10 },440{ 0xd012, 0, 2, 0x01 },441{ 0xd013, 0, 8, 0x45 },442{ 0xd014, 0, 2, 0x03 },443{ 0xd040, 0, 8, 0x98 },444{ 0xd041, 0, 2, 0x00 },445{ 0xd042, 0, 8, 0xcf },446{ 0xd043, 0, 2, 0x03 },447{ 0xd045, 1, 1, 0x00 },448{ 0x9bcf, 0, 8, 0x01 },449{ 0xd045, 2, 1, 0x01 },450{ 0xd04f, 0, 8, 0x9a },451{ 0xd050, 0, 1, 0x01 },452{ 0xd051, 0, 8, 0x5a },453{ 0xd052, 0, 1, 0x01 },454{ 0xd053, 0, 8, 0x96 },455{ 0xd054, 0, 8, 0x46 },456{ 0xd045, 7, 1, 0x00 },457{ 0x9bd7, 0, 8, 0x0a },458{ 0x9bd8, 0, 8, 0x14 },459{ 0x9bd9, 0, 8, 0x08 },460};461462/* MaxLinear MXL5003 tuner init463AF9013_TUNER_MXL5003D = 3 */464static struct regdesc tuner_init_mxl5003d[] = {465{ 0x9bd5, 0, 8, 0x01 },466{ 0x9bd6, 0, 8, 0x09 },467{ 0xd1a0, 1, 1, 0x01 },468{ 0xd000, 0, 1, 0x01 },469{ 0xd000, 1, 1, 0x00 },470{ 0xd001, 1, 1, 0x01 },471{ 0xd001, 0, 1, 0x00 },472{ 0xd001, 5, 1, 0x00 },473{ 0xd002, 0, 5, 0x19 },474{ 0xd003, 0, 5, 0x1a },475{ 0xd004, 0, 5, 0x19 },476{ 0xd005, 0, 5, 0x1a },477{ 0xd00e, 0, 5, 0x10 },478{ 0xd00f, 0, 3, 0x04 },479{ 0xd00f, 3, 3, 0x05 },480{ 0xd010, 0, 3, 0x04 },481{ 0xd010, 3, 3, 0x05 },482{ 0xd016, 4, 4, 0x03 },483{ 0xd01f, 0, 6, 0x0a },484{ 0xd020, 0, 6, 0x0a },485{ 0x9bda, 0, 8, 0x00 },486{ 0x9be3, 0, 8, 0x00 },487{ 0x9bfc, 0, 8, 0x0f },488{ 0x9bf6, 0, 8, 0x01 },489{ 0x9bbe, 0, 1, 0x01 },490{ 0xd015, 0, 8, 0x33 },491{ 0xd016, 0, 1, 0x00 },492{ 0xd044, 0, 8, 0x40 },493{ 0xd045, 0, 1, 0x00 },494{ 0xd008, 0, 8, 0x0f },495{ 0xd009, 0, 2, 0x02 },496{ 0xd006, 0, 8, 0x6c },497{ 0xd007, 0, 2, 0x00 },498{ 0xd00c, 0, 8, 0x3d },499{ 0xd00d, 0, 2, 0x00 },500{ 0xd00a, 0, 8, 0x45 },501{ 0xd00b, 0, 2, 0x01 },502{ 0x9bc7, 0, 8, 0x07 },503{ 0x9bc8, 0, 8, 0x52 },504{ 0x9bc3, 0, 8, 0x0f },505{ 0x9bc4, 0, 8, 0x02 },506{ 0x9bc5, 0, 8, 0x3d },507{ 0x9bc6, 0, 8, 0x00 },508{ 0x9bba, 0, 8, 0xa2 },509{ 0x9bc9, 0, 8, 0xa0 },510{ 0xd011, 0, 8, 0x56 },511{ 0xd012, 0, 2, 0x00 },512{ 0xd013, 0, 8, 0x50 },513{ 0xd014, 0, 2, 0x00 },514{ 0xd040, 0, 8, 0x56 },515{ 0xd041, 0, 2, 0x00 },516{ 0xd042, 0, 8, 0x50 },517{ 0xd043, 0, 2, 0x00 },518{ 0xd045, 1, 1, 0x00 },519{ 0x9bcf, 0, 8, 0x01 },520{ 0xd045, 2, 1, 0x01 },521{ 0xd04f, 0, 8, 0x9a },522{ 0xd050, 0, 1, 0x01 },523{ 0xd051, 0, 8, 0x5a },524{ 0xd052, 0, 1, 0x01 },525{ 0xd053, 0, 8, 0x50 },526{ 0xd054, 0, 8, 0x46 },527{ 0x9bd7, 0, 8, 0x0a },528{ 0x9bd8, 0, 8, 0x14 },529{ 0x9bd9, 0, 8, 0x08 },530};531532/* MaxLinear MXL5005S & MXL5007T tuner init533AF9013_TUNER_MXL5005D = 13534AF9013_TUNER_MXL5005R = 30535AF9013_TUNER_MXL5007T = 177 */536static struct regdesc tuner_init_mxl5005[] = {537{ 0x9bd5, 0, 8, 0x01 },538{ 0x9bd6, 0, 8, 0x07 },539{ 0xd1a0, 1, 1, 0x01 },540{ 0xd000, 0, 1, 0x01 },541{ 0xd000, 1, 1, 0x00 },542{ 0xd001, 1, 1, 0x01 },543{ 0xd001, 0, 1, 0x00 },544{ 0xd001, 5, 1, 0x00 },545{ 0xd002, 0, 5, 0x19 },546{ 0xd003, 0, 5, 0x1a },547{ 0xd004, 0, 5, 0x19 },548{ 0xd005, 0, 5, 0x1a },549{ 0xd00e, 0, 5, 0x10 },550{ 0xd00f, 0, 3, 0x04 },551{ 0xd00f, 3, 3, 0x05 },552{ 0xd010, 0, 3, 0x04 },553{ 0xd010, 3, 3, 0x05 },554{ 0xd016, 4, 4, 0x03 },555{ 0xd01f, 0, 6, 0x0a },556{ 0xd020, 0, 6, 0x0a },557{ 0x9bda, 0, 8, 0x01 },558{ 0x9be3, 0, 8, 0x01 },559{ 0x9bbe, 0, 1, 0x01 },560{ 0x9bcc, 0, 1, 0x01 },561{ 0x9bb9, 0, 8, 0x00 },562{ 0x9bcd, 0, 8, 0x28 },563{ 0x9bff, 0, 8, 0x24 },564{ 0xd015, 0, 8, 0x40 },565{ 0xd016, 0, 1, 0x00 },566{ 0xd044, 0, 8, 0x40 },567{ 0xd045, 0, 1, 0x00 },568{ 0xd008, 0, 8, 0x0f },569{ 0xd009, 0, 2, 0x02 },570{ 0xd006, 0, 8, 0x73 },571{ 0xd007, 0, 2, 0x01 },572{ 0xd00c, 0, 8, 0xfa },573{ 0xd00d, 0, 2, 0x01 },574{ 0xd00a, 0, 8, 0xff },575{ 0xd00b, 0, 2, 0x01 },576{ 0x9bc7, 0, 8, 0x23 },577{ 0x9bc8, 0, 8, 0x55 },578{ 0x9bc3, 0, 8, 0x01 },579{ 0x9bc4, 0, 8, 0x02 },580{ 0x9bc5, 0, 8, 0xfa },581{ 0x9bc6, 0, 8, 0x01 },582{ 0x9bba, 0, 8, 0xff },583{ 0x9bc9, 0, 8, 0xff },584{ 0x9bd3, 0, 8, 0x95 },585{ 0xd011, 0, 8, 0x70 },586{ 0xd012, 0, 2, 0x01 },587{ 0xd013, 0, 8, 0xfb },588{ 0xd014, 0, 2, 0x01 },589{ 0xd040, 0, 8, 0x70 },590{ 0xd041, 0, 2, 0x01 },591{ 0xd042, 0, 8, 0xfb },592{ 0xd043, 0, 2, 0x01 },593{ 0xd045, 1, 1, 0x00 },594{ 0x9bcf, 0, 1, 0x01 },595{ 0xd045, 2, 1, 0x01 },596{ 0xd04f, 0, 8, 0x9a },597{ 0xd050, 0, 1, 0x01 },598{ 0xd051, 0, 8, 0x5a },599{ 0xd052, 0, 1, 0x01 },600{ 0xd053, 0, 8, 0x50 },601{ 0xd054, 0, 8, 0x46 },602{ 0x9bd7, 0, 8, 0x0a },603{ 0x9bd8, 0, 8, 0x14 },604{ 0x9bd9, 0, 8, 0x08 },605{ 0x9bd0, 0, 8, 0x93 },606{ 0x9be4, 0, 8, 0xfe },607{ 0x9bbd, 0, 8, 0x63 },608{ 0x9be2, 0, 8, 0xfe },609{ 0x9bee, 0, 1, 0x01 },610};611612/* Quantek QT1010 tuner init613AF9013_TUNER_QT1010 = 134614AF9013_TUNER_QT1010A = 162 */615static struct regdesc tuner_init_qt1010[] = {616{ 0x9bd5, 0, 8, 0x01 },617{ 0x9bd6, 0, 8, 0x09 },618{ 0xd1a0, 1, 1, 0x01 },619{ 0xd000, 0, 1, 0x01 },620{ 0xd000, 1, 1, 0x00 },621{ 0xd001, 1, 1, 0x01 },622{ 0xd001, 0, 1, 0x00 },623{ 0xd001, 5, 1, 0x00 },624{ 0xd002, 0, 5, 0x19 },625{ 0xd003, 0, 5, 0x1a },626{ 0xd004, 0, 5, 0x19 },627{ 0xd005, 0, 5, 0x1a },628{ 0xd00e, 0, 5, 0x10 },629{ 0xd00f, 0, 3, 0x04 },630{ 0xd00f, 3, 3, 0x05 },631{ 0xd010, 0, 3, 0x04 },632{ 0xd010, 3, 3, 0x05 },633{ 0xd016, 4, 4, 0x03 },634{ 0xd01f, 0, 6, 0x0a },635{ 0xd020, 0, 6, 0x0a },636{ 0x9bda, 0, 8, 0x01 },637{ 0x9be3, 0, 8, 0x01 },638{ 0xd015, 0, 8, 0x46 },639{ 0xd016, 0, 1, 0x00 },640{ 0xd044, 0, 8, 0x46 },641{ 0xd045, 0, 1, 0x00 },642{ 0x9bbe, 0, 1, 0x01 },643{ 0x9bcc, 0, 1, 0x01 },644{ 0x9bb9, 0, 8, 0x00 },645{ 0x9bcd, 0, 8, 0x28 },646{ 0x9bff, 0, 8, 0x20 },647{ 0xd008, 0, 8, 0x0f },648{ 0xd009, 0, 2, 0x02 },649{ 0xd006, 0, 8, 0x99 },650{ 0xd007, 0, 2, 0x01 },651{ 0xd00c, 0, 8, 0x0f },652{ 0xd00d, 0, 2, 0x02 },653{ 0xd00a, 0, 8, 0x50 },654{ 0xd00b, 0, 2, 0x01 },655{ 0x9bc7, 0, 8, 0x00 },656{ 0x9bc8, 0, 8, 0x00 },657{ 0x9bc3, 0, 8, 0x0f },658{ 0x9bc4, 0, 8, 0x02 },659{ 0x9bc5, 0, 8, 0x0f },660{ 0x9bc6, 0, 8, 0x02 },661{ 0x9bba, 0, 8, 0xc5 },662{ 0x9bc9, 0, 8, 0xff },663{ 0xd011, 0, 8, 0x58 },664{ 0xd012, 0, 2, 0x02 },665{ 0xd013, 0, 8, 0x89 },666{ 0xd014, 0, 2, 0x01 },667{ 0xd040, 0, 8, 0x58 },668{ 0xd041, 0, 2, 0x02 },669{ 0xd042, 0, 8, 0x89 },670{ 0xd043, 0, 2, 0x01 },671{ 0xd045, 1, 1, 0x00 },672{ 0x9bcf, 0, 1, 0x01 },673{ 0xd045, 2, 1, 0x01 },674{ 0xd04f, 0, 8, 0x9a },675{ 0xd050, 0, 1, 0x01 },676{ 0xd051, 0, 8, 0x5a },677{ 0xd052, 0, 1, 0x01 },678{ 0xd053, 0, 8, 0x50 },679{ 0xd054, 0, 8, 0x46 },680{ 0x9bd7, 0, 8, 0x0a },681{ 0x9bd8, 0, 8, 0x14 },682{ 0x9bd9, 0, 8, 0x08 },683{ 0x9bd0, 0, 8, 0xcd },684{ 0x9be4, 0, 8, 0xbb },685{ 0x9bbd, 0, 8, 0x93 },686{ 0x9be2, 0, 8, 0x80 },687{ 0x9bee, 0, 1, 0x01 },688};689690/* Freescale MC44S803 tuner init691AF9013_TUNER_MC44S803 = 133 */692static struct regdesc tuner_init_mc44s803[] = {693{ 0x9bd5, 0, 8, 0x01 },694{ 0x9bd6, 0, 8, 0x06 },695{ 0xd1a0, 1, 1, 0x01 },696{ 0xd000, 0, 1, 0x01 },697{ 0xd000, 1, 1, 0x00 },698{ 0xd001, 1, 1, 0x01 },699{ 0xd001, 0, 1, 0x00 },700{ 0xd001, 5, 1, 0x00 },701{ 0xd002, 0, 5, 0x19 },702{ 0xd003, 0, 5, 0x1a },703{ 0xd004, 0, 5, 0x19 },704{ 0xd005, 0, 5, 0x1a },705{ 0xd00e, 0, 5, 0x10 },706{ 0xd00f, 0, 3, 0x04 },707{ 0xd00f, 3, 3, 0x05 },708{ 0xd010, 0, 3, 0x04 },709{ 0xd010, 3, 3, 0x05 },710{ 0xd016, 4, 4, 0x03 },711{ 0xd01f, 0, 6, 0x0a },712{ 0xd020, 0, 6, 0x0a },713{ 0x9bda, 0, 8, 0x00 },714{ 0x9be3, 0, 8, 0x00 },715{ 0x9bf6, 0, 8, 0x01 },716{ 0x9bf8, 0, 8, 0x02 },717{ 0x9bf9, 0, 8, 0x02 },718{ 0x9bfc, 0, 8, 0x1f },719{ 0x9bbe, 0, 1, 0x01 },720{ 0x9bcc, 0, 1, 0x01 },721{ 0x9bb9, 0, 8, 0x00 },722{ 0x9bcd, 0, 8, 0x24 },723{ 0x9bff, 0, 8, 0x24 },724{ 0xd015, 0, 8, 0x46 },725{ 0xd016, 0, 1, 0x00 },726{ 0xd044, 0, 8, 0x46 },727{ 0xd045, 0, 1, 0x00 },728{ 0xd008, 0, 8, 0x01 },729{ 0xd009, 0, 2, 0x02 },730{ 0xd006, 0, 8, 0x7b },731{ 0xd007, 0, 2, 0x00 },732{ 0xd00c, 0, 8, 0x7c },733{ 0xd00d, 0, 2, 0x02 },734{ 0xd00a, 0, 8, 0xfe },735{ 0xd00b, 0, 2, 0x01 },736{ 0x9bc7, 0, 8, 0x08 },737{ 0x9bc8, 0, 8, 0x9a },738{ 0x9bc3, 0, 8, 0x01 },739{ 0x9bc4, 0, 8, 0x02 },740{ 0x9bc5, 0, 8, 0x7c },741{ 0x9bc6, 0, 8, 0x02 },742{ 0x9bba, 0, 8, 0xfc },743{ 0x9bc9, 0, 8, 0xaa },744{ 0xd011, 0, 8, 0x6b },745{ 0xd012, 0, 2, 0x00 },746{ 0xd013, 0, 8, 0x88 },747{ 0xd014, 0, 2, 0x02 },748{ 0xd040, 0, 8, 0x6b },749{ 0xd041, 0, 2, 0x00 },750{ 0xd042, 0, 8, 0x7c },751{ 0xd043, 0, 2, 0x02 },752{ 0xd045, 1, 1, 0x00 },753{ 0x9bcf, 0, 1, 0x01 },754{ 0xd045, 2, 1, 0x01 },755{ 0xd04f, 0, 8, 0x9a },756{ 0xd050, 0, 1, 0x01 },757{ 0xd051, 0, 8, 0x5a },758{ 0xd052, 0, 1, 0x01 },759{ 0xd053, 0, 8, 0x50 },760{ 0xd054, 0, 8, 0x46 },761{ 0x9bd7, 0, 8, 0x0a },762{ 0x9bd8, 0, 8, 0x14 },763{ 0x9bd9, 0, 8, 0x08 },764{ 0x9bd0, 0, 8, 0x9e },765{ 0x9be4, 0, 8, 0xff },766{ 0x9bbd, 0, 8, 0x9e },767{ 0x9be2, 0, 8, 0x25 },768{ 0x9bee, 0, 1, 0x01 },769{ 0xd73b, 3, 1, 0x00 },770};771772/* unknown, probably for tin can tuner, tuner init773AF9013_TUNER_UNKNOWN = 140 */774static struct regdesc tuner_init_unknown[] = {775{ 0x9bd5, 0, 8, 0x01 },776{ 0x9bd6, 0, 8, 0x02 },777{ 0xd1a0, 1, 1, 0x01 },778{ 0xd000, 0, 1, 0x01 },779{ 0xd000, 1, 1, 0x00 },780{ 0xd001, 1, 1, 0x01 },781{ 0xd001, 0, 1, 0x00 },782{ 0xd001, 5, 1, 0x00 },783{ 0xd002, 0, 5, 0x19 },784{ 0xd003, 0, 5, 0x1a },785{ 0xd004, 0, 5, 0x19 },786{ 0xd005, 0, 5, 0x1a },787{ 0xd00e, 0, 5, 0x10 },788{ 0xd00f, 0, 3, 0x04 },789{ 0xd00f, 3, 3, 0x05 },790{ 0xd010, 0, 3, 0x04 },791{ 0xd010, 3, 3, 0x05 },792{ 0xd016, 4, 4, 0x03 },793{ 0xd01f, 0, 6, 0x0a },794{ 0xd020, 0, 6, 0x0a },795{ 0x9bda, 0, 8, 0x01 },796{ 0x9be3, 0, 8, 0x01 },797{ 0xd1a0, 1, 1, 0x00 },798{ 0x9bbe, 0, 1, 0x01 },799{ 0x9bcc, 0, 1, 0x01 },800{ 0x9bb9, 0, 8, 0x00 },801{ 0x9bcd, 0, 8, 0x18 },802{ 0x9bff, 0, 8, 0x2c },803{ 0xd015, 0, 8, 0x46 },804{ 0xd016, 0, 1, 0x00 },805{ 0xd044, 0, 8, 0x46 },806{ 0xd045, 0, 1, 0x00 },807{ 0xd008, 0, 8, 0xdf },808{ 0xd009, 0, 2, 0x02 },809{ 0xd006, 0, 8, 0x44 },810{ 0xd007, 0, 2, 0x01 },811{ 0xd00c, 0, 8, 0x00 },812{ 0xd00d, 0, 2, 0x02 },813{ 0xd00a, 0, 8, 0xf6 },814{ 0xd00b, 0, 2, 0x01 },815{ 0x9bba, 0, 8, 0xf9 },816{ 0x9bc8, 0, 8, 0xaa },817{ 0x9bc3, 0, 8, 0xdf },818{ 0x9bc4, 0, 8, 0x02 },819{ 0x9bc5, 0, 8, 0x00 },820{ 0x9bc6, 0, 8, 0x02 },821{ 0x9bc9, 0, 8, 0xf0 },822{ 0xd011, 0, 8, 0x3c },823{ 0xd012, 0, 2, 0x01 },824{ 0xd013, 0, 8, 0xf7 },825{ 0xd014, 0, 2, 0x02 },826{ 0xd040, 0, 8, 0x0b },827{ 0xd041, 0, 2, 0x02 },828{ 0xd042, 0, 8, 0x4d },829{ 0xd043, 0, 2, 0x00 },830{ 0xd045, 1, 1, 0x00 },831{ 0x9bcf, 0, 1, 0x01 },832{ 0xd045, 2, 1, 0x01 },833{ 0xd04f, 0, 8, 0x9a },834{ 0xd050, 0, 1, 0x01 },835{ 0xd051, 0, 8, 0x5a },836{ 0xd052, 0, 1, 0x01 },837{ 0xd053, 0, 8, 0x50 },838{ 0xd054, 0, 8, 0x46 },839{ 0x9bd7, 0, 8, 0x0a },840{ 0x9bd8, 0, 8, 0x14 },841{ 0x9bd9, 0, 8, 0x08 },842};843844/* NXP TDA18271 & TDA18218 tuner init845AF9013_TUNER_TDA18271 = 156846AF9013_TUNER_TDA18218 = 179 */847static struct regdesc tuner_init_tda18271[] = {848{ 0x9bd5, 0, 8, 0x01 },849{ 0x9bd6, 0, 8, 0x04 },850{ 0xd1a0, 1, 1, 0x01 },851{ 0xd000, 0, 1, 0x01 },852{ 0xd000, 1, 1, 0x00 },853{ 0xd001, 1, 1, 0x01 },854{ 0xd001, 0, 1, 0x00 },855{ 0xd001, 5, 1, 0x00 },856{ 0xd002, 0, 5, 0x19 },857{ 0xd003, 0, 5, 0x1a },858{ 0xd004, 0, 5, 0x19 },859{ 0xd005, 0, 5, 0x1a },860{ 0xd00e, 0, 5, 0x10 },861{ 0xd00f, 0, 3, 0x04 },862{ 0xd00f, 3, 3, 0x05 },863{ 0xd010, 0, 3, 0x04 },864{ 0xd010, 3, 3, 0x05 },865{ 0xd016, 4, 4, 0x03 },866{ 0xd01f, 0, 6, 0x0a },867{ 0xd020, 0, 6, 0x0a },868{ 0x9bda, 0, 8, 0x01 },869{ 0x9be3, 0, 8, 0x01 },870{ 0xd1a0, 1, 1, 0x00 },871{ 0x9bbe, 0, 1, 0x01 },872{ 0x9bcc, 0, 1, 0x01 },873{ 0x9bb9, 0, 8, 0x00 },874{ 0x9bcd, 0, 8, 0x18 },875{ 0x9bff, 0, 8, 0x2c },876{ 0xd015, 0, 8, 0x46 },877{ 0xd016, 0, 1, 0x00 },878{ 0xd044, 0, 8, 0x46 },879{ 0xd045, 0, 1, 0x00 },880{ 0xd008, 0, 8, 0xdf },881{ 0xd009, 0, 2, 0x02 },882{ 0xd006, 0, 8, 0x44 },883{ 0xd007, 0, 2, 0x01 },884{ 0xd00c, 0, 8, 0x00 },885{ 0xd00d, 0, 2, 0x02 },886{ 0xd00a, 0, 8, 0xf6 },887{ 0xd00b, 0, 2, 0x01 },888{ 0x9bba, 0, 8, 0xf9 },889{ 0x9bc8, 0, 8, 0xaa },890{ 0x9bc3, 0, 8, 0xdf },891{ 0x9bc4, 0, 8, 0x02 },892{ 0x9bc5, 0, 8, 0x00 },893{ 0x9bc6, 0, 8, 0x02 },894{ 0x9bc9, 0, 8, 0xf0 },895{ 0xd011, 0, 8, 0x3c },896{ 0xd012, 0, 2, 0x01 },897{ 0xd013, 0, 8, 0xf7 },898{ 0xd014, 0, 2, 0x02 },899{ 0xd040, 0, 8, 0x0b },900{ 0xd041, 0, 2, 0x02 },901{ 0xd042, 0, 8, 0x4d },902{ 0xd043, 0, 2, 0x00 },903{ 0xd045, 1, 1, 0x00 },904{ 0x9bcf, 0, 1, 0x01 },905{ 0xd045, 2, 1, 0x01 },906{ 0xd04f, 0, 8, 0x9a },907{ 0xd050, 0, 1, 0x01 },908{ 0xd051, 0, 8, 0x5a },909{ 0xd052, 0, 1, 0x01 },910{ 0xd053, 0, 8, 0x50 },911{ 0xd054, 0, 8, 0x46 },912{ 0x9bd7, 0, 8, 0x0a },913{ 0x9bd8, 0, 8, 0x14 },914{ 0x9bd9, 0, 8, 0x08 },915{ 0x9bd0, 0, 8, 0xa8 },916{ 0x9be4, 0, 8, 0x7f },917{ 0x9bbd, 0, 8, 0xa8 },918{ 0x9be2, 0, 8, 0x20 },919{ 0x9bee, 0, 1, 0x01 },920};921922#endif /* _AF9013_PRIV_ */923924925