cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

af9013_priv.h (20633B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Afatech AF9013 demodulator driver
      4 *
      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_H
     12#define AF9013_PRIV_H
     13
     14#include <media/dvb_frontend.h>
     15#include <media/dvb_math.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 init
     82 */
     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 init
    165 * AF9013_TUNER_ENV77H11D5    0x81
    166 */
    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 init
    233 * AF9013_TUNER_MT2060        0x82
    234 */
    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 init
    312 * AF9013_TUNER_MT2060_2      0x93
    313 */
    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 init
    381 * AF9013_TUNER_MXL5003D      0x03
    382 */
    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 init
    453 * AF9013_TUNER_MXL5005D      0x0d
    454 * AF9013_TUNER_MXL5005R      0x1e
    455 * AF9013_TUNER_MXL5007T      0xb1
    456 */
    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 init
    535 * AF9013_TUNER_QT1010        0x86
    536 * AF9013_TUNER_QT1010A       0xa2
    537 */
    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 init
    615 * AF9013_TUNER_MC44S803      0x85
    616 */
    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 init
    699 * AF9013_TUNER_UNKNOWN       0x8c
    700 */
    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 init
    773 * AF9013_TUNER_TDA18271      0x9c
    774 * AF9013_TUNER_TDA18218      0xb3
    775 */
    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 */