// SPDX-License-Identifier: GPL-2.0-or-later
/*
tda18271-maps.c - driver for the Philips / NXP TDA18271 silicon tuner
Copyright (C) 2007, 2008 Michael Krufky <mkrufky@linuxtv.org>
*/
#include "tda18271-priv.h"
struct tda18271_pll_map {
u32 lomax;
u8 pd; /* post div */
u8 d; /* div */
};
struct tda18271_map {
u32 rfmax;
u8 val;
};
/*---------------------------------------------------------------------*/
static struct tda18271_pll_map tda18271c1_main_pll[] = {
{ .lomax = 32000 , .pd = 0 x5f, .d = 0 xf0 },
{ .lomax = 35000 , .pd = 0 x5e, .d = 0 xe0 },
{ .lomax = 37000 , .pd = 0 x5d, .d = 0 xd0 },
{ .lomax = 41000 , .pd = 0 x5c, .d = 0 xc0 },
{ .lomax = 44000 , .pd = 0 x5b, .d = 0 xb0 },
{ .lomax = 49000 , .pd = 0 x5a, .d = 0 xa0 },
{ .lomax = 54000 , .pd = 0 x59, .d = 0 x90 },
{ .lomax = 61000 , .pd = 0 x58, .d = 0 x80 },
{ .lomax = 65000 , .pd = 0 x4f, .d = 0 x78 },
{ .lomax = 70000 , .pd = 0 x4e, .d = 0 x70 },
{ .lomax = 75000 , .pd = 0 x4d, .d = 0 x68 },
{ .lomax = 82000 , .pd = 0 x4c, .d = 0 x60 },
{ .lomax = 89000 , .pd = 0 x4b, .d = 0 x58 },
{ .lomax = 98000 , .pd = 0 x4a, .d = 0 x50 },
{ .lomax = 109000 , .pd = 0 x49, .d = 0 x48 },
{ .lomax = 123000 , .pd = 0 x48, .d = 0 x40 },
{ .lomax = 131000 , .pd = 0 x3f, .d = 0 x3c },
{ .lomax = 141000 , .pd = 0 x3e, .d = 0 x38 },
{ .lomax = 151000 , .pd = 0 x3d, .d = 0 x34 },
{ .lomax = 164000 , .pd = 0 x3c, .d = 0 x30 },
{ .lomax = 179000 , .pd = 0 x3b, .d = 0 x2c },
{ .lomax = 197000 , .pd = 0 x3a, .d = 0 x28 },
{ .lomax = 219000 , .pd = 0 x39, .d = 0 x24 },
{ .lomax = 246000 , .pd = 0 x38, .d = 0 x20 },
{ .lomax = 263000 , .pd = 0 x2f, .d = 0 x1e },
{ .lomax = 282000 , .pd = 0 x2e, .d = 0 x1c },
{ .lomax = 303000 , .pd = 0 x2d, .d = 0 x1a },
{ .lomax = 329000 , .pd = 0 x2c, .d = 0 x18 },
{ .lomax = 359000 , .pd = 0 x2b, .d = 0 x16 },
{ .lomax = 395000 , .pd = 0 x2a, .d = 0 x14 },
{ .lomax = 438000 , .pd = 0 x29, .d = 0 x12 },
{ .lomax = 493000 , .pd = 0 x28, .d = 0 x10 },
{ .lomax = 526000 , .pd = 0 x1f, .d = 0 x0f },
{ .lomax = 564000 , .pd = 0 x1e, .d = 0 x0e },
{ .lomax = 607000 , .pd = 0 x1d, .d = 0 x0d },
{ .lomax = 658000 , .pd = 0 x1c, .d = 0 x0c },
{ .lomax = 718000 , .pd = 0 x1b, .d = 0 x0b },
{ .lomax = 790000 , .pd = 0 x1a, .d = 0 x0a },
{ .lomax = 877000 , .pd = 0 x19, .d = 0 x09 },
{ .lomax = 987000 , .pd = 0 x18, .d = 0 x08 },
{ .lomax = 0 , .pd = 0 x00, .d = 0 x00 }, /* end */
};
static struct tda18271_pll_map tda18271c2_main_pll[] = {
{ .lomax = 33125 , .pd = 0 x57, .d = 0 xf0 },
{ .lomax = 35500 , .pd = 0 x56, .d = 0 xe0 },
{ .lomax = 38188 , .pd = 0 x55, .d = 0 xd0 },
{ .lomax = 41375 , .pd = 0 x54, .d = 0 xc0 },
{ .lomax = 45125 , .pd = 0 x53, .d = 0 xb0 },
{ .lomax = 49688 , .pd = 0 x52, .d = 0 xa0 },
{ .lomax = 55188 , .pd = 0 x51, .d = 0 x90 },
{ .lomax = 62125 , .pd = 0 x50, .d = 0 x80 },
{ .lomax = 66250 , .pd = 0 x47, .d = 0 x78 },
{ .lomax = 71000 , .pd = 0 x46, .d = 0 x70 },
{ .lomax = 76375 , .pd = 0 x45, .d = 0 x68 },
{ .lomax = 82750 , .pd = 0 x44, .d = 0 x60 },
{ .lomax = 90250 , .pd = 0 x43, .d = 0 x58 },
{ .lomax = 99375 , .pd = 0 x42, .d = 0 x50 },
{ .lomax = 110375 , .pd = 0 x41, .d = 0 x48 },
{ .lomax = 124250 , .pd = 0 x40, .d = 0 x40 },
{ .lomax = 132500 , .pd = 0 x37, .d = 0 x3c },
{ .lomax = 142000 , .pd = 0 x36, .d = 0 x38 },
{ .lomax = 152750 , .pd = 0 x35, .d = 0 x34 },
{ .lomax = 165500 , .pd = 0 x34, .d = 0 x30 },
{ .lomax = 180500 , .pd = 0 x33, .d = 0 x2c },
{ .lomax = 198750 , .pd = 0 x32, .d = 0 x28 },
{ .lomax = 220750 , .pd = 0 x31, .d = 0 x24 },
{ .lomax = 248500 , .pd = 0 x30, .d = 0 x20 },
{ .lomax = 265000 , .pd = 0 x27, .d = 0 x1e },
{ .lomax = 284000 , .pd = 0 x26, .d = 0 x1c },
{ .lomax = 305500 , .pd = 0 x25, .d = 0 x1a },
{ .lomax = 331000 , .pd = 0 x24, .d = 0 x18 },
{ .lomax = 361000 , .pd = 0 x23, .d = 0 x16 },
{ .lomax = 397500 , .pd = 0 x22, .d = 0 x14 },
{ .lomax = 441500 , .pd = 0 x21, .d = 0 x12 },
{ .lomax = 497000 , .pd = 0 x20, .d = 0 x10 },
{ .lomax = 530000 , .pd = 0 x17, .d = 0 x0f },
{ .lomax = 568000 , .pd = 0 x16, .d = 0 x0e },
{ .lomax = 611000 , .pd = 0 x15, .d = 0 x0d },
{ .lomax = 662000 , .pd = 0 x14, .d = 0 x0c },
{ .lomax = 722000 , .pd = 0 x13, .d = 0 x0b },
{ .lomax = 795000 , .pd = 0 x12, .d = 0 x0a },
{ .lomax = 883000 , .pd = 0 x11, .d = 0 x09 },
{ .lomax = 994000 , .pd = 0 x10, .d = 0 x08 },
{ .lomax = 0 , .pd = 0 x00, .d = 0 x00 }, /* end */
};
static struct tda18271_pll_map tda18271c1_cal_pll[] = {
{ .lomax = 33000 , .pd = 0 xdd, .d = 0 xd0 },
{ .lomax = 36000 , .pd = 0 xdc, .d = 0 xc0 },
{ .lomax = 40000 , .pd = 0 xdb, .d = 0 xb0 },
{ .lomax = 44000 , .pd = 0 xda, .d = 0 xa0 },
{ .lomax = 49000 , .pd = 0 xd9, .d = 0 x90 },
{ .lomax = 55000 , .pd = 0 xd8, .d = 0 x80 },
{ .lomax = 63000 , .pd = 0 xd3, .d = 0 x70 },
{ .lomax = 67000 , .pd = 0 xcd, .d = 0 x68 },
{ .lomax = 73000 , .pd = 0 xcc, .d = 0 x60 },
{ .lomax = 80000 , .pd = 0 xcb, .d = 0 x58 },
{ .lomax = 88000 , .pd = 0 xca, .d = 0 x50 },
{ .lomax = 98000 , .pd = 0 xc9, .d = 0 x48 },
{ .lomax = 110000 , .pd = 0 xc8, .d = 0 x40 },
{ .lomax = 126000 , .pd = 0 xc3, .d = 0 x38 },
{ .lomax = 135000 , .pd = 0 xbd, .d = 0 x34 },
{ .lomax = 147000 , .pd = 0 xbc, .d = 0 x30 },
{ .lomax = 160000 , .pd = 0 xbb, .d = 0 x2c },
{ .lomax = 176000 , .pd = 0 xba, .d = 0 x28 },
{ .lomax = 196000 , .pd = 0 xb9, .d = 0 x24 },
{ .lomax = 220000 , .pd = 0 xb8, .d = 0 x20 },
{ .lomax = 252000 , .pd = 0 xb3, .d = 0 x1c },
{ .lomax = 271000 , .pd = 0 xad, .d = 0 x1a },
{ .lomax = 294000 , .pd = 0 xac, .d = 0 x18 },
{ .lomax = 321000 , .pd = 0 xab, .d = 0 x16 },
{ .lomax = 353000 , .pd = 0 xaa, .d = 0 x14 },
{ .lomax = 392000 , .pd = 0 xa9, .d = 0 x12 },
{ .lomax = 441000 , .pd = 0 xa8, .d = 0 x10 },
{ .lomax = 505000 , .pd = 0 xa3, .d = 0 x0e },
{ .lomax = 543000 , .pd = 0 x9d, .d = 0 x0d },
{ .lomax = 589000 , .pd = 0 x9c, .d = 0 x0c },
{ .lomax = 642000 , .pd = 0 x9b, .d = 0 x0b },
{ .lomax = 707000 , .pd = 0 x9a, .d = 0 x0a },
{ .lomax = 785000 , .pd = 0 x99, .d = 0 x09 },
{ .lomax = 883000 , .pd = 0 x98, .d = 0 x08 },
{ .lomax = 1010000 , .pd = 0 x93, .d = 0 x07 },
{ .lomax = 0 , .pd = 0 x00, .d = 0 x00 }, /* end */
};
static struct tda18271_pll_map tda18271c2_cal_pll[] = {
{ .lomax = 33813 , .pd = 0 xdd, .d = 0 xd0 },
{ .lomax = 36625 , .pd = 0 xdc, .d = 0 xc0 },
{ .lomax = 39938 , .pd = 0 xdb, .d = 0 xb0 },
{ .lomax = 43938 , .pd = 0 xda, .d = 0 xa0 },
{ .lomax = 48813 , .pd = 0 xd9, .d = 0 x90 },
{ .lomax = 54938 , .pd = 0 xd8, .d = 0 x80 },
{ .lomax = 62813 , .pd = 0 xd3, .d = 0 x70 },
{ .lomax = 67625 , .pd = 0 xcd, .d = 0 x68 },
{ .lomax = 73250 , .pd = 0 xcc, .d = 0 x60 },
{ .lomax = 79875 , .pd = 0 xcb, .d = 0 x58 },
{ .lomax = 87875 , .pd = 0 xca, .d = 0 x50 },
{ .lomax = 97625 , .pd = 0 xc9, .d = 0 x48 },
{ .lomax = 109875 , .pd = 0 xc8, .d = 0 x40 },
{ .lomax = 125625 , .pd = 0 xc3, .d = 0 x38 },
{ .lomax = 135250 , .pd = 0 xbd, .d = 0 x34 },
{ .lomax = 146500 , .pd = 0 xbc, .d = 0 x30 },
{ .lomax = 159750 , .pd = 0 xbb, .d = 0 x2c },
{ .lomax = 175750 , .pd = 0 xba, .d = 0 x28 },
{ .lomax = 195250 , .pd = 0 xb9, .d = 0 x24 },
{ .lomax = 219750 , .pd = 0 xb8, .d = 0 x20 },
{ .lomax = 251250 , .pd = 0 xb3, .d = 0 x1c },
{ .lomax = 270500 , .pd = 0 xad, .d = 0 x1a },
{ .lomax = 293000 , .pd = 0 xac, .d = 0 x18 },
{ .lomax = 319500 , .pd = 0 xab, .d = 0 x16 },
{ .lomax = 351500 , .pd = 0 xaa, .d = 0 x14 },
{ .lomax = 390500 , .pd = 0 xa9, .d = 0 x12 },
{ .lomax = 439500 , .pd = 0 xa8, .d = 0 x10 },
{ .lomax = 502500 , .pd = 0 xa3, .d = 0 x0e },
{ .lomax = 541000 , .pd = 0 x9d, .d = 0 x0d },
{ .lomax = 586000 , .pd = 0 x9c, .d = 0 x0c },
{ .lomax = 639000 , .pd = 0 x9b, .d = 0 x0b },
{ .lomax = 703000 , .pd = 0 x9a, .d = 0 x0a },
{ .lomax = 781000 , .pd = 0 x99, .d = 0 x09 },
{ .lomax = 879000 , .pd = 0 x98, .d = 0 x08 },
{ .lomax = 0 , .pd = 0 x00, .d = 0 x00 }, /* end */
};
static struct tda18271_map tda18271_bp_filter[] = {
{ .rfmax = 62000 , .val = 0 x00 },
{ .rfmax = 84000 , .val = 0 x01 },
{ .rfmax = 100000 , .val = 0 x02 },
{ .rfmax = 140000 , .val = 0 x03 },
{ .rfmax = 170000 , .val = 0 x04 },
{ .rfmax = 180000 , .val = 0 x05 },
{ .rfmax = 865000 , .val = 0 x06 },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271c1_km[] = {
{ .rfmax = 61100 , .val = 0 x74 },
{ .rfmax = 350000 , .val = 0 x40 },
{ .rfmax = 720000 , .val = 0 x30 },
{ .rfmax = 865000 , .val = 0 x40 },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271c2_km[] = {
{ .rfmax = 47900 , .val = 0 x38 },
{ .rfmax = 61100 , .val = 0 x44 },
{ .rfmax = 350000 , .val = 0 x30 },
{ .rfmax = 720000 , .val = 0 x24 },
{ .rfmax = 865000 , .val = 0 x3c },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271_rf_band[] = {
{ .rfmax = 47900 , .val = 0 x00 },
{ .rfmax = 61100 , .val = 0 x01 },
{ .rfmax = 152600 , .val = 0 x02 },
{ .rfmax = 164700 , .val = 0 x03 },
{ .rfmax = 203500 , .val = 0 x04 },
{ .rfmax = 457800 , .val = 0 x05 },
{ .rfmax = 865000 , .val = 0 x06 },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271_gain_taper[] = {
{ .rfmax = 45400 , .val = 0 x1f },
{ .rfmax = 45800 , .val = 0 x1e },
{ .rfmax = 46200 , .val = 0 x1d },
{ .rfmax = 46700 , .val = 0 x1c },
{ .rfmax = 47100 , .val = 0 x1b },
{ .rfmax = 47500 , .val = 0 x1a },
{ .rfmax = 47900 , .val = 0 x19 },
{ .rfmax = 49600 , .val = 0 x17 },
{ .rfmax = 51200 , .val = 0 x16 },
{ .rfmax = 52900 , .val = 0 x15 },
{ .rfmax = 54500 , .val = 0 x14 },
{ .rfmax = 56200 , .val = 0 x13 },
{ .rfmax = 57800 , .val = 0 x12 },
{ .rfmax = 59500 , .val = 0 x11 },
{ .rfmax = 61100 , .val = 0 x10 },
{ .rfmax = 67600 , .val = 0 x0d },
{ .rfmax = 74200 , .val = 0 x0c },
{ .rfmax = 80700 , .val = 0 x0b },
{ .rfmax = 87200 , .val = 0 x0a },
{ .rfmax = 93800 , .val = 0 x09 },
{ .rfmax = 100300 , .val = 0 x08 },
{ .rfmax = 106900 , .val = 0 x07 },
{ .rfmax = 113400 , .val = 0 x06 },
{ .rfmax = 119900 , .val = 0 x05 },
{ .rfmax = 126500 , .val = 0 x04 },
{ .rfmax = 133000 , .val = 0 x03 },
{ .rfmax = 139500 , .val = 0 x02 },
{ .rfmax = 146100 , .val = 0 x01 },
{ .rfmax = 152600 , .val = 0 x00 },
{ .rfmax = 154300 , .val = 0 x1f },
{ .rfmax = 156100 , .val = 0 x1e },
{ .rfmax = 157800 , .val = 0 x1d },
{ .rfmax = 159500 , .val = 0 x1c },
{ .rfmax = 161200 , .val = 0 x1b },
{ .rfmax = 163000 , .val = 0 x1a },
{ .rfmax = 164700 , .val = 0 x19 },
{ .rfmax = 170200 , .val = 0 x17 },
{ .rfmax = 175800 , .val = 0 x16 },
{ .rfmax = 181300 , .val = 0 x15 },
{ .rfmax = 186900 , .val = 0 x14 },
{ .rfmax = 192400 , .val = 0 x13 },
{ .rfmax = 198000 , .val = 0 x12 },
{ .rfmax = 203500 , .val = 0 x11 },
{ .rfmax = 216200 , .val = 0 x14 },
{ .rfmax = 228900 , .val = 0 x13 },
{ .rfmax = 241600 , .val = 0 x12 },
{ .rfmax = 254400 , .val = 0 x11 },
{ .rfmax = 267100 , .val = 0 x10 },
{ .rfmax = 279800 , .val = 0 x0f },
{ .rfmax = 292500 , .val = 0 x0e },
{ .rfmax = 305200 , .val = 0 x0d },
{ .rfmax = 317900 , .val = 0 x0c },
{ .rfmax = 330700 , .val = 0 x0b },
{ .rfmax = 343400 , .val = 0 x0a },
{ .rfmax = 356100 , .val = 0 x09 },
{ .rfmax = 368800 , .val = 0 x08 },
{ .rfmax = 381500 , .val = 0 x07 },
{ .rfmax = 394200 , .val = 0 x06 },
{ .rfmax = 406900 , .val = 0 x05 },
{ .rfmax = 419700 , .val = 0 x04 },
{ .rfmax = 432400 , .val = 0 x03 },
{ .rfmax = 445100 , .val = 0 x02 },
{ .rfmax = 457800 , .val = 0 x01 },
{ .rfmax = 476300 , .val = 0 x19 },
{ .rfmax = 494800 , .val = 0 x18 },
{ .rfmax = 513300 , .val = 0 x17 },
{ .rfmax = 531800 , .val = 0 x16 },
{ .rfmax = 550300 , .val = 0 x15 },
{ .rfmax = 568900 , .val = 0 x14 },
{ .rfmax = 587400 , .val = 0 x13 },
{ .rfmax = 605900 , .val = 0 x12 },
{ .rfmax = 624400 , .val = 0 x11 },
{ .rfmax = 642900 , .val = 0 x10 },
{ .rfmax = 661400 , .val = 0 x0f },
{ .rfmax = 679900 , .val = 0 x0e },
{ .rfmax = 698400 , .val = 0 x0d },
{ .rfmax = 716900 , .val = 0 x0c },
{ .rfmax = 735400 , .val = 0 x0b },
{ .rfmax = 753900 , .val = 0 x0a },
{ .rfmax = 772500 , .val = 0 x09 },
{ .rfmax = 791000 , .val = 0 x08 },
{ .rfmax = 809500 , .val = 0 x07 },
{ .rfmax = 828000 , .val = 0 x06 },
{ .rfmax = 846500 , .val = 0 x05 },
{ .rfmax = 865000 , .val = 0 x04 },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271c1_rf_cal[] = {
{ .rfmax = 41000 , .val = 0 x1e },
{ .rfmax = 43000 , .val = 0 x30 },
{ .rfmax = 45000 , .val = 0 x43 },
{ .rfmax = 46000 , .val = 0 x4d },
{ .rfmax = 47000 , .val = 0 x54 },
{ .rfmax = 47900 , .val = 0 x64 },
{ .rfmax = 49100 , .val = 0 x20 },
{ .rfmax = 50000 , .val = 0 x22 },
{ .rfmax = 51000 , .val = 0 x2a },
{ .rfmax = 53000 , .val = 0 x32 },
{ .rfmax = 55000 , .val = 0 x35 },
{ .rfmax = 56000 , .val = 0 x3c },
{ .rfmax = 57000 , .val = 0 x3f },
{ .rfmax = 58000 , .val = 0 x48 },
{ .rfmax = 59000 , .val = 0 x4d },
{ .rfmax = 60000 , .val = 0 x58 },
{ .rfmax = 61100 , .val = 0 x5f },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271c2_rf_cal[] = {
{ .rfmax = 41000 , .val = 0 x0f },
{ .rfmax = 43000 , .val = 0 x1c },
{ .rfmax = 45000 , .val = 0 x2f },
{ .rfmax = 46000 , .val = 0 x39 },
{ .rfmax = 47000 , .val = 0 x40 },
{ .rfmax = 47900 , .val = 0 x50 },
{ .rfmax = 49100 , .val = 0 x16 },
{ .rfmax = 50000 , .val = 0 x18 },
{ .rfmax = 51000 , .val = 0 x20 },
{ .rfmax = 53000 , .val = 0 x28 },
{ .rfmax = 55000 , .val = 0 x2b },
{ .rfmax = 56000 , .val = 0 x32 },
{ .rfmax = 57000 , .val = 0 x35 },
{ .rfmax = 58000 , .val = 0 x3e },
{ .rfmax = 59000 , .val = 0 x43 },
{ .rfmax = 60000 , .val = 0 x4e },
{ .rfmax = 61100 , .val = 0 x55 },
{ .rfmax = 63000 , .val = 0 x0f },
{ .rfmax = 64000 , .val = 0 x11 },
{ .rfmax = 65000 , .val = 0 x12 },
{ .rfmax = 66000 , .val = 0 x15 },
{ .rfmax = 67000 , .val = 0 x16 },
{ .rfmax = 68000 , .val = 0 x17 },
{ .rfmax = 70000 , .val = 0 x19 },
{ .rfmax = 71000 , .val = 0 x1c },
{ .rfmax = 72000 , .val = 0 x1d },
{ .rfmax = 73000 , .val = 0 x1f },
{ .rfmax = 74000 , .val = 0 x20 },
{ .rfmax = 75000 , .val = 0 x21 },
{ .rfmax = 76000 , .val = 0 x24 },
{ .rfmax = 77000 , .val = 0 x25 },
{ .rfmax = 78000 , .val = 0 x27 },
{ .rfmax = 80000 , .val = 0 x28 },
{ .rfmax = 81000 , .val = 0 x29 },
{ .rfmax = 82000 , .val = 0 x2d },
{ .rfmax = 83000 , .val = 0 x2e },
{ .rfmax = 84000 , .val = 0 x2f },
{ .rfmax = 85000 , .val = 0 x31 },
{ .rfmax = 86000 , .val = 0 x33 },
{ .rfmax = 87000 , .val = 0 x34 },
{ .rfmax = 88000 , .val = 0 x35 },
{ .rfmax = 89000 , .val = 0 x37 },
{ .rfmax = 90000 , .val = 0 x38 },
{ .rfmax = 91000 , .val = 0 x39 },
{ .rfmax = 93000 , .val = 0 x3c },
{ .rfmax = 94000 , .val = 0 x3e },
{ .rfmax = 95000 , .val = 0 x3f },
{ .rfmax = 96000 , .val = 0 x40 },
{ .rfmax = 97000 , .val = 0 x42 },
{ .rfmax = 99000 , .val = 0 x45 },
{ .rfmax = 100000 , .val = 0 x46 },
{ .rfmax = 102000 , .val = 0 x48 },
{ .rfmax = 103000 , .val = 0 x4a },
{ .rfmax = 105000 , .val = 0 x4d },
{ .rfmax = 106000 , .val = 0 x4e },
{ .rfmax = 107000 , .val = 0 x50 },
{ .rfmax = 108000 , .val = 0 x51 },
{ .rfmax = 110000 , .val = 0 x54 },
{ .rfmax = 111000 , .val = 0 x56 },
{ .rfmax = 112000 , .val = 0 x57 },
{ .rfmax = 113000 , .val = 0 x58 },
{ .rfmax = 114000 , .val = 0 x59 },
{ .rfmax = 115000 , .val = 0 x5c },
{ .rfmax = 116000 , .val = 0 x5d },
{ .rfmax = 117000 , .val = 0 x5f },
{ .rfmax = 119000 , .val = 0 x60 },
{ .rfmax = 120000 , .val = 0 x64 },
{ .rfmax = 121000 , .val = 0 x65 },
{ .rfmax = 122000 , .val = 0 x66 },
{ .rfmax = 123000 , .val = 0 x68 },
{ .rfmax = 124000 , .val = 0 x69 },
{ .rfmax = 125000 , .val = 0 x6c },
{ .rfmax = 126000 , .val = 0 x6d },
{ .rfmax = 127000 , .val = 0 x6e },
{ .rfmax = 128000 , .val = 0 x70 },
{ .rfmax = 129000 , .val = 0 x71 },
{ .rfmax = 130000 , .val = 0 x75 },
{ .rfmax = 131000 , .val = 0 x77 },
{ .rfmax = 132000 , .val = 0 x78 },
{ .rfmax = 133000 , .val = 0 x7b },
{ .rfmax = 134000 , .val = 0 x7e },
{ .rfmax = 135000 , .val = 0 x81 },
{ .rfmax = 136000 , .val = 0 x82 },
{ .rfmax = 137000 , .val = 0 x87 },
{ .rfmax = 138000 , .val = 0 x88 },
{ .rfmax = 139000 , .val = 0 x8d },
{ .rfmax = 140000 , .val = 0 x8e },
{ .rfmax = 141000 , .val = 0 x91 },
{ .rfmax = 142000 , .val = 0 x95 },
{ .rfmax = 143000 , .val = 0 x9a },
{ .rfmax = 144000 , .val = 0 x9d },
{ .rfmax = 145000 , .val = 0 xa1 },
{ .rfmax = 146000 , .val = 0 xa2 },
{ .rfmax = 147000 , .val = 0 xa4 },
{ .rfmax = 148000 , .val = 0 xa9 },
{ .rfmax = 149000 , .val = 0 xae },
{ .rfmax = 150000 , .val = 0 xb0 },
{ .rfmax = 151000 , .val = 0 xb1 },
{ .rfmax = 152000 , .val = 0 xb7 },
{ .rfmax = 152600 , .val = 0 xbd },
{ .rfmax = 154000 , .val = 0 x20 },
{ .rfmax = 155000 , .val = 0 x22 },
{ .rfmax = 156000 , .val = 0 x24 },
{ .rfmax = 157000 , .val = 0 x25 },
{ .rfmax = 158000 , .val = 0 x27 },
{ .rfmax = 159000 , .val = 0 x29 },
{ .rfmax = 160000 , .val = 0 x2c },
{ .rfmax = 161000 , .val = 0 x2d },
{ .rfmax = 163000 , .val = 0 x2e },
{ .rfmax = 164000 , .val = 0 x2f },
{ .rfmax = 164700 , .val = 0 x30 },
{ .rfmax = 166000 , .val = 0 x11 },
{ .rfmax = 167000 , .val = 0 x12 },
{ .rfmax = 168000 , .val = 0 x13 },
{ .rfmax = 169000 , .val = 0 x14 },
{ .rfmax = 170000 , .val = 0 x15 },
{ .rfmax = 172000 , .val = 0 x16 },
{ .rfmax = 173000 , .val = 0 x17 },
{ .rfmax = 174000 , .val = 0 x18 },
{ .rfmax = 175000 , .val = 0 x1a },
{ .rfmax = 176000 , .val = 0 x1b },
{ .rfmax = 178000 , .val = 0 x1d },
{ .rfmax = 179000 , .val = 0 x1e },
{ .rfmax = 180000 , .val = 0 x1f },
{ .rfmax = 181000 , .val = 0 x20 },
{ .rfmax = 182000 , .val = 0 x21 },
{ .rfmax = 183000 , .val = 0 x22 },
{ .rfmax = 184000 , .val = 0 x24 },
{ .rfmax = 185000 , .val = 0 x25 },
{ .rfmax = 186000 , .val = 0 x26 },
{ .rfmax = 187000 , .val = 0 x27 },
{ .rfmax = 188000 , .val = 0 x29 },
{ .rfmax = 189000 , .val = 0 x2a },
{ .rfmax = 190000 , .val = 0 x2c },
{ .rfmax = 191000 , .val = 0 x2d },
{ .rfmax = 192000 , .val = 0 x2e },
{ .rfmax = 193000 , .val = 0 x2f },
{ .rfmax = 194000 , .val = 0 x30 },
{ .rfmax = 195000 , .val = 0 x33 },
{ .rfmax = 196000 , .val = 0 x35 },
{ .rfmax = 198000 , .val = 0 x36 },
{ .rfmax = 200000 , .val = 0 x38 },
{ .rfmax = 201000 , .val = 0 x3c },
{ .rfmax = 202000 , .val = 0 x3d },
{ .rfmax = 203500 , .val = 0 x3e },
{ .rfmax = 206000 , .val = 0 x0e },
{ .rfmax = 208000 , .val = 0 x0f },
{ .rfmax = 212000 , .val = 0 x10 },
{ .rfmax = 216000 , .val = 0 x11 },
{ .rfmax = 217000 , .val = 0 x12 },
{ .rfmax = 218000 , .val = 0 x13 },
{ .rfmax = 220000 , .val = 0 x14 },
{ .rfmax = 222000 , .val = 0 x15 },
{ .rfmax = 225000 , .val = 0 x16 },
{ .rfmax = 228000 , .val = 0 x17 },
{ .rfmax = 231000 , .val = 0 x18 },
{ .rfmax = 234000 , .val = 0 x19 },
{ .rfmax = 235000 , .val = 0 x1a },
{ .rfmax = 236000 , .val = 0 x1b },
{ .rfmax = 237000 , .val = 0 x1c },
{ .rfmax = 240000 , .val = 0 x1d },
{ .rfmax = 242000 , .val = 0 x1e },
{ .rfmax = 244000 , .val = 0 x1f },
{ .rfmax = 247000 , .val = 0 x20 },
{ .rfmax = 249000 , .val = 0 x21 },
{ .rfmax = 252000 , .val = 0 x22 },
{ .rfmax = 253000 , .val = 0 x23 },
{ .rfmax = 254000 , .val = 0 x24 },
{ .rfmax = 256000 , .val = 0 x25 },
{ .rfmax = 259000 , .val = 0 x26 },
{ .rfmax = 262000 , .val = 0 x27 },
{ .rfmax = 264000 , .val = 0 x28 },
{ .rfmax = 267000 , .val = 0 x29 },
{ .rfmax = 269000 , .val = 0 x2a },
{ .rfmax = 271000 , .val = 0 x2b },
{ .rfmax = 273000 , .val = 0 x2c },
{ .rfmax = 275000 , .val = 0 x2d },
{ .rfmax = 277000 , .val = 0 x2e },
{ .rfmax = 279000 , .val = 0 x2f },
{ .rfmax = 282000 , .val = 0 x30 },
{ .rfmax = 284000 , .val = 0 x31 },
{ .rfmax = 286000 , .val = 0 x32 },
{ .rfmax = 287000 , .val = 0 x33 },
{ .rfmax = 290000 , .val = 0 x34 },
{ .rfmax = 293000 , .val = 0 x35 },
{ .rfmax = 295000 , .val = 0 x36 },
{ .rfmax = 297000 , .val = 0 x37 },
{ .rfmax = 300000 , .val = 0 x38 },
{ .rfmax = 303000 , .val = 0 x39 },
{ .rfmax = 305000 , .val = 0 x3a },
{ .rfmax = 306000 , .val = 0 x3b },
{ .rfmax = 307000 , .val = 0 x3c },
{ .rfmax = 310000 , .val = 0 x3d },
{ .rfmax = 312000 , .val = 0 x3e },
{ .rfmax = 315000 , .val = 0 x3f },
{ .rfmax = 318000 , .val = 0 x40 },
{ .rfmax = 320000 , .val = 0 x41 },
{ .rfmax = 323000 , .val = 0 x42 },
{ .rfmax = 324000 , .val = 0 x43 },
{ .rfmax = 325000 , .val = 0 x44 },
{ .rfmax = 327000 , .val = 0 x45 },
{ .rfmax = 331000 , .val = 0 x46 },
{ .rfmax = 334000 , .val = 0 x47 },
{ .rfmax = 337000 , .val = 0 x48 },
{ .rfmax = 339000 , .val = 0 x49 },
{ .rfmax = 340000 , .val = 0 x4a },
{ .rfmax = 341000 , .val = 0 x4b },
{ .rfmax = 343000 , .val = 0 x4c },
{ .rfmax = 345000 , .val = 0 x4d },
{ .rfmax = 349000 , .val = 0 x4e },
{ .rfmax = 352000 , .val = 0 x4f },
{ .rfmax = 353000 , .val = 0 x50 },
{ .rfmax = 355000 , .val = 0 x51 },
{ .rfmax = 357000 , .val = 0 x52 },
{ .rfmax = 359000 , .val = 0 x53 },
{ .rfmax = 361000 , .val = 0 x54 },
{ .rfmax = 362000 , .val = 0 x55 },
{ .rfmax = 364000 , .val = 0 x56 },
{ .rfmax = 368000 , .val = 0 x57 },
{ .rfmax = 370000 , .val = 0 x58 },
{ .rfmax = 372000 , .val = 0 x59 },
{ .rfmax = 375000 , .val = 0 x5a },
{ .rfmax = 376000 , .val = 0 x5b },
{ .rfmax = 377000 , .val = 0 x5c },
{ .rfmax = 379000 , .val = 0 x5d },
{ .rfmax = 382000 , .val = 0 x5e },
{ .rfmax = 384000 , .val = 0 x5f },
{ .rfmax = 385000 , .val = 0 x60 },
{ .rfmax = 386000 , .val = 0 x61 },
{ .rfmax = 388000 , .val = 0 x62 },
{ .rfmax = 390000 , .val = 0 x63 },
{ .rfmax = 393000 , .val = 0 x64 },
{ .rfmax = 394000 , .val = 0 x65 },
{ .rfmax = 396000 , .val = 0 x66 },
{ .rfmax = 397000 , .val = 0 x67 },
{ .rfmax = 398000 , .val = 0 x68 },
{ .rfmax = 400000 , .val = 0 x69 },
{ .rfmax = 402000 , .val = 0 x6a },
{ .rfmax = 403000 , .val = 0 x6b },
{ .rfmax = 407000 , .val = 0 x6c },
{ .rfmax = 408000 , .val = 0 x6d },
{ .rfmax = 409000 , .val = 0 x6e },
{ .rfmax = 410000 , .val = 0 x6f },
{ .rfmax = 411000 , .val = 0 x70 },
{ .rfmax = 412000 , .val = 0 x71 },
{ .rfmax = 413000 , .val = 0 x72 },
{ .rfmax = 414000 , .val = 0 x73 },
{ .rfmax = 417000 , .val = 0 x74 },
{ .rfmax = 418000 , .val = 0 x75 },
{ .rfmax = 420000 , .val = 0 x76 },
{ .rfmax = 422000 , .val = 0 x77 },
{ .rfmax = 423000 , .val = 0 x78 },
{ .rfmax = 424000 , .val = 0 x79 },
{ .rfmax = 427000 , .val = 0 x7a },
{ .rfmax = 428000 , .val = 0 x7b },
{ .rfmax = 429000 , .val = 0 x7d },
{ .rfmax = 432000 , .val = 0 x7f },
{ .rfmax = 434000 , .val = 0 x80 },
{ .rfmax = 435000 , .val = 0 x81 },
{ .rfmax = 436000 , .val = 0 x83 },
{ .rfmax = 437000 , .val = 0 x84 },
{ .rfmax = 438000 , .val = 0 x85 },
{ .rfmax = 439000 , .val = 0 x86 },
{ .rfmax = 440000 , .val = 0 x87 },
{ .rfmax = 441000 , .val = 0 x88 },
{ .rfmax = 442000 , .val = 0 x89 },
{ .rfmax = 445000 , .val = 0 x8a },
{ .rfmax = 446000 , .val = 0 x8b },
{ .rfmax = 447000 , .val = 0 x8c },
{ .rfmax = 448000 , .val = 0 x8e },
{ .rfmax = 449000 , .val = 0 x8f },
{ .rfmax = 450000 , .val = 0 x90 },
{ .rfmax = 452000 , .val = 0 x91 },
{ .rfmax = 453000 , .val = 0 x93 },
{ .rfmax = 454000 , .val = 0 x94 },
{ .rfmax = 456000 , .val = 0 x96 },
{ .rfmax = 457800 , .val = 0 x98 },
{ .rfmax = 461000 , .val = 0 x11 },
{ .rfmax = 468000 , .val = 0 x12 },
{ .rfmax = 472000 , .val = 0 x13 },
{ .rfmax = 473000 , .val = 0 x14 },
{ .rfmax = 474000 , .val = 0 x15 },
{ .rfmax = 481000 , .val = 0 x16 },
{ .rfmax = 486000 , .val = 0 x17 },
{ .rfmax = 491000 , .val = 0 x18 },
{ .rfmax = 498000 , .val = 0 x19 },
{ .rfmax = 499000 , .val = 0 x1a },
{ .rfmax = 501000 , .val = 0 x1b },
{ .rfmax = 506000 , .val = 0 x1c },
{ .rfmax = 511000 , .val = 0 x1d },
{ .rfmax = 516000 , .val = 0 x1e },
{ .rfmax = 520000 , .val = 0 x1f },
{ .rfmax = 521000 , .val = 0 x20 },
{ .rfmax = 525000 , .val = 0 x21 },
{ .rfmax = 529000 , .val = 0 x22 },
{ .rfmax = 533000 , .val = 0 x23 },
{ .rfmax = 539000 , .val = 0 x24 },
{ .rfmax = 541000 , .val = 0 x25 },
{ .rfmax = 547000 , .val = 0 x26 },
{ .rfmax = 549000 , .val = 0 x27 },
{ .rfmax = 551000 , .val = 0 x28 },
{ .rfmax = 556000 , .val = 0 x29 },
{ .rfmax = 561000 , .val = 0 x2a },
{ .rfmax = 563000 , .val = 0 x2b },
{ .rfmax = 565000 , .val = 0 x2c },
{ .rfmax = 569000 , .val = 0 x2d },
{ .rfmax = 571000 , .val = 0 x2e },
{ .rfmax = 577000 , .val = 0 x2f },
{ .rfmax = 580000 , .val = 0 x30 },
{ .rfmax = 582000 , .val = 0 x31 },
{ .rfmax = 584000 , .val = 0 x32 },
{ .rfmax = 588000 , .val = 0 x33 },
{ .rfmax = 591000 , .val = 0 x34 },
{ .rfmax = 596000 , .val = 0 x35 },
{ .rfmax = 598000 , .val = 0 x36 },
{ .rfmax = 603000 , .val = 0 x37 },
{ .rfmax = 604000 , .val = 0 x38 },
{ .rfmax = 606000 , .val = 0 x39 },
{ .rfmax = 612000 , .val = 0 x3a },
{ .rfmax = 615000 , .val = 0 x3b },
{ .rfmax = 617000 , .val = 0 x3c },
{ .rfmax = 621000 , .val = 0 x3d },
{ .rfmax = 622000 , .val = 0 x3e },
{ .rfmax = 625000 , .val = 0 x3f },
{ .rfmax = 632000 , .val = 0 x40 },
{ .rfmax = 633000 , .val = 0 x41 },
{ .rfmax = 634000 , .val = 0 x42 },
{ .rfmax = 642000 , .val = 0 x43 },
{ .rfmax = 643000 , .val = 0 x44 },
{ .rfmax = 647000 , .val = 0 x45 },
{ .rfmax = 650000 , .val = 0 x46 },
{ .rfmax = 652000 , .val = 0 x47 },
{ .rfmax = 657000 , .val = 0 x48 },
{ .rfmax = 661000 , .val = 0 x49 },
{ .rfmax = 662000 , .val = 0 x4a },
{ .rfmax = 665000 , .val = 0 x4b },
{ .rfmax = 667000 , .val = 0 x4c },
{ .rfmax = 670000 , .val = 0 x4d },
{ .rfmax = 673000 , .val = 0 x4e },
{ .rfmax = 676000 , .val = 0 x4f },
{ .rfmax = 677000 , .val = 0 x50 },
{ .rfmax = 681000 , .val = 0 x51 },
{ .rfmax = 683000 , .val = 0 x52 },
{ .rfmax = 686000 , .val = 0 x53 },
{ .rfmax = 688000 , .val = 0 x54 },
{ .rfmax = 689000 , .val = 0 x55 },
{ .rfmax = 691000 , .val = 0 x56 },
{ .rfmax = 695000 , .val = 0 x57 },
{ .rfmax = 698000 , .val = 0 x58 },
{ .rfmax = 703000 , .val = 0 x59 },
{ .rfmax = 704000 , .val = 0 x5a },
{ .rfmax = 705000 , .val = 0 x5b },
{ .rfmax = 707000 , .val = 0 x5c },
{ .rfmax = 710000 , .val = 0 x5d },
{ .rfmax = 712000 , .val = 0 x5e },
{ .rfmax = 717000 , .val = 0 x5f },
{ .rfmax = 718000 , .val = 0 x60 },
{ .rfmax = 721000 , .val = 0 x61 },
{ .rfmax = 722000 , .val = 0 x62 },
{ .rfmax = 723000 , .val = 0 x63 },
{ .rfmax = 725000 , .val = 0 x64 },
{ .rfmax = 727000 , .val = 0 x65 },
{ .rfmax = 730000 , .val = 0 x66 },
{ .rfmax = 732000 , .val = 0 x67 },
{ .rfmax = 735000 , .val = 0 x68 },
{ .rfmax = 740000 , .val = 0 x69 },
{ .rfmax = 741000 , .val = 0 x6a },
{ .rfmax = 742000 , .val = 0 x6b },
{ .rfmax = 743000 , .val = 0 x6c },
{ .rfmax = 745000 , .val = 0 x6d },
{ .rfmax = 747000 , .val = 0 x6e },
{ .rfmax = 748000 , .val = 0 x6f },
{ .rfmax = 750000 , .val = 0 x70 },
{ .rfmax = 752000 , .val = 0 x71 },
{ .rfmax = 754000 , .val = 0 x72 },
{ .rfmax = 757000 , .val = 0 x73 },
{ .rfmax = 758000 , .val = 0 x74 },
{ .rfmax = 760000 , .val = 0 x75 },
{ .rfmax = 763000 , .val = 0 x76 },
{ .rfmax = 764000 , .val = 0 x77 },
{ .rfmax = 766000 , .val = 0 x78 },
{ .rfmax = 767000 , .val = 0 x79 },
{ .rfmax = 768000 , .val = 0 x7a },
{ .rfmax = 773000 , .val = 0 x7b },
{ .rfmax = 774000 , .val = 0 x7c },
{ .rfmax = 776000 , .val = 0 x7d },
{ .rfmax = 777000 , .val = 0 x7e },
{ .rfmax = 778000 , .val = 0 x7f },
{ .rfmax = 779000 , .val = 0 x80 },
{ .rfmax = 781000 , .val = 0 x81 },
{ .rfmax = 783000 , .val = 0 x82 },
{ .rfmax = 784000 , .val = 0 x83 },
{ .rfmax = 785000 , .val = 0 x84 },
{ .rfmax = 786000 , .val = 0 x85 },
{ .rfmax = 793000 , .val = 0 x86 },
{ .rfmax = 794000 , .val = 0 x87 },
{ .rfmax = 795000 , .val = 0 x88 },
{ .rfmax = 797000 , .val = 0 x89 },
{ .rfmax = 799000 , .val = 0 x8a },
{ .rfmax = 801000 , .val = 0 x8b },
{ .rfmax = 802000 , .val = 0 x8c },
{ .rfmax = 803000 , .val = 0 x8d },
{ .rfmax = 804000 , .val = 0 x8e },
{ .rfmax = 810000 , .val = 0 x90 },
{ .rfmax = 811000 , .val = 0 x91 },
{ .rfmax = 812000 , .val = 0 x92 },
{ .rfmax = 814000 , .val = 0 x93 },
{ .rfmax = 816000 , .val = 0 x94 },
{ .rfmax = 817000 , .val = 0 x96 },
{ .rfmax = 818000 , .val = 0 x97 },
{ .rfmax = 820000 , .val = 0 x98 },
{ .rfmax = 821000 , .val = 0 x99 },
{ .rfmax = 822000 , .val = 0 x9a },
{ .rfmax = 828000 , .val = 0 x9b },
{ .rfmax = 829000 , .val = 0 x9d },
{ .rfmax = 830000 , .val = 0 x9f },
{ .rfmax = 831000 , .val = 0 xa0 },
{ .rfmax = 833000 , .val = 0 xa1 },
{ .rfmax = 835000 , .val = 0 xa2 },
{ .rfmax = 836000 , .val = 0 xa3 },
{ .rfmax = 837000 , .val = 0 xa4 },
{ .rfmax = 838000 , .val = 0 xa6 },
{ .rfmax = 840000 , .val = 0 xa8 },
{ .rfmax = 842000 , .val = 0 xa9 },
{ .rfmax = 845000 , .val = 0 xaa },
{ .rfmax = 846000 , .val = 0 xab },
{ .rfmax = 847000 , .val = 0 xad },
{ .rfmax = 848000 , .val = 0 xae },
{ .rfmax = 852000 , .val = 0 xaf },
{ .rfmax = 853000 , .val = 0 xb0 },
{ .rfmax = 858000 , .val = 0 xb1 },
{ .rfmax = 860000 , .val = 0 xb2 },
{ .rfmax = 861000 , .val = 0 xb3 },
{ .rfmax = 862000 , .val = 0 xb4 },
{ .rfmax = 863000 , .val = 0 xb6 },
{ .rfmax = 864000 , .val = 0 xb8 },
{ .rfmax = 865000 , .val = 0 xb9 },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
static struct tda18271_map tda18271_ir_measure[] = {
{ .rfmax = 30000 , .val = 4 },
{ .rfmax = 200000 , .val = 5 },
{ .rfmax = 600000 , .val = 6 },
{ .rfmax = 865000 , .val = 7 },
{ .rfmax = 0 , .val = 0 }, /* end */
};
static struct tda18271_map tda18271_rf_cal_dc_over_dt[] = {
{ .rfmax = 47900 , .val = 0 x00 },
{ .rfmax = 55000 , .val = 0 x00 },
{ .rfmax = 61100 , .val = 0 x0a },
{ .rfmax = 64000 , .val = 0 x0a },
{ .rfmax = 82000 , .val = 0 x14 },
{ .rfmax = 84000 , .val = 0 x19 },
{ .rfmax = 119000 , .val = 0 x1c },
{ .rfmax = 124000 , .val = 0 x20 },
{ .rfmax = 129000 , .val = 0 x2a },
{ .rfmax = 134000 , .val = 0 x32 },
{ .rfmax = 139000 , .val = 0 x39 },
{ .rfmax = 144000 , .val = 0 x3e },
{ .rfmax = 149000 , .val = 0 x3f },
{ .rfmax = 152600 , .val = 0 x40 },
{ .rfmax = 154000 , .val = 0 x40 },
{ .rfmax = 164700 , .val = 0 x41 },
{ .rfmax = 203500 , .val = 0 x32 },
{ .rfmax = 353000 , .val = 0 x19 },
{ .rfmax = 356000 , .val = 0 x1a },
{ .rfmax = 359000 , .val = 0 x1b },
{ .rfmax = 363000 , .val = 0 x1c },
{ .rfmax = 366000 , .val = 0 x1d },
{ .rfmax = 369000 , .val = 0 x1e },
{ .rfmax = 373000 , .val = 0 x1f },
{ .rfmax = 376000 , .val = 0 x20 },
{ .rfmax = 379000 , .val = 0 x21 },
{ .rfmax = 383000 , .val = 0 x22 },
{ .rfmax = 386000 , .val = 0 x23 },
{ .rfmax = 389000 , .val = 0 x24 },
{ .rfmax = 393000 , .val = 0 x25 },
{ .rfmax = 396000 , .val = 0 x26 },
{ .rfmax = 399000 , .val = 0 x27 },
{ .rfmax = 402000 , .val = 0 x28 },
{ .rfmax = 404000 , .val = 0 x29 },
{ .rfmax = 407000 , .val = 0 x2a },
{ .rfmax = 409000 , .val = 0 x2b },
{ .rfmax = 412000 , .val = 0 x2c },
{ .rfmax = 414000 , .val = 0 x2d },
{ .rfmax = 417000 , .val = 0 x2e },
{ .rfmax = 419000 , .val = 0 x2f },
{ .rfmax = 422000 , .val = 0 x30 },
{ .rfmax = 424000 , .val = 0 x31 },
{ .rfmax = 427000 , .val = 0 x32 },
{ .rfmax = 429000 , .val = 0 x33 },
{ .rfmax = 432000 , .val = 0 x34 },
{ .rfmax = 434000 , .val = 0 x35 },
{ .rfmax = 437000 , .val = 0 x36 },
{ .rfmax = 439000 , .val = 0 x37 },
{ .rfmax = 442000 , .val = 0 x38 },
{ .rfmax = 444000 , .val = 0 x39 },
{ .rfmax = 447000 , .val = 0 x3a },
{ .rfmax = 449000 , .val = 0 x3b },
{ .rfmax = 457800 , .val = 0 x3c },
{ .rfmax = 465000 , .val = 0 x0f },
{ .rfmax = 477000 , .val = 0 x12 },
{ .rfmax = 483000 , .val = 0 x14 },
{ .rfmax = 502000 , .val = 0 x19 },
{ .rfmax = 508000 , .val = 0 x1b },
{ .rfmax = 519000 , .val = 0 x1c },
{ .rfmax = 522000 , .val = 0 x1d },
{ .rfmax = 524000 , .val = 0 x1e },
{ .rfmax = 534000 , .val = 0 x1f },
{ .rfmax = 549000 , .val = 0 x20 },
{ .rfmax = 554000 , .val = 0 x22 },
{ .rfmax = 584000 , .val = 0 x24 },
{ .rfmax = 589000 , .val = 0 x26 },
{ .rfmax = 658000 , .val = 0 x27 },
{ .rfmax = 664000 , .val = 0 x2c },
{ .rfmax = 669000 , .val = 0 x2d },
{ .rfmax = 699000 , .val = 0 x2e },
{ .rfmax = 704000 , .val = 0 x30 },
{ .rfmax = 709000 , .val = 0 x31 },
{ .rfmax = 714000 , .val = 0 x32 },
{ .rfmax = 724000 , .val = 0 x33 },
{ .rfmax = 729000 , .val = 0 x36 },
{ .rfmax = 739000 , .val = 0 x38 },
{ .rfmax = 744000 , .val = 0 x39 },
{ .rfmax = 749000 , .val = 0 x3b },
{ .rfmax = 754000 , .val = 0 x3c },
{ .rfmax = 759000 , .val = 0 x3d },
{ .rfmax = 764000 , .val = 0 x3e },
{ .rfmax = 769000 , .val = 0 x3f },
{ .rfmax = 774000 , .val = 0 x40 },
{ .rfmax = 779000 , .val = 0 x41 },
{ .rfmax = 784000 , .val = 0 x43 },
{ .rfmax = 789000 , .val = 0 x46 },
{ .rfmax = 794000 , .val = 0 x48 },
{ .rfmax = 799000 , .val = 0 x4b },
{ .rfmax = 804000 , .val = 0 x4f },
{ .rfmax = 809000 , .val = 0 x54 },
{ .rfmax = 814000 , .val = 0 x59 },
{ .rfmax = 819000 , .val = 0 x5d },
{ .rfmax = 824000 , .val = 0 x61 },
{ .rfmax = 829000 , .val = 0 x68 },
{ .rfmax = 834000 , .val = 0 x6e },
{ .rfmax = 839000 , .val = 0 x75 },
{ .rfmax = 844000 , .val = 0 x7e },
{ .rfmax = 849000 , .val = 0 x82 },
{ .rfmax = 854000 , .val = 0 x84 },
{ .rfmax = 859000 , .val = 0 x8f },
{ .rfmax = 865000 , .val = 0 x9a },
{ .rfmax = 0 , .val = 0 x00 }, /* end */
};
/*---------------------------------------------------------------------*/
struct tda18271_thermo_map {
u8 d;
u8 r0;
u8 r1;
};
static struct tda18271_thermo_map tda18271_thermometer[] = {
{ .d = 0 x00, .r0 = 60 , .r1 = 92 },
{ .d = 0 x01, .r0 = 62 , .r1 = 94 },
{ .d = 0 x02, .r0 = 66 , .r1 = 98 },
{ .d = 0 x03, .r0 = 64 , .r1 = 96 },
{ .d = 0 x04, .r0 = 74 , .r1 = 106 },
{ .d = 0 x05, .r0 = 72 , .r1 = 104 },
{ .d = 0 x06, .r0 = 68 , .r1 = 100 },
{ .d = 0 x07, .r0 = 70 , .r1 = 102 },
{ .d = 0 x08, .r0 = 90 , .r1 = 122 },
{ .d = 0 x09, .r0 = 88 , .r1 = 120 },
{ .d = 0 x0a, .r0 = 84 , .r1 = 116 },
{ .d = 0 x0b, .r0 = 86 , .r1 = 118 },
{ .d = 0 x0c, .r0 = 76 , .r1 = 108 },
{ .d = 0 x0d, .r0 = 78 , .r1 = 110 },
{ .d = 0 x0e, .r0 = 82 , .r1 = 114 },
{ .d = 0 x0f, .r0 = 80 , .r1 = 112 },
{ .d = 0 x00, .r0 = 0 , .r1 = 0 }, /* end */
};
int tda18271_lookup_thermometer(struct dvb_frontend *fe)
{
struct tda18271_priv *priv = fe->tuner_priv;
unsigned char *regs = priv->tda18271_regs;
int val, i = 0 ;
while (tda18271_thermometer[i].d < (regs[R_TM] & 0 x0f)) {
if (tda18271_thermometer[i + 1 ].d == 0 )
break ;
i++;
}
if ((regs[R_TM] & 0 x20) == 0 x20)
val = tda18271_thermometer[i].r1;
else
val = tda18271_thermometer[i].r0;
tda_map("(%d) tm = %d\n" , i, val);
return val;
}
/*---------------------------------------------------------------------*/
struct tda18271_cid_target_map {
u32 rfmax;
u8 target;
u16 limit;
};
static struct tda18271_cid_target_map tda18271_cid_target[] = {
{ .rfmax = 46000 , .target = 0 x04, .limit = 1800 },
{ .rfmax = 52200 , .target = 0 x0a, .limit = 1500 },
{ .rfmax = 70100 , .target = 0 x01, .limit = 4000 },
{ .rfmax = 136800 , .target = 0 x18, .limit = 4000 },
{ .rfmax = 156700 , .target = 0 x18, .limit = 4000 },
{ .rfmax = 186250 , .target = 0 x0a, .limit = 4000 },
{ .rfmax = 230000 , .target = 0 x0a, .limit = 4000 },
{ .rfmax = 345000 , .target = 0 x18, .limit = 4000 },
{ .rfmax = 426000 , .target = 0 x0e, .limit = 4000 },
{ .rfmax = 489500 , .target = 0 x1e, .limit = 4000 },
{ .rfmax = 697500 , .target = 0 x32, .limit = 4000 },
{ .rfmax = 842000 , .target = 0 x3a, .limit = 4000 },
{ .rfmax = 0 , .target = 0 x00, .limit = 0 }, /* end */
};
int tda18271_lookup_cid_target(struct dvb_frontend *fe,
u32 *freq, u8 *cid_target, u16 *count_limit)
{
struct tda18271_priv *priv = fe->tuner_priv;
int i = 0 ;
while ((tda18271_cid_target[i].rfmax * 1000 ) < *freq) {
if (tda18271_cid_target[i + 1 ].rfmax == 0 )
break ;
i++;
}
*cid_target = tda18271_cid_target[i].target;
*count_limit = tda18271_cid_target[i].limit;
tda_map("(%d) cid_target = %02x, count_limit = %d\n" , i,
tda18271_cid_target[i].target, tda18271_cid_target[i].limit);
return 0 ;
}
/*---------------------------------------------------------------------*/
static struct tda18271_rf_tracking_filter_cal tda18271_rf_band_template[] = {
{ .rfmax = 47900 , .rfband = 0 x00,
.rf1_def = 46000 , .rf2_def = 0 , .rf3_def = 0 },
{ .rfmax = 61100 , .rfband = 0 x01,
.rf1_def = 52200 , .rf2_def = 0 , .rf3_def = 0 },
{ .rfmax = 152600 , .rfband = 0 x02,
.rf1_def = 70100 , .rf2_def = 136800 , .rf3_def = 0 },
{ .rfmax = 164700 , .rfband = 0 x03,
.rf1_def = 156700 , .rf2_def = 0 , .rf3_def = 0 },
{ .rfmax = 203500 , .rfband = 0 x04,
.rf1_def = 186250 , .rf2_def = 0 , .rf3_def = 0 },
{ .rfmax = 457800 , .rfband = 0 x05,
.rf1_def = 230000 , .rf2_def = 345000 , .rf3_def = 426000 },
{ .rfmax = 865000 , .rfband = 0 x06,
.rf1_def = 489500 , .rf2_def = 697500 , .rf3_def = 842000 },
{ .rfmax = 0 , .rfband = 0 x00,
.rf1_def = 0 , .rf2_def = 0 , .rf3_def = 0 }, /* end */
};
int tda18271_lookup_rf_band(struct dvb_frontend *fe, u32 *freq, u8 *rf_band)
{
struct tda18271_priv *priv = fe->tuner_priv;
struct tda18271_rf_tracking_filter_cal *map = priv->rf_cal_state;
int i = 0 ;
while ((map[i].rfmax * 1000 ) < *freq) {
if (tda18271_debug & DBG_ADV)
tda_map("(%d) rfmax = %d < freq = %d, rf1_def = %d, rf2_def = %d, rf3_def = %d, rf1 = %d, rf2 = %d, rf3 = %d, rf_a1 = %d, rf_a2 = %d, rf_b1 = %d, rf_b2 = %d\n" ,
i, map[i].rfmax * 1000 , *freq,
map[i].rf1_def, map[i].rf2_def, map[i].rf3_def,
map[i].rf1, map[i].rf2, map[i].rf3,
map[i].rf_a1, map[i].rf_a2,
map[i].rf_b1, map[i].rf_b2);
if (map[i].rfmax == 0 )
return -EINVAL;
i++;
}
if (rf_band)
*rf_band = map[i].rfband;
tda_map("(%d) rf_band = %02x\n" , i, map[i].rfband);
return i;
}
/*---------------------------------------------------------------------*/
struct tda18271_map_layout {
struct tda18271_pll_map *main_pll;
struct tda18271_pll_map *cal_pll;
struct tda18271_map *rf_cal;
struct tda18271_map *rf_cal_kmco;
struct tda18271_map *rf_cal_dc_over_dt;
struct tda18271_map *bp_filter;
struct tda18271_map *rf_band;
struct tda18271_map *gain_taper;
struct tda18271_map *ir_measure;
};
/*---------------------------------------------------------------------*/
int tda18271_lookup_pll_map(struct dvb_frontend *fe,
enum tda18271_map_type map_type,
u32 *freq, u8 *post_div, u8 *div)
{
struct tda18271_priv *priv = fe->tuner_priv;
struct tda18271_pll_map *map = NULL;
unsigned int i = 0 ;
char *map_name;
int ret = 0 ;
BUG_ON(!priv->maps);
switch (map_type) {
case MAIN_PLL:
map = priv->maps->main_pll;
map_name = "main_pll" ;
break ;
case CAL_PLL:
map = priv->maps->cal_pll;
map_name = "cal_pll" ;
break ;
default :
/* we should never get here */
map_name = "undefined" ;
break ;
}
if (!map) {
tda_warn("%s map is not set!\n" , map_name);
ret = -EINVAL;
goto fail;
}
while ((map[i].lomax * 1000 ) < *freq) {
if (map[i + 1 ].lomax == 0 ) {
tda_map("%s: frequency (%d) out of range\n" ,
map_name, *freq);
ret = -ERANGE;
break ;
}
i++;
}
*post_div = map[i].pd;
*div = map[i].d;
tda_map("(%d) %s: post div = 0x%02x, div = 0x%02x\n" ,
i, map_name, *post_div, *div);
fail:
return ret;
}
int tda18271_lookup_map(struct dvb_frontend *fe,
enum tda18271_map_type map_type,
u32 *freq, u8 *val)
{
struct tda18271_priv *priv = fe->tuner_priv;
struct tda18271_map *map = NULL;
unsigned int i = 0 ;
char *map_name;
int ret = 0 ;
BUG_ON(!priv->maps);
switch (map_type) {
case BP_FILTER:
map = priv->maps->bp_filter;
map_name = "bp_filter" ;
break ;
case RF_CAL_KMCO:
map = priv->maps->rf_cal_kmco;
map_name = "km" ;
break ;
case RF_BAND:
map = priv->maps->rf_band;
map_name = "rf_band" ;
break ;
case GAIN_TAPER:
map = priv->maps->gain_taper;
map_name = "gain_taper" ;
break ;
case RF_CAL:
map = priv->maps->rf_cal;
map_name = "rf_cal" ;
break ;
case IR_MEASURE:
map = priv->maps->ir_measure;
map_name = "ir_measure" ;
break ;
case RF_CAL_DC_OVER_DT:
map = priv->maps->rf_cal_dc_over_dt;
map_name = "rf_cal_dc_over_dt" ;
break ;
default :
/* we should never get here */
map_name = "undefined" ;
break ;
}
if (!map) {
tda_warn("%s map is not set!\n" , map_name);
ret = -EINVAL;
goto fail;
}
while ((map[i].rfmax * 1000 ) < *freq) {
if (map[i + 1 ].rfmax == 0 ) {
tda_map("%s: frequency (%d) out of range\n" ,
map_name, *freq);
ret = -ERANGE;
break ;
}
i++;
}
*val = map[i].val;
tda_map("(%d) %s: 0x%02x\n" , i, map_name, *val);
fail:
return ret;
}
/*---------------------------------------------------------------------*/
static const struct tda18271_std_map tda18271c1_std_map = {
.fm_radio = { .if_freq = 1250 , .fm_rfn = 1 , .agc_mode = 3 , .std = 0 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x18 */
.atv_b = { .if_freq = 6750 , .fm_rfn = 0 , .agc_mode = 1 , .std = 6 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0e */
.atv_dk = { .if_freq = 7750 , .fm_rfn = 0 , .agc_mode = 1 , .std = 7 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0f */
.atv_gh = { .if_freq = 7750 , .fm_rfn = 0 , .agc_mode = 1 , .std = 7 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0f */
.atv_i = { .if_freq = 7750 , .fm_rfn = 0 , .agc_mode = 1 , .std = 7 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0f */
.atv_l = { .if_freq = 7750 , .fm_rfn = 0 , .agc_mode = 1 , .std = 7 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0f */
.atv_lc = { .if_freq = 1250 , .fm_rfn = 0 , .agc_mode = 1 , .std = 7 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0f */
.atv_mn = { .if_freq = 5750 , .fm_rfn = 0 , .agc_mode = 1 , .std = 5 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0d */
.atsc_6 = { .if_freq = 3250 , .fm_rfn = 0 , .agc_mode = 3 , .std = 4 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1c */
.dvbt_6 = { .if_freq = 3300 , .fm_rfn = 0 , .agc_mode = 3 , .std = 4 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1c */
.dvbt_7 = { .if_freq = 3800 , .fm_rfn = 0 , .agc_mode = 3 , .std = 5 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1d */
.dvbt_8 = { .if_freq = 4300 , .fm_rfn = 0 , .agc_mode = 3 , .std = 6 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1e */
.qam_6 = { .if_freq = 4000 , .fm_rfn = 0 , .agc_mode = 3 , .std = 5 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1d */
.qam_7 = { .if_freq = 4500 , .fm_rfn = 0 , .agc_mode = 3 , .std = 6 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1e */
.qam_8 = { .if_freq = 5000 , .fm_rfn = 0 , .agc_mode = 3 , .std = 7 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1f */
};
static const struct tda18271_std_map tda18271c2_std_map = {
.fm_radio = { .if_freq = 1250 , .fm_rfn = 1 , .agc_mode = 3 , .std = 0 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x18 */
.atv_b = { .if_freq = 6000 , .fm_rfn = 0 , .agc_mode = 1 , .std = 5 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0d */
.atv_dk = { .if_freq = 6900 , .fm_rfn = 0 , .agc_mode = 1 , .std = 6 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0e */
.atv_gh = { .if_freq = 7100 , .fm_rfn = 0 , .agc_mode = 1 , .std = 6 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0e */
.atv_i = { .if_freq = 7250 , .fm_rfn = 0 , .agc_mode = 1 , .std = 6 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0e */
.atv_l = { .if_freq = 6900 , .fm_rfn = 0 , .agc_mode = 1 , .std = 6 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0e */
.atv_lc = { .if_freq = 1250 , .fm_rfn = 0 , .agc_mode = 1 , .std = 6 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0e */
.atv_mn = { .if_freq = 5400 , .fm_rfn = 0 , .agc_mode = 1 , .std = 4 ,
.if_lvl = 0 , .rfagc_top = 0 x2c, }, /* EP3[4:0] 0x0c */
.atsc_6 = { .if_freq = 3250 , .fm_rfn = 0 , .agc_mode = 3 , .std = 4 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1c */
.dvbt_6 = { .if_freq = 3300 , .fm_rfn = 0 , .agc_mode = 3 , .std = 4 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1c */
.dvbt_7 = { .if_freq = 3500 , .fm_rfn = 0 , .agc_mode = 3 , .std = 4 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1c */
.dvbt_8 = { .if_freq = 4000 , .fm_rfn = 0 , .agc_mode = 3 , .std = 5 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1d */
.qam_6 = { .if_freq = 4000 , .fm_rfn = 0 , .agc_mode = 3 , .std = 5 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1d */
.qam_7 = { .if_freq = 4500 , .fm_rfn = 0 , .agc_mode = 3 , .std = 6 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1e */
.qam_8 = { .if_freq = 5000 , .fm_rfn = 0 , .agc_mode = 3 , .std = 7 ,
.if_lvl = 1 , .rfagc_top = 0 x37, }, /* EP3[4:0] 0x1f */
};
/*---------------------------------------------------------------------*/
static struct tda18271_map_layout tda18271c1_map_layout = {
.main_pll = tda18271c1_main_pll,
.cal_pll = tda18271c1_cal_pll,
.rf_cal = tda18271c1_rf_cal,
.rf_cal_kmco = tda18271c1_km,
.bp_filter = tda18271_bp_filter,
.rf_band = tda18271_rf_band,
.gain_taper = tda18271_gain_taper,
.ir_measure = tda18271_ir_measure,
};
static struct tda18271_map_layout tda18271c2_map_layout = {
.main_pll = tda18271c2_main_pll,
.cal_pll = tda18271c2_cal_pll,
.rf_cal = tda18271c2_rf_cal,
.rf_cal_kmco = tda18271c2_km,
.rf_cal_dc_over_dt = tda18271_rf_cal_dc_over_dt,
.bp_filter = tda18271_bp_filter,
.rf_band = tda18271_rf_band,
.gain_taper = tda18271_gain_taper,
.ir_measure = tda18271_ir_measure,
};
int tda18271_assign_map_layout(struct dvb_frontend *fe)
{
struct tda18271_priv *priv = fe->tuner_priv;
int ret = 0 ;
switch (priv->id) {
case TDA18271HDC1:
priv->maps = &tda18271c1_map_layout;
priv->std = tda18271c1_std_map;
break ;
case TDA18271HDC2:
priv->maps = &tda18271c2_map_layout;
priv->std = tda18271c2_std_map;
break ;
default :
ret = -EINVAL;
break ;
}
memcpy(priv->rf_cal_state, &tda18271_rf_band_template,
sizeof (tda18271_rf_band_template));
return ret;
}
Messung V0.5 in Prozent C=95 H=91 G=92
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland