brintos

brintos / linux-shallow public Read only

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