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.
3687 lines
189 KiB
3687 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 = ®, .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 */
|
|
|