You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3688 lines
189 KiB

diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index 8319996..f8c7bd9 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -49,6 +49,13 @@ config MEDIA_TUNER_TDA18271
help
A silicon tuner module. Say Y when you want to support this tuner.
+config MEDIA_TUNER_TDA18273
+ tristate "NXP TDA18273 silicon tuner"
+ depends on MEDIA_SUPPORT && I2C
+ default m if !MEDIA_SUBDRV_AUTOSELECT
+ help
+ A silicon tuner module. Say Y when you want to support this tuner.
+
config MEDIA_TUNER_TDA9887
tristate "TDA 9885/6/7 analog IF demodulator"
depends on MEDIA_SUPPORT && I2C
diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile
index 5591699..019ecf6 100644
--- a/drivers/media/tuners/Makefile
+++ b/drivers/media/tuners/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_MEDIA_TUNER_TEA5761) += tea5761.o
obj-$(CONFIG_MEDIA_TUNER_TDA9887) += tda9887.o
obj-$(CONFIG_MEDIA_TUNER_TDA827X) += tda827x.o
obj-$(CONFIG_MEDIA_TUNER_TDA18271) += tda18271.o
+obj-$(CONFIG_MEDIA_TUNER_TDA18273) += tda18273.o
obj-$(CONFIG_MEDIA_TUNER_XC5000) += xc5000.o
obj-$(CONFIG_MEDIA_TUNER_XC4000) += xc4000.o
obj-$(CONFIG_MEDIA_TUNER_MT2060) += mt2060.o
diff --git a/drivers/media/tuners/tda18273.c b/drivers/media/tuners/tda18273.c
new file mode 100644
index 0000000..35d8a87
--- /dev/null
+++ b/drivers/media/tuners/tda18273.c
@@ -0,0 +1,2174 @@
+/*
+ tda18273.c - driver for the NXP TDA18273 silicon tuner
+ Copyright (C) 2014 CrazyCat <crazycat69@narod.ru>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/string.h>
+
+#include "dvb_frontend.h"
+
+#include "tda18273_priv.h"
+
+static unsigned int verbose;
+module_param(verbose, int, 0644);
+MODULE_PARM_DESC(verbose, "Set Verbosity level");
+
+#define FE_ERROR 0
+#define FE_NOTICE 1
+#define FE_INFO 2
+#define FE_DEBUG 3
+#define FE_DEBUGREG 4
+
+#define dprintk(__y, __z, format, arg...) do { \
+ if (__z) { \
+ if ((verbose > FE_ERROR) && (verbose > __y)) \
+ printk(KERN_ERR "%s: " format "\n", __func__ , ##arg); \
+ else if ((verbose > FE_NOTICE) && (verbose > __y)) \
+ printk(KERN_NOTICE "%s: " format "\n", __func__ , ##arg); \
+ else if ((verbose > FE_INFO) && (verbose > __y)) \
+ printk(KERN_INFO "%s: " format "\n", __func__ , ##arg); \
+ else if ((verbose > FE_DEBUG) && (verbose > __y)) \
+ printk(KERN_DEBUG "%s: " format "\n", __func__ , ##arg); \
+ } else { \
+ if (verbose > __y) \
+ printk(format, ##arg); \
+ } \
+} while (0)
+
+#define TDA18273_REG_ADD_SZ (0x01)
+#define TDA18273_REG_DATA_MAX_SZ (0x01)
+#define TDA18273_REG_MAP_NB_BYTES (0x6D)
+
+#define TDA18273_REG_DATA_LEN(_FIRST_REG, _LAST_REG) ( (_LAST_REG.Address - _FIRST_REG.Address) + 1)
+
+struct tda18273_state {
+ struct dvb_frontend *fe;
+ struct i2c_adapter *i2c;
+ u8 i2c_addr;
+
+ unsigned int if_freq;
+ unsigned int freq_hz;
+ unsigned int bandwidth;
+ unsigned char freq_band;
+ unsigned char agc_mode;
+ unsigned char pll_step;
+ unsigned char pll_step_val;
+ unsigned char pll_charge_pump;
+
+ unsigned int power_state;
+ unsigned char regmap[TDA18273_REG_MAP_NB_BYTES];
+
+ pTDA18273Object_t pObj;
+};
+
+TDA18273Object_t gTDA18273Instance =
+{
+ 0,
+ 0,
+ 0,
+ TDA18273_StandardMode_Unknown,
+ NULL,
+ TDA18273_INSTANCE_CUSTOM_STD_DEF
+};
+
+
+/* TDA18273 Register ID_byte_1 0x00 */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_1 = { 0x00, 0x00, 0x08, 0x00 };
+/* MS bit(s): Indicate if Device is a Master or a Slave */
+/* 1 => Master device */
+/* 0 => Slave device */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_1__MS = { 0x00, 0x07, 0x01, 0x00 };
+/* Ident_1 bit(s): MSB of device identifier */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_1__Ident_1 = { 0x00, 0x00, 0x07, 0x00 };
+
+
+/* TDA18273 Register ID_byte_2 0x01 */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_2 = { 0x01, 0x00, 0x08, 0x00 };
+/* Ident_2 bit(s): LSB of device identifier */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_2__Ident_2 = { 0x01, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register ID_byte_3 0x02 */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_3 = { 0x02, 0x00, 0x08, 0x00 };
+/* Major_rev bit(s): Major revision of device */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_3__Major_rev = { 0x02, 0x04, 0x04, 0x00 };
+/* Major_rev bit(s): Minor revision of device */
+const TDA18273_BitField_t gTDA18273_Reg_ID_byte_3__Minor_rev = { 0x02, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register Thermo_byte_1 0x03 */
+const TDA18273_BitField_t gTDA18273_Reg_Thermo_byte_1 = { 0x03, 0x00, 0x08, 0x00 };
+/* TM_D bit(s): Device temperature */
+const TDA18273_BitField_t gTDA18273_Reg_Thermo_byte_1__TM_D = { 0x03, 0x00, 0x07, 0x00 };
+
+
+/* TDA18273 Register Thermo_byte_2 0x04 */
+const TDA18273_BitField_t gTDA18273_Reg_Thermo_byte_2 = { 0x04, 0x00, 0x08, 0x00 };
+/* TM_ON bit(s): Set device temperature measurement to ON or OFF */
+/* 1 => Temperature measurement ON */
+/* 0 => Temperature measurement OFF */
+const TDA18273_BitField_t gTDA18273_Reg_Thermo_byte_2__TM_ON = { 0x04, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register Power_state_byte_1 0x05 */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_1 = { 0x05, 0x00, 0x08, 0x00 };
+/* POR bit(s): Indicates that device just powered ON */
+/* 1 => POR: No access done to device */
+/* 0 => At least one access has been done to device */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_1__POR = { 0x05, 0x07, 0x01, 0x00 };
+/* AGCs_Lock bit(s): Indicates that AGCs are locked */
+/* 1 => AGCs locked */
+/* 0 => AGCs not locked */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_1__AGCs_Lock = { 0x05, 0x02, 0x01, 0x00 };
+/* Vsync_Lock bit(s): Indicates that VSync is locked */
+/* 1 => VSync locked */
+/* 0 => VSync not locked */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_1__Vsync_Lock = { 0x05, 0x01, 0x01, 0x00 };
+/* LO_Lock bit(s): Indicates that LO is locked */
+/* 1 => LO locked */
+/* 0 => LO not locked */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_1__LO_Lock = { 0x05, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register Power_state_byte_2 0x06 */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_2 = { 0x06, 0x00, 0x08, 0x00 };
+/* SM bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_2__SM = { 0x06, 0x01, 0x01, 0x00 };
+/* SM_XT bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_state_byte_2__SM_XT = { 0x06, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register Input_Power_Level_byte 0x07 */
+const TDA18273_BitField_t gTDA18273_Reg_Input_Power_Level_byte = { 0x07, 0x00, 0x08, 0x00 };
+/* Power_Level bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Input_Power_Level_byte__Power_Level = { 0x07, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register IRQ_status 0x08 */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status = { 0x08, 0x00, 0x08, 0x00 };
+/* IRQ_status bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__IRQ_status = { 0x08, 0x07, 0x01, 0x00 };
+/* MSM_XtalCal_End bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__MSM_XtalCal_End = { 0x08, 0x05, 0x01, 0x00 };
+/* MSM_RSSI_End bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__MSM_RSSI_End = { 0x08, 0x04, 0x01, 0x00 };
+/* MSM_LOCalc_End bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__MSM_LOCalc_End = { 0x08, 0x03, 0x01, 0x00 };
+/* MSM_RFCal_End bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__MSM_RFCal_End = { 0x08, 0x02, 0x01, 0x00 };
+/* MSM_IRCAL_End bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__MSM_IRCAL_End = { 0x08, 0x01, 0x01, 0x00 };
+/* MSM_RCCal_End bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_status__MSM_RCCal_End = { 0x08, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register IRQ_enable 0x09 */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable = { 0x09, 0x00, 0x08, 0x00 };
+/* IRQ_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__IRQ_Enable = { 0x09, 0x07, 0x01, 0x00 };
+/* MSM_XtalCal_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__MSM_XtalCal_Enable = { 0x09, 0x05, 0x01, 0x00 };
+/* MSM_RSSI_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__MSM_RSSI_Enable = { 0x09, 0x04, 0x01, 0x00 };
+/* MSM_LOCalc_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__MSM_LOCalc_Enable = { 0x09, 0x03, 0x01, 0x00 };
+/* MSM_RFCal_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__MSM_RFCal_Enable = { 0x09, 0x02, 0x01, 0x00 };
+/* MSM_IRCAL_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__MSM_IRCAL_Enable = { 0x09, 0x01, 0x01, 0x00 };
+/* MSM_RCCal_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_enable__MSM_RCCal_Enable = { 0x09, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register IRQ_clear 0x0A */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear = { 0x0A, 0x00, 0x08, 0x00 };
+/* IRQ_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__IRQ_Clear = { 0x0A, 0x07, 0x01, 0x00 };
+/* MSM_XtalCal_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__MSM_XtalCal_Clear = { 0x0A, 0x05, 0x01, 0x00 };
+/* MSM_RSSI_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__MSM_RSSI_Clear = { 0x0A, 0x04, 0x01, 0x00 };
+/* MSM_LOCalc_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__MSM_LOCalc_Clear = { 0x0A, 0x03, 0x01, 0x00 };
+/* MSM_RFCal_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__MSM_RFCal_Clear = { 0x0A, 0x02, 0x01, 0x00 };
+/* MSM_IRCAL_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__MSM_IRCAL_Clear = { 0x0A, 0x01, 0x01, 0x00 };
+/* MSM_RCCal_Clear bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_clear__MSM_RCCal_Clear = { 0x0A, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register IRQ_set 0x0B */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set = { 0x0B, 0x00, 0x08, 0x00 };
+/* IRQ_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__IRQ_Set = { 0x0B, 0x07, 0x01, 0x00 };
+/* MSM_XtalCal_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__MSM_XtalCal_Set = { 0x0B, 0x05, 0x01, 0x00 };
+/* MSM_RSSI_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__MSM_RSSI_Set = { 0x0B, 0x04, 0x01, 0x00 };
+/* MSM_LOCalc_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__MSM_LOCalc_Set = { 0x0B, 0x03, 0x01, 0x00 };
+/* MSM_RFCal_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__MSM_RFCal_Set = { 0x0B, 0x02, 0x01, 0x00 };
+/* MSM_IRCAL_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__MSM_IRCAL_Set = { 0x0B, 0x01, 0x01, 0x00 };
+/* MSM_RCCal_Set bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IRQ_set__MSM_RCCal_Set = { 0x0B, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register AGC1_byte_1 0x0C */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_1 = { 0x0C, 0x00, 0x08, 0x00 };
+/* AGC1_TOP bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_1__AGC1_TOP = { 0x0C, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register AGC1_byte_2 0x0D */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_2 = { 0x0D, 0x00, 0x08, 0x00 };
+/* AGC1_Top_Mode_Val bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_2__AGC1_Top_Mode_Val = { 0x0D, 0x03, 0x02, 0x00 };
+/* AGC1_Top_Mode bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_2__AGC1_Top_Mode = { 0x0D, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register AGC2_byte_1 0x0E */
+const TDA18273_BitField_t gTDA18273_Reg_AGC2_byte_1 = { 0x0E, 0x00, 0x08, 0x00 };
+/* AGC2_TOP bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC2_byte_1__AGC2_TOP = { 0x0E, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register AGCK_byte_1 0x0F */
+const TDA18273_BitField_t gTDA18273_Reg_AGCK_byte_1 = { 0x0F, 0x00, 0x08, 0x00 };
+/* AGCs_Up_Step_assym bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCK_byte_1__AGCs_Up_Step_assym = { 0x0F, 0x06, 0x02, 0x00 };
+/* Pulse_Shaper_Disable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCK_byte_1__Pulse_Shaper_Disable = { 0x0F, 0x04, 0x01, 0x00 };
+/* AGCK_Step bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCK_byte_1__AGCK_Step = { 0x0F, 0x02, 0x02, 0x00 };
+/* AGCK_Mode bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCK_byte_1__AGCK_Mode = { 0x0F, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register RF_AGC_byte 0x10 */
+const TDA18273_BitField_t gTDA18273_Reg_RF_AGC_byte = { 0x10, 0x00, 0x08, 0x00 };
+/* PD_AGC_Adapt3x bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_AGC_byte__PD_AGC_Adapt3x = { 0x10, 0x06, 0x02, 0x00 };
+/* RFAGC_Adapt_TOP bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_AGC_byte__RFAGC_Adapt_TOP = { 0x10, 0x04, 0x02, 0x00 };
+/* RFAGC_Low_BW bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_AGC_byte__RFAGC_Low_BW = { 0x10, 0x03, 0x01, 0x00 };
+/* RFAGC_Top bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_AGC_byte__RFAGC_Top = { 0x10, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register W_Filter_byte 0x11 */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte = { 0x11, 0x00, 0x08, 0x00 };
+/* VHF_III_mode bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte__VHF_III_mode = { 0x11, 0x07, 0x01, 0x00 };
+/* RF_Atten_3dB bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte__RF_Atten_3dB = { 0x11, 0x06, 0x01, 0x00 };
+/* W_Filter_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte__W_Filter_Enable = { 0x11, 0x05, 0x01, 0x00 };
+/* W_Filter_Bypass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte__W_Filter_Bypass = { 0x11, 0x04, 0x01, 0x00 };
+/* W_Filter bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte__W_Filter = { 0x11, 0x02, 0x02, 0x00 };
+/* W_Filter_Offset bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_W_Filter_byte__W_Filter_Offset = { 0x11, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register IR_Mixer_byte_1 0x12 */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_1 = { 0x12, 0x00, 0x08, 0x00 };
+/* S2D_Gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_1__S2D_Gain = { 0x12, 0x04, 0x02, 0x00 };
+/* IR_Mixer_Top bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_1__IR_Mixer_Top = { 0x12, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register AGC5_byte_1 0x13 */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_1 = { 0x13, 0x00, 0x08, 0x00 };
+/* AGCs_Do_Step_assym bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_1__AGCs_Do_Step_assym = { 0x13, 0x05, 0x02, 0x00 };
+/* AGC5_Ana bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_1__AGC5_Ana = { 0x13, 0x04, 0x01, 0x00 };
+/* AGC5_TOP bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_1__AGC5_TOP = { 0x13, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register IF_AGC_byte 0x14 */
+const TDA18273_BitField_t gTDA18273_Reg_IF_AGC_byte = { 0x14, 0x00, 0x08, 0x00 };
+/* IFnotchToRSSI bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_AGC_byte__IFnotchToRSSI = { 0x14, 0x07, 0x01, 0x00 };
+/* LPF_DCOffset_Corr bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_AGC_byte__LPF_DCOffset_Corr = { 0x14, 0x06, 0x01, 0x00 };
+/* IF_level bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_AGC_byte__IF_level = { 0x14, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register IF_Byte_1 0x15 */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Byte_1 = { 0x15, 0x00, 0x08, 0x00 };
+/* IF_HP_Fc bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Byte_1__IF_HP_Fc = { 0x15, 0x06, 0x02, 0x00 };
+/* IF_ATSC_Notch bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Byte_1__IF_ATSC_Notch = { 0x15, 0x05, 0x01, 0x00 };
+/* LP_FC_Offset bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Byte_1__LP_FC_Offset = { 0x15, 0x03, 0x02, 0x00 };
+/* LP_Fc bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Byte_1__LP_Fc = { 0x15, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register Reference_Byte 0x16 */
+const TDA18273_BitField_t gTDA18273_Reg_Reference_Byte = { 0x16, 0x00, 0x08, 0x00 };
+/* Digital_Clock_Mode bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode = { 0x16, 0x06, 0x02, 0x00 };
+/* XTout bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Reference_Byte__XTout = { 0x16, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register IF_Frequency_byte 0x17 */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Frequency_byte = { 0x17, 0x00, 0x08, 0x00 };
+/* IF_Freq bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IF_Frequency_byte__IF_Freq = { 0x17, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register RF_Frequency_byte_1 0x18 */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Frequency_byte_1 = { 0x18, 0x00, 0x08, 0x00 };
+/* RF_Freq_1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Frequency_byte_1__RF_Freq_1 = { 0x18, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register RF_Frequency_byte_2 0x19 */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Frequency_byte_2 = { 0x19, 0x00, 0x08, 0x00 };
+/* RF_Freq_2 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Frequency_byte_2__RF_Freq_2 = { 0x19, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register RF_Frequency_byte_3 0x1A */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Frequency_byte_3 = { 0x1A, 0x00, 0x08, 0x00 };
+/* RF_Freq_3 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Frequency_byte_3__RF_Freq_3 = { 0x1A, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register MSM_byte_1 0x1B */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1 = { 0x1B, 0x00, 0x08, 0x00 };
+/* RSSI_Meas bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__RSSI_Meas = { 0x1B, 0x07, 0x01, 0x00 };
+/* RF_CAL_AV bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__RF_CAL_AV = { 0x1B, 0x06, 0x01, 0x00 };
+/* RF_CAL bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__RF_CAL = { 0x1B, 0x05, 0x01, 0x00 };
+/* IR_CAL_Loop bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__IR_CAL_Loop = { 0x1B, 0x04, 0x01, 0x00 };
+/* IR_Cal_Image bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__IR_Cal_Image = { 0x1B, 0x03, 0x01, 0x00 };
+/* IR_CAL_Wanted bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__IR_CAL_Wanted = { 0x1B, 0x02, 0x01, 0x00 };
+/* RC_Cal bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__RC_Cal = { 0x1B, 0x01, 0x01, 0x00 };
+/* Calc_PLL bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_1__Calc_PLL = { 0x1B, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register MSM_byte_2 0x1C */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_2 = { 0x1C, 0x00, 0x08, 0x00 };
+/* XtalCal_Launch bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_2__XtalCal_Launch = { 0x1C, 0x01, 0x01, 0x00 };
+/* MSM_Launch bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_MSM_byte_2__MSM_Launch = { 0x1C, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register PowerSavingMode 0x1D */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode = { 0x1D, 0x00, 0x08, 0x00 };
+/* PSM_AGC1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode__PSM_AGC1 = { 0x1D, 0x07, 0x01, 0x00 };
+/* PSM_Bandsplit_Filter bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode__PSM_Bandsplit_Filter = { 0x1D, 0x05, 0x02, 0x00 };
+/* PSM_RFpoly bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode__PSM_RFpoly = { 0x1D, 0x04, 0x01, 0x00 };
+/* PSM_Mixer bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode__PSM_Mixer = { 0x1D, 0x03, 0x01, 0x00 };
+/* PSM_Ifpoly bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode__PSM_Ifpoly = { 0x1D, 0x02, 0x01, 0x00 };
+/* PSM_Lodriver bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_PowerSavingMode__PSM_Lodriver = { 0x1D, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register Power_Level_byte_2 0x1E */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Level_byte_2 = { 0x1E, 0x00, 0x08, 0x00 };
+/* PD_PLD_read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Level_byte_2__PD_PLD_read = { 0x1E, 0x07, 0x01, 0x00 };
+/* IR_Target bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Level_byte_2__PLD_Temp_Slope = { 0x1E, 0x05, 0x02, 0x00 };
+/* IR_GStep bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Level_byte_2__PLD_Gain_Corr = { 0x1E, 0x00, 0x05, 0x00 };
+
+
+/* TDA18273 Register Adapt_Top_byte 0x1F */
+const TDA18273_BitField_t gTDA18273_Reg_Adapt_Top_byte = { 0x1F, 0x00, 0x08, 0x00 };
+/* Fast_Mode_AGC bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Adapt_Top_byte__Fast_Mode_AGC = { 0x1F, 0x06, 0x01, 0x00 };
+/* Range_LNA_Adapt bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Adapt_Top_byte__Range_LNA_Adapt = { 0x1F, 0x05, 0x01, 0x00 };
+/* Index_K_LNA_Adapt bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Adapt_Top_byte__Index_K_LNA_Adapt = { 0x1F, 0x03, 0x02, 0x00 };
+/* Index_K_Top_Adapt bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Adapt_Top_byte__Index_K_Top_Adapt = { 0x1F, 0x01, 0x02, 0x00 };
+/* Ovld_Udld_FastUp bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Adapt_Top_byte__Ovld_Udld_FastUp = { 0x1F, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register Vsync_byte 0x20 */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_byte = { 0x20, 0x00, 0x08, 0x00 };
+/* Neg_modulation bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_byte__Neg_modulation = { 0x20, 0x07, 0x01, 0x00 };
+/* Tracer_Step bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_byte__Tracer_Step = { 0x20, 0x05, 0x02, 0x00 };
+/* Vsync_int bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_byte__Vsync_int = { 0x20, 0x04, 0x01, 0x00 };
+/* Vsync_Thresh bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_byte__Vsync_Thresh = { 0x20, 0x02, 0x02, 0x00 };
+/* Vsync_Len bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_byte__Vsync_Len = { 0x20, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register Vsync_Mgt_byte 0x21 */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte = { 0x21, 0x00, 0x08, 0x00 };
+/* PD_Vsync_Mgt bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte__PD_Vsync_Mgt = { 0x21, 0x07, 0x01, 0x00 };
+/* PD_Ovld bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte__PD_Ovld = { 0x21, 0x06, 0x01, 0x00 };
+/* PD_Ovld_RF bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte__PD_Ovld_RF = { 0x21, 0x05, 0x01, 0x00 };
+/* AGC_Ovld_TOP bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte__AGC_Ovld_TOP = { 0x21, 0x02, 0x03, 0x00 };
+/* Up_Step_Ovld bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte__Up_Step_Ovld = { 0x21, 0x01, 0x01, 0x00 };
+/* AGC_Ovld_Timer bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Vsync_Mgt_byte__AGC_Ovld_Timer = { 0x21, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register IR_Mixer_byte_2 0x22 */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_2 = { 0x22, 0x00, 0x08, 0x00 };
+/* IR_Mixer_loop_off bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_2__IR_Mixer_loop_off = { 0x22, 0x07, 0x01, 0x00 };
+/* IR_Mixer_Do_step bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_2__IR_Mixer_Do_step = { 0x22, 0x05, 0x02, 0x00 };
+/* Hi_Pass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_2__Hi_Pass = { 0x22, 0x01, 0x01, 0x00 };
+/* IF_Notch bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Mixer_byte_2__IF_Notch = { 0x22, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register AGC1_byte_3 0x23 */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_3 = { 0x23, 0x00, 0x08, 0x00 };
+/* AGC1_loop_off bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_3__AGC1_loop_off = { 0x23, 0x07, 0x01, 0x00 };
+/* AGC1_Do_step bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_3__AGC1_Do_step = { 0x23, 0x05, 0x02, 0x00 };
+/* Force_AGC1_gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_3__Force_AGC1_gain = { 0x23, 0x04, 0x01, 0x00 };
+/* AGC1_Gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC1_byte_3__AGC1_Gain = { 0x23, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register RFAGCs_Gain_byte_1 0x24 */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1 = { 0x24, 0x00, 0x08, 0x00 };
+/* PLD_DAC_Scale bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__PLD_DAC_Scale = { 0x24, 0x07, 0x01, 0x00 };
+/* PLD_CC_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__PLD_CC_Enable = { 0x24, 0x06, 0x01, 0x00 };
+/* PLD_Temp_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__PLD_Temp_Enable = { 0x24, 0x05, 0x01, 0x00 };
+/* TH_AGC_Adapt34 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__TH_AGC_Adapt34 = { 0x24, 0x04, 0x01, 0x00 };
+/* RFAGC_Sense_Enable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__RFAGC_Sense_Enable = { 0x24, 0x02, 0x01, 0x00 };
+/* RFAGC_K_Bypass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__RFAGC_K_Bypass = { 0x24, 0x01, 0x01, 0x00 };
+/* RFAGC_K_8 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_1__RFAGC_K_8 = { 0x24, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register RFAGCs_Gain_byte_2 0x25 */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_2 = { 0x25, 0x00, 0x08, 0x00 };
+/* RFAGC_K bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_2__RFAGC_K = { 0x25, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register AGC5_byte_2 0x26 */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_2 = { 0x26, 0x00, 0x08, 0x00 };
+/* AGC5_loop_off bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_2__AGC5_loop_off = { 0x26, 0x07, 0x01, 0x00 };
+/* AGC5_Do_step bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_2__AGC5_Do_step = { 0x26, 0x05, 0x02, 0x00 };
+/* Force_AGC5_gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_2__Force_AGC5_gain = { 0x26, 0x03, 0x01, 0x00 };
+/* AGC5_Gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGC5_byte_2__AGC5_Gain = { 0x26, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register RF_Cal_byte_1 0x27 */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_1 = { 0x27, 0x00, 0x08, 0x00 };
+/* RFCAL_Offset_Cprog0 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog0 = { 0x27, 0x06, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog1 = { 0x27, 0x04, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog2 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog2 = { 0x27, 0x02, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog3 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog3 = { 0x27, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register RF_Cal_byte_2 0x28 */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_2 = { 0x28, 0x00, 0x08, 0x00 };
+/* RFCAL_Offset_Cprog4 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog4 = { 0x28, 0x06, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog5 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog5 = { 0x28, 0x04, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog6 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog6 = { 0x28, 0x02, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog7 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog7 = { 0x28, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register RF_Cal_byte_3 0x29 */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_3 = { 0x29, 0x00, 0x08, 0x00 };
+/* RFCAL_Offset_Cprog8 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_3__RFCAL_Offset_Cprog8 = { 0x29, 0x06, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog9 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_3__RFCAL_Offset_Cprog9 = { 0x29, 0x04, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog10 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_3__RFCAL_Offset_Cprog10 = { 0x29, 0x02, 0x02, 0x00 };
+/* RFCAL_Offset_Cprog11 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Cal_byte_3__RFCAL_Offset_Cprog11 = { 0x29, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register Bandsplit_Filter_byte 0x2A */
+const TDA18273_BitField_t gTDA18273_Reg_Bandsplit_Filter_byte = { 0x2A, 0x00, 0x08, 0x00 };
+/* Bandsplit_Filter_SubBand bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Bandsplit_Filter_byte__Bandsplit_Filter_SubBand = { 0x2A, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register RF_Filters_byte_1 0x2B */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_1 = { 0x2B, 0x00, 0x08, 0x00 };
+/* RF_Filter_Bypass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_1__RF_Filter_Bypass = { 0x2B, 0x07, 0x01, 0x00 };
+/* AGC2_loop_off bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_1__AGC2_loop_off = { 0x2B, 0x05, 0x01, 0x00 };
+/* Force_AGC2_gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_1__Force_AGC2_gain = { 0x2B, 0x04, 0x01, 0x00 };
+/* RF_Filter_Gv bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_1__RF_Filter_Gv = { 0x2B, 0x02, 0x02, 0x00 };
+/* RF_Filter_Band bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_1__RF_Filter_Band = { 0x2B, 0x00, 0x02, 0x00 };
+
+
+/* TDA18273 Register RF_Filters_byte_2 0x2C */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_2 = { 0x2C, 0x00, 0x08, 0x00 };
+/* RF_Filter_Cap bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_2__RF_Filter_Cap = { 0x2C, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register RF_Filters_byte_3 0x2D */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_3 = { 0x2D, 0x00, 0x08, 0x00 };
+/* AGC2_Do_step bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_3__AGC2_Do_step = { 0x2D, 0x06, 0x02, 0x00 };
+/* Gain_Taper bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Filters_byte_3__Gain_Taper = { 0x2D, 0x00, 0x06, 0x00 };
+
+
+/* TDA18273 Register RF_Band_Pass_Filter_byte 0x2E */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Band_Pass_Filter_byte = { 0x2E, 0x00, 0x08, 0x00 };
+/* RF_BPF_Bypass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Band_Pass_Filter_byte__RF_BPF_Bypass = { 0x2E, 0x07, 0x01, 0x00 };
+/* RF_BPF bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RF_Band_Pass_Filter_byte__RF_BPF = { 0x2E, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register CP_Current_byte 0x2F */
+const TDA18273_BitField_t gTDA18273_Reg_CP_Current_byte = { 0x2F, 0x00, 0x08, 0x00 };
+/* LO_CP_Current bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_CP_Current_byte__LO_CP_Current = { 0x2F, 0x07, 0x01, 0x00 };
+/* N_CP_Current bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_CP_Current_byte__N_CP_Current = { 0x2F, 0x00, 0x07, 0x00 };
+
+
+/* TDA18273 Register AGCs_DetOut_byte 0x30 */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte = { 0x30, 0x00, 0x08, 0x00 };
+/* Up_AGC5 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Up_AGC5 = { 0x30, 0x07, 0x01, 0x00 };
+/* Do_AGC5 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Do_AGC5 = { 0x30, 0x06, 0x01, 0x00 };
+/* Up_AGC4 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Up_AGC4 = { 0x30, 0x05, 0x01, 0x00 };
+/* Do_AGC4 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Do_AGC4 = { 0x30, 0x04, 0x01, 0x00 };
+/* Up_AGC2 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Up_AGC2 = { 0x30, 0x03, 0x01, 0x00 };
+/* Do_AGC2 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Do_AGC2 = { 0x30, 0x02, 0x01, 0x00 };
+/* Up_AGC1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Up_AGC1 = { 0x30, 0x01, 0x01, 0x00 };
+/* Do_AGC1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_AGCs_DetOut_byte__Do_AGC1 = { 0x30, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register RFAGCs_Gain_byte_3 0x31 */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_3 = { 0x31, 0x00, 0x08, 0x00 };
+/* AGC2_Gain_Read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_3__AGC2_Gain_Read = { 0x31, 0x04, 0x02, 0x00 };
+/* AGC1_Gain_Read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_3__AGC1_Gain_Read = { 0x31, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register RFAGCs_Gain_byte_4 0x32 */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_4 = { 0x32, 0x00, 0x08, 0x00 };
+/* Cprog_Read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_4__Cprog_Read = { 0x32, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register RFAGCs_Gain_byte_5 0x33 */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5 = { 0x33, 0x00, 0x08, 0x00 };
+/* RFAGC_Read_K_8 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5__RFAGC_Read_K_8 = { 0x33, 0x07, 0x01, 0x00 };
+/* Do_AGC1bis bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5__Do_AGC1bis = { 0x33, 0x06, 0x01, 0x00 };
+/* AGC1_Top_Adapt_Low bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5__AGC1_Top_Adapt_Low = { 0x33, 0x05, 0x01, 0x00 };
+/* Up_LNA_Adapt bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5__Up_LNA_Adapt = { 0x33, 0x04, 0x01, 0x00 };
+/* Do_LNA_Adapt bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5__Do_LNA_Adapt = { 0x33, 0x03, 0x01, 0x00 };
+/* TOP_AGC3_Read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_5__TOP_AGC3_Read = { 0x33, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register RFAGCs_Gain_byte_6 0x34 */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_6 = { 0x34, 0x00, 0x08, 0x00 };
+/* RFAGC_Read_K bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RFAGCs_Gain_byte_6__RFAGC_Read_K = { 0x34, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register IFAGCs_Gain_byte 0x35 */
+const TDA18273_BitField_t gTDA18273_Reg_IFAGCs_Gain_byte = { 0x35, 0x00, 0x08, 0x00 };
+/* AGC5_Gain_Read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IFAGCs_Gain_byte__AGC5_Gain_Read = { 0x35, 0x03, 0x03, 0x00 };
+/* AGC4_Gain_Read bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IFAGCs_Gain_byte__AGC4_Gain_Read = { 0x35, 0x00, 0x03, 0x00 };
+
+
+/* TDA18273 Register RSSI_byte_1 0x36 */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_1 = { 0x36, 0x00, 0x08, 0x00 };
+/* RSSI bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_1__RSSI = { 0x36, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register RSSI_byte_2 0x37 */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_2 = { 0x37, 0x00, 0x08, 0x00 };
+/* RSSI_AV bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_2__RSSI_AV = { 0x37, 0x05, 0x01, 0x00 };
+/* RSSI_Cap_Reset_En bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_2__RSSI_Cap_Reset_En = { 0x37, 0x03, 0x01, 0x00 };
+/* RSSI_Cap_Val bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_2__RSSI_Cap_Val = { 0x37, 0x02, 0x01, 0x00 };
+/* RSSI_Ck_Speed bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_2__RSSI_Ck_Speed = { 0x37, 0x01, 0x01, 0x00 };
+/* RSSI_Dicho_not bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_RSSI_byte_2__RSSI_Dicho_not = { 0x37, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register Misc_byte 0x38 */
+const TDA18273_BitField_t gTDA18273_Reg_Misc_byte = { 0x38, 0x00, 0x08, 0x00 };
+/* RFCALPOR_I2C bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Misc_byte__RFCALPOR_I2C = { 0x38, 0x06, 0x01, 0x00 };
+/* PD_Underload bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Misc_byte__PD_Underload = { 0x38, 0x05, 0x01, 0x00 };
+/* DDS_Polarity bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Misc_byte__DDS_Polarity = { 0x38, 0x04, 0x01, 0x00 };
+/* IRQ_Mode bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Misc_byte__IRQ_Mode = { 0x38, 0x01, 0x01, 0x00 };
+/* IRQ_Polarity bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Misc_byte__IRQ_Polarity = { 0x38, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_0 0x39 */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_0 = { 0x39, 0x00, 0x08, 0x00 };
+/* rfcal_log_0 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_0__rfcal_log_0 = { 0x39, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_1 0x3A */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_1 = { 0x3A, 0x00, 0x08, 0x00 };
+/* rfcal_log_1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_1__rfcal_log_1 = { 0x3A, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_2 0x3B */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_2 = { 0x3B, 0x00, 0x08, 0x00 };
+/* rfcal_log_2 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_2__rfcal_log_2 = { 0x3B, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_3 0x3C */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_3 = { 0x3C, 0x00, 0x08, 0x00 };
+/* rfcal_log_3 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_3__rfcal_log_3 = { 0x3C, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_4 0x3D */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_4 = { 0x3D, 0x00, 0x08, 0x00 };
+/* rfcal_log_4 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_4__rfcal_log_4 = { 0x3D, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_5 0x3E */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_5 = { 0x3E, 0x00, 0x08, 0x00 };
+/* rfcal_log_5 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_5__rfcal_log_5 = { 0x3E, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_6 0x3F */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_6 = { 0x3F, 0x00, 0x08, 0x00 };
+/* rfcal_log_6 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_6__rfcal_log_6 = { 0x3F, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_7 0x40 */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_7 = { 0x40, 0x00, 0x08, 0x00 };
+/* rfcal_log_7 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_7__rfcal_log_7 = { 0x40, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_8 0x41 */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_8 = { 0x41, 0x00, 0x08, 0x00 };
+/* rfcal_log_8 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_8__rfcal_log_8 = { 0x41, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_9 0x42 */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_9 = { 0x42, 0x00, 0x08, 0x00 };
+/* rfcal_log_9 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_9__rfcal_log_9 = { 0x42, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_10 0x43 */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_10 = { 0x43, 0x00, 0x08, 0x00 };
+/* rfcal_log_10 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_10__rfcal_log_10 = { 0x43, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register rfcal_log_11 0x44 */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_11 = { 0x44, 0x00, 0x08, 0x00 };
+/* rfcal_log_11 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_rfcal_log_11__rfcal_log_11 = { 0x44, 0x00, 0x08, 0x00 };
+
+
+
+/* TDA18273 Register Main_Post_Divider_byte 0x51 */
+const TDA18273_BitField_t gTDA18273_Reg_Main_Post_Divider_byte = { 0x51, 0x00, 0x08, 0x00 };
+/* LOPostDiv bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Main_Post_Divider_byte__LOPostDiv = { 0x51, 0x04, 0x03, 0x00 };
+/* LOPresc bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Main_Post_Divider_byte__LOPresc = { 0x51, 0x00, 0x04, 0x00 };
+
+
+/* TDA18273 Register Sigma_delta_byte_1 0x52 */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_1 = { 0x52, 0x00, 0x08, 0x00 };
+/* LO_Int bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_1__LO_Int = { 0x52, 0x00, 0x07, 0x00 };
+
+
+/* TDA18273 Register Sigma_delta_byte_2 0x53 */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_2 = { 0x53, 0x00, 0x08, 0x00 };
+/* LO_Frac_2 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_2__LO_Frac_2 = { 0x53, 0x00, 0x07, 0x00 };
+
+
+/* TDA18273 Register Sigma_delta_byte_3 0x54 */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_3 = { 0x54, 0x00, 0x08, 0x00 };
+/* LO_Frac_1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_3__LO_Frac_1 = { 0x54, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register Sigma_delta_byte_4 0x55 */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_4 = { 0x55, 0x00, 0x08, 0x00 };
+/* LO_Frac_0 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_4__LO_Frac_0 = { 0x55, 0x00, 0x08, 0x00 };
+
+
+/* TDA18273 Register Sigma_delta_byte_5 0x56 */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_5 = { 0x56, 0x00, 0x08, 0x00 };
+/* N_K_correct_manual bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_5__N_K_correct_manual = { 0x56, 0x01, 0x01, 0x00 };
+/* LO_Calc_Disable bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Sigma_delta_byte_5__LO_Calc_Disable = { 0x56, 0x00, 0x01, 0x00 };
+
+
+/* TDA18273 Register Regulators_byte 0x58 */
+const TDA18273_BitField_t gTDA18273_Reg_Regulators_byte = { 0x58, 0x00, 0x08, 0x00 };
+/* RF_Reg bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Regulators_byte__RF_Reg = { 0x58, 0x02, 0x02, 0x00 };
+
+
+/* TDA18273 Register IR_Cal_byte_5 0x5B */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Cal_byte_5 = { 0x5B, 0x00, 0x08, 0x00 };
+/* Mixer_Gain_Bypass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Cal_byte_5__Mixer_Gain_Bypass = { 0x5B, 0x07, 0x01, 0x00 };
+/* IR_Mixer_Gain bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_IR_Cal_byte_5__IR_Mixer_Gain = { 0x5B, 0x04, 0x03, 0x00 };
+
+
+/* TDA18273 Register Power_Down_byte_2 0x5F */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_2 = { 0x5F, 0x00, 0x08, 0x00 };
+/* PD_LNA bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_2__PD_LNA = { 0x5F, 0x07, 0x01, 0x00 };
+/* PD_Det4 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_2__PD_Det4 = { 0x5F, 0x03, 0x01, 0x00 };
+/* PD_Det3 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_2__PD_Det3 = { 0x5F, 0x02, 0x01, 0x00 };
+/* PD_Det1 bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_2__PD_Det1 = { 0x5F, 0x00, 0x01, 0x00 };
+
+/* TDA18273 Register Power_Down_byte_3 0x60 */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_3 = { 0x60, 0x00, 0x08, 0x00 };
+/* Force_Soft_Reset bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_3__Force_Soft_Reset = { 0x60, 0x01, 0x01, 0x00 };
+/* Soft_Reset bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Power_Down_byte_3__Soft_Reset = { 0x60, 0x00, 0x01, 0x00 };
+
+/* TDA18273 Register Charge_pump_byte 0x64 */
+const TDA18273_BitField_t gTDA18273_Reg_Charge_pump_byte = { 0x64, 0x00, 0x08, 0x00 };
+/* ICP_Bypass bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Charge_pump_byte__ICP_Bypass = { 0x64, 0x07, 0x01, 0x00 };
+/* ICP bit(s): */
+const TDA18273_BitField_t gTDA18273_Reg_Charge_pump_byte__ICP = { 0x64, 0x00, 0x02, 0x00 };
+
+
+static int tda18273_readreg(struct tda18273_state *priv, unsigned char reg, unsigned char *val)
+{
+ int ret = TDA_RESULT_SUCCESS;
+ struct dvb_frontend *fe = priv->fe;
+
+ struct i2c_msg msg[2] = {
+ { .addr = priv->i2c_addr,
+ .flags = 0, .buf = &reg, .len = 1},
+ { .addr = priv->i2c_addr,
+ .flags = I2C_M_RD, .buf = val, .len = 1},
+ };
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+
+ ret = i2c_transfer(priv->i2c, msg, 2);
+
+ if (ret != 2) {
+ dprintk(FE_ERROR, 1, "I2C read failed");
+ ret = TDA_RESULT_I2C_READ_FAILURE;
+ }
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0);
+
+ return ret;
+}
+
+static int tda18273_readregs(struct tda18273_state *priv, const TDA18273_BitField_t* pBitField, unsigned char *val, tmbslFrontEndBusAccess_t eBusAccess)
+{
+ unsigned char RegAddr = 0;
+ unsigned char RegMask = 0;
+ unsigned char RegData = 0;
+ unsigned char* pRegData = NULL;
+
+ RegAddr = pBitField->Address;
+
+ if(RegAddr < TDA18273_REG_MAP_NB_BYTES) {
+ pRegData = (unsigned char *)(&(priv->regmap)) + RegAddr;
+ } else {
+ pRegData = &RegData;
+ }
+
+ if((eBusAccess & Bus_NoRead) == 0x00) {
+ if(tda18273_readreg(priv, RegAddr, pRegData) == TDA_RESULT_I2C_READ_FAILURE) {
+ return TDA_RESULT_I2C_READ_FAILURE;
+ }
+ }
+
+ *val = *pRegData;
+
+ RegMask = ((1 << pBitField->WidthInBits) - 1) << pBitField->PositionInBits;
+
+ *val &= RegMask;
+ *val = (*val) >> pBitField->PositionInBits;
+
+ return TDA_RESULT_SUCCESS;
+}
+
+static int tda18273_readregmap(struct tda18273_state *priv, unsigned char reg, unsigned int len)
+{
+ int ret, i;
+ unsigned char* pRegData = NULL;
+
+ if((reg < TDA18273_REG_MAP_NB_BYTES) && ((reg + len) <= TDA18273_REG_MAP_NB_BYTES)) {
+ pRegData = (unsigned char *)(&(priv->regmap)) + reg;
+
+ for(i=0; i<len; i++) {
+ /* Read data from TDA18273 */
+ ret = tda18273_readreg(priv, (reg + i), (pRegData + i));
+ }
+ }
+
+ return 0;
+}
+
+static int tda18273_writereg(struct tda18273_state *priv, unsigned char reg, unsigned char val)
+{
+ int ret = TDA_RESULT_SUCCESS;
+ struct dvb_frontend *fe = priv->fe;
+ unsigned char tmp[2] = {reg, val};
+
+ struct i2c_msg msg = {
+ .addr = priv->i2c_addr,
+ .flags = 0, .buf = tmp, .len = 2};
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+
+ ret = i2c_transfer(priv->i2c, &msg, 1);
+
+ if (ret != 1) {
+ dprintk(FE_ERROR, 1, "I2C write failed");
+ ret = TDA_RESULT_I2C_READ_FAILURE;
+ }
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0);
+
+ return ret;
+}
+
+static int tda18273_writeregs(struct tda18273_state *priv, const TDA18273_BitField_t* pBitField, unsigned char val, tmbslFrontEndBusAccess_t eBusAccess)
+{
+ unsigned char RegAddr = 0;
+ unsigned char RegData = 0;
+ unsigned char RegMask = 0;
+ unsigned char* pRegData = NULL;
+
+ RegAddr = pBitField->Address;
+
+ if(RegAddr < TDA18273_REG_MAP_NB_BYTES) {
+ pRegData = (unsigned char *)(&(priv->regmap)) + RegAddr;
+ } else {
+ pRegData = &RegData;
+ }
+
+ if((eBusAccess & Bus_NoRead) == 0x00) {
+ if(tda18273_readreg(priv, RegAddr, pRegData) == TDA_RESULT_I2C_READ_FAILURE) {
+ return TDA_RESULT_I2C_READ_FAILURE;
+ }
+ }
+
+ RegMask = (1 << pBitField->WidthInBits) - 1;
+ val &= RegMask;
+
+ RegMask = RegMask << pBitField->PositionInBits;
+ *pRegData &= (UInt8)(~RegMask);
+ *pRegData |= val << pBitField->PositionInBits;
+
+ if((eBusAccess & Bus_NoWrite) == 0x00) {
+ if(tda18273_writereg(priv, RegAddr, *pRegData) == TDA_RESULT_I2C_READ_FAILURE) {
+ return TDA_RESULT_I2C_READ_FAILURE;
+ }
+ }
+
+ return TDA_RESULT_SUCCESS;
+}
+
+static int tda18273_writeregmap(struct tda18273_state *priv, unsigned char reg, unsigned int len)
+{
+ int ret, i;
+ unsigned char* pRegData = NULL;
+
+ if((reg < TDA18273_REG_MAP_NB_BYTES) && ((reg + len) <= TDA18273_REG_MAP_NB_BYTES)) {
+ pRegData = (unsigned char *)(&(priv->regmap)) + reg;
+
+ for(i=0; i<len; i++) {
+ /* Write data from TDA18273 */
+ ret = tda18273_writereg(priv, (reg + i), *(pRegData + i));
+ }
+ }
+
+ return 0;
+}
+
+static void tda18273_regall_debug(struct tda18273_state *priv)
+{
+ int i;
+ unsigned char val=0;
+
+ for(i=0; i<0x45; i++) {
+ tda18273_readreg(priv, i, &val);
+ dprintk(FE_DEBUGREG, 1, "addr : 0x%02x => data : 0x%02x", i, val);
+ }
+}
+
+static int tda18273_get_lock_status(struct tda18273_state *priv, unsigned short *lock_status)
+{
+ int ret;
+ unsigned char val=0;
+ unsigned char val_lo=0;
+
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Power_state_byte_1__LO_Lock, &val_lo, Bus_RW);
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_IRQ_status__IRQ_status, &val, Bus_RW);
+ *lock_status = val & val_lo;
+
+ dprintk(FE_INFO, 1, "lock=0x%02X/0x%02x, lock_status=0x%x", val, val_lo, *lock_status);
+
+ return 0;
+}
+
+static int tda18273_pwr_state(struct dvb_frontend *fe, int pwr_state)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+ int ret=0;
+
+ if(priv->power_state != pwr_state) {
+ if(pwr_state == tmPowerOn) {
+ /* Set TDA18273 power state to Normal Mode */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_LNA, 0x1, Bus_RW); /* PD LNA */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_Det1, 0x1, Bus_NoRead); /* PD Detector AGC1 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__AGC1_loop_off, 0x1, Bus_RW); /* AGC1 Detector loop off */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_state_byte_2, TDA18273_SM_NONE, Bus_RW);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, 0x03, Bus_RW); /* Set digital clock mode to sub-LO if normal mode is entered */
+ } else if(pwr_state == tmPowerStandby) {
+ /* Set TDA18273 power state to standby with Xtal ON */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, 0x00, Bus_RW);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_state_byte_2, 0x02, Bus_RW);
+ }
+
+ priv->power_state = pwr_state;
+ }
+
+ return 0;
+}
+
+static int tda18273_firstpass_lnapwr(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+
+ /* PD LNA */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_LNA, 0x1, Bus_RW);
+ /* PD Detector AGC1 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_Det1, 0x1, Bus_NoRead);
+ /* AGC1 Detector loop off */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__AGC1_loop_off, 0x1, Bus_RW);
+
+ return 0;
+}
+
+static int tda18273_lastpass_lnapwr(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ unsigned char val = 0;
+ int ret;
+
+ /* Check if LNA is PD */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_LNA, &val, Bus_NoWrite);
+
+ if(val == 1) {
+ /* LNA is Powered Down, so power it up */
+ /* Force gain to -10dB */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__AGC1_Gain, 0x0, Bus_RW);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__Force_AGC1_gain, 0x1, Bus_NoRead);
+ /* PD LNA */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_LNA, 0x0, Bus_NoRead);
+ /* Release LNA gain control */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__Force_AGC1_gain, 0x0, Bus_NoRead);
+ /* PD Detector AGC1 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_2__PD_Det1, 0x0, Bus_NoRead);
+ /* AGC1 Detector loop off */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__AGC1_loop_off, 0x0, Bus_NoRead);
+ }
+
+ return 0;
+}
+
+static int tda18273_llpwr_state(struct dvb_frontend *fe, int llpwr_state)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ unsigned char val = 0;
+ int ret;
+
+ if(llpwr_state == TDA18273_PowerNormalMode) {
+ /* If we come from any standby mode, then power on the IC with LNA off */
+ /* Then powering on LNA with the minimal gain on AGC1 to avoid glitches at RF input will */
+ /* be done during SetRF */
+
+ /* Workaround to limit the spurs occurence on RF input, do it before entering normal mode */
+ /* PD LNA */
+ ret = tda18273_firstpass_lnapwr(fe);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_state_byte_2, TDA18273_SM_NONE, Bus_RW);
+ /* Set digital clock mode to sub-LO if normal mode is entered */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, 0x03, Bus_RW);
+
+ /* Reset val to use it as a flag for below test */
+ val = 0;
+ } else if(llpwr_state == TDA18273_PowerStandbyWithXtalOn) {
+ val = TDA18273_SM;
+ } else if(llpwr_state == TDA18273_PowerStandby) {
+ /* power state not supported */
+ val = TDA18273_SM|TDA18273_SM_XT;
+ }
+
+ if(val) {
+ /* Set digital clock mode to 16 Mhz before entering standby */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, 0x00, Bus_RW);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_state_byte_2, val, Bus_RW);
+ }
+
+ return 0;
+}
+
+static int tda18273_check_calcpll(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+ unsigned char val;
+
+ /* Check if Calc_PLL algorithm is in automatic mode */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Sigma_delta_byte_5__LO_Calc_Disable, &val, Bus_None);
+
+ if(val != 0x00) {
+ /* Enable Calc_PLL algorithm by putting PLL in automatic mode */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_5__N_K_correct_manual, 0x00, Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_5__LO_Calc_Disable, 0x00, Bus_NoRead);
+ }
+
+ return 0;
+}
+
+static int tda18273_set_msm(struct dvb_frontend *fe, unsigned char val, int launch)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+ int ret;
+
+ /* Set state machine and Launch it */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_MSM_byte_1, val, Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_MSM_byte_2__MSM_Launch, 0x01, Bus_None);
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_MSM_byte_1.Address, (launch ? 0x02 : 0x01));
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_MSM_byte_2__MSM_Launch, 0x00, Bus_None);
+
+ return 0;
+}
+
+static int tda18273_override_bandsplit(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+ unsigned char Bandsplit = 0;
+ unsigned char uPrevPSM_Bandsplit_Filter = 0;
+ unsigned char PSM_Bandsplit_Filter = 0;
+
+ /* Setting PSM bandsplit at -3.9 mA for some RF frequencies */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Bandsplit_Filter_byte__Bandsplit_Filter_SubBand, &Bandsplit, Bus_None);
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_PowerSavingMode__PSM_Bandsplit_Filter, &uPrevPSM_Bandsplit_Filter, Bus_None);
+
+ switch(Bandsplit)
+ {
+ default:
+ case 0: /* LPF0 133MHz - LPF1 206MHz - HPF0 422MHz */
+ if(priv->pObj->uProgRF < 133000000) {
+ /* Set PSM bandsplit at -3.9 mA */
+ PSM_Bandsplit_Filter = 0x03;
+ } else {
+ /* Set PSM bandsplit at nominal */
+ PSM_Bandsplit_Filter = 0x02;
+ }
+ break;
+ case 1: /* LPF0 139MHz - LPF1 218MHz - HPF0 446MHz */
+ if(priv->pObj->uProgRF < 139000000) {
+ /* Set PSM bandsplit at -3.9 mA */
+ PSM_Bandsplit_Filter = 0x03;
+ } else {
+ /* Set PSM bandsplit at nominal */
+ PSM_Bandsplit_Filter = 0x02;
+ }
+ break;
+ case 2: /* LPF0 145MHz - LPF1 230MHz - HPF0 470MHz */
+ if(priv->pObj->uProgRF < 145000000) {
+ /* Set PSM bandsplit at -3.9 mA */
+ PSM_Bandsplit_Filter = 0x03;
+ } else {
+ /* Set PSM bandsplit at nominal */
+ PSM_Bandsplit_Filter = 0x02;
+ }
+ break;
+ case 3: /* LPF0 151MHz - LPF1 242MHz - HPF0 494MHz */
+ if(priv->pObj->uProgRF < 151000000) {
+ /* Set PSM bandsplit at -3.9 mA */
+ PSM_Bandsplit_Filter = 0x03;
+ } else {
+ /* Set PSM bandsplit at nominal */
+ PSM_Bandsplit_Filter = 0x02;
+ }
+ break;
+ }
+
+ if(uPrevPSM_Bandsplit_Filter != PSM_Bandsplit_Filter) {
+ /* Write PSM bandsplit */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_PowerSavingMode__PSM_Bandsplit_Filter, PSM_Bandsplit_Filter, Bus_NoRead);
+ }
+
+ return 0;
+}
+
+static int tda18273_set_standardmode(struct dvb_frontend *fe, TDA18273StandardMode_t StandardMode)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+ int ret;
+
+ unsigned char wantedValue=0;
+ unsigned char checked=0;
+
+ priv->pObj->StandardMode = StandardMode;
+
+ if((priv->pObj->StandardMode > TDA18273_StandardMode_Unknown) && (priv->pObj->StandardMode < TDA18273_StandardMode_Max)) {
+ /* Update standard map pointer */
+ priv->pObj->pStandard = &priv->pObj->Std_Array[priv->pObj->StandardMode - 1];
+
+ /****************************************************************/
+ /* IF SELECTIVITY Settings */
+ /****************************************************************/
+ /* Set LPF */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_Byte_1__LP_Fc, priv->pObj->pStandard->LPF, Bus_None);
+ /* Set LPF Offset */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_Byte_1__LP_FC_Offset, priv->pObj->pStandard->LPF_Offset, Bus_None);
+ /* Set DC_Notch_IF_PPF */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IR_Mixer_byte_2__IF_Notch, priv->pObj->pStandard->DC_Notch_IF_PPF, Bus_None);
+ /* Enable/disable HPF */
+ if(priv->pObj->pStandard->IF_HPF == TDA18273_IF_HPF_Disabled) {
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IR_Mixer_byte_2__Hi_Pass, 0x00, Bus_None);
+ } else {
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IR_Mixer_byte_2__Hi_Pass, 0x01, Bus_None);
+ /* Set IF HPF */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_Byte_1__IF_HP_Fc, (UInt8)(priv->pObj->pStandard->IF_HPF - 1), Bus_None);
+ }
+ /* Set IF Notch */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_Byte_1__IF_ATSC_Notch, priv->pObj->pStandard->IF_Notch, Bus_None);
+ /* Set IF notch to RSSI */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_AGC_byte__IFnotchToRSSI, priv->pObj->pStandard->IFnotchToRSSI, Bus_None);
+
+ /****************************************************************/
+ /* AGC TOP Settings */
+ /****************************************************************/
+ /* Set AGC1 TOP I2C DN/UP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_1__AGC1_TOP, priv->pObj->pStandard->AGC1_TOP_I2C_DN_UP, Bus_None);
+ /* Set AGC1 Adapt TOP DN/UP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_2__AGC1_Top_Mode_Val, priv->pObj->pStandard->AGC1_Adapt_TOP_DN_UP, Bus_None);
+ /* Set AGC1 DN Time Constant */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_3__AGC1_Do_step, priv->pObj->pStandard->AGC1_DN_Time_Constant, Bus_None);
+ /* Set AGC1 mode */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC1_byte_2__AGC1_Top_Mode, priv->pObj->pStandard->AGC1_Mode, Bus_None);
+ /* Set Range_LNA_Adapt */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Adapt_Top_byte__Range_LNA_Adapt, priv->pObj->pStandard->Range_LNA_Adapt, Bus_None);
+ /* Set LNA_Adapt_RFAGC_Gv_Threshold */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Adapt_Top_byte__Index_K_LNA_Adapt, priv->pObj->pStandard->LNA_Adapt_RFAGC_Gv_Threshold, Bus_None);
+ /* Set AGC1_Top_Adapt_RFAGC_Gv_Threshold */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Adapt_Top_byte__Index_K_Top_Adapt, priv->pObj->pStandard->AGC1_Top_Adapt_RFAGC_Gv_Threshold, Bus_None);
+ /* Set AGC2 TOP DN/UP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC2_byte_1__AGC2_TOP, priv->pObj->pStandard->AGC2_TOP_DN_UP, Bus_None);
+ /* Set AGC2 DN Time Constant */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Filters_byte_3__AGC2_Do_step, priv->pObj->pStandard->AGC2_DN_Time_Constant, Bus_None);
+ /* Set AGC4 TOP DN/UP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IR_Mixer_byte_1__IR_Mixer_Top, priv->pObj->pStandard->AGC4_TOP_DN_UP, Bus_None);
+ /* Set AGC5 TOP DN/UP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC5_byte_1__AGC5_TOP, priv->pObj->pStandard->AGC5_TOP_DN_UP, Bus_None);
+ /* Set AGC3_Top_Adapt_Algorithm */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_AGC_byte__PD_AGC_Adapt3x, priv->pObj->pStandard->AGC3_Top_Adapt_Algorithm, Bus_None);
+ /* Set AGC Overload TOP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Vsync_Mgt_byte__AGC_Ovld_TOP, priv->pObj->pStandard->AGC_Overload_TOP, Bus_None);
+ /* Set Adapt TOP 34 Gain Threshold */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RFAGCs_Gain_byte_1__TH_AGC_Adapt34, priv->pObj->pStandard->TH_AGC_Adapt34, Bus_None);
+ /* Set RF atten 3dB */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_W_Filter_byte__RF_Atten_3dB, priv->pObj->pStandard->RF_Atten_3dB, Bus_None);
+ /* Set IF Output Level */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_AGC_byte__IF_level, priv->pObj->pStandard->IF_Output_Level, Bus_None);
+ /* Set S2D gain */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IR_Mixer_byte_1__S2D_Gain, priv->pObj->pStandard->S2D_Gain, Bus_None);
+ /* Set Negative modulation, write into register directly because vsync_int bit is checked afterwards */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Vsync_byte__Neg_modulation, priv->pObj->pStandard->Negative_Modulation, Bus_RW);
+
+ /****************************************************************/
+ /* GSK Settings */
+ /****************************************************************/
+ /* Set AGCK Step */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGCK_byte_1__AGCK_Step, priv->pObj->pStandard->AGCK_Steps, Bus_None);
+ /* Set AGCK Time Constant */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGCK_byte_1__AGCK_Mode, priv->pObj->pStandard->AGCK_Time_Constant, Bus_None);
+ /* Set AGC5 HPF */
+ wantedValue = priv->pObj->pStandard->AGC5_HPF;
+ if(priv->pObj->pStandard->AGC5_HPF == TDA18273_AGC5_HPF_Enabled) {
+ /* Check if Internal Vsync is selected */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Vsync_byte__Vsync_int, &checked, Bus_RW);
+
+ if(checked == 0) {
+ /* Internal Vsync is OFF, so override setting to OFF */
+ wantedValue = TDA18273_AGC5_HPF_Disabled;
+ }
+ }
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGC5_byte_1__AGC5_Ana, wantedValue, Bus_None);
+ /* Set Pulse Shaper Disable */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_AGCK_byte_1__Pulse_Shaper_Disable, priv->pObj->pStandard->Pulse_Shaper_Disable, Bus_None);
+
+ /****************************************************************/
+ /* H3H5 Settings */
+ /****************************************************************/
+ /* Set VHF_III_Mode */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_W_Filter_byte__VHF_III_mode, priv->pObj->pStandard->VHF_III_Mode, Bus_None);
+
+ /****************************************************************/
+ /* PLL Settings */
+ /****************************************************************/
+ /* Set LO_CP_Current */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_CP_Current_byte__LO_CP_Current, priv->pObj->pStandard->LO_CP_Current, Bus_None);
+
+ /****************************************************************/
+ /* IF Settings */
+ /****************************************************************/
+ /* Set IF */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IF_Frequency_byte__IF_Freq, (UInt8)((priv->pObj->pStandard->IF - priv->pObj->pStandard->CF_Offset)/50000), Bus_None);
+
+ /****************************************************************/
+ /* MISC Settings */
+ /****************************************************************/
+ /* Set PD Underload */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Misc_byte__PD_Underload, priv->pObj->pStandard->PD_Underload, Bus_None);
+
+ /****************************************************************/
+ /* Update Registers */
+ /****************************************************************/
+ /* Write AGC1_byte_1 (0x0C) to IF_Byte_1 (0x15) Registers */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_AGC1_byte_1.Address, TDA18273_REG_DATA_LEN(gTDA18273_Reg_AGC1_byte_1, gTDA18273_Reg_IF_Byte_1));
+ /* Write IF_Frequency_byte (0x17) Register */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_IF_Frequency_byte.Address, 1);
+ /* Write Adapt_Top_byte (0x1F) Register */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_Adapt_Top_byte.Address, 1);
+ /* Write Vsync_byte (0x20) to RFAGCs_Gain_byte_1 (0x24) Registers */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_Vsync_byte.Address, TDA18273_REG_DATA_LEN(gTDA18273_Reg_Vsync_byte, gTDA18273_Reg_RFAGCs_Gain_byte_1));
+ /* Write RF_Filters_byte_3 (0x2D) Register */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_RF_Filters_byte_3.Address, 1);
+ /* Write CP_Current_byte (0x2F) Register */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_CP_Current_byte.Address, 1);
+ /* Write Misc_byte (0x38) Register */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_Misc_byte.Address, 1);
+ }
+
+ return 0;
+}
+
+typedef struct _TDA18273_PostDivPrescalerTableDef_
+{
+ unsigned int LO_max;
+ unsigned int LO_min;
+ unsigned char Prescaler;
+ unsigned char PostDiv;
+} TDA18273_PostDivPrescalerTableDef;
+
+/* Table that maps LO vs Prescaler & PostDiv values */
+static TDA18273_PostDivPrescalerTableDef PostDivPrescalerTable[35] =
+{
+ /* PostDiv 1 */
+ {974000, 852250, 7, 1},
+ {852250, 745719, 8, 1},
+ {757556, 662861, 9, 1},
+ {681800, 596575, 10, 1},
+ {619818, 542341, 11, 1},
+ {568167, 497146, 12, 1},
+ {524462, 458904, 13, 1},
+ /* PostDiv 2 */
+ {487000, 426125, 7, 2},
+ {426125, 372859, 8, 2},
+ {378778, 331431, 9, 2},
+ {340900, 298288, 10, 2},
+ {309909, 271170, 11, 2},
+ {284083, 248573, 12, 2},
+ {262231, 229452, 13, 2},
+ /* PostDiv 4 */
+ {243500, 213063, 7, 4},
+ {213063, 186430, 8, 4},
+ {189389, 165715, 9, 4},
+ {170450, 149144, 10, 4},
+ {154955, 135585, 11, 4},
+ {142042, 124286, 12, 4},
+ {131115, 114726, 13, 4},
+ /* PostDiv 8 */
+ {121750, 106531, 7, 8},
+ {106531, 93215, 8, 8},
+ {94694, 82858, 9, 8},
+ {85225, 74572, 10, 8},
+ {77477, 67793, 11, 8},
+ {71021, 62143, 12, 8},
+ {65558, 57363, 13, 8},
+ /* PostDiv 16 */
+ {60875, 53266, 7, 16},
+ {53266, 46607, 8, 16},
+ {47347, 41429, 9, 16},
+ {42613, 37286, 10, 16},
+ {38739, 33896, 11, 16},
+ {35510, 31072, 12, 16},
+ {32779, 28681, 13, 16}
+};
+
+static int tda18273_calculate_postdivandprescaler(unsigned int LO, int growingOrder, unsigned char* PostDiv, unsigned char* Prescaler)
+{
+ int ret = 0;
+
+ unsigned char index;
+ unsigned char sizeTable = sizeof(PostDivPrescalerTable) / sizeof(TDA18273_PostDivPrescalerTableDef);
+
+ if(growingOrder == 1) {
+ /* Start from LO = 28.681 kHz */
+ for(index=(sizeTable-1); index>=0; index--) {
+ if((LO > PostDivPrescalerTable[index].LO_min) && (LO < PostDivPrescalerTable[index].LO_max)) {
+ /* We are at correct index in the table */
+ break;
+ }
+ }
+ } else {
+ /* Start from LO = 974000 kHz */
+ for(index=0; index<sizeTable; index++) {
+ if((LO > PostDivPrescalerTable[index].LO_min) && (LO < PostDivPrescalerTable[index].LO_max)) {
+ /* We are at correct index in the table */
+ break;
+ }
+ }
+ }
+
+ if((index == -1) || (index == sizeTable)) {
+ ret = -1;
+ } else {
+ /* Write Prescaler */
+ *Prescaler = PostDivPrescalerTable[index].Prescaler;
+
+ /* Decode PostDiv */
+ *PostDiv = PostDivPrescalerTable[index].PostDiv;
+ }
+
+ return ret;
+}
+
+/* Middle of VCO frequency excursion : VCOmin + (VCOmax - VCOmin)/2 in KHz */
+#define TDA18273_MIDDLE_FVCO_RANGE ((6818000 - 5965750) / 2 + 5965750)
+
+static int tda18273_find_postdivandprescalerwithbettermargin(unsigned int LO, unsigned char* PostDiv, unsigned char* Prescaler)
+{
+ int ret;
+
+ unsigned char PostDivGrowing;
+ unsigned char PrescalerGrowing;
+ unsigned char PostDivDecreasing = 0;
+ unsigned char PrescalerDecreasing = 0;
+ unsigned int FCVOGrowing = 0;
+ unsigned int DistanceFCVOGrowing = 0;
+ unsigned int FVCODecreasing = 0;
+ unsigned int DistanceFVCODecreasing = 0;
+
+ /* Get the 2 possible values for PostDiv & Prescaler to find the one
+ which provides the better margin on LO */
+ ret = tda18273_calculate_postdivandprescaler(LO, 1, &PostDivGrowing, &PrescalerGrowing);
+ if(ret != -1) {
+ /* Calculate corresponding FVCO value in kHz */
+ FCVOGrowing = LO * PrescalerGrowing * PostDivGrowing;
+ }
+
+ ret = tda18273_calculate_postdivandprescaler(LO, 0, &PostDivDecreasing, &PrescalerDecreasing);
+ if(ret != -1) {
+ /* Calculate corresponding FVCO value in kHz */
+ FVCODecreasing = LO * PrescalerDecreasing * PostDivDecreasing;
+ }
+
+ /* Now take the values that are providing the better margin, the goal is +-2 MHz on LO */
+ /* So take the point that is the nearest of (FVCOmax - FVCOmin)/2 = 6391,875 MHz */
+ if(FCVOGrowing != 0) {
+ if(FCVOGrowing >= TDA18273_MIDDLE_FVCO_RANGE) {
+ DistanceFCVOGrowing = FCVOGrowing - TDA18273_MIDDLE_FVCO_RANGE;
+ } else {
+ DistanceFCVOGrowing = TDA18273_MIDDLE_FVCO_RANGE - FCVOGrowing;
+ }
+ }
+
+ if(FVCODecreasing != 0) {
+ if(FVCODecreasing >= TDA18273_MIDDLE_FVCO_RANGE) {
+ DistanceFVCODecreasing = FVCODecreasing - TDA18273_MIDDLE_FVCO_RANGE;
+ } else {
+ DistanceFVCODecreasing = TDA18273_MIDDLE_FVCO_RANGE - FVCODecreasing;
+ }
+ }
+
+ if(FCVOGrowing == 0) {
+ if(FVCODecreasing == 0) {
+ /* No value at all are found */
+ ret = -1;
+ } else {
+ /* No value in growing mode, so take the decreasing ones */
+ *PostDiv = PostDivDecreasing;
+ *Prescaler = PrescalerDecreasing;
+ }
+ } else {
+ if(FVCODecreasing == 0) {
+ /* No value in decreasing mode, so take the growing ones */
+ *PostDiv = PostDivGrowing;
+ *Prescaler = PrescalerGrowing;
+ } else {
+ /* Find the value which are the nearest of the middle of VCO range */
+ if(DistanceFCVOGrowing <= DistanceFVCODecreasing) {
+ *PostDiv = PostDivGrowing;
+ *Prescaler = PrescalerGrowing;
+ } else {
+ *PostDiv = PostDivDecreasing;
+ *Prescaler = PrescalerDecreasing;
+ }
+ }
+ }
+
+ return ret;
+}
+
+static int tda18273_calculate_nintkint(unsigned int LO, unsigned char PostDiv, unsigned char Prescaler, unsigned int* NInt, unsigned int* KInt)
+{
+ /* Algorithm that calculates N_K */
+ unsigned int FVCO = 0;
+ unsigned int N_K_prog = 0;
+
+ /* Algorithm that calculates N, K corrected */
+ unsigned int Nprime = 0;
+ unsigned int KforceK0_1 = 0;
+ unsigned int K2msb = 0;
+ unsigned int N0 = 0;
+ unsigned int Nm1 = 0;
+
+ /* Calculate N_K_Prog */
+ FVCO = LO * Prescaler * PostDiv;
+ N_K_prog = (FVCO * 128) / 125;
+
+ /* Calculate N & K corrected values */
+ Nprime = N_K_prog & 0xFF0000;
+
+ /* Force LSB to 1 */
+ KforceK0_1 = 2*(((N_K_prog - Nprime) << 7) / 2) + 1;
+
+ /* Check MSB bit around 2 */
+ K2msb = KforceK0_1 >> 21;
+ if(K2msb < 1) {
+ N0 = 1;
+ } else {
+ if (K2msb >= 3) {
+ N0 = 1;
+ } else {
+ N0 = 0;
+ }
+ }
+
+ if(K2msb < 1) {
+ Nm1 = 1;
+ } else {
+ Nm1 = 0;
+ }
+
+ /* Calculate N */
+ *NInt = (2 * ((Nprime >> 16) - Nm1) + N0) - 128;
+
+ /* Calculate K */
+ if(K2msb < 1) {
+ *KInt = KforceK0_1 + (2 << 21);
+ } else {
+ if (K2msb >= 3) {
+ *KInt = KforceK0_1 - (2 << 21);
+ } else {
+ *KInt = KforceK0_1;
+ }
+ }
+
+ /* Force last 7 bits of K_int to 0x5D, as the IC is doing for spurs optimization */
+ *KInt &= 0xFFFFFF80;
+ *KInt |= 0x5D;
+
+ return 0;
+}
+
+
+static int tda18273_set_pll(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+
+ /* LO wanted = RF wanted + IF in KHz */
+ unsigned int LO = 0;
+
+ /* Algorithm that calculates PostDiv */
+ unsigned char PostDiv = 0; /* absolute value */
+ unsigned char LOPostDiv = 0; /* register value */
+
+ /* Algorithm that calculates Prescaler */
+ unsigned char Prescaler = 0;
+
+ /* Algorithm that calculates N, K */
+ unsigned int N_int = 0;
+ unsigned int K_int = 0;
+
+ /* Calculate wanted LO = RF + IF in Hz */
+ LO = (priv->pObj->uRF + priv->pObj->uIF) / 1000;
+
+ /* Calculate the best PostDiv and Prescaler : the ones that provide the best margin */
+ /* in case of fine tuning +-2 MHz */
+ ret = tda18273_find_postdivandprescalerwithbettermargin(LO, &PostDiv, &Prescaler);
+
+ if(ret != -1) {
+ /* Program the PLL only if valid values are found, in that case err == TM_OK */
+ /* Decode PostDiv */
+ switch(PostDiv) {
+ case 1: LOPostDiv = 1; break;
+ case 2: LOPostDiv = 2; break;
+ case 4: LOPostDiv = 3; break;
+ case 8: LOPostDiv = 4; break;
+ case 16: LOPostDiv = 5; break;
+ default: dprintk(FE_INFO, 1, "%s *PostDiv value is wrong.", __func__); break;
+ }
+
+ /* Affect register map without writing into IC */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Main_Post_Divider_byte__LOPostDiv, LOPostDiv, Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Main_Post_Divider_byte__LOPresc, Prescaler, Bus_None);
+ /* Calculate N & K values of the PLL */
+ ret = tda18273_calculate_nintkint(LO, PostDiv, Prescaler, &N_int, &K_int);
+ /* Affect registers map without writing to IC */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_4__LO_Frac_0, (UInt8)(K_int & 0xFF), Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_3__LO_Frac_1, (UInt8)((K_int >> 8) & 0xFF), Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_2__LO_Frac_2, (UInt8)((K_int >> 16) & 0xFF), Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_1__LO_Int, (UInt8)(N_int & 0xFF), Bus_None);
+ /* Force manual selection mode : 0x3 at @0x56 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_5__N_K_correct_manual, 0x01, Bus_None);
+ /* Force manual selection mode : 0x3 at @0x56 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Sigma_delta_byte_5__LO_Calc_Disable, 0x01, Bus_None);
+ /* Write bytes Main_Post_Divider_byte (0x51) to Sigma_delta_byte_5 (0x56) */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_Main_Post_Divider_byte.Address, TDA18273_REG_DATA_LEN(gTDA18273_Reg_Main_Post_Divider_byte, gTDA18273_Reg_Sigma_delta_byte_5));
+ }
+
+ return 0;
+}
+
+static int tda18273_override_icp(struct dvb_frontend *fe, unsigned int uRF)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+ unsigned int uIF = 0;
+ unsigned char ProgIF = 0;
+ unsigned char LOPostdiv = 0;
+ unsigned char LOPrescaler = 0;
+ unsigned int FVCO = 0;
+ unsigned char uICPBypass = 0;
+ unsigned char ICP = 0;
+ unsigned char uPrevICP = 0;
+
+ /* Read PostDiv et Prescaler */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Main_Post_Divider_byte, &LOPostdiv, Bus_RW);
+ /* PostDiv */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Main_Post_Divider_byte__LOPostDiv, &LOPostdiv, Bus_NoRead);
+ /* Prescaler */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Main_Post_Divider_byte__LOPresc, &LOPrescaler, Bus_NoRead);
+ /* IF */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_IF_Frequency_byte__IF_Freq, &ProgIF, Bus_NoRead);
+ /* Decode IF */
+ uIF = ProgIF*50000;
+ /* Decode PostDiv */
+ switch(LOPostdiv) {
+ case 1: LOPostdiv = 1; break;
+ case 2: LOPostdiv = 2; break;
+ case 3: LOPostdiv = 4; break;
+ case 4: LOPostdiv = 8; break;
+ case 5: LOPostdiv = 16; break;
+ default: ret = -1; break;
+ }
+
+ if(ret != -1) {
+ /* Calculate FVCO in MHz*/
+ FVCO = LOPostdiv * LOPrescaler * ((uRF + uIF) / 1000000);
+ /* Set correct ICP */
+ if(FVCO < 6352) {
+ /* Set ICP to 01 (= 150)*/
+ ICP = 0x01;
+ } else if(FVCO < 6592) {
+ /* Set ICP to 10 (= 300)*/
+ ICP = 0x02;
+ } else {
+ /* Set ICP to 00 (= 500)*/
+ ICP = 0x00;
+ }
+ /* Get ICP_bypass bit */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Charge_pump_byte__ICP_Bypass, &uICPBypass, Bus_RW);
+ /* Get ICP */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Charge_pump_byte__ICP, &uPrevICP, Bus_NoRead);
+
+ if(uICPBypass == 0x0 || uPrevICP != ICP) {
+ /* Set ICP_bypass bit */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Charge_pump_byte__ICP_Bypass, 0x01, Bus_None);
+ /* Set ICP */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Charge_pump_byte__ICP, ICP, Bus_None);
+ /* Write Charge_pump_byte register */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_Charge_pump_byte.Address, 1);
+ }
+ }
+
+ return ret;
+}
+
+static int tda18273_override_digitalclock(struct dvb_frontend *fe, unsigned int uRF)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+ unsigned char uDigClock = 0;
+ unsigned char uPrevDigClock = 0;
+ unsigned char uProgIF = 0;
+
+ /* LO < 55 MHz then Digital Clock set to 16 MHz else subLO */
+ /* Read Current IF */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_IF_Frequency_byte__IF_Freq, &uProgIF, Bus_NoWrite);
+ /* Read Current Digital Clock */
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, &uPrevDigClock, Bus_NoWrite);
+ /* LO = RF + IF */
+ if((uRF + (uProgIF*50000)) < 55000000) {
+ uDigClock = 0; /* '00' = 16 MHz */
+ } else {
+ uDigClock = 3; /* '11' = subLO */
+ }
+
+ if(uPrevDigClock != uDigClock) {
+ /* Set Digital Clock bits */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, uDigClock, Bus_NoRead);
+ }
+
+ return 0;
+}
+
+static int tda18273_set_rffreq(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ int ret;
+ unsigned int uRF=priv->pObj->uProgRF;
+ unsigned int uRFLocal=0;
+
+ /* Set the proper settings depending on the standard & RF frequency */
+ /****************************************************************/
+ /* AGC TOP Settings */
+ /****************************************************************/
+ /* Set AGC3 RF AGC Top */
+ if(uRF < priv->pObj->pStandard->Freq_Start_LTE) {
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_AGC_byte__RFAGC_Top, priv->pObj->pStandard->AGC3_TOP_I2C_Low_Band, Bus_RW);
+ } else {
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_AGC_byte__RFAGC_Top, priv->pObj->pStandard->AGC3_TOP_I2C_High_Band, Bus_RW);
+ }
+ /* Set AGC3 Adapt TOP */
+ if(uRF < priv->pObj->pStandard->Freq_Start_LTE) {
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_AGC_byte__RFAGC_Adapt_TOP, priv->pObj->pStandard->AGC3_Adapt_TOP_Low_Band, Bus_NoRead);
+ } else {
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_AGC_byte__RFAGC_Adapt_TOP, priv->pObj->pStandard->AGC3_Adapt_TOP_High_Band, Bus_NoRead);
+ }
+ /* Set IRQ_clear */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IRQ_clear, TDA18273_IRQ_Global|TDA18273_IRQ_SetRF, Bus_NoRead);
+ /* Set RF */
+ uRFLocal = (uRF + 500) / 1000;
+
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Frequency_byte_1__RF_Freq_1, (unsigned char)((uRFLocal & 0x00FF0000) >> 16), Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Frequency_byte_2__RF_Freq_2, (unsigned char)((uRFLocal & 0x0000FF00) >> 8), Bus_None);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Frequency_byte_3__RF_Freq_3, (unsigned char)(uRFLocal & 0x000000FF), Bus_None);
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_RF_Frequency_byte_1.Address, TDA18273_REG_DATA_LEN(gTDA18273_Reg_RF_Frequency_byte_1, gTDA18273_Reg_RF_Frequency_byte_3));
+ /* Set state machine and Launch it */
+ ret = tda18273_set_msm(fe, TDA18273_MSM_SetRF, 0x1);
+ /* Wait for IRQ to trigger */
+ //ret = iTDA18273_WaitIRQ(pObj, 50, 5, TDA18273_IRQ_SetRF);
+ mdelay(50);
+
+ /* Override the calculated PLL to get the best margin in case fine tuning is used */
+ /* which means set the PLL in manual mode that provides the best occurence of LO tuning (+-2 MHz) */
+ /* without touching PostDiv and Prescaler */
+ ret = tda18273_set_pll(fe);
+ /* Override ICP */
+ ret = tda18273_override_icp(fe, priv->pObj->uProgRF);
+ /* Override Digital Clock */
+ if(ret != -1) {
+ ret = tda18273_override_digitalclock(fe, priv->pObj->uProgRF);
+ }
+
+ return 0;
+}
+
+static int tda18273_set_rf(struct dvb_frontend *fe, unsigned int uRF)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ priv->pObj->uRF = uRF;
+ priv->pObj->uProgRF = priv->pObj->uRF + priv->pObj->pStandard->CF_Offset;
+
+ tda18273_llpwr_state(fe, TDA18273_PowerNormalMode);
+ tda18273_lastpass_lnapwr(fe);
+ tda18273_check_calcpll(fe);
+ tda18273_override_bandsplit(fe);
+ tda18273_set_rffreq(fe);
+
+ return 0;
+}
+
+static int tda18273_hw_reset(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+ int ret;
+
+ tda18273_pwr_state(fe, tmPowerStandby);
+ tda18273_llpwr_state(fe, TDA18273_PowerNormalMode);
+
+ /* Set digital clock mode to 16 Mhz before resetting the IC to avoid unclocking the digital part */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Reference_Byte__Digital_Clock_Mode, 0x00, Bus_RW);
+ /* Perform a SW reset to reset the digital calibrations & the IC machine state */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_3, 0x03, Bus_RW);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Power_Down_byte_3, 0x00, Bus_NoRead);
+ /* Set power state on */
+ //ret = tda18273_llpwr_state(fe, TDA18273_PowerNormalMode);
+
+#if 0
+ /* Only if tuner has a XTAL */
+ if(1) { //if (priv->bBufferMode == False)
+ /* Reset XTALCAL_End bit */
+ /* Set IRQ_clear */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IRQ_clear, TDA18273_IRQ_Global|TDA18273_IRQ_XtalCal|TDA18273_IRQ_HwInit|TDA18273_IRQ_IrCal, Bus_NoRead);
+ /* Launch XTALCAL */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_MSM_byte_2__XtalCal_Launch, 0x01, Bus_NoRead);
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_MSM_byte_2__XtalCal_Launch, 0x00, Bus_None);
+ /* Wait XTALCAL_End bit */
+ //ret = iTDA18273_WaitXtalCal_End(priv, 100, 10);
+ }
+#endif
+
+ /* Read all bytes */
+ ret = tda18273_readregmap(priv, 0x00, TDA18273_REG_MAP_NB_BYTES);
+ /* Check if Calc_PLL algorithm is in automatic mode */
+ ret = tda18273_check_calcpll(fe);
+ /* Up_Step_Ovld: POR = 1 -> 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Vsync_Mgt_byte__Up_Step_Ovld, 0x00, Bus_NoRead);
+ /* PLD_CC_Enable: POR = 1 -> 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RFAGCs_Gain_byte_1__PLD_CC_Enable, 0x00, Bus_NoRead);
+ /* RFCAL_Offset0 : 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog0, 0x00, Bus_None);
+ /* RFCAL_Offset1 : 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog1, 0x00, Bus_None);
+ /* RFCAL_Offset2 : 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog2, 0x00, Bus_None);
+ /* RFCAL_Offset3 : 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_1__RFCAL_Offset_Cprog3, 0x00, Bus_None);
+ /* RFCAL_Offset4 : 3 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog4, 0x03, Bus_None);
+ /* RFCAL_Offset5 : 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog5, 0x00, Bus_None);
+ /* RFCAL_Offset6 : 3 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog6, 0x03, Bus_None);
+ /* RFCAL_Offset7 : 3 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_2__RFCAL_Offset_Cprog7, 0x03, Bus_None);
+ /* RFCAL_Offset8 : 1 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RF_Cal_byte_3__RFCAL_Offset_Cprog8, 0x01, Bus_None);
+ /* Write RF_Cal_byte_1 (0x27) to RF_Cal_byte_3 (0x29) Registers */
+ ret = tda18273_writeregmap(priv, gTDA18273_Reg_RF_Cal_byte_1.Address, TDA18273_REG_DATA_LEN(gTDA18273_Reg_RF_Cal_byte_1, gTDA18273_Reg_RF_Cal_byte_3));
+ /* PLD_Temp_Enable: POR = 1 -> 0 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_RFAGCs_Gain_byte_1__PLD_Temp_Enable, 0x00, Bus_NoRead);
+ /* Power Down Vsync Management: POR = 0 -> 1 */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_Vsync_Mgt_byte__PD_Vsync_Mgt, 0x01, Bus_NoRead);
+ /* Set IRQ_clear */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IRQ_clear, TDA18273_IRQ_Global|TDA18273_IRQ_HwInit|TDA18273_IRQ_IrCal, Bus_NoRead);
+ /* Set state machine (all CALs except IRCAL) and Launch it */
+ ret = tda18273_set_msm(fe, TDA18273_MSM_HwInit, 0x1);
+ /* Inform that init phase has started */
+ /* State reached after 500 ms max */
+ //ret = iTDA18273_WaitIRQ(priv, 500, 10, TDA18273_IRQ_HwInit);
+ mdelay(500);
+ /* Set IRQ_clear */
+ ret = tda18273_writeregs(priv, &gTDA18273_Reg_IRQ_clear, TDA18273_IRQ_Global|TDA18273_IRQ_HwInit|TDA18273_IRQ_IrCal, Bus_NoRead);
+ /* Launch IRCALs after all other CALs are finished */
+ ret = tda18273_set_msm(fe, TDA18273_MSM_IrCal, 0x1);
+ /* State reached after 500 ms max, 10 ms step due to CAL ~ 30ms */
+ //ret = iTDA18273_WaitIRQ(priv, 500, 10, TDA18273_IRQ_IrCal);
+ mdelay(500);
+
+ tda18273_llpwr_state(fe, TDA18273_PowerStandbyWithXtalOn);
+
+ return 0;
+}
+
+static int tda18273_hw_init(struct dvb_frontend *fe)
+{
+ tda18273_pwr_state(fe, tmPowerOn);
+
+ tda18273_hw_reset(fe);
+
+ return 0;
+}
+
+static int tda18273_init(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+ int ret;
+ unsigned char val=0;
+ unsigned short id=0;
+ unsigned char major;
+ unsigned char minor;
+
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_ID_byte_1__Ident_1, &val, Bus_RW);
+ id = val << 8;
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_ID_byte_2__Ident_2, &val, Bus_RW);
+ id |= val;
+
+ if(ret == TDA_RESULT_SUCCESS) {
+ if(id == TDA_DEVICE_TYPE) {
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_ID_byte_3__Major_rev, &major, Bus_RW);
+ ret = tda18273_readregs(priv, &gTDA18273_Reg_ID_byte_3__Minor_rev, &minor, Bus_RW);
+ dprintk(FE_INFO, 1, "id:%d / ver:%d.%d", id, major, minor);
+ } else {
+ return -1;
+ }
+ } else {
+ return -1;
+ }
+
+ priv->pObj = &gTDA18273Instance;
+
+ tda18273_hw_init(fe);
+
+ return 0;
+}
+
+static int tda18273_get_status(struct dvb_frontend *fe, u32 *status)
+{
+ struct tda18273_state *priv = (struct tda18273_state*)fe->tuner_priv;
+ unsigned short lock_status = 0;
+ int ret = 0;
+
+ ret = tda18273_get_lock_status(priv, &lock_status);
+ if (ret)
+ goto err;
+err:
+ dprintk(FE_DEBUG, 1, "ret=%d", ret);
+ return ret;
+}
+
+static int tda18273_set_state(struct dvb_frontend *fe, enum tuner_param param, struct tuner_state *state)
+{
+ return -EINVAL;
+}
+
+static int tda18273_get_state(struct dvb_frontend *fe, enum tuner_param param, struct tuner_state *state)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+ int ret;
+
+ switch (param) {
+ case DVBFE_TUNER_FREQUENCY:
+ state->frequency = priv->freq_hz;
+ ret = 0;
+ break;
+ case DVBFE_TUNER_TUNERSTEP:
+ state->tunerstep = fe->ops.tuner_ops.info.frequency_step;
+ ret = 0;
+ break;
+ case DVBFE_TUNER_IFFREQ:
+ state->ifreq = priv->if_freq;
+ ret = 0;
+ break;
+ case DVBFE_TUNER_BANDWIDTH:
+ if (fe->ops.info.type == FE_OFDM)
+ state->bandwidth = priv->bandwidth;
+ ret = 0;
+ break;
+ default:
+ ret = -EINVAL;
+ break;
+ }
+ return ret;
+}
+
+static int tda18273_set_params(struct dvb_frontend *fe,
+ struct dvb_frontend_parameters *params)
+{
+ struct dtv_frontend_properties *c = &fe->dtv_property_cache;
+ struct tda18273_state *priv = fe->tuner_priv;
+ u32 delsys = c->delivery_system;
+ u32 bw = c->bandwidth_hz;
+ u32 freq = c->frequency;
+ unsigned short lock = 0;
+ int ret;
+
+ BUG_ON(!priv);
+
+ dprintk(FE_DEBUG, 1, "freq=%d, bw=%d", freq, bw);
+
+ switch (delsys) {
+ case SYS_ATSC:
+ tda18273_set_standardmode(fe, TDA18273_ATSC_6MHz);
+ break;
+ case SYS_DVBT:
+ case SYS_DVBT2:
+ switch (bw) {
+ case 1700000:
+ tda18273_set_standardmode(fe, TDA18273_DVBT_1_7MHz);
+ break;
+ case 6000000:
+ tda18273_set_standardmode(fe, TDA18273_DVBT_6MHz);
+ break;
+ case 7000000:
+ tda18273_set_standardmode(fe, TDA18273_DVBT_7MHz);
+ break;
+ case 8000000:
+ tda18273_set_standardmode(fe, TDA18273_DVBT_8MHz);
+ break;
+ case 10000000:
+ tda18273_set_standardmode(fe, TDA18273_DVBT_10MHz);
+ break;
+ default:
+ ret = -EINVAL;
+ goto err;
+ }
+ break;
+ case SYS_DVBC_ANNEX_A:
+ case SYS_DVBC_ANNEX_C:
+ tda18273_set_standardmode(fe, TDA18273_QAM_8MHz);
+ break;
+ case SYS_DVBC_ANNEX_B:
+ tda18273_set_standardmode(fe, TDA18273_QAM_6MHz);
+ break;
+ }
+
+ ret = tda18273_pwr_state(fe, tmPowerOn);
+ if (ret)
+ goto err;
+
+ dprintk(FE_DEBUG, 1, "if_freq=%d", priv->pObj->pStandard->IF);
+
+ ret = tda18273_set_rf(fe, freq + priv->pObj->pStandard->IF);
+ if (ret)
+ goto err;
+
+ msleep(100);
+ tda18273_get_lock_status(priv, &lock);
+
+ tda18273_regall_debug(priv);
+
+ dprintk(FE_INFO, 1, "Lock status = %d", lock);
+ if (lock) {
+ priv->freq_hz = freq;
+ priv->if_freq = priv->pObj->pStandard->IF;
+ priv->bandwidth = bw;
+ }
+err:
+ dprintk(FE_DEBUG, 1, "ret=%d", ret);
+ return ret;
+}
+
+static int tda18273_get_ifreq(struct dvb_frontend *fe, u32 *frequency)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ *frequency = priv->if_freq;
+ return 0;
+}
+
+static int tda18273_release(struct dvb_frontend *fe)
+{
+ struct tda18273_state *priv = fe->tuner_priv;
+
+ BUG_ON(!priv);
+
+ if(priv->power_state != tmPowerOff) {
+ tda18273_pwr_state(fe, tmPowerStandby);
+ }
+
+ fe->tuner_priv = NULL;
+ kfree(priv);
+ return 0;
+}
+
+static struct dvb_tuner_ops tda18273_ops = {
+ .info = {
+ .name = "TDA18273 Silicon Tuner",
+ .frequency_min = 42000000,
+ .frequency_max = 870000000,
+ .frequency_step = 50000,
+ },
+ .init = tda18273_init,
+// .sleep = tda18273_sleep,
+ .get_status = tda18273_get_status,
+ .set_params = tda18273_set_params,
+ .set_state = tda18273_set_state,
+ .get_state = tda18273_get_state,
+ .get_frequency = tda18273_get_ifreq,
+ .release = tda18273_release
+};
+
+struct dvb_frontend *tda18273_attach(struct dvb_frontend *fe,
+ struct i2c_adapter *i2c,
+ const u8 i2c_addr)
+{
+ struct tda18273_state *tda18273;
+ int ret;
+
+ BUG_ON(!i2c);
+
+ tda18273 = kzalloc(sizeof (struct tda18273_state), GFP_KERNEL);
+ if (!tda18273)
+ goto err;
+
+ tda18273->i2c = i2c;
+ tda18273->fe = fe;
+ tda18273->i2c_addr = i2c_addr;
+ tda18273->power_state = tmPowerOff;
+
+ fe->tuner_priv = tda18273;
+ fe->ops.tuner_ops = tda18273_ops;
+
+ ret = tda18273_init(fe);
+ if (ret) {
+ dprintk(FE_ERROR, 1, "Error Initializing!");
+ goto err;
+ }
+
+ dprintk(FE_DEBUG, 1, "Done");
+ return tda18273->fe;
+err:
+ kfree(tda18273);
+ return NULL;
+}
+EXPORT_SYMBOL(tda18273_attach);
+
+MODULE_AUTHOR("Manu Abraham");
+MODULE_DESCRIPTION("TDA18273 Silicon tuner");
+MODULE_LICENSE("GPL");
diff --git a/drivers/media/tuners/tda18273.h b/drivers/media/tuners/tda18273.h
new file mode 100644
index 0000000..534b85f
--- /dev/null
+++ b/drivers/media/tuners/tda18273.h
@@ -0,0 +1,38 @@
+/*
+ tda18273.h - header for the NXP TDA18273 silicon tuner
+ Copyright (C) 2014 CrazyCat <crazycat69@narod.ru>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __TDA18273_H
+#define __TDA18273_H
+
+#if IS_ENABLED(CONFIG_MEDIA_TUNER_TDA18273)
+extern struct dvb_frontend *tda18273_attach(struct dvb_frontend *fe,
+ struct i2c_adapter *i2c,
+ const u8 i2c_addr);
+
+#else
+static inline struct dvb_frontend *tda18273_attach(struct dvb_frontend *fe,
+ struct i2c_adapter *i2c,
+ const u8 i2c_addr)
+{
+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+ return NULL;
+}
+#endif
+
+#endif /* __TDA18273_H */
diff --git a/drivers/media/tuners/tda18273_priv.h b/drivers/media/tuners/tda18273_priv.h
new file mode 100644
index 0000000..a282b14
--- /dev/null
+++ b/drivers/media/tuners/tda18273_priv.h
@@ -0,0 +1,1427 @@
+/*
+ tda18273-priv.h - private header for the NXP TDA18273 silicon tuner
+ Copyright (C) 2014 CrazyCat <crazycat69@narod.ru>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef __TDA18273_PRIV
+#define __TDA18273_PRIV
+
+#define TDA18273_TUNER_RESET 0
+
+#define TDA_FREQ_LOW_BAND 1
+#define TDA_FREQ_MID_BAND 2
+#define TDA_FREQ_HIGH_BAND 4
+
+#define TDA_AGC_115dBuV 1
+#define TDA_AGC_112dBuV 2
+#define TDA_AGC_109dBuV 3
+#define TDA_AGC_106dBuV 4
+#define TDA_AGC_103dBuV 5
+#define TDA_AGC_EXTERNAL 6
+#define TDA_AGC_DISABLE 7
+
+#define TDA_PLL_CP_50uA 6
+#define TDA_PLL_CP_125uA 7
+#define TDA_PLL_CP_250uA 0x0e
+#define TDA_PLL_CP_650uA 0x0f
+
+#define TDA_PLLref_DIVIDER_64 3
+#define TDA_PLLref_DIVIDER_24 2
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+typedef unsigned char UInt8;
+typedef unsigned int UInt32;
+typedef int Int32;
+
+
+/* Result codes */
+#define TDA_RESULT_SUCCESS 0
+#define TDA_RESULT_RESET_FAILURE 1
+#define TDA_RESULT_I2C_WRITE_FAILURE 2
+#define TDA_RESULT_I2C_READ_FAILURE 3
+#define TDA_RESULT_OUT_OF_RANGE 5
+
+
+/* Product id */
+#define TDA_DEVICE_TYPE 18273
+
+/* Register Bit-Field Definition */
+typedef struct _TDA18273_BitField_t {
+ UInt8 Address;
+ UInt8 PositionInBits;
+ UInt8 WidthInBits;
+ UInt8 Attributes;
+} TDA18273_BitField_t, *pTDA18273_BitField_t;
+
+/* Bus Access */
+typedef enum _tmbslFrontEndBusAccess_t {
+ Bus_RW = 0x00, /* RW Bus access */
+ Bus_NoRead = 0x01, /* No Read Bus access */
+ Bus_NoWrite = 0x02, /* No Write Bus access */
+ Bus_None = Bus_NoRead|Bus_NoWrite, /* No Bus access. Update RegMap only */
+ Bus_Max
+} tmbslFrontEndBusAccess_t;
+
+typedef enum tmPowerState
+{
+ tmPowerOn = 0, /* Device powered on (D0 state) */
+ tmPowerStandby, /* Device power standby (D1 state) */
+ tmPowerSuspend, /* Device power suspended (D2 state) */
+ tmPowerOff, /* Device powered off (D3 state) */
+ tmPowerMax /* Device power max */
+} tmPowerState_t, *ptmPowerState_t;
+
+typedef enum _TDA18273PowerState_t {
+ TDA18273_PowerNormalMode = 0, /* Device normal mode */
+ TDA18273_PowerStandbyWithXtalOn, /* Device standby mode with Xtal Output */
+ TDA18273_PowerStandby, /* Device standby mode */
+ TDA18273_PowerMax
+} TDA18273PowerState_t, *pTDA18273PowerState_t;
+
+typedef enum _TDA18273StandardMode_t {
+ TDA18273_StandardMode_Unknown = 0, /* Unknown standard */
+ TDA18273_QAM_6MHz, /* Digital TV QAM 6MHz */
+ TDA18273_QAM_8MHz, /* Digital TV QAM 8MHz */
+ TDA18273_ATSC_6MHz, /* Digital TV ATSC 6MHz */
+ TDA18273_ISDBT_6MHz, /* Digital TV ISDBT 6MHz */
+ TDA18273_DVBT_1_7MHz, /* Digital TV DVB-T/T2 6MHz */
+ TDA18273_DVBT_6MHz, /* Digital TV DVB-T/T2 6MHz */
+ TDA18273_DVBT_7MHz, /* Digital TV DVB-T/T2 7MHz */
+ TDA18273_DVBT_8MHz, /* Digital TV DVB-T/T2 8MHz */
+ TDA18273_DVBT_10MHz, /* Digital TV DVB-T/T2 10MHz */
+ TDA18273_DMBT_8MHz, /* Digital TV DMB-T 8MHz */
+ TDA18273_FM_Radio, /* Analog FM Radio */
+ TDA18273_ANLG_MN, /* Analog TV M/N */
+ TDA18273_ANLG_B, /* Analog TV B */
+ TDA18273_ANLG_GH, /* Analog TV G/H */
+ TDA18273_ANLG_I, /* Analog TV I */
+ TDA18273_ANLG_DK, /* Analog TV D/K */
+ TDA18273_ANLG_L, /* Analog TV L */
+ TDA18273_ANLG_LL, /* Analog TV L' */
+ TDA18273_Scanning, /* Analog Preset Blind Scanning */
+ TDA18273_ScanXpress, /* ScanXpress */
+ TDA18273_StandardMode_Max
+} TDA18273StandardMode_t, *pTDA18273StandardMode_t;
+
+/* TDA18273 Driver State Machine */
+typedef enum _TDA18273HwState_t {
+ TDA18273_HwState_Unknown = 0, /* Hw State Unknown */
+ TDA18273_HwState_InitNotDone, /* Hw Init Not Done */
+ TDA18273_HwState_InitPending, /* Hw Init Pending */
+ TDA18273_HwState_InitDone, /* Hw Init Done */
+ TDA18273_HwState_SetStdDone, /* Set Standard Done */
+ TDA18273_HwState_SetRFDone, /* Set RF Done */
+ TDA18273_HwState_SetFineRFDone, /* Set Fine RF Done */
+ TDA18273_HwState_Max
+} TDA18273HwState_t, *pTDA18273HwState_t;
+
+typedef enum _TDA18273HwStateCaller_t {
+ TDA18273_HwStateCaller_Unknown = 0, /* Caller Unknown */
+ TDA18273_HwStateCaller_SetPower, /* Caller SetPowerState */
+ TDA18273_HwStateCaller_HwInit, /* Caller HwInit */
+ TDA18273_HwStateCaller_SetStd, /* Caller SetStandardMode */
+ TDA18273_HwStateCaller_SetRF, /* Caller SetRF */
+ TDA18273_HwStateCaller_SetFineRF, /* Caller SetFineRF */
+ TDA18273_HwStateCaller_GetRSSI, /* Caller GetRSSI */
+ TDA18273_HwStateCaller_SetRawRF, /* Caller SetRawRF */
+ TDA18273_HwStateCaller_Max
+} TDA18273HwStateCaller_t, *pTDA18273HwStateCaller_t;
+
+/* TDA18273 specific powerstate bits: */
+typedef enum _TDA18273SM_Reg_t {
+ TDA18273_SM_NONE = 0x00, /* No SM bit to set */
+ TDA18273_SM_XT = 0x01, /* SM_XT bit to set */
+ TDA18273_SM = 0x02 /* SM bit to set */
+} TDA18273SM_Reg_t, *pTDA18273SM_Reg_t;
+
+/* TDA18273 specific MSM: */
+typedef enum _TDA18273MSM_t {
+ TDA18273_MSM_Calc_PLL = 0x01, /* Calc_PLL bit */
+ TDA18273_MSM_RC_Cal = 0x02, /* RC_Cal bit */
+ TDA18273_MSM_IR_CAL_Wanted = 0x04, /* IR_CAL_Wanted bit */
+ TDA18273_MSM_IR_Cal_Image = 0x08, /* IR_Cal_Image bit */
+ TDA18273_MSM_IR_CAL_Loop = 0x10, /* IR_CAL_Loop bit */
+ TDA18273_MSM_RF_CAL = 0x20, /* RF_CAL bit */
+ TDA18273_MSM_RF_CAL_AV = 0x40, /* RF_CAL_AV bit */
+ TDA18273_MSM_RSSI_Meas = 0x80, /* RSSI_Meas bit */
+ /* Performs all CALs except IR_CAL */
+ TDA18273_MSM_HwInit = TDA18273_MSM_Calc_PLL\
+ |TDA18273_MSM_RC_Cal\
+ |TDA18273_MSM_RF_CAL,
+ /* Performs all IR_CAL */
+ TDA18273_MSM_IrCal = TDA18273_MSM_IR_Cal_Image\
+ |TDA18273_MSM_IR_CAL_Loop,
+ TDA18273_MSM_SetRF = TDA18273_MSM_Calc_PLL\
+ |TDA18273_MSM_RF_CAL_AV,
+ TDA18273_MSM_GetPowerLevel = TDA18273_MSM_RSSI_Meas
+} TDA18273MSM_t, *pTDA18273MSM_t;
+
+/* TDA18273 specific IRQ clear: */
+typedef enum _TDA18273IRQ_t {
+ TDA18273_IRQ_MSM_RCCal = 0x01, /* MSM_RCCal bit */
+ TDA18273_IRQ_MSM_IRCAL = 0x02, /* MSM_IRCAL bit */
+ TDA18273_IRQ_MSM_RFCal = 0x04, /* MSM_RFCal bit */
+ TDA18273_IRQ_MSM_LOCalc = 0x08, /* MSM_LOCalc bit */
+ TDA18273_IRQ_MSM_RSSI = 0x10, /* MSM_RSSI bit */
+ TDA18273_IRQ_XtalCal = 0x20, /* XtalCal bit */
+ TDA18273_IRQ_Global = 0x80, /* IRQ_status bit */
+ TDA18273_IRQ_HwInit = TDA18273_IRQ_MSM_RCCal\
+ |TDA18273_IRQ_MSM_RFCal\
+ |TDA18273_IRQ_MSM_LOCalc\
+ |TDA18273_IRQ_MSM_RSSI,
+ TDA18273_IRQ_IrCal = TDA18273_IRQ_MSM_IRCAL\
+ |TDA18273_IRQ_MSM_LOCalc\
+ |TDA18273_IRQ_MSM_RSSI,
+ TDA18273_IRQ_SetRF = TDA18273_IRQ_MSM_RFCal\
+ |TDA18273_IRQ_MSM_LOCalc,
+ TDA18273_IRQ_GetPowerLevel = TDA18273_IRQ_MSM_RSSI
+} TDA18273IRQ_t, *pTDA18273IRQ_t;
+
+/* TDA18273 Standard settings: */
+typedef enum _TDA18273LPF_t {
+ TDA18273_LPF_6MHz = 0, /* 6MHz LPFc */
+ TDA18273_LPF_7MHz, /* 7MHz LPFc */
+ TDA18273_LPF_8MHz, /* 8MHz LPFc */
+ TDA18273_LPF_9MHz, /* 9MHz LPFc */
+ TDA18273_LPF_1_5MHz, /* 1.5MHz LPFc */
+ TDA18273_LPF_Max
+} TDA18273LPF_t, *pTDA18273LPF_t;
+
+typedef enum _TDA18273LPFOffset_t {
+ TDA18273_LPFOffset_0pc = 0, /* LPFc 0% */
+ TDA18273_LPFOffset_min_4pc, /* LPFc -4% */
+ TDA18273_LPFOffset_min_8pc, /* LPFc -8% */
+ TDA18273_LPFOffset_min_12pc, /* LPFc -12% */
+ TDA18273_LPFOffset_Max
+} TDA18273LPFOffset_t, *pTDA18273LPFOffset_t;
+
+typedef enum TDA18273DC_Notch_IF_PPF_t {
+ TDA18273_DC_Notch_IF_PPF_Disabled = 0, /* IF Notch Disabled */
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* IF Notch Enabled */
+ TDA18273_DC_Notch_IF_PPF_Max
+} TDA18273DC_Notch_IF_PPF_t, *pTDA18273DC_Notch_IF_PPF_t;
+
+typedef enum _TDA18273IF_HPF_t {
+ TDA18273_IF_HPF_Disabled = 0, /* IF HPF disabled */
+ TDA18273_IF_HPF_0_4MHz, /* IF HPF 0.4MHz */
+ TDA18273_IF_HPF_0_85MHz, /* IF HPF 0.85MHz */
+ TDA18273_IF_HPF_1MHz, /* IF HPF 1MHz */
+ TDA18273_IF_HPF_1_5MHz, /* IF HPF 1.5MHz */
+ TDA18273_IF_HPF_Max
+} TDA18273IF_HPF_t, *pTDA18273IF_HPF_t;
+
+typedef enum _TDA18273IF_Notch_t {
+ TDA18273_IF_Notch_Disabled = 0, /* IF Notch Disabled */
+ TDA18273_IF_Notch_Enabled, /* IF Notch Enabled */
+ TDA18273_IF_Notch_Max
+} TDA18273IF_Notch_t, *pTDA18273IF_Notch_t;
+
+typedef enum _TDA18273IFnotchToRSSI_t {
+ TDA18273_IFnotchToRSSI_Disabled = 0, /* IFnotchToRSSI Disabled */
+ TDA18273_IFnotchToRSSI_Enabled, /* IFnotchToRSSI Enabled */
+ TDA18273_IFnotchToRSSI_Max
+} TDA18273IFnotchToRSSI_t, *pTDA18273IFnotchToRSSI_t;
+
+typedef enum _TDA18273AGC1_TOP_I2C_DN_UP_t {
+ TDA18273_AGC1_TOP_I2C_DN_UP_d88_u82dBuV = 0, /* AGC1 TOP I2C DN/UP down 88 up 82 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d90_u84dBuV, /* AGC1 TOP I2C DN/UP down 90 up 84 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89wdBuV, /* AGC1 TOP I2C DN/UP down 95 up 89 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d93_u87dBuV, /* AGC1 TOP I2C DN/UP down 93 up 87 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP down 95 up 89 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d99_u84dBuV, /* AGC1 TOP I2C DN/UP down 99 up 84 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d100_u82dBuV, /* AGC1 TOP I2C DN/UP down 100 up 82 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d100_u94bisdBuV, /* AGC1 TOP I2C DN/UP down 100 up 94 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d102_u82dBuV, /* AGC1 TOP I2C DN/UP down 102 up 82 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d102_u84dBuV, /* AGC1 TOP I2C DN/UP down 102 up 84 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_d100_u94dBuV, /* AGC1 TOP I2C DN/UP down 100 up 94 dBuV */
+ TDA18273_AGC1_TOP_I2C_DN_UP_Max
+} TDA18273AGC1_TOP_I2C_DN_UP_t, *pTDA18273AGC1_TOP_I2C_DN_UP_t;
+
+typedef enum _TDA18273AGC1_Adapt_TOP_DN_UP_t {
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step = 0, /* AGC1 Adapt TOP DN/UP 0 Step */
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP 1 Step */
+ TDA18273_AGC1_Adapt_TOP_DN_UP_2_Step, /* AGC1 Adapt TOP DN/UP 2 Step */
+ TDA18273_AGC1_Adapt_TOP_DN_UP_3_Step, /* AGC1 Adapt TOP DN/UP 3 Step */
+ TDA18273_AGC1_Adapt_TOP_DN_UP_Max
+} TDA18273AGC1_Adapt_TOP_DN_UP_t, *pTDA18273AGC1_Adapt_TOP_DN_UP_t;
+
+typedef enum _TDA18273AGC1_Mode_t {
+ TDA18273_AGC1_Mode_No_Mode = 0, /* AGC1 Mode */
+ TDA18273_AGC1_Mode_TOP_ADAPT, /* AGC1 Mode: TOP ADAPT */
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 Mode: LNA ADAPT */
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 Mode: LNA ADAPT & TOP ADAPT */
+ TDA18273_AGC1_Mode_FREEZE, /* AGC1 Mode: FREEZE */
+ TDA18273_AGC1_Mode_WIDE, /* AGC1 Mode: WIDE */
+ TDA18273_AGC1_Mode_LNA_ADAPT_FREEZE, /* AGC1 Mode: LNA ADAPT & FREEZE */
+ TDA18273_AGC1_Mode_LNA_ADAPT_WIDE, /* AGC1 Mode: LNA ADAPT & WIDE */
+ TDA18273_AGC1_Mode_Max
+} TDA18273AGC1_Mode_t, *pTDA18273AGC1_Mode_t;
+
+typedef enum _TDA18273Range_LNA_Adapt_t {
+ TDA18273_Range_LNA_Adapt_20dB_8dB = 0, /* Range LNA Adapt 20dB-8dB */
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt 20dB-11dB */
+ TDA18273_Range_LNA_Adapt_Max
+} TDA18273Range_LNA_Adapt_t, *pTDA18273Range_LNA_Adapt_t;
+
+typedef enum _TDA18273LNA_Adapt_RFAGC_Gv_Threshold {
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB = 0, /* 18.25dB */
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_16_75dB, /* 16.75dB */
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_15_25dB, /* 15.25dB */
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_13_75dB, /* 13.75dB */
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_Max
+} TDA18273LNA_Adapt_RFAGC_Gv_Threshold, *pTDA18273LNA_Adapt_RFAGC_Gv_Threshold;
+
+typedef enum _TDA18273AGC1_Top_Adapt_RFAGC_Gv_Threshold {
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB = 0, /* 16.75dB */
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* 15.25dB */
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_13_75dB, /* 13.75dB */
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_12_25dB, /* 12.25dB */
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_Max
+} TDA18273AGC1_Top_Adapt_RFAGC_Gv_Threshold, *pTDA18273AGC1_Top_Adapt_RFAGC_Gv_Threshold;
+
+typedef enum _TDA18273AGC1_DN_Time_Constant_t {
+ TDA18273_AGC1_DN_Time_Constant_32_752ms = 0, /* 32.752 ms */
+ TDA18273_AGC1_DN_Time_Constant_16_376ms, /* 16.376 ms */
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* 8.188 ms */
+ TDA18273_AGC1_DN_Time_Constant_4_094ms /* 4.094 ms */
+} TDA18273AGC1_DN_Time_Constant_t, *pTDA18273AGC1_DN_Time_Constant_t;
+
+typedef enum _TDA18273AGC2_TOP_DN_UP_t {
+ TDA18273_AGC2_TOP_DN_UP_d88_u81dBuV = 0, /* AGC2 TOP DN/UP down 88 up 81 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d90_u83dBuV, /* AGC2 TOP DN/UP down 90 up 83 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d93_u86dBuV, /* AGC2 TOP DN/UP down 93 up 86 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d95_u88dBuV, /* AGC2 TOP DN/UP down 95 up 88 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d88_u82dBuV, /* AGC2 TOP DN/UP down 88 up 82 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP down 90 up 84 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d93_u87dBuV, /* AGC2 TOP DN/UP down 93 up 87 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_d95_u89dBuV, /* AGC2 TOP DN/UP down 95 up 89 dBuV */
+ TDA18273_AGC2_TOP_DN_UP_Max
+} TDA18273AGC2_TOP_DN_UP_t, *pTDA18273AGC2_TOP_DN_UP_t;
+
+typedef enum _TDA18273AGC2_DN_Time_Constant_t {
+ TDA18273_AGC2_DN_Time_Constant_16_376ms = 0, /* 16.376 ms */
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* 8.188 ms */
+ TDA18273_AGC2_DN_Time_Constant_4_094ms, /* 4.094 ms */
+ TDA18273_AGC2_DN_Time_Constant_2_047ms, /* 2.047 ms */
+} TDA18273AGC2_DN_Time_Constant_t, *pTDA18273AGC2_DN_Time_Constant_t;
+
+typedef enum _TDA18273AGC3_TOP_I2C_t {
+ TDA18273_AGC3_TOP_I2C_94dBuV = 0, /* AGC3 TOP I2C 94 dBuV */
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C 96 dBuV */
+ TDA18273_AGC3_TOP_I2C_98dBuV, /* AGC3 TOP I2C 98 dBuV */
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C 100 dBuV */
+ TDA18273_AGC3_TOP_I2C_102dBuV, /* AGC3 TOP I2C 102 dBuV */
+ TDA18273_AGC3_TOP_I2C_104dBuV, /* AGC3 TOP I2C 104 dBuV */
+ TDA18273_AGC3_TOP_I2C_106dBuV, /* AGC3 TOP I2C 106 dBuV */
+ TDA18273_AGC3_TOP_I2C_107dBuV, /* AGC3 TOP I2C 107 dBuV */
+ TDA18273_AGC3_TOP_I2C_Max
+} TDA18273AGC3_TOP_I2C_t, *pTDA18273AGC3_TOP_I2C_t;
+
+typedef enum _TDA18273AGC4_TOP_DN_UP_t {
+ TDA18273_AGC4_TOP_DN_UP_d105_u99dBuV = 0, /* AGC4 TOP DN/UP down 105 up 99 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP down 105 up 100 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d105_u101dBuV, /* AGC4 TOP DN/UP down 105 up 101 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d107_u101dBuV, /* AGC4 TOP DN/UP down 107 up 101 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d107_u102dBuV, /* AGC4 TOP DN/UP down 107 up 102 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d107_u103dBuV, /* AGC4 TOP DN/UP down 107 up 103 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d108_u102dBuV, /* AGC4 TOP DN/UP down 108 up 102 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d109_u103dBuV, /* AGC4 TOP DN/UP down 109 up 103 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d109_u104dBuV, /* AGC4 TOP DN/UP down 109 up 104 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d109_u105dBuV, /* AGC4 TOP DN/UP down 109 up 105 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d110_u104dBuV, /* AGC4 TOP DN/UP down 110 up 104 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP down 110 up 105 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d110_u106dBuV, /* AGC4 TOP DN/UP down 110 up 106 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d112_u106dBuV, /* AGC4 TOP DN/UP down 112 up 106 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d112_u107dBuV, /* AGC4 TOP DN/UP down 112 up 107 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_d112_u108dBuV, /* AGC4 TOP DN/UP down 112 up 108 dBuV */
+ TDA18273_AGC4_TOP_DN_UP_Max
+} TDA18273AGC4_TOP_DN_UP_t, *pTDA18273AGC4_TOP_DN_UP_t;
+
+typedef enum _TDA18273AGC5_TOP_DN_UP_t {
+ TDA18273_AGC5_TOP_DN_UP_d105_u99dBuV = 0, /* AGC5 TOP DN/UP down 105 up 99 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP down 105 up 100 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d105_u101dBuV, /* AGC5 TOP DN/UP down 105 up 101 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d107_u101dBuV, /* AGC5 TOP DN/UP down 107 up 101 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d107_u102dBuV, /* AGC5 TOP DN/UP down 107 up 102 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d107_u103dBuV, /* AGC5 TOP DN/UP down 107 up 103 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d108_u102dBuV, /* AGC5 TOP DN/UP down 108 up 102 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d109_u103dBuV, /* AGC5 TOP DN/UP down 109 up 103 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d109_u104dBuV, /* AGC5 TOP DN/UP down 109 up 104 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d109_u105dBuV, /* AGC5 TOP DN/UP down 109 up 105 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d110_u104dBuV, /* AGC5 TOP DN/UP down 108 up 104 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP down 108 up 105 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d110_u106dBuV, /* AGC5 TOP DN/UP down 108 up 106 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d112_u106dBuV, /* AGC5 TOP DN/UP down 108 up 106 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d112_u107dBuV, /* AGC5 TOP DN/UP down 108 up 107 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_d112_u108dBuV, /* AGC5 TOP DN/UP down 108 up 108 dBuV */
+ TDA18273_AGC5_TOP_DN_UP_Max
+} TDA18273AGC5_TOP_DN_UP_t, *pTDA18273AGC5_TOP_DN_UP_t;
+
+typedef enum _TDA18273AGC3_Top_Adapt_Algorithm {
+ TDA18273_Top_Adapt_NO_TOP_ADAPT = 0, /* NO TOP ADAPT */
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* TOP ADAPT35 */
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* TOP ADAPT34 */
+ TDA18273_Top_Adapt_Max
+} TDA18273AGC3_Top_Adapt_Algorithm, *pTDA18273AGC3_Top_Adapt_Algorithm;
+
+typedef enum _TDA18273AGC3_Adapt_TOP_t {
+ TDA18273_AGC3_Adapt_TOP_0_Step = 0, /* same level as AGC3 TOP */
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* 1 level below AGC3 TOP */
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* 2 level below AGC3 TOP */
+ TDA18273_AGC3_Adapt_TOP_3_Step /* 3 level below AGC3 TOP */
+} TDA18273AGC3_Adapt_TOP_t, *pTDA18273AGC3_Adapt_TOP_t;
+
+typedef enum _TDA18273AGC_Overload_TOP_t {
+ TDA18273_AGC_Overload_TOP_plus_9_plus_3_5_min_3_5 = 0, /* +9/+3.5/-3.5 */
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_4_5, /* +9/+4.5/-4.5 */
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* +9/+4.5/-3.5 */
+ TDA18273_AGC_Overload_TOP_plus_9_plus_6_min_4_5, /* +9/+6/-4.5 */
+ TDA18273_AGC_Overload_TOP_plus_9_plus_6_min_6, /* +9/+6/-6 */
+ TDA18273_AGC_Overload_TOP_plus_9_plus_6_min_9, /* +9/+6/-9 */
+ TDA18273_AGC_Overload_TOP_plus_9_plus_7_5_min_9, /* +9/+7.5/-9 */
+ TDA18273_AGC_Overload_TOP_plus_12_plus_7_5_min_9 /* +12/+7.5/-9 */
+} TDA18273AGC_Overload_TOP_t, *pTDA18273AGC_Overload_TOP_t;
+
+typedef enum _TDA18273TH_AGC_Adapt34_t {
+ TDA18273_TH_AGC_Adapt34_2dB = 0, /* Adapt TOP 34 Gain Threshold 2dB */
+ TDA18273_TH_AGC_Adapt34_5dB /* Adapt TOP 34 Gain Threshold 5dB */
+} TDA18273TH_AGC_Adapt34_t, *pTDA18273TH_AGC_Adapt34_t;
+
+typedef enum _TDA18273RF_Atten_3dB_t {
+ TDA18273_RF_Atten_3dB_Disabled = 0, /* RF_Atten_3dB Disabled */
+ TDA18273_RF_Atten_3dB_Enabled, /* RF_Atten_3dB Enabled */
+ TDA18273_RF_Atten_3dB_Max
+} TDA18273RF_Atten_3dB_t, *pTDA18273RF_Atten_3dB_t;
+
+typedef enum _TDA18273IF_Output_Level_t {
+ TDA18273_IF_Output_Level_2Vpp_0_30dB = 0, /* 2Vpp 0 - 30dB */
+ TDA18273_IF_Output_Level_1_25Vpp_min_4_26dB, /* 1.25Vpp -4 - 26dB */
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* 1Vpp -6 - 24dB */
+ TDA18273_IF_Output_Level_0_8Vpp_min_8_22dB, /* 0.8Vpp -8 - 22dB */
+ TDA18273_IF_Output_Level_0_85Vpp_min_7_5_22_5dB, /* 0.85Vpp -7.5 - 22.5dB */
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* 0.7Vpp -9 - 21dB */
+ TDA18273_IF_Output_Level_0_6Vpp_min_10_3_19_7dB, /* 0.6Vpp -10.3 - 19.7dB */
+ TDA18273_IF_Output_Level_0_5Vpp_min_12_18dB, /* 0.5Vpp -12 - 18dB */
+ TDA18273_IF_Output_Level_Max
+} TDA18273IF_Output_Level_t, *pTDA18273IF_Output_Level_t;
+
+typedef enum _TDA18273S2D_Gain_t {
+ TDA18273_S2D_Gain_3dB = 0, /* 3dB */
+ TDA18273_S2D_Gain_6dB, /* 6dB */
+ TDA18273_S2D_Gain_9dB, /* 9dB */
+ TDA18273_S2D_Gain_Max
+} TDA18273S2D_Gain_t, *pTDA18273S2D_Gain_t;
+
+typedef enum _TDA18273Negative_Modulation_t {
+ TDA18273_Negative_Modulation_Disabled = 0,
+ TDA18273_Negative_Modulation_Enabled,
+ TDA18273_Negative_Modulation_Max
+} TDA18273Negative_Modulation_t, *pTDA18273Negative_Modulation_t;
+
+typedef enum _TDA18273AGCK_Steps_t {
+ TDA18273_AGCK_Steps_0_2dB = 0, /* 0.2dB */
+ TDA18273_AGCK_Steps_0_4dB, /* 0.4dB */
+ TDA18273_AGCK_Steps_0_6dB, /* 0.6dB */
+ TDA18273_AGCK_Steps_0_8dB, /* 0.8dB */
+ TDA18273_AGCK_Steps_Max
+} TDA18273AGCK_Steps_t, *pTDA18273AGCK_Steps_t;
+
+typedef enum _TDA18273AGCK_Time_Constant_t {
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE = 0, /* 1 Step Each VSYNC Rising Edge */
+ TDA18273_AGCK_Time_Constant_0_512ms, /* 0.512ms */
+ TDA18273_AGCK_Time_Constant_8_192ms, /* 8.192ms */
+ TDA18273_AGCK_Time_Constant_32_768ms, /* 32.768ms */
+ TDA18273_AGCK_Time_Constant_Max
+} TDA18273AGCK_Time_Constant_t, *pTDA18273AGCK_Time_Constant_t;
+
+typedef enum _TDA18273AGC5_HPF_t {
+ TDA18273_AGC5_HPF_Disabled = 0, /* AGC5 HPF Disabled */
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF Enabled */
+ TDA18273_AGC5_HPF_Max
+} TDA18273AGC5_HPF_t, *pTDA18273AGC5_HPF_t;
+
+typedef enum _TDA18273Pulse_Shaper_Disable_t {
+ TDA18273_Pulse_Shaper_Disable_Disabled = 0,
+ TDA18273_Pulse_Shaper_Disable_Enabled,
+ TDA18273_Pulse_Shaper_Disable_Max
+} TDA18273Pulse_Shaper_Disable_t, *pTDA18273Pulse_Shaper_Disable_t;
+
+typedef enum _TDA18273VHF_III_Mode_t {
+ TDA18273_VHF_III_Mode_Disabled = 0, /* VHF_III_Mode Disabled */
+ TDA18273_VHF_III_Mode_Enabled, /* VHF_III_Mode Enabled */
+ TDA18273_VHF_III_Mode_Max
+} TDA18273VHF_III_Mode_t, *pTDA18273VHF_III_Mode_t;
+
+typedef enum _TDA18273LO_CP_Current_t {
+ TDA18273_LO_CP_Current_Disabled = 0, /* LO CP Current Disabled */
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current Enabled */
+ TDA18273_LO_CP_Current_Max
+} TDA18273LO_CP_Current_t, *pTDA18273LO_CP_Current_t;
+
+typedef enum _TDA18273PD_Underload_t {
+ TDA18273_PD_Underload_Disabled = 0, /* PD Underload Disabled */
+ TDA18273_PD_Underload_Enabled, /* PD Underload Enabled */
+ TDA18273_PD_Underload_Max
+} TDA18273PD_Underload_t, *pTDA18273PD_Underload_t;
+
+typedef struct _TDA18273StdCoefficients
+{
+ /****************************************************************/
+ /* IF Settings */
+ /****************************************************************/
+ UInt32 IF; /* IF Frequency */
+ Int32 CF_Offset;
+
+ /****************************************************************/
+ /* IF SELECTIVITY Settings */
+ /****************************************************************/
+ TDA18273LPF_t LPF; /* LPF Cut off */
+ TDA18273LPFOffset_t LPF_Offset; /* LPF offset */
+ TDA18273DC_Notch_IF_PPF_t DC_Notch_IF_PPF; /* DC notch IF PPF */
+ TDA18273IF_HPF_t IF_HPF; /* Hi Pass */
+ TDA18273IF_Notch_t IF_Notch; /* IF notch */
+ TDA18273IFnotchToRSSI_t IFnotchToRSSI; /* IFnotchToRSSI */
+
+ /****************************************************************/
+ /* AGC TOP Settings */
+ /****************************************************************/
+ TDA18273AGC1_TOP_I2C_DN_UP_t AGC1_TOP_I2C_DN_UP; /* AGC1 TOP I2C DN/UP */
+ TDA18273AGC1_Adapt_TOP_DN_UP_t AGC1_Adapt_TOP_DN_UP; /* AGC1 Adapt TOP DN/UP */
+ TDA18273AGC1_DN_Time_Constant_t AGC1_DN_Time_Constant; /* AGC1 DN Time Constant */
+ TDA18273AGC1_Mode_t AGC1_Mode; /* AGC1 mode */
+ TDA18273Range_LNA_Adapt_t Range_LNA_Adapt; /* Range_LNA_Adapt */
+ TDA18273LNA_Adapt_RFAGC_Gv_Threshold LNA_Adapt_RFAGC_Gv_Threshold; /* LNA_Adapt_RFAGC_Gv_Threshold */
+ TDA18273AGC1_Top_Adapt_RFAGC_Gv_Threshold AGC1_Top_Adapt_RFAGC_Gv_Threshold; /* AGC1_Top_Adapt_RFAGC_Gv_Threshold */
+ TDA18273AGC2_TOP_DN_UP_t AGC2_TOP_DN_UP; /* AGC2 TOP DN/UP */
+ TDA18273AGC2_DN_Time_Constant_t AGC2_DN_Time_Constant; /* AGC2 DN Time Constant */
+ TDA18273AGC3_TOP_I2C_t AGC3_TOP_I2C_Low_Band; /* AGC3 TOP I2C Low Band */
+ TDA18273AGC3_TOP_I2C_t AGC3_TOP_I2C_High_Band; /* AGC3 TOP I2C High Band */
+ TDA18273AGC4_TOP_DN_UP_t AGC4_TOP_DN_UP; /* AGC4 TOP DN/UP */
+ TDA18273AGC5_TOP_DN_UP_t AGC5_TOP_DN_UP; /* AGC5 TOP DN/UP */
+ TDA18273AGC3_Top_Adapt_Algorithm AGC3_Top_Adapt_Algorithm; /* AGC3_Top_Adapt_Algorithm */
+ TDA18273AGC3_Adapt_TOP_t AGC3_Adapt_TOP_Low_Band; /* AGC3 Adapt TOP Low Band */
+ TDA18273AGC3_Adapt_TOP_t AGC3_Adapt_TOP_High_Band; /* AGC3 Adapt TOP High Band */
+ TDA18273AGC_Overload_TOP_t AGC_Overload_TOP; /* AGC Overload TOP */
+ TDA18273TH_AGC_Adapt34_t TH_AGC_Adapt34; /* Adapt TOP 34 Gain Threshold */
+ TDA18273RF_Atten_3dB_t RF_Atten_3dB; /* RF atten 3dB */
+ TDA18273IF_Output_Level_t IF_Output_Level; /* IF Output Level */
+ TDA18273S2D_Gain_t S2D_Gain; /* S2D gain */
+ TDA18273Negative_Modulation_t Negative_Modulation; /* Negative modulation */
+
+ /****************************************************************/
+ /* GSK Settings */
+ /****************************************************************/
+ TDA18273AGCK_Steps_t AGCK_Steps; /* Step */
+ TDA18273AGCK_Time_Constant_t AGCK_Time_Constant; /* AGCK Time Constant */
+ TDA18273AGC5_HPF_t AGC5_HPF; /* AGC5 HPF */
+ TDA18273Pulse_Shaper_Disable_t Pulse_Shaper_Disable; /* Pulse Shaper Disable */
+
+ /****************************************************************/
+ /* H3H5 Settings */
+ /****************************************************************/
+ TDA18273VHF_III_Mode_t VHF_III_Mode; /* VHF_III_Mode */
+
+ /****************************************************************/
+ /* PLL Settings */
+ /****************************************************************/
+ TDA18273LO_CP_Current_t LO_CP_Current; /* LO_CP_Current */
+
+ /****************************************************************/
+ /* MISC Settings */
+ /****************************************************************/
+ TDA18273PD_Underload_t PD_Underload; /* PD Underload */
+ UInt32 Freq_Start_LTE; /* Frequency start of high band for LTE */
+} TDA18273StdCoefficients, *pTDA18273StdCoefficients;
+
+typedef struct _TDA18273Object_t
+{
+ UInt32 uRF;
+ UInt32 uProgRF;
+ UInt32 uIF;
+ TDA18273StandardMode_t StandardMode;
+ pTDA18273StdCoefficients pStandard;
+ TDA18273StdCoefficients Std_Array[TDA18273_StandardMode_Max-1];
+} TDA18273Object_t, *pTDA18273Object_t, **ppTDA18273Object_t;
+
+/* Standard Preset Definitions: */
+#define TDA18273_INSTANCE_CUSTOM_STD_QAM_6MHZ \
+ { /* QAM 6MHz */ \
+ 3600000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_6MHz, /* LPF */ \
+ TDA18273_LPFOffset_min_4pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_1MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89wdBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_WIDE, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_NO_TOP_ADAPT, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_QAM_8MHZ \
+ { /* QAM 8MHz */ \
+ 5000000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_9MHz, /* LPF */ \
+ TDA18273_LPFOffset_min_8pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_0_85MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89wdBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_WIDE, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_NO_TOP_ADAPT, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ATSC_6MHZ \
+ { /* ATSC */ \
+ 3250000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_6MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_0_4MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d100_u94dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_104dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_104dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d112_u107dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d112_u107dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_3_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_3_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_6Vpp_min_10_3_19_7dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_3dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 662000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ISDBT_6MHZ \
+ { /* ISDBT */ \
+ 3250000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_6MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_0_4MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_6Vpp_min_10_3_19_7dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_DVBT_1_7MHZ \
+ { /* DVB-T/T2 1.7MHz */ \
+ 850000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_1_5MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_4_094ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_2_047ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_94dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Enabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_DVBT_6MHZ \
+ { /* DVB-T/T2 6MHz */ \
+ 3250000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_6MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_0_4MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_4_094ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_2_047ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_94dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Enabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_DVBT_7MHZ \
+ { /* DVB-T/T2 7MHz */ \
+ 3500000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_7MHz, /* LPF */ \
+ TDA18273_LPFOffset_min_8pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_4_094ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_2_047ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_94dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Enabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_DVBT_8MHZ \
+ { /* DVB-T/T2 8MHz */ \
+ 4000000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_4_094ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_2_047ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_94dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Enabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_DVBT_10MHZ \
+ { /* DVB-T/T2 10MHz */ \
+ 5000000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_9MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_DMBT_8MHZ \
+ { /* DMB-T */ \
+ 4000000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT35, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_2_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Enabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Enabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_FM_RADIO \
+ { /* FM */ \
+ 1250000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_1_5MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_0_85MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_8Vpp_min_8_22dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_MN \
+ { /* NTSC M/N */ \
+ 5400000, /* IF */ \
+ 1750000, /* CF_Offset */ \
+ TDA18273_LPF_6MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Enabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_B \
+ { /* PAL B */ \
+ 6400000, /* IF */ \
+ 2250000, /* CF_Offset */ \
+ TDA18273_LPF_7MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Enabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_GH \
+ { /* PAL G/H */ \
+ 6750000, /* IF */ \
+ 2750000, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Enabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_I \
+ { /* PAL I */ \
+ 7250000, /* IF */ \
+ 2750000, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Enabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_DK \
+ { /* SECAM D/K */ \
+ 6850000, /* IF */ \
+ 2750000, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Enabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_L \
+ { /* SECAM L */ \
+ 6750000, /* IF */ \
+ 2750000, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Enabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Disabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_6_min_9, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_LL \
+ { /* SECAM L' */ \
+ 1250000, /* IF */ \
+ -2750000, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_6_min_9, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_ANALOG_BLIND_SCANNING \
+ { /* Blind Scanning copy of PAL-I */ \
+ 7250000, /* IF */ \
+ 2750000, /* CF_Offset */ \
+ TDA18273_LPF_8MHz, /* LPF */ \
+ TDA18273_LPFOffset_0pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Disabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_Disabled, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89dBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_1_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_TOP_ADAPT, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_15_25dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_96dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d105_u100dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d105_u100dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_TOP_ADAPT34, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_1_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_0_7Vpp_min_9_21dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_1_STEP_EACH_VSYNC_RISING_EDGE, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Enabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+#define TDA18273_INSTANCE_CUSTOM_STD_SCANXPRESS \
+ { /* ScanXpress */ \
+ 5000000, /* IF */ \
+ 0, /* CF_Offset */ \
+ TDA18273_LPF_9MHz, /* LPF */ \
+ TDA18273_LPFOffset_min_8pc, /* LPF_Offset */ \
+ TDA18273_DC_Notch_IF_PPF_Enabled, /* DC notch IF PPF */ \
+ TDA18273_IF_HPF_0_85MHz, /* Hi Pass */ \
+ TDA18273_IF_Notch_Disabled, /* IF notch */ \
+ TDA18273_IFnotchToRSSI_Enabled, /* IF notch To RSSI */ \
+ TDA18273_AGC1_TOP_I2C_DN_UP_d95_u89wdBuV, /* AGC1 TOP I2C DN/UP */ \
+ TDA18273_AGC1_Adapt_TOP_DN_UP_0_Step, /* AGC1 Adapt TOP DN/UP */ \
+ TDA18273_AGC1_DN_Time_Constant_8_188ms, /* AGC1 DN Time Constant */ \
+ TDA18273_AGC1_Mode_LNA_ADAPT_WIDE, /* AGC1 mode */ \
+ TDA18273_Range_LNA_Adapt_20dB_11dB, /* Range LNA Adapt */ \
+ TDA18273_LNA_Adapt_RFAGC_Gv_Threshold_18_25dB, /* LNA Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC1_Top_Adapt_RFAGC_Gv_Threshold_16_75dB, /* AGC1 TOP Adapt RFAGC Gv Threshold */ \
+ TDA18273_AGC2_TOP_DN_UP_d90_u84dBuV, /* AGC2 TOP DN/UP */ \
+ TDA18273_AGC2_DN_Time_Constant_8_188ms, /* AGC2 DN Time Constant */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C Low Band */ \
+ TDA18273_AGC3_TOP_I2C_100dBuV, /* AGC3 TOP I2C High Band */ \
+ TDA18273_AGC4_TOP_DN_UP_d110_u105dBuV, /* AGC4 TOP DN/UP */ \
+ TDA18273_AGC5_TOP_DN_UP_d110_u105dBuV, /* AGC5 TOP DN/UP */ \
+ TDA18273_Top_Adapt_NO_TOP_ADAPT, /* AGC3 TOP Adapt Algorithm */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt Low Band */ \
+ TDA18273_AGC3_Adapt_TOP_0_Step, /* AGC3 Adapt High Band */ \
+ TDA18273_AGC_Overload_TOP_plus_9_plus_4_5_min_3_5, /* AGC Overload TOP */ \
+ TDA18273_TH_AGC_Adapt34_5dB, /* Adapt TOP 34 Gain Threshold */ \
+ TDA18273_RF_Atten_3dB_Disabled, /* RF Atten 3dB */ \
+ TDA18273_IF_Output_Level_1Vpp_min_6_24dB, /* IF Output Level */ \
+ TDA18273_S2D_Gain_6dB, /* S2D Gain */ \
+ TDA18273_Negative_Modulation_Disabled, /* Negative Modulation */ \
+ TDA18273_AGCK_Steps_0_2dB, /* Step */ \
+ TDA18273_AGCK_Time_Constant_32_768ms, /* AGCK Time Constant */ \
+ TDA18273_AGC5_HPF_Disabled, /* AGC5 HPF */ \
+ TDA18273_Pulse_Shaper_Disable_Enabled, /* Pulse Shaper Disable */ \
+ TDA18273_VHF_III_Mode_Disabled, /* VHF III Mode */ \
+ TDA18273_LO_CP_Current_Enabled, /* LO CP Current */ \
+ TDA18273_PD_Underload_Disabled, /* PD Underload */ \
+ 754000000 /* Frequency Start LTE */ \
+ }
+
+/* Standard Presets Aggregation: */
+#define TDA18273_INSTANCE_CUSTOM_STD_DEF \
+ { \
+ TDA18273_INSTANCE_CUSTOM_STD_QAM_6MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_QAM_8MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_ATSC_6MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_ISDBT_6MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_DVBT_1_7MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_DVBT_6MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_DVBT_7MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_DVBT_8MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_DVBT_10MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_DMBT_8MHZ, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_FM_RADIO, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_MN, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_B, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_GH, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_I, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_DK, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_L, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_LL, \
+ TDA18273_INSTANCE_CUSTOM_STD_ANALOG_BLIND_SCANNING, \
+ TDA18273_INSTANCE_CUSTOM_STD_SCANXPRESS \
+ }
+
+#endif /* __TDA18273_PRIV */