[03/12] stv0367dd: Support for STV 0367 DVB-C/T (DD) demodulator
Commit Message
Added support for the STV 0367 DVB-C/T demodulator used by recent
Digital Devices hardware. This will allow update of ddbridge driver
to support newer devices like DVBCT V6.1 DVB adapter.
Signed-off-by: Maik Broemme <mbroemme@parallels.com>
---
drivers/media/dvb-frontends/Kconfig | 9 +
drivers/media/dvb-frontends/Makefile | 1 +
drivers/media/dvb-frontends/stv0367dd.c | 2329 +++++++++++++++++
drivers/media/dvb-frontends/stv0367dd.h | 48 +
drivers/media/dvb-frontends/stv0367dd_regs.h | 3442 ++++++++++++++++++++++++++
5 files changed, 5829 insertions(+)
create mode 100644 drivers/media/dvb-frontends/stv0367dd.c
create mode 100644 drivers/media/dvb-frontends/stv0367dd.h
create mode 100644 drivers/media/dvb-frontends/stv0367dd_regs.h
Comments
Em Sun, 3 Nov 2013 01:28:50 +0100
Maik Broemme <mbroemme@parallels.com> escreveu:
> Added support for the STV 0367 DVB-C/T demodulator used by recent
> Digital Devices hardware. This will allow update of ddbridge driver
> to support newer devices like DVBCT V6.1 DVB adapter.
We have already a driver for stv0367. Please re-use it, adding there the
missing features (if any).
Regards,
Mauro
>
> Signed-off-by: Maik Broemme <mbroemme@parallels.com>
> ---
> drivers/media/dvb-frontends/Kconfig | 9 +
> drivers/media/dvb-frontends/Makefile | 1 +
> drivers/media/dvb-frontends/stv0367dd.c | 2329 +++++++++++++++++
> drivers/media/dvb-frontends/stv0367dd.h | 48 +
> drivers/media/dvb-frontends/stv0367dd_regs.h | 3442 ++++++++++++++++++++++++++
> 5 files changed, 5829 insertions(+)
> create mode 100644 drivers/media/dvb-frontends/stv0367dd.c
> create mode 100644 drivers/media/dvb-frontends/stv0367dd.h
> create mode 100644 drivers/media/dvb-frontends/stv0367dd_regs.h
>
> diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
> index 6f99eb8..7cac015 100644
> --- a/drivers/media/dvb-frontends/Kconfig
> +++ b/drivers/media/dvb-frontends/Kconfig
> @@ -56,6 +56,15 @@ config DVB_TDA18271C2DD
>
> Say Y when you want to support this tuner.
>
> +config DVB_STV0367DD
> + tristate "STV 0367 (DD)"
> + depends on DVB_CORE && I2C
> + default m if DVB_FE_CUSTOMISE
> + help
> + STV 0367 DVB-C/T demodulator (Digital Devices driver).
> +
> + Say Y when you want to support this frontend.
> +
> comment "DVB-S (satellite) frontends"
> depends on DVB_CORE
>
> diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
> index f9cb43d..de100f1 100644
> --- a/drivers/media/dvb-frontends/Makefile
> +++ b/drivers/media/dvb-frontends/Makefile
> @@ -97,6 +97,7 @@ obj-$(CONFIG_DVB_STV0367) += stv0367.o
> obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o
> obj-$(CONFIG_DVB_DRXK) += drxk.o
> obj-$(CONFIG_DVB_TDA18271C2DD) += tda18271c2dd.o
> +obj-$(CONFIG_DVB_STV0367DD) += stv0367dd.o
> obj-$(CONFIG_DVB_IT913X_FE) += it913x-fe.o
> obj-$(CONFIG_DVB_A8293) += a8293.o
> obj-$(CONFIG_DVB_TDA10071) += tda10071.o
> diff --git a/drivers/media/dvb-frontends/stv0367dd.c b/drivers/media/dvb-frontends/stv0367dd.c
> new file mode 100644
> index 0000000..37c8e2d
> --- /dev/null
> +++ b/drivers/media/dvb-frontends/stv0367dd.c
> @@ -0,0 +1,2329 @@
> +/*
> + * stv0367dd.c: STV0367 DVB-C/T demodulator driver
> + *
> + * Copyright (C) 2010-2013 Digital Devices GmbH
> + * Copyright (C) 2013 Maik Broemme <mbroemme@parallels.com>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2 only, as published by the Free Software Foundation.
> + *
> + * 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., 51 Franklin Street, Fifth Floor, Boston, MA
> + * 02110-1301, USA
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/init.h>
> +#include <linux/delay.h>
> +#include <linux/firmware.h>
> +#include <linux/i2c.h>
> +#include <linux/version.h>
> +#include <asm/div64.h>
> +
> +#include "dvb_frontend.h"
> +#include "stv0367dd.h"
> +#include "stv0367dd_regs.h"
> +
> +enum omode { OM_NONE, OM_DVBT, OM_DVBC, OM_QAM_ITU_C };
> +enum { QAM_MOD_QAM4 = 0,
> + QAM_MOD_QAM16,
> + QAM_MOD_QAM32,
> + QAM_MOD_QAM64,
> + QAM_MOD_QAM128,
> + QAM_MOD_QAM256,
> + QAM_MOD_QAM512,
> + QAM_MOD_QAM1024
> +};
> +
> +enum {QAM_SPECT_NORMAL, QAM_SPECT_INVERTED };
> +
> +enum {
> + QAM_FEC_A = 1, /* J83 Annex A */
> + QAM_FEC_B = (1<<1), /* J83 Annex B */
> + QAM_FEC_C = (1<<2) /* J83 Annex C */
> +};
> +
> +enum EDemodState { Off, QAMSet, OFDMSet, QAMStarted, OFDMStarted };
> +
> +struct stv_state {
> +#ifdef USE_API3
> + struct dvb_frontend c_frontend;
> + struct dvb_frontend t_frontend;
> +#else
> + struct dvb_frontend frontend;
> +#endif
> + fe_modulation_t modulation;
> + u32 symbol_rate;
> + u32 bandwidth;
> + struct device *dev;
> +
> + struct i2c_adapter *i2c;
> + u8 adr;
> + void *priv;
> +
> + struct mutex mutex;
> + struct mutex ctlock;
> +
> + u32 master_clock;
> + u32 adc_clock;
> + u8 ID;
> + u8 I2CRPT;
> + u32 omode;
> + u8 qam_inversion;
> +
> + s32 IF;
> +
> + s32 m_FECTimeOut;
> + s32 m_DemodTimeOut;
> + s32 m_SignalTimeOut;
> + s32 m_DemodLockTime;
> + s32 m_FFTTimeOut;
> + s32 m_TSTimeOut;
> +
> + bool m_bFirstTimeLock;
> +
> + u8 m_Save_QAM_AGC_CTL;
> +
> + enum EDemodState demod_state;
> +
> + u8 m_OFDM_FFTMode; // 0 = 2k, 1 = 8k, 2 = 4k
> + u8 m_OFDM_Modulation; //
> + u8 m_OFDM_FEC; //
> + u8 m_OFDM_Guard;
> +
> + u32 ucblocks;
> + u32 ber;
> +};
> +
> +struct init_table {
> + u16 adr;
> + u8 data;
> +};
> +
> +struct init_table base_init[] = {
> + { R367_IOCFG0, 0x80 },
> + { R367_DAC0R, 0x00 },
> + { R367_IOCFG1, 0x00 },
> + { R367_DAC1R, 0x00 },
> + { R367_IOCFG2, 0x00 },
> + { R367_SDFR, 0x00 },
> + { R367_AUX_CLK, 0x00 },
> + { R367_FREESYS1, 0x00 },
> + { R367_FREESYS2, 0x00 },
> + { R367_FREESYS3, 0x00 },
> + { R367_GPIO_CFG, 0x55 },
> + { R367_GPIO_CMD, 0x01 },
> + { R367_TSTRES, 0x00 },
> + { R367_ANACTRL, 0x00 },
> + { R367_TSTBUS, 0x00 },
> + { R367_RF_AGC2, 0x20 },
> + { R367_ANADIGCTRL, 0x0b },
> + { R367_PLLMDIV, 0x01 },
> + { R367_PLLNDIV, 0x08 },
> + { R367_PLLSETUP, 0x18 },
> + { R367_DUAL_AD12, 0x04 },
> + { R367_TSTBIST, 0x00 },
> + { 0x0000, 0x00 }
> +};
> +
> +struct init_table qam_init[] = {
> + { R367_QAM_CTRL_1, 0x06 },// Orginal 0x04
> + { R367_QAM_CTRL_2, 0x03 },
> + { R367_QAM_IT_STATUS1, 0x2b },
> + { R367_QAM_IT_STATUS2, 0x08 },
> + { R367_QAM_IT_EN1, 0x00 },
> + { R367_QAM_IT_EN2, 0x00 },
> + { R367_QAM_CTRL_STATUS, 0x04 },
> + { R367_QAM_TEST_CTL, 0x00 },
> + { R367_QAM_AGC_CTL, 0x73 },
> + { R367_QAM_AGC_IF_CFG, 0x50 },
> + { R367_QAM_AGC_RF_CFG, 0x02 },// RF Freeze
> + { R367_QAM_AGC_PWM_CFG, 0x03 },
> + { R367_QAM_AGC_PWR_REF_L, 0x5a },
> + { R367_QAM_AGC_PWR_REF_H, 0x00 },
> + { R367_QAM_AGC_RF_TH_L, 0xff },
> + { R367_QAM_AGC_RF_TH_H, 0x07 },
> + { R367_QAM_AGC_IF_LTH_L, 0x00 },
> + { R367_QAM_AGC_IF_LTH_H, 0x08 },
> + { R367_QAM_AGC_IF_HTH_L, 0xff },
> + { R367_QAM_AGC_IF_HTH_H, 0x07 },
> + { R367_QAM_AGC_PWR_RD_L, 0xa0 },
> + { R367_QAM_AGC_PWR_RD_M, 0xe9 },
> + { R367_QAM_AGC_PWR_RD_H, 0x03 },
> + { R367_QAM_AGC_PWM_IFCMD_L, 0xe4 },
> + { R367_QAM_AGC_PWM_IFCMD_H, 0x00 },
> + { R367_QAM_AGC_PWM_RFCMD_L, 0xff },
> + { R367_QAM_AGC_PWM_RFCMD_H, 0x07 },
> + { R367_QAM_IQDEM_CFG, 0x01 },
> + { R367_QAM_MIX_NCO_LL, 0x22 },
> + { R367_QAM_MIX_NCO_HL, 0x96 },
> + { R367_QAM_MIX_NCO_HH, 0x55 },
> + { R367_QAM_SRC_NCO_LL, 0xff },
> + { R367_QAM_SRC_NCO_LH, 0x0c },
> + { R367_QAM_SRC_NCO_HL, 0xf5 },
> + { R367_QAM_SRC_NCO_HH, 0x20 },
> + { R367_QAM_IQDEM_GAIN_SRC_L, 0x06 },
> + { R367_QAM_IQDEM_GAIN_SRC_H, 0x01 },
> + { R367_QAM_IQDEM_DCRM_CFG_LL, 0xfe },
> + { R367_QAM_IQDEM_DCRM_CFG_LH, 0xff },
> + { R367_QAM_IQDEM_DCRM_CFG_HL, 0x0f },
> + { R367_QAM_IQDEM_DCRM_CFG_HH, 0x00 },
> + { R367_QAM_IQDEM_ADJ_COEFF0, 0x34 },
> + { R367_QAM_IQDEM_ADJ_COEFF1, 0xae },
> + { R367_QAM_IQDEM_ADJ_COEFF2, 0x46 },
> + { R367_QAM_IQDEM_ADJ_COEFF3, 0x77 },
> + { R367_QAM_IQDEM_ADJ_COEFF4, 0x96 },
> + { R367_QAM_IQDEM_ADJ_COEFF5, 0x69 },
> + { R367_QAM_IQDEM_ADJ_COEFF6, 0xc7 },
> + { R367_QAM_IQDEM_ADJ_COEFF7, 0x01 },
> + { R367_QAM_IQDEM_ADJ_EN, 0x04 },
> + { R367_QAM_IQDEM_ADJ_AGC_REF, 0x94 },
> + { R367_QAM_ALLPASSFILT1, 0xc9 },
> + { R367_QAM_ALLPASSFILT2, 0x2d },
> + { R367_QAM_ALLPASSFILT3, 0xa3 },
> + { R367_QAM_ALLPASSFILT4, 0xfb },
> + { R367_QAM_ALLPASSFILT5, 0xf6 },
> + { R367_QAM_ALLPASSFILT6, 0x45 },
> + { R367_QAM_ALLPASSFILT7, 0x6f },
> + { R367_QAM_ALLPASSFILT8, 0x7e },
> + { R367_QAM_ALLPASSFILT9, 0x05 },
> + { R367_QAM_ALLPASSFILT10, 0x0a },
> + { R367_QAM_ALLPASSFILT11, 0x51 },
> + { R367_QAM_TRL_AGC_CFG, 0x20 },
> + { R367_QAM_TRL_LPF_CFG, 0x28 },
> + { R367_QAM_TRL_LPF_ACQ_GAIN, 0x44 },
> + { R367_QAM_TRL_LPF_TRK_GAIN, 0x22 },
> + { R367_QAM_TRL_LPF_OUT_GAIN, 0x03 },
> + { R367_QAM_TRL_LOCKDET_LTH, 0x04 },
> + { R367_QAM_TRL_LOCKDET_HTH, 0x11 },
> + { R367_QAM_TRL_LOCKDET_TRGVAL, 0x20 },
> + { R367_QAM_IQ_QAM, 0x01 },
> + { R367_QAM_FSM_STATE, 0xa0 },
> + { R367_QAM_FSM_CTL, 0x08 },
> + { R367_QAM_FSM_STS, 0x0c },
> + { R367_QAM_FSM_SNR0_HTH, 0x00 },
> + { R367_QAM_FSM_SNR1_HTH, 0x00 },
> + { R367_QAM_FSM_SNR2_HTH, 0x00 },
> + { R367_QAM_FSM_SNR0_LTH, 0x00 },
> + { R367_QAM_FSM_SNR1_LTH, 0x00 },
> + { R367_QAM_FSM_EQA1_HTH, 0x00 },
> + { R367_QAM_FSM_TEMPO, 0x32 },
> + { R367_QAM_FSM_CONFIG, 0x03 },
> + { R367_QAM_EQU_I_TESTTAP_L, 0x11 },
> + { R367_QAM_EQU_I_TESTTAP_M, 0x00 },
> + { R367_QAM_EQU_I_TESTTAP_H, 0x00 },
> + { R367_QAM_EQU_TESTAP_CFG, 0x00 },
> + { R367_QAM_EQU_Q_TESTTAP_L, 0xff },
> + { R367_QAM_EQU_Q_TESTTAP_M, 0x00 },
> + { R367_QAM_EQU_Q_TESTTAP_H, 0x00 },
> + { R367_QAM_EQU_TAP_CTRL, 0x00 },
> + { R367_QAM_EQU_CTR_CRL_CONTROL_L, 0x11 },
> + { R367_QAM_EQU_CTR_CRL_CONTROL_H, 0x05 },
> + { R367_QAM_EQU_CTR_HIPOW_L, 0x00 },
> + { R367_QAM_EQU_CTR_HIPOW_H, 0x00 },
> + { R367_QAM_EQU_I_EQU_LO, 0xef },
> + { R367_QAM_EQU_I_EQU_HI, 0x00 },
> + { R367_QAM_EQU_Q_EQU_LO, 0xee },
> + { R367_QAM_EQU_Q_EQU_HI, 0x00 },
> + { R367_QAM_EQU_MAPPER, 0xc5 },
> + { R367_QAM_EQU_SWEEP_RATE, 0x80 },
> + { R367_QAM_EQU_SNR_LO, 0x64 },
> + { R367_QAM_EQU_SNR_HI, 0x03 },
> + { R367_QAM_EQU_GAMMA_LO, 0x00 },
> + { R367_QAM_EQU_GAMMA_HI, 0x00 },
> + { R367_QAM_EQU_ERR_GAIN, 0x36 },
> + { R367_QAM_EQU_RADIUS, 0xaa },
> + { R367_QAM_EQU_FFE_MAINTAP, 0x00 },
> + { R367_QAM_EQU_FFE_LEAKAGE, 0x63 },
> + { R367_QAM_EQU_FFE_MAINTAP_POS, 0xdf },
> + { R367_QAM_EQU_GAIN_WIDE, 0x88 },
> + { R367_QAM_EQU_GAIN_NARROW, 0x41 },
> + { R367_QAM_EQU_CTR_LPF_GAIN, 0xd1 },
> + { R367_QAM_EQU_CRL_LPF_GAIN, 0xa7 },
> + { R367_QAM_EQU_GLOBAL_GAIN, 0x06 },
> + { R367_QAM_EQU_CRL_LD_SEN, 0x85 },
> + { R367_QAM_EQU_CRL_LD_VAL, 0xe2 },
> + { R367_QAM_EQU_CRL_TFR, 0x20 },
> + { R367_QAM_EQU_CRL_BISTH_LO, 0x00 },
> + { R367_QAM_EQU_CRL_BISTH_HI, 0x00 },
> + { R367_QAM_EQU_SWEEP_RANGE_LO, 0x00 },
> + { R367_QAM_EQU_SWEEP_RANGE_HI, 0x00 },
> + { R367_QAM_EQU_CRL_LIMITER, 0x40 },
> + { R367_QAM_EQU_MODULUS_MAP, 0x90 },
> + { R367_QAM_EQU_PNT_GAIN, 0xa7 },
> + { R367_QAM_FEC_AC_CTR_0, 0x16 },
> + { R367_QAM_FEC_AC_CTR_1, 0x0b },
> + { R367_QAM_FEC_AC_CTR_2, 0x88 },
> + { R367_QAM_FEC_AC_CTR_3, 0x02 },
> + { R367_QAM_FEC_STATUS, 0x12 },
> + { R367_QAM_RS_COUNTER_0, 0x7d },
> + { R367_QAM_RS_COUNTER_1, 0xd0 },
> + { R367_QAM_RS_COUNTER_2, 0x19 },
> + { R367_QAM_RS_COUNTER_3, 0x0b },
> + { R367_QAM_RS_COUNTER_4, 0xa3 },
> + { R367_QAM_RS_COUNTER_5, 0x00 },
> + { R367_QAM_BERT_0, 0x01 },
> + { R367_QAM_BERT_1, 0x25 },
> + { R367_QAM_BERT_2, 0x41 },
> + { R367_QAM_BERT_3, 0x39 },
> + { R367_QAM_OUTFORMAT_0, 0xc2 },
> + { R367_QAM_OUTFORMAT_1, 0x22 },
> + { R367_QAM_SMOOTHER_2, 0x28 },
> + { R367_QAM_TSMF_CTRL_0, 0x01 },
> + { R367_QAM_TSMF_CTRL_1, 0xc6 },
> + { R367_QAM_TSMF_CTRL_3, 0x43 },
> + { R367_QAM_TS_ON_ID_0, 0x00 },
> + { R367_QAM_TS_ON_ID_1, 0x00 },
> + { R367_QAM_TS_ON_ID_2, 0x00 },
> + { R367_QAM_TS_ON_ID_3, 0x00 },
> + { R367_QAM_RE_STATUS_0, 0x00 },
> + { R367_QAM_RE_STATUS_1, 0x00 },
> + { R367_QAM_RE_STATUS_2, 0x00 },
> + { R367_QAM_RE_STATUS_3, 0x00 },
> + { R367_QAM_TS_STATUS_0, 0x00 },
> + { R367_QAM_TS_STATUS_1, 0x00 },
> + { R367_QAM_TS_STATUS_2, 0xa0 },
> + { R367_QAM_TS_STATUS_3, 0x00 },
> + { R367_QAM_T_O_ID_0, 0x00 },
> + { R367_QAM_T_O_ID_1, 0x00 },
> + { R367_QAM_T_O_ID_2, 0x00 },
> + { R367_QAM_T_O_ID_3, 0x00 },
> + { 0x0000, 0x00 } // EOT
> +};
> +
> +struct init_table ofdm_init[] = {
> + //{R367_OFDM_ID ,0x60},
> + //{R367_OFDM_I2CRPT ,0x22},
> + //{R367_OFDM_TOPCTRL ,0x02},
> + //{R367_OFDM_IOCFG0 ,0x40},
> + //{R367_OFDM_DAC0R ,0x00},
> + //{R367_OFDM_IOCFG1 ,0x00},
> + //{R367_OFDM_DAC1R ,0x00},
> + //{R367_OFDM_IOCFG2 ,0x62},
> + //{R367_OFDM_SDFR ,0x00},
> + //{R367_OFDM_STATUS ,0xf8},
> + //{R367_OFDM_AUX_CLK ,0x0a},
> + //{R367_OFDM_FREESYS1 ,0x00},
> + //{R367_OFDM_FREESYS2 ,0x00},
> + //{R367_OFDM_FREESYS3 ,0x00},
> + //{R367_OFDM_GPIO_CFG ,0x55},
> + //{R367_OFDM_GPIO_CMD ,0x00},
> + {R367_OFDM_AGC2MAX ,0xff},
> + {R367_OFDM_AGC2MIN ,0x00},
> + {R367_OFDM_AGC1MAX ,0xff},
> + {R367_OFDM_AGC1MIN ,0x00},
> + {R367_OFDM_AGCR ,0xbc},
> + {R367_OFDM_AGC2TH ,0x00},
> + //{R367_OFDM_AGC12C ,0x01}, //Note: This defines AGC pins, also needed for QAM
> + {R367_OFDM_AGCCTRL1 ,0x85},
> + {R367_OFDM_AGCCTRL2 ,0x1f},
> + {R367_OFDM_AGC1VAL1 ,0x00},
> + {R367_OFDM_AGC1VAL2 ,0x00},
> + {R367_OFDM_AGC2VAL1 ,0x6f},
> + {R367_OFDM_AGC2VAL2 ,0x05},
> + {R367_OFDM_AGC2PGA ,0x00},
> + {R367_OFDM_OVF_RATE1 ,0x00},
> + {R367_OFDM_OVF_RATE2 ,0x00},
> + {R367_OFDM_GAIN_SRC1 ,0x2b},
> + {R367_OFDM_GAIN_SRC2 ,0x04},
> + {R367_OFDM_INC_DEROT1 ,0x55},
> + {R367_OFDM_INC_DEROT2 ,0x55},
> + {R367_OFDM_PPM_CPAMP_DIR ,0x2c},
> + {R367_OFDM_PPM_CPAMP_INV ,0x00},
> + {R367_OFDM_FREESTFE_1 ,0x00},
> + {R367_OFDM_FREESTFE_2 ,0x1c},
> + {R367_OFDM_DCOFFSET ,0x00},
> + {R367_OFDM_EN_PROCESS ,0x05},
> + {R367_OFDM_SDI_SMOOTHER ,0x80},
> + {R367_OFDM_FE_LOOP_OPEN ,0x1c},
> + {R367_OFDM_FREQOFF1 ,0x00},
> + {R367_OFDM_FREQOFF2 ,0x00},
> + {R367_OFDM_FREQOFF3 ,0x00},
> + {R367_OFDM_TIMOFF1 ,0x00},
> + {R367_OFDM_TIMOFF2 ,0x00},
> + {R367_OFDM_EPQ ,0x02},
> + {R367_OFDM_EPQAUTO ,0x01},
> + {R367_OFDM_SYR_UPDATE ,0xf5},
> + {R367_OFDM_CHPFREE ,0x00},
> + {R367_OFDM_PPM_STATE_MAC ,0x23},
> + {R367_OFDM_INR_THRESHOLD ,0xff},
> + {R367_OFDM_EPQ_TPS_ID_CELL ,0xf9},
> + {R367_OFDM_EPQ_CFG ,0x00},
> + {R367_OFDM_EPQ_STATUS ,0x01},
> + {R367_OFDM_AUTORELOCK ,0x81},
> + {R367_OFDM_BER_THR_VMSB ,0x00},
> + {R367_OFDM_BER_THR_MSB ,0x00},
> + {R367_OFDM_BER_THR_LSB ,0x00},
> + {R367_OFDM_CCD ,0x83},
> + {R367_OFDM_SPECTR_CFG ,0x00},
> + {R367_OFDM_CHC_DUMMY ,0x18},
> + {R367_OFDM_INC_CTL ,0x88},
> + {R367_OFDM_INCTHRES_COR1 ,0xb4},
> + {R367_OFDM_INCTHRES_COR2 ,0x96},
> + {R367_OFDM_INCTHRES_DET1 ,0x0e},
> + {R367_OFDM_INCTHRES_DET2 ,0x11},
> + {R367_OFDM_IIR_CELLNB ,0x8d},
> + {R367_OFDM_IIRCX_COEFF1_MSB ,0x00},
> + {R367_OFDM_IIRCX_COEFF1_LSB ,0x00},
> + {R367_OFDM_IIRCX_COEFF2_MSB ,0x09},
> + {R367_OFDM_IIRCX_COEFF2_LSB ,0x18},
> + {R367_OFDM_IIRCX_COEFF3_MSB ,0x14},
> + {R367_OFDM_IIRCX_COEFF3_LSB ,0x9c},
> + {R367_OFDM_IIRCX_COEFF4_MSB ,0x00},
> + {R367_OFDM_IIRCX_COEFF4_LSB ,0x00},
> + {R367_OFDM_IIRCX_COEFF5_MSB ,0x36},
> + {R367_OFDM_IIRCX_COEFF5_LSB ,0x42},
> + {R367_OFDM_FEPATH_CFG ,0x00},
> + {R367_OFDM_PMC1_FUNC ,0x65},
> + {R367_OFDM_PMC1_FOR ,0x00},
> + {R367_OFDM_PMC2_FUNC ,0x00},
> + {R367_OFDM_STATUS_ERR_DA ,0xe0},
> + {R367_OFDM_DIG_AGC_R ,0xfe},
> + {R367_OFDM_COMAGC_TARMSB ,0x0b},
> + {R367_OFDM_COM_AGC_TAR_ENMODE ,0x41},
> + {R367_OFDM_COM_AGC_CFG ,0x3e},
> + {R367_OFDM_COM_AGC_GAIN1 ,0x39},
> + {R367_OFDM_AUT_AGC_TARGETMSB ,0x0b},
> + {R367_OFDM_LOCK_DET_MSB ,0x01},
> + {R367_OFDM_AGCTAR_LOCK_LSBS ,0x40},
> + {R367_OFDM_AUT_GAIN_EN ,0xf4},
> + {R367_OFDM_AUT_CFG ,0xf0},
> + {R367_OFDM_LOCKN ,0x23},
> + {R367_OFDM_INT_X_3 ,0x00},
> + {R367_OFDM_INT_X_2 ,0x03},
> + {R367_OFDM_INT_X_1 ,0x8d},
> + {R367_OFDM_INT_X_0 ,0xa0},
> + {R367_OFDM_MIN_ERRX_MSB ,0x00},
> + {R367_OFDM_COR_CTL ,0x00},
> + {R367_OFDM_COR_STAT ,0xf6},
> + {R367_OFDM_COR_INTEN ,0x00},
> + {R367_OFDM_COR_INTSTAT ,0x3f},
> + {R367_OFDM_COR_MODEGUARD ,0x03},
> + {R367_OFDM_AGC_CTL ,0x08},
> + {R367_OFDM_AGC_MANUAL1 ,0x00},
> + {R367_OFDM_AGC_MANUAL2 ,0x00},
> + {R367_OFDM_AGC_TARG ,0x16},
> + {R367_OFDM_AGC_GAIN1 ,0x53},
> + {R367_OFDM_AGC_GAIN2 ,0x1d},
> + {R367_OFDM_RESERVED_1 ,0x00},
> + {R367_OFDM_RESERVED_2 ,0x00},
> + {R367_OFDM_RESERVED_3 ,0x00},
> + {R367_OFDM_CAS_CTL ,0x44},
> + {R367_OFDM_CAS_FREQ ,0xb3},
> + {R367_OFDM_CAS_DAGCGAIN ,0x12},
> + {R367_OFDM_SYR_CTL ,0x04},
> + {R367_OFDM_SYR_STAT ,0x10},
> + {R367_OFDM_SYR_NCO1 ,0x00},
> + {R367_OFDM_SYR_NCO2 ,0x00},
> + {R367_OFDM_SYR_OFFSET1 ,0x00},
> + {R367_OFDM_SYR_OFFSET2 ,0x00},
> + {R367_OFDM_FFT_CTL ,0x00},
> + {R367_OFDM_SCR_CTL ,0x70},
> + {R367_OFDM_PPM_CTL1 ,0xf8},
> + {R367_OFDM_TRL_CTL ,0xac},
> + {R367_OFDM_TRL_NOMRATE1 ,0x1e},
> + {R367_OFDM_TRL_NOMRATE2 ,0x58},
> + {R367_OFDM_TRL_TIME1 ,0x1d},
> + {R367_OFDM_TRL_TIME2 ,0xfc},
> + {R367_OFDM_CRL_CTL ,0x24},
> + {R367_OFDM_CRL_FREQ1 ,0xad},
> + {R367_OFDM_CRL_FREQ2 ,0x9d},
> + {R367_OFDM_CRL_FREQ3 ,0xff},
> + {R367_OFDM_CHC_CTL ,0x01},
> + {R367_OFDM_CHC_SNR ,0xf0},
> + {R367_OFDM_BDI_CTL ,0x00},
> + {R367_OFDM_DMP_CTL ,0x00},
> + {R367_OFDM_TPS_RCVD1 ,0x30},
> + {R367_OFDM_TPS_RCVD2 ,0x02},
> + {R367_OFDM_TPS_RCVD3 ,0x01},
> + {R367_OFDM_TPS_RCVD4 ,0x00},
> + {R367_OFDM_TPS_ID_CELL1 ,0x00},
> + {R367_OFDM_TPS_ID_CELL2 ,0x00},
> + {R367_OFDM_TPS_RCVD5_SET1 ,0x02},
> + {R367_OFDM_TPS_SET2 ,0x02},
> + {R367_OFDM_TPS_SET3 ,0x01},
> + {R367_OFDM_TPS_CTL ,0x00},
> + {R367_OFDM_CTL_FFTOSNUM ,0x34},
> + {R367_OFDM_TESTSELECT ,0x09},
> + {R367_OFDM_MSC_REV ,0x0a},
> + {R367_OFDM_PIR_CTL ,0x00},
> + {R367_OFDM_SNR_CARRIER1 ,0xa1},
> + {R367_OFDM_SNR_CARRIER2 ,0x9a},
> + {R367_OFDM_PPM_CPAMP ,0x2c},
> + {R367_OFDM_TSM_AP0 ,0x00},
> + {R367_OFDM_TSM_AP1 ,0x00},
> + {R367_OFDM_TSM_AP2 ,0x00},
> + {R367_OFDM_TSM_AP3 ,0x00},
> + {R367_OFDM_TSM_AP4 ,0x00},
> + {R367_OFDM_TSM_AP5 ,0x00},
> + {R367_OFDM_TSM_AP6 ,0x00},
> + {R367_OFDM_TSM_AP7 ,0x00},
> + //{R367_OFDM_TSTRES ,0x00},
> + //{R367_OFDM_ANACTRL ,0x0D},/*caution PLL stopped, to be restarted at init!!!*/
> + //{R367_OFDM_TSTBUS ,0x00},
> + //{R367_OFDM_TSTRATE ,0x00},
> + {R367_OFDM_CONSTMODE ,0x01},
> + {R367_OFDM_CONSTCARR1 ,0x00},
> + {R367_OFDM_CONSTCARR2 ,0x00},
> + {R367_OFDM_ICONSTEL ,0x0a},
> + {R367_OFDM_QCONSTEL ,0x15},
> + {R367_OFDM_TSTBISTRES0 ,0x00},
> + {R367_OFDM_TSTBISTRES1 ,0x00},
> + {R367_OFDM_TSTBISTRES2 ,0x28},
> + {R367_OFDM_TSTBISTRES3 ,0x00},
> + //{R367_OFDM_RF_AGC1 ,0xff},
> + //{R367_OFDM_RF_AGC2 ,0x83},
> + //{R367_OFDM_ANADIGCTRL ,0x19},
> + //{R367_OFDM_PLLMDIV ,0x0c},
> + //{R367_OFDM_PLLNDIV ,0x55},
> + //{R367_OFDM_PLLSETUP ,0x18},
> + //{R367_OFDM_DUAL_AD12 ,0x00},
> + //{R367_OFDM_TSTBIST ,0x00},
> + //{R367_OFDM_PAD_COMP_CTRL ,0x00},
> + //{R367_OFDM_PAD_COMP_WR ,0x00},
> + //{R367_OFDM_PAD_COMP_RD ,0xe0},
> + {R367_OFDM_SYR_TARGET_FFTADJT_MSB ,0x00},
> + {R367_OFDM_SYR_TARGET_FFTADJT_LSB ,0x00},
> + {R367_OFDM_SYR_TARGET_CHCADJT_MSB ,0x00},
> + {R367_OFDM_SYR_TARGET_CHCADJT_LSB ,0x00},
> + {R367_OFDM_SYR_FLAG ,0x00},
> + {R367_OFDM_CRL_TARGET1 ,0x00},
> + {R367_OFDM_CRL_TARGET2 ,0x00},
> + {R367_OFDM_CRL_TARGET3 ,0x00},
> + {R367_OFDM_CRL_TARGET4 ,0x00},
> + {R367_OFDM_CRL_FLAG ,0x00},
> + {R367_OFDM_TRL_TARGET1 ,0x00},
> + {R367_OFDM_TRL_TARGET2 ,0x00},
> + {R367_OFDM_TRL_CHC ,0x00},
> + {R367_OFDM_CHC_SNR_TARG ,0x00},
> + {R367_OFDM_TOP_TRACK ,0x00},
> + {R367_OFDM_TRACKER_FREE1 ,0x00},
> + {R367_OFDM_ERROR_CRL1 ,0x00},
> + {R367_OFDM_ERROR_CRL2 ,0x00},
> + {R367_OFDM_ERROR_CRL3 ,0x00},
> + {R367_OFDM_ERROR_CRL4 ,0x00},
> + {R367_OFDM_DEC_NCO1 ,0x2c},
> + {R367_OFDM_DEC_NCO2 ,0x0f},
> + {R367_OFDM_DEC_NCO3 ,0x20},
> + {R367_OFDM_SNR ,0xf1},
> + {R367_OFDM_SYR_FFTADJ1 ,0x00},
> + {R367_OFDM_SYR_FFTADJ2 ,0x00},
> + {R367_OFDM_SYR_CHCADJ1 ,0x00},
> + {R367_OFDM_SYR_CHCADJ2 ,0x00},
> + {R367_OFDM_SYR_OFF ,0x00},
> + {R367_OFDM_PPM_OFFSET1 ,0x00},
> + {R367_OFDM_PPM_OFFSET2 ,0x03},
> + {R367_OFDM_TRACKER_FREE2 ,0x00},
> + {R367_OFDM_DEBG_LT10 ,0x00},
> + {R367_OFDM_DEBG_LT11 ,0x00},
> + {R367_OFDM_DEBG_LT12 ,0x00},
> + {R367_OFDM_DEBG_LT13 ,0x00},
> + {R367_OFDM_DEBG_LT14 ,0x00},
> + {R367_OFDM_DEBG_LT15 ,0x00},
> + {R367_OFDM_DEBG_LT16 ,0x00},
> + {R367_OFDM_DEBG_LT17 ,0x00},
> + {R367_OFDM_DEBG_LT18 ,0x00},
> + {R367_OFDM_DEBG_LT19 ,0x00},
> + {R367_OFDM_DEBG_LT1A ,0x00},
> + {R367_OFDM_DEBG_LT1B ,0x00},
> + {R367_OFDM_DEBG_LT1C ,0x00},
> + {R367_OFDM_DEBG_LT1D ,0x00},
> + {R367_OFDM_DEBG_LT1E ,0x00},
> + {R367_OFDM_DEBG_LT1F ,0x00},
> + {R367_OFDM_RCCFGH ,0x00},
> + {R367_OFDM_RCCFGM ,0x00},
> + {R367_OFDM_RCCFGL ,0x00},
> + {R367_OFDM_RCINSDELH ,0x00},
> + {R367_OFDM_RCINSDELM ,0x00},
> + {R367_OFDM_RCINSDELL ,0x00},
> + {R367_OFDM_RCSTATUS ,0x00},
> + {R367_OFDM_RCSPEED ,0x6f},
> + {R367_OFDM_RCDEBUGM ,0xe7},
> + {R367_OFDM_RCDEBUGL ,0x9b},
> + {R367_OFDM_RCOBSCFG ,0x00},
> + {R367_OFDM_RCOBSM ,0x00},
> + {R367_OFDM_RCOBSL ,0x00},
> + {R367_OFDM_RCFECSPY ,0x00},
> + {R367_OFDM_RCFSPYCFG ,0x00},
> + {R367_OFDM_RCFSPYDATA ,0x00},
> + {R367_OFDM_RCFSPYOUT ,0x00},
> + {R367_OFDM_RCFSTATUS ,0x00},
> + {R367_OFDM_RCFGOODPACK ,0x00},
> + {R367_OFDM_RCFPACKCNT ,0x00},
> + {R367_OFDM_RCFSPYMISC ,0x00},
> + {R367_OFDM_RCFBERCPT4 ,0x00},
> + {R367_OFDM_RCFBERCPT3 ,0x00},
> + {R367_OFDM_RCFBERCPT2 ,0x00},
> + {R367_OFDM_RCFBERCPT1 ,0x00},
> + {R367_OFDM_RCFBERCPT0 ,0x00},
> + {R367_OFDM_RCFBERERR2 ,0x00},
> + {R367_OFDM_RCFBERERR1 ,0x00},
> + {R367_OFDM_RCFBERERR0 ,0x00},
> + {R367_OFDM_RCFSTATESM ,0x00},
> + {R367_OFDM_RCFSTATESL ,0x00},
> + {R367_OFDM_RCFSPYBER ,0x00},
> + {R367_OFDM_RCFSPYDISTM ,0x00},
> + {R367_OFDM_RCFSPYDISTL ,0x00},
> + {R367_OFDM_RCFSPYOBS7 ,0x00},
> + {R367_OFDM_RCFSPYOBS6 ,0x00},
> + {R367_OFDM_RCFSPYOBS5 ,0x00},
> + {R367_OFDM_RCFSPYOBS4 ,0x00},
> + {R367_OFDM_RCFSPYOBS3 ,0x00},
> + {R367_OFDM_RCFSPYOBS2 ,0x00},
> + {R367_OFDM_RCFSPYOBS1 ,0x00},
> + {R367_OFDM_RCFSPYOBS0 ,0x00},
> + //{R367_OFDM_TSGENERAL ,0x00},
> + //{R367_OFDM_RC1SPEED ,0x6f},
> + //{R367_OFDM_TSGSTATUS ,0x18},
> + {R367_OFDM_FECM ,0x01},
> + {R367_OFDM_VTH12 ,0xff},
> + {R367_OFDM_VTH23 ,0xa1},
> + {R367_OFDM_VTH34 ,0x64},
> + {R367_OFDM_VTH56 ,0x40},
> + {R367_OFDM_VTH67 ,0x00},
> + {R367_OFDM_VTH78 ,0x2c},
> + {R367_OFDM_VITCURPUN ,0x12},
> + {R367_OFDM_VERROR ,0x01},
> + {R367_OFDM_PRVIT ,0x3f},
> + {R367_OFDM_VAVSRVIT ,0x00},
> + {R367_OFDM_VSTATUSVIT ,0xbd},
> + {R367_OFDM_VTHINUSE ,0xa1},
> + {R367_OFDM_KDIV12 ,0x20},
> + {R367_OFDM_KDIV23 ,0x40},
> + {R367_OFDM_KDIV34 ,0x20},
> + {R367_OFDM_KDIV56 ,0x30},
> + {R367_OFDM_KDIV67 ,0x00},
> + {R367_OFDM_KDIV78 ,0x30},
> + {R367_OFDM_SIGPOWER ,0x54},
> + {R367_OFDM_DEMAPVIT ,0x40},
> + {R367_OFDM_VITSCALE ,0x00},
> + {R367_OFDM_FFEC1PRG ,0x00},
> + {R367_OFDM_FVITCURPUN ,0x12},
> + {R367_OFDM_FVERROR ,0x01},
> + {R367_OFDM_FVSTATUSVIT ,0xbd},
> + {R367_OFDM_DEBUG_LT1 ,0x00},
> + {R367_OFDM_DEBUG_LT2 ,0x00},
> + {R367_OFDM_DEBUG_LT3 ,0x00},
> + {R367_OFDM_TSTSFMET ,0x00},
> + {R367_OFDM_SELOUT ,0x00},
> + {R367_OFDM_TSYNC ,0x00},
> + {R367_OFDM_TSTERR ,0x00},
> + {R367_OFDM_TSFSYNC ,0x00},
> + {R367_OFDM_TSTSFERR ,0x00},
> + {R367_OFDM_TSTTSSF1 ,0x01},
> + {R367_OFDM_TSTTSSF2 ,0x1f},
> + {R367_OFDM_TSTTSSF3 ,0x00},
> + {R367_OFDM_TSTTS1 ,0x00},
> + {R367_OFDM_TSTTS2 ,0x1f},
> + {R367_OFDM_TSTTS3 ,0x01},
> + {R367_OFDM_TSTTS4 ,0x00},
> + {R367_OFDM_TSTTSRC ,0x00},
> + {R367_OFDM_TSTTSRS ,0x00},
> + {R367_OFDM_TSSTATEM ,0xb0},
> + {R367_OFDM_TSSTATEL ,0x40},
> + {R367_OFDM_TSCFGH ,0x80},
> + {R367_OFDM_TSCFGM ,0x00},
> + {R367_OFDM_TSCFGL ,0x20},
> + {R367_OFDM_TSSYNC ,0x00},
> + {R367_OFDM_TSINSDELH ,0x00},
> + {R367_OFDM_TSINSDELM ,0x00},
> + {R367_OFDM_TSINSDELL ,0x00},
> + {R367_OFDM_TSDIVN ,0x03},
> + {R367_OFDM_TSDIVPM ,0x00},
> + {R367_OFDM_TSDIVPL ,0x00},
> + {R367_OFDM_TSDIVQM ,0x00},
> + {R367_OFDM_TSDIVQL ,0x00},
> + {R367_OFDM_TSDILSTKM ,0x00},
> + {R367_OFDM_TSDILSTKL ,0x00},
> + {R367_OFDM_TSSPEED ,0x6f},
> + {R367_OFDM_TSSTATUS ,0x81},
> + {R367_OFDM_TSSTATUS2 ,0x6a},
> + {R367_OFDM_TSBITRATEM ,0x0f},
> + {R367_OFDM_TSBITRATEL ,0xc6},
> + {R367_OFDM_TSPACKLENM ,0x00},
> + {R367_OFDM_TSPACKLENL ,0xfc},
> + {R367_OFDM_TSBLOCLENM ,0x0a},
> + {R367_OFDM_TSBLOCLENL ,0x80},
> + {R367_OFDM_TSDLYH ,0x90},
> + {R367_OFDM_TSDLYM ,0x68},
> + {R367_OFDM_TSDLYL ,0x01},
> + {R367_OFDM_TSNPDAV ,0x00},
> + {R367_OFDM_TSBUFSTATH ,0x00},
> + {R367_OFDM_TSBUFSTATM ,0x00},
> + {R367_OFDM_TSBUFSTATL ,0x00},
> + {R367_OFDM_TSDEBUGM ,0xcf},
> + {R367_OFDM_TSDEBUGL ,0x1e},
> + {R367_OFDM_TSDLYSETH ,0x00},
> + {R367_OFDM_TSDLYSETM ,0x68},
> + {R367_OFDM_TSDLYSETL ,0x00},
> + {R367_OFDM_TSOBSCFG ,0x00},
> + {R367_OFDM_TSOBSM ,0x47},
> + {R367_OFDM_TSOBSL ,0x1f},
> + {R367_OFDM_ERRCTRL1 ,0x95},
> + {R367_OFDM_ERRCNT1H ,0x80},
> + {R367_OFDM_ERRCNT1M ,0x00},
> + {R367_OFDM_ERRCNT1L ,0x00},
> + {R367_OFDM_ERRCTRL2 ,0x95},
> + {R367_OFDM_ERRCNT2H ,0x00},
> + {R367_OFDM_ERRCNT2M ,0x00},
> + {R367_OFDM_ERRCNT2L ,0x00},
> + {R367_OFDM_FECSPY ,0x88},
> + {R367_OFDM_FSPYCFG ,0x2c},
> + {R367_OFDM_FSPYDATA ,0x3a},
> + {R367_OFDM_FSPYOUT ,0x06},
> + {R367_OFDM_FSTATUS ,0x61},
> + {R367_OFDM_FGOODPACK ,0xff},
> + {R367_OFDM_FPACKCNT ,0xff},
> + {R367_OFDM_FSPYMISC ,0x66},
> + {R367_OFDM_FBERCPT4 ,0x00},
> + {R367_OFDM_FBERCPT3 ,0x00},
> + {R367_OFDM_FBERCPT2 ,0x36},
> + {R367_OFDM_FBERCPT1 ,0x36},
> + {R367_OFDM_FBERCPT0 ,0x14},
> + {R367_OFDM_FBERERR2 ,0x00},
> + {R367_OFDM_FBERERR1 ,0x03},
> + {R367_OFDM_FBERERR0 ,0x28},
> + {R367_OFDM_FSTATESM ,0x00},
> + {R367_OFDM_FSTATESL ,0x02},
> + {R367_OFDM_FSPYBER ,0x00},
> + {R367_OFDM_FSPYDISTM ,0x01},
> + {R367_OFDM_FSPYDISTL ,0x9f},
> + {R367_OFDM_FSPYOBS7 ,0xc9},
> + {R367_OFDM_FSPYOBS6 ,0x99},
> + {R367_OFDM_FSPYOBS5 ,0x08},
> + {R367_OFDM_FSPYOBS4 ,0xec},
> + {R367_OFDM_FSPYOBS3 ,0x01},
> + {R367_OFDM_FSPYOBS2 ,0x0f},
> + {R367_OFDM_FSPYOBS1 ,0xf5},
> + {R367_OFDM_FSPYOBS0 ,0x08},
> + {R367_OFDM_SFDEMAP ,0x40},
> + {R367_OFDM_SFERROR ,0x00},
> + {R367_OFDM_SFAVSR ,0x30},
> + {R367_OFDM_SFECSTATUS ,0xcc},
> + {R367_OFDM_SFKDIV12 ,0x20},
> + {R367_OFDM_SFKDIV23 ,0x40},
> + {R367_OFDM_SFKDIV34 ,0x20},
> + {R367_OFDM_SFKDIV56 ,0x20},
> + {R367_OFDM_SFKDIV67 ,0x00},
> + {R367_OFDM_SFKDIV78 ,0x20},
> + {R367_OFDM_SFDILSTKM ,0x00},
> + {R367_OFDM_SFDILSTKL ,0x00},
> + {R367_OFDM_SFSTATUS ,0xb5},
> + {R367_OFDM_SFDLYH ,0x90},
> + {R367_OFDM_SFDLYM ,0x60},
> + {R367_OFDM_SFDLYL ,0x01},
> + {R367_OFDM_SFDLYSETH ,0xc0},
> + {R367_OFDM_SFDLYSETM ,0x60},
> + {R367_OFDM_SFDLYSETL ,0x00},
> + {R367_OFDM_SFOBSCFG ,0x00},
> + {R367_OFDM_SFOBSM ,0x47},
> + {R367_OFDM_SFOBSL ,0x05},
> + {R367_OFDM_SFECINFO ,0x40},
> + {R367_OFDM_SFERRCTRL ,0x74},
> + {R367_OFDM_SFERRCNTH ,0x80},
> + {R367_OFDM_SFERRCNTM ,0x00},
> + {R367_OFDM_SFERRCNTL ,0x00},
> + {R367_OFDM_SYMBRATEM ,0x2f},
> + {R367_OFDM_SYMBRATEL ,0x50},
> + {R367_OFDM_SYMBSTATUS ,0x7f},
> + {R367_OFDM_SYMBCFG ,0x00},
> + {R367_OFDM_SYMBFIFOM ,0xf4},
> + {R367_OFDM_SYMBFIFOL ,0x0d},
> + {R367_OFDM_SYMBOFFSM ,0xf0},
> + {R367_OFDM_SYMBOFFSL ,0x2d},
> + //{R367_OFDM_DEBUG_LT4 ,0x00},
> + //{R367_OFDM_DEBUG_LT5 ,0x00},
> + //{R367_OFDM_DEBUG_LT6 ,0x00},
> + //{R367_OFDM_DEBUG_LT7 ,0x00},
> + //{R367_OFDM_DEBUG_LT8 ,0x00},
> + //{R367_OFDM_DEBUG_LT9 ,0x00},
> + { 0x0000, 0x00 } // EOT
> +};
> +
> +static inline u32 MulDiv32(u32 a, u32 b, u32 c)
> +{
> + u64 tmp64;
> +
> + tmp64 = (u64)a * (u64)b;
> + do_div(tmp64, c);
> +
> + return (u32) tmp64;
> +}
> +
> +static int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len)
> +{
> + struct i2c_msg msg =
> + {.addr = adr, .flags = 0, .buf = data, .len = len};
> +
> + if (i2c_transfer(adap, &msg, 1) != 1) {
> + printk("stv0367: i2c_write error\n");
> + return -1;
> + }
> + return 0;
> +}
> +
> +#if 0
> +static int i2c_read(struct i2c_adapter *adap,
> + u8 adr, u8 *msg, int len, u8 *answ, int alen)
> +{
> + struct i2c_msg msgs[2] = { { .addr = adr, .flags = 0,
> + .buf = msg, .len = len},
> + { .addr = adr, .flags = I2C_M_RD,
> + .buf = answ, .len = alen } };
> + if (i2c_transfer(adap, msgs, 2) != 2) {
> + printk("stv0367: i2c_read error\n");
> + return -1;
> + }
> + return 0;
> +}
> +#endif
> +
> +static int writereg(struct stv_state *state, u16 reg, u8 dat)
> +{
> + u8 mm[3] = { (reg >> 8), reg & 0xff, dat };
> +
> + return i2c_write(state->i2c, state->adr, mm, 3);
> +}
> +
> +static int readreg(struct stv_state *state, u16 reg, u8 *val)
> +{
> + u8 msg[2] = {reg >> 8, reg & 0xff};
> + struct i2c_msg msgs[2] = {{.addr = state->adr, .flags = 0,
> + .buf = msg, .len = 2},
> + {.addr = state->adr, .flags = I2C_M_RD,
> + .buf = val, .len = 1}};
> + return (i2c_transfer(state->i2c, msgs, 2) == 2) ? 0 : -1;
> +}
> +
> +static int readregs(struct stv_state *state, u16 reg, u8 *val, int count)
> +{
> + u8 msg[2] = {reg >> 8, reg & 0xff};
> + struct i2c_msg msgs[2] = {{.addr = state->adr, .flags = 0,
> + .buf = msg, .len = 2},
> + {.addr = state->adr, .flags = I2C_M_RD,
> + .buf = val, .len = count}};
> + return (i2c_transfer(state->i2c, msgs, 2) == 2) ? 0 : -1;
> +}
> +
> +static int write_init_table(struct stv_state *state, struct init_table *tab)
> +{
> + while (1) {
> + if (!tab->adr)
> + break;
> + if (writereg(state, tab->adr, tab->data) < 0)
> + return -1;
> + tab++;
> + }
> + return 0;
> +}
> +
> +static int qam_set_modulation(struct stv_state *state)
> +{
> + int stat = 0;
> +
> + switch(state->modulation) {
> + case QAM_16:
> + writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM16 );
> + writereg(state, R367_QAM_AGC_PWR_REF_L,0x64); /* Set analog AGC reference */
> + writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x00); /* Set digital AGC reference */
> + writereg(state, R367_QAM_FSM_STATE,0x90);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
> + writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x95);
> + writereg(state, R367_QAM_EQU_CRL_LIMITER,0x40);
> + writereg(state, R367_QAM_EQU_PNT_GAIN,0x8a);
> + break;
> + case QAM_32:
> + writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM32 );
> + writereg(state, R367_QAM_AGC_PWR_REF_L,0x6e); /* Set analog AGC reference */
> + writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x00); /* Set digital AGC reference */
> + writereg(state, R367_QAM_FSM_STATE,0xb0);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xb7);
> + writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x9d);
> + writereg(state, R367_QAM_EQU_CRL_LIMITER,0x7f);
> + writereg(state, R367_QAM_EQU_PNT_GAIN,0xa7);
> + break;
> + case QAM_64:
> + writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM64 );
> + writereg(state, R367_QAM_AGC_PWR_REF_L,0x5a); /* Set analog AGC reference */
> + writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x82); /* Set digital AGC reference */
> + if(state->symbol_rate>4500000)
> + {
> + writereg(state, R367_QAM_FSM_STATE,0xb0);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa5);
> + }
> + else if(state->symbol_rate>2500000) // 25000000
> + {
> + writereg(state, R367_QAM_FSM_STATE,0xa0);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa6);
> + }
> + else
> + {
> + writereg(state, R367_QAM_FSM_STATE,0xa0);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xd1);
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
> + }
> + writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x95);
> + writereg(state, R367_QAM_EQU_CRL_LIMITER,0x40);
> + writereg(state, R367_QAM_EQU_PNT_GAIN,0x99);
> + break;
> + case QAM_128:
> + writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM128 );
> + writereg(state, R367_QAM_AGC_PWR_REF_L,0x76); /* Set analog AGC reference */
> + writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x00); /* Set digital AGC reference */
> + writereg(state, R367_QAM_FSM_STATE,0x90);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xb1);
> + if(state->symbol_rate>4500000) // 45000000
> + {
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
> + }
> + else if(state->symbol_rate>2500000) // 25000000
> + {
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa6);
> + }
> + else
> + {
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0x97);
> + }
> + writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x8e);
> + writereg(state, R367_QAM_EQU_CRL_LIMITER,0x7f);
> + writereg(state, R367_QAM_EQU_PNT_GAIN,0xa7);
> + break;
> + case QAM_256:
> + writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM256 );
> + writereg(state, R367_QAM_AGC_PWR_REF_L,0x5a); /* Set analog AGC reference */
> + writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x94); /* Set digital AGC reference */
> + writereg(state, R367_QAM_FSM_STATE,0xa0);
> + if(state->symbol_rate>4500000) // 45000000
> + {
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
> + }
> + else if(state->symbol_rate>2500000) // 25000000
> + {
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
> + }
> + else
> + {
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xd1);
> + }
> + writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
> + writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x85);
> + writereg(state, R367_QAM_EQU_CRL_LIMITER,0x40);
> + writereg(state, R367_QAM_EQU_PNT_GAIN,0xa7);
> + break;
> + default:
> + stat = -EINVAL;
> + break;
> + }
> + return stat;
> +}
> +
> +
> +static int QAM_SetSymbolRate(struct stv_state *state)
> +{
> + int status = 0;
> + u32 sr = state->symbol_rate;
> + u32 Corr = 0;
> + u32 Temp, Temp1, AdpClk;
> +
> + switch(state->modulation) {
> + default:
> + case QAM_16: Corr = 1032; break;
> + case QAM_32: Corr = 954; break;
> + case QAM_64: Corr = 983; break;
> + case QAM_128: Corr = 957; break;
> + case QAM_256: Corr = 948; break;
> + }
> +
> + // Transfer ration
> + Temp = (256*sr) / state->adc_clock;
> + writereg(state, R367_QAM_EQU_CRL_TFR,(Temp));
> +
> + /* Symbol rate and SRC gain calculation */
> + AdpClk = (state->master_clock) / 2000; /* TRL works at half the system clock */
> +
> + Temp = state->symbol_rate;
> + Temp1 = sr;
> +
> + if(sr < 2097152) /* 2097152 = 2^21 */
> + {
> + Temp = ((((sr * 2048) / AdpClk) * 16384 ) / 125 ) * 8;
> + Temp1 = (((((sr * 2048) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 10000000;
> + }
> + else if(sr < 4194304) /* 4194304 = 2**22 */
> + {
> + Temp = ((((sr * 1024) / AdpClk) * 16384 ) / 125 ) * 16;
> + Temp1 = (((((sr * 1024) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 5000000;
> + }
> + else if(sr < 8388608) /* 8388608 = 2**23 */
> + {
> + Temp = ((((sr * 512) / AdpClk) * 16384 ) / 125 ) * 32;
> + Temp1 = (((((sr * 512) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 2500000;
> + }
> + else
> + {
> + Temp = ((((sr * 256) / AdpClk) * 16384 ) / 125 ) * 64;
> + Temp1 = (((((sr * 256) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 1250000;
> + }
> +
> + ///* Filters' coefficients are calculated and written into registers only if the filters are enabled */
> + //if (ChipGetField(hChip,F367qam_ADJ_EN)) // Is disabled from init!
> + //{
> + // FE_367qam_SetIirAdjacentcoefficient(hChip, MasterClk_Hz, SymbolRate);
> + //}
> + ///* AllPass filter is never used on this IC */
> + //ChipSetField(hChip,F367qam_ALLPASSFILT_EN,0); // should be disabled from init!
> +
> + writereg(state, R367_QAM_SRC_NCO_LL,(Temp));
> + writereg(state, R367_QAM_SRC_NCO_LH,(Temp>>8));
> + writereg(state, R367_QAM_SRC_NCO_HL,(Temp>>16));
> + writereg(state, R367_QAM_SRC_NCO_HH,(Temp>>24));
> +
> + writereg(state, R367_QAM_IQDEM_GAIN_SRC_L,(Temp1));
> + writereg(state, R367_QAM_IQDEM_GAIN_SRC_H,(Temp1>>8));
> + return status;
> +}
> +
> +
> +static int QAM_SetDerotFrequency(struct stv_state *state, u32 DerotFrequency)
> +{
> + int status = 0;
> + u32 Sampled_IF;
> +
> + do {
> + //if (DerotFrequency < 1000000)
> + // DerotFrequency = state->adc_clock/4; /* ZIF operation */
> + if (DerotFrequency > state->adc_clock)
> + DerotFrequency = DerotFrequency - state->adc_clock; // User Alias
> +
> + Sampled_IF = ((32768 * (DerotFrequency/1000)) / (state->adc_clock/1000)) * 256;
> + if(Sampled_IF > 8388607)
> + Sampled_IF = 8388607;
> +
> + writereg(state, R367_QAM_MIX_NCO_LL, (Sampled_IF));
> + writereg(state, R367_QAM_MIX_NCO_HL, (Sampled_IF>>8));
> + writereg(state, R367_QAM_MIX_NCO_HH, (Sampled_IF>>16));
> + } while(0);
> +
> + return status;
> +}
> +
> +
> +
> +static int QAM_Start(struct stv_state *state, s32 offsetFreq,s32 IntermediateFrequency)
> +{
> + int status = 0;
> + u32 AGCTimeOut = 25;
> + u32 TRLTimeOut = 100000000 / state->symbol_rate;
> + u32 CRLSymbols = 0;
> + u32 EQLTimeOut = 100;
> + u32 SearchRange = state->symbol_rate / 25;
> + u32 CRLTimeOut;
> + u8 Temp;
> +
> + if( state->demod_state != QAMSet ) {
> + writereg(state, R367_DEBUG_LT4,0x00);
> + writereg(state, R367_DEBUG_LT5,0x01);
> + writereg(state, R367_DEBUG_LT6,0x06);// R367_QAM_CTRL_1
> + writereg(state, R367_DEBUG_LT7,0x03);// R367_QAM_CTRL_2
> + writereg(state, R367_DEBUG_LT8,0x00);
> + writereg(state, R367_DEBUG_LT9,0x00);
> +
> + // Tuner Setup
> + writereg(state, R367_ANADIGCTRL,0x8B); /* Buffer Q disabled, I Enabled, signed ADC */
> + writereg(state, R367_DUAL_AD12,0x04); /* ADCQ disabled */
> +
> + // Clock setup
> + writereg(state, R367_ANACTRL,0x0D); /* PLL bypassed and disabled */
> + writereg(state, R367_TOPCTRL,0x10); // Set QAM
> +
> + writereg(state, R367_PLLMDIV,27); /* IC runs at 58 MHz with a 27 MHz crystal */
> + writereg(state, R367_PLLNDIV,232);
> + writereg(state, R367_PLLSETUP,0x18); /* ADC clock is equal to system clock */
> +
> + msleep(50);
> + writereg(state, R367_ANACTRL,0x00); /* PLL enabled and used */
> +
> + state->master_clock = 58000000;
> + state->adc_clock = 58000000;
> +
> + state->demod_state = QAMSet;
> + }
> +
> + state->m_bFirstTimeLock = true;
> + state->m_DemodLockTime = -1;
> +
> + qam_set_modulation(state);
> + QAM_SetSymbolRate(state);
> +
> + // Will make problems on low symbol rates ( < 2500000 )
> +
> + switch(state->modulation) {
> + default:
> + case QAM_16: CRLSymbols = 150000; break;
> + case QAM_32: CRLSymbols = 250000; break;
> + case QAM_64: CRLSymbols = 200000; break;
> + case QAM_128: CRLSymbols = 250000; break;
> + case QAM_256: CRLSymbols = 250000; break;
> + }
> +
> + CRLTimeOut = (25 * CRLSymbols * (SearchRange/1000)) / (state->symbol_rate/1000);
> + CRLTimeOut = (1000 * CRLTimeOut) / state->symbol_rate;
> + if( CRLTimeOut < 50 ) CRLTimeOut = 50;
> +
> + state->m_FECTimeOut = 20;
> + state->m_DemodTimeOut = AGCTimeOut + TRLTimeOut + CRLTimeOut + EQLTimeOut;
> + state->m_SignalTimeOut = AGCTimeOut + TRLTimeOut;
> +
> + // QAM_AGC_ACCUMRSTSEL = 0;
> + readreg(state, R367_QAM_AGC_CTL,&state->m_Save_QAM_AGC_CTL);
> + writereg(state, R367_QAM_AGC_CTL,state->m_Save_QAM_AGC_CTL & ~0x0F);
> +
> + // QAM_MODULUSMAP_EN = 0
> + readreg(state, R367_QAM_EQU_PNT_GAIN,&Temp);
> + writereg(state, R367_QAM_EQU_PNT_GAIN,Temp & ~0x40);
> +
> + // QAM_SWEEP_EN = 0
> + readreg(state, R367_QAM_EQU_CTR_LPF_GAIN,&Temp);
> + writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,Temp & ~0x08);
> +
> + QAM_SetDerotFrequency(state, IntermediateFrequency);
> +
> + // Release TRL
> + writereg(state, R367_QAM_CTRL_1,0x00);
> +
> + state->IF = IntermediateFrequency;
> + state->demod_state = QAMStarted;
> +
> + return status;
> +}
> +
> +static int OFDM_Start(struct stv_state *state, s32 offsetFreq,s32 IntermediateFrequency)
> +{
> + int status = 0;
> + u8 GAIN_SRC1;
> + u32 Derot;
> + u8 SYR_CTL;
> + u8 tmp1;
> + u8 tmp2;
> +
> + if ( state->demod_state != OFDMSet ) {
> + // QAM Disable
> + writereg(state, R367_DEBUG_LT4, 0x00);
> + writereg(state, R367_DEBUG_LT5, 0x00);
> + writereg(state, R367_DEBUG_LT6, 0x00);// R367_QAM_CTRL_1
> + writereg(state, R367_DEBUG_LT7, 0x00);// R367_QAM_CTRL_2
> + writereg(state, R367_DEBUG_LT8, 0x00);
> + writereg(state, R367_DEBUG_LT9, 0x00);
> +
> + // Tuner Setup
> + writereg(state, R367_ANADIGCTRL, 0x89); /* Buffer Q disabled, I Enabled, unsigned ADC */
> + writereg(state, R367_DUAL_AD12, 0x04); /* ADCQ disabled */
> +
> + // Clock setup
> + writereg(state, R367_ANACTRL, 0x0D); /* PLL bypassed and disabled */
> + writereg(state, R367_TOPCTRL, 0x00); // Set OFDM
> +
> + writereg(state, R367_PLLMDIV, 1); /* IC runs at 54 MHz with a 27 MHz crystal */
> + writereg(state, R367_PLLNDIV, 8);
> + writereg(state, R367_PLLSETUP, 0x18); /* ADC clock is equal to system clock */
> +
> + msleep(50);
> + writereg(state, R367_ANACTRL, 0x00); /* PLL enabled and used */
> +
> + state->master_clock = 54000000;
> + state->adc_clock = 54000000;
> +
> + state->demod_state = OFDMSet;
> + }
> +
> + state->m_bFirstTimeLock = true;
> + state->m_DemodLockTime = -1;
> +
> + // Set inversion in GAIN_SRC1 (fixed from init)
> + // is in GAIN_SRC1, see below
> +
> + GAIN_SRC1 = 0xA0;
> + // Bandwidth
> +
> + // Fixed values for 54 MHz
> + switch(state->bandwidth) {
> + case 0:
> + case 8000000:
> + // Normrate = 44384;
> + writereg(state, R367_OFDM_TRL_CTL,0x14);
> + writereg(state, R367_OFDM_TRL_NOMRATE1,0xB0);
> + writereg(state, R367_OFDM_TRL_NOMRATE2,0x56);
> + // Gain SRC = 2774
> + writereg(state, R367_OFDM_GAIN_SRC1,0x0A | GAIN_SRC1);
> + writereg(state, R367_OFDM_GAIN_SRC2,0xD6);
> + break;
> + case 7000000:
> + // Normrate = 38836;
> + writereg(state, R367_OFDM_TRL_CTL,0x14);
> + writereg(state, R367_OFDM_TRL_NOMRATE1,0xDA);
> + writereg(state, R367_OFDM_TRL_NOMRATE2,0x4B);
> + // Gain SRC = 2427
> + writereg(state, R367_OFDM_GAIN_SRC1,0x09 | GAIN_SRC1);
> + writereg(state, R367_OFDM_GAIN_SRC2,0x7B);
> + break;
> + case 6000000:
> + // Normrate = 33288;
> + writereg(state, R367_OFDM_TRL_CTL,0x14);
> + writereg(state, R367_OFDM_TRL_NOMRATE1,0x04);
> + writereg(state, R367_OFDM_TRL_NOMRATE2,0x41);
> + // Gain SRC = 2080
> + writereg(state, R367_OFDM_GAIN_SRC1,0x08 | GAIN_SRC1);
> + writereg(state, R367_OFDM_GAIN_SRC2,0x20);
> + break;
> + default:
> + return -EINVAL;
> + break;
> + }
> +
> + Derot = ((IntermediateFrequency / 1000) * 65536) / (state->master_clock / 1000);
> +
> + writereg(state, R367_OFDM_INC_DEROT1,(Derot>>8));
> + writereg(state, R367_OFDM_INC_DEROT2,(Derot));
> +
> + readreg(state, R367_OFDM_SYR_CTL,&SYR_CTL);
> + SYR_CTL &= ~0x78;
> + writereg(state, R367_OFDM_SYR_CTL,SYR_CTL); // EchoPos = 0
> +
> +
> + writereg(state, R367_OFDM_COR_MODEGUARD,0x03); // Force = 0, Mode = 0, Guard = 3
> + SYR_CTL &= 0x01;
> + writereg(state, R367_OFDM_SYR_CTL,SYR_CTL); // SYR_TR_DIS = 0
> +
> + msleep(5);
> +
> + writereg(state, R367_OFDM_COR_CTL,0x20); // Start core
> +
> + // -- Begin M.V.
> + // Reset FEC and Read Solomon
> + readreg(state, R367_OFDM_SFDLYSETH,&tmp1);
> + readreg(state, R367_TSGENERAL,&tmp2);
> + writereg(state, R367_OFDM_SFDLYSETH,tmp1 | 0x08);
> + writereg(state, R367_TSGENERAL,tmp2 | 0x01);
> + // -- End M.V.
> +
> + state->m_SignalTimeOut = 200;
> + state->IF = IntermediateFrequency;
> + state->demod_state = OFDMStarted;
> + state->m_DemodTimeOut = 0;
> + state->m_FECTimeOut = 0;
> + state->m_TSTimeOut = 0;
> +
> + return status;
> +}
> +
> +#if 0
> +static int Stop(struct stv_state *state)
> +{
> + int status = 0;
> +
> + switch(state->demod_state)
> + {
> + case QAMStarted:
> + status = writereg(state, R367_QAM_CTRL_1,0x06);
> + state->demod_state = QAMSet;
> + break;
> + case OFDMStarted:
> + status = writereg(state, R367_OFDM_COR_CTL,0x00);
> + state->demod_state = OFDMSet;
> + break;
> + default:
> + break;
> + }
> + return status;
> +}
> +#endif
> +
> +static s32 Log10x100(u32 x)
> +{
> + static u32 LookupTable[100] = {
> + 101157945, 103514217, 105925373, 108392691, 110917482,
> + 113501082, 116144861, 118850223, 121618600, 124451461, // 800.5 - 809.5
> + 127350308, 130316678, 133352143, 136458314, 139636836,
> + 142889396, 146217717, 149623566, 153108746, 156675107, // 810.5 - 819.5
> + 160324539, 164058977, 167880402, 171790839, 175792361,
> + 179887092, 184077200, 188364909, 192752491, 197242274, // 820.5 - 829.5
> + 201836636, 206538016, 211348904, 216271852, 221309471,
> + 226464431, 231739465, 237137371, 242661010, 248313311, // 830.5 - 839.5
> + 254097271, 260015956, 266072506, 272270131, 278612117,
> + 285101827, 291742701, 298538262, 305492111, 312607937, // 840.5 - 849.5
> + 319889511, 327340695, 334965439, 342767787, 350751874,
> + 358921935, 367282300, 375837404, 384591782, 393550075, // 850.5 - 859.5
> + 402717034, 412097519, 421696503, 431519077, 441570447,
> + 451855944, 462381021, 473151259, 484172368, 495450191, // 860.5 - 869.5
> + 506990708, 518800039, 530884444, 543250331, 555904257,
> + 568852931, 582103218, 595662144, 609536897, 623734835, // 870.5 - 879.5
> + 638263486, 653130553, 668343918, 683911647, 699841996,
> + 716143410, 732824533, 749894209, 767361489, 785235635, // 880.5 - 889.5
> + 803526122, 822242650, 841395142, 860993752, 881048873,
> + 901571138, 922571427, 944060876, 966050879, 988553095, // 890.5 - 899.5
> + };
> + s32 y;
> + int i;
> +
> + if (x == 0)
> + return 0;
> + y = 800;
> + if (x >= 1000000000) {
> + x /= 10;
> + y += 100;
> + }
> +
> + while (x < 100000000) {
> + x *= 10;
> + y -= 100;
> + }
> + i = 0;
> + while (i < 100 && x > LookupTable[i])
> + i += 1;
> + y += i;
> + return y;
> +}
> +
> +static int QAM_GetSignalToNoise(struct stv_state *state, s32 *pSignalToNoise)
> +{
> + u32 RegValAvg = 0;
> + u8 RegVal[2];
> + int status = 0, i;
> +
> + *pSignalToNoise = 0;
> + for (i = 0; i < 10; i += 1 ) {
> + readregs(state, R367_QAM_EQU_SNR_LO, RegVal, 2);
> + RegValAvg += RegVal[0] + 256 * RegVal[1];
> + }
> + if (RegValAvg != 0) {
> + s32 Power = 1;
> + switch(state->modulation) {
> + case QAM_16:
> + Power = 20480;
> + break;
> + case QAM_32:
> + Power = 23040;
> + break;
> + case QAM_64:
> + Power = 21504;
> + break;
> + case QAM_128:
> + Power = 23616;
> + break;
> + case QAM_256:
> + Power = 21760;
> + break;
> + default:
> + break;
> + }
> + *pSignalToNoise = Log10x100((Power * 320) / RegValAvg);
> + } else {
> + *pSignalToNoise = 380;
> + }
> + return status;
> +}
> +
> +static int OFDM_GetSignalToNoise(struct stv_state *state, s32 *pSignalToNoise)
> +{
> + u8 CHC_SNR = 0;
> +
> + int status = readreg(state, R367_OFDM_CHC_SNR, &CHC_SNR);
> + if (status >= 0) {
> + // Note: very unclear documentation on this.
> + // Datasheet states snr = CHC_SNR/4 dB -> way to high values!
> + // Software snr = ( 1000 * CHC_SNR ) / 8 / 32 / 10; -> to low values
> + // Comment in SW states this should be ( 1000 * CHC_SNR ) / 4 / 32 / 10; for the 367
> + // 361/362 Datasheet: snr = CHC_SNR/8 dB -> this looks best
> + *pSignalToNoise = ( (s32)CHC_SNR * 10) / 8;
> + }
> + //printk("SNR %d\n", *pSignalToNoise);
> + return status;
> +}
> +
> +#if 0
> +static int DVBC_GetQuality(struct stv_state *state, s32 SignalToNoise, s32 *pQuality)
> +{
> + *pQuality = 100;
> + return 0;
> +};
> +
> +static int DVBT_GetQuality(struct stv_state *state, s32 SignalToNoise, s32 *pQuality)
> +{
> + static s32 QE_SN[] = {
> + 51, // QPSK 1/2
> + 69, // QPSK 2/3
> + 79, // QPSK 3/4
> + 89, // QPSK 5/6
> + 97, // QPSK 7/8
> + 108, // 16-QAM 1/2
> + 131, // 16-QAM 2/3
> + 146, // 16-QAM 3/4
> + 156, // 16-QAM 5/6
> + 160, // 16-QAM 7/8
> + 165, // 64-QAM 1/2
> + 187, // 64-QAM 2/3
> + 202, // 64-QAM 3/4
> + 216, // 64-QAM 5/6
> + 225, // 64-QAM 7/8
> + };
> + u8 TPS_Received[2];
> + int Constellation;
> + int CodeRate;
> + s32 SignalToNoiseRel, BERQuality;
> +
> + *pQuality = 0;
> + readregs(state, R367_OFDM_TPS_RCVD2, TPS_Received, sizeof(TPS_Received));
> + Constellation = TPS_Received[0] & 0x03;
> + CodeRate = TPS_Received[1] & 0x07;
> +
> + if( Constellation > 2 || CodeRate > 5 )
> + return -1;
> + SignalToNoiseRel = SignalToNoise - QE_SN[Constellation * 5 + CodeRate];
> + BERQuality = 100;
> +
> + if( SignalToNoiseRel < -70 )
> + *pQuality = 0;
> + else if( SignalToNoiseRel < 30 ) {
> + *pQuality = ((SignalToNoiseRel + 70) * BERQuality)/100;
> + } else
> + *pQuality = BERQuality;
> + return 0;
> +};
> +
> +static s32 DVBCQuality(struct stv_state *state, s32 SignalToNoise)
> +{
> + s32 SignalToNoiseRel = 0;
> + s32 Quality = 0;
> + s32 BERQuality = 100;
> +
> + switch(state->modulation) {
> + case QAM_16: SignalToNoiseRel = SignalToNoise - 200 ; break;
> + case QAM_32: SignalToNoiseRel = SignalToNoise - 230 ; break; // Not in NorDig
> + case QAM_64: SignalToNoiseRel = SignalToNoise - 260 ; break;
> + case QAM_128: SignalToNoiseRel = SignalToNoise - 290 ; break;
> + case QAM_256: SignalToNoiseRel = SignalToNoise - 320 ; break;
> + }
> +
> + if( SignalToNoiseRel < -70 ) Quality = 0;
> + else if( SignalToNoiseRel < 30 )
> + {
> + Quality = ((SignalToNoiseRel + 70) * BERQuality)/100;
> + }
> + else
> + Quality = BERQuality;
> +
> + return Quality;
> +}
> +
> +static int GetQuality(struct stv_state *state, s32 SignalToNoise, s32 *pQuality)
> +{
> + *pQuality = 0;
> + switch(state->demod_state)
> + {
> + case QAMStarted:
> + *pQuality = DVBCQuality(state, SignalToNoise);
> + break;
> + case OFDMStarted:
> + return DVBT_GetQuality(state, SignalToNoise, pQuality);
> + }
> + return 0;
> +};
> +#endif
> +
> +static int attach_init(struct stv_state *state)
> +{
> + int stat = 0;
> +
> + stat = readreg(state, R367_ID, &state->ID);
> + if ( stat < 0 || state->ID != 0x60 )
> + return -ENODEV;
> + printk("stv0367 found\n");
> +
> + writereg(state, R367_TOPCTRL, 0x10);
> + write_init_table(state, base_init);
> + write_init_table(state, qam_init);
> +
> + writereg(state, R367_TOPCTRL, 0x00);
> + write_init_table(state, ofdm_init);
> +
> + writereg(state, R367_OFDM_GAIN_SRC1, 0x2A);
> + writereg(state, R367_OFDM_GAIN_SRC2, 0xD6);
> + writereg(state, R367_OFDM_INC_DEROT1, 0x55);
> + writereg(state, R367_OFDM_INC_DEROT2, 0x55);
> + writereg(state, R367_OFDM_TRL_CTL, 0x14);
> + writereg(state, R367_OFDM_TRL_NOMRATE1, 0xAE);
> + writereg(state, R367_OFDM_TRL_NOMRATE2, 0x56);
> + writereg(state, R367_OFDM_FEPATH_CFG, 0x0);
> +
> + // OFDM TS Setup
> +
> + writereg(state, R367_OFDM_TSCFGH, 0x70);
> + writereg(state, R367_OFDM_TSCFGM, 0xC0);
> + writereg(state, R367_OFDM_TSCFGL, 0x20);
> + writereg(state, R367_OFDM_TSSPEED, 0x40); // Fixed at 54 MHz
> + //writereg(state, R367_TSTBUS, 0x80); // Invert CLK
> +
> + writereg(state, R367_OFDM_TSCFGH, 0x71);
> + writereg(state, R367_OFDM_TSCFGH, 0x70);
> +
> + writereg(state, R367_TOPCTRL, 0x10);
> +
> + // Also needed for QAM
> + writereg(state, R367_OFDM_AGC12C, 0x01); // AGC Pin setup
> +
> + writereg(state, R367_OFDM_AGCCTRL1, 0x8A); //
> +
> + // QAM TS setup, note exact format also depends on descrambler settings
> + writereg(state, R367_QAM_OUTFORMAT_0, 0x85); // Inverted Clock, Swap, serial
> + // writereg(state, R367_QAM_OUTFORMAT_1, 0x00); //
> +
> + // Clock setup
> + writereg(state, R367_ANACTRL, 0x0D); /* PLL bypassed and disabled */
> +
> + if( state->master_clock == 58000000 ) {
> + writereg(state, R367_PLLMDIV,27); /* IC runs at 58 MHz with a 27 MHz crystal */
> + writereg(state, R367_PLLNDIV,232);
> + } else {
> + writereg(state, R367_PLLMDIV,1); /* IC runs at 54 MHz with a 27 MHz crystal */
> + writereg(state, R367_PLLNDIV,8);
> + }
> + writereg(state, R367_PLLSETUP, 0x18); /* ADC clock is equal to system clock */
> +
> + // Tuner setup
> + writereg(state, R367_ANADIGCTRL, 0x8b); /* Buffer Q disabled, I Enabled, signed ADC */
> + writereg(state, R367_DUAL_AD12, 0x04); /* ADCQ disabled */
> +
> + writereg(state, R367_QAM_FSM_SNR2_HTH, 0x23); /* Improves the C/N lock limit */
> + writereg(state, R367_QAM_IQ_QAM, 0x01); /* ZIF/IF Automatic mode */
> + writereg(state, R367_QAM_EQU_FFE_LEAKAGE, 0x83); /* Improving burst noise performances */
> + writereg(state, R367_QAM_IQDEM_ADJ_EN, 0x05); /* Improving ACI performances */
> +
> + writereg(state, R367_ANACTRL, 0x00); /* PLL enabled and used */
> +
> + writereg(state, R367_I2CRPT, state->I2CRPT);
> + state->demod_state = QAMSet;
> + return stat;
> +}
> +
> +#ifdef USE_API3
> +static void c_release(struct dvb_frontend* fe)
> +#else
> +static void release(struct dvb_frontend* fe)
> +#endif
> +{
> + struct stv_state *state=fe->demodulator_priv;
> + printk("%s\n", __FUNCTION__);
> + kfree(state);
> +}
> +
> +#ifdef USE_API3
> +static int c_init (struct dvb_frontend *fe)
> +{
> + struct stv_state *state=fe->demodulator_priv;
> +
> + if (mutex_trylock(&state->ctlock)==0)
> + return -EBUSY;
> + state->omode = OM_DVBC;
> + return 0;
> +}
> +
> +static int c_sleep(struct dvb_frontend* fe)
> +{
> + struct stv_state *state=fe->demodulator_priv;
> +
> + mutex_unlock(&state->ctlock);
> + return 0;
> +}
> +#endif
> +
> +static int gate_ctrl(struct dvb_frontend *fe, int enable)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> + u8 i2crpt = state->I2CRPT & ~0x80;
> +
> + if (enable)
> + i2crpt |= 0x80;
> + if (writereg(state, R367_I2CRPT, i2crpt) < 0)
> + return -1;
> + state->I2CRPT = i2crpt;
> + return 0;
> +}
> +
> +#if 0
> +static int c_track(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
> +{
> + return DVBFE_ALGO_SEARCH_AGAIN;
> +}
> +#endif
> +
> +#if 0
> +int (*set_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
> +int (*get_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
> +#endif
> +
> +static int ofdm_lock(struct stv_state *state)
> +{
> + int status = 0;
> + u8 OFDM_Status;
> + s32 DemodTimeOut = 10;
> + s32 FECTimeOut = 0;
> + s32 TSTimeOut = 0;
> + u8 CPAMPMin = 255;
> + u8 CPAMPValue;
> + u8 SYR_STAT;
> + u8 FFTMode;
> + u8 TSStatus;
> +
> + msleep(state->m_SignalTimeOut);
> + readreg(state, R367_OFDM_STATUS,&OFDM_Status);
> +
> + if (!(OFDM_Status & 0x40))
> + return -1;
> + //printk("lock 1\n");
> +
> + readreg(state, R367_OFDM_SYR_STAT,&SYR_STAT);
> + FFTMode = (SYR_STAT & 0x0C) >> 2;
> +
> + switch(FFTMode)
> + {
> + case 0: // 2K
> + DemodTimeOut = 10;
> + FECTimeOut = 150;
> + TSTimeOut = 125;
> + CPAMPMin = 20;
> + break;
> + case 1: // 8K
> + DemodTimeOut = 55;
> + FECTimeOut = 600;
> + TSTimeOut = 500;
> + CPAMPMin = 80;
> + break;
> + case 2: // 4K
> + DemodTimeOut = 40;
> + FECTimeOut = 300;
> + TSTimeOut = 250;
> + CPAMPMin = 30;
> + break;
> + }
> + state->m_OFDM_FFTMode = FFTMode;
> + readreg(state, R367_OFDM_PPM_CPAMP_DIR,&CPAMPValue);
> + msleep(DemodTimeOut);
> + {
> + // Release FEC and Read Solomon Reset
> + u8 tmp1;
> + u8 tmp2;
> + readreg(state, R367_OFDM_SFDLYSETH,&tmp1);
> + readreg(state, R367_TSGENERAL,&tmp2);
> + writereg(state, R367_OFDM_SFDLYSETH,tmp1 & ~0x08);
> + writereg(state, R367_TSGENERAL,tmp2 & ~0x01);
> + }
> + msleep(FECTimeOut);
> + if( (OFDM_Status & 0x98) != 0x98 )
> + ;//return -1;
> + //printk("lock 2\n");
> +
> + {
> + u8 Guard = (SYR_STAT & 0x03);
> + if(Guard < 2)
> + {
> + u8 tmp;
> + readreg(state, R367_OFDM_SYR_CTL,&tmp);
> + writereg(state, R367_OFDM_SYR_CTL,tmp & ~0x04); // Clear AUTO_LE_EN
> + readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
> + writereg(state, R367_OFDM_SYR_UPDATE,tmp & ~0x10); // Clear SYR_FILTER
> + } else {
> + u8 tmp;
> + readreg(state, R367_OFDM_SYR_CTL,&tmp);
> + writereg(state, R367_OFDM_SYR_CTL,tmp | 0x04); // Set AUTO_LE_EN
> + readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
> + writereg(state, R367_OFDM_SYR_UPDATE,tmp | 0x10); // Set SYR_FILTER
> + }
> +
> + // apply Sfec workaround if 8K 64QAM CR!=1/2
> + if( FFTMode == 1)
> + {
> + u8 tmp[2];
> + readregs(state, R367_OFDM_TPS_RCVD2, tmp, 2);
> + if( ((tmp[0] & 0x03) == 0x02) && (( tmp[1] & 0x07 ) != 0) )
> + {
> + writereg(state, R367_OFDM_SFDLYSETH,0xc0);
> + writereg(state, R367_OFDM_SFDLYSETM,0x60);
> + writereg(state, R367_OFDM_SFDLYSETL,0x00);
> + }
> + else
> + {
> + writereg(state, R367_OFDM_SFDLYSETH,0x00);
> + }
> + }
> + }
> + msleep(TSTimeOut);
> + readreg(state, R367_OFDM_TSSTATUS,&TSStatus);
> + if( (TSStatus & 0x80) != 0x80 )
> + return -1;
> + //printk("lock 3\n");
> + return status;
> +}
> +
> +
> +#ifdef USE_API3
> +static int set_parameters(struct dvb_frontend *fe,
> + struct dvb_frontend_parameters *p)
> +{
> + int stat;
> + struct stv_state *state = fe->demodulator_priv;
> + u32 OF = 0;
> + u32 IF;
> +
> + if (fe->ops.tuner_ops.set_params)
> + fe->ops.tuner_ops.set_params(fe, p);
> +
> + switch (state->omode) {
> + case OM_DVBC:
> + case OM_QAM_ITU_C:
> + state->modulation = p->u.qam.modulation;
> + state->symbol_rate = p->u.qam.symbol_rate;
> + break;
> + case OM_DVBT:
> + switch (p->u.ofdm.bandwidth) {
> + case BANDWIDTH_AUTO:
> + case BANDWIDTH_8_MHZ:
> + state->bandwidth = 8000000;
> + break;
> + case BANDWIDTH_7_MHZ:
> + state->bandwidth = 7000000;
> + break;
> + case BANDWIDTH_6_MHZ:
> + state->bandwidth = 6000000;
> + break;
> + default:
> + return -EINVAL;
> + }
> + break;
> + default:
> + return -EINVAL;
> + }
> +#else
> +static int set_parameters(struct dvb_frontend *fe)
> +{
> + int stat;
> + struct stv_state *state = fe->demodulator_priv;
> + u32 OF = 0;
> + u32 IF;
> +
> + switch (fe->dtv_property_cache.delivery_system) {
> + case SYS_DVBC_ANNEX_A:
> + state->omode = OM_DVBC;
> + /* symbol rate 0 might cause an oops */
> + if (fe->dtv_property_cache.symbol_rate == 0) {
> + printk(KERN_ERR "stv0367dd: Invalid symbol rate\n");
> + return -EINVAL;
> + }
> + break;
> + case SYS_DVBT:
> + state->omode = OM_DVBT;
> + break;
> + default:
> + return -EINVAL;
> + }
> + if (fe->ops.tuner_ops.set_params)
> + fe->ops.tuner_ops.set_params(fe);
> + state->modulation = fe->dtv_property_cache.modulation;
> + state->symbol_rate = fe->dtv_property_cache.symbol_rate;
> + state->bandwidth = fe->dtv_property_cache.bandwidth_hz;
> +#endif
> + fe->ops.tuner_ops.get_if_frequency(fe, &IF);
> + //fe->ops.tuner_ops.get_frequency(fe, &IF);
> +
> + switch(state->omode) {
> + case OM_DVBT:
> + stat = OFDM_Start(state, OF, IF);
> + ofdm_lock(state);
> + break;
> + case OM_DVBC:
> + case OM_QAM_ITU_C:
> + stat = QAM_Start(state, OF, IF);
> + break;
> + default:
> + stat = -EINVAL;
> + }
> + //printk("%s IF=%d OF=%d done\n", __FUNCTION__, IF, OF);
> + return stat;
> +}
> +
> +#if 0
> +static int c_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
> +{
> + //struct stv_state *state = fe->demodulator_priv;
> + //printk("%s\n", __FUNCTION__);
> + return 0;
> +}
> +
> +static int OFDM_GetLockStatus(struct stv_state *state, LOCK_STATUS* pLockStatus, s32 Time)
> +{
> + int status = STATUS_SUCCESS;
> + u8 OFDM_Status;
> + s32 DemodTimeOut = 0;
> + s32 FECTimeOut = 0;
> + s32 TSTimeOut = 0;
> + u8 CPAMPMin = 255;
> + u8 CPAMPValue;
> + bool SYRLock;
> + u8 SYR_STAT;
> + u8 FFTMode;
> + u8 TSStatus;
> +
> + readreg(state, R367_OFDM_STATUS,&OFDM_Status);
> +
> + SYRLock = (OFDM_Status & 0x40) != 0;
> +
> + if( Time > m_SignalTimeOut && !SYRLock )
> + {
> + *pLockStatus = NEVER_LOCK;
> + break;
> + }
> +
> + if( !SYRLock ) break;
> +
> + *pLockStatus = SIGNAL_PRESENT;
> +
> + // Check Mode
> +
> + readreg(state, R367_OFDM_SYR_STAT,&SYR_STAT);
> + FFTMode = (SYR_STAT & 0x0C) >> 2;
> +
> + switch(FFTMode)
> + {
> + case 0: // 2K
> + DemodTimeOut = 10;
> + FECTimeOut = 150;
> + TSTimeOut = 125;
> + CPAMPMin = 20;
> + break;
> + case 1: // 8K
> + DemodTimeOut = 55;
> + FECTimeOut = 600;
> + TSTimeOut = 500;
> + CPAMPMin = 80;
> + break;
> + case 2: // 4K
> + DemodTimeOut = 40;
> + FECTimeOut = 300;
> + TSTimeOut = 250;
> + CPAMPMin = 30;
> + break;
> + }
> +
> + m_OFDM_FFTMode = FFTMode;
> +
> + if( m_DemodTimeOut == 0 && m_bFirstTimeLock )
> + {
> + m_DemodTimeOut = Time + DemodTimeOut;
> + //break;
> + }
> +
> + readreg(state, R367_OFDM_PPM_CPAMP_DIR,&CPAMPValue);
> +
> + if( Time <= m_DemodTimeOut && CPAMPValue < CPAMPMin )
> + {
> + break;
> + }
> +
> + if( CPAMPValue < CPAMPMin && m_bFirstTimeLock )
> + {
> + // initiate retry
> + *pLockStatus = NEVER_LOCK;
> + break;
> + }
> +
> + if( CPAMPValue < CPAMPMin ) break;
> +
> + *pLockStatus = DEMOD_LOCK;
> +
> + if( m_FECTimeOut == 0 && m_bFirstTimeLock )
> + {
> + // Release FEC and Read Solomon Reset
> + u8 tmp1;
> + u8 tmp2;
> + readreg(state, R367_OFDM_SFDLYSETH,&tmp1);
> + readreg(state, R367_TSGENERAL,&tmp2);
> + writereg(state, R367_OFDM_SFDLYSETH,tmp1 & ~0x08);
> + writereg(state, R367_TSGENERAL,tmp2 & ~0x01);
> +
> + m_FECTimeOut = Time + FECTimeOut;
> + }
> +
> + // Wait for TSP_LOCK, LK, PRF
> + if( (OFDM_Status & 0x98) != 0x98 )
> + {
> + if( Time > m_FECTimeOut ) *pLockStatus = NEVER_LOCK;
> + break;
> + }
> +
> + if( m_bFirstTimeLock && m_TSTimeOut == 0)
> + {
> + u8 Guard = (SYR_STAT & 0x03);
> + if(Guard < 2)
> + {
> + u8 tmp;
> + readreg(state, R367_OFDM_SYR_CTL,&tmp);
> + writereg(state, R367_OFDM_SYR_CTL,tmp & ~0x04); // Clear AUTO_LE_EN
> + readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
> + writereg(state, R367_OFDM_SYR_UPDATE,tmp & ~0x10); // Clear SYR_FILTER
> + } else {
> + u8 tmp;
> + readreg(state, R367_OFDM_SYR_CTL,&tmp);
> + writereg(state, R367_OFDM_SYR_CTL,tmp | 0x04); // Set AUTO_LE_EN
> + readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
> + writereg(state, R367_OFDM_SYR_UPDATE,tmp | 0x10); // Set SYR_FILTER
> + }
> +
> + // apply Sfec workaround if 8K 64QAM CR!=1/2
> + if( FFTMode == 1)
> + {
> + u8 tmp[2];
> + readreg(state, R367_OFDM_TPS_RCVD2,tmp,2);
> + if( ((tmp[0] & 0x03) == 0x02) && (( tmp[1] & 0x07 ) != 0) )
> + {
> + writereg(state, R367_OFDM_SFDLYSETH,0xc0);
> + writereg(state, R367_OFDM_SFDLYSETM,0x60);
> + writereg(state, R367_OFDM_SFDLYSETL,0x00);
> + }
> + else
> + {
> + writereg(state, R367_OFDM_SFDLYSETH,0x00);
> + }
> + }
> +
> + m_TSTimeOut = Time + TSTimeOut;
> + }
> + readreg(state, R367_OFDM_TSSTATUS,&TSStatus);
> + if( (TSStatus & 0x80) != 0x80 )
> + {
> + if( Time > m_TSTimeOut ) *pLockStatus = NEVER_LOCK;
> + break;
> + }
> + *pLockStatus = MPEG_LOCK;
> + m_bFirstTimeLock = false;
> + return status;
> +}
> +
> +#endif
> +
> +static int read_status(struct dvb_frontend *fe, fe_status_t *status)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> + *status=0;
> +
> + switch(state->demod_state) {
> + case QAMStarted:
> + {
> + u8 FEC_Lock;
> + u8 QAM_Lock;
> +
> + readreg(state, R367_QAM_FSM_STS, &QAM_Lock);
> + QAM_Lock &= 0x0F;
> + if (QAM_Lock >10)
> + *status|=0x07;
> + readreg(state, R367_QAM_FEC_STATUS,&FEC_Lock);
> + if (FEC_Lock&2)
> + *status|=0x1f;
> + if (state->m_bFirstTimeLock) {
> + state->m_bFirstTimeLock = false;
> + // QAM_AGC_ACCUMRSTSEL to Tracking;
> + writereg(state, R367_QAM_AGC_CTL, state->m_Save_QAM_AGC_CTL);
> + }
> + break;
> + }
> + case OFDMStarted:
> + {
> + u8 OFDM_Status;
> + u8 TSStatus;
> +
> + readreg(state, R367_OFDM_TSSTATUS, &TSStatus);
> +
> + readreg(state, R367_OFDM_STATUS, &OFDM_Status);
> + if (OFDM_Status & 0x40)
> + *status |= FE_HAS_SIGNAL;
> +
> + if ((OFDM_Status & 0x98) == 0x98)
> + *status|=0x0f;
> +
> + if (TSStatus & 0x80)
> + *status |= 0x1f;
> + break;
> + }
> + default:
> + break;
> + }
> + return 0;
> +}
> +
> +static int read_ber_ter(struct dvb_frontend *fe, u32 *ber)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> + u32 err;
> + u8 cnth, cntm, cntl;
> +
> +#if 1
> + readreg(state, R367_OFDM_SFERRCNTH, &cnth);
> +
> + if (cnth & 0x80) {
> + *ber = state->ber;
> + return 0;
> + }
> +
> + readreg(state, R367_OFDM_SFERRCNTM, &cntm);
> + readreg(state, R367_OFDM_SFERRCNTL, &cntl);
> +
> + err = ((cnth & 0x7f) << 16) | (cntm << 8) | cntl;
> +
> +#if 0
> + {
> + u64 err64;
> + err64 = (u64) err;
> + err64 *= 1000000000ULL;
> + err64 >>= 21;
> + err = err64;
> + }
> +#endif
> +#else
> + readreg(state, R367_OFDM_ERRCNT1HM, &cnth);
> +
> +#endif
> + *ber = state->ber = err;
> + return 0;
> +}
> +
> +static int read_ber_cab(struct dvb_frontend *fe, u32 *ber)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> + u32 err;
> + u8 cntm, cntl, ctrl;
> +
> + readreg(state, R367_QAM_BERT_1, &ctrl);
> + if (!(ctrl & 0x20)) {
> + readreg(state, R367_QAM_BERT_2, &cntl);
> + readreg(state, R367_QAM_BERT_3, &cntm);
> + err = (cntm << 8) | cntl;
> + //printk("err %04x\n", err);
> + state->ber = err;
> + writereg(state, R367_QAM_BERT_1, 0x27);
> + }
> + *ber = (u32) state->ber;
> + return 0;
> +}
> +
> +static int read_ber(struct dvb_frontend *fe, u32 *ber)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> +
> + if (state->demod_state == QAMStarted)
> + return read_ber_cab(fe, ber);
> + if (state->demod_state == OFDMStarted)
> + return read_ber_ter(fe, ber);
> + *ber = 0;
> + return 0;
> +}
> +
> +static int read_signal_strength(struct dvb_frontend *fe, u16 *strength)
> +{
> + if (fe->ops.tuner_ops.get_rf_strength)
> + fe->ops.tuner_ops.get_rf_strength(fe, strength);
> + else
> + *strength = 0;
> + return 0;
> +}
> +
> +static int read_snr(struct dvb_frontend *fe, u16 *snr)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> + s32 snr2 = 0;
> +
> + switch(state->demod_state) {
> + case QAMStarted:
> + QAM_GetSignalToNoise(state, &snr2);
> + break;
> + case OFDMStarted:
> + OFDM_GetSignalToNoise(state, &snr2);
> + break;
> + default:
> + break;
> + }
> + *snr = snr2&0xffff;
> + return 0;
> +}
> +
> +static int read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
> +{
> + struct stv_state *state = fe->demodulator_priv;
> + u8 errl, errm, errh;
> + u8 val;
> +
> + switch(state->demod_state) {
> + case QAMStarted:
> + readreg(state, R367_QAM_RS_COUNTER_4, &errl);
> + readreg(state, R367_QAM_RS_COUNTER_5, &errm);
> + *ucblocks = (errm << 8) | errl;
> + break;
> + case OFDMStarted:
> + readreg(state, R367_OFDM_SFERRCNTH, &val);
> + if ((val & 0x80) == 0) {
> + readreg(state, R367_OFDM_ERRCNT1H, &errh);
> + readreg(state, R367_OFDM_ERRCNT1M, &errl);
> + readreg(state, R367_OFDM_ERRCNT1L, &errm);
> + state->ucblocks = (errh <<16) | (errm << 8) | errl;
> + }
> + *ucblocks = state->ucblocks;
> + break;
> + default:
> + *ucblocks = 0;
> + break;
> + }
> + return 0;
> +}
> +
> +static int c_get_tune_settings(struct dvb_frontend *fe,
> + struct dvb_frontend_tune_settings *sets)
> +{
> + sets->min_delay_ms=3000;
> + sets->max_drift=0;
> + sets->step_size=0;
> + return 0;
> +}
> +
> +#ifndef USE_API3
> +static int get_tune_settings(struct dvb_frontend *fe,
> + struct dvb_frontend_tune_settings *sets)
> +{
> + switch (fe->dtv_property_cache.delivery_system) {
> + case SYS_DVBC_ANNEX_A:
> + case SYS_DVBC_ANNEX_C:
> + return c_get_tune_settings(fe, sets);
> + default:
> + /* DVB-T: Use info.frequency_stepsize. */
> + return -EINVAL;
> + }
> +}
> +#endif
> +
> +#ifdef USE_API3
> +static void t_release(struct dvb_frontend* fe)
> +{
> + //struct stv_state *state=fe->demodulator_priv;
> + //printk("%s\n", __FUNCTION__);
> + //kfree(state);
> +}
> +
> +static int t_init (struct dvb_frontend *fe)
> +{
> + struct stv_state *state=fe->demodulator_priv;
> + if (mutex_trylock(&state->ctlock)==0)
> + return -EBUSY;
> + state->omode = OM_DVBT;
> + return 0;
> +}
> +
> +static int t_sleep(struct dvb_frontend* fe)
> +{
> + struct stv_state *state=fe->demodulator_priv;
> + mutex_unlock(&state->ctlock);
> + return 0;
> +}
> +#endif
> +
> +#if 0
> +static int t_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
> +{
> + //struct stv_state *state = fe->demodulator_priv;
> + //printk("%s\n", __FUNCTION__);
> + return 0;
> +}
> +
> +static enum dvbfe_algo algo(struct dvb_frontend *fe)
> +{
> + return DVBFE_ALGO_CUSTOM;
> +}
> +#endif
> +
> +#ifdef USE_API3
> +static struct dvb_frontend_ops c_ops = {
> + .info = {
> + .name = "STV0367 DVB-C",
> + .type = FE_QAM,
> + .frequency_stepsize = 62500,
> + .frequency_min = 47000000,
> + .frequency_max = 862000000,
> + .symbol_rate_min = 870000,
> + .symbol_rate_max = 11700000,
> + .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
> + FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO
> + },
> + .release = c_release,
> + .init = c_init,
> + .sleep = c_sleep,
> + .i2c_gate_ctrl = gate_ctrl,
> +
> + .get_tune_settings = c_get_tune_settings,
> +
> + .read_status = read_status,
> + .read_ber = read_ber,
> + .read_signal_strength = read_signal_strength,
> + .read_snr = read_snr,
> + .read_ucblocks = read_ucblocks,
> +
> +#if 1
> + .set_frontend = set_parameters,
> +#else
> + .get_frontend_algo = algo,
> + .search = search,
> +#endif
> +};
> +
> +static struct dvb_frontend_ops t_ops = {
> + .info = {
> + .name = "STV0367 DVB-T",
> + .type = FE_OFDM,
> + .frequency_min = 47125000,
> + .frequency_max = 865000000,
> + .frequency_stepsize = 166667,
> + .frequency_tolerance = 0,
> + .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
> + FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
> + FE_CAN_FEC_AUTO |
> + FE_CAN_QAM_16 | FE_CAN_QAM_64 |
> + FE_CAN_QAM_AUTO |
> + FE_CAN_TRANSMISSION_MODE_AUTO |
> + FE_CAN_GUARD_INTERVAL_AUTO |
> + FE_CAN_HIERARCHY_AUTO | FE_CAN_RECOVER |
> + FE_CAN_MUTE_TS
> + },
> + .release = t_release,
> + .init = t_init,
> + .sleep = t_sleep,
> + .i2c_gate_ctrl = gate_ctrl,
> +
> + .set_frontend = set_parameters,
> +
> + .read_status = read_status,
> + .read_ber = read_ber,
> + .read_signal_strength = read_signal_strength,
> + .read_snr = read_snr,
> + .read_ucblocks = read_ucblocks,
> +};
> +
> +#else
> +
> +static struct dvb_frontend_ops common_ops = {
> + .delsys = { SYS_DVBC_ANNEX_A, SYS_DVBT },
> + .info = {
> + .name = "STV0367 DVB-C DVB-T",
> + .frequency_stepsize = 166667, /* DVB-T only */
> + .frequency_min = 47000000, /* DVB-T: 47125000 */
> + .frequency_max = 865000000, /* DVB-C: 862000000 */
> + .symbol_rate_min = 870000,
> + .symbol_rate_max = 11700000,
> + .caps = /* DVB-C */
> + FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
> + FE_CAN_QAM_128 | FE_CAN_QAM_256 |
> + FE_CAN_FEC_AUTO |
> + /* DVB-T */
> + FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> + FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> + FE_CAN_TRANSMISSION_MODE_AUTO |
> + FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO |
> + FE_CAN_RECOVER | FE_CAN_MUTE_TS
> + },
> + .release = release,
> + .i2c_gate_ctrl = gate_ctrl,
> +
> + .get_tune_settings = get_tune_settings,
> +
> + .set_frontend = set_parameters,
> +
> + .read_status = read_status,
> + .read_ber = read_ber,
> + .read_signal_strength = read_signal_strength,
> + .read_snr = read_snr,
> + .read_ucblocks = read_ucblocks,
> +};
> +#endif
> +
> +
> +static void init_state(struct stv_state *state, struct stv0367_cfg *cfg)
> +{
> + u32 ulENARPTLEVEL = 5;
> + u32 ulQAMInversion = 2;
> + state->omode = OM_NONE;
> + state->adr = cfg->adr;
> +
> + mutex_init(&state->mutex);
> + mutex_init(&state->ctlock);
> +
> +#ifdef USE_API3
> + memcpy(&state->c_frontend.ops, &c_ops, sizeof(struct dvb_frontend_ops));
> + memcpy(&state->t_frontend.ops, &t_ops, sizeof(struct dvb_frontend_ops));
> + state->c_frontend.demodulator_priv = state;
> + state->t_frontend.demodulator_priv = state;
> +#else
> + memcpy(&state->frontend.ops, &common_ops, sizeof(struct dvb_frontend_ops));
> + state->frontend.demodulator_priv = state;
> +#endif
> +
> + state->master_clock = 58000000;
> + state->adc_clock = 58000000;
> + state->I2CRPT = 0x08 | ((ulENARPTLEVEL & 0x07) << 4);
> + state->qam_inversion = ((ulQAMInversion & 3) << 6 );
> + state->demod_state = Off;
> +}
> +
> +
> +struct dvb_frontend *stv0367_attach(struct i2c_adapter *i2c, struct stv0367_cfg *cfg,
> + struct dvb_frontend **fe_t)
> +{
> + struct stv_state *state = NULL;
> +
> + state = kzalloc(sizeof(struct stv_state), GFP_KERNEL);
> + if (!state)
> + return NULL;
> +
> + state->i2c = i2c;
> + init_state(state, cfg);
> +
> + if (attach_init(state)<0)
> + goto error;
> +#ifdef USE_API3
> + *fe_t = &state->t_frontend;
> + return &state->c_frontend;
> +#else
> + return &state->frontend;
> +#endif
> +
> +error:
> + printk("stv0367: not found\n");
> + kfree(state);
> + return NULL;
> +}
> +
> +
> +MODULE_DESCRIPTION("STV0367DD driver");
> +MODULE_AUTHOR("Ralph Metzler, Manfred Voelkel");
> +MODULE_LICENSE("GPL");
> +
> +EXPORT_SYMBOL(stv0367_attach);
> +
> +
> +
> diff --git a/drivers/media/dvb-frontends/stv0367dd.h b/drivers/media/dvb-frontends/stv0367dd.h
> new file mode 100644
> index 0000000..a13df69
> --- /dev/null
> +++ b/drivers/media/dvb-frontends/stv0367dd.h
> @@ -0,0 +1,48 @@
> +/*
> + * stv0367dd.h: STV0367 DVB-C/T demodulator driver
> + *
> + * Copyright (C) 2010-2013 Digital Devices GmbH
> + * Copyright (C) 2013 Maik Broemme <mbroemme@parallels.com>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2 only, as published by the Free Software Foundation.
> + *
> + * 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., 51 Franklin Street, Fifth Floor, Boston, MA
> + * 02110-1301, USA
> + */
> +
> +#ifndef _STV0367DD_H_
> +#define _STV0367DD_H_
> +
> +#include <linux/types.h>
> +#include <linux/i2c.h>
> +
> +struct stv0367_cfg {
> + u8 adr;
> + u32 xtal;
> + u32 ts_mode;
> +};
> +
> +#if IS_ENABLED(CONFIG_DVB_STV0367DD)
> +extern struct dvb_frontend *stv0367_attach(struct i2c_adapter *i2c,
> + struct stv0367_cfg *cfg,
> + struct dvb_frontend **fe_t);
> +#else
> +static inline struct dvb_frontend *stv0367_attach(struct i2c_adapter *i2c,
> + struct stv0367_cfg *cfg,
> + struct dvb_frontend **fe_t);
> +{
> + printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
> + return NULL;
> +}
> +#endif
> +
> +#endif
> diff --git a/drivers/media/dvb-frontends/stv0367dd_regs.h b/drivers/media/dvb-frontends/stv0367dd_regs.h
> new file mode 100644
> index 0000000..3881f55
> --- /dev/null
> +++ b/drivers/media/dvb-frontends/stv0367dd_regs.h
> @@ -0,0 +1,3442 @@
> +/*
> + * stv0367dd_regs.h: DVB-C/DVB-T STMicroelectronics STV0367
> + * register defintions
> + *
> + * Copyright (C) 2010-2013 Digital Devices GmbH
> + * Copyright (C) 2013 Maik Broemme <mbroemme@parallels.com>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2 only, as published by the Free Software Foundation.
> + *
> + * 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., 51 Franklin Street, Fifth Floor, Boston, MA
> + * 02110-1301, USA
> + */
> +
> +#ifndef _STV0367DD_REGS_H_
> +#define _STV0367DD_REGS_H_
> +
> +/* ID */
> +#define R367_ID 0xF000
> +#define F367_IDENTIFICATIONREG 0xF00000FF
> +
> +/* I2CRPT */
> +#define R367_I2CRPT 0xF001
> +#define F367_I2CT_ON 0xF0010080
> +#define F367_ENARPT_LEVEL 0xF0010070
> +#define F367_SCLT_DELAY 0xF0010008
> +#define F367_SCLT_NOD 0xF0010004
> +#define F367_STOP_ENABLE 0xF0010002
> +#define F367_SDAT_NOD 0xF0010001
> +
> +/* TOPCTRL */
> +#define R367_TOPCTRL 0xF002
> +#define F367_STDBY 0xF0020080
> +#define F367_STDBY_FEC 0xF0020040
> +#define F367_STDBY_CORE 0xF0020020
> +#define F367_QAM_COFDM 0xF0020010
> +#define F367_TS_DIS 0xF0020008
> +#define F367_DIR_CLK_216 0xF0020004
> +#define F367_TUNER_BB 0xF0020002
> +#define F367_DVBT_H 0xF0020001
> +
> +/* IOCFG0 */
> +#define R367_IOCFG0 0xF003
> +#define F367_OP0_SD 0xF0030080
> +#define F367_OP0_VAL 0xF0030040
> +#define F367_OP0_OD 0xF0030020
> +#define F367_OP0_INV 0xF0030010
> +#define F367_OP0_DACVALUE_HI 0xF003000F
> +
> +/* DAC0R */
> +#define R367_DAC0R 0xF004
> +#define F367_OP0_DACVALUE_LO 0xF00400FF
> +
> +/* IOCFG1 */
> +#define R367_IOCFG1 0xF005
> +#define F367_IP0 0xF0050040
> +#define F367_OP1_OD 0xF0050020
> +#define F367_OP1_INV 0xF0050010
> +#define F367_OP1_DACVALUE_HI 0xF005000F
> +
> +/* DAC1R */
> +#define R367_DAC1R 0xF006
> +#define F367_OP1_DACVALUE_LO 0xF00600FF
> +
> +/* IOCFG2 */
> +#define R367_IOCFG2 0xF007
> +#define F367_OP2_LOCK_CONF 0xF00700E0
> +#define F367_OP2_OD 0xF0070010
> +#define F367_OP2_VAL 0xF0070008
> +#define F367_OP1_LOCK_CONF 0xF0070007
> +
> +/* SDFR */
> +#define R367_SDFR 0xF008
> +#define F367_OP0_FREQ 0xF00800F0
> +#define F367_OP1_FREQ 0xF008000F
> +
> +/* STATUS */
> +#define R367_OFDM_STATUS 0xF009
> +#define F367_TPS_LOCK 0xF0090080
> +#define F367_SYR_LOCK 0xF0090040
> +#define F367_AGC_LOCK 0xF0090020
> +#define F367_PRF 0xF0090010
> +#define F367_LK 0xF0090008
> +#define F367_PR 0xF0090007
> +
> +/* AUX_CLK */
> +#define R367_AUX_CLK 0xF00A
> +#define F367_AUXFEC_CTL 0xF00A00C0
> +#define F367_DIS_CKX4 0xF00A0020
> +#define F367_CKSEL 0xF00A0018
> +#define F367_CKDIV_PROG 0xF00A0006
> +#define F367_AUXCLK_ENA 0xF00A0001
> +
> +/* FREESYS1 */
> +#define R367_FREESYS1 0xF00B
> +#define F367_FREE_SYS1 0xF00B00FF
> +
> +/* FREESYS2 */
> +#define R367_FREESYS2 0xF00C
> +#define F367_FREE_SYS2 0xF00C00FF
> +
> +/* FREESYS3 */
> +#define R367_FREESYS3 0xF00D
> +#define F367_FREE_SYS3 0xF00D00FF
> +
> +/* GPIO_CFG */
> +#define R367_GPIO_CFG 0xF00E
> +#define F367_GPIO7_NOD 0xF00E0080
> +#define F367_GPIO7_CFG 0xF00E0040
> +#define F367_GPIO6_NOD 0xF00E0020
> +#define F367_GPIO6_CFG 0xF00E0010
> +#define F367_GPIO5_NOD 0xF00E0008
> +#define F367_GPIO5_CFG 0xF00E0004
> +#define F367_GPIO4_NOD 0xF00E0002
> +#define F367_GPIO4_CFG 0xF00E0001
> +
> +/* GPIO_CMD */
> +#define R367_GPIO_CMD 0xF00F
> +#define F367_GPIO7_VAL 0xF00F0008
> +#define F367_GPIO6_VAL 0xF00F0004
> +#define F367_GPIO5_VAL 0xF00F0002
> +#define F367_GPIO4_VAL 0xF00F0001
> +
> +/* AGC2MAX */
> +#define R367_OFDM_AGC2MAX 0xF010
> +#define F367_OFDM_AGC2_MAX 0xF01000FF
> +
> +/* AGC2MIN */
> +#define R367_OFDM_AGC2MIN 0xF011
> +#define F367_OFDM_AGC2_MIN 0xF01100FF
> +
> +/* AGC1MAX */
> +#define R367_OFDM_AGC1MAX 0xF012
> +#define F367_OFDM_AGC1_MAX 0xF01200FF
> +
> +/* AGC1MIN */
> +#define R367_OFDM_AGC1MIN 0xF013
> +#define F367_OFDM_AGC1_MIN 0xF01300FF
> +
> +/* AGCR */
> +#define R367_OFDM_AGCR 0xF014
> +#define F367_OFDM_RATIO_A 0xF01400E0
> +#define F367_OFDM_RATIO_B 0xF0140018
> +#define F367_OFDM_RATIO_C 0xF0140007
> +
> +/* AGC2TH */
> +#define R367_OFDM_AGC2TH 0xF015
> +#define F367_OFDM_AGC2_THRES 0xF01500FF
> +
> +/* AGC12C */
> +#define R367_OFDM_AGC12C 0xF016
> +#define F367_OFDM_AGC1_IV 0xF0160080
> +#define F367_OFDM_AGC1_OD 0xF0160040
> +#define F367_OFDM_AGC1_LOAD 0xF0160020
> +#define F367_OFDM_AGC2_IV 0xF0160010
> +#define F367_OFDM_AGC2_OD 0xF0160008
> +#define F367_OFDM_AGC2_LOAD 0xF0160004
> +#define F367_OFDM_AGC12_MODE 0xF0160003
> +
> +/* AGCCTRL1 */
> +#define R367_OFDM_AGCCTRL1 0xF017
> +#define F367_OFDM_DAGC_ON 0xF0170080
> +#define F367_OFDM_INVERT_AGC12 0xF0170040
> +#define F367_OFDM_AGC1_MODE 0xF0170008
> +#define F367_OFDM_AGC2_MODE 0xF0170007
> +
> +/* AGCCTRL2 */
> +#define R367_OFDM_AGCCTRL2 0xF018
> +#define F367_OFDM_FRZ2_CTRL 0xF0180060
> +#define F367_OFDM_FRZ1_CTRL 0xF0180018
> +#define F367_OFDM_TIME_CST 0xF0180007
> +
> +/* AGC1VAL1 */
> +#define R367_OFDM_AGC1VAL1 0xF019
> +#define F367_OFDM_AGC1_VAL_LO 0xF01900FF
> +
> +/* AGC1VAL2 */
> +#define R367_OFDM_AGC1VAL2 0xF01A
> +#define F367_OFDM_AGC1_VAL_HI 0xF01A000F
> +
> +/* AGC2VAL1 */
> +#define R367_OFDM_AGC2VAL1 0xF01B
> +#define F367_OFDM_AGC2_VAL_LO 0xF01B00FF
> +
> +/* AGC2VAL2 */
> +#define R367_OFDM_AGC2VAL2 0xF01C
> +#define F367_OFDM_AGC2_VAL_HI 0xF01C000F
> +
> +/* AGC2PGA */
> +#define R367_OFDM_AGC2PGA 0xF01D
> +#define F367_OFDM_AGC2_PGA 0xF01D00FF
> +
> +/* OVF_RATE1 */
> +#define R367_OFDM_OVF_RATE1 0xF01E
> +#define F367_OFDM_OVF_RATE_HI 0xF01E000F
> +
> +/* OVF_RATE2 */
> +#define R367_OFDM_OVF_RATE2 0xF01F
> +#define F367_OFDM_OVF_RATE_LO 0xF01F00FF
> +
> +/* GAIN_SRC1 */
> +#define R367_OFDM_GAIN_SRC1 0xF020
> +#define F367_OFDM_INV_SPECTR 0xF0200080
> +#define F367_OFDM_IQ_INVERT 0xF0200040
> +#define F367_OFDM_INR_BYPASS 0xF0200020
> +#define F367_OFDM_STATUS_INV_SPECRUM 0xF0200010
> +#define F367_OFDM_GAIN_SRC_HI 0xF020000F
> +
> +/* GAIN_SRC2 */
> +#define R367_OFDM_GAIN_SRC2 0xF021
> +#define F367_OFDM_GAIN_SRC_LO 0xF02100FF
> +
> +/* INC_DEROT1 */
> +#define R367_OFDM_INC_DEROT1 0xF022
> +#define F367_OFDM_INC_DEROT_HI 0xF02200FF
> +
> +/* INC_DEROT2 */
> +#define R367_OFDM_INC_DEROT2 0xF023
> +#define F367_OFDM_INC_DEROT_LO 0xF02300FF
> +
> +/* PPM_CPAMP_DIR */
> +#define R367_OFDM_PPM_CPAMP_DIR 0xF024
> +#define F367_OFDM_PPM_CPAMP_DIRECT 0xF02400FF
> +
> +/* PPM_CPAMP_INV */
> +#define R367_OFDM_PPM_CPAMP_INV 0xF025
> +#define F367_OFDM_PPM_CPAMP_INVER 0xF02500FF
> +
> +/* FREESTFE_1 */
> +#define R367_OFDM_FREESTFE_1 0xF026
> +#define F367_OFDM_SYMBOL_NUMBER_INC 0xF02600C0
> +#define F367_OFDM_SEL_LSB 0xF0260004
> +#define F367_OFDM_AVERAGE_ON 0xF0260002
> +#define F367_OFDM_DC_ADJ 0xF0260001
> +
> +/* FREESTFE_2 */
> +#define R367_OFDM_FREESTFE_2 0xF027
> +#define F367_OFDM_SEL_SRCOUT 0xF02700C0
> +#define F367_OFDM_SEL_SYRTHR 0xF027001F
> +
> +/* DCOFFSET */
> +#define R367_OFDM_DCOFFSET 0xF028
> +#define F367_OFDM_SELECT_I_Q 0xF0280080
> +#define F367_OFDM_DC_OFFSET 0xF028007F
> +
> +/* EN_PROCESS */
> +#define R367_OFDM_EN_PROCESS 0xF029
> +#define F367_OFDM_FREE 0xF02900F0
> +#define F367_OFDM_ENAB_MANUAL 0xF0290001
> +
> +/* SDI_SMOOTHER */
> +#define R367_OFDM_SDI_SMOOTHER 0xF02A
> +#define F367_OFDM_DIS_SMOOTH 0xF02A0080
> +#define F367_OFDM_SDI_INC_SMOOTHER 0xF02A007F
> +
> +/* FE_LOOP_OPEN */
> +#define R367_OFDM_FE_LOOP_OPEN 0xF02B
> +#define F367_OFDM_TRL_LOOP_OP 0xF02B0002
> +#define F367_OFDM_CRL_LOOP_OP 0xF02B0001
> +
> +/* FREQOFF1 */
> +#define R367_OFDM_FREQOFF1 0xF02C
> +#define F367_OFDM_FREQ_OFFSET_LOOP_OPEN_VHI 0xF02C00FF
> +
> +/* FREQOFF2 */
> +#define R367_OFDM_FREQOFF2 0xF02D
> +#define F367_OFDM_FREQ_OFFSET_LOOP_OPEN_HI 0xF02D00FF
> +
> +/* FREQOFF3 */
> +#define R367_OFDM_FREQOFF3 0xF02E
> +#define F367_OFDM_FREQ_OFFSET_LOOP_OPEN_LO 0xF02E00FF
> +
> +/* TIMOFF1 */
> +#define R367_OFDM_TIMOFF1 0xF02F
> +#define F367_OFDM_TIM_OFFSET_LOOP_OPEN_HI 0xF02F00FF
> +
> +/* TIMOFF2 */
> +#define R367_OFDM_TIMOFF2 0xF030
> +#define F367_OFDM_TIM_OFFSET_LOOP_OPEN_LO 0xF03000FF
> +
> +/* EPQ */
> +#define R367_OFDM_EPQ 0xF031
> +#define F367_OFDM_EPQ1 0xF03100FF
> +
> +/* EPQAUTO */
> +#define R367_OFDM_EPQAUTO 0xF032
> +#define F367_OFDM_EPQ2 0xF03200FF
> +
> +/* SYR_UPDATE */
> +#define R367_OFDM_SYR_UPDATE 0xF033
> +#define F367_OFDM_SYR_PROTV 0xF0330080
> +#define F367_OFDM_SYR_PROTV_GAIN 0xF0330060
> +#define F367_OFDM_SYR_FILTER 0xF0330010
> +#define F367_OFDM_SYR_TRACK_THRES 0xF033000C
> +
> +/* CHPFREE */
> +#define R367_OFDM_CHPFREE 0xF034
> +#define F367_OFDM_CHP_FREE 0xF03400FF
> +
> +/* PPM_STATE_MAC */
> +#define R367_OFDM_PPM_STATE_MAC 0xF035
> +#define F367_OFDM_PPM_STATE_MACHINE_DECODER 0xF035003F
> +
> +/* INR_THRESHOLD */
> +#define R367_OFDM_INR_THRESHOLD 0xF036
> +#define F367_OFDM_INR_THRESH 0xF03600FF
> +
> +/* EPQ_TPS_ID_CELL */
> +#define R367_OFDM_EPQ_TPS_ID_CELL 0xF037
> +#define F367_OFDM_ENABLE_LGTH_TO_CF 0xF0370080
> +#define F367_OFDM_DIS_TPS_RSVD 0xF0370040
> +#define F367_OFDM_DIS_BCH 0xF0370020
> +#define F367_OFDM_DIS_ID_CEL 0xF0370010
> +#define F367_OFDM_TPS_ADJUST_SYM 0xF037000F
> +
> +/* EPQ_CFG */
> +#define R367_OFDM_EPQ_CFG 0xF038
> +#define F367_OFDM_EPQ_RANGE 0xF0380002
> +#define F367_OFDM_EPQ_SOFT 0xF0380001
> +
> +/* EPQ_STATUS */
> +#define R367_OFDM_EPQ_STATUS 0xF039
> +#define F367_OFDM_SLOPE_INC 0xF03900FC
> +#define F367_OFDM_TPS_FIELD 0xF0390003
> +
> +/* AUTORELOCK */
> +#define R367_OFDM_AUTORELOCK 0xF03A
> +#define F367_OFDM_BYPASS_BER_TEMPO 0xF03A0080
> +#define F367_OFDM_BER_TEMPO 0xF03A0070
> +#define F367_OFDM_BYPASS_COFDM_TEMPO 0xF03A0008
> +#define F367_OFDM_COFDM_TEMPO 0xF03A0007
> +
> +/* BER_THR_VMSB */
> +#define R367_OFDM_BER_THR_VMSB 0xF03B
> +#define F367_OFDM_BER_THRESHOLD_HI 0xF03B00FF
> +
> +/* BER_THR_MSB */
> +#define R367_OFDM_BER_THR_MSB 0xF03C
> +#define F367_OFDM_BER_THRESHOLD_MID 0xF03C00FF
> +
> +/* BER_THR_LSB */
> +#define R367_OFDM_BER_THR_LSB 0xF03D
> +#define F367_OFDM_BER_THRESHOLD_LO 0xF03D00FF
> +
> +/* CCD */
> +#define R367_OFDM_CCD 0xF03E
> +#define F367_OFDM_CCD_DETECTED 0xF03E0080
> +#define F367_OFDM_CCD_RESET 0xF03E0040
> +#define F367_OFDM_CCD_THRESHOLD 0xF03E000F
> +
> +/* SPECTR_CFG */
> +#define R367_OFDM_SPECTR_CFG 0xF03F
> +#define F367_OFDM_SPECT_CFG 0xF03F0003
> +
> +/* CONSTMU_MSB */
> +#define R367_OFDM_CONSTMU_MSB 0xF040
> +#define F367_OFDM_CONSTMU_FREEZE 0xF0400080
> +#define F367_OFDM_CONSTNU_FORCE_EN 0xF0400040
> +#define F367_OFDM_CONST_MU_MSB 0xF040003F
> +
> +/* CONSTMU_LSB */
> +#define R367_OFDM_CONSTMU_LSB 0xF041
> +#define F367_OFDM_CONST_MU_LSB 0xF04100FF
> +
> +/* CONSTMU_MAX_MSB */
> +#define R367_OFDM_CONSTMU_MAX_MSB 0xF042
> +#define F367_OFDM_CONST_MU_MAX_MSB 0xF042003F
> +
> +/* CONSTMU_MAX_LSB */
> +#define R367_OFDM_CONSTMU_MAX_LSB 0xF043
> +#define F367_OFDM_CONST_MU_MAX_LSB 0xF04300FF
> +
> +/* ALPHANOISE */
> +#define R367_OFDM_ALPHANOISE 0xF044
> +#define F367_OFDM_USE_ALLFILTER 0xF0440080
> +#define F367_OFDM_INTER_ON 0xF0440040
> +#define F367_OFDM_ALPHA_NOISE 0xF044001F
> +
> +/* MAXGP_MSB */
> +#define R367_OFDM_MAXGP_MSB 0xF045
> +#define F367_OFDM_MUFILTER_LENGTH 0xF04500F0
> +#define F367_OFDM_MAX_GP_MSB 0xF045000F
> +
> +/* MAXGP_LSB */
> +#define R367_OFDM_MAXGP_LSB 0xF046
> +#define F367_OFDM_MAX_GP_LSB 0xF04600FF
> +
> +/* ALPHAMSB */
> +#define R367_OFDM_ALPHAMSB 0xF047
> +#define F367_OFDM_CHC_DATARATE 0xF04700C0
> +#define F367_OFDM_ALPHA_MSB 0xF047003F
> +
> +/* ALPHALSB */
> +#define R367_OFDM_ALPHALSB 0xF048
> +#define F367_OFDM_ALPHA_LSB 0xF04800FF
> +
> +/* PILOT_ACCU */
> +#define R367_OFDM_PILOT_ACCU 0xF049
> +#define F367_OFDM_USE_SCAT4ADDAPT 0xF0490080
> +#define F367_OFDM_PILOT_ACC 0xF049001F
> +
> +/* PILOTMU_ACCU */
> +#define R367_OFDM_PILOTMU_ACCU 0xF04A
> +#define F367_OFDM_DISCARD_BAD_SP 0xF04A0080
> +#define F367_OFDM_DISCARD_BAD_CP 0xF04A0040
> +#define F367_OFDM_PILOT_MU_ACCU 0xF04A001F
> +
> +/* FILT_CHANNEL_EST */
> +#define R367_OFDM_FILT_CHANNEL_EST 0xF04B
> +#define F367_OFDM_USE_FILT_PILOT 0xF04B0080
> +#define F367_OFDM_FILT_CHANNEL 0xF04B007F
> +
> +/* ALPHA_NOPISE_FREQ */
> +#define R367_OFDM_ALPHA_NOPISE_FREQ 0xF04C
> +#define F367_OFDM_NOISE_FREQ_FILT 0xF04C0040
> +#define F367_OFDM_ALPHA_NOISE_FREQ 0xF04C003F
> +
> +/* RATIO_PILOT */
> +#define R367_OFDM_RATIO_PILOT 0xF04D
> +#define F367_OFDM_RATIO_MEAN_SP 0xF04D00F0
> +#define F367_OFDM_RATIO_MEAN_CP 0xF04D000F
> +
> +/* CHC_CTL */
> +#define R367_OFDM_CHC_CTL 0xF04E
> +#define F367_OFDM_TRACK_EN 0xF04E0080
> +#define F367_OFDM_NOISE_NORM_EN 0xF04E0040
> +#define F367_OFDM_FORCE_CHC_RESET 0xF04E0020
> +#define F367_OFDM_SHORT_TIME 0xF04E0010
> +#define F367_OFDM_FORCE_STATE_EN 0xF04E0008
> +#define F367_OFDM_FORCE_STATE 0xF04E0007
> +
> +/* EPQ_ADJUST */
> +#define R367_OFDM_EPQ_ADJUST 0xF04F
> +#define F367_OFDM_ADJUST_SCAT_IND 0xF04F00C0
> +#define F367_OFDM_ONE_SYMBOL 0xF04F0010
> +#define F367_OFDM_EPQ_DECAY 0xF04F000E
> +#define F367_OFDM_HOLD_SLOPE 0xF04F0001
> +
> +/* EPQ_THRES */
> +#define R367_OFDM_EPQ_THRES 0xF050
> +#define F367_OFDM_EPQ_THR 0xF05000FF
> +
> +/* OMEGA_CTL */
> +#define R367_OFDM_OMEGA_CTL 0xF051
> +#define F367_OFDM_OMEGA_RST 0xF0510080
> +#define F367_OFDM_FREEZE_OMEGA 0xF0510040
> +#define F367_OFDM_OMEGA_SEL 0xF051003F
> +
> +/* GP_CTL */
> +#define R367_OFDM_GP_CTL 0xF052
> +#define F367_OFDM_CHC_STATE 0xF05200E0
> +#define F367_OFDM_FREEZE_GP 0xF0520010
> +#define F367_OFDM_GP_SEL 0xF052000F
> +
> +/* MUMSB */
> +#define R367_OFDM_MUMSB 0xF053
> +#define F367_OFDM_MU_MSB 0xF053007F
> +
> +/* MULSB */
> +#define R367_OFDM_MULSB 0xF054
> +#define F367_OFDM_MU_LSB 0xF05400FF
> +
> +/* GPMSB */
> +#define R367_OFDM_GPMSB 0xF055
> +#define F367_OFDM_CSI_THRESHOLD 0xF05500E0
> +#define F367_OFDM_GP_MSB 0xF055000F
> +
> +/* GPLSB */
> +#define R367_OFDM_GPLSB 0xF056
> +#define F367_OFDM_GP_LSB 0xF05600FF
> +
> +/* OMEGAMSB */
> +#define R367_OFDM_OMEGAMSB 0xF057
> +#define F367_OFDM_OMEGA_MSB 0xF057007F
> +
> +/* OMEGALSB */
> +#define R367_OFDM_OMEGALSB 0xF058
> +#define F367_OFDM_OMEGA_LSB 0xF05800FF
> +
> +/* SCAT_NB */
> +#define R367_OFDM_SCAT_NB 0xF059
> +#define F367_OFDM_CHC_TEST 0xF05900F8
> +#define F367_OFDM_SCAT_NUMB 0xF0590003
> +
> +/* CHC_DUMMY */
> +#define R367_OFDM_CHC_DUMMY 0xF05A
> +#define F367_OFDM_CHC_DUM 0xF05A00FF
> +
> +/* INC_CTL */
> +#define R367_OFDM_INC_CTL 0xF05B
> +#define F367_OFDM_INC_BYPASS 0xF05B0080
> +#define F367_OFDM_INC_NDEPTH 0xF05B000C
> +#define F367_OFDM_INC_MADEPTH 0xF05B0003
> +
> +/* INCTHRES_COR1 */
> +#define R367_OFDM_INCTHRES_COR1 0xF05C
> +#define F367_OFDM_INC_THRES_COR1 0xF05C00FF
> +
> +/* INCTHRES_COR2 */
> +#define R367_OFDM_INCTHRES_COR2 0xF05D
> +#define F367_OFDM_INC_THRES_COR2 0xF05D00FF
> +
> +/* INCTHRES_DET1 */
> +#define R367_OFDM_INCTHRES_DET1 0xF05E
> +#define F367_OFDM_INC_THRES_DET1 0xF05E003F
> +
> +/* INCTHRES_DET2 */
> +#define R367_OFDM_INCTHRES_DET2 0xF05F
> +#define F367_OFDM_INC_THRES_DET2 0xF05F003F
> +
> +/* IIR_CELLNB */
> +#define R367_OFDM_IIR_CELLNB 0xF060
> +#define F367_OFDM_NRST_IIR 0xF0600080
> +#define F367_OFDM_IIR_CELL_NB 0xF0600007
> +
> +/* IIRCX_COEFF1_MSB */
> +#define R367_OFDM_IIRCX_COEFF1_MSB 0xF061
> +#define F367_OFDM_IIR_CX_COEFF1_MSB 0xF06100FF
> +
> +/* IIRCX_COEFF1_LSB */
> +#define R367_OFDM_IIRCX_COEFF1_LSB 0xF062
> +#define F367_OFDM_IIR_CX_COEFF1_LSB 0xF06200FF
> +
> +/* IIRCX_COEFF2_MSB */
> +#define R367_OFDM_IIRCX_COEFF2_MSB 0xF063
> +#define F367_OFDM_IIR_CX_COEFF2_MSB 0xF06300FF
> +
> +/* IIRCX_COEFF2_LSB */
> +#define R367_OFDM_IIRCX_COEFF2_LSB 0xF064
> +#define F367_OFDM_IIR_CX_COEFF2_LSB 0xF06400FF
> +
> +/* IIRCX_COEFF3_MSB */
> +#define R367_OFDM_IIRCX_COEFF3_MSB 0xF065
> +#define F367_OFDM_IIR_CX_COEFF3_MSB 0xF06500FF
> +
> +/* IIRCX_COEFF3_LSB */
> +#define R367_OFDM_IIRCX_COEFF3_LSB 0xF066
> +#define F367_OFDM_IIR_CX_COEFF3_LSB 0xF06600FF
> +
> +/* IIRCX_COEFF4_MSB */
> +#define R367_OFDM_IIRCX_COEFF4_MSB 0xF067
> +#define F367_OFDM_IIR_CX_COEFF4_MSB 0xF06700FF
> +
> +/* IIRCX_COEFF4_LSB */
> +#define R367_OFDM_IIRCX_COEFF4_LSB 0xF068
> +#define F367_OFDM_IIR_CX_COEFF4_LSB 0xF06800FF
> +
> +/* IIRCX_COEFF5_MSB */
> +#define R367_OFDM_IIRCX_COEFF5_MSB 0xF069
> +#define F367_OFDM_IIR_CX_COEFF5_MSB 0xF06900FF
> +
> +/* IIRCX_COEFF5_LSB */
> +#define R367_OFDM_IIRCX_COEFF5_LSB 0xF06A
> +#define F367_OFDM_IIR_CX_COEFF5_LSB 0xF06A00FF
> +
> +/* FEPATH_CFG */
> +#define R367_OFDM_FEPATH_CFG 0xF06B
> +#define F367_OFDM_DEMUX_SWAP 0xF06B0004
> +#define F367_OFDM_DIGAGC_SWAP 0xF06B0002
> +#define F367_OFDM_LONGPATH_IF 0xF06B0001
> +
> +/* PMC1_FUNC */
> +#define R367_OFDM_PMC1_FUNC 0xF06C
> +#define F367_OFDM_SOFT_RSTN 0xF06C0080
> +#define F367_OFDM_PMC1_AVERAGE_TIME 0xF06C0078
> +#define F367_OFDM_PMC1_WAIT_TIME 0xF06C0006
> +#define F367_OFDM_PMC1_2N_SEL 0xF06C0001
> +
> +/* PMC1_FOR */
> +#define R367_OFDM_PMC1_FOR 0xF06D
> +#define F367_OFDM_PMC1_FORCE 0xF06D0080
> +#define F367_OFDM_PMC1_FORCE_VALUE 0xF06D007C
> +
> +/* PMC2_FUNC */
> +#define R367_OFDM_PMC2_FUNC 0xF06E
> +#define F367_OFDM_PMC2_SOFT_STN 0xF06E0080
> +#define F367_OFDM_PMC2_ACCU_TIME 0xF06E0070
> +#define F367_OFDM_PMC2_CMDP_MN 0xF06E0008
> +#define F367_OFDM_PMC2_SWAP 0xF06E0004
> +
> +/* STATUS_ERR_DA */
> +#define R367_OFDM_STATUS_ERR_DA 0xF06F
> +#define F367_OFDM_COM_USEGAINTRK 0xF06F0080
> +#define F367_OFDM_COM_AGCLOCK 0xF06F0040
> +#define F367_OFDM_AUT_AGCLOCK 0xF06F0020
> +#define F367_OFDM_MIN_ERR_X_LSB 0xF06F000F
> +
> +/* DIG_AGC_R */
> +#define R367_OFDM_DIG_AGC_R 0xF070
> +#define F367_OFDM_COM_SOFT_RSTN 0xF0700080
> +#define F367_OFDM_COM_AGC_ON 0xF0700040
> +#define F367_OFDM_COM_EARLY 0xF0700020
> +#define F367_OFDM_AUT_SOFT_RESETN 0xF0700010
> +#define F367_OFDM_AUT_AGC_ON 0xF0700008
> +#define F367_OFDM_AUT_EARLY 0xF0700004
> +#define F367_OFDM_AUT_ROT_EN 0xF0700002
> +#define F367_OFDM_LOCK_SOFT_RESETN 0xF0700001
> +
> +/* COMAGC_TARMSB */
> +#define R367_OFDM_COMAGC_TARMSB 0xF071
> +#define F367_OFDM_COM_AGC_TARGET_MSB 0xF07100FF
> +
> +/* COM_AGC_TAR_ENMODE */
> +#define R367_OFDM_COM_AGC_TAR_ENMODE 0xF072
> +#define F367_OFDM_COM_AGC_TARGET_LSB 0xF07200F0
> +#define F367_OFDM_COM_ENMODE 0xF072000F
> +
> +/* COM_AGC_CFG */
> +#define R367_OFDM_COM_AGC_CFG 0xF073
> +#define F367_OFDM_COM_N 0xF07300F8
> +#define F367_OFDM_COM_STABMODE 0xF0730006
> +#define F367_OFDM_ERR_SEL 0xF0730001
> +
> +/* COM_AGC_GAIN1 */
> +#define R367_OFDM_COM_AGC_GAIN1 0xF074
> +#define F367_OFDM_COM_GAIN1ACK 0xF07400F0
> +#define F367_OFDM_COM_GAIN1TRK 0xF074000F
> +
> +/* AUT_AGC_TARGETMSB */
> +#define R367_OFDM_AUT_AGC_TARGETMSB 0xF075
> +#define F367_OFDM_AUT_AGC_TARGET_MSB 0xF07500FF
> +
> +/* LOCK_DET_MSB */
> +#define R367_OFDM_LOCK_DET_MSB 0xF076
> +#define F367_OFDM_LOCK_DETECT_MSB 0xF07600FF
> +
> +/* AGCTAR_LOCK_LSBS */
> +#define R367_OFDM_AGCTAR_LOCK_LSBS 0xF077
> +#define F367_OFDM_AUT_AGC_TARGET_LSB 0xF07700F0
> +#define F367_OFDM_LOCK_DETECT_LSB 0xF077000F
> +
> +/* AUT_GAIN_EN */
> +#define R367_OFDM_AUT_GAIN_EN 0xF078
> +#define F367_OFDM_AUT_ENMODE 0xF07800F0
> +#define F367_OFDM_AUT_GAIN2 0xF078000F
> +
> +/* AUT_CFG */
> +#define R367_OFDM_AUT_CFG 0xF079
> +#define F367_OFDM_AUT_N 0xF07900F8
> +#define F367_OFDM_INT_CHOICE 0xF0790006
> +#define F367_OFDM_INT_LOAD 0xF0790001
> +
> +/* LOCKN */
> +#define R367_OFDM_LOCKN 0xF07A
> +#define F367_OFDM_LOCK_N 0xF07A00F8
> +#define F367_OFDM_SEL_IQNTAR 0xF07A0004
> +#define F367_OFDM_LOCK_DETECT_CHOICE 0xF07A0003
> +
> +/* INT_X_3 */
> +#define R367_OFDM_INT_X_3 0xF07B
> +#define F367_OFDM_INT_X3 0xF07B00FF
> +
> +/* INT_X_2 */
> +#define R367_OFDM_INT_X_2 0xF07C
> +#define F367_OFDM_INT_X2 0xF07C00FF
> +
> +/* INT_X_1 */
> +#define R367_OFDM_INT_X_1 0xF07D
> +#define F367_OFDM_INT_X1 0xF07D00FF
> +
> +/* INT_X_0 */
> +#define R367_OFDM_INT_X_0 0xF07E
> +#define F367_OFDM_INT_X0 0xF07E00FF
> +
> +/* MIN_ERRX_MSB */
> +#define R367_OFDM_MIN_ERRX_MSB 0xF07F
> +#define F367_OFDM_MIN_ERR_X_MSB 0xF07F00FF
> +
> +/* COR_CTL */
> +#define R367_OFDM_COR_CTL 0xF080
> +#define F367_OFDM_CORE_ACTIVE 0xF0800020
> +#define F367_OFDM_HOLD 0xF0800010
> +#define F367_OFDM_CORE_STATE_CTL 0xF080000F
> +
> +/* COR_STAT */
> +#define R367_OFDM_COR_STAT 0xF081
> +#define F367_OFDM_SCATT_LOCKED 0xF0810080
> +#define F367_OFDM_TPS_LOCKED 0xF0810040
> +#define F367_OFDM_SYR_LOCKED_COR 0xF0810020
> +#define F367_OFDM_AGC_LOCKED_STAT 0xF0810010
> +#define F367_OFDM_CORE_STATE_STAT 0xF081000F
> +
> +/* COR_INTEN */
> +#define R367_OFDM_COR_INTEN 0xF082
> +#define F367_OFDM_INTEN 0xF0820080
> +#define F367_OFDM_INTEN_SYR 0xF0820020
> +#define F367_OFDM_INTEN_FFT 0xF0820010
> +#define F367_OFDM_INTEN_AGC 0xF0820008
> +#define F367_OFDM_INTEN_TPS1 0xF0820004
> +#define F367_OFDM_INTEN_TPS2 0xF0820002
> +#define F367_OFDM_INTEN_TPS3 0xF0820001
> +
> +/* COR_INTSTAT */
> +#define R367_OFDM_COR_INTSTAT 0xF083
> +#define F367_OFDM_INTSTAT_SYR 0xF0830020
> +#define F367_OFDM_INTSTAT_FFT 0xF0830010
> +#define F367_OFDM_INTSAT_AGC 0xF0830008
> +#define F367_OFDM_INTSTAT_TPS1 0xF0830004
> +#define F367_OFDM_INTSTAT_TPS2 0xF0830002
> +#define F367_OFDM_INTSTAT_TPS3 0xF0830001
> +
> +/* COR_MODEGUARD */
> +#define R367_OFDM_COR_MODEGUARD 0xF084
> +#define F367_OFDM_FORCE 0xF0840010
> +#define F367_OFDM_MODE 0xF084000C
> +#define F367_OFDM_GUARD 0xF0840003
> +
> +/* AGC_CTL */
> +#define R367_OFDM_AGC_CTL 0xF085
> +#define F367_OFDM_AGC_TIMING_FACTOR 0xF08500E0
> +#define F367_OFDM_AGC_LAST 0xF0850010
> +#define F367_OFDM_AGC_GAIN 0xF085000C
> +#define F367_OFDM_AGC_NEG 0xF0850002
> +#define F367_OFDM_AGC_SET 0xF0850001
> +
> +/* AGC_MANUAL1 */
> +#define R367_OFDM_AGC_MANUAL1 0xF086
> +#define F367_OFDM_AGC_VAL_LO 0xF08600FF
> +
> +/* AGC_MANUAL2 */
> +#define R367_OFDM_AGC_MANUAL2 0xF087
> +#define F367_OFDM_AGC_VAL_HI 0xF087000F
> +
> +/* AGC_TARG */
> +#define R367_OFDM_AGC_TARG 0xF088
> +#define F367_OFDM_AGC_TARGET 0xF08800FF
> +
> +/* AGC_GAIN1 */
> +#define R367_OFDM_AGC_GAIN1 0xF089
> +#define F367_OFDM_AGC_GAIN_LO 0xF08900FF
> +
> +/* AGC_GAIN2 */
> +#define R367_OFDM_AGC_GAIN2 0xF08A
> +#define F367_OFDM_AGC_LOCKED_GAIN2 0xF08A0010
> +#define F367_OFDM_AGC_GAIN_HI 0xF08A000F
> +
> +/* RESERVED_1 */
> +#define R367_OFDM_RESERVED_1 0xF08B
> +#define F367_OFDM_RESERVED1 0xF08B00FF
> +
> +/* RESERVED_2 */
> +#define R367_OFDM_RESERVED_2 0xF08C
> +#define F367_OFDM_RESERVED2 0xF08C00FF
> +
> +/* RESERVED_3 */
> +#define R367_OFDM_RESERVED_3 0xF08D
> +#define F367_OFDM_RESERVED3 0xF08D00FF
> +
> +/* CAS_CTL */
> +#define R367_OFDM_CAS_CTL 0xF08E
> +#define F367_OFDM_CCS_ENABLE 0xF08E0080
> +#define F367_OFDM_ACS_DISABLE 0xF08E0040
> +#define F367_OFDM_DAGC_DIS 0xF08E0020
> +#define F367_OFDM_DAGC_GAIN 0xF08E0018
> +#define F367_OFDM_CCSMU 0xF08E0007
> +
> +/* CAS_FREQ */
> +#define R367_OFDM_CAS_FREQ 0xF08F
> +#define F367_OFDM_CCS_FREQ 0xF08F00FF
> +
> +/* CAS_DAGCGAIN */
> +#define R367_OFDM_CAS_DAGCGAIN 0xF090
> +#define F367_OFDM_CAS_DAGC_GAIN 0xF09000FF
> +
> +/* SYR_CTL */
> +#define R367_OFDM_SYR_CTL 0xF091
> +#define F367_OFDM_SICTH_ENABLE 0xF0910080
> +#define F367_OFDM_LONG_ECHO 0xF0910078
> +#define F367_OFDM_AUTO_LE_EN 0xF0910004
> +#define F367_OFDM_SYR_BYPASS 0xF0910002
> +#define F367_OFDM_SYR_TR_DIS 0xF0910001
> +
> +/* SYR_STAT */
> +#define R367_OFDM_SYR_STAT 0xF092
> +#define F367_OFDM_SYR_LOCKED_STAT 0xF0920010
> +#define F367_OFDM_SYR_MODE 0xF092000C
> +#define F367_OFDM_SYR_GUARD 0xF0920003
> +
> +/* SYR_NCO1 */
> +#define R367_OFDM_SYR_NCO1 0xF093
> +#define F367_OFDM_SYR_NCO_LO 0xF09300FF
> +
> +/* SYR_NCO2 */
> +#define R367_OFDM_SYR_NCO2 0xF094
> +#define F367_OFDM_SYR_NCO_HI 0xF094003F
> +
> +/* SYR_OFFSET1 */
> +#define R367_OFDM_SYR_OFFSET1 0xF095
> +#define F367_OFDM_SYR_OFFSET_LO 0xF09500FF
> +
> +/* SYR_OFFSET2 */
> +#define R367_OFDM_SYR_OFFSET2 0xF096
> +#define F367_OFDM_SYR_OFFSET_HI 0xF096003F
> +
> +/* FFT_CTL */
> +#define R367_OFDM_FFT_CTL 0xF097
> +#define F367_OFDM_SHIFT_FFT_TRIG 0xF0970018
> +#define F367_OFDM_FFT_TRIGGER 0xF0970004
> +#define F367_OFDM_FFT_MANUAL 0xF0970002
> +#define F367_OFDM_IFFT_MODE 0xF0970001
> +
> +/* SCR_CTL */
> +#define R367_OFDM_SCR_CTL 0xF098
> +#define F367_OFDM_SYRADJDECAY 0xF0980070
> +#define F367_OFDM_SCR_CPEDIS 0xF0980002
> +#define F367_OFDM_SCR_DIS 0xF0980001
> +
> +/* PPM_CTL1 */
> +#define R367_OFDM_PPM_CTL1 0xF099
> +#define F367_OFDM_PPM_MAXFREQ 0xF0990030
> +#define F367_OFDM_PPM_MAXTIM 0xF0990008
> +#define F367_OFDM_PPM_INVSEL 0xF0990004
> +#define F367_OFDM_PPM_SCATDIS 0xF0990002
> +#define F367_OFDM_PPM_BYP 0xF0990001
> +
> +/* TRL_CTL */
> +#define R367_OFDM_TRL_CTL 0xF09A
> +#define F367_OFDM_TRL_NOMRATE_LSB 0xF09A0080
> +#define F367_OFDM_TRL_GAIN_FACTOR 0xF09A0078
> +#define F367_OFDM_TRL_LOOPGAIN 0xF09A0007
> +
> +/* TRL_NOMRATE1 */
> +#define R367_OFDM_TRL_NOMRATE1 0xF09B
> +#define F367_OFDM_TRL_NOMRATE_LO 0xF09B00FF
> +
> +/* TRL_NOMRATE2 */
> +#define R367_OFDM_TRL_NOMRATE2 0xF09C
> +#define F367_OFDM_TRL_NOMRATE_HI 0xF09C00FF
> +
> +/* TRL_TIME1 */
> +#define R367_OFDM_TRL_TIME1 0xF09D
> +#define F367_OFDM_TRL_TOFFSET_LO 0xF09D00FF
> +
> +/* TRL_TIME2 */
> +#define R367_OFDM_TRL_TIME2 0xF09E
> +#define F367_OFDM_TRL_TOFFSET_HI 0xF09E00FF
> +
> +/* CRL_CTL */
> +#define R367_OFDM_CRL_CTL 0xF09F
> +#define F367_OFDM_CRL_DIS 0xF09F0080
> +#define F367_OFDM_CRL_GAIN_FACTOR 0xF09F0078
> +#define F367_OFDM_CRL_LOOPGAIN 0xF09F0007
> +
> +/* CRL_FREQ1 */
> +#define R367_OFDM_CRL_FREQ1 0xF0A0
> +#define F367_OFDM_CRL_FOFFSET_LO 0xF0A000FF
> +
> +/* CRL_FREQ2 */
> +#define R367_OFDM_CRL_FREQ2 0xF0A1
> +#define F367_OFDM_CRL_FOFFSET_HI 0xF0A100FF
> +
> +/* CRL_FREQ3 */
> +#define R367_OFDM_CRL_FREQ3 0xF0A2
> +#define F367_OFDM_CRL_FOFFSET_VHI 0xF0A200FF
> +
> +/* TPS_SFRAME_CTL */
> +#define R367_OFDM_TPS_SFRAME_CTL 0xF0A3
> +#define F367_OFDM_TPS_SFRAME_SYNC 0xF0A30001
> +
> +/* CHC_SNR */
> +#define R367_OFDM_CHC_SNR 0xF0A4
> +#define F367_OFDM_CHCSNR 0xF0A400FF
> +
> +/* BDI_CTL */
> +#define R367_OFDM_BDI_CTL 0xF0A5
> +#define F367_OFDM_BDI_LPSEL 0xF0A50002
> +#define F367_OFDM_BDI_SERIAL 0xF0A50001
> +
> +/* DMP_CTL */
> +#define R367_OFDM_DMP_CTL 0xF0A6
> +#define F367_OFDM_DMP_SCALING_FACTOR 0xF0A6001E
> +#define F367_OFDM_DMP_SDDIS 0xF0A60001
> +
> +/* TPS_RCVD1 */
> +#define R367_OFDM_TPS_RCVD1 0xF0A7
> +#define F367_OFDM_TPS_CHANGE 0xF0A70040
> +#define F367_OFDM_BCH_OK 0xF0A70020
> +#define F367_OFDM_TPS_SYNC 0xF0A70010
> +#define F367_OFDM_TPS_FRAME 0xF0A70003
> +
> +/* TPS_RCVD2 */
> +#define R367_OFDM_TPS_RCVD2 0xF0A8
> +#define F367_OFDM_TPS_HIERMODE 0xF0A80070
> +#define F367_OFDM_TPS_CONST 0xF0A80003
> +
> +/* TPS_RCVD3 */
> +#define R367_OFDM_TPS_RCVD3 0xF0A9
> +#define F367_OFDM_TPS_LPCODE 0xF0A90070
> +#define F367_OFDM_TPS_HPCODE 0xF0A90007
> +
> +/* TPS_RCVD4 */
> +#define R367_OFDM_TPS_RCVD4 0xF0AA
> +#define F367_OFDM_TPS_GUARD 0xF0AA0030
> +#define F367_OFDM_TPS_MODE 0xF0AA0003
> +
> +/* TPS_ID_CELL1 */
> +#define R367_OFDM_TPS_ID_CELL1 0xF0AB
> +#define F367_OFDM_TPS_ID_CELL_LO 0xF0AB00FF
> +
> +/* TPS_ID_CELL2 */
> +#define R367_OFDM_TPS_ID_CELL2 0xF0AC
> +#define F367_OFDM_TPS_ID_CELL_HI 0xF0AC00FF
> +
> +/* TPS_RCVD5_SET1 */
> +#define R367_OFDM_TPS_RCVD5_SET1 0xF0AD
> +#define F367_OFDM_TPS_NA 0xF0AD00FC
> +#define F367_OFDM_TPS_SETFRAME 0xF0AD0003
> +
> +/* TPS_SET2 */
> +#define R367_OFDM_TPS_SET2 0xF0AE
> +#define F367_OFDM_TPS_SETHIERMODE 0xF0AE0070
> +#define F367_OFDM_TPS_SETCONST 0xF0AE0003
> +
> +/* TPS_SET3 */
> +#define R367_OFDM_TPS_SET3 0xF0AF
> +#define F367_OFDM_TPS_SETLPCODE 0xF0AF0070
> +#define F367_OFDM_TPS_SETHPCODE 0xF0AF0007
> +
> +/* TPS_CTL */
> +#define R367_OFDM_TPS_CTL 0xF0B0
> +#define F367_OFDM_TPS_IMM 0xF0B00004
> +#define F367_OFDM_TPS_BCHDIS 0xF0B00002
> +#define F367_OFDM_TPS_UPDDIS 0xF0B00001
> +
> +/* CTL_FFTOSNUM */
> +#define R367_OFDM_CTL_FFTOSNUM 0xF0B1
> +#define F367_OFDM_SYMBOL_NUMBER 0xF0B1007F
> +
> +/* TESTSELECT */
> +#define R367_OFDM_TESTSELECT 0xF0B2
> +#define F367_OFDM_TEST_SELECT 0xF0B2001F
> +
> +/* MSC_REV */
> +#define R367_OFDM_MSC_REV 0xF0B3
> +#define F367_OFDM_REV_NUMBER 0xF0B300FF
> +
> +/* PIR_CTL */
> +#define R367_OFDM_PIR_CTL 0xF0B4
> +#define F367_OFDM_FREEZE 0xF0B40001
> +
> +/* SNR_CARRIER1 */
> +#define R367_OFDM_SNR_CARRIER1 0xF0B5
> +#define F367_OFDM_SNR_CARRIER_LO 0xF0B500FF
> +
> +/* SNR_CARRIER2 */
> +#define R367_OFDM_SNR_CARRIER2 0xF0B6
> +#define F367_OFDM_MEAN 0xF0B600C0
> +#define F367_OFDM_SNR_CARRIER_HI 0xF0B6001F
> +
> +/* PPM_CPAMP */
> +#define R367_OFDM_PPM_CPAMP 0xF0B7
> +#define F367_OFDM_PPM_CPC 0xF0B700FF
> +
> +/* TSM_AP0 */
> +#define R367_OFDM_TSM_AP0 0xF0B8
> +#define F367_OFDM_ADDRESS_BYTE_0 0xF0B800FF
> +
> +/* TSM_AP1 */
> +#define R367_OFDM_TSM_AP1 0xF0B9
> +#define F367_OFDM_ADDRESS_BYTE_1 0xF0B900FF
> +
> +/* TSM_AP2 */
> +#define R367_OFDM_TSM_AP2 0xF0BA
> +#define F367_OFDM_DATA_BYTE_0 0xF0BA00FF
> +
> +/* TSM_AP3 */
> +#define R367_OFDM_TSM_AP3 0xF0BB
> +#define F367_OFDM_DATA_BYTE_1 0xF0BB00FF
> +
> +/* TSM_AP4 */
> +#define R367_OFDM_TSM_AP4 0xF0BC
> +#define F367_OFDM_DATA_BYTE_2 0xF0BC00FF
> +
> +/* TSM_AP5 */
> +#define R367_OFDM_TSM_AP5 0xF0BD
> +#define F367_OFDM_DATA_BYTE_3 0xF0BD00FF
> +
> +/* TSM_AP6 */
> +#define R367_OFDM_TSM_AP6 0xF0BE
> +#define F367_OFDM_TSM_AP_6 0xF0BE00FF
> +
> +/* TSM_AP7 */
> +#define R367_OFDM_TSM_AP7 0xF0BF
> +#define F367_OFDM_MEM_SELECT_BYTE 0xF0BF00FF
> +
> +/* TSTRES */
> +#define R367_TSTRES 0xF0C0
> +#define F367_FRES_DISPLAY 0xF0C00080
> +#define F367_FRES_FIFO_AD 0xF0C00020
> +#define F367_FRESRS 0xF0C00010
> +#define F367_FRESACS 0xF0C00008
> +#define F367_FRESFEC 0xF0C00004
> +#define F367_FRES_PRIF 0xF0C00002
> +#define F367_FRESCORE 0xF0C00001
> +
> +/* ANACTRL */
> +#define R367_ANACTRL 0xF0C1
> +#define F367_BYPASS_XTAL 0xF0C10040
> +#define F367_BYPASS_PLLXN 0xF0C1000C
> +#define F367_DIS_PAD_OSC 0xF0C10002
> +#define F367_STDBY_PLLXN 0xF0C10001
> +
> +/* TSTBUS */
> +#define R367_TSTBUS 0xF0C2
> +#define F367_TS_BYTE_CLK_INV 0xF0C20080
> +#define F367_CFG_IP 0xF0C20070
> +#define F367_CFG_TST 0xF0C2000F
> +
> +/* TSTRATE */
> +#define R367_TSTRATE 0xF0C6
> +#define F367_FORCEPHA 0xF0C60080
> +#define F367_FNEWPHA 0xF0C60010
> +#define F367_FROT90 0xF0C60008
> +#define F367_FR 0xF0C60007
> +
> +/* CONSTMODE */
> +#define R367_OFDM_CONSTMODE 0xF0CB
> +#define F367_OFDM_TST_PRIF 0xF0CB00E0
> +#define F367_OFDM_CAR_TYPE 0xF0CB0018
> +#define F367_OFDM_CONST_MODE 0xF0CB0003
> +
> +/* CONSTCARR1 */
> +#define R367_OFDM_CONSTCARR1 0xF0CC
> +#define F367_OFDM_CONST_CARR_LO 0xF0CC00FF
> +
> +/* CONSTCARR2 */
> +#define R367_OFDM_CONSTCARR2 0xF0CD
> +#define F367_OFDM_CONST_CARR_HI 0xF0CD001F
> +
> +/* ICONSTEL */
> +#define R367_OFDM_ICONSTEL 0xF0CE
> +#define F367_OFDM_PICONSTEL 0xF0CE00FF
> +
> +/* QCONSTEL */
> +#define R367_OFDM_QCONSTEL 0xF0CF
> +#define F367_OFDM_PQCONSTEL 0xF0CF00FF
> +
> +/* TSTBISTRES0 */
> +#define R367_OFDM_TSTBISTRES0 0xF0D0
> +#define F367_OFDM_BEND_PPM 0xF0D00080
> +#define F367_OFDM_BBAD_PPM 0xF0D00040
> +#define F367_OFDM_BEND_FFTW 0xF0D00020
> +#define F367_OFDM_BBAD_FFTW 0xF0D00010
> +#define F367_OFDM_BEND_FFT_BUF 0xF0D00008
> +#define F367_OFDM_BBAD_FFT_BUF 0xF0D00004
> +#define F367_OFDM_BEND_SYR 0xF0D00002
> +#define F367_OFDM_BBAD_SYR 0xF0D00001
> +
> +/* TSTBISTRES1 */
> +#define R367_OFDM_TSTBISTRES1 0xF0D1
> +#define F367_OFDM_BEND_CHC_CP 0xF0D10080
> +#define F367_OFDM_BBAD_CHC_CP 0xF0D10040
> +#define F367_OFDM_BEND_CHCI 0xF0D10020
> +#define F367_OFDM_BBAD_CHCI 0xF0D10010
> +#define F367_OFDM_BEND_BDI 0xF0D10008
> +#define F367_OFDM_BBAD_BDI 0xF0D10004
> +#define F367_OFDM_BEND_SDI 0xF0D10002
> +#define F367_OFDM_BBAD_SDI 0xF0D10001
> +
> +/* TSTBISTRES2 */
> +#define R367_OFDM_TSTBISTRES2 0xF0D2
> +#define F367_OFDM_BEND_CHC_INC 0xF0D20080
> +#define F367_OFDM_BBAD_CHC_INC 0xF0D20040
> +#define F367_OFDM_BEND_CHC_SPP 0xF0D20020
> +#define F367_OFDM_BBAD_CHC_SPP 0xF0D20010
> +#define F367_OFDM_BEND_CHC_CPP 0xF0D20008
> +#define F367_OFDM_BBAD_CHC_CPP 0xF0D20004
> +#define F367_OFDM_BEND_CHC_SP 0xF0D20002
> +#define F367_OFDM_BBAD_CHC_SP 0xF0D20001
> +
> +/* TSTBISTRES3 */
> +#define R367_OFDM_TSTBISTRES3 0xF0D3
> +#define F367_OFDM_BEND_QAM 0xF0D30080
> +#define F367_OFDM_BBAD_QAM 0xF0D30040
> +#define F367_OFDM_BEND_SFEC_VIT 0xF0D30020
> +#define F367_OFDM_BBAD_SFEC_VIT 0xF0D30010
> +#define F367_OFDM_BEND_SFEC_DLINE 0xF0D30008
> +#define F367_OFDM_BBAD_SFEC_DLINE 0xF0D30004
> +#define F367_OFDM_BEND_SFEC_HW 0xF0D30002
> +#define F367_OFDM_BBAD_SFEC_HW 0xF0D30001
> +
> +/* RF_AGC1 */
> +#define R367_RF_AGC1 0xF0D4
> +#define F367_RF_AGC1_LEVEL_HI 0xF0D400FF
> +
> +/* RF_AGC2 */
> +#define R367_RF_AGC2 0xF0D5
> +#define F367_REF_ADGP 0xF0D50080
> +#define F367_STDBY_ADCGP 0xF0D50020
> +#define F367_CHANNEL_SEL 0xF0D5001C
> +#define F367_RF_AGC1_LEVEL_LO 0xF0D50003
> +
> +/* ANADIGCTRL */
> +#define R367_ANADIGCTRL 0xF0D7
> +#define F367_SEL_CLKDEM 0xF0D70020
> +#define F367_EN_BUFFER_Q 0xF0D70010
> +#define F367_EN_BUFFER_I 0xF0D70008
> +#define F367_ADC_RIS_EGDE 0xF0D70004
> +#define F367_SGN_ADC 0xF0D70002
> +#define F367_SEL_AD12_SYNC 0xF0D70001
> +
> +/* PLLMDIV */
> +#define R367_PLLMDIV 0xF0D8
> +#define F367_PLL_MDIV 0xF0D800FF
> +
> +/* PLLNDIV */
> +#define R367_PLLNDIV 0xF0D9
> +#define F367_PLL_NDIV 0xF0D900FF
> +
> +/* PLLSETUP */
> +#define R367_PLLSETUP 0xF0DA
> +#define F367_PLL_PDIV 0xF0DA0070
> +#define F367_PLL_KDIV 0xF0DA000F
> +
> +/* DUAL_AD12 */
> +#define R367_DUAL_AD12 0xF0DB
> +#define F367_FS20M 0xF0DB0020
> +#define F367_FS50M 0xF0DB0010
> +#define F367_INMODE0 0xF0DB0008
> +#define F367_POFFQ 0xF0DB0004
> +#define F367_POFFI 0xF0DB0002
> +#define F367_INMODE1 0xF0DB0001
> +
> +/* TSTBIST */
> +#define R367_TSTBIST 0xF0DC
> +#define F367_TST_BYP_CLK 0xF0DC0080
> +#define F367_TST_GCLKENA_STD 0xF0DC0040
> +#define F367_TST_GCLKENA 0xF0DC0020
> +#define F367_TST_MEMBIST 0xF0DC001F
> +
> +/* PAD_COMP_CTRL */
> +#define R367_PAD_COMP_CTRL 0xF0DD
> +#define F367_COMPTQ 0xF0DD0010
> +#define F367_COMPEN 0xF0DD0008
> +#define F367_FREEZE2 0xF0DD0004
> +#define F367_SLEEP_INHBT 0xF0DD0002
> +#define F367_CHIP_SLEEP 0xF0DD0001
> +
> +/* PAD_COMP_WR */
> +#define R367_PAD_COMP_WR 0xF0DE
> +#define F367_WR_ASRC 0xF0DE007F
> +
> +/* PAD_COMP_RD */
> +#define R367_PAD_COMP_RD 0xF0DF
> +#define F367_COMPOK 0xF0DF0080
> +#define F367_RD_ASRC 0xF0DF007F
> +
> +/* SYR_TARGET_FFTADJT_MSB */
> +#define R367_OFDM_SYR_TARGET_FFTADJT_MSB 0xF100
> +#define F367_OFDM_SYR_START 0xF1000080
> +#define F367_OFDM_SYR_TARGET_FFTADJ_HI 0xF100000F
> +
> +/* SYR_TARGET_FFTADJT_LSB */
> +#define R367_OFDM_SYR_TARGET_FFTADJT_LSB 0xF101
> +#define F367_OFDM_SYR_TARGET_FFTADJ_LO 0xF10100FF
> +
> +/* SYR_TARGET_CHCADJT_MSB */
> +#define R367_OFDM_SYR_TARGET_CHCADJT_MSB 0xF102
> +#define F367_OFDM_SYR_TARGET_CHCADJ_HI 0xF102000F
> +
> +/* SYR_TARGET_CHCADJT_LSB */
> +#define R367_OFDM_SYR_TARGET_CHCADJT_LSB 0xF103
> +#define F367_OFDM_SYR_TARGET_CHCADJ_LO 0xF10300FF
> +
> +/* SYR_FLAG */
> +#define R367_OFDM_SYR_FLAG 0xF104
> +#define F367_OFDM_TRIG_FLG1 0xF1040080
> +#define F367_OFDM_TRIG_FLG0 0xF1040040
> +#define F367_OFDM_FFT_FLG1 0xF1040008
> +#define F367_OFDM_FFT_FLG0 0xF1040004
> +#define F367_OFDM_CHC_FLG1 0xF1040002
> +#define F367_OFDM_CHC_FLG0 0xF1040001
> +
> +/* CRL_TARGET1 */
> +#define R367_OFDM_CRL_TARGET1 0xF105
> +#define F367_OFDM_CRL_START 0xF1050080
> +#define F367_OFDM_CRL_TARGET_VHI 0xF105000F
> +
> +/* CRL_TARGET2 */
> +#define R367_OFDM_CRL_TARGET2 0xF106
> +#define F367_OFDM_CRL_TARGET_HI 0xF10600FF
> +
> +/* CRL_TARGET3 */
> +#define R367_OFDM_CRL_TARGET3 0xF107
> +#define F367_OFDM_CRL_TARGET_LO 0xF10700FF
> +
> +/* CRL_TARGET4 */
> +#define R367_OFDM_CRL_TARGET4 0xF108
> +#define F367_OFDM_CRL_TARGET_VLO 0xF10800FF
> +
> +/* CRL_FLAG */
> +#define R367_OFDM_CRL_FLAG 0xF109
> +#define F367_OFDM_CRL_FLAG1 0xF1090002
> +#define F367_OFDM_CRL_FLAG0 0xF1090001
> +
> +/* TRL_TARGET1 */
> +#define R367_OFDM_TRL_TARGET1 0xF10A
> +#define F367_OFDM_TRL_TARGET_HI 0xF10A00FF
> +
> +/* TRL_TARGET2 */
> +#define R367_OFDM_TRL_TARGET2 0xF10B
> +#define F367_OFDM_TRL_TARGET_LO 0xF10B00FF
> +
> +/* TRL_CHC */
> +#define R367_OFDM_TRL_CHC 0xF10C
> +#define F367_OFDM_TRL_START 0xF10C0080
> +#define F367_OFDM_CHC_START 0xF10C0040
> +#define F367_OFDM_TRL_FLAG1 0xF10C0002
> +#define F367_OFDM_TRL_FLAG0 0xF10C0001
> +
> +/* CHC_SNR_TARG */
> +#define R367_OFDM_CHC_SNR_TARG 0xF10D
> +#define F367_OFDM_CHC_SNR_TARGET 0xF10D00FF
> +
> +/* TOP_TRACK */
> +#define R367_OFDM_TOP_TRACK 0xF10E
> +#define F367_OFDM_TOP_START 0xF10E0080
> +#define F367_OFDM_FIRST_FLAG 0xF10E0070
> +#define F367_OFDM_TOP_FLAG1 0xF10E0008
> +#define F367_OFDM_TOP_FLAG0 0xF10E0004
> +#define F367_OFDM_CHC_FLAG1 0xF10E0002
> +#define F367_OFDM_CHC_FLAG0 0xF10E0001
> +
> +/* TRACKER_FREE1 */
> +#define R367_OFDM_TRACKER_FREE1 0xF10F
> +#define F367_OFDM_TRACKER_FREE_1 0xF10F00FF
> +
> +/* ERROR_CRL1 */
> +#define R367_OFDM_ERROR_CRL1 0xF110
> +#define F367_OFDM_ERROR_CRL_VHI 0xF11000FF
> +
> +/* ERROR_CRL2 */
> +#define R367_OFDM_ERROR_CRL2 0xF111
> +#define F367_OFDM_ERROR_CRL_HI 0xF11100FF
> +
> +/* ERROR_CRL3 */
> +#define R367_OFDM_ERROR_CRL3 0xF112
> +#define F367_OFDM_ERROR_CRL_LOI 0xF11200FF
> +
> +/* ERROR_CRL4 */
> +#define R367_OFDM_ERROR_CRL4 0xF113
> +#define F367_OFDM_ERROR_CRL_VLO 0xF11300FF
> +
> +/* DEC_NCO1 */
> +#define R367_OFDM_DEC_NCO1 0xF114
> +#define F367_OFDM_DEC_NCO_VHI 0xF11400FF
> +
> +/* DEC_NCO2 */
> +#define R367_OFDM_DEC_NCO2 0xF115
> +#define F367_OFDM_DEC_NCO_HI 0xF11500FF
> +
> +/* DEC_NCO3 */
> +#define R367_OFDM_DEC_NCO3 0xF116
> +#define F367_OFDM_DEC_NCO_LO 0xF11600FF
> +
> +/* SNR */
> +#define R367_OFDM_SNR 0xF117
> +#define F367_OFDM_SNRATIO 0xF11700FF
> +
> +/* SYR_FFTADJ1 */
> +#define R367_OFDM_SYR_FFTADJ1 0xF118
> +#define F367_OFDM_SYR_FFTADJ_HI 0xF11800FF
> +
> +/* SYR_FFTADJ2 */
> +#define R367_OFDM_SYR_FFTADJ2 0xF119
> +#define F367_OFDM_SYR_FFTADJ_LO 0xF11900FF
> +
> +/* SYR_CHCADJ1 */
> +#define R367_OFDM_SYR_CHCADJ1 0xF11A
> +#define F367_OFDM_SYR_CHCADJ_HI 0xF11A00FF
> +
> +/* SYR_CHCADJ2 */
> +#define R367_OFDM_SYR_CHCADJ2 0xF11B
> +#define F367_OFDM_SYR_CHCADJ_LO 0xF11B00FF
> +
> +/* SYR_OFF */
> +#define R367_OFDM_SYR_OFF 0xF11C
> +#define F367_OFDM_SYR_OFFSET 0xF11C00FF
> +
> +/* PPM_OFFSET1 */
> +#define R367_OFDM_PPM_OFFSET1 0xF11D
> +#define F367_OFDM_PPM_OFFSET_HI 0xF11D00FF
> +
> +/* PPM_OFFSET2 */
> +#define R367_OFDM_PPM_OFFSET2 0xF11E
> +#define F367_OFDM_PPM_OFFSET_LO 0xF11E00FF
> +
> +/* TRACKER_FREE2 */
> +#define R367_OFDM_TRACKER_FREE2 0xF11F
> +#define F367_OFDM_TRACKER_FREE_2 0xF11F00FF
> +
> +/* DEBG_LT10 */
> +#define R367_OFDM_DEBG_LT10 0xF120
> +#define F367_OFDM_DEBUG_LT10 0xF12000FF
> +
> +/* DEBG_LT11 */
> +#define R367_OFDM_DEBG_LT11 0xF121
> +#define F367_OFDM_DEBUG_LT11 0xF12100FF
> +
> +/* DEBG_LT12 */
> +#define R367_OFDM_DEBG_LT12 0xF122
> +#define F367_OFDM_DEBUG_LT12 0xF12200FF
> +
> +/* DEBG_LT13 */
> +#define R367_OFDM_DEBG_LT13 0xF123
> +#define F367_OFDM_DEBUG_LT13 0xF12300FF
> +
> +/* DEBG_LT14 */
> +#define R367_OFDM_DEBG_LT14 0xF124
> +#define F367_OFDM_DEBUG_LT14 0xF12400FF
> +
> +/* DEBG_LT15 */
> +#define R367_OFDM_DEBG_LT15 0xF125
> +#define F367_OFDM_DEBUG_LT15 0xF12500FF
> +
> +/* DEBG_LT16 */
> +#define R367_OFDM_DEBG_LT16 0xF126
> +#define F367_OFDM_DEBUG_LT16 0xF12600FF
> +
> +/* DEBG_LT17 */
> +#define R367_OFDM_DEBG_LT17 0xF127
> +#define F367_OFDM_DEBUG_LT17 0xF12700FF
> +
> +/* DEBG_LT18 */
> +#define R367_OFDM_DEBG_LT18 0xF128
> +#define F367_OFDM_DEBUG_LT18 0xF12800FF
> +
> +/* DEBG_LT19 */
> +#define R367_OFDM_DEBG_LT19 0xF129
> +#define F367_OFDM_DEBUG_LT19 0xF12900FF
> +
> +/* DEBG_LT1A */
> +#define R367_OFDM_DEBG_LT1A 0xF12A
> +#define F367_OFDM_DEBUG_LT1A 0xF12A00FF
> +
> +/* DEBG_LT1B */
> +#define R367_OFDM_DEBG_LT1B 0xF12B
> +#define F367_OFDM_DEBUG_LT1B 0xF12B00FF
> +
> +/* DEBG_LT1C */
> +#define R367_OFDM_DEBG_LT1C 0xF12C
> +#define F367_OFDM_DEBUG_LT1C 0xF12C00FF
> +
> +/* DEBG_LT1D */
> +#define R367_OFDM_DEBG_LT1D 0xF12D
> +#define F367_OFDM_DEBUG_LT1D 0xF12D00FF
> +
> +/* DEBG_LT1E */
> +#define R367_OFDM_DEBG_LT1E 0xF12E
> +#define F367_OFDM_DEBUG_LT1E 0xF12E00FF
> +
> +/* DEBG_LT1F */
> +#define R367_OFDM_DEBG_LT1F 0xF12F
> +#define F367_OFDM_DEBUG_LT1F 0xF12F00FF
> +
> +/* RCCFGH */
> +#define R367_OFDM_RCCFGH 0xF200
> +#define F367_OFDM_TSRCFIFO_DVBCI 0xF2000080
> +#define F367_OFDM_TSRCFIFO_SERIAL 0xF2000040
> +#define F367_OFDM_TSRCFIFO_DISABLE 0xF2000020
> +#define F367_OFDM_TSFIFO_2TORC 0xF2000010
> +#define F367_OFDM_TSRCFIFO_HSGNLOUT 0xF2000008
> +#define F367_OFDM_TSRCFIFO_ERRMODE 0xF2000006
> +#define F367_OFDM_RCCFGH_0 0xF2000001
> +
> +/* RCCFGM */
> +#define R367_OFDM_RCCFGM 0xF201
> +#define F367_OFDM_TSRCFIFO_MANSPEED 0xF20100C0
> +#define F367_OFDM_TSRCFIFO_PERMDATA 0xF2010020
> +#define F367_OFDM_TSRCFIFO_NONEWSGNL 0xF2010010
> +#define F367_OFDM_RCBYTE_OVERSAMPLING 0xF201000E
> +#define F367_OFDM_TSRCFIFO_INVDATA 0xF2010001
> +
> +/* RCCFGL */
> +#define R367_OFDM_RCCFGL 0xF202
> +#define F367_OFDM_TSRCFIFO_BCLKDEL1CK 0xF20200C0
> +#define F367_OFDM_RCCFGL_5 0xF2020020
> +#define F367_OFDM_TSRCFIFO_DUTY50 0xF2020010
> +#define F367_OFDM_TSRCFIFO_NSGNL2DATA 0xF2020008
> +#define F367_OFDM_TSRCFIFO_DISSERMUX 0xF2020004
> +#define F367_OFDM_RCCFGL_1 0xF2020002
> +#define F367_OFDM_TSRCFIFO_STOPCKDIS 0xF2020001
> +
> +/* RCINSDELH */
> +#define R367_OFDM_RCINSDELH 0xF203
> +#define F367_OFDM_TSRCDEL_SYNCBYTE 0xF2030080
> +#define F367_OFDM_TSRCDEL_XXHEADER 0xF2030040
> +#define F367_OFDM_TSRCDEL_BBHEADER 0xF2030020
> +#define F367_OFDM_TSRCDEL_DATAFIELD 0xF2030010
> +#define F367_OFDM_TSRCINSDEL_ISCR 0xF2030008
> +#define F367_OFDM_TSRCINSDEL_NPD 0xF2030004
> +#define F367_OFDM_TSRCINSDEL_RSPARITY 0xF2030002
> +#define F367_OFDM_TSRCINSDEL_CRC8 0xF2030001
> +
> +/* RCINSDELM */
> +#define R367_OFDM_RCINSDELM 0xF204
> +#define F367_OFDM_TSRCINS_BBPADDING 0xF2040080
> +#define F367_OFDM_TSRCINS_BCHFEC 0xF2040040
> +#define F367_OFDM_TSRCINS_LDPCFEC 0xF2040020
> +#define F367_OFDM_TSRCINS_EMODCOD 0xF2040010
> +#define F367_OFDM_TSRCINS_TOKEN 0xF2040008
> +#define F367_OFDM_TSRCINS_XXXERR 0xF2040004
> +#define F367_OFDM_TSRCINS_MATYPE 0xF2040002
> +#define F367_OFDM_TSRCINS_UPL 0xF2040001
> +
> +/* RCINSDELL */
> +#define R367_OFDM_RCINSDELL 0xF205
> +#define F367_OFDM_TSRCINS_DFL 0xF2050080
> +#define F367_OFDM_TSRCINS_SYNCD 0xF2050040
> +#define F367_OFDM_TSRCINS_BLOCLEN 0xF2050020
> +#define F367_OFDM_TSRCINS_SIGPCOUNT 0xF2050010
> +#define F367_OFDM_TSRCINS_FIFO 0xF2050008
> +#define F367_OFDM_TSRCINS_REALPACK 0xF2050004
> +#define F367_OFDM_TSRCINS_TSCONFIG 0xF2050002
> +#define F367_OFDM_TSRCINS_LATENCY 0xF2050001
> +
> +/* RCSTATUS */
> +#define R367_OFDM_RCSTATUS 0xF206
> +#define F367_OFDM_TSRCFIFO_LINEOK 0xF2060080
> +#define F367_OFDM_TSRCFIFO_ERROR 0xF2060040
> +#define F367_OFDM_TSRCFIFO_DATA7 0xF2060020
> +#define F367_OFDM_RCSTATUS_4 0xF2060010
> +#define F367_OFDM_TSRCFIFO_DEMODSEL 0xF2060008
> +#define F367_OFDM_TSRC1FIFOSPEED_STORE 0xF2060004
> +#define F367_OFDM_RCSTATUS_1 0xF2060002
> +#define F367_OFDM_TSRCSERIAL_IMPOSSIBLE 0xF2060001
> +
> +/* RCSPEED */
> +#define R367_OFDM_RCSPEED 0xF207
> +#define F367_OFDM_TSRCFIFO_OUTSPEED 0xF20700FF
> +
> +/* RCDEBUGM */
> +#define R367_OFDM_RCDEBUGM 0xF208
> +#define F367_OFDM_SD_UNSYNC 0xF2080080
> +#define F367_OFDM_ULFLOCK_DETECTM 0xF2080040
> +#define F367_OFDM_SUL_SELECTOS 0xF2080020
> +#define F367_OFDM_DILUL_NOSCRBLE 0xF2080010
> +#define F367_OFDM_NUL_SCRB 0xF2080008
> +#define F367_OFDM_UL_SCRB 0xF2080004
> +#define F367_OFDM_SCRAULBAD 0xF2080002
> +#define F367_OFDM_SCRAUL_UNSYNC 0xF2080001
> +
> +/* RCDEBUGL */
> +#define R367_OFDM_RCDEBUGL 0xF209
> +#define F367_OFDM_RS_ERR 0xF2090080
> +#define F367_OFDM_LLFLOCK_DETECTM 0xF2090040
> +#define F367_OFDM_NOT_SUL_SELECTOS 0xF2090020
> +#define F367_OFDM_DILLL_NOSCRBLE 0xF2090010
> +#define F367_OFDM_NLL_SCRB 0xF2090008
> +#define F367_OFDM_LL_SCRB 0xF2090004
> +#define F367_OFDM_SCRALLBAD 0xF2090002
> +#define F367_OFDM_SCRALL_UNSYNC 0xF2090001
> +
> +/* RCOBSCFG */
> +#define R367_OFDM_RCOBSCFG 0xF20A
> +#define F367_OFDM_TSRCFIFO_OBSCFG 0xF20A00FF
> +
> +/* RCOBSM */
> +#define R367_OFDM_RCOBSM 0xF20B
> +#define F367_OFDM_TSRCFIFO_OBSDATA_HI 0xF20B00FF
> +
> +/* RCOBSL */
> +#define R367_OFDM_RCOBSL 0xF20C
> +#define F367_OFDM_TSRCFIFO_OBSDATA_LO 0xF20C00FF
> +
> +/* RCFECSPY */
> +#define R367_OFDM_RCFECSPY 0xF210
> +#define F367_OFDM_SPYRC_ENABLE 0xF2100080
> +#define F367_OFDM_RCNO_SYNCBYTE 0xF2100040
> +#define F367_OFDM_RCSERIAL_MODE 0xF2100020
> +#define F367_OFDM_RCUNUSUAL_PACKET 0xF2100010
> +#define F367_OFDM_BERRCMETER_DATAMODE 0xF210000C
> +#define F367_OFDM_BERRCMETER_LMODE 0xF2100002
> +#define F367_OFDM_BERRCMETER_RESET 0xF2100001
> +
> +/* RCFSPYCFG */
> +#define R367_OFDM_RCFSPYCFG 0xF211
> +#define F367_OFDM_FECSPYRC_INPUT 0xF21100C0
> +#define F367_OFDM_RCRST_ON_ERROR 0xF2110020
> +#define F367_OFDM_RCONE_SHOT 0xF2110010
> +#define F367_OFDM_RCI2C_MODE 0xF211000C
> +#define F367_OFDM_SPYRC_HSTERESIS 0xF2110003
> +
> +/* RCFSPYDATA */
> +#define R367_OFDM_RCFSPYDATA 0xF212
> +#define F367_OFDM_SPYRC_STUFFING 0xF2120080
> +#define F367_OFDM_RCNOERR_PKTJITTER 0xF2120040
> +#define F367_OFDM_SPYRC_CNULLPKT 0xF2120020
> +#define F367_OFDM_SPYRC_OUTDATA_MODE 0xF212001F
> +
> +/* RCFSPYOUT */
> +#define R367_OFDM_RCFSPYOUT 0xF213
> +#define F367_OFDM_FSPYRC_DIRECT 0xF2130080
> +#define F367_OFDM_RCFSPYOUT_6 0xF2130040
> +#define F367_OFDM_SPYRC_OUTDATA_BUS 0xF2130038
> +#define F367_OFDM_RCSTUFF_MODE 0xF2130007
> +
> +/* RCFSTATUS */
> +#define R367_OFDM_RCFSTATUS 0xF214
> +#define F367_OFDM_SPYRC_ENDSIM 0xF2140080
> +#define F367_OFDM_RCVALID_SIM 0xF2140040
> +#define F367_OFDM_RCFOUND_SIGNAL 0xF2140020
> +#define F367_OFDM_RCDSS_SYNCBYTE 0xF2140010
> +#define F367_OFDM_RCRESULT_STATE 0xF214000F
> +
> +/* RCFGOODPACK */
> +#define R367_OFDM_RCFGOODPACK 0xF215
> +#define F367_OFDM_RCGOOD_PACKET 0xF21500FF
> +
> +/* RCFPACKCNT */
> +#define R367_OFDM_RCFPACKCNT 0xF216
> +#define F367_OFDM_RCPACKET_COUNTER 0xF21600FF
> +
> +/* RCFSPYMISC */
> +#define R367_OFDM_RCFSPYMISC 0xF217
> +#define F367_OFDM_RCLABEL_COUNTER 0xF21700FF
> +
> +/* RCFBERCPT4 */
> +#define R367_OFDM_RCFBERCPT4 0xF218
> +#define F367_OFDM_FBERRCMETER_CPT_MMMMSB 0xF21800FF
> +
> +/* RCFBERCPT3 */
> +#define R367_OFDM_RCFBERCPT3 0xF219
> +#define F367_OFDM_FBERRCMETER_CPT_MMMSB 0xF21900FF
> +
> +/* RCFBERCPT2 */
> +#define R367_OFDM_RCFBERCPT2 0xF21A
> +#define F367_OFDM_FBERRCMETER_CPT_MMSB 0xF21A00FF
> +
> +/* RCFBERCPT1 */
> +#define R367_OFDM_RCFBERCPT1 0xF21B
> +#define F367_OFDM_FBERRCMETER_CPT_MSB 0xF21B00FF
> +
> +/* RCFBERCPT0 */
> +#define R367_OFDM_RCFBERCPT0 0xF21C
> +#define F367_OFDM_FBERRCMETER_CPT_LSB 0xF21C00FF
> +
> +/* RCFBERERR2 */
> +#define R367_OFDM_RCFBERERR2 0xF21D
> +#define F367_OFDM_FBERRCMETER_ERR_HI 0xF21D00FF
> +
> +/* RCFBERERR1 */
> +#define R367_OFDM_RCFBERERR1 0xF21E
> +#define F367_OFDM_FBERRCMETER_ERR 0xF21E00FF
> +
> +/* RCFBERERR0 */
> +#define R367_OFDM_RCFBERERR0 0xF21F
> +#define F367_OFDM_FBERRCMETER_ERR_LO 0xF21F00FF
> +
> +/* RCFSTATESM */
> +#define R367_OFDM_RCFSTATESM 0xF220
> +#define F367_OFDM_RCRSTATE_F 0xF2200080
> +#define F367_OFDM_RCRSTATE_E 0xF2200040
> +#define F367_OFDM_RCRSTATE_D 0xF2200020
> +#define F367_OFDM_RCRSTATE_C 0xF2200010
> +#define F367_OFDM_RCRSTATE_B 0xF2200008
> +#define F367_OFDM_RCRSTATE_A 0xF2200004
> +#define F367_OFDM_RCRSTATE_9 0xF2200002
> +#define F367_OFDM_RCRSTATE_8 0xF2200001
> +
> +/* RCFSTATESL */
> +#define R367_OFDM_RCFSTATESL 0xF221
> +#define F367_OFDM_RCRSTATE_7 0xF2210080
> +#define F367_OFDM_RCRSTATE_6 0xF2210040
> +#define F367_OFDM_RCRSTATE_5 0xF2210020
> +#define F367_OFDM_RCRSTATE_4 0xF2210010
> +#define F367_OFDM_RCRSTATE_3 0xF2210008
> +#define F367_OFDM_RCRSTATE_2 0xF2210004
> +#define F367_OFDM_RCRSTATE_1 0xF2210002
> +#define F367_OFDM_RCRSTATE_0 0xF2210001
> +
> +/* RCFSPYBER */
> +#define R367_OFDM_RCFSPYBER 0xF222
> +#define F367_OFDM_RCFSPYBER_7 0xF2220080
> +#define F367_OFDM_SPYRCOBS_XORREAD 0xF2220040
> +#define F367_OFDM_FSPYRCBER_OBSMODE 0xF2220020
> +#define F367_OFDM_FSPYRCBER_SYNCBYT 0xF2220010
> +#define F367_OFDM_FSPYRCBER_UNSYNC 0xF2220008
> +#define F367_OFDM_FSPYRCBER_CTIME 0xF2220007
> +
> +/* RCFSPYDISTM */
> +#define R367_OFDM_RCFSPYDISTM 0xF223
> +#define F367_OFDM_RCPKTTIME_DISTANCE_HI 0xF22300FF
> +
> +/* RCFSPYDISTL */
> +#define R367_OFDM_RCFSPYDISTL 0xF224
> +#define F367_OFDM_RCPKTTIME_DISTANCE_LO 0xF22400FF
> +
> +/* RCFSPYOBS7 */
> +#define R367_OFDM_RCFSPYOBS7 0xF228
> +#define F367_OFDM_RCSPYOBS_SPYFAIL 0xF2280080
> +#define F367_OFDM_RCSPYOBS_SPYFAIL1 0xF2280040
> +#define F367_OFDM_RCSPYOBS_ERROR 0xF2280020
> +#define F367_OFDM_RCSPYOBS_STROUT 0xF2280010
> +#define F367_OFDM_RCSPYOBS_RESULTSTATE1 0xF228000F
> +
> +/* RCFSPYOBS6 */
> +#define R367_OFDM_RCFSPYOBS6 0xF229
> +#define F367_OFDM_RCSPYOBS_RESULTSTATE0 0xF22900F0
> +#define F367_OFDM_RCSPYOBS_RESULTSTATEM1 0xF229000F
> +
> +/* RCFSPYOBS5 */
> +#define R367_OFDM_RCFSPYOBS5 0xF22A
> +#define F367_OFDM_RCSPYOBS_BYTEOFPACKET1 0xF22A00FF
> +
> +/* RCFSPYOBS4 */
> +#define R367_OFDM_RCFSPYOBS4 0xF22B
> +#define F367_OFDM_RCSPYOBS_BYTEVALUE1 0xF22B00FF
> +
> +/* RCFSPYOBS3 */
> +#define R367_OFDM_RCFSPYOBS3 0xF22C
> +#define F367_OFDM_RCSPYOBS_DATA1 0xF22C00FF
> +
> +/* RCFSPYOBS2 */
> +#define R367_OFDM_RCFSPYOBS2 0xF22D
> +#define F367_OFDM_RCSPYOBS_DATA0 0xF22D00FF
> +
> +/* RCFSPYOBS1 */
> +#define R367_OFDM_RCFSPYOBS1 0xF22E
> +#define F367_OFDM_RCSPYOBS_DATAM1 0xF22E00FF
> +
> +/* RCFSPYOBS0 */
> +#define R367_OFDM_RCFSPYOBS0 0xF22F
> +#define F367_OFDM_RCSPYOBS_DATAM2 0xF22F00FF
> +
> +/* TSGENERAL */
> +#define R367_TSGENERAL 0xF230
> +#define F367_TSGENERAL_7 0xF2300080
> +#define F367_TSGENERAL_6 0xF2300040
> +#define F367_TSFIFO_BCLK1ALL 0xF2300020
> +#define F367_TSGENERAL_4 0xF2300010
> +#define F367_MUXSTREAM_OUTMODE 0xF2300008
> +#define F367_TSFIFO_PERMPARAL 0xF2300006
> +#define F367_RST_REEDSOLO 0xF2300001
> +
> +/* RC1SPEED */
> +#define R367_RC1SPEED 0xF231
> +#define F367_TSRCFIFO1_OUTSPEED 0xF23100FF
> +
> +/* TSGSTATUS */
> +#define R367_TSGSTATUS 0xF232
> +#define F367_TSGSTATUS_7 0xF2320080
> +#define F367_TSGSTATUS_6 0xF2320040
> +#define F367_RSMEM_FULL 0xF2320020
> +#define F367_RS_MULTCALC 0xF2320010
> +#define F367_RSIN_OVERTIME 0xF2320008
> +#define F367_TSFIFO3_DEMODSEL 0xF2320004
> +#define F367_TSFIFO2_DEMODSEL 0xF2320002
> +#define F367_TSFIFO1_DEMODSEL 0xF2320001
> +
> +
> +/* FECM */
> +#define R367_OFDM_FECM 0xF233
> +#define F367_OFDM_DSS_DVB 0xF2330080
> +#define F367_OFDM_DEMOD_BYPASS 0xF2330040
> +#define F367_OFDM_CMP_SLOWMODE 0xF2330020
> +#define F367_OFDM_DSS_SRCH 0xF2330010
> +#define F367_OFDM_FECM_3 0xF2330008
> +#define F367_OFDM_DIFF_MODEVIT 0xF2330004
> +#define F367_OFDM_SYNCVIT 0xF2330002
> +#define F367_OFDM_I2CSYM 0xF2330001
> +
> +/* VTH12 */
> +#define R367_OFDM_VTH12 0xF234
> +#define F367_OFDM_VTH_12 0xF23400FF
> +
> +/* VTH23 */
> +#define R367_OFDM_VTH23 0xF235
> +#define F367_OFDM_VTH_23 0xF23500FF
> +
> +/* VTH34 */
> +#define R367_OFDM_VTH34 0xF236
> +#define F367_OFDM_VTH_34 0xF23600FF
> +
> +/* VTH56 */
> +#define R367_OFDM_VTH56 0xF237
> +#define F367_OFDM_VTH_56 0xF23700FF
> +
> +/* VTH67 */
> +#define R367_OFDM_VTH67 0xF238
> +#define F367_OFDM_VTH_67 0xF23800FF
> +
> +/* VTH78 */
> +#define R367_OFDM_VTH78 0xF239
> +#define F367_OFDM_VTH_78 0xF23900FF
> +
> +/* VITCURPUN */
> +#define R367_OFDM_VITCURPUN 0xF23A
> +#define F367_OFDM_VIT_MAPPING 0xF23A00E0
> +#define F367_OFDM_VIT_CURPUN 0xF23A001F
> +
> +/* VERROR */
> +#define R367_OFDM_VERROR 0xF23B
> +#define F367_OFDM_REGERR_VIT 0xF23B00FF
> +
> +/* PRVIT */
> +#define R367_OFDM_PRVIT 0xF23C
> +#define F367_OFDM_PRVIT_7 0xF23C0080
> +#define F367_OFDM_DIS_VTHLOCK 0xF23C0040
> +#define F367_OFDM_E7_8VIT 0xF23C0020
> +#define F367_OFDM_E6_7VIT 0xF23C0010
> +#define F367_OFDM_E5_6VIT 0xF23C0008
> +#define F367_OFDM_E3_4VIT 0xF23C0004
> +#define F367_OFDM_E2_3VIT 0xF23C0002
> +#define F367_OFDM_E1_2VIT 0xF23C0001
> +
> +/* VAVSRVIT */
> +#define R367_OFDM_VAVSRVIT 0xF23D
> +#define F367_OFDM_AMVIT 0xF23D0080
> +#define F367_OFDM_FROZENVIT 0xF23D0040
> +#define F367_OFDM_SNVIT 0xF23D0030
> +#define F367_OFDM_TOVVIT 0xF23D000C
> +#define F367_OFDM_HYPVIT 0xF23D0003
> +
> +/* VSTATUSVIT */
> +#define R367_OFDM_VSTATUSVIT 0xF23E
> +#define F367_OFDM_VITERBI_ON 0xF23E0080
> +#define F367_OFDM_END_LOOPVIT 0xF23E0040
> +#define F367_OFDM_VITERBI_DEPRF 0xF23E0020
> +#define F367_OFDM_PRFVIT 0xF23E0010
> +#define F367_OFDM_LOCKEDVIT 0xF23E0008
> +#define F367_OFDM_VITERBI_DELOCK 0xF23E0004
> +#define F367_OFDM_VIT_DEMODSEL 0xF23E0002
> +#define F367_OFDM_VITERBI_COMPOUT 0xF23E0001
> +
> +/* VTHINUSE */
> +#define R367_OFDM_VTHINUSE 0xF23F
> +#define F367_OFDM_VIT_INUSE 0xF23F00FF
> +
> +/* KDIV12 */
> +#define R367_OFDM_KDIV12 0xF240
> +#define F367_OFDM_KDIV12_MANUAL 0xF2400080
> +#define F367_OFDM_K_DIVIDER_12 0xF240007F
> +
> +/* KDIV23 */
> +#define R367_OFDM_KDIV23 0xF241
> +#define F367_OFDM_KDIV23_MANUAL 0xF2410080
> +#define F367_OFDM_K_DIVIDER_23 0xF241007F
> +
> +/* KDIV34 */
> +#define R367_OFDM_KDIV34 0xF242
> +#define F367_OFDM_KDIV34_MANUAL 0xF2420080
> +#define F367_OFDM_K_DIVIDER_34 0xF242007F
> +
> +/* KDIV56 */
> +#define R367_OFDM_KDIV56 0xF243
> +#define F367_OFDM_KDIV56_MANUAL 0xF2430080
> +#define F367_OFDM_K_DIVIDER_56 0xF243007F
> +
> +/* KDIV67 */
> +#define R367_OFDM_KDIV67 0xF244
> +#define F367_OFDM_KDIV67_MANUAL 0xF2440080
> +#define F367_OFDM_K_DIVIDER_67 0xF244007F
> +
> +/* KDIV78 */
> +#define R367_OFDM_KDIV78 0xF245
> +#define F367_OFDM_KDIV78_MANUAL 0xF2450080
> +#define F367_OFDM_K_DIVIDER_78 0xF245007F
> +
> +/* SIGPOWER */
> +#define R367_OFDM_SIGPOWER 0xF246
> +#define F367_OFDM_SIGPOWER_MANUAL 0xF2460080
> +#define F367_OFDM_SIG_POWER 0xF246007F
> +
> +/* DEMAPVIT */
> +#define R367_OFDM_DEMAPVIT 0xF247
> +#define F367_OFDM_DEMAPVIT_7 0xF2470080
> +#define F367_OFDM_K_DIVIDER_VIT 0xF247007F
> +
> +/* VITSCALE */
> +#define R367_OFDM_VITSCALE 0xF248
> +#define F367_OFDM_NVTH_NOSRANGE 0xF2480080
> +#define F367_OFDM_VERROR_MAXMODE 0xF2480040
> +#define F367_OFDM_KDIV_MODE 0xF2480030
> +#define F367_OFDM_NSLOWSN_LOCKED 0xF2480008
> +#define F367_OFDM_DELOCK_PRFLOSS 0xF2480004
> +#define F367_OFDM_DIS_RSFLOCK 0xF2480002
> +#define F367_OFDM_VITSCALE_0 0xF2480001
> +
> +/* FFEC1PRG */
> +#define R367_OFDM_FFEC1PRG 0xF249
> +#define F367_OFDM_FDSS_DVB 0xF2490080
> +#define F367_OFDM_FDSS_SRCH 0xF2490040
> +#define F367_OFDM_FFECPROG_5 0xF2490020
> +#define F367_OFDM_FFECPROG_4 0xF2490010
> +#define F367_OFDM_FFECPROG_3 0xF2490008
> +#define F367_OFDM_FFECPROG_2 0xF2490004
> +#define F367_OFDM_FTS1_DISABLE 0xF2490002
> +#define F367_OFDM_FTS2_DISABLE 0xF2490001
> +
> +/* FVITCURPUN */
> +#define R367_OFDM_FVITCURPUN 0xF24A
> +#define F367_OFDM_FVIT_MAPPING 0xF24A00E0
> +#define F367_OFDM_FVIT_CURPUN 0xF24A001F
> +
> +/* FVERROR */
> +#define R367_OFDM_FVERROR 0xF24B
> +#define F367_OFDM_FREGERR_VIT 0xF24B00FF
> +
> +/* FVSTATUSVIT */
> +#define R367_OFDM_FVSTATUSVIT 0xF24C
> +#define F367_OFDM_FVITERBI_ON 0xF24C0080
> +#define F367_OFDM_F1END_LOOPVIT 0xF24C0040
> +#define F367_OFDM_FVITERBI_DEPRF 0xF24C0020
> +#define F367_OFDM_FPRFVIT 0xF24C0010
> +#define F367_OFDM_FLOCKEDVIT 0xF24C0008
> +#define F367_OFDM_FVITERBI_DELOCK 0xF24C0004
> +#define F367_OFDM_FVIT_DEMODSEL 0xF24C0002
> +#define F367_OFDM_FVITERBI_COMPOUT 0xF24C0001
> +
> +/* DEBUG_LT1 */
> +#define R367_OFDM_DEBUG_LT1 0xF24D
> +#define F367_OFDM_DBG_LT1 0xF24D00FF
> +
> +/* DEBUG_LT2 */
> +#define R367_OFDM_DEBUG_LT2 0xF24E
> +#define F367_OFDM_DBG_LT2 0xF24E00FF
> +
> +/* DEBUG_LT3 */
> +#define R367_OFDM_DEBUG_LT3 0xF24F
> +#define F367_OFDM_DBG_LT3 0xF24F00FF
> +
> + /* TSTSFMET */
> +#define R367_OFDM_TSTSFMET 0xF250
> +#define F367_OFDM_TSTSFEC_METRIQUES 0xF25000FF
> +
> + /* SELOUT */
> +#define R367_OFDM_SELOUT 0xF252
> +#define F367_OFDM_EN_SYNC 0xF2520080
> +#define F367_OFDM_EN_TBUSDEMAP 0xF2520040
> +#define F367_OFDM_SELOUT_5 0xF2520020
> +#define F367_OFDM_SELOUT_4 0xF2520010
> +#define F367_OFDM_TSTSYNCHRO_MODE 0xF2520002
> +
> + /* TSYNC */
> +#define R367_OFDM_TSYNC 0xF253
> +#define F367_OFDM_CURPUN_INCMODE 0xF2530080
> +#define F367_OFDM_CERR_TSTMODE 0xF2530040
> +#define F367_OFDM_SHIFTSOF_MODE 0xF2530030
> +#define F367_OFDM_SLOWPHA_MODE 0xF2530008
> +#define F367_OFDM_PXX_BYPALL 0xF2530004
> +#define F367_OFDM_FROTA45_FIRST 0xF2530002
> +#define F367_OFDM_TST_BCHERROR 0xF2530001
> +
> + /* TSTERR */
> +#define R367_OFDM_TSTERR 0xF254
> +#define F367_OFDM_TST_LONGPKT 0xF2540080
> +#define F367_OFDM_TST_ISSYION 0xF2540040
> +#define F367_OFDM_TST_NPDON 0xF2540020
> +#define F367_OFDM_TSTERR_4 0xF2540010
> +#define F367_OFDM_TRACEBACK_MODE 0xF2540008
> +#define F367_OFDM_TST_RSPARITY 0xF2540004
> +#define F367_OFDM_METRIQUE_MODE 0xF2540003
> +
> + /* TSFSYNC */
> +#define R367_OFDM_TSFSYNC 0xF255
> +#define F367_OFDM_EN_SFECSYNC 0xF2550080
> +#define F367_OFDM_EN_SFECDEMAP 0xF2550040
> +#define F367_OFDM_SFCERR_TSTMODE 0xF2550020
> +#define F367_OFDM_SFECPXX_BYPALL 0xF2550010
> +#define F367_OFDM_SFECTSTSYNCHRO_MODE 0xF255000F
> +
> + /* TSTSFERR */
> +#define R367_OFDM_TSTSFERR 0xF256
> +#define F367_OFDM_TSTSTERR_7 0xF2560080
> +#define F367_OFDM_TSTSTERR_6 0xF2560040
> +#define F367_OFDM_TSTSTERR_5 0xF2560020
> +#define F367_OFDM_TSTSTERR_4 0xF2560010
> +#define F367_OFDM_SFECTRACEBACK_MODE 0xF2560008
> +#define F367_OFDM_SFEC_NCONVPROG 0xF2560004
> +#define F367_OFDM_SFECMETRIQUE_MODE 0xF2560003
> +
> + /* TSTTSSF1 */
> +#define R367_OFDM_TSTTSSF1 0xF258
> +#define F367_OFDM_TSTERSSF 0xF2580080
> +#define F367_OFDM_TSTTSSFEN 0xF2580040
> +#define F367_OFDM_SFEC_OUTMODE 0xF2580030
> +#define F367_OFDM_XLSF_NOFTHRESHOLD 0xF2580008
> +#define F367_OFDM_TSTTSSF_STACKSEL 0xF2580007
> +
> + /* TSTTSSF2 */
> +#define R367_OFDM_TSTTSSF2 0xF259
> +#define F367_OFDM_DILSF_DBBHEADER 0xF2590080
> +#define F367_OFDM_TSTTSSF_DISBUG 0xF2590040
> +#define F367_OFDM_TSTTSSF_NOBADSTART 0xF2590020
> +#define F367_OFDM_TSTTSSF_SELECT 0xF259001F
> +
> + /* TSTTSSF3 */
> +#define R367_OFDM_TSTTSSF3 0xF25A
> +#define F367_OFDM_TSTTSSF3_7 0xF25A0080
> +#define F367_OFDM_TSTTSSF3_6 0xF25A0040
> +#define F367_OFDM_TSTTSSF3_5 0xF25A0020
> +#define F367_OFDM_TSTTSSF3_4 0xF25A0010
> +#define F367_OFDM_TSTTSSF3_3 0xF25A0008
> +#define F367_OFDM_TSTTSSF3_2 0xF25A0004
> +#define F367_OFDM_TSTTSSF3_1 0xF25A0002
> +#define F367_OFDM_DISSF_CLKENABLE 0xF25A0001
> +
> + /* TSTTS1 */
> +#define R367_OFDM_TSTTS1 0xF25C
> +#define F367_OFDM_TSTERS 0xF25C0080
> +#define F367_OFDM_TSFIFO_DSSSYNCB 0xF25C0040
> +#define F367_OFDM_TSTTS_FSPYBEFRS 0xF25C0020
> +#define F367_OFDM_NFORCE_SYNCBYTE 0xF25C0010
> +#define F367_OFDM_XL_NOFTHRESHOLD 0xF25C0008
> +#define F367_OFDM_TSTTS_FRFORCEPKT 0xF25C0004
> +#define F367_OFDM_DESCR_NOTAUTO 0xF25C0002
> +#define F367_OFDM_TSTTSEN 0xF25C0001
> +
> + /* TSTTS2 */
> +#define R367_OFDM_TSTTS2 0xF25D
> +#define F367_OFDM_DIL_DBBHEADER 0xF25D0080
> +#define F367_OFDM_TSTTS_NOBADXXX 0xF25D0040
> +#define F367_OFDM_TSFIFO_DELSPEEDUP 0xF25D0020
> +#define F367_OFDM_TSTTS_SELECT 0xF25D001F
> +
> + /* TSTTS3 */
> +#define R367_OFDM_TSTTS3 0xF25E
> +#define F367_OFDM_TSTTS_NOPKTGAIN 0xF25E0080
> +#define F367_OFDM_TSTTS_NOPKTENE 0xF25E0040
> +#define F367_OFDM_TSTTS_ISOLATION 0xF25E0020
> +#define F367_OFDM_TSTTS_DISBUG 0xF25E0010
> +#define F367_OFDM_TSTTS_NOBADSTART 0xF25E0008
> +#define F367_OFDM_TSTTS_STACKSEL 0xF25E0007
> +
> + /* TSTTS4 */
> +#define R367_OFDM_TSTTS4 0xF25F
> +#define F367_OFDM_TSTTS4_7 0xF25F0080
> +#define F367_OFDM_TSTTS4_6 0xF25F0040
> +#define F367_OFDM_TSTTS4_5 0xF25F0020
> +#define F367_OFDM_TSTTS_DISDSTATE 0xF25F0010
> +#define F367_OFDM_TSTTS_FASTNOSYNC 0xF25F0008
> +#define F367_OFDM_EXT_FECSPYIN 0xF25F0004
> +#define F367_OFDM_TSTTS_NODPZERO 0xF25F0002
> +#define F367_OFDM_TSTTS_NODIV3 0xF25F0001
> +
> + /* TSTTSRC */
> +#define R367_OFDM_TSTTSRC 0xF26C
> +#define F367_OFDM_TSTTSRC_7 0xF26C0080
> +#define F367_OFDM_TSRCFIFO_DSSSYNCB 0xF26C0040
> +#define F367_OFDM_TSRCFIFO_DPUNACTIVE 0xF26C0020
> +#define F367_OFDM_TSRCFIFO_DELSPEEDUP 0xF26C0010
> +#define F367_OFDM_TSTTSRC_NODIV3 0xF26C0008
> +#define F367_OFDM_TSTTSRC_FRFORCEPKT 0xF26C0004
> +#define F367_OFDM_SAT25_SDDORIGINE 0xF26C0002
> +#define F367_OFDM_TSTTSRC_INACTIVE 0xF26C0001
> +
> + /* TSTTSRS */
> +#define R367_OFDM_TSTTSRS 0xF26D
> +#define F367_OFDM_TSTTSRS_7 0xF26D0080
> +#define F367_OFDM_TSTTSRS_6 0xF26D0040
> +#define F367_OFDM_TSTTSRS_5 0xF26D0020
> +#define F367_OFDM_TSTTSRS_4 0xF26D0010
> +#define F367_OFDM_TSTTSRS_3 0xF26D0008
> +#define F367_OFDM_TSTTSRS_2 0xF26D0004
> +#define F367_OFDM_TSTRS_DISRS2 0xF26D0002
> +#define F367_OFDM_TSTRS_DISRS1 0xF26D0001
> +
> +/* TSSTATEM */
> +#define R367_OFDM_TSSTATEM 0xF270
> +#define F367_OFDM_TSDIL_ON 0xF2700080
> +#define F367_OFDM_TSSKIPRS_ON 0xF2700040
> +#define F367_OFDM_TSRS_ON 0xF2700020
> +#define F367_OFDM_TSDESCRAMB_ON 0xF2700010
> +#define F367_OFDM_TSFRAME_MODE 0xF2700008
> +#define F367_OFDM_TS_DISABLE 0xF2700004
> +#define F367_OFDM_TSACM_MODE 0xF2700002
> +#define F367_OFDM_TSOUT_NOSYNC 0xF2700001
> +
> +/* TSSTATEL */
> +#define R367_OFDM_TSSTATEL 0xF271
> +#define F367_OFDM_TSNOSYNCBYTE 0xF2710080
> +#define F367_OFDM_TSPARITY_ON 0xF2710040
> +#define F367_OFDM_TSSYNCOUTRS_ON 0xF2710020
> +#define F367_OFDM_TSDVBS2_MODE 0xF2710010
> +#define F367_OFDM_TSISSYI_ON 0xF2710008
> +#define F367_OFDM_TSNPD_ON 0xF2710004
> +#define F367_OFDM_TSCRC8_ON 0xF2710002
> +#define F367_OFDM_TSDSS_PACKET 0xF2710001
> +
> +/* TSCFGH */
> +#define R367_OFDM_TSCFGH 0xF272
> +#define F367_OFDM_TSFIFO_DVBCI 0xF2720080
> +#define F367_OFDM_TSFIFO_SERIAL 0xF2720040
> +#define F367_OFDM_TSFIFO_TEIUPDATE 0xF2720020
> +#define F367_OFDM_TSFIFO_DUTY50 0xF2720010
> +#define F367_OFDM_TSFIFO_HSGNLOUT 0xF2720008
> +#define F367_OFDM_TSFIFO_ERRMODE 0xF2720006
> +#define F367_OFDM_RST_HWARE 0xF2720001
> +
> +/* TSCFGM */
> +#define R367_OFDM_TSCFGM 0xF273
> +#define F367_OFDM_TSFIFO_MANSPEED 0xF27300C0
> +#define F367_OFDM_TSFIFO_PERMDATA 0xF2730020
> +#define F367_OFDM_TSFIFO_NONEWSGNL 0xF2730010
> +#define F367_OFDM_TSFIFO_BITSPEED 0xF2730008
> +#define F367_OFDM_NPD_SPECDVBS2 0xF2730004
> +#define F367_OFDM_TSFIFO_STOPCKDIS 0xF2730002
> +#define F367_OFDM_TSFIFO_INVDATA 0xF2730001
> +
> +/* TSCFGL */
> +#define R367_OFDM_TSCFGL 0xF274
> +#define F367_OFDM_TSFIFO_BCLKDEL1CK 0xF27400C0
> +#define F367_OFDM_BCHERROR_MODE 0xF2740030
> +#define F367_OFDM_TSFIFO_NSGNL2DATA 0xF2740008
> +#define F367_OFDM_TSFIFO_EMBINDVB 0xF2740004
> +#define F367_OFDM_TSFIFO_DPUNACT 0xF2740002
> +#define F367_OFDM_TSFIFO_NPDOFF 0xF2740001
> +
> +/* TSSYNC */
> +#define R367_OFDM_TSSYNC 0xF275
> +#define F367_OFDM_TSFIFO_PERMUTE 0xF2750080
> +#define F367_OFDM_TSFIFO_FISCR3B 0xF2750060
> +#define F367_OFDM_TSFIFO_SYNCMODE 0xF2750018
> +#define F367_OFDM_TSFIFO_SYNCSEL 0xF2750007
> +
> +/* TSINSDELH */
> +#define R367_OFDM_TSINSDELH 0xF276
> +#define F367_OFDM_TSDEL_SYNCBYTE 0xF2760080
> +#define F367_OFDM_TSDEL_XXHEADER 0xF2760040
> +#define F367_OFDM_TSDEL_BBHEADER 0xF2760020
> +#define F367_OFDM_TSDEL_DATAFIELD 0xF2760010
> +#define F367_OFDM_TSINSDEL_ISCR 0xF2760008
> +#define F367_OFDM_TSINSDEL_NPD 0xF2760004
> +#define F367_OFDM_TSINSDEL_RSPARITY 0xF2760002
> +#define F367_OFDM_TSINSDEL_CRC8 0xF2760001
> +
> +/* TSINSDELM */
> +#define R367_OFDM_TSINSDELM 0xF277
> +#define F367_OFDM_TSINS_BBPADDING 0xF2770080
> +#define F367_OFDM_TSINS_BCHFEC 0xF2770040
> +#define F367_OFDM_TSINS_LDPCFEC 0xF2770020
> +#define F367_OFDM_TSINS_EMODCOD 0xF2770010
> +#define F367_OFDM_TSINS_TOKEN 0xF2770008
> +#define F367_OFDM_TSINS_XXXERR 0xF2770004
> +#define F367_OFDM_TSINS_MATYPE 0xF2770002
> +#define F367_OFDM_TSINS_UPL 0xF2770001
> +
> +/* TSINSDELL */
> +#define R367_OFDM_TSINSDELL 0xF278
> +#define F367_OFDM_TSINS_DFL 0xF2780080
> +#define F367_OFDM_TSINS_SYNCD 0xF2780040
> +#define F367_OFDM_TSINS_BLOCLEN 0xF2780020
> +#define F367_OFDM_TSINS_SIGPCOUNT 0xF2780010
> +#define F367_OFDM_TSINS_FIFO 0xF2780008
> +#define F367_OFDM_TSINS_REALPACK 0xF2780004
> +#define F367_OFDM_TSINS_TSCONFIG 0xF2780002
> +#define F367_OFDM_TSINS_LATENCY 0xF2780001
> +
> +/* TSDIVN */
> +#define R367_OFDM_TSDIVN 0xF279
> +#define F367_OFDM_TSFIFO_LOWSPEED 0xF2790080
> +#define F367_OFDM_BYTE_OVERSAMPLING 0xF2790070
> +#define F367_OFDM_TSMANUAL_PACKETNBR 0xF279000F
> +
> +/* TSDIVPM */
> +#define R367_OFDM_TSDIVPM 0xF27A
> +#define F367_OFDM_TSMANUAL_P_HI 0xF27A00FF
> +
> +/* TSDIVPL */
> +#define R367_OFDM_TSDIVPL 0xF27B
> +#define F367_OFDM_TSMANUAL_P_LO 0xF27B00FF
> +
> +/* TSDIVQM */
> +#define R367_OFDM_TSDIVQM 0xF27C
> +#define F367_OFDM_TSMANUAL_Q_HI 0xF27C00FF
> +
> +/* TSDIVQL */
> +#define R367_OFDM_TSDIVQL 0xF27D
> +#define F367_OFDM_TSMANUAL_Q_LO 0xF27D00FF
> +
> +/* TSDILSTKM */
> +#define R367_OFDM_TSDILSTKM 0xF27E
> +#define F367_OFDM_TSFIFO_DILSTK_HI 0xF27E00FF
> +
> +/* TSDILSTKL */
> +#define R367_OFDM_TSDILSTKL 0xF27F
> +#define F367_OFDM_TSFIFO_DILSTK_LO 0xF27F00FF
> +
> +/* TSSPEED */
> +#define R367_OFDM_TSSPEED 0xF280
> +#define F367_OFDM_TSFIFO_OUTSPEED 0xF28000FF
> +
> +/* TSSTATUS */
> +#define R367_OFDM_TSSTATUS 0xF281
> +#define F367_OFDM_TSFIFO_LINEOK 0xF2810080
> +#define F367_OFDM_TSFIFO_ERROR 0xF2810040
> +#define F367_OFDM_TSFIFO_DATA7 0xF2810020
> +#define F367_OFDM_TSFIFO_NOSYNC 0xF2810010
> +#define F367_OFDM_ISCR_INITIALIZED 0xF2810008
> +#define F367_OFDM_ISCR_UPDATED 0xF2810004
> +#define F367_OFDM_SOFFIFO_UNREGUL 0xF2810002
> +#define F367_OFDM_DIL_READY 0xF2810001
> +
> +/* TSSTATUS2 */
> +#define R367_OFDM_TSSTATUS2 0xF282
> +#define F367_OFDM_TSFIFO_DEMODSEL 0xF2820080
> +#define F367_OFDM_TSFIFOSPEED_STORE 0xF2820040
> +#define F367_OFDM_DILXX_RESET 0xF2820020
> +#define F367_OFDM_TSSERIAL_IMPOSSIBLE 0xF2820010
> +#define F367_OFDM_TSFIFO_UNDERSPEED 0xF2820008
> +#define F367_OFDM_BITSPEED_EVENT 0xF2820004
> +#define F367_OFDM_UL_SCRAMBDETECT 0xF2820002
> +#define F367_OFDM_ULDTV67_FALSELOCK 0xF2820001
> +
> +/* TSBITRATEM */
> +#define R367_OFDM_TSBITRATEM 0xF283
> +#define F367_OFDM_TSFIFO_BITRATE_HI 0xF28300FF
> +
> +/* TSBITRATEL */
> +#define R367_OFDM_TSBITRATEL 0xF284
> +#define F367_OFDM_TSFIFO_BITRATE_LO 0xF28400FF
> +
> +/* TSPACKLENM */
> +#define R367_OFDM_TSPACKLENM 0xF285
> +#define F367_OFDM_TSFIFO_PACKCPT 0xF28500E0
> +#define F367_OFDM_DIL_RPLEN_HI 0xF285001F
> +
> +/* TSPACKLENL */
> +#define R367_OFDM_TSPACKLENL 0xF286
> +#define F367_OFDM_DIL_RPLEN_LO 0xF28600FF
> +
> +/* TSBLOCLENM */
> +#define R367_OFDM_TSBLOCLENM 0xF287
> +#define F367_OFDM_TSFIFO_PFLEN_HI 0xF28700FF
> +
> +/* TSBLOCLENL */
> +#define R367_OFDM_TSBLOCLENL 0xF288
> +#define F367_OFDM_TSFIFO_PFLEN_LO 0xF28800FF
> +
> +/* TSDLYH */
> +#define R367_OFDM_TSDLYH 0xF289
> +#define F367_OFDM_SOFFIFO_TSTIMEVALID 0xF2890080
> +#define F367_OFDM_SOFFIFO_SPEEDUP 0xF2890040
> +#define F367_OFDM_SOFFIFO_STOP 0xF2890020
> +#define F367_OFDM_SOFFIFO_REGULATED 0xF2890010
> +#define F367_OFDM_SOFFIFO_REALSBOFF_HI 0xF289000F
> +
> +/* TSDLYM */
> +#define R367_OFDM_TSDLYM 0xF28A
> +#define F367_OFDM_SOFFIFO_REALSBOFF_MED 0xF28A00FF
> +
> +/* TSDLYL */
> +#define R367_OFDM_TSDLYL 0xF28B
> +#define F367_OFDM_SOFFIFO_REALSBOFF_LO 0xF28B00FF
> +
> +/* TSNPDAV */
> +#define R367_OFDM_TSNPDAV 0xF28C
> +#define F367_OFDM_TSNPD_AVERAGE 0xF28C00FF
> +
> +/* TSBUFSTATH */
> +#define R367_OFDM_TSBUFSTATH 0xF28D
> +#define F367_OFDM_TSISCR_3BYTES 0xF28D0080
> +#define F367_OFDM_TSISCR_NEWDATA 0xF28D0040
> +#define F367_OFDM_TSISCR_BUFSTAT_HI 0xF28D003F
> +
> +/* TSBUFSTATM */
> +#define R367_OFDM_TSBUFSTATM 0xF28E
> +#define F367_OFDM_TSISCR_BUFSTAT_MED 0xF28E00FF
> +
> +/* TSBUFSTATL */
> +#define R367_OFDM_TSBUFSTATL 0xF28F
> +#define F367_OFDM_TSISCR_BUFSTAT_LO 0xF28F00FF
> +
> +/* TSDEBUGM */
> +#define R367_OFDM_TSDEBUGM 0xF290
> +#define F367_OFDM_TSFIFO_ILLPACKET 0xF2900080
> +#define F367_OFDM_DIL_NOSYNC 0xF2900040
> +#define F367_OFDM_DIL_ISCR 0xF2900020
> +#define F367_OFDM_DILOUT_BSYNCB 0xF2900010
> +#define F367_OFDM_TSFIFO_EMPTYPKT 0xF2900008
> +#define F367_OFDM_TSFIFO_EMPTYRD 0xF2900004
> +#define F367_OFDM_SOFFIFO_STOPM 0xF2900002
> +#define F367_OFDM_SOFFIFO_SPEEDUPM 0xF2900001
> +
> +/* TSDEBUGL */
> +#define R367_OFDM_TSDEBUGL 0xF291
> +#define F367_OFDM_TSFIFO_PACKLENFAIL 0xF2910080
> +#define F367_OFDM_TSFIFO_SYNCBFAIL 0xF2910040
> +#define F367_OFDM_TSFIFO_VITLIBRE 0xF2910020
> +#define F367_OFDM_TSFIFO_BOOSTSPEEDM 0xF2910010
> +#define F367_OFDM_TSFIFO_UNDERSPEEDM 0xF2910008
> +#define F367_OFDM_TSFIFO_ERROR_EVNT 0xF2910004
> +#define F367_OFDM_TSFIFO_FULL 0xF2910002
> +#define F367_OFDM_TSFIFO_OVERFLOWM 0xF2910001
> +
> +/* TSDLYSETH */
> +#define R367_OFDM_TSDLYSETH 0xF292
> +#define F367_OFDM_SOFFIFO_OFFSET 0xF29200E0
> +#define F367_OFDM_SOFFIFO_SYMBOFFSET_HI 0xF292001F
> +
> +/* TSDLYSETM */
> +#define R367_OFDM_TSDLYSETM 0xF293
> +#define F367_OFDM_SOFFIFO_SYMBOFFSET_MED 0xF29300FF
> +
> +/* TSDLYSETL */
> +#define R367_OFDM_TSDLYSETL 0xF294
> +#define F367_OFDM_SOFFIFO_SYMBOFFSET_LO 0xF29400FF
> +
> +/* TSOBSCFG */
> +#define R367_OFDM_TSOBSCFG 0xF295
> +#define F367_OFDM_TSFIFO_OBSCFG 0xF29500FF
> +
> +/* TSOBSM */
> +#define R367_OFDM_TSOBSM 0xF296
> +#define F367_OFDM_TSFIFO_OBSDATA_HI 0xF29600FF
> +
> +/* TSOBSL */
> +#define R367_OFDM_TSOBSL 0xF297
> +#define F367_OFDM_TSFIFO_OBSDATA_LO 0xF29700FF
> +
> +/* ERRCTRL1 */
> +#define R367_OFDM_ERRCTRL1 0xF298
> +#define F367_OFDM_ERR_SRC1 0xF29800F0
> +#define F367_OFDM_ERRCTRL1_3 0xF2980008
> +#define F367_OFDM_NUM_EVT1 0xF2980007
> +
> +/* ERRCNT1H */
> +#define R367_OFDM_ERRCNT1H 0xF299
> +#define F367_OFDM_ERRCNT1_OLDVALUE 0xF2990080
> +#define F367_OFDM_ERR_CNT1 0xF299007F
> +
> +/* ERRCNT1M */
> +#define R367_OFDM_ERRCNT1M 0xF29A
> +#define F367_OFDM_ERR_CNT1_HI 0xF29A00FF
> +
> +/* ERRCNT1L */
> +#define R367_OFDM_ERRCNT1L 0xF29B
> +#define F367_OFDM_ERR_CNT1_LO 0xF29B00FF
> +
> +/* ERRCTRL2 */
> +#define R367_OFDM_ERRCTRL2 0xF29C
> +#define F367_OFDM_ERR_SRC2 0xF29C00F0
> +#define F367_OFDM_ERRCTRL2_3 0xF29C0008
> +#define F367_OFDM_NUM_EVT2 0xF29C0007
> +
> +/* ERRCNT2H */
> +#define R367_OFDM_ERRCNT2H 0xF29D
> +#define F367_OFDM_ERRCNT2_OLDVALUE 0xF29D0080
> +#define F367_OFDM_ERR_CNT2_HI 0xF29D007F
> +
> +/* ERRCNT2M */
> +#define R367_OFDM_ERRCNT2M 0xF29E
> +#define F367_OFDM_ERR_CNT2_MED 0xF29E00FF
> +
> +/* ERRCNT2L */
> +#define R367_OFDM_ERRCNT2L 0xF29F
> +#define F367_OFDM_ERR_CNT2_LO 0xF29F00FF
> +
> +/* FECSPY */
> +#define R367_OFDM_FECSPY 0xF2A0
> +#define F367_OFDM_SPY_ENABLE 0xF2A00080
> +#define F367_OFDM_NO_SYNCBYTE 0xF2A00040
> +#define F367_OFDM_SERIAL_MODE 0xF2A00020
> +#define F367_OFDM_UNUSUAL_PACKET 0xF2A00010
> +#define F367_OFDM_BERMETER_DATAMODE 0xF2A0000C
> +#define F367_OFDM_BERMETER_LMODE 0xF2A00002
> +#define F367_OFDM_BERMETER_RESET 0xF2A00001
> +
> +/* FSPYCFG */
> +#define R367_OFDM_FSPYCFG 0xF2A1
> +#define F367_OFDM_FECSPY_INPUT 0xF2A100C0
> +#define F367_OFDM_RST_ON_ERROR 0xF2A10020
> +#define F367_OFDM_ONE_SHOT 0xF2A10010
> +#define F367_OFDM_I2C_MOD 0xF2A1000C
> +#define F367_OFDM_SPY_HYSTERESIS 0xF2A10003
> +
> +/* FSPYDATA */
> +#define R367_OFDM_FSPYDATA 0xF2A2
> +#define F367_OFDM_SPY_STUFFING 0xF2A20080
> +#define F367_OFDM_NOERROR_PKTJITTER 0xF2A20040
> +#define F367_OFDM_SPY_CNULLPKT 0xF2A20020
> +#define F367_OFDM_SPY_OUTDATA_MODE 0xF2A2001F
> +
> +/* FSPYOUT */
> +#define R367_OFDM_FSPYOUT 0xF2A3
> +#define F367_OFDM_FSPY_DIRECT 0xF2A30080
> +#define F367_OFDM_FSPYOUT_6 0xF2A30040
> +#define F367_OFDM_SPY_OUTDATA_BUS 0xF2A30038
> +#define F367_OFDM_STUFF_MODE 0xF2A30007
> +
> +/* FSTATUS */
> +#define R367_OFDM_FSTATUS 0xF2A4
> +#define F367_OFDM_SPY_ENDSIM 0xF2A40080
> +#define F367_OFDM_VALID_SIM 0xF2A40040
> +#define F367_OFDM_FOUND_SIGNAL 0xF2A40020
> +#define F367_OFDM_DSS_SYNCBYTE 0xF2A40010
> +#define F367_OFDM_RESULT_STATE 0xF2A4000F
> +
> +/* FGOODPACK */
> +#define R367_OFDM_FGOODPACK 0xF2A5
> +#define F367_OFDM_FGOOD_PACKET 0xF2A500FF
> +
> +/* FPACKCNT */
> +#define R367_OFDM_FPACKCNT 0xF2A6
> +#define F367_OFDM_FPACKET_COUNTER 0xF2A600FF
> +
> +/* FSPYMISC */
> +#define R367_OFDM_FSPYMISC 0xF2A7
> +#define F367_OFDM_FLABEL_COUNTER 0xF2A700FF
> +
> +/* FBERCPT4 */
> +#define R367_OFDM_FBERCPT4 0xF2A8
> +#define F367_OFDM_FBERMETER_CPT5 0xF2A800FF
> +
> +/* FBERCPT3 */
> +#define R367_OFDM_FBERCPT3 0xF2A9
> +#define F367_OFDM_FBERMETER_CPT4 0xF2A900FF
> +
> +/* FBERCPT2 */
> +#define R367_OFDM_FBERCPT2 0xF2AA
> +#define F367_OFDM_FBERMETER_CPT3 0xF2AA00FF
> +
> +/* FBERCPT1 */
> +#define R367_OFDM_FBERCPT1 0xF2AB
> +#define F367_OFDM_FBERMETER_CPT2 0xF2AB00FF
> +
> +/* FBERCPT0 */
> +#define R367_OFDM_FBERCPT0 0xF2AC
> +#define F367_OFDM_FBERMETER_CPT1 0xF2AC00FF
> +
> +/* FBERERR2 */
> +#define R367_OFDM_FBERERR2 0xF2AD
> +#define F367_OFDM_FBERMETER_ERR_HI 0xF2AD00FF
> +
> +/* FBERERR1 */
> +#define R367_OFDM_FBERERR1 0xF2AE
> +#define F367_OFDM_FBERMETER_ERR_MED 0xF2AE00FF
> +
> +/* FBERERR0 */
> +#define R367_OFDM_FBERERR0 0xF2AF
> +#define F367_OFDM_FBERMETER_ERR_LO 0xF2AF00FF
> +
> +/* FSTATESM */
> +#define R367_OFDM_FSTATESM 0xF2B0
> +#define F367_OFDM_RSTATE_F 0xF2B00080
> +#define F367_OFDM_RSTATE_E 0xF2B00040
> +#define F367_OFDM_RSTATE_D 0xF2B00020
> +#define F367_OFDM_RSTATE_C 0xF2B00010
> +#define F367_OFDM_RSTATE_B 0xF2B00008
> +#define F367_OFDM_RSTATE_A 0xF2B00004
> +#define F367_OFDM_RSTATE_9 0xF2B00002
> +#define F367_OFDM_RSTATE_8 0xF2B00001
> +
> +/* FSTATESL */
> +#define R367_OFDM_FSTATESL 0xF2B1
> +#define F367_OFDM_RSTATE_7 0xF2B10080
> +#define F367_OFDM_RSTATE_6 0xF2B10040
> +#define F367_OFDM_RSTATE_5 0xF2B10020
> +#define F367_OFDM_RSTATE_4 0xF2B10010
> +#define F367_OFDM_RSTATE_3 0xF2B10008
> +#define F367_OFDM_RSTATE_2 0xF2B10004
> +#define F367_OFDM_RSTATE_1 0xF2B10002
> +#define F367_OFDM_RSTATE_0 0xF2B10001
> +
> +/* FSPYBER */
> +#define R367_OFDM_FSPYBER 0xF2B2
> +#define F367_OFDM_FSPYBER_7 0xF2B20080
> +#define F367_OFDM_FSPYOBS_XORREAD 0xF2B20040
> +#define F367_OFDM_FSPYBER_OBSMODE 0xF2B20020
> +#define F367_OFDM_FSPYBER_SYNCBYTE 0xF2B20010
> +#define F367_OFDM_FSPYBER_UNSYNC 0xF2B20008
> +#define F367_OFDM_FSPYBER_CTIME 0xF2B20007
> +
> +/* FSPYDISTM */
> +#define R367_OFDM_FSPYDISTM 0xF2B3
> +#define F367_OFDM_PKTTIME_DISTANCE_HI 0xF2B300FF
> +
> +/* FSPYDISTL */
> +#define R367_OFDM_FSPYDISTL 0xF2B4
> +#define F367_OFDM_PKTTIME_DISTANCE_LO 0xF2B400FF
> +
> +/* FSPYOBS7 */
> +#define R367_OFDM_FSPYOBS7 0xF2B8
> +#define F367_OFDM_FSPYOBS_SPYFAIL 0xF2B80080
> +#define F367_OFDM_FSPYOBS_SPYFAIL1 0xF2B80040
> +#define F367_OFDM_FSPYOBS_ERROR 0xF2B80020
> +#define F367_OFDM_FSPYOBS_STROUT 0xF2B80010
> +#define F367_OFDM_FSPYOBS_RESULTSTATE1 0xF2B8000F
> +
> +/* FSPYOBS6 */
> +#define R367_OFDM_FSPYOBS6 0xF2B9
> +#define F367_OFDM_FSPYOBS_RESULTSTATE0 0xF2B900F0
> +#define F367_OFDM_FSPYOBS_RESULTSTATEM1 0xF2B9000F
> +
> +/* FSPYOBS5 */
> +#define R367_OFDM_FSPYOBS5 0xF2BA
> +#define F367_OFDM_FSPYOBS_BYTEOFPACKET1 0xF2BA00FF
> +
> +/* FSPYOBS4 */
> +#define R367_OFDM_FSPYOBS4 0xF2BB
> +#define F367_OFDM_FSPYOBS_BYTEVALUE1 0xF2BB00FF
> +
> +/* FSPYOBS3 */
> +#define R367_OFDM_FSPYOBS3 0xF2BC
> +#define F367_OFDM_FSPYOBS_DATA1 0xF2BC00FF
> +
> +/* FSPYOBS2 */
> +#define R367_OFDM_FSPYOBS2 0xF2BD
> +#define F367_OFDM_FSPYOBS_DATA0 0xF2BD00FF
> +
> +/* FSPYOBS1 */
> +#define R367_OFDM_FSPYOBS1 0xF2BE
> +#define F367_OFDM_FSPYOBS_DATAM1 0xF2BE00FF
> +
> +/* FSPYOBS0 */
> +#define R367_OFDM_FSPYOBS0 0xF2BF
> +#define F367_OFDM_FSPYOBS_DATAM2 0xF2BF00FF
> +
> +/* SFDEMAP */
> +#define R367_OFDM_SFDEMAP 0xF2C0
> +#define F367_OFDM_SFDEMAP_7 0xF2C00080
> +#define F367_OFDM_SFEC_K_DIVIDER_VIT 0xF2C0007F
> +
> +/* SFERROR */
> +#define R367_OFDM_SFERROR 0xF2C1
> +#define F367_OFDM_SFEC_REGERR_VIT 0xF2C100FF
> +
> +/* SFAVSR */
> +#define R367_OFDM_SFAVSR 0xF2C2
> +#define F367_OFDM_SFEC_SUMERRORS 0xF2C20080
> +#define F367_OFDM_SERROR_MAXMODE 0xF2C20040
> +#define F367_OFDM_SN_SFEC 0xF2C20030
> +#define F367_OFDM_KDIV_MODE_SFEC 0xF2C2000C
> +#define F367_OFDM_SFAVSR_1 0xF2C20002
> +#define F367_OFDM_SFAVSR_0 0xF2C20001
> +
> +/* SFECSTATUS */
> +#define R367_OFDM_SFECSTATUS 0xF2C3
> +#define F367_OFDM_SFEC_ON 0xF2C30080
> +#define F367_OFDM_SFSTATUS_6 0xF2C30040
> +#define F367_OFDM_SFSTATUS_5 0xF2C30020
> +#define F367_OFDM_SFSTATUS_4 0xF2C30010
> +#define F367_OFDM_LOCKEDSFEC 0xF2C30008
> +#define F367_OFDM_SFEC_DELOCK 0xF2C30004
> +#define F367_OFDM_SFEC_DEMODSEL1 0xF2C30002
> +#define F367_OFDM_SFEC_OVFON 0xF2C30001
> +
> +/* SFKDIV12 */
> +#define R367_OFDM_SFKDIV12 0xF2C4
> +#define F367_OFDM_SFECKDIV12_MAN 0xF2C40080
> +#define F367_OFDM_SFEC_K_DIVIDER_12 0xF2C4007F
> +
> +/* SFKDIV23 */
> +#define R367_OFDM_SFKDIV23 0xF2C5
> +#define F367_OFDM_SFECKDIV23_MAN 0xF2C50080
> +#define F367_OFDM_SFEC_K_DIVIDER_23 0xF2C5007F
> +
> +/* SFKDIV34 */
> +#define R367_OFDM_SFKDIV34 0xF2C6
> +#define F367_OFDM_SFECKDIV34_MAN 0xF2C60080
> +#define F367_OFDM_SFEC_K_DIVIDER_34 0xF2C6007F
> +
> +/* SFKDIV56 */
> +#define R367_OFDM_SFKDIV56 0xF2C7
> +#define F367_OFDM_SFECKDIV56_MAN 0xF2C70080
> +#define F367_OFDM_SFEC_K_DIVIDER_56 0xF2C7007F
> +
> +/* SFKDIV67 */
> +#define R367_OFDM_SFKDIV67 0xF2C8
> +#define F367_OFDM_SFECKDIV67_MAN 0xF2C80080
> +#define F367_OFDM_SFEC_K_DIVIDER_67 0xF2C8007F
> +
> +/* SFKDIV78 */
> +#define R367_OFDM_SFKDIV78 0xF2C9
> +#define F367_OFDM_SFECKDIV78_MAN 0xF2C90080
> +#define F367_OFDM_SFEC_K_DIVIDER_78 0xF2C9007F
> +
> +/* SFDILSTKM */
> +#define R367_OFDM_SFDILSTKM 0xF2CA
> +#define F367_OFDM_SFEC_PACKCPT 0xF2CA00E0
> +#define F367_OFDM_SFEC_DILSTK_HI 0xF2CA001F
> +
> +/* SFDILSTKL */
> +#define R367_OFDM_SFDILSTKL 0xF2CB
> +#define F367_OFDM_SFEC_DILSTK_LO 0xF2CB00FF
> +
> +/* SFSTATUS */
> +#define R367_OFDM_SFSTATUS 0xF2CC
> +#define F367_OFDM_SFEC_LINEOK 0xF2CC0080
> +#define F367_OFDM_SFEC_ERROR 0xF2CC0040
> +#define F367_OFDM_SFEC_DATA7 0xF2CC0020
> +#define F367_OFDM_SFEC_OVERFLOW 0xF2CC0010
> +#define F367_OFDM_SFEC_DEMODSEL2 0xF2CC0008
> +#define F367_OFDM_SFEC_NOSYNC 0xF2CC0004
> +#define F367_OFDM_SFEC_UNREGULA 0xF2CC0002
> +#define F367_OFDM_SFEC_READY 0xF2CC0001
> +
> +/* SFDLYH */
> +#define R367_OFDM_SFDLYH 0xF2CD
> +#define F367_OFDM_SFEC_TSTIMEVALID 0xF2CD0080
> +#define F367_OFDM_SFEC_SPEEDUP 0xF2CD0040
> +#define F367_OFDM_SFEC_STOP 0xF2CD0020
> +#define F367_OFDM_SFEC_REGULATED 0xF2CD0010
> +#define F367_OFDM_SFEC_REALSYMBOFFSET 0xF2CD000F
> +
> +/* SFDLYM */
> +#define R367_OFDM_SFDLYM 0xF2CE
> +#define F367_OFDM_SFEC_REALSYMBOFFSET_HI 0xF2CE00FF
> +
> +/* SFDLYL */
> +#define R367_OFDM_SFDLYL 0xF2CF
> +#define F367_OFDM_SFEC_REALSYMBOFFSET_LO 0xF2CF00FF
> +
> +/* SFDLYSETH */
> +#define R367_OFDM_SFDLYSETH 0xF2D0
> +#define F367_OFDM_SFEC_OFFSET 0xF2D000E0
> +#define F367_OFDM_SFECDLYSETH_4 0xF2D00010
> +#define F367_OFDM_RST_SFEC 0xF2D00008
> +#define F367_OFDM_SFECDLYSETH_2 0xF2D00004
> +#define F367_OFDM_SFEC_DISABLE 0xF2D00002
> +#define F367_OFDM_SFEC_UNREGUL 0xF2D00001
> +
> +/* SFDLYSETM */
> +#define R367_OFDM_SFDLYSETM 0xF2D1
> +#define F367_OFDM_SFECDLYSETM_7 0xF2D10080
> +#define F367_OFDM_SFEC_SYMBOFFSET_HI 0xF2D1007F
> +
> +/* SFDLYSETL */
> +#define R367_OFDM_SFDLYSETL 0xF2D2
> +#define F367_OFDM_SFEC_SYMBOFFSET_LO 0xF2D200FF
> +
> +/* SFOBSCFG */
> +#define R367_OFDM_SFOBSCFG 0xF2D3
> +#define F367_OFDM_SFEC_OBSCFG 0xF2D300FF
> +
> +/* SFOBSM */
> +#define R367_OFDM_SFOBSM 0xF2D4
> +#define F367_OFDM_SFEC_OBSDATA_HI 0xF2D400FF
> +
> +/* SFOBSL */
> +#define R367_OFDM_SFOBSL 0xF2D5
> +#define F367_OFDM_SFEC_OBSDATA_LO 0xF2D500FF
> +
> +/* SFECINFO */
> +#define R367_OFDM_SFECINFO 0xF2D6
> +#define F367_OFDM_SFECINFO_7 0xF2D60080
> +#define F367_OFDM_SFEC_SYNCDLSB 0xF2D60070
> +#define F367_OFDM_SFCE_S1CPHASE 0xF2D6000F
> +
> +/* SFERRCTRL */
> +#define R367_OFDM_SFERRCTRL 0xF2D8
> +#define F367_OFDM_SFEC_ERR_SOURCE 0xF2D800F0
> +#define F367_OFDM_SFERRCTRL_3 0xF2D80008
> +#define F367_OFDM_SFEC_NUM_EVENT 0xF2D80007
> +
> +/* SFERRCNTH */
> +#define R367_OFDM_SFERRCNTH 0xF2D9
> +#define F367_OFDM_SFERRC_OLDVALUE 0xF2D90080
> +#define F367_OFDM_SFEC_ERR_CNT 0xF2D9007F
> +
> +/* SFERRCNTM */
> +#define R367_OFDM_SFERRCNTM 0xF2DA
> +#define F367_OFDM_SFEC_ERR_CNT_HI 0xF2DA00FF
> +
> +/* SFERRCNTL */
> +#define R367_OFDM_SFERRCNTL 0xF2DB
> +#define F367_OFDM_SFEC_ERR_CNT_LO 0xF2DB00FF
> +
> +/* SYMBRATEM */
> +#define R367_OFDM_SYMBRATEM 0xF2E0
> +#define F367_OFDM_DEFGEN_SYMBRATE_HI 0xF2E000FF
> +
> +/* SYMBRATEL */
> +#define R367_OFDM_SYMBRATEL 0xF2E1
> +#define F367_OFDM_DEFGEN_SYMBRATE_LO 0xF2E100FF
> +
> +/* SYMBSTATUS */
> +#define R367_OFDM_SYMBSTATUS 0xF2E2
> +#define F367_OFDM_SYMBDLINE2_OFF 0xF2E20080
> +#define F367_OFDM_SDDL_REINIT1 0xF2E20040
> +#define F367_OFDM_SDD_REINIT1 0xF2E20020
> +#define F367_OFDM_TOKENID_ERROR 0xF2E20010
> +#define F367_OFDM_SYMBRATE_OVERFLOW 0xF2E20008
> +#define F367_OFDM_SYMBRATE_UNDERFLOW 0xF2E20004
> +#define F367_OFDM_TOKENID_RSTEVENT 0xF2E20002
> +#define F367_OFDM_TOKENID_RESET1 0xF2E20001
> +
> +/* SYMBCFG */
> +#define R367_OFDM_SYMBCFG 0xF2E3
> +#define F367_OFDM_SYMBCFG_7 0xF2E30080
> +#define F367_OFDM_SYMBCFG_6 0xF2E30040
> +#define F367_OFDM_SYMBCFG_5 0xF2E30020
> +#define F367_OFDM_SYMBCFG_4 0xF2E30010
> +#define F367_OFDM_SYMRATE_FSPEED 0xF2E3000C
> +#define F367_OFDM_SYMRATE_SSPEED 0xF2E30003
> +
> +/* SYMBFIFOM */
> +#define R367_OFDM_SYMBFIFOM 0xF2E4
> +#define F367_OFDM_SYMBFIFOM_7 0xF2E40080
> +#define F367_OFDM_SYMBFIFOM_6 0xF2E40040
> +#define F367_OFDM_DEFGEN_SYMFIFO_HI 0xF2E4003F
> +
> +/* SYMBFIFOL */
> +#define R367_OFDM_SYMBFIFOL 0xF2E5
> +#define F367_OFDM_DEFGEN_SYMFIFO_LO 0xF2E500FF
> +
> +/* SYMBOFFSM */
> +#define R367_OFDM_SYMBOFFSM 0xF2E6
> +#define F367_OFDM_TOKENID_RESET2 0xF2E60080
> +#define F367_OFDM_SDDL_REINIT2 0xF2E60040
> +#define F367_OFDM_SDD_REINIT2 0xF2E60020
> +#define F367_OFDM_SYMBOFFSM_4 0xF2E60010
> +#define F367_OFDM_SYMBOFFSM_3 0xF2E60008
> +#define F367_OFDM_DEFGEN_SYMBOFFSET_HI 0xF2E60007
> +
> +/* SYMBOFFSL */
> +#define R367_OFDM_SYMBOFFSL 0xF2E7
> +#define F367_OFDM_DEFGEN_SYMBOFFSET_LO 0xF2E700FF
> +
> +/* DEBUG_LT4 */
> +#define R367_DEBUG_LT4 0xF400
> +#define F367_F_DEBUG_LT4 0xF40000FF
> +
> +/* DEBUG_LT5 */
> +#define R367_DEBUG_LT5 0xF401
> +#define F367_F_DEBUG_LT5 0xF40100FF
> +
> +/* DEBUG_LT6 */
> +#define R367_DEBUG_LT6 0xF402
> +#define F367_F_DEBUG_LT6 0xF40200FF
> +
> +/* DEBUG_LT7 */
> +#define R367_DEBUG_LT7 0xF403
> +#define F367_F_DEBUG_LT7 0xF40300FF
> +
> +/* DEBUG_LT8 */
> +#define R367_DEBUG_LT8 0xF404
> +#define F367_F_DEBUG_LT8 0xF40400FF
> +
> +/* DEBUG_LT9 */
> +#define R367_DEBUG_LT9 0xF405
> +#define F367_F_DEBUG_LT9 0xF40500FF
> +
> +/* CTRL_1 */
> +#define R367_QAM_CTRL_1 0xF402
> +#define F367_QAM_SOFT_RST 0xF4020080
> +#define F367_QAM_EQU_RST 0xF4020008
> +#define F367_QAM_CRL_RST 0xF4020004
> +#define F367_QAM_TRL_RST 0xF4020002
> +#define F367_QAM_AGC_RST 0xF4020001
> +
> +/* CTRL_2 */
> +#define R367_QAM_CTRL_2 0xF403
> +#define F367_QAM_DEINT_RST 0xF4030008
> +#define F367_QAM_RS_RST 0xF4030004
> +
> +/* IT_STATUS1 */
> +#define R367_QAM_IT_STATUS1 0xF408
> +#define F367_QAM_SWEEP_OUT 0xF4080080
> +#define F367_QAM_FSM_CRL 0xF4080040
> +#define F367_QAM_CRL_LOCK 0xF4080020
> +#define F367_QAM_MFSM 0xF4080010
> +#define F367_QAM_TRL_LOCK 0xF4080008
> +#define F367_QAM_TRL_AGC_LIMIT 0xF4080004
> +#define F367_QAM_ADJ_AGC_LOCK 0xF4080002
> +#define F367_QAM_AGC_QAM_LOCK 0xF4080001
> +
> +/* IT_STATUS2 */
> +#define R367_QAM_IT_STATUS2 0xF409
> +#define F367_QAM_TSMF_CNT 0xF4090080
> +#define F367_QAM_TSMF_EOF 0xF4090040
> +#define F367_QAM_TSMF_RDY 0xF4090020
> +#define F367_QAM_FEC_NOCORR 0xF4090010
> +#define F367_QAM_SYNCSTATE 0xF4090008
> +#define F367_QAM_DEINT_LOCK 0xF4090004
> +#define F367_QAM_FADDING_FRZ 0xF4090002
> +#define F367_QAM_TAPMON_ALARM 0xF4090001
> +
> +/* IT_EN1 */
> +#define R367_QAM_IT_EN1 0xF40A
> +#define F367_QAM_SWEEP_OUTE 0xF40A0080
> +#define F367_QAM_FSM_CRLE 0xF40A0040
> +#define F367_QAM_CRL_LOCKE 0xF40A0020
> +#define F367_QAM_MFSME 0xF40A0010
> +#define F367_QAM_TRL_LOCKE 0xF40A0008
> +#define F367_QAM_TRL_AGC_LIMITE 0xF40A0004
> +#define F367_QAM_ADJ_AGC_LOCKE 0xF40A0002
> +#define F367_QAM_AGC_LOCKE 0xF40A0001
> +
> +/* IT_EN2 */
> +#define R367_QAM_IT_EN2 0xF40B
> +#define F367_QAM_TSMF_CNTE 0xF40B0080
> +#define F367_QAM_TSMF_EOFE 0xF40B0040
> +#define F367_QAM_TSMF_RDYE 0xF40B0020
> +#define F367_QAM_FEC_NOCORRE 0xF40B0010
> +#define F367_QAM_SYNCSTATEE 0xF40B0008
> +#define F367_QAM_DEINT_LOCKE 0xF40B0004
> +#define F367_QAM_FADDING_FRZE 0xF40B0002
> +#define F367_QAM_TAPMON_ALARME 0xF40B0001
> +
> +/* CTRL_STATUS */
> +#define R367_QAM_CTRL_STATUS 0xF40C
> +#define F367_QAM_QAMFEC_LOCK 0xF40C0004
> +#define F367_QAM_TSMF_LOCK 0xF40C0002
> +#define F367_QAM_TSMF_ERROR 0xF40C0001
> +
> +/* TEST_CTL */
> +#define R367_QAM_TEST_CTL 0xF40F
> +#define F367_QAM_TST_BLK_SEL 0xF40F0060
> +#define F367_QAM_TST_BUS_SEL 0xF40F001F
> +
> +/* AGC_CTL */
> +#define R367_QAM_AGC_CTL 0xF410
> +#define F367_QAM_AGC_LCK_TH 0xF41000F0
> +#define F367_QAM_AGC_ACCUMRSTSEL 0xF4100007
> +
> +/* AGC_IF_CFG */
> +#define R367_QAM_AGC_IF_CFG 0xF411
> +#define F367_QAM_AGC_IF_BWSEL 0xF41100F0
> +#define F367_QAM_AGC_IF_FREEZE 0xF4110002
> +
> +/* AGC_RF_CFG */
> +#define R367_QAM_AGC_RF_CFG 0xF412
> +#define F367_QAM_AGC_RF_BWSEL 0xF4120070
> +#define F367_QAM_AGC_RF_FREEZE 0xF4120002
> +
> +/* AGC_PWM_CFG */
> +#define R367_QAM_AGC_PWM_CFG 0xF413
> +#define F367_QAM_AGC_RF_PWM_TST 0xF4130080
> +#define F367_QAM_AGC_RF_PWM_INV 0xF4130040
> +#define F367_QAM_AGC_IF_PWM_TST 0xF4130008
> +#define F367_QAM_AGC_IF_PWM_INV 0xF4130004
> +#define F367_QAM_AGC_PWM_CLKDIV 0xF4130003
> +
> +/* AGC_PWR_REF_L */
> +#define R367_QAM_AGC_PWR_REF_L 0xF414
> +#define F367_QAM_AGC_PWRREF_LO 0xF41400FF
> +
> +/* AGC_PWR_REF_H */
> +#define R367_QAM_AGC_PWR_REF_H 0xF415
> +#define F367_QAM_AGC_PWRREF_HI 0xF4150003
> +
> +/* AGC_RF_TH_L */
> +#define R367_QAM_AGC_RF_TH_L 0xF416
> +#define F367_QAM_AGC_RF_TH_LO 0xF41600FF
> +
> +/* AGC_RF_TH_H */
> +#define R367_QAM_AGC_RF_TH_H 0xF417
> +#define F367_QAM_AGC_RF_TH_HI 0xF417000F
> +
> +/* AGC_IF_LTH_L */
> +#define R367_QAM_AGC_IF_LTH_L 0xF418
> +#define F367_QAM_AGC_IF_THLO_LO 0xF41800FF
> +
> +/* AGC_IF_LTH_H */
> +#define R367_QAM_AGC_IF_LTH_H 0xF419
> +#define F367_QAM_AGC_IF_THLO_HI 0xF419000F
> +
> +/* AGC_IF_HTH_L */
> +#define R367_QAM_AGC_IF_HTH_L 0xF41A
> +#define F367_QAM_AGC_IF_THHI_LO 0xF41A00FF
> +
> +/* AGC_IF_HTH_H */
> +#define R367_QAM_AGC_IF_HTH_H 0xF41B
> +#define F367_QAM_AGC_IF_THHI_HI 0xF41B000F
> +
> +/* AGC_PWR_RD_L */
> +#define R367_QAM_AGC_PWR_RD_L 0xF41C
> +#define F367_QAM_AGC_PWR_WORD_LO 0xF41C00FF
> +
> +/* AGC_PWR_RD_M */
> +#define R367_QAM_AGC_PWR_RD_M 0xF41D
> +#define F367_QAM_AGC_PWR_WORD_ME 0xF41D00FF
> +
> +/* AGC_PWR_RD_H */
> +#define R367_QAM_AGC_PWR_RD_H 0xF41E
> +#define F367_QAM_AGC_PWR_WORD_HI 0xF41E0003
> +
> +/* AGC_PWM_IFCMD_L */
> +#define R367_QAM_AGC_PWM_IFCMD_L 0xF420
> +#define F367_QAM_AGC_IF_PWMCMD_LO 0xF42000FF
> +
> +/* AGC_PWM_IFCMD_H */
> +#define R367_QAM_AGC_PWM_IFCMD_H 0xF421
> +#define F367_QAM_AGC_IF_PWMCMD_HI 0xF421000F
> +
> +/* AGC_PWM_RFCMD_L */
> +#define R367_QAM_AGC_PWM_RFCMD_L 0xF422
> +#define F367_QAM_AGC_RF_PWMCMD_LO 0xF42200FF
> +
> +/* AGC_PWM_RFCMD_H */
> +#define R367_QAM_AGC_PWM_RFCMD_H 0xF423
> +#define F367_QAM_AGC_RF_PWMCMD_HI 0xF423000F
> +
> +/* IQDEM_CFG */
> +#define R367_QAM_IQDEM_CFG 0xF424
> +#define F367_QAM_IQDEM_CLK_SEL 0xF4240004
> +#define F367_QAM_IQDEM_INVIQ 0xF4240002
> +#define F367_QAM_IQDEM_A2DTYPE 0xF4240001
> +
> +/* MIX_NCO_LL */
> +#define R367_QAM_MIX_NCO_LL 0xF425
> +#define F367_QAM_MIX_NCO_INC_LL 0xF42500FF
> +
> +/* MIX_NCO_HL */
> +#define R367_QAM_MIX_NCO_HL 0xF426
> +#define F367_QAM_MIX_NCO_INC_HL 0xF42600FF
> +
> +/* MIX_NCO_HH */
> +#define R367_QAM_MIX_NCO_HH 0xF427
> +#define F367_QAM_MIX_NCO_INVCNST 0xF4270080
> +#define F367_QAM_MIX_NCO_INC_HH 0xF427007F
> +
> +/* SRC_NCO_LL */
> +#define R367_QAM_SRC_NCO_LL 0xF428
> +#define F367_QAM_SRC_NCO_INC_LL 0xF42800FF
> +
> +/* SRC_NCO_LH */
> +#define R367_QAM_SRC_NCO_LH 0xF429
> +#define F367_QAM_SRC_NCO_INC_LH 0xF42900FF
> +
> +/* SRC_NCO_HL */
> +#define R367_QAM_SRC_NCO_HL 0xF42A
> +#define F367_QAM_SRC_NCO_INC_HL 0xF42A00FF
> +
> +/* SRC_NCO_HH */
> +#define R367_QAM_SRC_NCO_HH 0xF42B
> +#define F367_QAM_SRC_NCO_INC_HH 0xF42B007F
> +
> +/* IQDEM_GAIN_SRC_L */
> +#define R367_QAM_IQDEM_GAIN_SRC_L 0xF42C
> +#define F367_QAM_GAIN_SRC_LO 0xF42C00FF
> +
> +/* IQDEM_GAIN_SRC_H */
> +#define R367_QAM_IQDEM_GAIN_SRC_H 0xF42D
> +#define F367_QAM_GAIN_SRC_HI 0xF42D0003
> +
> +/* IQDEM_DCRM_CFG_LL */
> +#define R367_QAM_IQDEM_DCRM_CFG_LL 0xF430
> +#define F367_QAM_DCRM0_DCIN_L 0xF43000FF
> +
> +/* IQDEM_DCRM_CFG_LH */
> +#define R367_QAM_IQDEM_DCRM_CFG_LH 0xF431
> +#define F367_QAM_DCRM1_I_DCIN_L 0xF43100FC
> +#define F367_QAM_DCRM0_DCIN_H 0xF4310003
> +
> +/* IQDEM_DCRM_CFG_HL */
> +#define R367_QAM_IQDEM_DCRM_CFG_HL 0xF432
> +#define F367_QAM_DCRM1_Q_DCIN_L 0xF43200F0
> +#define F367_QAM_DCRM1_I_DCIN_H 0xF432000F
> +
> +/* IQDEM_DCRM_CFG_HH */
> +#define R367_QAM_IQDEM_DCRM_CFG_HH 0xF433
> +#define F367_QAM_DCRM1_FRZ 0xF4330080
> +#define F367_QAM_DCRM0_FRZ 0xF4330040
> +#define F367_QAM_DCRM1_Q_DCIN_H 0xF433003F
> +
> +/* IQDEM_ADJ_COEFF0 */
> +#define R367_QAM_IQDEM_ADJ_COEFF0 0xF434
> +#define F367_QAM_ADJIIR_COEFF10_L 0xF43400FF
> +
> +/* IQDEM_ADJ_COEFF1 */
> +#define R367_QAM_IQDEM_ADJ_COEFF1 0xF435
> +#define F367_QAM_ADJIIR_COEFF11_L 0xF43500FC
> +#define F367_QAM_ADJIIR_COEFF10_H 0xF4350003
> +
> +/* IQDEM_ADJ_COEFF2 */
> +#define R367_QAM_IQDEM_ADJ_COEFF2 0xF436
> +#define F367_QAM_ADJIIR_COEFF12_L 0xF43600F0
> +#define F367_QAM_ADJIIR_COEFF11_H 0xF436000F
> +
> +/* IQDEM_ADJ_COEFF3 */
> +#define R367_QAM_IQDEM_ADJ_COEFF3 0xF437
> +#define F367_QAM_ADJIIR_COEFF20_L 0xF43700C0
> +#define F367_QAM_ADJIIR_COEFF12_H 0xF437003F
> +
> +/* IQDEM_ADJ_COEFF4 */
> +#define R367_QAM_IQDEM_ADJ_COEFF4 0xF438
> +#define F367_QAM_ADJIIR_COEFF20_H 0xF43800FF
> +
> +/* IQDEM_ADJ_COEFF5 */
> +#define R367_QAM_IQDEM_ADJ_COEFF5 0xF439
> +#define F367_QAM_ADJIIR_COEFF21_L 0xF43900FF
> +
> +/* IQDEM_ADJ_COEFF6 */
> +#define R367_QAM_IQDEM_ADJ_COEFF6 0xF43A
> +#define F367_QAM_ADJIIR_COEFF22_L 0xF43A00FC
> +#define F367_QAM_ADJIIR_COEFF21_H 0xF43A0003
> +
> +/* IQDEM_ADJ_COEFF7 */
> +#define R367_QAM_IQDEM_ADJ_COEFF7 0xF43B
> +#define F367_QAM_ADJIIR_COEFF22_H 0xF43B000F
> +
> +/* IQDEM_ADJ_EN */
> +#define R367_QAM_IQDEM_ADJ_EN 0xF43C
> +#define F367_QAM_ALLPASSFILT_EN 0xF43C0008
> +#define F367_QAM_ADJ_AGC_EN 0xF43C0004
> +#define F367_QAM_ADJ_COEFF_FRZ 0xF43C0002
> +#define F367_QAM_ADJ_EN 0xF43C0001
> +
> +/* IQDEM_ADJ_AGC_REF */
> +#define R367_QAM_IQDEM_ADJ_AGC_REF 0xF43D
> +#define F367_QAM_ADJ_AGC_REF 0xF43D00FF
> +
> +/* ALLPASSFILT1 */
> +#define R367_QAM_ALLPASSFILT1 0xF440
> +#define F367_QAM_ALLPASSFILT_COEFF1_LO 0xF44000FF
> +
> +/* ALLPASSFILT2 */
> +#define R367_QAM_ALLPASSFILT2 0xF441
> +#define F367_QAM_ALLPASSFILT_COEFF1_ME 0xF44100FF
> +
> +/* ALLPASSFILT3 */
> +#define R367_QAM_ALLPASSFILT3 0xF442
> +#define F367_QAM_ALLPASSFILT_COEFF2_LO 0xF44200C0
> +#define F367_QAM_ALLPASSFILT_COEFF1_HI 0xF442003F
> +
> +/* ALLPASSFILT4 */
> +#define R367_QAM_ALLPASSFILT4 0xF443
> +#define F367_QAM_ALLPASSFILT_COEFF2_MEL 0xF44300FF
> +
> +/* ALLPASSFILT5 */
> +#define R367_QAM_ALLPASSFILT5 0xF444
> +#define F367_QAM_ALLPASSFILT_COEFF2_MEH 0xF44400FF
> +
> +/* ALLPASSFILT6 */
> +#define R367_QAM_ALLPASSFILT6 0xF445
> +#define F367_QAM_ALLPASSFILT_COEFF3_LO 0xF44500F0
> +#define F367_QAM_ALLPASSFILT_COEFF2_HI 0xF445000F
> +
> +/* ALLPASSFILT7 */
> +#define R367_QAM_ALLPASSFILT7 0xF446
> +#define F367_QAM_ALLPASSFILT_COEFF3_MEL 0xF44600FF
> +
> +/* ALLPASSFILT8 */
> +#define R367_QAM_ALLPASSFILT8 0xF447
> +#define F367_QAM_ALLPASSFILT_COEFF3_MEH 0xF44700FF
> +
> +/* ALLPASSFILT9 */
> +#define R367_QAM_ALLPASSFILT9 0xF448
> +#define F367_QAM_ALLPASSFILT_COEFF4_LO 0xF44800FC
> +#define F367_QAM_ALLPASSFILT_COEFF3_HI 0xF4480003
> +
> +/* ALLPASSFILT10 */
> +#define R367_QAM_ALLPASSFILT10 0xF449
> +#define F367_QAM_ALLPASSFILT_COEFF4_ME 0xF44900FF
> +
> +/* ALLPASSFILT11 */
> +#define R367_QAM_ALLPASSFILT11 0xF44A
> +#define F367_QAM_ALLPASSFILT_COEFF4_HI 0xF44A00FF
> +
> +/* TRL_AGC_CFG */
> +#define R367_QAM_TRL_AGC_CFG 0xF450
> +#define F367_QAM_TRL_AGC_FREEZE 0xF4500080
> +#define F367_QAM_TRL_AGC_REF 0xF450007F
> +
> +/* TRL_LPF_CFG */
> +#define R367_QAM_TRL_LPF_CFG 0xF454
> +#define F367_QAM_NYQPOINT_INV 0xF4540040
> +#define F367_QAM_TRL_SHIFT 0xF4540030
> +#define F367_QAM_NYQ_COEFF_SEL 0xF454000C
> +#define F367_QAM_TRL_LPF_FREEZE 0xF4540002
> +#define F367_QAM_TRL_LPF_CRT 0xF4540001
> +
> +/* TRL_LPF_ACQ_GAIN */
> +#define R367_QAM_TRL_LPF_ACQ_GAIN 0xF455
> +#define F367_QAM_TRL_GDIR_ACQ 0xF4550070
> +#define F367_QAM_TRL_GINT_ACQ 0xF4550007
> +
> +/* TRL_LPF_TRK_GAIN */
> +#define R367_QAM_TRL_LPF_TRK_GAIN 0xF456
> +#define F367_QAM_TRL_GDIR_TRK 0xF4560070
> +#define F367_QAM_TRL_GINT_TRK 0xF4560007
> +
> +/* TRL_LPF_OUT_GAIN */
> +#define R367_QAM_TRL_LPF_OUT_GAIN 0xF457
> +#define F367_QAM_TRL_GAIN_OUT 0xF4570007
> +
> +/* TRL_LOCKDET_LTH */
> +#define R367_QAM_TRL_LOCKDET_LTH 0xF458
> +#define F367_QAM_TRL_LCK_THLO 0xF4580007
> +
> +/* TRL_LOCKDET_HTH */
> +#define R367_QAM_TRL_LOCKDET_HTH 0xF459
> +#define F367_QAM_TRL_LCK_THHI 0xF45900FF
> +
> +/* TRL_LOCKDET_TRGVAL */
> +#define R367_QAM_TRL_LOCKDET_TRGVAL 0xF45A
> +#define F367_QAM_TRL_LCK_TRG 0xF45A00FF
> +
> +/* IQ_QAM */
> +#define R367_QAM_IQ_QAM 0xF45C
> +#define F367_QAM_IQ_INPUT 0xF45C0008
> +#define F367_QAM_DETECT_MODE 0xF45C0007
> +
> +/* FSM_STATE */
> +#define R367_QAM_FSM_STATE 0xF460
> +#define F367_QAM_CRL_DFE 0xF4600080
> +#define F367_QAM_DFE_START 0xF4600040
> +#define F367_QAM_CTRLG_START 0xF4600030
> +#define F367_QAM_FSM_FORCESTATE 0xF460000F
> +
> +/* FSM_CTL */
> +#define R367_QAM_FSM_CTL 0xF461
> +#define F367_QAM_FEC2_EN 0xF4610040
> +#define F367_QAM_SIT_EN 0xF4610020
> +#define F367_QAM_TRL_AHEAD 0xF4610010
> +#define F367_QAM_TRL2_EN 0xF4610008
> +#define F367_QAM_FSM_EQA1_EN 0xF4610004
> +#define F367_QAM_FSM_BKP_DIS 0xF4610002
> +#define F367_QAM_FSM_FORCE_EN 0xF4610001
> +
> +/* FSM_STS */
> +#define R367_QAM_FSM_STS 0xF462
> +#define F367_QAM_FSM_STATUS 0xF462000F
> +
> +/* FSM_SNR0_HTH */
> +#define R367_QAM_FSM_SNR0_HTH 0xF463
> +#define F367_QAM_SNR0_HTH 0xF46300FF
> +
> +/* FSM_SNR1_HTH */
> +#define R367_QAM_FSM_SNR1_HTH 0xF464
> +#define F367_QAM_SNR1_HTH 0xF46400FF
> +
> +/* FSM_SNR2_HTH */
> +#define R367_QAM_FSM_SNR2_HTH 0xF465
> +#define F367_QAM_SNR2_HTH 0xF46500FF
> +
> +/* FSM_SNR0_LTH */
> +#define R367_QAM_FSM_SNR0_LTH 0xF466
> +#define F367_QAM_SNR0_LTH 0xF46600FF
> +
> +/* FSM_SNR1_LTH */
> +#define R367_QAM_FSM_SNR1_LTH 0xF467
> +#define F367_QAM_SNR1_LTH 0xF46700FF
> +
> +/* FSM_EQA1_HTH */
> +#define R367_QAM_FSM_EQA1_HTH 0xF468
> +#define F367_QAM_SNR3_HTH_LO 0xF46800F0
> +#define F367_QAM_EQA1_HTH 0xF468000F
> +
> +/* FSM_TEMPO */
> +#define R367_QAM_FSM_TEMPO 0xF469
> +#define F367_QAM_SIT 0xF46900C0
> +#define F367_QAM_WST 0xF4690038
> +#define F367_QAM_ELT 0xF4690006
> +#define F367_QAM_SNR3_HTH_HI 0xF4690001
> +
> +/* FSM_CONFIG */
> +#define R367_QAM_FSM_CONFIG 0xF46A
> +#define F367_QAM_FEC2_DFEOFF 0xF46A0004
> +#define F367_QAM_PRIT_STATE 0xF46A0002
> +#define F367_QAM_MODMAP_STATE 0xF46A0001
> +
> +/* EQU_I_TESTTAP_L */
> +#define R367_QAM_EQU_I_TESTTAP_L 0xF474
> +#define F367_QAM_I_TEST_TAP_L 0xF47400FF
> +
> +/* EQU_I_TESTTAP_M */
> +#define R367_QAM_EQU_I_TESTTAP_M 0xF475
> +#define F367_QAM_I_TEST_TAP_M 0xF47500FF
> +
> +/* EQU_I_TESTTAP_H */
> +#define R367_QAM_EQU_I_TESTTAP_H 0xF476
> +#define F367_QAM_I_TEST_TAP_H 0xF476001F
> +
> +/* EQU_TESTAP_CFG */
> +#define R367_QAM_EQU_TESTAP_CFG 0xF477
> +#define F367_QAM_TEST_FFE_DFE_SEL 0xF4770040
> +#define F367_QAM_TEST_TAP_SELECT 0xF477003F
> +
> +/* EQU_Q_TESTTAP_L */
> +#define R367_QAM_EQU_Q_TESTTAP_L 0xF478
> +#define F367_QAM_Q_TEST_TAP_L 0xF47800FF
> +
> +/* EQU_Q_TESTTAP_M */
> +#define R367_QAM_EQU_Q_TESTTAP_M 0xF479
> +#define F367_QAM_Q_TEST_TAP_M 0xF47900FF
> +
> +/* EQU_Q_TESTTAP_H */
> +#define R367_QAM_EQU_Q_TESTTAP_H 0xF47A
> +#define F367_QAM_Q_TEST_TAP_H 0xF47A001F
> +
> +/* EQU_TAP_CTRL */
> +#define R367_QAM_EQU_TAP_CTRL 0xF47B
> +#define F367_QAM_MTAP_FRZ 0xF47B0010
> +#define F367_QAM_PRE_FREEZE 0xF47B0008
> +#define F367_QAM_DFE_TAPMON_EN 0xF47B0004
> +#define F367_QAM_FFE_TAPMON_EN 0xF47B0002
> +#define F367_QAM_MTAP_ONLY 0xF47B0001
> +
> +/* EQU_CTR_CRL_CONTROL_L */
> +#define R367_QAM_EQU_CTR_CRL_CONTROL_L 0xF47C
> +#define F367_QAM_EQU_CTR_CRL_CONTROL_LO 0xF47C00FF
> +
> +/* EQU_CTR_CRL_CONTROL_H */
> +#define R367_QAM_EQU_CTR_CRL_CONTROL_H 0xF47D
> +#define F367_QAM_EQU_CTR_CRL_CONTROL_HI 0xF47D00FF
> +
> +/* EQU_CTR_HIPOW_L */
> +#define R367_QAM_EQU_CTR_HIPOW_L 0xF47E
> +#define F367_QAM_CTR_HIPOW_L 0xF47E00FF
> +
> +/* EQU_CTR_HIPOW_H */
> +#define R367_QAM_EQU_CTR_HIPOW_H 0xF47F
> +#define F367_QAM_CTR_HIPOW_H 0xF47F00FF
> +
> +/* EQU_I_EQU_LO */
> +#define R367_QAM_EQU_I_EQU_LO 0xF480
> +#define F367_QAM_EQU_I_EQU_L 0xF48000FF
> +
> +/* EQU_I_EQU_HI */
> +#define R367_QAM_EQU_I_EQU_HI 0xF481
> +#define F367_QAM_EQU_I_EQU_H 0xF4810003
> +
> +/* EQU_Q_EQU_LO */
> +#define R367_QAM_EQU_Q_EQU_LO 0xF482
> +#define F367_QAM_EQU_Q_EQU_L 0xF48200FF
> +
> +/* EQU_Q_EQU_HI */
> +#define R367_QAM_EQU_Q_EQU_HI 0xF483
> +#define F367_QAM_EQU_Q_EQU_H 0xF4830003
> +
> +/* EQU_MAPPER */
> +#define R367_QAM_EQU_MAPPER 0xF484
> +#define F367_QAM_QUAD_AUTO 0xF4840080
> +#define F367_QAM_QUAD_INV 0xF4840040
> +#define F367_QAM_QAM_MODE 0xF4840007
> +
> +/* EQU_SWEEP_RATE */
> +#define R367_QAM_EQU_SWEEP_RATE 0xF485
> +#define F367_QAM_SNR_PER 0xF48500C0
> +#define F367_QAM_SWEEP_RATE 0xF485003F
> +
> +/* EQU_SNR_LO */
> +#define R367_QAM_EQU_SNR_LO 0xF486
> +#define F367_QAM_SNR_LO 0xF48600FF
> +
> +/* EQU_SNR_HI */
> +#define R367_QAM_EQU_SNR_HI 0xF487
> +#define F367_QAM_SNR_HI 0xF48700FF
> +
> +/* EQU_GAMMA_LO */
> +#define R367_QAM_EQU_GAMMA_LO 0xF488
> +#define F367_QAM_GAMMA_LO 0xF48800FF
> +
> +/* EQU_GAMMA_HI */
> +#define R367_QAM_EQU_GAMMA_HI 0xF489
> +#define F367_QAM_GAMMA_ME 0xF48900FF
> +
> +/* EQU_ERR_GAIN */
> +#define R367_QAM_EQU_ERR_GAIN 0xF48A
> +#define F367_QAM_EQA1MU 0xF48A0070
> +#define F367_QAM_CRL2MU 0xF48A000E
> +#define F367_QAM_GAMMA_HI 0xF48A0001
> +
> +/* EQU_RADIUS */
> +#define R367_QAM_EQU_RADIUS 0xF48B
> +#define F367_QAM_RADIUS 0xF48B00FF
> +
> +/* EQU_FFE_MAINTAP */
> +#define R367_QAM_EQU_FFE_MAINTAP 0xF48C
> +#define F367_QAM_FFE_MAINTAP_INIT 0xF48C00FF
> +
> +/* EQU_FFE_LEAKAGE */
> +#define R367_QAM_EQU_FFE_LEAKAGE 0xF48E
> +#define F367_QAM_LEAK_PER 0xF48E00F0
> +#define F367_QAM_EQU_OUTSEL 0xF48E0002
> +#define F367_QAM_PNT2DFE 0xF48E0001
> +
> +/* EQU_FFE_MAINTAP_POS */
> +#define R367_QAM_EQU_FFE_MAINTAP_POS 0xF48F
> +#define F367_QAM_FFE_LEAK_EN 0xF48F0080
> +#define F367_QAM_DFE_LEAK_EN 0xF48F0040
> +#define F367_QAM_FFE_MAINTAP_POS 0xF48F003F
> +
> +/* EQU_GAIN_WIDE */
> +#define R367_QAM_EQU_GAIN_WIDE 0xF490
> +#define F367_QAM_DFE_GAIN_WIDE 0xF49000F0
> +#define F367_QAM_FFE_GAIN_WIDE 0xF490000F
> +
> +/* EQU_GAIN_NARROW */
> +#define R367_QAM_EQU_GAIN_NARROW 0xF491
> +#define F367_QAM_DFE_GAIN_NARROW 0xF49100F0
> +#define F367_QAM_FFE_GAIN_NARROW 0xF491000F
> +
> +/* EQU_CTR_LPF_GAIN */
> +#define R367_QAM_EQU_CTR_LPF_GAIN 0xF492
> +#define F367_QAM_CTR_GTO 0xF4920080
> +#define F367_QAM_CTR_GDIR 0xF4920070
> +#define F367_QAM_SWEEP_EN 0xF4920008
> +#define F367_QAM_CTR_GINT 0xF4920007
> +
> +/* EQU_CRL_LPF_GAIN */
> +#define R367_QAM_EQU_CRL_LPF_GAIN 0xF493
> +#define F367_QAM_CRL_GTO 0xF4930080
> +#define F367_QAM_CRL_GDIR 0xF4930070
> +#define F367_QAM_SWEEP_DIR 0xF4930008
> +#define F367_QAM_CRL_GINT 0xF4930007
> +
> +/* EQU_GLOBAL_GAIN */
> +#define R367_QAM_EQU_GLOBAL_GAIN 0xF494
> +#define F367_QAM_CRL_GAIN 0xF49400F8
> +#define F367_QAM_CTR_INC_GAIN 0xF4940004
> +#define F367_QAM_CTR_FRAC 0xF4940003
> +
> +/* EQU_CRL_LD_SEN */
> +#define R367_QAM_EQU_CRL_LD_SEN 0xF495
> +#define F367_QAM_CTR_BADPOINT_EN 0xF4950080
> +#define F367_QAM_CTR_GAIN 0xF4950070
> +#define F367_QAM_LIMANEN 0xF4950008
> +#define F367_QAM_CRL_LD_SEN 0xF4950007
> +
> +/* EQU_CRL_LD_VAL */
> +#define R367_QAM_EQU_CRL_LD_VAL 0xF496
> +#define F367_QAM_CRL_BISTH_LIMIT 0xF4960080
> +#define F367_QAM_CARE_EN 0xF4960040
> +#define F367_QAM_CRL_LD_PER 0xF4960030
> +#define F367_QAM_CRL_LD_WST 0xF496000C
> +#define F367_QAM_CRL_LD_TFS 0xF4960003
> +
> +/* EQU_CRL_TFR */
> +#define R367_QAM_EQU_CRL_TFR 0xF497
> +#define F367_QAM_CRL_LD_TFR 0xF49700FF
> +
> +/* EQU_CRL_BISTH_LO */
> +#define R367_QAM_EQU_CRL_BISTH_LO 0xF498
> +#define F367_QAM_CRL_BISTH_LO 0xF49800FF
> +
> +/* EQU_CRL_BISTH_HI */
> +#define R367_QAM_EQU_CRL_BISTH_HI 0xF499
> +#define F367_QAM_CRL_BISTH_HI 0xF49900FF
> +
> +/* EQU_SWEEP_RANGE_LO */
> +#define R367_QAM_EQU_SWEEP_RANGE_LO 0xF49A
> +#define F367_QAM_SWEEP_RANGE_LO 0xF49A00FF
> +
> +/* EQU_SWEEP_RANGE_HI */
> +#define R367_QAM_EQU_SWEEP_RANGE_HI 0xF49B
> +#define F367_QAM_SWEEP_RANGE_HI 0xF49B00FF
> +
> +/* EQU_CRL_LIMITER */
> +#define R367_QAM_EQU_CRL_LIMITER 0xF49C
> +#define F367_QAM_BISECTOR_EN 0xF49C0080
> +#define F367_QAM_PHEST128_EN 0xF49C0040
> +#define F367_QAM_CRL_LIM 0xF49C003F
> +
> +/* EQU_MODULUS_MAP */
> +#define R367_QAM_EQU_MODULUS_MAP 0xF49D
> +#define F367_QAM_PNT_DEPTH 0xF49D00E0
> +#define F367_QAM_MODULUS_CMP 0xF49D001F
> +
> +/* EQU_PNT_GAIN */
> +#define R367_QAM_EQU_PNT_GAIN 0xF49E
> +#define F367_QAM_PNT_EN 0xF49E0080
> +#define F367_QAM_MODULUSMAP_EN 0xF49E0040
> +#define F367_QAM_PNT_GAIN 0xF49E003F
> +
> +/* FEC_AC_CTR_0 */
> +#define R367_QAM_FEC_AC_CTR_0 0xF4A8
> +#define F367_QAM_BE_BYPASS 0xF4A80020
> +#define F367_QAM_REFRESH47 0xF4A80010
> +#define F367_QAM_CT_NBST 0xF4A80008
> +#define F367_QAM_TEI_ENA 0xF4A80004
> +#define F367_QAM_DS_ENA 0xF4A80002
> +#define F367_QAM_TSMF_EN 0xF4A80001
> +
> +/* FEC_AC_CTR_1 */
> +#define R367_QAM_FEC_AC_CTR_1 0xF4A9
> +#define F367_QAM_DEINT_DEPTH 0xF4A900FF
> +
> +/* FEC_AC_CTR_2 */
> +#define R367_QAM_FEC_AC_CTR_2 0xF4AA
> +#define F367_QAM_DEINT_M 0xF4AA00F8
> +#define F367_QAM_DIS_UNLOCK 0xF4AA0004
> +#define F367_QAM_DESCR_MODE 0xF4AA0003
> +
> +/* FEC_AC_CTR_3 */
> +#define R367_QAM_FEC_AC_CTR_3 0xF4AB
> +#define F367_QAM_DI_UNLOCK 0xF4AB0080
> +#define F367_QAM_DI_FREEZE 0xF4AB0040
> +#define F367_QAM_MISMATCH 0xF4AB0030
> +#define F367_QAM_ACQ_MODE 0xF4AB000C
> +#define F367_QAM_TRK_MODE 0xF4AB0003
> +
> +/* FEC_STATUS */
> +#define R367_QAM_FEC_STATUS 0xF4AC
> +#define F367_QAM_DEINT_SMCNTR 0xF4AC00E0
> +#define F367_QAM_DEINT_SYNCSTATE 0xF4AC0018
> +#define F367_QAM_DEINT_SYNLOST 0xF4AC0004
> +#define F367_QAM_DESCR_SYNCSTATE 0xF4AC0002
> +
> +/* RS_COUNTER_0 */
> +#define R367_QAM_RS_COUNTER_0 0xF4AE
> +#define F367_QAM_BK_CT_L 0xF4AE00FF
> +
> +/* RS_COUNTER_1 */
> +#define R367_QAM_RS_COUNTER_1 0xF4AF
> +#define F367_QAM_BK_CT_H 0xF4AF00FF
> +
> +/* RS_COUNTER_2 */
> +#define R367_QAM_RS_COUNTER_2 0xF4B0
> +#define F367_QAM_CORR_CT_L 0xF4B000FF
> +
> +/* RS_COUNTER_3 */
> +#define R367_QAM_RS_COUNTER_3 0xF4B1
> +#define F367_QAM_CORR_CT_H 0xF4B100FF
> +
> +/* RS_COUNTER_4 */
> +#define R367_QAM_RS_COUNTER_4 0xF4B2
> +#define F367_QAM_UNCORR_CT_L 0xF4B200FF
> +
> +/* RS_COUNTER_5 */
> +#define R367_QAM_RS_COUNTER_5 0xF4B3
> +#define F367_QAM_UNCORR_CT_H 0xF4B300FF
> +
> +/* BERT_0 */
> +#define R367_QAM_BERT_0 0xF4B4
> +#define F367_QAM_RS_NOCORR 0xF4B40004
> +#define F367_QAM_CT_HOLD 0xF4B40002
> +#define F367_QAM_CT_CLEAR 0xF4B40001
> +
> +/* BERT_1 */
> +#define R367_QAM_BERT_1 0xF4B5
> +#define F367_QAM_BERT_ON 0xF4B50020
> +#define F367_QAM_BERT_ERR_SRC 0xF4B50010
> +#define F367_QAM_BERT_ERR_MODE 0xF4B50008
> +#define F367_QAM_BERT_NBYTE 0xF4B50007
> +
> +/* BERT_2 */
> +#define R367_QAM_BERT_2 0xF4B6
> +#define F367_QAM_BERT_ERRCOUNT_L 0xF4B600FF
> +
> +/* BERT_3 */
> +#define R367_QAM_BERT_3 0xF4B7
> +#define F367_QAM_BERT_ERRCOUNT_H 0xF4B700FF
> +
> +/* OUTFORMAT_0 */
> +#define R367_QAM_OUTFORMAT_0 0xF4B8
> +#define F367_QAM_CLK_POLARITY 0xF4B80080
> +#define F367_QAM_FEC_TYPE 0xF4B80040
> +#define F367_QAM_SYNC_STRIP 0xF4B80008
> +#define F367_QAM_TS_SWAP 0xF4B80004
> +#define F367_QAM_OUTFORMAT 0xF4B80003
> +
> +/* OUTFORMAT_1 */
> +#define R367_QAM_OUTFORMAT_1 0xF4B9
> +#define F367_QAM_CI_DIVRANGE 0xF4B900FF
> +
> +/* SMOOTHER_2 */
> +#define R367_QAM_SMOOTHER_2 0xF4BE
> +#define F367_QAM_FIFO_BYPASS 0xF4BE0020
> +
> +/* TSMF_CTRL_0 */
> +#define R367_QAM_TSMF_CTRL_0 0xF4C0
> +#define F367_QAM_TS_NUMBER 0xF4C0001E
> +#define F367_QAM_SEL_MODE 0xF4C00001
> +
> +/* TSMF_CTRL_1 */
> +#define R367_QAM_TSMF_CTRL_1 0xF4C1
> +#define F367_QAM_CHECK_ERROR_BIT 0xF4C10080
> +#define F367_QAM_CHCK_F_SYNC 0xF4C10040
> +#define F367_QAM_H_MODE 0xF4C10008
> +#define F367_QAM_D_V_MODE 0xF4C10004
> +#define F367_QAM_MODE 0xF4C10003
> +
> +/* TSMF_CTRL_3 */
> +#define R367_QAM_TSMF_CTRL_3 0xF4C3
> +#define F367_QAM_SYNC_IN_COUNT 0xF4C300F0
> +#define F367_QAM_SYNC_OUT_COUNT 0xF4C3000F
> +
> +/* TS_ON_ID_0 */
> +#define R367_QAM_TS_ON_ID_0 0xF4C4
> +#define F367_QAM_TS_ID_L 0xF4C400FF
> +
> +/* TS_ON_ID_1 */
> +#define R367_QAM_TS_ON_ID_1 0xF4C5
> +#define F367_QAM_TS_ID_H 0xF4C500FF
> +
> +/* TS_ON_ID_2 */
> +#define R367_QAM_TS_ON_ID_2 0xF4C6
> +#define F367_QAM_ON_ID_L 0xF4C600FF
> +
> +/* TS_ON_ID_3 */
> +#define R367_QAM_TS_ON_ID_3 0xF4C7
> +#define F367_QAM_ON_ID_H 0xF4C700FF
> +
> +/* RE_STATUS_0 */
> +#define R367_QAM_RE_STATUS_0 0xF4C8
> +#define F367_QAM_RECEIVE_STATUS_L 0xF4C800FF
> +
> +/* RE_STATUS_1 */
> +#define R367_QAM_RE_STATUS_1 0xF4C9
> +#define F367_QAM_RECEIVE_STATUS_LH 0xF4C900FF
> +
> +/* RE_STATUS_2 */
> +#define R367_QAM_RE_STATUS_2 0xF4CA
> +#define F367_QAM_RECEIVE_STATUS_HL 0xF4CA00FF
> +
> +/* RE_STATUS_3 */
> +#define R367_QAM_RE_STATUS_3 0xF4CB
> +#define F367_QAM_RECEIVE_STATUS_HH 0xF4CB003F
> +
> +/* TS_STATUS_0 */
> +#define R367_QAM_TS_STATUS_0 0xF4CC
> +#define F367_QAM_TS_STATUS_L 0xF4CC00FF
> +
> +/* TS_STATUS_1 */
> +#define R367_QAM_TS_STATUS_1 0xF4CD
> +#define F367_QAM_TS_STATUS_H 0xF4CD007F
> +
> +/* TS_STATUS_2 */
> +#define R367_QAM_TS_STATUS_2 0xF4CE
> +#define F367_QAM_ERROR 0xF4CE0080
> +#define F367_QAM_EMERGENCY 0xF4CE0040
> +#define F367_QAM_CRE_TS 0xF4CE0030
> +#define F367_QAM_VER 0xF4CE000E
> +#define F367_QAM_M_LOCK 0xF4CE0001
> +
> +/* TS_STATUS_3 */
> +#define R367_QAM_TS_STATUS_3 0xF4CF
> +#define F367_QAM_UPDATE_READY 0xF4CF0080
> +#define F367_QAM_END_FRAME_HEADER 0xF4CF0040
> +#define F367_QAM_CONTCNT 0xF4CF0020
> +#define F367_QAM_TS_IDENTIFIER_SEL 0xF4CF000F
> +
> +/* T_O_ID_0 */
> +#define R367_QAM_T_O_ID_0 0xF4D0
> +#define F367_QAM_ON_ID_I_L 0xF4D000FF
> +
> +/* T_O_ID_1 */
> +#define R367_QAM_T_O_ID_1 0xF4D1
> +#define F367_QAM_ON_ID_I_H 0xF4D100FF
> +
> +/* T_O_ID_2 */
> +#define R367_QAM_T_O_ID_2 0xF4D2
> +#define F367_QAM_TS_ID_I_L 0xF4D200FF
> +
> +/* T_O_ID_3 */
> +#define R367_QAM_T_O_ID_3 0xF4D3
> +#define F367_QAM_TS_ID_I_H 0xF4D300FF
> +
> +#endif
@@ -56,6 +56,15 @@ config DVB_TDA18271C2DD
Say Y when you want to support this tuner.
+config DVB_STV0367DD
+ tristate "STV 0367 (DD)"
+ depends on DVB_CORE && I2C
+ default m if DVB_FE_CUSTOMISE
+ help
+ STV 0367 DVB-C/T demodulator (Digital Devices driver).
+
+ Say Y when you want to support this frontend.
+
comment "DVB-S (satellite) frontends"
depends on DVB_CORE
@@ -97,6 +97,7 @@ obj-$(CONFIG_DVB_STV0367) += stv0367.o
obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o
obj-$(CONFIG_DVB_DRXK) += drxk.o
obj-$(CONFIG_DVB_TDA18271C2DD) += tda18271c2dd.o
+obj-$(CONFIG_DVB_STV0367DD) += stv0367dd.o
obj-$(CONFIG_DVB_IT913X_FE) += it913x-fe.o
obj-$(CONFIG_DVB_A8293) += a8293.o
obj-$(CONFIG_DVB_TDA10071) += tda10071.o
new file mode 100644
@@ -0,0 +1,2329 @@
+/*
+ * stv0367dd.c: STV0367 DVB-C/T demodulator driver
+ *
+ * Copyright (C) 2010-2013 Digital Devices GmbH
+ * Copyright (C) 2013 Maik Broemme <mbroemme@parallels.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 only, as published by the Free Software Foundation.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/firmware.h>
+#include <linux/i2c.h>
+#include <linux/version.h>
+#include <asm/div64.h>
+
+#include "dvb_frontend.h"
+#include "stv0367dd.h"
+#include "stv0367dd_regs.h"
+
+enum omode { OM_NONE, OM_DVBT, OM_DVBC, OM_QAM_ITU_C };
+enum { QAM_MOD_QAM4 = 0,
+ QAM_MOD_QAM16,
+ QAM_MOD_QAM32,
+ QAM_MOD_QAM64,
+ QAM_MOD_QAM128,
+ QAM_MOD_QAM256,
+ QAM_MOD_QAM512,
+ QAM_MOD_QAM1024
+};
+
+enum {QAM_SPECT_NORMAL, QAM_SPECT_INVERTED };
+
+enum {
+ QAM_FEC_A = 1, /* J83 Annex A */
+ QAM_FEC_B = (1<<1), /* J83 Annex B */
+ QAM_FEC_C = (1<<2) /* J83 Annex C */
+};
+
+enum EDemodState { Off, QAMSet, OFDMSet, QAMStarted, OFDMStarted };
+
+struct stv_state {
+#ifdef USE_API3
+ struct dvb_frontend c_frontend;
+ struct dvb_frontend t_frontend;
+#else
+ struct dvb_frontend frontend;
+#endif
+ fe_modulation_t modulation;
+ u32 symbol_rate;
+ u32 bandwidth;
+ struct device *dev;
+
+ struct i2c_adapter *i2c;
+ u8 adr;
+ void *priv;
+
+ struct mutex mutex;
+ struct mutex ctlock;
+
+ u32 master_clock;
+ u32 adc_clock;
+ u8 ID;
+ u8 I2CRPT;
+ u32 omode;
+ u8 qam_inversion;
+
+ s32 IF;
+
+ s32 m_FECTimeOut;
+ s32 m_DemodTimeOut;
+ s32 m_SignalTimeOut;
+ s32 m_DemodLockTime;
+ s32 m_FFTTimeOut;
+ s32 m_TSTimeOut;
+
+ bool m_bFirstTimeLock;
+
+ u8 m_Save_QAM_AGC_CTL;
+
+ enum EDemodState demod_state;
+
+ u8 m_OFDM_FFTMode; // 0 = 2k, 1 = 8k, 2 = 4k
+ u8 m_OFDM_Modulation; //
+ u8 m_OFDM_FEC; //
+ u8 m_OFDM_Guard;
+
+ u32 ucblocks;
+ u32 ber;
+};
+
+struct init_table {
+ u16 adr;
+ u8 data;
+};
+
+struct init_table base_init[] = {
+ { R367_IOCFG0, 0x80 },
+ { R367_DAC0R, 0x00 },
+ { R367_IOCFG1, 0x00 },
+ { R367_DAC1R, 0x00 },
+ { R367_IOCFG2, 0x00 },
+ { R367_SDFR, 0x00 },
+ { R367_AUX_CLK, 0x00 },
+ { R367_FREESYS1, 0x00 },
+ { R367_FREESYS2, 0x00 },
+ { R367_FREESYS3, 0x00 },
+ { R367_GPIO_CFG, 0x55 },
+ { R367_GPIO_CMD, 0x01 },
+ { R367_TSTRES, 0x00 },
+ { R367_ANACTRL, 0x00 },
+ { R367_TSTBUS, 0x00 },
+ { R367_RF_AGC2, 0x20 },
+ { R367_ANADIGCTRL, 0x0b },
+ { R367_PLLMDIV, 0x01 },
+ { R367_PLLNDIV, 0x08 },
+ { R367_PLLSETUP, 0x18 },
+ { R367_DUAL_AD12, 0x04 },
+ { R367_TSTBIST, 0x00 },
+ { 0x0000, 0x00 }
+};
+
+struct init_table qam_init[] = {
+ { R367_QAM_CTRL_1, 0x06 },// Orginal 0x04
+ { R367_QAM_CTRL_2, 0x03 },
+ { R367_QAM_IT_STATUS1, 0x2b },
+ { R367_QAM_IT_STATUS2, 0x08 },
+ { R367_QAM_IT_EN1, 0x00 },
+ { R367_QAM_IT_EN2, 0x00 },
+ { R367_QAM_CTRL_STATUS, 0x04 },
+ { R367_QAM_TEST_CTL, 0x00 },
+ { R367_QAM_AGC_CTL, 0x73 },
+ { R367_QAM_AGC_IF_CFG, 0x50 },
+ { R367_QAM_AGC_RF_CFG, 0x02 },// RF Freeze
+ { R367_QAM_AGC_PWM_CFG, 0x03 },
+ { R367_QAM_AGC_PWR_REF_L, 0x5a },
+ { R367_QAM_AGC_PWR_REF_H, 0x00 },
+ { R367_QAM_AGC_RF_TH_L, 0xff },
+ { R367_QAM_AGC_RF_TH_H, 0x07 },
+ { R367_QAM_AGC_IF_LTH_L, 0x00 },
+ { R367_QAM_AGC_IF_LTH_H, 0x08 },
+ { R367_QAM_AGC_IF_HTH_L, 0xff },
+ { R367_QAM_AGC_IF_HTH_H, 0x07 },
+ { R367_QAM_AGC_PWR_RD_L, 0xa0 },
+ { R367_QAM_AGC_PWR_RD_M, 0xe9 },
+ { R367_QAM_AGC_PWR_RD_H, 0x03 },
+ { R367_QAM_AGC_PWM_IFCMD_L, 0xe4 },
+ { R367_QAM_AGC_PWM_IFCMD_H, 0x00 },
+ { R367_QAM_AGC_PWM_RFCMD_L, 0xff },
+ { R367_QAM_AGC_PWM_RFCMD_H, 0x07 },
+ { R367_QAM_IQDEM_CFG, 0x01 },
+ { R367_QAM_MIX_NCO_LL, 0x22 },
+ { R367_QAM_MIX_NCO_HL, 0x96 },
+ { R367_QAM_MIX_NCO_HH, 0x55 },
+ { R367_QAM_SRC_NCO_LL, 0xff },
+ { R367_QAM_SRC_NCO_LH, 0x0c },
+ { R367_QAM_SRC_NCO_HL, 0xf5 },
+ { R367_QAM_SRC_NCO_HH, 0x20 },
+ { R367_QAM_IQDEM_GAIN_SRC_L, 0x06 },
+ { R367_QAM_IQDEM_GAIN_SRC_H, 0x01 },
+ { R367_QAM_IQDEM_DCRM_CFG_LL, 0xfe },
+ { R367_QAM_IQDEM_DCRM_CFG_LH, 0xff },
+ { R367_QAM_IQDEM_DCRM_CFG_HL, 0x0f },
+ { R367_QAM_IQDEM_DCRM_CFG_HH, 0x00 },
+ { R367_QAM_IQDEM_ADJ_COEFF0, 0x34 },
+ { R367_QAM_IQDEM_ADJ_COEFF1, 0xae },
+ { R367_QAM_IQDEM_ADJ_COEFF2, 0x46 },
+ { R367_QAM_IQDEM_ADJ_COEFF3, 0x77 },
+ { R367_QAM_IQDEM_ADJ_COEFF4, 0x96 },
+ { R367_QAM_IQDEM_ADJ_COEFF5, 0x69 },
+ { R367_QAM_IQDEM_ADJ_COEFF6, 0xc7 },
+ { R367_QAM_IQDEM_ADJ_COEFF7, 0x01 },
+ { R367_QAM_IQDEM_ADJ_EN, 0x04 },
+ { R367_QAM_IQDEM_ADJ_AGC_REF, 0x94 },
+ { R367_QAM_ALLPASSFILT1, 0xc9 },
+ { R367_QAM_ALLPASSFILT2, 0x2d },
+ { R367_QAM_ALLPASSFILT3, 0xa3 },
+ { R367_QAM_ALLPASSFILT4, 0xfb },
+ { R367_QAM_ALLPASSFILT5, 0xf6 },
+ { R367_QAM_ALLPASSFILT6, 0x45 },
+ { R367_QAM_ALLPASSFILT7, 0x6f },
+ { R367_QAM_ALLPASSFILT8, 0x7e },
+ { R367_QAM_ALLPASSFILT9, 0x05 },
+ { R367_QAM_ALLPASSFILT10, 0x0a },
+ { R367_QAM_ALLPASSFILT11, 0x51 },
+ { R367_QAM_TRL_AGC_CFG, 0x20 },
+ { R367_QAM_TRL_LPF_CFG, 0x28 },
+ { R367_QAM_TRL_LPF_ACQ_GAIN, 0x44 },
+ { R367_QAM_TRL_LPF_TRK_GAIN, 0x22 },
+ { R367_QAM_TRL_LPF_OUT_GAIN, 0x03 },
+ { R367_QAM_TRL_LOCKDET_LTH, 0x04 },
+ { R367_QAM_TRL_LOCKDET_HTH, 0x11 },
+ { R367_QAM_TRL_LOCKDET_TRGVAL, 0x20 },
+ { R367_QAM_IQ_QAM, 0x01 },
+ { R367_QAM_FSM_STATE, 0xa0 },
+ { R367_QAM_FSM_CTL, 0x08 },
+ { R367_QAM_FSM_STS, 0x0c },
+ { R367_QAM_FSM_SNR0_HTH, 0x00 },
+ { R367_QAM_FSM_SNR1_HTH, 0x00 },
+ { R367_QAM_FSM_SNR2_HTH, 0x00 },
+ { R367_QAM_FSM_SNR0_LTH, 0x00 },
+ { R367_QAM_FSM_SNR1_LTH, 0x00 },
+ { R367_QAM_FSM_EQA1_HTH, 0x00 },
+ { R367_QAM_FSM_TEMPO, 0x32 },
+ { R367_QAM_FSM_CONFIG, 0x03 },
+ { R367_QAM_EQU_I_TESTTAP_L, 0x11 },
+ { R367_QAM_EQU_I_TESTTAP_M, 0x00 },
+ { R367_QAM_EQU_I_TESTTAP_H, 0x00 },
+ { R367_QAM_EQU_TESTAP_CFG, 0x00 },
+ { R367_QAM_EQU_Q_TESTTAP_L, 0xff },
+ { R367_QAM_EQU_Q_TESTTAP_M, 0x00 },
+ { R367_QAM_EQU_Q_TESTTAP_H, 0x00 },
+ { R367_QAM_EQU_TAP_CTRL, 0x00 },
+ { R367_QAM_EQU_CTR_CRL_CONTROL_L, 0x11 },
+ { R367_QAM_EQU_CTR_CRL_CONTROL_H, 0x05 },
+ { R367_QAM_EQU_CTR_HIPOW_L, 0x00 },
+ { R367_QAM_EQU_CTR_HIPOW_H, 0x00 },
+ { R367_QAM_EQU_I_EQU_LO, 0xef },
+ { R367_QAM_EQU_I_EQU_HI, 0x00 },
+ { R367_QAM_EQU_Q_EQU_LO, 0xee },
+ { R367_QAM_EQU_Q_EQU_HI, 0x00 },
+ { R367_QAM_EQU_MAPPER, 0xc5 },
+ { R367_QAM_EQU_SWEEP_RATE, 0x80 },
+ { R367_QAM_EQU_SNR_LO, 0x64 },
+ { R367_QAM_EQU_SNR_HI, 0x03 },
+ { R367_QAM_EQU_GAMMA_LO, 0x00 },
+ { R367_QAM_EQU_GAMMA_HI, 0x00 },
+ { R367_QAM_EQU_ERR_GAIN, 0x36 },
+ { R367_QAM_EQU_RADIUS, 0xaa },
+ { R367_QAM_EQU_FFE_MAINTAP, 0x00 },
+ { R367_QAM_EQU_FFE_LEAKAGE, 0x63 },
+ { R367_QAM_EQU_FFE_MAINTAP_POS, 0xdf },
+ { R367_QAM_EQU_GAIN_WIDE, 0x88 },
+ { R367_QAM_EQU_GAIN_NARROW, 0x41 },
+ { R367_QAM_EQU_CTR_LPF_GAIN, 0xd1 },
+ { R367_QAM_EQU_CRL_LPF_GAIN, 0xa7 },
+ { R367_QAM_EQU_GLOBAL_GAIN, 0x06 },
+ { R367_QAM_EQU_CRL_LD_SEN, 0x85 },
+ { R367_QAM_EQU_CRL_LD_VAL, 0xe2 },
+ { R367_QAM_EQU_CRL_TFR, 0x20 },
+ { R367_QAM_EQU_CRL_BISTH_LO, 0x00 },
+ { R367_QAM_EQU_CRL_BISTH_HI, 0x00 },
+ { R367_QAM_EQU_SWEEP_RANGE_LO, 0x00 },
+ { R367_QAM_EQU_SWEEP_RANGE_HI, 0x00 },
+ { R367_QAM_EQU_CRL_LIMITER, 0x40 },
+ { R367_QAM_EQU_MODULUS_MAP, 0x90 },
+ { R367_QAM_EQU_PNT_GAIN, 0xa7 },
+ { R367_QAM_FEC_AC_CTR_0, 0x16 },
+ { R367_QAM_FEC_AC_CTR_1, 0x0b },
+ { R367_QAM_FEC_AC_CTR_2, 0x88 },
+ { R367_QAM_FEC_AC_CTR_3, 0x02 },
+ { R367_QAM_FEC_STATUS, 0x12 },
+ { R367_QAM_RS_COUNTER_0, 0x7d },
+ { R367_QAM_RS_COUNTER_1, 0xd0 },
+ { R367_QAM_RS_COUNTER_2, 0x19 },
+ { R367_QAM_RS_COUNTER_3, 0x0b },
+ { R367_QAM_RS_COUNTER_4, 0xa3 },
+ { R367_QAM_RS_COUNTER_5, 0x00 },
+ { R367_QAM_BERT_0, 0x01 },
+ { R367_QAM_BERT_1, 0x25 },
+ { R367_QAM_BERT_2, 0x41 },
+ { R367_QAM_BERT_3, 0x39 },
+ { R367_QAM_OUTFORMAT_0, 0xc2 },
+ { R367_QAM_OUTFORMAT_1, 0x22 },
+ { R367_QAM_SMOOTHER_2, 0x28 },
+ { R367_QAM_TSMF_CTRL_0, 0x01 },
+ { R367_QAM_TSMF_CTRL_1, 0xc6 },
+ { R367_QAM_TSMF_CTRL_3, 0x43 },
+ { R367_QAM_TS_ON_ID_0, 0x00 },
+ { R367_QAM_TS_ON_ID_1, 0x00 },
+ { R367_QAM_TS_ON_ID_2, 0x00 },
+ { R367_QAM_TS_ON_ID_3, 0x00 },
+ { R367_QAM_RE_STATUS_0, 0x00 },
+ { R367_QAM_RE_STATUS_1, 0x00 },
+ { R367_QAM_RE_STATUS_2, 0x00 },
+ { R367_QAM_RE_STATUS_3, 0x00 },
+ { R367_QAM_TS_STATUS_0, 0x00 },
+ { R367_QAM_TS_STATUS_1, 0x00 },
+ { R367_QAM_TS_STATUS_2, 0xa0 },
+ { R367_QAM_TS_STATUS_3, 0x00 },
+ { R367_QAM_T_O_ID_0, 0x00 },
+ { R367_QAM_T_O_ID_1, 0x00 },
+ { R367_QAM_T_O_ID_2, 0x00 },
+ { R367_QAM_T_O_ID_3, 0x00 },
+ { 0x0000, 0x00 } // EOT
+};
+
+struct init_table ofdm_init[] = {
+ //{R367_OFDM_ID ,0x60},
+ //{R367_OFDM_I2CRPT ,0x22},
+ //{R367_OFDM_TOPCTRL ,0x02},
+ //{R367_OFDM_IOCFG0 ,0x40},
+ //{R367_OFDM_DAC0R ,0x00},
+ //{R367_OFDM_IOCFG1 ,0x00},
+ //{R367_OFDM_DAC1R ,0x00},
+ //{R367_OFDM_IOCFG2 ,0x62},
+ //{R367_OFDM_SDFR ,0x00},
+ //{R367_OFDM_STATUS ,0xf8},
+ //{R367_OFDM_AUX_CLK ,0x0a},
+ //{R367_OFDM_FREESYS1 ,0x00},
+ //{R367_OFDM_FREESYS2 ,0x00},
+ //{R367_OFDM_FREESYS3 ,0x00},
+ //{R367_OFDM_GPIO_CFG ,0x55},
+ //{R367_OFDM_GPIO_CMD ,0x00},
+ {R367_OFDM_AGC2MAX ,0xff},
+ {R367_OFDM_AGC2MIN ,0x00},
+ {R367_OFDM_AGC1MAX ,0xff},
+ {R367_OFDM_AGC1MIN ,0x00},
+ {R367_OFDM_AGCR ,0xbc},
+ {R367_OFDM_AGC2TH ,0x00},
+ //{R367_OFDM_AGC12C ,0x01}, //Note: This defines AGC pins, also needed for QAM
+ {R367_OFDM_AGCCTRL1 ,0x85},
+ {R367_OFDM_AGCCTRL2 ,0x1f},
+ {R367_OFDM_AGC1VAL1 ,0x00},
+ {R367_OFDM_AGC1VAL2 ,0x00},
+ {R367_OFDM_AGC2VAL1 ,0x6f},
+ {R367_OFDM_AGC2VAL2 ,0x05},
+ {R367_OFDM_AGC2PGA ,0x00},
+ {R367_OFDM_OVF_RATE1 ,0x00},
+ {R367_OFDM_OVF_RATE2 ,0x00},
+ {R367_OFDM_GAIN_SRC1 ,0x2b},
+ {R367_OFDM_GAIN_SRC2 ,0x04},
+ {R367_OFDM_INC_DEROT1 ,0x55},
+ {R367_OFDM_INC_DEROT2 ,0x55},
+ {R367_OFDM_PPM_CPAMP_DIR ,0x2c},
+ {R367_OFDM_PPM_CPAMP_INV ,0x00},
+ {R367_OFDM_FREESTFE_1 ,0x00},
+ {R367_OFDM_FREESTFE_2 ,0x1c},
+ {R367_OFDM_DCOFFSET ,0x00},
+ {R367_OFDM_EN_PROCESS ,0x05},
+ {R367_OFDM_SDI_SMOOTHER ,0x80},
+ {R367_OFDM_FE_LOOP_OPEN ,0x1c},
+ {R367_OFDM_FREQOFF1 ,0x00},
+ {R367_OFDM_FREQOFF2 ,0x00},
+ {R367_OFDM_FREQOFF3 ,0x00},
+ {R367_OFDM_TIMOFF1 ,0x00},
+ {R367_OFDM_TIMOFF2 ,0x00},
+ {R367_OFDM_EPQ ,0x02},
+ {R367_OFDM_EPQAUTO ,0x01},
+ {R367_OFDM_SYR_UPDATE ,0xf5},
+ {R367_OFDM_CHPFREE ,0x00},
+ {R367_OFDM_PPM_STATE_MAC ,0x23},
+ {R367_OFDM_INR_THRESHOLD ,0xff},
+ {R367_OFDM_EPQ_TPS_ID_CELL ,0xf9},
+ {R367_OFDM_EPQ_CFG ,0x00},
+ {R367_OFDM_EPQ_STATUS ,0x01},
+ {R367_OFDM_AUTORELOCK ,0x81},
+ {R367_OFDM_BER_THR_VMSB ,0x00},
+ {R367_OFDM_BER_THR_MSB ,0x00},
+ {R367_OFDM_BER_THR_LSB ,0x00},
+ {R367_OFDM_CCD ,0x83},
+ {R367_OFDM_SPECTR_CFG ,0x00},
+ {R367_OFDM_CHC_DUMMY ,0x18},
+ {R367_OFDM_INC_CTL ,0x88},
+ {R367_OFDM_INCTHRES_COR1 ,0xb4},
+ {R367_OFDM_INCTHRES_COR2 ,0x96},
+ {R367_OFDM_INCTHRES_DET1 ,0x0e},
+ {R367_OFDM_INCTHRES_DET2 ,0x11},
+ {R367_OFDM_IIR_CELLNB ,0x8d},
+ {R367_OFDM_IIRCX_COEFF1_MSB ,0x00},
+ {R367_OFDM_IIRCX_COEFF1_LSB ,0x00},
+ {R367_OFDM_IIRCX_COEFF2_MSB ,0x09},
+ {R367_OFDM_IIRCX_COEFF2_LSB ,0x18},
+ {R367_OFDM_IIRCX_COEFF3_MSB ,0x14},
+ {R367_OFDM_IIRCX_COEFF3_LSB ,0x9c},
+ {R367_OFDM_IIRCX_COEFF4_MSB ,0x00},
+ {R367_OFDM_IIRCX_COEFF4_LSB ,0x00},
+ {R367_OFDM_IIRCX_COEFF5_MSB ,0x36},
+ {R367_OFDM_IIRCX_COEFF5_LSB ,0x42},
+ {R367_OFDM_FEPATH_CFG ,0x00},
+ {R367_OFDM_PMC1_FUNC ,0x65},
+ {R367_OFDM_PMC1_FOR ,0x00},
+ {R367_OFDM_PMC2_FUNC ,0x00},
+ {R367_OFDM_STATUS_ERR_DA ,0xe0},
+ {R367_OFDM_DIG_AGC_R ,0xfe},
+ {R367_OFDM_COMAGC_TARMSB ,0x0b},
+ {R367_OFDM_COM_AGC_TAR_ENMODE ,0x41},
+ {R367_OFDM_COM_AGC_CFG ,0x3e},
+ {R367_OFDM_COM_AGC_GAIN1 ,0x39},
+ {R367_OFDM_AUT_AGC_TARGETMSB ,0x0b},
+ {R367_OFDM_LOCK_DET_MSB ,0x01},
+ {R367_OFDM_AGCTAR_LOCK_LSBS ,0x40},
+ {R367_OFDM_AUT_GAIN_EN ,0xf4},
+ {R367_OFDM_AUT_CFG ,0xf0},
+ {R367_OFDM_LOCKN ,0x23},
+ {R367_OFDM_INT_X_3 ,0x00},
+ {R367_OFDM_INT_X_2 ,0x03},
+ {R367_OFDM_INT_X_1 ,0x8d},
+ {R367_OFDM_INT_X_0 ,0xa0},
+ {R367_OFDM_MIN_ERRX_MSB ,0x00},
+ {R367_OFDM_COR_CTL ,0x00},
+ {R367_OFDM_COR_STAT ,0xf6},
+ {R367_OFDM_COR_INTEN ,0x00},
+ {R367_OFDM_COR_INTSTAT ,0x3f},
+ {R367_OFDM_COR_MODEGUARD ,0x03},
+ {R367_OFDM_AGC_CTL ,0x08},
+ {R367_OFDM_AGC_MANUAL1 ,0x00},
+ {R367_OFDM_AGC_MANUAL2 ,0x00},
+ {R367_OFDM_AGC_TARG ,0x16},
+ {R367_OFDM_AGC_GAIN1 ,0x53},
+ {R367_OFDM_AGC_GAIN2 ,0x1d},
+ {R367_OFDM_RESERVED_1 ,0x00},
+ {R367_OFDM_RESERVED_2 ,0x00},
+ {R367_OFDM_RESERVED_3 ,0x00},
+ {R367_OFDM_CAS_CTL ,0x44},
+ {R367_OFDM_CAS_FREQ ,0xb3},
+ {R367_OFDM_CAS_DAGCGAIN ,0x12},
+ {R367_OFDM_SYR_CTL ,0x04},
+ {R367_OFDM_SYR_STAT ,0x10},
+ {R367_OFDM_SYR_NCO1 ,0x00},
+ {R367_OFDM_SYR_NCO2 ,0x00},
+ {R367_OFDM_SYR_OFFSET1 ,0x00},
+ {R367_OFDM_SYR_OFFSET2 ,0x00},
+ {R367_OFDM_FFT_CTL ,0x00},
+ {R367_OFDM_SCR_CTL ,0x70},
+ {R367_OFDM_PPM_CTL1 ,0xf8},
+ {R367_OFDM_TRL_CTL ,0xac},
+ {R367_OFDM_TRL_NOMRATE1 ,0x1e},
+ {R367_OFDM_TRL_NOMRATE2 ,0x58},
+ {R367_OFDM_TRL_TIME1 ,0x1d},
+ {R367_OFDM_TRL_TIME2 ,0xfc},
+ {R367_OFDM_CRL_CTL ,0x24},
+ {R367_OFDM_CRL_FREQ1 ,0xad},
+ {R367_OFDM_CRL_FREQ2 ,0x9d},
+ {R367_OFDM_CRL_FREQ3 ,0xff},
+ {R367_OFDM_CHC_CTL ,0x01},
+ {R367_OFDM_CHC_SNR ,0xf0},
+ {R367_OFDM_BDI_CTL ,0x00},
+ {R367_OFDM_DMP_CTL ,0x00},
+ {R367_OFDM_TPS_RCVD1 ,0x30},
+ {R367_OFDM_TPS_RCVD2 ,0x02},
+ {R367_OFDM_TPS_RCVD3 ,0x01},
+ {R367_OFDM_TPS_RCVD4 ,0x00},
+ {R367_OFDM_TPS_ID_CELL1 ,0x00},
+ {R367_OFDM_TPS_ID_CELL2 ,0x00},
+ {R367_OFDM_TPS_RCVD5_SET1 ,0x02},
+ {R367_OFDM_TPS_SET2 ,0x02},
+ {R367_OFDM_TPS_SET3 ,0x01},
+ {R367_OFDM_TPS_CTL ,0x00},
+ {R367_OFDM_CTL_FFTOSNUM ,0x34},
+ {R367_OFDM_TESTSELECT ,0x09},
+ {R367_OFDM_MSC_REV ,0x0a},
+ {R367_OFDM_PIR_CTL ,0x00},
+ {R367_OFDM_SNR_CARRIER1 ,0xa1},
+ {R367_OFDM_SNR_CARRIER2 ,0x9a},
+ {R367_OFDM_PPM_CPAMP ,0x2c},
+ {R367_OFDM_TSM_AP0 ,0x00},
+ {R367_OFDM_TSM_AP1 ,0x00},
+ {R367_OFDM_TSM_AP2 ,0x00},
+ {R367_OFDM_TSM_AP3 ,0x00},
+ {R367_OFDM_TSM_AP4 ,0x00},
+ {R367_OFDM_TSM_AP5 ,0x00},
+ {R367_OFDM_TSM_AP6 ,0x00},
+ {R367_OFDM_TSM_AP7 ,0x00},
+ //{R367_OFDM_TSTRES ,0x00},
+ //{R367_OFDM_ANACTRL ,0x0D},/*caution PLL stopped, to be restarted at init!!!*/
+ //{R367_OFDM_TSTBUS ,0x00},
+ //{R367_OFDM_TSTRATE ,0x00},
+ {R367_OFDM_CONSTMODE ,0x01},
+ {R367_OFDM_CONSTCARR1 ,0x00},
+ {R367_OFDM_CONSTCARR2 ,0x00},
+ {R367_OFDM_ICONSTEL ,0x0a},
+ {R367_OFDM_QCONSTEL ,0x15},
+ {R367_OFDM_TSTBISTRES0 ,0x00},
+ {R367_OFDM_TSTBISTRES1 ,0x00},
+ {R367_OFDM_TSTBISTRES2 ,0x28},
+ {R367_OFDM_TSTBISTRES3 ,0x00},
+ //{R367_OFDM_RF_AGC1 ,0xff},
+ //{R367_OFDM_RF_AGC2 ,0x83},
+ //{R367_OFDM_ANADIGCTRL ,0x19},
+ //{R367_OFDM_PLLMDIV ,0x0c},
+ //{R367_OFDM_PLLNDIV ,0x55},
+ //{R367_OFDM_PLLSETUP ,0x18},
+ //{R367_OFDM_DUAL_AD12 ,0x00},
+ //{R367_OFDM_TSTBIST ,0x00},
+ //{R367_OFDM_PAD_COMP_CTRL ,0x00},
+ //{R367_OFDM_PAD_COMP_WR ,0x00},
+ //{R367_OFDM_PAD_COMP_RD ,0xe0},
+ {R367_OFDM_SYR_TARGET_FFTADJT_MSB ,0x00},
+ {R367_OFDM_SYR_TARGET_FFTADJT_LSB ,0x00},
+ {R367_OFDM_SYR_TARGET_CHCADJT_MSB ,0x00},
+ {R367_OFDM_SYR_TARGET_CHCADJT_LSB ,0x00},
+ {R367_OFDM_SYR_FLAG ,0x00},
+ {R367_OFDM_CRL_TARGET1 ,0x00},
+ {R367_OFDM_CRL_TARGET2 ,0x00},
+ {R367_OFDM_CRL_TARGET3 ,0x00},
+ {R367_OFDM_CRL_TARGET4 ,0x00},
+ {R367_OFDM_CRL_FLAG ,0x00},
+ {R367_OFDM_TRL_TARGET1 ,0x00},
+ {R367_OFDM_TRL_TARGET2 ,0x00},
+ {R367_OFDM_TRL_CHC ,0x00},
+ {R367_OFDM_CHC_SNR_TARG ,0x00},
+ {R367_OFDM_TOP_TRACK ,0x00},
+ {R367_OFDM_TRACKER_FREE1 ,0x00},
+ {R367_OFDM_ERROR_CRL1 ,0x00},
+ {R367_OFDM_ERROR_CRL2 ,0x00},
+ {R367_OFDM_ERROR_CRL3 ,0x00},
+ {R367_OFDM_ERROR_CRL4 ,0x00},
+ {R367_OFDM_DEC_NCO1 ,0x2c},
+ {R367_OFDM_DEC_NCO2 ,0x0f},
+ {R367_OFDM_DEC_NCO3 ,0x20},
+ {R367_OFDM_SNR ,0xf1},
+ {R367_OFDM_SYR_FFTADJ1 ,0x00},
+ {R367_OFDM_SYR_FFTADJ2 ,0x00},
+ {R367_OFDM_SYR_CHCADJ1 ,0x00},
+ {R367_OFDM_SYR_CHCADJ2 ,0x00},
+ {R367_OFDM_SYR_OFF ,0x00},
+ {R367_OFDM_PPM_OFFSET1 ,0x00},
+ {R367_OFDM_PPM_OFFSET2 ,0x03},
+ {R367_OFDM_TRACKER_FREE2 ,0x00},
+ {R367_OFDM_DEBG_LT10 ,0x00},
+ {R367_OFDM_DEBG_LT11 ,0x00},
+ {R367_OFDM_DEBG_LT12 ,0x00},
+ {R367_OFDM_DEBG_LT13 ,0x00},
+ {R367_OFDM_DEBG_LT14 ,0x00},
+ {R367_OFDM_DEBG_LT15 ,0x00},
+ {R367_OFDM_DEBG_LT16 ,0x00},
+ {R367_OFDM_DEBG_LT17 ,0x00},
+ {R367_OFDM_DEBG_LT18 ,0x00},
+ {R367_OFDM_DEBG_LT19 ,0x00},
+ {R367_OFDM_DEBG_LT1A ,0x00},
+ {R367_OFDM_DEBG_LT1B ,0x00},
+ {R367_OFDM_DEBG_LT1C ,0x00},
+ {R367_OFDM_DEBG_LT1D ,0x00},
+ {R367_OFDM_DEBG_LT1E ,0x00},
+ {R367_OFDM_DEBG_LT1F ,0x00},
+ {R367_OFDM_RCCFGH ,0x00},
+ {R367_OFDM_RCCFGM ,0x00},
+ {R367_OFDM_RCCFGL ,0x00},
+ {R367_OFDM_RCINSDELH ,0x00},
+ {R367_OFDM_RCINSDELM ,0x00},
+ {R367_OFDM_RCINSDELL ,0x00},
+ {R367_OFDM_RCSTATUS ,0x00},
+ {R367_OFDM_RCSPEED ,0x6f},
+ {R367_OFDM_RCDEBUGM ,0xe7},
+ {R367_OFDM_RCDEBUGL ,0x9b},
+ {R367_OFDM_RCOBSCFG ,0x00},
+ {R367_OFDM_RCOBSM ,0x00},
+ {R367_OFDM_RCOBSL ,0x00},
+ {R367_OFDM_RCFECSPY ,0x00},
+ {R367_OFDM_RCFSPYCFG ,0x00},
+ {R367_OFDM_RCFSPYDATA ,0x00},
+ {R367_OFDM_RCFSPYOUT ,0x00},
+ {R367_OFDM_RCFSTATUS ,0x00},
+ {R367_OFDM_RCFGOODPACK ,0x00},
+ {R367_OFDM_RCFPACKCNT ,0x00},
+ {R367_OFDM_RCFSPYMISC ,0x00},
+ {R367_OFDM_RCFBERCPT4 ,0x00},
+ {R367_OFDM_RCFBERCPT3 ,0x00},
+ {R367_OFDM_RCFBERCPT2 ,0x00},
+ {R367_OFDM_RCFBERCPT1 ,0x00},
+ {R367_OFDM_RCFBERCPT0 ,0x00},
+ {R367_OFDM_RCFBERERR2 ,0x00},
+ {R367_OFDM_RCFBERERR1 ,0x00},
+ {R367_OFDM_RCFBERERR0 ,0x00},
+ {R367_OFDM_RCFSTATESM ,0x00},
+ {R367_OFDM_RCFSTATESL ,0x00},
+ {R367_OFDM_RCFSPYBER ,0x00},
+ {R367_OFDM_RCFSPYDISTM ,0x00},
+ {R367_OFDM_RCFSPYDISTL ,0x00},
+ {R367_OFDM_RCFSPYOBS7 ,0x00},
+ {R367_OFDM_RCFSPYOBS6 ,0x00},
+ {R367_OFDM_RCFSPYOBS5 ,0x00},
+ {R367_OFDM_RCFSPYOBS4 ,0x00},
+ {R367_OFDM_RCFSPYOBS3 ,0x00},
+ {R367_OFDM_RCFSPYOBS2 ,0x00},
+ {R367_OFDM_RCFSPYOBS1 ,0x00},
+ {R367_OFDM_RCFSPYOBS0 ,0x00},
+ //{R367_OFDM_TSGENERAL ,0x00},
+ //{R367_OFDM_RC1SPEED ,0x6f},
+ //{R367_OFDM_TSGSTATUS ,0x18},
+ {R367_OFDM_FECM ,0x01},
+ {R367_OFDM_VTH12 ,0xff},
+ {R367_OFDM_VTH23 ,0xa1},
+ {R367_OFDM_VTH34 ,0x64},
+ {R367_OFDM_VTH56 ,0x40},
+ {R367_OFDM_VTH67 ,0x00},
+ {R367_OFDM_VTH78 ,0x2c},
+ {R367_OFDM_VITCURPUN ,0x12},
+ {R367_OFDM_VERROR ,0x01},
+ {R367_OFDM_PRVIT ,0x3f},
+ {R367_OFDM_VAVSRVIT ,0x00},
+ {R367_OFDM_VSTATUSVIT ,0xbd},
+ {R367_OFDM_VTHINUSE ,0xa1},
+ {R367_OFDM_KDIV12 ,0x20},
+ {R367_OFDM_KDIV23 ,0x40},
+ {R367_OFDM_KDIV34 ,0x20},
+ {R367_OFDM_KDIV56 ,0x30},
+ {R367_OFDM_KDIV67 ,0x00},
+ {R367_OFDM_KDIV78 ,0x30},
+ {R367_OFDM_SIGPOWER ,0x54},
+ {R367_OFDM_DEMAPVIT ,0x40},
+ {R367_OFDM_VITSCALE ,0x00},
+ {R367_OFDM_FFEC1PRG ,0x00},
+ {R367_OFDM_FVITCURPUN ,0x12},
+ {R367_OFDM_FVERROR ,0x01},
+ {R367_OFDM_FVSTATUSVIT ,0xbd},
+ {R367_OFDM_DEBUG_LT1 ,0x00},
+ {R367_OFDM_DEBUG_LT2 ,0x00},
+ {R367_OFDM_DEBUG_LT3 ,0x00},
+ {R367_OFDM_TSTSFMET ,0x00},
+ {R367_OFDM_SELOUT ,0x00},
+ {R367_OFDM_TSYNC ,0x00},
+ {R367_OFDM_TSTERR ,0x00},
+ {R367_OFDM_TSFSYNC ,0x00},
+ {R367_OFDM_TSTSFERR ,0x00},
+ {R367_OFDM_TSTTSSF1 ,0x01},
+ {R367_OFDM_TSTTSSF2 ,0x1f},
+ {R367_OFDM_TSTTSSF3 ,0x00},
+ {R367_OFDM_TSTTS1 ,0x00},
+ {R367_OFDM_TSTTS2 ,0x1f},
+ {R367_OFDM_TSTTS3 ,0x01},
+ {R367_OFDM_TSTTS4 ,0x00},
+ {R367_OFDM_TSTTSRC ,0x00},
+ {R367_OFDM_TSTTSRS ,0x00},
+ {R367_OFDM_TSSTATEM ,0xb0},
+ {R367_OFDM_TSSTATEL ,0x40},
+ {R367_OFDM_TSCFGH ,0x80},
+ {R367_OFDM_TSCFGM ,0x00},
+ {R367_OFDM_TSCFGL ,0x20},
+ {R367_OFDM_TSSYNC ,0x00},
+ {R367_OFDM_TSINSDELH ,0x00},
+ {R367_OFDM_TSINSDELM ,0x00},
+ {R367_OFDM_TSINSDELL ,0x00},
+ {R367_OFDM_TSDIVN ,0x03},
+ {R367_OFDM_TSDIVPM ,0x00},
+ {R367_OFDM_TSDIVPL ,0x00},
+ {R367_OFDM_TSDIVQM ,0x00},
+ {R367_OFDM_TSDIVQL ,0x00},
+ {R367_OFDM_TSDILSTKM ,0x00},
+ {R367_OFDM_TSDILSTKL ,0x00},
+ {R367_OFDM_TSSPEED ,0x6f},
+ {R367_OFDM_TSSTATUS ,0x81},
+ {R367_OFDM_TSSTATUS2 ,0x6a},
+ {R367_OFDM_TSBITRATEM ,0x0f},
+ {R367_OFDM_TSBITRATEL ,0xc6},
+ {R367_OFDM_TSPACKLENM ,0x00},
+ {R367_OFDM_TSPACKLENL ,0xfc},
+ {R367_OFDM_TSBLOCLENM ,0x0a},
+ {R367_OFDM_TSBLOCLENL ,0x80},
+ {R367_OFDM_TSDLYH ,0x90},
+ {R367_OFDM_TSDLYM ,0x68},
+ {R367_OFDM_TSDLYL ,0x01},
+ {R367_OFDM_TSNPDAV ,0x00},
+ {R367_OFDM_TSBUFSTATH ,0x00},
+ {R367_OFDM_TSBUFSTATM ,0x00},
+ {R367_OFDM_TSBUFSTATL ,0x00},
+ {R367_OFDM_TSDEBUGM ,0xcf},
+ {R367_OFDM_TSDEBUGL ,0x1e},
+ {R367_OFDM_TSDLYSETH ,0x00},
+ {R367_OFDM_TSDLYSETM ,0x68},
+ {R367_OFDM_TSDLYSETL ,0x00},
+ {R367_OFDM_TSOBSCFG ,0x00},
+ {R367_OFDM_TSOBSM ,0x47},
+ {R367_OFDM_TSOBSL ,0x1f},
+ {R367_OFDM_ERRCTRL1 ,0x95},
+ {R367_OFDM_ERRCNT1H ,0x80},
+ {R367_OFDM_ERRCNT1M ,0x00},
+ {R367_OFDM_ERRCNT1L ,0x00},
+ {R367_OFDM_ERRCTRL2 ,0x95},
+ {R367_OFDM_ERRCNT2H ,0x00},
+ {R367_OFDM_ERRCNT2M ,0x00},
+ {R367_OFDM_ERRCNT2L ,0x00},
+ {R367_OFDM_FECSPY ,0x88},
+ {R367_OFDM_FSPYCFG ,0x2c},
+ {R367_OFDM_FSPYDATA ,0x3a},
+ {R367_OFDM_FSPYOUT ,0x06},
+ {R367_OFDM_FSTATUS ,0x61},
+ {R367_OFDM_FGOODPACK ,0xff},
+ {R367_OFDM_FPACKCNT ,0xff},
+ {R367_OFDM_FSPYMISC ,0x66},
+ {R367_OFDM_FBERCPT4 ,0x00},
+ {R367_OFDM_FBERCPT3 ,0x00},
+ {R367_OFDM_FBERCPT2 ,0x36},
+ {R367_OFDM_FBERCPT1 ,0x36},
+ {R367_OFDM_FBERCPT0 ,0x14},
+ {R367_OFDM_FBERERR2 ,0x00},
+ {R367_OFDM_FBERERR1 ,0x03},
+ {R367_OFDM_FBERERR0 ,0x28},
+ {R367_OFDM_FSTATESM ,0x00},
+ {R367_OFDM_FSTATESL ,0x02},
+ {R367_OFDM_FSPYBER ,0x00},
+ {R367_OFDM_FSPYDISTM ,0x01},
+ {R367_OFDM_FSPYDISTL ,0x9f},
+ {R367_OFDM_FSPYOBS7 ,0xc9},
+ {R367_OFDM_FSPYOBS6 ,0x99},
+ {R367_OFDM_FSPYOBS5 ,0x08},
+ {R367_OFDM_FSPYOBS4 ,0xec},
+ {R367_OFDM_FSPYOBS3 ,0x01},
+ {R367_OFDM_FSPYOBS2 ,0x0f},
+ {R367_OFDM_FSPYOBS1 ,0xf5},
+ {R367_OFDM_FSPYOBS0 ,0x08},
+ {R367_OFDM_SFDEMAP ,0x40},
+ {R367_OFDM_SFERROR ,0x00},
+ {R367_OFDM_SFAVSR ,0x30},
+ {R367_OFDM_SFECSTATUS ,0xcc},
+ {R367_OFDM_SFKDIV12 ,0x20},
+ {R367_OFDM_SFKDIV23 ,0x40},
+ {R367_OFDM_SFKDIV34 ,0x20},
+ {R367_OFDM_SFKDIV56 ,0x20},
+ {R367_OFDM_SFKDIV67 ,0x00},
+ {R367_OFDM_SFKDIV78 ,0x20},
+ {R367_OFDM_SFDILSTKM ,0x00},
+ {R367_OFDM_SFDILSTKL ,0x00},
+ {R367_OFDM_SFSTATUS ,0xb5},
+ {R367_OFDM_SFDLYH ,0x90},
+ {R367_OFDM_SFDLYM ,0x60},
+ {R367_OFDM_SFDLYL ,0x01},
+ {R367_OFDM_SFDLYSETH ,0xc0},
+ {R367_OFDM_SFDLYSETM ,0x60},
+ {R367_OFDM_SFDLYSETL ,0x00},
+ {R367_OFDM_SFOBSCFG ,0x00},
+ {R367_OFDM_SFOBSM ,0x47},
+ {R367_OFDM_SFOBSL ,0x05},
+ {R367_OFDM_SFECINFO ,0x40},
+ {R367_OFDM_SFERRCTRL ,0x74},
+ {R367_OFDM_SFERRCNTH ,0x80},
+ {R367_OFDM_SFERRCNTM ,0x00},
+ {R367_OFDM_SFERRCNTL ,0x00},
+ {R367_OFDM_SYMBRATEM ,0x2f},
+ {R367_OFDM_SYMBRATEL ,0x50},
+ {R367_OFDM_SYMBSTATUS ,0x7f},
+ {R367_OFDM_SYMBCFG ,0x00},
+ {R367_OFDM_SYMBFIFOM ,0xf4},
+ {R367_OFDM_SYMBFIFOL ,0x0d},
+ {R367_OFDM_SYMBOFFSM ,0xf0},
+ {R367_OFDM_SYMBOFFSL ,0x2d},
+ //{R367_OFDM_DEBUG_LT4 ,0x00},
+ //{R367_OFDM_DEBUG_LT5 ,0x00},
+ //{R367_OFDM_DEBUG_LT6 ,0x00},
+ //{R367_OFDM_DEBUG_LT7 ,0x00},
+ //{R367_OFDM_DEBUG_LT8 ,0x00},
+ //{R367_OFDM_DEBUG_LT9 ,0x00},
+ { 0x0000, 0x00 } // EOT
+};
+
+static inline u32 MulDiv32(u32 a, u32 b, u32 c)
+{
+ u64 tmp64;
+
+ tmp64 = (u64)a * (u64)b;
+ do_div(tmp64, c);
+
+ return (u32) tmp64;
+}
+
+static int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len)
+{
+ struct i2c_msg msg =
+ {.addr = adr, .flags = 0, .buf = data, .len = len};
+
+ if (i2c_transfer(adap, &msg, 1) != 1) {
+ printk("stv0367: i2c_write error\n");
+ return -1;
+ }
+ return 0;
+}
+
+#if 0
+static int i2c_read(struct i2c_adapter *adap,
+ u8 adr, u8 *msg, int len, u8 *answ, int alen)
+{
+ struct i2c_msg msgs[2] = { { .addr = adr, .flags = 0,
+ .buf = msg, .len = len},
+ { .addr = adr, .flags = I2C_M_RD,
+ .buf = answ, .len = alen } };
+ if (i2c_transfer(adap, msgs, 2) != 2) {
+ printk("stv0367: i2c_read error\n");
+ return -1;
+ }
+ return 0;
+}
+#endif
+
+static int writereg(struct stv_state *state, u16 reg, u8 dat)
+{
+ u8 mm[3] = { (reg >> 8), reg & 0xff, dat };
+
+ return i2c_write(state->i2c, state->adr, mm, 3);
+}
+
+static int readreg(struct stv_state *state, u16 reg, u8 *val)
+{
+ u8 msg[2] = {reg >> 8, reg & 0xff};
+ struct i2c_msg msgs[2] = {{.addr = state->adr, .flags = 0,
+ .buf = msg, .len = 2},
+ {.addr = state->adr, .flags = I2C_M_RD,
+ .buf = val, .len = 1}};
+ return (i2c_transfer(state->i2c, msgs, 2) == 2) ? 0 : -1;
+}
+
+static int readregs(struct stv_state *state, u16 reg, u8 *val, int count)
+{
+ u8 msg[2] = {reg >> 8, reg & 0xff};
+ struct i2c_msg msgs[2] = {{.addr = state->adr, .flags = 0,
+ .buf = msg, .len = 2},
+ {.addr = state->adr, .flags = I2C_M_RD,
+ .buf = val, .len = count}};
+ return (i2c_transfer(state->i2c, msgs, 2) == 2) ? 0 : -1;
+}
+
+static int write_init_table(struct stv_state *state, struct init_table *tab)
+{
+ while (1) {
+ if (!tab->adr)
+ break;
+ if (writereg(state, tab->adr, tab->data) < 0)
+ return -1;
+ tab++;
+ }
+ return 0;
+}
+
+static int qam_set_modulation(struct stv_state *state)
+{
+ int stat = 0;
+
+ switch(state->modulation) {
+ case QAM_16:
+ writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM16 );
+ writereg(state, R367_QAM_AGC_PWR_REF_L,0x64); /* Set analog AGC reference */
+ writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x00); /* Set digital AGC reference */
+ writereg(state, R367_QAM_FSM_STATE,0x90);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
+ writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x95);
+ writereg(state, R367_QAM_EQU_CRL_LIMITER,0x40);
+ writereg(state, R367_QAM_EQU_PNT_GAIN,0x8a);
+ break;
+ case QAM_32:
+ writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM32 );
+ writereg(state, R367_QAM_AGC_PWR_REF_L,0x6e); /* Set analog AGC reference */
+ writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x00); /* Set digital AGC reference */
+ writereg(state, R367_QAM_FSM_STATE,0xb0);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xb7);
+ writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x9d);
+ writereg(state, R367_QAM_EQU_CRL_LIMITER,0x7f);
+ writereg(state, R367_QAM_EQU_PNT_GAIN,0xa7);
+ break;
+ case QAM_64:
+ writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM64 );
+ writereg(state, R367_QAM_AGC_PWR_REF_L,0x5a); /* Set analog AGC reference */
+ writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x82); /* Set digital AGC reference */
+ if(state->symbol_rate>4500000)
+ {
+ writereg(state, R367_QAM_FSM_STATE,0xb0);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa5);
+ }
+ else if(state->symbol_rate>2500000) // 25000000
+ {
+ writereg(state, R367_QAM_FSM_STATE,0xa0);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa6);
+ }
+ else
+ {
+ writereg(state, R367_QAM_FSM_STATE,0xa0);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xd1);
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
+ }
+ writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x95);
+ writereg(state, R367_QAM_EQU_CRL_LIMITER,0x40);
+ writereg(state, R367_QAM_EQU_PNT_GAIN,0x99);
+ break;
+ case QAM_128:
+ writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM128 );
+ writereg(state, R367_QAM_AGC_PWR_REF_L,0x76); /* Set analog AGC reference */
+ writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x00); /* Set digital AGC reference */
+ writereg(state, R367_QAM_FSM_STATE,0x90);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xb1);
+ if(state->symbol_rate>4500000) // 45000000
+ {
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
+ }
+ else if(state->symbol_rate>2500000) // 25000000
+ {
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa6);
+ }
+ else
+ {
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0x97);
+ }
+ writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x8e);
+ writereg(state, R367_QAM_EQU_CRL_LIMITER,0x7f);
+ writereg(state, R367_QAM_EQU_PNT_GAIN,0xa7);
+ break;
+ case QAM_256:
+ writereg(state, R367_QAM_EQU_MAPPER,state->qam_inversion | QAM_MOD_QAM256 );
+ writereg(state, R367_QAM_AGC_PWR_REF_L,0x5a); /* Set analog AGC reference */
+ writereg(state, R367_QAM_IQDEM_ADJ_AGC_REF,0x94); /* Set digital AGC reference */
+ writereg(state, R367_QAM_FSM_STATE,0xa0);
+ if(state->symbol_rate>4500000) // 45000000
+ {
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
+ }
+ else if(state->symbol_rate>2500000) // 25000000
+ {
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xc1);
+ }
+ else
+ {
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,0xd1);
+ }
+ writereg(state, R367_QAM_EQU_CRL_LPF_GAIN,0xa7);
+ writereg(state, R367_QAM_EQU_CRL_LD_SEN,0x85);
+ writereg(state, R367_QAM_EQU_CRL_LIMITER,0x40);
+ writereg(state, R367_QAM_EQU_PNT_GAIN,0xa7);
+ break;
+ default:
+ stat = -EINVAL;
+ break;
+ }
+ return stat;
+}
+
+
+static int QAM_SetSymbolRate(struct stv_state *state)
+{
+ int status = 0;
+ u32 sr = state->symbol_rate;
+ u32 Corr = 0;
+ u32 Temp, Temp1, AdpClk;
+
+ switch(state->modulation) {
+ default:
+ case QAM_16: Corr = 1032; break;
+ case QAM_32: Corr = 954; break;
+ case QAM_64: Corr = 983; break;
+ case QAM_128: Corr = 957; break;
+ case QAM_256: Corr = 948; break;
+ }
+
+ // Transfer ration
+ Temp = (256*sr) / state->adc_clock;
+ writereg(state, R367_QAM_EQU_CRL_TFR,(Temp));
+
+ /* Symbol rate and SRC gain calculation */
+ AdpClk = (state->master_clock) / 2000; /* TRL works at half the system clock */
+
+ Temp = state->symbol_rate;
+ Temp1 = sr;
+
+ if(sr < 2097152) /* 2097152 = 2^21 */
+ {
+ Temp = ((((sr * 2048) / AdpClk) * 16384 ) / 125 ) * 8;
+ Temp1 = (((((sr * 2048) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 10000000;
+ }
+ else if(sr < 4194304) /* 4194304 = 2**22 */
+ {
+ Temp = ((((sr * 1024) / AdpClk) * 16384 ) / 125 ) * 16;
+ Temp1 = (((((sr * 1024) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 5000000;
+ }
+ else if(sr < 8388608) /* 8388608 = 2**23 */
+ {
+ Temp = ((((sr * 512) / AdpClk) * 16384 ) / 125 ) * 32;
+ Temp1 = (((((sr * 512) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 2500000;
+ }
+ else
+ {
+ Temp = ((((sr * 256) / AdpClk) * 16384 ) / 125 ) * 64;
+ Temp1 = (((((sr * 256) / 439 ) * 256 ) / AdpClk ) * Corr * 9 ) / 1250000;
+ }
+
+ ///* Filters' coefficients are calculated and written into registers only if the filters are enabled */
+ //if (ChipGetField(hChip,F367qam_ADJ_EN)) // Is disabled from init!
+ //{
+ // FE_367qam_SetIirAdjacentcoefficient(hChip, MasterClk_Hz, SymbolRate);
+ //}
+ ///* AllPass filter is never used on this IC */
+ //ChipSetField(hChip,F367qam_ALLPASSFILT_EN,0); // should be disabled from init!
+
+ writereg(state, R367_QAM_SRC_NCO_LL,(Temp));
+ writereg(state, R367_QAM_SRC_NCO_LH,(Temp>>8));
+ writereg(state, R367_QAM_SRC_NCO_HL,(Temp>>16));
+ writereg(state, R367_QAM_SRC_NCO_HH,(Temp>>24));
+
+ writereg(state, R367_QAM_IQDEM_GAIN_SRC_L,(Temp1));
+ writereg(state, R367_QAM_IQDEM_GAIN_SRC_H,(Temp1>>8));
+ return status;
+}
+
+
+static int QAM_SetDerotFrequency(struct stv_state *state, u32 DerotFrequency)
+{
+ int status = 0;
+ u32 Sampled_IF;
+
+ do {
+ //if (DerotFrequency < 1000000)
+ // DerotFrequency = state->adc_clock/4; /* ZIF operation */
+ if (DerotFrequency > state->adc_clock)
+ DerotFrequency = DerotFrequency - state->adc_clock; // User Alias
+
+ Sampled_IF = ((32768 * (DerotFrequency/1000)) / (state->adc_clock/1000)) * 256;
+ if(Sampled_IF > 8388607)
+ Sampled_IF = 8388607;
+
+ writereg(state, R367_QAM_MIX_NCO_LL, (Sampled_IF));
+ writereg(state, R367_QAM_MIX_NCO_HL, (Sampled_IF>>8));
+ writereg(state, R367_QAM_MIX_NCO_HH, (Sampled_IF>>16));
+ } while(0);
+
+ return status;
+}
+
+
+
+static int QAM_Start(struct stv_state *state, s32 offsetFreq,s32 IntermediateFrequency)
+{
+ int status = 0;
+ u32 AGCTimeOut = 25;
+ u32 TRLTimeOut = 100000000 / state->symbol_rate;
+ u32 CRLSymbols = 0;
+ u32 EQLTimeOut = 100;
+ u32 SearchRange = state->symbol_rate / 25;
+ u32 CRLTimeOut;
+ u8 Temp;
+
+ if( state->demod_state != QAMSet ) {
+ writereg(state, R367_DEBUG_LT4,0x00);
+ writereg(state, R367_DEBUG_LT5,0x01);
+ writereg(state, R367_DEBUG_LT6,0x06);// R367_QAM_CTRL_1
+ writereg(state, R367_DEBUG_LT7,0x03);// R367_QAM_CTRL_2
+ writereg(state, R367_DEBUG_LT8,0x00);
+ writereg(state, R367_DEBUG_LT9,0x00);
+
+ // Tuner Setup
+ writereg(state, R367_ANADIGCTRL,0x8B); /* Buffer Q disabled, I Enabled, signed ADC */
+ writereg(state, R367_DUAL_AD12,0x04); /* ADCQ disabled */
+
+ // Clock setup
+ writereg(state, R367_ANACTRL,0x0D); /* PLL bypassed and disabled */
+ writereg(state, R367_TOPCTRL,0x10); // Set QAM
+
+ writereg(state, R367_PLLMDIV,27); /* IC runs at 58 MHz with a 27 MHz crystal */
+ writereg(state, R367_PLLNDIV,232);
+ writereg(state, R367_PLLSETUP,0x18); /* ADC clock is equal to system clock */
+
+ msleep(50);
+ writereg(state, R367_ANACTRL,0x00); /* PLL enabled and used */
+
+ state->master_clock = 58000000;
+ state->adc_clock = 58000000;
+
+ state->demod_state = QAMSet;
+ }
+
+ state->m_bFirstTimeLock = true;
+ state->m_DemodLockTime = -1;
+
+ qam_set_modulation(state);
+ QAM_SetSymbolRate(state);
+
+ // Will make problems on low symbol rates ( < 2500000 )
+
+ switch(state->modulation) {
+ default:
+ case QAM_16: CRLSymbols = 150000; break;
+ case QAM_32: CRLSymbols = 250000; break;
+ case QAM_64: CRLSymbols = 200000; break;
+ case QAM_128: CRLSymbols = 250000; break;
+ case QAM_256: CRLSymbols = 250000; break;
+ }
+
+ CRLTimeOut = (25 * CRLSymbols * (SearchRange/1000)) / (state->symbol_rate/1000);
+ CRLTimeOut = (1000 * CRLTimeOut) / state->symbol_rate;
+ if( CRLTimeOut < 50 ) CRLTimeOut = 50;
+
+ state->m_FECTimeOut = 20;
+ state->m_DemodTimeOut = AGCTimeOut + TRLTimeOut + CRLTimeOut + EQLTimeOut;
+ state->m_SignalTimeOut = AGCTimeOut + TRLTimeOut;
+
+ // QAM_AGC_ACCUMRSTSEL = 0;
+ readreg(state, R367_QAM_AGC_CTL,&state->m_Save_QAM_AGC_CTL);
+ writereg(state, R367_QAM_AGC_CTL,state->m_Save_QAM_AGC_CTL & ~0x0F);
+
+ // QAM_MODULUSMAP_EN = 0
+ readreg(state, R367_QAM_EQU_PNT_GAIN,&Temp);
+ writereg(state, R367_QAM_EQU_PNT_GAIN,Temp & ~0x40);
+
+ // QAM_SWEEP_EN = 0
+ readreg(state, R367_QAM_EQU_CTR_LPF_GAIN,&Temp);
+ writereg(state, R367_QAM_EQU_CTR_LPF_GAIN,Temp & ~0x08);
+
+ QAM_SetDerotFrequency(state, IntermediateFrequency);
+
+ // Release TRL
+ writereg(state, R367_QAM_CTRL_1,0x00);
+
+ state->IF = IntermediateFrequency;
+ state->demod_state = QAMStarted;
+
+ return status;
+}
+
+static int OFDM_Start(struct stv_state *state, s32 offsetFreq,s32 IntermediateFrequency)
+{
+ int status = 0;
+ u8 GAIN_SRC1;
+ u32 Derot;
+ u8 SYR_CTL;
+ u8 tmp1;
+ u8 tmp2;
+
+ if ( state->demod_state != OFDMSet ) {
+ // QAM Disable
+ writereg(state, R367_DEBUG_LT4, 0x00);
+ writereg(state, R367_DEBUG_LT5, 0x00);
+ writereg(state, R367_DEBUG_LT6, 0x00);// R367_QAM_CTRL_1
+ writereg(state, R367_DEBUG_LT7, 0x00);// R367_QAM_CTRL_2
+ writereg(state, R367_DEBUG_LT8, 0x00);
+ writereg(state, R367_DEBUG_LT9, 0x00);
+
+ // Tuner Setup
+ writereg(state, R367_ANADIGCTRL, 0x89); /* Buffer Q disabled, I Enabled, unsigned ADC */
+ writereg(state, R367_DUAL_AD12, 0x04); /* ADCQ disabled */
+
+ // Clock setup
+ writereg(state, R367_ANACTRL, 0x0D); /* PLL bypassed and disabled */
+ writereg(state, R367_TOPCTRL, 0x00); // Set OFDM
+
+ writereg(state, R367_PLLMDIV, 1); /* IC runs at 54 MHz with a 27 MHz crystal */
+ writereg(state, R367_PLLNDIV, 8);
+ writereg(state, R367_PLLSETUP, 0x18); /* ADC clock is equal to system clock */
+
+ msleep(50);
+ writereg(state, R367_ANACTRL, 0x00); /* PLL enabled and used */
+
+ state->master_clock = 54000000;
+ state->adc_clock = 54000000;
+
+ state->demod_state = OFDMSet;
+ }
+
+ state->m_bFirstTimeLock = true;
+ state->m_DemodLockTime = -1;
+
+ // Set inversion in GAIN_SRC1 (fixed from init)
+ // is in GAIN_SRC1, see below
+
+ GAIN_SRC1 = 0xA0;
+ // Bandwidth
+
+ // Fixed values for 54 MHz
+ switch(state->bandwidth) {
+ case 0:
+ case 8000000:
+ // Normrate = 44384;
+ writereg(state, R367_OFDM_TRL_CTL,0x14);
+ writereg(state, R367_OFDM_TRL_NOMRATE1,0xB0);
+ writereg(state, R367_OFDM_TRL_NOMRATE2,0x56);
+ // Gain SRC = 2774
+ writereg(state, R367_OFDM_GAIN_SRC1,0x0A | GAIN_SRC1);
+ writereg(state, R367_OFDM_GAIN_SRC2,0xD6);
+ break;
+ case 7000000:
+ // Normrate = 38836;
+ writereg(state, R367_OFDM_TRL_CTL,0x14);
+ writereg(state, R367_OFDM_TRL_NOMRATE1,0xDA);
+ writereg(state, R367_OFDM_TRL_NOMRATE2,0x4B);
+ // Gain SRC = 2427
+ writereg(state, R367_OFDM_GAIN_SRC1,0x09 | GAIN_SRC1);
+ writereg(state, R367_OFDM_GAIN_SRC2,0x7B);
+ break;
+ case 6000000:
+ // Normrate = 33288;
+ writereg(state, R367_OFDM_TRL_CTL,0x14);
+ writereg(state, R367_OFDM_TRL_NOMRATE1,0x04);
+ writereg(state, R367_OFDM_TRL_NOMRATE2,0x41);
+ // Gain SRC = 2080
+ writereg(state, R367_OFDM_GAIN_SRC1,0x08 | GAIN_SRC1);
+ writereg(state, R367_OFDM_GAIN_SRC2,0x20);
+ break;
+ default:
+ return -EINVAL;
+ break;
+ }
+
+ Derot = ((IntermediateFrequency / 1000) * 65536) / (state->master_clock / 1000);
+
+ writereg(state, R367_OFDM_INC_DEROT1,(Derot>>8));
+ writereg(state, R367_OFDM_INC_DEROT2,(Derot));
+
+ readreg(state, R367_OFDM_SYR_CTL,&SYR_CTL);
+ SYR_CTL &= ~0x78;
+ writereg(state, R367_OFDM_SYR_CTL,SYR_CTL); // EchoPos = 0
+
+
+ writereg(state, R367_OFDM_COR_MODEGUARD,0x03); // Force = 0, Mode = 0, Guard = 3
+ SYR_CTL &= 0x01;
+ writereg(state, R367_OFDM_SYR_CTL,SYR_CTL); // SYR_TR_DIS = 0
+
+ msleep(5);
+
+ writereg(state, R367_OFDM_COR_CTL,0x20); // Start core
+
+ // -- Begin M.V.
+ // Reset FEC and Read Solomon
+ readreg(state, R367_OFDM_SFDLYSETH,&tmp1);
+ readreg(state, R367_TSGENERAL,&tmp2);
+ writereg(state, R367_OFDM_SFDLYSETH,tmp1 | 0x08);
+ writereg(state, R367_TSGENERAL,tmp2 | 0x01);
+ // -- End M.V.
+
+ state->m_SignalTimeOut = 200;
+ state->IF = IntermediateFrequency;
+ state->demod_state = OFDMStarted;
+ state->m_DemodTimeOut = 0;
+ state->m_FECTimeOut = 0;
+ state->m_TSTimeOut = 0;
+
+ return status;
+}
+
+#if 0
+static int Stop(struct stv_state *state)
+{
+ int status = 0;
+
+ switch(state->demod_state)
+ {
+ case QAMStarted:
+ status = writereg(state, R367_QAM_CTRL_1,0x06);
+ state->demod_state = QAMSet;
+ break;
+ case OFDMStarted:
+ status = writereg(state, R367_OFDM_COR_CTL,0x00);
+ state->demod_state = OFDMSet;
+ break;
+ default:
+ break;
+ }
+ return status;
+}
+#endif
+
+static s32 Log10x100(u32 x)
+{
+ static u32 LookupTable[100] = {
+ 101157945, 103514217, 105925373, 108392691, 110917482,
+ 113501082, 116144861, 118850223, 121618600, 124451461, // 800.5 - 809.5
+ 127350308, 130316678, 133352143, 136458314, 139636836,
+ 142889396, 146217717, 149623566, 153108746, 156675107, // 810.5 - 819.5
+ 160324539, 164058977, 167880402, 171790839, 175792361,
+ 179887092, 184077200, 188364909, 192752491, 197242274, // 820.5 - 829.5
+ 201836636, 206538016, 211348904, 216271852, 221309471,
+ 226464431, 231739465, 237137371, 242661010, 248313311, // 830.5 - 839.5
+ 254097271, 260015956, 266072506, 272270131, 278612117,
+ 285101827, 291742701, 298538262, 305492111, 312607937, // 840.5 - 849.5
+ 319889511, 327340695, 334965439, 342767787, 350751874,
+ 358921935, 367282300, 375837404, 384591782, 393550075, // 850.5 - 859.5
+ 402717034, 412097519, 421696503, 431519077, 441570447,
+ 451855944, 462381021, 473151259, 484172368, 495450191, // 860.5 - 869.5
+ 506990708, 518800039, 530884444, 543250331, 555904257,
+ 568852931, 582103218, 595662144, 609536897, 623734835, // 870.5 - 879.5
+ 638263486, 653130553, 668343918, 683911647, 699841996,
+ 716143410, 732824533, 749894209, 767361489, 785235635, // 880.5 - 889.5
+ 803526122, 822242650, 841395142, 860993752, 881048873,
+ 901571138, 922571427, 944060876, 966050879, 988553095, // 890.5 - 899.5
+ };
+ s32 y;
+ int i;
+
+ if (x == 0)
+ return 0;
+ y = 800;
+ if (x >= 1000000000) {
+ x /= 10;
+ y += 100;
+ }
+
+ while (x < 100000000) {
+ x *= 10;
+ y -= 100;
+ }
+ i = 0;
+ while (i < 100 && x > LookupTable[i])
+ i += 1;
+ y += i;
+ return y;
+}
+
+static int QAM_GetSignalToNoise(struct stv_state *state, s32 *pSignalToNoise)
+{
+ u32 RegValAvg = 0;
+ u8 RegVal[2];
+ int status = 0, i;
+
+ *pSignalToNoise = 0;
+ for (i = 0; i < 10; i += 1 ) {
+ readregs(state, R367_QAM_EQU_SNR_LO, RegVal, 2);
+ RegValAvg += RegVal[0] + 256 * RegVal[1];
+ }
+ if (RegValAvg != 0) {
+ s32 Power = 1;
+ switch(state->modulation) {
+ case QAM_16:
+ Power = 20480;
+ break;
+ case QAM_32:
+ Power = 23040;
+ break;
+ case QAM_64:
+ Power = 21504;
+ break;
+ case QAM_128:
+ Power = 23616;
+ break;
+ case QAM_256:
+ Power = 21760;
+ break;
+ default:
+ break;
+ }
+ *pSignalToNoise = Log10x100((Power * 320) / RegValAvg);
+ } else {
+ *pSignalToNoise = 380;
+ }
+ return status;
+}
+
+static int OFDM_GetSignalToNoise(struct stv_state *state, s32 *pSignalToNoise)
+{
+ u8 CHC_SNR = 0;
+
+ int status = readreg(state, R367_OFDM_CHC_SNR, &CHC_SNR);
+ if (status >= 0) {
+ // Note: very unclear documentation on this.
+ // Datasheet states snr = CHC_SNR/4 dB -> way to high values!
+ // Software snr = ( 1000 * CHC_SNR ) / 8 / 32 / 10; -> to low values
+ // Comment in SW states this should be ( 1000 * CHC_SNR ) / 4 / 32 / 10; for the 367
+ // 361/362 Datasheet: snr = CHC_SNR/8 dB -> this looks best
+ *pSignalToNoise = ( (s32)CHC_SNR * 10) / 8;
+ }
+ //printk("SNR %d\n", *pSignalToNoise);
+ return status;
+}
+
+#if 0
+static int DVBC_GetQuality(struct stv_state *state, s32 SignalToNoise, s32 *pQuality)
+{
+ *pQuality = 100;
+ return 0;
+};
+
+static int DVBT_GetQuality(struct stv_state *state, s32 SignalToNoise, s32 *pQuality)
+{
+ static s32 QE_SN[] = {
+ 51, // QPSK 1/2
+ 69, // QPSK 2/3
+ 79, // QPSK 3/4
+ 89, // QPSK 5/6
+ 97, // QPSK 7/8
+ 108, // 16-QAM 1/2
+ 131, // 16-QAM 2/3
+ 146, // 16-QAM 3/4
+ 156, // 16-QAM 5/6
+ 160, // 16-QAM 7/8
+ 165, // 64-QAM 1/2
+ 187, // 64-QAM 2/3
+ 202, // 64-QAM 3/4
+ 216, // 64-QAM 5/6
+ 225, // 64-QAM 7/8
+ };
+ u8 TPS_Received[2];
+ int Constellation;
+ int CodeRate;
+ s32 SignalToNoiseRel, BERQuality;
+
+ *pQuality = 0;
+ readregs(state, R367_OFDM_TPS_RCVD2, TPS_Received, sizeof(TPS_Received));
+ Constellation = TPS_Received[0] & 0x03;
+ CodeRate = TPS_Received[1] & 0x07;
+
+ if( Constellation > 2 || CodeRate > 5 )
+ return -1;
+ SignalToNoiseRel = SignalToNoise - QE_SN[Constellation * 5 + CodeRate];
+ BERQuality = 100;
+
+ if( SignalToNoiseRel < -70 )
+ *pQuality = 0;
+ else if( SignalToNoiseRel < 30 ) {
+ *pQuality = ((SignalToNoiseRel + 70) * BERQuality)/100;
+ } else
+ *pQuality = BERQuality;
+ return 0;
+};
+
+static s32 DVBCQuality(struct stv_state *state, s32 SignalToNoise)
+{
+ s32 SignalToNoiseRel = 0;
+ s32 Quality = 0;
+ s32 BERQuality = 100;
+
+ switch(state->modulation) {
+ case QAM_16: SignalToNoiseRel = SignalToNoise - 200 ; break;
+ case QAM_32: SignalToNoiseRel = SignalToNoise - 230 ; break; // Not in NorDig
+ case QAM_64: SignalToNoiseRel = SignalToNoise - 260 ; break;
+ case QAM_128: SignalToNoiseRel = SignalToNoise - 290 ; break;
+ case QAM_256: SignalToNoiseRel = SignalToNoise - 320 ; break;
+ }
+
+ if( SignalToNoiseRel < -70 ) Quality = 0;
+ else if( SignalToNoiseRel < 30 )
+ {
+ Quality = ((SignalToNoiseRel + 70) * BERQuality)/100;
+ }
+ else
+ Quality = BERQuality;
+
+ return Quality;
+}
+
+static int GetQuality(struct stv_state *state, s32 SignalToNoise, s32 *pQuality)
+{
+ *pQuality = 0;
+ switch(state->demod_state)
+ {
+ case QAMStarted:
+ *pQuality = DVBCQuality(state, SignalToNoise);
+ break;
+ case OFDMStarted:
+ return DVBT_GetQuality(state, SignalToNoise, pQuality);
+ }
+ return 0;
+};
+#endif
+
+static int attach_init(struct stv_state *state)
+{
+ int stat = 0;
+
+ stat = readreg(state, R367_ID, &state->ID);
+ if ( stat < 0 || state->ID != 0x60 )
+ return -ENODEV;
+ printk("stv0367 found\n");
+
+ writereg(state, R367_TOPCTRL, 0x10);
+ write_init_table(state, base_init);
+ write_init_table(state, qam_init);
+
+ writereg(state, R367_TOPCTRL, 0x00);
+ write_init_table(state, ofdm_init);
+
+ writereg(state, R367_OFDM_GAIN_SRC1, 0x2A);
+ writereg(state, R367_OFDM_GAIN_SRC2, 0xD6);
+ writereg(state, R367_OFDM_INC_DEROT1, 0x55);
+ writereg(state, R367_OFDM_INC_DEROT2, 0x55);
+ writereg(state, R367_OFDM_TRL_CTL, 0x14);
+ writereg(state, R367_OFDM_TRL_NOMRATE1, 0xAE);
+ writereg(state, R367_OFDM_TRL_NOMRATE2, 0x56);
+ writereg(state, R367_OFDM_FEPATH_CFG, 0x0);
+
+ // OFDM TS Setup
+
+ writereg(state, R367_OFDM_TSCFGH, 0x70);
+ writereg(state, R367_OFDM_TSCFGM, 0xC0);
+ writereg(state, R367_OFDM_TSCFGL, 0x20);
+ writereg(state, R367_OFDM_TSSPEED, 0x40); // Fixed at 54 MHz
+ //writereg(state, R367_TSTBUS, 0x80); // Invert CLK
+
+ writereg(state, R367_OFDM_TSCFGH, 0x71);
+ writereg(state, R367_OFDM_TSCFGH, 0x70);
+
+ writereg(state, R367_TOPCTRL, 0x10);
+
+ // Also needed for QAM
+ writereg(state, R367_OFDM_AGC12C, 0x01); // AGC Pin setup
+
+ writereg(state, R367_OFDM_AGCCTRL1, 0x8A); //
+
+ // QAM TS setup, note exact format also depends on descrambler settings
+ writereg(state, R367_QAM_OUTFORMAT_0, 0x85); // Inverted Clock, Swap, serial
+ // writereg(state, R367_QAM_OUTFORMAT_1, 0x00); //
+
+ // Clock setup
+ writereg(state, R367_ANACTRL, 0x0D); /* PLL bypassed and disabled */
+
+ if( state->master_clock == 58000000 ) {
+ writereg(state, R367_PLLMDIV,27); /* IC runs at 58 MHz with a 27 MHz crystal */
+ writereg(state, R367_PLLNDIV,232);
+ } else {
+ writereg(state, R367_PLLMDIV,1); /* IC runs at 54 MHz with a 27 MHz crystal */
+ writereg(state, R367_PLLNDIV,8);
+ }
+ writereg(state, R367_PLLSETUP, 0x18); /* ADC clock is equal to system clock */
+
+ // Tuner setup
+ writereg(state, R367_ANADIGCTRL, 0x8b); /* Buffer Q disabled, I Enabled, signed ADC */
+ writereg(state, R367_DUAL_AD12, 0x04); /* ADCQ disabled */
+
+ writereg(state, R367_QAM_FSM_SNR2_HTH, 0x23); /* Improves the C/N lock limit */
+ writereg(state, R367_QAM_IQ_QAM, 0x01); /* ZIF/IF Automatic mode */
+ writereg(state, R367_QAM_EQU_FFE_LEAKAGE, 0x83); /* Improving burst noise performances */
+ writereg(state, R367_QAM_IQDEM_ADJ_EN, 0x05); /* Improving ACI performances */
+
+ writereg(state, R367_ANACTRL, 0x00); /* PLL enabled and used */
+
+ writereg(state, R367_I2CRPT, state->I2CRPT);
+ state->demod_state = QAMSet;
+ return stat;
+}
+
+#ifdef USE_API3
+static void c_release(struct dvb_frontend* fe)
+#else
+static void release(struct dvb_frontend* fe)
+#endif
+{
+ struct stv_state *state=fe->demodulator_priv;
+ printk("%s\n", __FUNCTION__);
+ kfree(state);
+}
+
+#ifdef USE_API3
+static int c_init (struct dvb_frontend *fe)
+{
+ struct stv_state *state=fe->demodulator_priv;
+
+ if (mutex_trylock(&state->ctlock)==0)
+ return -EBUSY;
+ state->omode = OM_DVBC;
+ return 0;
+}
+
+static int c_sleep(struct dvb_frontend* fe)
+{
+ struct stv_state *state=fe->demodulator_priv;
+
+ mutex_unlock(&state->ctlock);
+ return 0;
+}
+#endif
+
+static int gate_ctrl(struct dvb_frontend *fe, int enable)
+{
+ struct stv_state *state = fe->demodulator_priv;
+ u8 i2crpt = state->I2CRPT & ~0x80;
+
+ if (enable)
+ i2crpt |= 0x80;
+ if (writereg(state, R367_I2CRPT, i2crpt) < 0)
+ return -1;
+ state->I2CRPT = i2crpt;
+ return 0;
+}
+
+#if 0
+static int c_track(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
+{
+ return DVBFE_ALGO_SEARCH_AGAIN;
+}
+#endif
+
+#if 0
+int (*set_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
+int (*get_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
+#endif
+
+static int ofdm_lock(struct stv_state *state)
+{
+ int status = 0;
+ u8 OFDM_Status;
+ s32 DemodTimeOut = 10;
+ s32 FECTimeOut = 0;
+ s32 TSTimeOut = 0;
+ u8 CPAMPMin = 255;
+ u8 CPAMPValue;
+ u8 SYR_STAT;
+ u8 FFTMode;
+ u8 TSStatus;
+
+ msleep(state->m_SignalTimeOut);
+ readreg(state, R367_OFDM_STATUS,&OFDM_Status);
+
+ if (!(OFDM_Status & 0x40))
+ return -1;
+ //printk("lock 1\n");
+
+ readreg(state, R367_OFDM_SYR_STAT,&SYR_STAT);
+ FFTMode = (SYR_STAT & 0x0C) >> 2;
+
+ switch(FFTMode)
+ {
+ case 0: // 2K
+ DemodTimeOut = 10;
+ FECTimeOut = 150;
+ TSTimeOut = 125;
+ CPAMPMin = 20;
+ break;
+ case 1: // 8K
+ DemodTimeOut = 55;
+ FECTimeOut = 600;
+ TSTimeOut = 500;
+ CPAMPMin = 80;
+ break;
+ case 2: // 4K
+ DemodTimeOut = 40;
+ FECTimeOut = 300;
+ TSTimeOut = 250;
+ CPAMPMin = 30;
+ break;
+ }
+ state->m_OFDM_FFTMode = FFTMode;
+ readreg(state, R367_OFDM_PPM_CPAMP_DIR,&CPAMPValue);
+ msleep(DemodTimeOut);
+ {
+ // Release FEC and Read Solomon Reset
+ u8 tmp1;
+ u8 tmp2;
+ readreg(state, R367_OFDM_SFDLYSETH,&tmp1);
+ readreg(state, R367_TSGENERAL,&tmp2);
+ writereg(state, R367_OFDM_SFDLYSETH,tmp1 & ~0x08);
+ writereg(state, R367_TSGENERAL,tmp2 & ~0x01);
+ }
+ msleep(FECTimeOut);
+ if( (OFDM_Status & 0x98) != 0x98 )
+ ;//return -1;
+ //printk("lock 2\n");
+
+ {
+ u8 Guard = (SYR_STAT & 0x03);
+ if(Guard < 2)
+ {
+ u8 tmp;
+ readreg(state, R367_OFDM_SYR_CTL,&tmp);
+ writereg(state, R367_OFDM_SYR_CTL,tmp & ~0x04); // Clear AUTO_LE_EN
+ readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
+ writereg(state, R367_OFDM_SYR_UPDATE,tmp & ~0x10); // Clear SYR_FILTER
+ } else {
+ u8 tmp;
+ readreg(state, R367_OFDM_SYR_CTL,&tmp);
+ writereg(state, R367_OFDM_SYR_CTL,tmp | 0x04); // Set AUTO_LE_EN
+ readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
+ writereg(state, R367_OFDM_SYR_UPDATE,tmp | 0x10); // Set SYR_FILTER
+ }
+
+ // apply Sfec workaround if 8K 64QAM CR!=1/2
+ if( FFTMode == 1)
+ {
+ u8 tmp[2];
+ readregs(state, R367_OFDM_TPS_RCVD2, tmp, 2);
+ if( ((tmp[0] & 0x03) == 0x02) && (( tmp[1] & 0x07 ) != 0) )
+ {
+ writereg(state, R367_OFDM_SFDLYSETH,0xc0);
+ writereg(state, R367_OFDM_SFDLYSETM,0x60);
+ writereg(state, R367_OFDM_SFDLYSETL,0x00);
+ }
+ else
+ {
+ writereg(state, R367_OFDM_SFDLYSETH,0x00);
+ }
+ }
+ }
+ msleep(TSTimeOut);
+ readreg(state, R367_OFDM_TSSTATUS,&TSStatus);
+ if( (TSStatus & 0x80) != 0x80 )
+ return -1;
+ //printk("lock 3\n");
+ return status;
+}
+
+
+#ifdef USE_API3
+static int set_parameters(struct dvb_frontend *fe,
+ struct dvb_frontend_parameters *p)
+{
+ int stat;
+ struct stv_state *state = fe->demodulator_priv;
+ u32 OF = 0;
+ u32 IF;
+
+ if (fe->ops.tuner_ops.set_params)
+ fe->ops.tuner_ops.set_params(fe, p);
+
+ switch (state->omode) {
+ case OM_DVBC:
+ case OM_QAM_ITU_C:
+ state->modulation = p->u.qam.modulation;
+ state->symbol_rate = p->u.qam.symbol_rate;
+ break;
+ case OM_DVBT:
+ switch (p->u.ofdm.bandwidth) {
+ case BANDWIDTH_AUTO:
+ case BANDWIDTH_8_MHZ:
+ state->bandwidth = 8000000;
+ break;
+ case BANDWIDTH_7_MHZ:
+ state->bandwidth = 7000000;
+ break;
+ case BANDWIDTH_6_MHZ:
+ state->bandwidth = 6000000;
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ default:
+ return -EINVAL;
+ }
+#else
+static int set_parameters(struct dvb_frontend *fe)
+{
+ int stat;
+ struct stv_state *state = fe->demodulator_priv;
+ u32 OF = 0;
+ u32 IF;
+
+ switch (fe->dtv_property_cache.delivery_system) {
+ case SYS_DVBC_ANNEX_A:
+ state->omode = OM_DVBC;
+ /* symbol rate 0 might cause an oops */
+ if (fe->dtv_property_cache.symbol_rate == 0) {
+ printk(KERN_ERR "stv0367dd: Invalid symbol rate\n");
+ return -EINVAL;
+ }
+ break;
+ case SYS_DVBT:
+ state->omode = OM_DVBT;
+ break;
+ default:
+ return -EINVAL;
+ }
+ if (fe->ops.tuner_ops.set_params)
+ fe->ops.tuner_ops.set_params(fe);
+ state->modulation = fe->dtv_property_cache.modulation;
+ state->symbol_rate = fe->dtv_property_cache.symbol_rate;
+ state->bandwidth = fe->dtv_property_cache.bandwidth_hz;
+#endif
+ fe->ops.tuner_ops.get_if_frequency(fe, &IF);
+ //fe->ops.tuner_ops.get_frequency(fe, &IF);
+
+ switch(state->omode) {
+ case OM_DVBT:
+ stat = OFDM_Start(state, OF, IF);
+ ofdm_lock(state);
+ break;
+ case OM_DVBC:
+ case OM_QAM_ITU_C:
+ stat = QAM_Start(state, OF, IF);
+ break;
+ default:
+ stat = -EINVAL;
+ }
+ //printk("%s IF=%d OF=%d done\n", __FUNCTION__, IF, OF);
+ return stat;
+}
+
+#if 0
+static int c_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
+{
+ //struct stv_state *state = fe->demodulator_priv;
+ //printk("%s\n", __FUNCTION__);
+ return 0;
+}
+
+static int OFDM_GetLockStatus(struct stv_state *state, LOCK_STATUS* pLockStatus, s32 Time)
+{
+ int status = STATUS_SUCCESS;
+ u8 OFDM_Status;
+ s32 DemodTimeOut = 0;
+ s32 FECTimeOut = 0;
+ s32 TSTimeOut = 0;
+ u8 CPAMPMin = 255;
+ u8 CPAMPValue;
+ bool SYRLock;
+ u8 SYR_STAT;
+ u8 FFTMode;
+ u8 TSStatus;
+
+ readreg(state, R367_OFDM_STATUS,&OFDM_Status);
+
+ SYRLock = (OFDM_Status & 0x40) != 0;
+
+ if( Time > m_SignalTimeOut && !SYRLock )
+ {
+ *pLockStatus = NEVER_LOCK;
+ break;
+ }
+
+ if( !SYRLock ) break;
+
+ *pLockStatus = SIGNAL_PRESENT;
+
+ // Check Mode
+
+ readreg(state, R367_OFDM_SYR_STAT,&SYR_STAT);
+ FFTMode = (SYR_STAT & 0x0C) >> 2;
+
+ switch(FFTMode)
+ {
+ case 0: // 2K
+ DemodTimeOut = 10;
+ FECTimeOut = 150;
+ TSTimeOut = 125;
+ CPAMPMin = 20;
+ break;
+ case 1: // 8K
+ DemodTimeOut = 55;
+ FECTimeOut = 600;
+ TSTimeOut = 500;
+ CPAMPMin = 80;
+ break;
+ case 2: // 4K
+ DemodTimeOut = 40;
+ FECTimeOut = 300;
+ TSTimeOut = 250;
+ CPAMPMin = 30;
+ break;
+ }
+
+ m_OFDM_FFTMode = FFTMode;
+
+ if( m_DemodTimeOut == 0 && m_bFirstTimeLock )
+ {
+ m_DemodTimeOut = Time + DemodTimeOut;
+ //break;
+ }
+
+ readreg(state, R367_OFDM_PPM_CPAMP_DIR,&CPAMPValue);
+
+ if( Time <= m_DemodTimeOut && CPAMPValue < CPAMPMin )
+ {
+ break;
+ }
+
+ if( CPAMPValue < CPAMPMin && m_bFirstTimeLock )
+ {
+ // initiate retry
+ *pLockStatus = NEVER_LOCK;
+ break;
+ }
+
+ if( CPAMPValue < CPAMPMin ) break;
+
+ *pLockStatus = DEMOD_LOCK;
+
+ if( m_FECTimeOut == 0 && m_bFirstTimeLock )
+ {
+ // Release FEC and Read Solomon Reset
+ u8 tmp1;
+ u8 tmp2;
+ readreg(state, R367_OFDM_SFDLYSETH,&tmp1);
+ readreg(state, R367_TSGENERAL,&tmp2);
+ writereg(state, R367_OFDM_SFDLYSETH,tmp1 & ~0x08);
+ writereg(state, R367_TSGENERAL,tmp2 & ~0x01);
+
+ m_FECTimeOut = Time + FECTimeOut;
+ }
+
+ // Wait for TSP_LOCK, LK, PRF
+ if( (OFDM_Status & 0x98) != 0x98 )
+ {
+ if( Time > m_FECTimeOut ) *pLockStatus = NEVER_LOCK;
+ break;
+ }
+
+ if( m_bFirstTimeLock && m_TSTimeOut == 0)
+ {
+ u8 Guard = (SYR_STAT & 0x03);
+ if(Guard < 2)
+ {
+ u8 tmp;
+ readreg(state, R367_OFDM_SYR_CTL,&tmp);
+ writereg(state, R367_OFDM_SYR_CTL,tmp & ~0x04); // Clear AUTO_LE_EN
+ readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
+ writereg(state, R367_OFDM_SYR_UPDATE,tmp & ~0x10); // Clear SYR_FILTER
+ } else {
+ u8 tmp;
+ readreg(state, R367_OFDM_SYR_CTL,&tmp);
+ writereg(state, R367_OFDM_SYR_CTL,tmp | 0x04); // Set AUTO_LE_EN
+ readreg(state, R367_OFDM_SYR_UPDATE,&tmp);
+ writereg(state, R367_OFDM_SYR_UPDATE,tmp | 0x10); // Set SYR_FILTER
+ }
+
+ // apply Sfec workaround if 8K 64QAM CR!=1/2
+ if( FFTMode == 1)
+ {
+ u8 tmp[2];
+ readreg(state, R367_OFDM_TPS_RCVD2,tmp,2);
+ if( ((tmp[0] & 0x03) == 0x02) && (( tmp[1] & 0x07 ) != 0) )
+ {
+ writereg(state, R367_OFDM_SFDLYSETH,0xc0);
+ writereg(state, R367_OFDM_SFDLYSETM,0x60);
+ writereg(state, R367_OFDM_SFDLYSETL,0x00);
+ }
+ else
+ {
+ writereg(state, R367_OFDM_SFDLYSETH,0x00);
+ }
+ }
+
+ m_TSTimeOut = Time + TSTimeOut;
+ }
+ readreg(state, R367_OFDM_TSSTATUS,&TSStatus);
+ if( (TSStatus & 0x80) != 0x80 )
+ {
+ if( Time > m_TSTimeOut ) *pLockStatus = NEVER_LOCK;
+ break;
+ }
+ *pLockStatus = MPEG_LOCK;
+ m_bFirstTimeLock = false;
+ return status;
+}
+
+#endif
+
+static int read_status(struct dvb_frontend *fe, fe_status_t *status)
+{
+ struct stv_state *state = fe->demodulator_priv;
+ *status=0;
+
+ switch(state->demod_state) {
+ case QAMStarted:
+ {
+ u8 FEC_Lock;
+ u8 QAM_Lock;
+
+ readreg(state, R367_QAM_FSM_STS, &QAM_Lock);
+ QAM_Lock &= 0x0F;
+ if (QAM_Lock >10)
+ *status|=0x07;
+ readreg(state, R367_QAM_FEC_STATUS,&FEC_Lock);
+ if (FEC_Lock&2)
+ *status|=0x1f;
+ if (state->m_bFirstTimeLock) {
+ state->m_bFirstTimeLock = false;
+ // QAM_AGC_ACCUMRSTSEL to Tracking;
+ writereg(state, R367_QAM_AGC_CTL, state->m_Save_QAM_AGC_CTL);
+ }
+ break;
+ }
+ case OFDMStarted:
+ {
+ u8 OFDM_Status;
+ u8 TSStatus;
+
+ readreg(state, R367_OFDM_TSSTATUS, &TSStatus);
+
+ readreg(state, R367_OFDM_STATUS, &OFDM_Status);
+ if (OFDM_Status & 0x40)
+ *status |= FE_HAS_SIGNAL;
+
+ if ((OFDM_Status & 0x98) == 0x98)
+ *status|=0x0f;
+
+ if (TSStatus & 0x80)
+ *status |= 0x1f;
+ break;
+ }
+ default:
+ break;
+ }
+ return 0;
+}
+
+static int read_ber_ter(struct dvb_frontend *fe, u32 *ber)
+{
+ struct stv_state *state = fe->demodulator_priv;
+ u32 err;
+ u8 cnth, cntm, cntl;
+
+#if 1
+ readreg(state, R367_OFDM_SFERRCNTH, &cnth);
+
+ if (cnth & 0x80) {
+ *ber = state->ber;
+ return 0;
+ }
+
+ readreg(state, R367_OFDM_SFERRCNTM, &cntm);
+ readreg(state, R367_OFDM_SFERRCNTL, &cntl);
+
+ err = ((cnth & 0x7f) << 16) | (cntm << 8) | cntl;
+
+#if 0
+ {
+ u64 err64;
+ err64 = (u64) err;
+ err64 *= 1000000000ULL;
+ err64 >>= 21;
+ err = err64;
+ }
+#endif
+#else
+ readreg(state, R367_OFDM_ERRCNT1HM, &cnth);
+
+#endif
+ *ber = state->ber = err;
+ return 0;
+}
+
+static int read_ber_cab(struct dvb_frontend *fe, u32 *ber)
+{
+ struct stv_state *state = fe->demodulator_priv;
+ u32 err;
+ u8 cntm, cntl, ctrl;
+
+ readreg(state, R367_QAM_BERT_1, &ctrl);
+ if (!(ctrl & 0x20)) {
+ readreg(state, R367_QAM_BERT_2, &cntl);
+ readreg(state, R367_QAM_BERT_3, &cntm);
+ err = (cntm << 8) | cntl;
+ //printk("err %04x\n", err);
+ state->ber = err;
+ writereg(state, R367_QAM_BERT_1, 0x27);
+ }
+ *ber = (u32) state->ber;
+ return 0;
+}
+
+static int read_ber(struct dvb_frontend *fe, u32 *ber)
+{
+ struct stv_state *state = fe->demodulator_priv;
+
+ if (state->demod_state == QAMStarted)
+ return read_ber_cab(fe, ber);
+ if (state->demod_state == OFDMStarted)
+ return read_ber_ter(fe, ber);
+ *ber = 0;
+ return 0;
+}
+
+static int read_signal_strength(struct dvb_frontend *fe, u16 *strength)
+{
+ if (fe->ops.tuner_ops.get_rf_strength)
+ fe->ops.tuner_ops.get_rf_strength(fe, strength);
+ else
+ *strength = 0;
+ return 0;
+}
+
+static int read_snr(struct dvb_frontend *fe, u16 *snr)
+{
+ struct stv_state *state = fe->demodulator_priv;
+ s32 snr2 = 0;
+
+ switch(state->demod_state) {
+ case QAMStarted:
+ QAM_GetSignalToNoise(state, &snr2);
+ break;
+ case OFDMStarted:
+ OFDM_GetSignalToNoise(state, &snr2);
+ break;
+ default:
+ break;
+ }
+ *snr = snr2&0xffff;
+ return 0;
+}
+
+static int read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
+{
+ struct stv_state *state = fe->demodulator_priv;
+ u8 errl, errm, errh;
+ u8 val;
+
+ switch(state->demod_state) {
+ case QAMStarted:
+ readreg(state, R367_QAM_RS_COUNTER_4, &errl);
+ readreg(state, R367_QAM_RS_COUNTER_5, &errm);
+ *ucblocks = (errm << 8) | errl;
+ break;
+ case OFDMStarted:
+ readreg(state, R367_OFDM_SFERRCNTH, &val);
+ if ((val & 0x80) == 0) {
+ readreg(state, R367_OFDM_ERRCNT1H, &errh);
+ readreg(state, R367_OFDM_ERRCNT1M, &errl);
+ readreg(state, R367_OFDM_ERRCNT1L, &errm);
+ state->ucblocks = (errh <<16) | (errm << 8) | errl;
+ }
+ *ucblocks = state->ucblocks;
+ break;
+ default:
+ *ucblocks = 0;
+ break;
+ }
+ return 0;
+}
+
+static int c_get_tune_settings(struct dvb_frontend *fe,
+ struct dvb_frontend_tune_settings *sets)
+{
+ sets->min_delay_ms=3000;
+ sets->max_drift=0;
+ sets->step_size=0;
+ return 0;
+}
+
+#ifndef USE_API3
+static int get_tune_settings(struct dvb_frontend *fe,
+ struct dvb_frontend_tune_settings *sets)
+{
+ switch (fe->dtv_property_cache.delivery_system) {
+ case SYS_DVBC_ANNEX_A:
+ case SYS_DVBC_ANNEX_C:
+ return c_get_tune_settings(fe, sets);
+ default:
+ /* DVB-T: Use info.frequency_stepsize. */
+ return -EINVAL;
+ }
+}
+#endif
+
+#ifdef USE_API3
+static void t_release(struct dvb_frontend* fe)
+{
+ //struct stv_state *state=fe->demodulator_priv;
+ //printk("%s\n", __FUNCTION__);
+ //kfree(state);
+}
+
+static int t_init (struct dvb_frontend *fe)
+{
+ struct stv_state *state=fe->demodulator_priv;
+ if (mutex_trylock(&state->ctlock)==0)
+ return -EBUSY;
+ state->omode = OM_DVBT;
+ return 0;
+}
+
+static int t_sleep(struct dvb_frontend* fe)
+{
+ struct stv_state *state=fe->demodulator_priv;
+ mutex_unlock(&state->ctlock);
+ return 0;
+}
+#endif
+
+#if 0
+static int t_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
+{
+ //struct stv_state *state = fe->demodulator_priv;
+ //printk("%s\n", __FUNCTION__);
+ return 0;
+}
+
+static enum dvbfe_algo algo(struct dvb_frontend *fe)
+{
+ return DVBFE_ALGO_CUSTOM;
+}
+#endif
+
+#ifdef USE_API3
+static struct dvb_frontend_ops c_ops = {
+ .info = {
+ .name = "STV0367 DVB-C",
+ .type = FE_QAM,
+ .frequency_stepsize = 62500,
+ .frequency_min = 47000000,
+ .frequency_max = 862000000,
+ .symbol_rate_min = 870000,
+ .symbol_rate_max = 11700000,
+ .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
+ FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO
+ },
+ .release = c_release,
+ .init = c_init,
+ .sleep = c_sleep,
+ .i2c_gate_ctrl = gate_ctrl,
+
+ .get_tune_settings = c_get_tune_settings,
+
+ .read_status = read_status,
+ .read_ber = read_ber,
+ .read_signal_strength = read_signal_strength,
+ .read_snr = read_snr,
+ .read_ucblocks = read_ucblocks,
+
+#if 1
+ .set_frontend = set_parameters,
+#else
+ .get_frontend_algo = algo,
+ .search = search,
+#endif
+};
+
+static struct dvb_frontend_ops t_ops = {
+ .info = {
+ .name = "STV0367 DVB-T",
+ .type = FE_OFDM,
+ .frequency_min = 47125000,
+ .frequency_max = 865000000,
+ .frequency_stepsize = 166667,
+ .frequency_tolerance = 0,
+ .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
+ FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
+ FE_CAN_FEC_AUTO |
+ FE_CAN_QAM_16 | FE_CAN_QAM_64 |
+ FE_CAN_QAM_AUTO |
+ FE_CAN_TRANSMISSION_MODE_AUTO |
+ FE_CAN_GUARD_INTERVAL_AUTO |
+ FE_CAN_HIERARCHY_AUTO | FE_CAN_RECOVER |
+ FE_CAN_MUTE_TS
+ },
+ .release = t_release,
+ .init = t_init,
+ .sleep = t_sleep,
+ .i2c_gate_ctrl = gate_ctrl,
+
+ .set_frontend = set_parameters,
+
+ .read_status = read_status,
+ .read_ber = read_ber,
+ .read_signal_strength = read_signal_strength,
+ .read_snr = read_snr,
+ .read_ucblocks = read_ucblocks,
+};
+
+#else
+
+static struct dvb_frontend_ops common_ops = {
+ .delsys = { SYS_DVBC_ANNEX_A, SYS_DVBT },
+ .info = {
+ .name = "STV0367 DVB-C DVB-T",
+ .frequency_stepsize = 166667, /* DVB-T only */
+ .frequency_min = 47000000, /* DVB-T: 47125000 */
+ .frequency_max = 865000000, /* DVB-C: 862000000 */
+ .symbol_rate_min = 870000,
+ .symbol_rate_max = 11700000,
+ .caps = /* DVB-C */
+ FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
+ FE_CAN_QAM_128 | FE_CAN_QAM_256 |
+ FE_CAN_FEC_AUTO |
+ /* DVB-T */
+ FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
+ FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
+ FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
+ FE_CAN_TRANSMISSION_MODE_AUTO |
+ FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO |
+ FE_CAN_RECOVER | FE_CAN_MUTE_TS
+ },
+ .release = release,
+ .i2c_gate_ctrl = gate_ctrl,
+
+ .get_tune_settings = get_tune_settings,
+
+ .set_frontend = set_parameters,
+
+ .read_status = read_status,
+ .read_ber = read_ber,
+ .read_signal_strength = read_signal_strength,
+ .read_snr = read_snr,
+ .read_ucblocks = read_ucblocks,
+};
+#endif
+
+
+static void init_state(struct stv_state *state, struct stv0367_cfg *cfg)
+{
+ u32 ulENARPTLEVEL = 5;
+ u32 ulQAMInversion = 2;
+ state->omode = OM_NONE;
+ state->adr = cfg->adr;
+
+ mutex_init(&state->mutex);
+ mutex_init(&state->ctlock);
+
+#ifdef USE_API3
+ memcpy(&state->c_frontend.ops, &c_ops, sizeof(struct dvb_frontend_ops));
+ memcpy(&state->t_frontend.ops, &t_ops, sizeof(struct dvb_frontend_ops));
+ state->c_frontend.demodulator_priv = state;
+ state->t_frontend.demodulator_priv = state;
+#else
+ memcpy(&state->frontend.ops, &common_ops, sizeof(struct dvb_frontend_ops));
+ state->frontend.demodulator_priv = state;
+#endif
+
+ state->master_clock = 58000000;
+ state->adc_clock = 58000000;
+ state->I2CRPT = 0x08 | ((ulENARPTLEVEL & 0x07) << 4);
+ state->qam_inversion = ((ulQAMInversion & 3) << 6 );
+ state->demod_state = Off;
+}
+
+
+struct dvb_frontend *stv0367_attach(struct i2c_adapter *i2c, struct stv0367_cfg *cfg,
+ struct dvb_frontend **fe_t)
+{
+ struct stv_state *state = NULL;
+
+ state = kzalloc(sizeof(struct stv_state), GFP_KERNEL);
+ if (!state)
+ return NULL;
+
+ state->i2c = i2c;
+ init_state(state, cfg);
+
+ if (attach_init(state)<0)
+ goto error;
+#ifdef USE_API3
+ *fe_t = &state->t_frontend;
+ return &state->c_frontend;
+#else
+ return &state->frontend;
+#endif
+
+error:
+ printk("stv0367: not found\n");
+ kfree(state);
+ return NULL;
+}
+
+
+MODULE_DESCRIPTION("STV0367DD driver");
+MODULE_AUTHOR("Ralph Metzler, Manfred Voelkel");
+MODULE_LICENSE("GPL");
+
+EXPORT_SYMBOL(stv0367_attach);
+
+
+
new file mode 100644
@@ -0,0 +1,48 @@
+/*
+ * stv0367dd.h: STV0367 DVB-C/T demodulator driver
+ *
+ * Copyright (C) 2010-2013 Digital Devices GmbH
+ * Copyright (C) 2013 Maik Broemme <mbroemme@parallels.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 only, as published by the Free Software Foundation.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA
+ */
+
+#ifndef _STV0367DD_H_
+#define _STV0367DD_H_
+
+#include <linux/types.h>
+#include <linux/i2c.h>
+
+struct stv0367_cfg {
+ u8 adr;
+ u32 xtal;
+ u32 ts_mode;
+};
+
+#if IS_ENABLED(CONFIG_DVB_STV0367DD)
+extern struct dvb_frontend *stv0367_attach(struct i2c_adapter *i2c,
+ struct stv0367_cfg *cfg,
+ struct dvb_frontend **fe_t);
+#else
+static inline struct dvb_frontend *stv0367_attach(struct i2c_adapter *i2c,
+ struct stv0367_cfg *cfg,
+ struct dvb_frontend **fe_t);
+{
+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+ return NULL;
+}
+#endif
+
+#endif
new file mode 100644
@@ -0,0 +1,3442 @@
+/*
+ * stv0367dd_regs.h: DVB-C/DVB-T STMicroelectronics STV0367
+ * register defintions
+ *
+ * Copyright (C) 2010-2013 Digital Devices GmbH
+ * Copyright (C) 2013 Maik Broemme <mbroemme@parallels.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 only, as published by the Free Software Foundation.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA
+ */
+
+#ifndef _STV0367DD_REGS_H_
+#define _STV0367DD_REGS_H_
+
+/* ID */
+#define R367_ID 0xF000
+#define F367_IDENTIFICATIONREG 0xF00000FF
+
+/* I2CRPT */
+#define R367_I2CRPT 0xF001
+#define F367_I2CT_ON 0xF0010080
+#define F367_ENARPT_LEVEL 0xF0010070
+#define F367_SCLT_DELAY 0xF0010008
+#define F367_SCLT_NOD 0xF0010004
+#define F367_STOP_ENABLE 0xF0010002
+#define F367_SDAT_NOD 0xF0010001
+
+/* TOPCTRL */
+#define R367_TOPCTRL 0xF002
+#define F367_STDBY 0xF0020080
+#define F367_STDBY_FEC 0xF0020040
+#define F367_STDBY_CORE 0xF0020020
+#define F367_QAM_COFDM 0xF0020010
+#define F367_TS_DIS 0xF0020008
+#define F367_DIR_CLK_216 0xF0020004
+#define F367_TUNER_BB 0xF0020002
+#define F367_DVBT_H 0xF0020001
+
+/* IOCFG0 */
+#define R367_IOCFG0 0xF003
+#define F367_OP0_SD 0xF0030080
+#define F367_OP0_VAL 0xF0030040
+#define F367_OP0_OD 0xF0030020
+#define F367_OP0_INV 0xF0030010
+#define F367_OP0_DACVALUE_HI 0xF003000F
+
+/* DAC0R */
+#define R367_DAC0R 0xF004
+#define F367_OP0_DACVALUE_LO 0xF00400FF
+
+/* IOCFG1 */
+#define R367_IOCFG1 0xF005
+#define F367_IP0 0xF0050040
+#define F367_OP1_OD 0xF0050020
+#define F367_OP1_INV 0xF0050010
+#define F367_OP1_DACVALUE_HI 0xF005000F
+
+/* DAC1R */
+#define R367_DAC1R 0xF006
+#define F367_OP1_DACVALUE_LO 0xF00600FF
+
+/* IOCFG2 */
+#define R367_IOCFG2 0xF007
+#define F367_OP2_LOCK_CONF 0xF00700E0
+#define F367_OP2_OD 0xF0070010
+#define F367_OP2_VAL 0xF0070008
+#define F367_OP1_LOCK_CONF 0xF0070007
+
+/* SDFR */
+#define R367_SDFR 0xF008
+#define F367_OP0_FREQ 0xF00800F0
+#define F367_OP1_FREQ 0xF008000F
+
+/* STATUS */
+#define R367_OFDM_STATUS 0xF009
+#define F367_TPS_LOCK 0xF0090080
+#define F367_SYR_LOCK 0xF0090040
+#define F367_AGC_LOCK 0xF0090020
+#define F367_PRF 0xF0090010
+#define F367_LK 0xF0090008
+#define F367_PR 0xF0090007
+
+/* AUX_CLK */
+#define R367_AUX_CLK 0xF00A
+#define F367_AUXFEC_CTL 0xF00A00C0
+#define F367_DIS_CKX4 0xF00A0020
+#define F367_CKSEL 0xF00A0018
+#define F367_CKDIV_PROG 0xF00A0006
+#define F367_AUXCLK_ENA 0xF00A0001
+
+/* FREESYS1 */
+#define R367_FREESYS1 0xF00B
+#define F367_FREE_SYS1 0xF00B00FF
+
+/* FREESYS2 */
+#define R367_FREESYS2 0xF00C
+#define F367_FREE_SYS2 0xF00C00FF
+
+/* FREESYS3 */
+#define R367_FREESYS3 0xF00D
+#define F367_FREE_SYS3 0xF00D00FF
+
+/* GPIO_CFG */
+#define R367_GPIO_CFG 0xF00E
+#define F367_GPIO7_NOD 0xF00E0080
+#define F367_GPIO7_CFG 0xF00E0040
+#define F367_GPIO6_NOD 0xF00E0020
+#define F367_GPIO6_CFG 0xF00E0010
+#define F367_GPIO5_NOD 0xF00E0008
+#define F367_GPIO5_CFG 0xF00E0004
+#define F367_GPIO4_NOD 0xF00E0002
+#define F367_GPIO4_CFG 0xF00E0001
+
+/* GPIO_CMD */
+#define R367_GPIO_CMD 0xF00F
+#define F367_GPIO7_VAL 0xF00F0008
+#define F367_GPIO6_VAL 0xF00F0004
+#define F367_GPIO5_VAL 0xF00F0002
+#define F367_GPIO4_VAL 0xF00F0001
+
+/* AGC2MAX */
+#define R367_OFDM_AGC2MAX 0xF010
+#define F367_OFDM_AGC2_MAX 0xF01000FF
+
+/* AGC2MIN */
+#define R367_OFDM_AGC2MIN 0xF011
+#define F367_OFDM_AGC2_MIN 0xF01100FF
+
+/* AGC1MAX */
+#define R367_OFDM_AGC1MAX 0xF012
+#define F367_OFDM_AGC1_MAX 0xF01200FF
+
+/* AGC1MIN */
+#define R367_OFDM_AGC1MIN 0xF013
+#define F367_OFDM_AGC1_MIN 0xF01300FF
+
+/* AGCR */
+#define R367_OFDM_AGCR 0xF014
+#define F367_OFDM_RATIO_A 0xF01400E0
+#define F367_OFDM_RATIO_B 0xF0140018
+#define F367_OFDM_RATIO_C 0xF0140007
+
+/* AGC2TH */
+#define R367_OFDM_AGC2TH 0xF015
+#define F367_OFDM_AGC2_THRES 0xF01500FF
+
+/* AGC12C */
+#define R367_OFDM_AGC12C 0xF016
+#define F367_OFDM_AGC1_IV 0xF0160080
+#define F367_OFDM_AGC1_OD 0xF0160040
+#define F367_OFDM_AGC1_LOAD 0xF0160020
+#define F367_OFDM_AGC2_IV 0xF0160010
+#define F367_OFDM_AGC2_OD 0xF0160008
+#define F367_OFDM_AGC2_LOAD 0xF0160004
+#define F367_OFDM_AGC12_MODE 0xF0160003
+
+/* AGCCTRL1 */
+#define R367_OFDM_AGCCTRL1 0xF017
+#define F367_OFDM_DAGC_ON 0xF0170080
+#define F367_OFDM_INVERT_AGC12 0xF0170040
+#define F367_OFDM_AGC1_MODE 0xF0170008
+#define F367_OFDM_AGC2_MODE 0xF0170007
+
+/* AGCCTRL2 */
+#define R367_OFDM_AGCCTRL2 0xF018
+#define F367_OFDM_FRZ2_CTRL 0xF0180060
+#define F367_OFDM_FRZ1_CTRL 0xF0180018
+#define F367_OFDM_TIME_CST 0xF0180007
+
+/* AGC1VAL1 */
+#define R367_OFDM_AGC1VAL1 0xF019
+#define F367_OFDM_AGC1_VAL_LO 0xF01900FF
+
+/* AGC1VAL2 */
+#define R367_OFDM_AGC1VAL2 0xF01A
+#define F367_OFDM_AGC1_VAL_HI 0xF01A000F
+
+/* AGC2VAL1 */
+#define R367_OFDM_AGC2VAL1 0xF01B
+#define F367_OFDM_AGC2_VAL_LO 0xF01B00FF
+
+/* AGC2VAL2 */
+#define R367_OFDM_AGC2VAL2 0xF01C
+#define F367_OFDM_AGC2_VAL_HI 0xF01C000F
+
+/* AGC2PGA */
+#define R367_OFDM_AGC2PGA 0xF01D
+#define F367_OFDM_AGC2_PGA 0xF01D00FF
+
+/* OVF_RATE1 */
+#define R367_OFDM_OVF_RATE1 0xF01E
+#define F367_OFDM_OVF_RATE_HI 0xF01E000F
+
+/* OVF_RATE2 */
+#define R367_OFDM_OVF_RATE2 0xF01F
+#define F367_OFDM_OVF_RATE_LO 0xF01F00FF
+
+/* GAIN_SRC1 */
+#define R367_OFDM_GAIN_SRC1 0xF020
+#define F367_OFDM_INV_SPECTR 0xF0200080
+#define F367_OFDM_IQ_INVERT 0xF0200040
+#define F367_OFDM_INR_BYPASS 0xF0200020
+#define F367_OFDM_STATUS_INV_SPECRUM 0xF0200010
+#define F367_OFDM_GAIN_SRC_HI 0xF020000F
+
+/* GAIN_SRC2 */
+#define R367_OFDM_GAIN_SRC2 0xF021
+#define F367_OFDM_GAIN_SRC_LO 0xF02100FF
+
+/* INC_DEROT1 */
+#define R367_OFDM_INC_DEROT1 0xF022
+#define F367_OFDM_INC_DEROT_HI 0xF02200FF
+
+/* INC_DEROT2 */
+#define R367_OFDM_INC_DEROT2 0xF023
+#define F367_OFDM_INC_DEROT_LO 0xF02300FF
+
+/* PPM_CPAMP_DIR */
+#define R367_OFDM_PPM_CPAMP_DIR 0xF024
+#define F367_OFDM_PPM_CPAMP_DIRECT 0xF02400FF
+
+/* PPM_CPAMP_INV */
+#define R367_OFDM_PPM_CPAMP_INV 0xF025
+#define F367_OFDM_PPM_CPAMP_INVER 0xF02500FF
+
+/* FREESTFE_1 */
+#define R367_OFDM_FREESTFE_1 0xF026
+#define F367_OFDM_SYMBOL_NUMBER_INC 0xF02600C0
+#define F367_OFDM_SEL_LSB 0xF0260004
+#define F367_OFDM_AVERAGE_ON 0xF0260002
+#define F367_OFDM_DC_ADJ 0xF0260001
+
+/* FREESTFE_2 */
+#define R367_OFDM_FREESTFE_2 0xF027
+#define F367_OFDM_SEL_SRCOUT 0xF02700C0
+#define F367_OFDM_SEL_SYRTHR 0xF027001F
+
+/* DCOFFSET */
+#define R367_OFDM_DCOFFSET 0xF028
+#define F367_OFDM_SELECT_I_Q 0xF0280080
+#define F367_OFDM_DC_OFFSET 0xF028007F
+
+/* EN_PROCESS */
+#define R367_OFDM_EN_PROCESS 0xF029
+#define F367_OFDM_FREE 0xF02900F0
+#define F367_OFDM_ENAB_MANUAL 0xF0290001
+
+/* SDI_SMOOTHER */
+#define R367_OFDM_SDI_SMOOTHER 0xF02A
+#define F367_OFDM_DIS_SMOOTH 0xF02A0080
+#define F367_OFDM_SDI_INC_SMOOTHER 0xF02A007F
+
+/* FE_LOOP_OPEN */
+#define R367_OFDM_FE_LOOP_OPEN 0xF02B
+#define F367_OFDM_TRL_LOOP_OP 0xF02B0002
+#define F367_OFDM_CRL_LOOP_OP 0xF02B0001
+
+/* FREQOFF1 */
+#define R367_OFDM_FREQOFF1 0xF02C
+#define F367_OFDM_FREQ_OFFSET_LOOP_OPEN_VHI 0xF02C00FF
+
+/* FREQOFF2 */
+#define R367_OFDM_FREQOFF2 0xF02D
+#define F367_OFDM_FREQ_OFFSET_LOOP_OPEN_HI 0xF02D00FF
+
+/* FREQOFF3 */
+#define R367_OFDM_FREQOFF3 0xF02E
+#define F367_OFDM_FREQ_OFFSET_LOOP_OPEN_LO 0xF02E00FF
+
+/* TIMOFF1 */
+#define R367_OFDM_TIMOFF1 0xF02F
+#define F367_OFDM_TIM_OFFSET_LOOP_OPEN_HI 0xF02F00FF
+
+/* TIMOFF2 */
+#define R367_OFDM_TIMOFF2 0xF030
+#define F367_OFDM_TIM_OFFSET_LOOP_OPEN_LO 0xF03000FF
+
+/* EPQ */
+#define R367_OFDM_EPQ 0xF031
+#define F367_OFDM_EPQ1 0xF03100FF
+
+/* EPQAUTO */
+#define R367_OFDM_EPQAUTO 0xF032
+#define F367_OFDM_EPQ2 0xF03200FF
+
+/* SYR_UPDATE */
+#define R367_OFDM_SYR_UPDATE 0xF033
+#define F367_OFDM_SYR_PROTV 0xF0330080
+#define F367_OFDM_SYR_PROTV_GAIN 0xF0330060
+#define F367_OFDM_SYR_FILTER 0xF0330010
+#define F367_OFDM_SYR_TRACK_THRES 0xF033000C
+
+/* CHPFREE */
+#define R367_OFDM_CHPFREE 0xF034
+#define F367_OFDM_CHP_FREE 0xF03400FF
+
+/* PPM_STATE_MAC */
+#define R367_OFDM_PPM_STATE_MAC 0xF035
+#define F367_OFDM_PPM_STATE_MACHINE_DECODER 0xF035003F
+
+/* INR_THRESHOLD */
+#define R367_OFDM_INR_THRESHOLD 0xF036
+#define F367_OFDM_INR_THRESH 0xF03600FF
+
+/* EPQ_TPS_ID_CELL */
+#define R367_OFDM_EPQ_TPS_ID_CELL 0xF037
+#define F367_OFDM_ENABLE_LGTH_TO_CF 0xF0370080
+#define F367_OFDM_DIS_TPS_RSVD 0xF0370040
+#define F367_OFDM_DIS_BCH 0xF0370020
+#define F367_OFDM_DIS_ID_CEL 0xF0370010
+#define F367_OFDM_TPS_ADJUST_SYM 0xF037000F
+
+/* EPQ_CFG */
+#define R367_OFDM_EPQ_CFG 0xF038
+#define F367_OFDM_EPQ_RANGE 0xF0380002
+#define F367_OFDM_EPQ_SOFT 0xF0380001
+
+/* EPQ_STATUS */
+#define R367_OFDM_EPQ_STATUS 0xF039
+#define F367_OFDM_SLOPE_INC 0xF03900FC
+#define F367_OFDM_TPS_FIELD 0xF0390003
+
+/* AUTORELOCK */
+#define R367_OFDM_AUTORELOCK 0xF03A
+#define F367_OFDM_BYPASS_BER_TEMPO 0xF03A0080
+#define F367_OFDM_BER_TEMPO 0xF03A0070
+#define F367_OFDM_BYPASS_COFDM_TEMPO 0xF03A0008
+#define F367_OFDM_COFDM_TEMPO 0xF03A0007
+
+/* BER_THR_VMSB */
+#define R367_OFDM_BER_THR_VMSB 0xF03B
+#define F367_OFDM_BER_THRESHOLD_HI 0xF03B00FF
+
+/* BER_THR_MSB */
+#define R367_OFDM_BER_THR_MSB 0xF03C
+#define F367_OFDM_BER_THRESHOLD_MID 0xF03C00FF
+
+/* BER_THR_LSB */
+#define R367_OFDM_BER_THR_LSB 0xF03D
+#define F367_OFDM_BER_THRESHOLD_LO 0xF03D00FF
+
+/* CCD */
+#define R367_OFDM_CCD 0xF03E
+#define F367_OFDM_CCD_DETECTED 0xF03E0080
+#define F367_OFDM_CCD_RESET 0xF03E0040
+#define F367_OFDM_CCD_THRESHOLD 0xF03E000F
+
+/* SPECTR_CFG */
+#define R367_OFDM_SPECTR_CFG 0xF03F
+#define F367_OFDM_SPECT_CFG 0xF03F0003
+
+/* CONSTMU_MSB */
+#define R367_OFDM_CONSTMU_MSB 0xF040
+#define F367_OFDM_CONSTMU_FREEZE 0xF0400080
+#define F367_OFDM_CONSTNU_FORCE_EN 0xF0400040
+#define F367_OFDM_CONST_MU_MSB 0xF040003F
+
+/* CONSTMU_LSB */
+#define R367_OFDM_CONSTMU_LSB 0xF041
+#define F367_OFDM_CONST_MU_LSB 0xF04100FF
+
+/* CONSTMU_MAX_MSB */
+#define R367_OFDM_CONSTMU_MAX_MSB 0xF042
+#define F367_OFDM_CONST_MU_MAX_MSB 0xF042003F
+
+/* CONSTMU_MAX_LSB */
+#define R367_OFDM_CONSTMU_MAX_LSB 0xF043
+#define F367_OFDM_CONST_MU_MAX_LSB 0xF04300FF
+
+/* ALPHANOISE */
+#define R367_OFDM_ALPHANOISE 0xF044
+#define F367_OFDM_USE_ALLFILTER 0xF0440080
+#define F367_OFDM_INTER_ON 0xF0440040
+#define F367_OFDM_ALPHA_NOISE 0xF044001F
+
+/* MAXGP_MSB */
+#define R367_OFDM_MAXGP_MSB 0xF045
+#define F367_OFDM_MUFILTER_LENGTH 0xF04500F0
+#define F367_OFDM_MAX_GP_MSB 0xF045000F
+
+/* MAXGP_LSB */
+#define R367_OFDM_MAXGP_LSB 0xF046
+#define F367_OFDM_MAX_GP_LSB 0xF04600FF
+
+/* ALPHAMSB */
+#define R367_OFDM_ALPHAMSB 0xF047
+#define F367_OFDM_CHC_DATARATE 0xF04700C0
+#define F367_OFDM_ALPHA_MSB 0xF047003F
+
+/* ALPHALSB */
+#define R367_OFDM_ALPHALSB 0xF048
+#define F367_OFDM_ALPHA_LSB 0xF04800FF
+
+/* PILOT_ACCU */
+#define R367_OFDM_PILOT_ACCU 0xF049
+#define F367_OFDM_USE_SCAT4ADDAPT 0xF0490080
+#define F367_OFDM_PILOT_ACC 0xF049001F
+
+/* PILOTMU_ACCU */
+#define R367_OFDM_PILOTMU_ACCU 0xF04A
+#define F367_OFDM_DISCARD_BAD_SP 0xF04A0080
+#define F367_OFDM_DISCARD_BAD_CP 0xF04A0040
+#define F367_OFDM_PILOT_MU_ACCU 0xF04A001F
+
+/* FILT_CHANNEL_EST */
+#define R367_OFDM_FILT_CHANNEL_EST 0xF04B
+#define F367_OFDM_USE_FILT_PILOT 0xF04B0080
+#define F367_OFDM_FILT_CHANNEL 0xF04B007F
+
+/* ALPHA_NOPISE_FREQ */
+#define R367_OFDM_ALPHA_NOPISE_FREQ 0xF04C
+#define F367_OFDM_NOISE_FREQ_FILT 0xF04C0040
+#define F367_OFDM_ALPHA_NOISE_FREQ 0xF04C003F
+
+/* RATIO_PILOT */
+#define R367_OFDM_RATIO_PILOT 0xF04D
+#define F367_OFDM_RATIO_MEAN_SP 0xF04D00F0
+#define F367_OFDM_RATIO_MEAN_CP 0xF04D000F
+
+/* CHC_CTL */
+#define R367_OFDM_CHC_CTL 0xF04E
+#define F367_OFDM_TRACK_EN 0xF04E0080
+#define F367_OFDM_NOISE_NORM_EN 0xF04E0040
+#define F367_OFDM_FORCE_CHC_RESET 0xF04E0020
+#define F367_OFDM_SHORT_TIME 0xF04E0010
+#define F367_OFDM_FORCE_STATE_EN 0xF04E0008
+#define F367_OFDM_FORCE_STATE 0xF04E0007
+
+/* EPQ_ADJUST */
+#define R367_OFDM_EPQ_ADJUST 0xF04F
+#define F367_OFDM_ADJUST_SCAT_IND 0xF04F00C0
+#define F367_OFDM_ONE_SYMBOL 0xF04F0010
+#define F367_OFDM_EPQ_DECAY 0xF04F000E
+#define F367_OFDM_HOLD_SLOPE 0xF04F0001
+
+/* EPQ_THRES */
+#define R367_OFDM_EPQ_THRES 0xF050
+#define F367_OFDM_EPQ_THR 0xF05000FF
+
+/* OMEGA_CTL */
+#define R367_OFDM_OMEGA_CTL 0xF051
+#define F367_OFDM_OMEGA_RST 0xF0510080
+#define F367_OFDM_FREEZE_OMEGA 0xF0510040
+#define F367_OFDM_OMEGA_SEL 0xF051003F
+
+/* GP_CTL */
+#define R367_OFDM_GP_CTL 0xF052
+#define F367_OFDM_CHC_STATE 0xF05200E0
+#define F367_OFDM_FREEZE_GP 0xF0520010
+#define F367_OFDM_GP_SEL 0xF052000F
+
+/* MUMSB */
+#define R367_OFDM_MUMSB 0xF053
+#define F367_OFDM_MU_MSB 0xF053007F
+
+/* MULSB */
+#define R367_OFDM_MULSB 0xF054
+#define F367_OFDM_MU_LSB 0xF05400FF
+
+/* GPMSB */
+#define R367_OFDM_GPMSB 0xF055
+#define F367_OFDM_CSI_THRESHOLD 0xF05500E0
+#define F367_OFDM_GP_MSB 0xF055000F
+
+/* GPLSB */
+#define R367_OFDM_GPLSB 0xF056
+#define F367_OFDM_GP_LSB 0xF05600FF
+
+/* OMEGAMSB */
+#define R367_OFDM_OMEGAMSB 0xF057
+#define F367_OFDM_OMEGA_MSB 0xF057007F
+
+/* OMEGALSB */
+#define R367_OFDM_OMEGALSB 0xF058
+#define F367_OFDM_OMEGA_LSB 0xF05800FF
+
+/* SCAT_NB */
+#define R367_OFDM_SCAT_NB 0xF059
+#define F367_OFDM_CHC_TEST 0xF05900F8
+#define F367_OFDM_SCAT_NUMB 0xF0590003
+
+/* CHC_DUMMY */
+#define R367_OFDM_CHC_DUMMY 0xF05A
+#define F367_OFDM_CHC_DUM 0xF05A00FF
+
+/* INC_CTL */
+#define R367_OFDM_INC_CTL 0xF05B
+#define F367_OFDM_INC_BYPASS 0xF05B0080
+#define F367_OFDM_INC_NDEPTH 0xF05B000C
+#define F367_OFDM_INC_MADEPTH 0xF05B0003
+
+/* INCTHRES_COR1 */
+#define R367_OFDM_INCTHRES_COR1 0xF05C
+#define F367_OFDM_INC_THRES_COR1 0xF05C00FF
+
+/* INCTHRES_COR2 */
+#define R367_OFDM_INCTHRES_COR2 0xF05D
+#define F367_OFDM_INC_THRES_COR2 0xF05D00FF
+
+/* INCTHRES_DET1 */
+#define R367_OFDM_INCTHRES_DET1 0xF05E
+#define F367_OFDM_INC_THRES_DET1 0xF05E003F
+
+/* INCTHRES_DET2 */
+#define R367_OFDM_INCTHRES_DET2 0xF05F
+#define F367_OFDM_INC_THRES_DET2 0xF05F003F
+
+/* IIR_CELLNB */
+#define R367_OFDM_IIR_CELLNB 0xF060
+#define F367_OFDM_NRST_IIR 0xF0600080
+#define F367_OFDM_IIR_CELL_NB 0xF0600007
+
+/* IIRCX_COEFF1_MSB */
+#define R367_OFDM_IIRCX_COEFF1_MSB 0xF061
+#define F367_OFDM_IIR_CX_COEFF1_MSB 0xF06100FF
+
+/* IIRCX_COEFF1_LSB */
+#define R367_OFDM_IIRCX_COEFF1_LSB 0xF062
+#define F367_OFDM_IIR_CX_COEFF1_LSB 0xF06200FF
+
+/* IIRCX_COEFF2_MSB */
+#define R367_OFDM_IIRCX_COEFF2_MSB 0xF063
+#define F367_OFDM_IIR_CX_COEFF2_MSB 0xF06300FF
+
+/* IIRCX_COEFF2_LSB */
+#define R367_OFDM_IIRCX_COEFF2_LSB 0xF064
+#define F367_OFDM_IIR_CX_COEFF2_LSB 0xF06400FF
+
+/* IIRCX_COEFF3_MSB */
+#define R367_OFDM_IIRCX_COEFF3_MSB 0xF065
+#define F367_OFDM_IIR_CX_COEFF3_MSB 0xF06500FF
+
+/* IIRCX_COEFF3_LSB */
+#define R367_OFDM_IIRCX_COEFF3_LSB 0xF066
+#define F367_OFDM_IIR_CX_COEFF3_LSB 0xF06600FF
+
+/* IIRCX_COEFF4_MSB */
+#define R367_OFDM_IIRCX_COEFF4_MSB 0xF067
+#define F367_OFDM_IIR_CX_COEFF4_MSB 0xF06700FF
+
+/* IIRCX_COEFF4_LSB */
+#define R367_OFDM_IIRCX_COEFF4_LSB 0xF068
+#define F367_OFDM_IIR_CX_COEFF4_LSB 0xF06800FF
+
+/* IIRCX_COEFF5_MSB */
+#define R367_OFDM_IIRCX_COEFF5_MSB 0xF069
+#define F367_OFDM_IIR_CX_COEFF5_MSB 0xF06900FF
+
+/* IIRCX_COEFF5_LSB */
+#define R367_OFDM_IIRCX_COEFF5_LSB 0xF06A
+#define F367_OFDM_IIR_CX_COEFF5_LSB 0xF06A00FF
+
+/* FEPATH_CFG */
+#define R367_OFDM_FEPATH_CFG 0xF06B
+#define F367_OFDM_DEMUX_SWAP 0xF06B0004
+#define F367_OFDM_DIGAGC_SWAP 0xF06B0002
+#define F367_OFDM_LONGPATH_IF 0xF06B0001
+
+/* PMC1_FUNC */
+#define R367_OFDM_PMC1_FUNC 0xF06C
+#define F367_OFDM_SOFT_RSTN 0xF06C0080
+#define F367_OFDM_PMC1_AVERAGE_TIME 0xF06C0078
+#define F367_OFDM_PMC1_WAIT_TIME 0xF06C0006
+#define F367_OFDM_PMC1_2N_SEL 0xF06C0001
+
+/* PMC1_FOR */
+#define R367_OFDM_PMC1_FOR 0xF06D
+#define F367_OFDM_PMC1_FORCE 0xF06D0080
+#define F367_OFDM_PMC1_FORCE_VALUE 0xF06D007C
+
+/* PMC2_FUNC */
+#define R367_OFDM_PMC2_FUNC 0xF06E
+#define F367_OFDM_PMC2_SOFT_STN 0xF06E0080
+#define F367_OFDM_PMC2_ACCU_TIME 0xF06E0070
+#define F367_OFDM_PMC2_CMDP_MN 0xF06E0008
+#define F367_OFDM_PMC2_SWAP 0xF06E0004
+
+/* STATUS_ERR_DA */
+#define R367_OFDM_STATUS_ERR_DA 0xF06F
+#define F367_OFDM_COM_USEGAINTRK 0xF06F0080
+#define F367_OFDM_COM_AGCLOCK 0xF06F0040
+#define F367_OFDM_AUT_AGCLOCK 0xF06F0020
+#define F367_OFDM_MIN_ERR_X_LSB 0xF06F000F
+
+/* DIG_AGC_R */
+#define R367_OFDM_DIG_AGC_R 0xF070
+#define F367_OFDM_COM_SOFT_RSTN 0xF0700080
+#define F367_OFDM_COM_AGC_ON 0xF0700040
+#define F367_OFDM_COM_EARLY 0xF0700020
+#define F367_OFDM_AUT_SOFT_RESETN 0xF0700010
+#define F367_OFDM_AUT_AGC_ON 0xF0700008
+#define F367_OFDM_AUT_EARLY 0xF0700004
+#define F367_OFDM_AUT_ROT_EN 0xF0700002
+#define F367_OFDM_LOCK_SOFT_RESETN 0xF0700001
+
+/* COMAGC_TARMSB */
+#define R367_OFDM_COMAGC_TARMSB 0xF071
+#define F367_OFDM_COM_AGC_TARGET_MSB 0xF07100FF
+
+/* COM_AGC_TAR_ENMODE */
+#define R367_OFDM_COM_AGC_TAR_ENMODE 0xF072
+#define F367_OFDM_COM_AGC_TARGET_LSB 0xF07200F0
+#define F367_OFDM_COM_ENMODE 0xF072000F
+
+/* COM_AGC_CFG */
+#define R367_OFDM_COM_AGC_CFG 0xF073
+#define F367_OFDM_COM_N 0xF07300F8
+#define F367_OFDM_COM_STABMODE 0xF0730006
+#define F367_OFDM_ERR_SEL 0xF0730001
+
+/* COM_AGC_GAIN1 */
+#define R367_OFDM_COM_AGC_GAIN1 0xF074
+#define F367_OFDM_COM_GAIN1ACK 0xF07400F0
+#define F367_OFDM_COM_GAIN1TRK 0xF074000F
+
+/* AUT_AGC_TARGETMSB */
+#define R367_OFDM_AUT_AGC_TARGETMSB 0xF075
+#define F367_OFDM_AUT_AGC_TARGET_MSB 0xF07500FF
+
+/* LOCK_DET_MSB */
+#define R367_OFDM_LOCK_DET_MSB 0xF076
+#define F367_OFDM_LOCK_DETECT_MSB 0xF07600FF
+
+/* AGCTAR_LOCK_LSBS */
+#define R367_OFDM_AGCTAR_LOCK_LSBS 0xF077
+#define F367_OFDM_AUT_AGC_TARGET_LSB 0xF07700F0
+#define F367_OFDM_LOCK_DETECT_LSB 0xF077000F
+
+/* AUT_GAIN_EN */
+#define R367_OFDM_AUT_GAIN_EN 0xF078
+#define F367_OFDM_AUT_ENMODE 0xF07800F0
+#define F367_OFDM_AUT_GAIN2 0xF078000F
+
+/* AUT_CFG */
+#define R367_OFDM_AUT_CFG 0xF079
+#define F367_OFDM_AUT_N 0xF07900F8
+#define F367_OFDM_INT_CHOICE 0xF0790006
+#define F367_OFDM_INT_LOAD 0xF0790001
+
+/* LOCKN */
+#define R367_OFDM_LOCKN 0xF07A
+#define F367_OFDM_LOCK_N 0xF07A00F8
+#define F367_OFDM_SEL_IQNTAR 0xF07A0004
+#define F367_OFDM_LOCK_DETECT_CHOICE 0xF07A0003
+
+/* INT_X_3 */
+#define R367_OFDM_INT_X_3 0xF07B
+#define F367_OFDM_INT_X3 0xF07B00FF
+
+/* INT_X_2 */
+#define R367_OFDM_INT_X_2 0xF07C
+#define F367_OFDM_INT_X2 0xF07C00FF
+
+/* INT_X_1 */
+#define R367_OFDM_INT_X_1 0xF07D
+#define F367_OFDM_INT_X1 0xF07D00FF
+
+/* INT_X_0 */
+#define R367_OFDM_INT_X_0 0xF07E
+#define F367_OFDM_INT_X0 0xF07E00FF
+
+/* MIN_ERRX_MSB */
+#define R367_OFDM_MIN_ERRX_MSB 0xF07F
+#define F367_OFDM_MIN_ERR_X_MSB 0xF07F00FF
+
+/* COR_CTL */
+#define R367_OFDM_COR_CTL 0xF080
+#define F367_OFDM_CORE_ACTIVE 0xF0800020
+#define F367_OFDM_HOLD 0xF0800010
+#define F367_OFDM_CORE_STATE_CTL 0xF080000F
+
+/* COR_STAT */
+#define R367_OFDM_COR_STAT 0xF081
+#define F367_OFDM_SCATT_LOCKED 0xF0810080
+#define F367_OFDM_TPS_LOCKED 0xF0810040
+#define F367_OFDM_SYR_LOCKED_COR 0xF0810020
+#define F367_OFDM_AGC_LOCKED_STAT 0xF0810010
+#define F367_OFDM_CORE_STATE_STAT 0xF081000F
+
+/* COR_INTEN */
+#define R367_OFDM_COR_INTEN 0xF082
+#define F367_OFDM_INTEN 0xF0820080
+#define F367_OFDM_INTEN_SYR 0xF0820020
+#define F367_OFDM_INTEN_FFT 0xF0820010
+#define F367_OFDM_INTEN_AGC 0xF0820008
+#define F367_OFDM_INTEN_TPS1 0xF0820004
+#define F367_OFDM_INTEN_TPS2 0xF0820002
+#define F367_OFDM_INTEN_TPS3 0xF0820001
+
+/* COR_INTSTAT */
+#define R367_OFDM_COR_INTSTAT 0xF083
+#define F367_OFDM_INTSTAT_SYR 0xF0830020
+#define F367_OFDM_INTSTAT_FFT 0xF0830010
+#define F367_OFDM_INTSAT_AGC 0xF0830008
+#define F367_OFDM_INTSTAT_TPS1 0xF0830004
+#define F367_OFDM_INTSTAT_TPS2 0xF0830002
+#define F367_OFDM_INTSTAT_TPS3 0xF0830001
+
+/* COR_MODEGUARD */
+#define R367_OFDM_COR_MODEGUARD 0xF084
+#define F367_OFDM_FORCE 0xF0840010
+#define F367_OFDM_MODE 0xF084000C
+#define F367_OFDM_GUARD 0xF0840003
+
+/* AGC_CTL */
+#define R367_OFDM_AGC_CTL 0xF085
+#define F367_OFDM_AGC_TIMING_FACTOR 0xF08500E0
+#define F367_OFDM_AGC_LAST 0xF0850010
+#define F367_OFDM_AGC_GAIN 0xF085000C
+#define F367_OFDM_AGC_NEG 0xF0850002
+#define F367_OFDM_AGC_SET 0xF0850001
+
+/* AGC_MANUAL1 */
+#define R367_OFDM_AGC_MANUAL1 0xF086
+#define F367_OFDM_AGC_VAL_LO 0xF08600FF
+
+/* AGC_MANUAL2 */
+#define R367_OFDM_AGC_MANUAL2 0xF087
+#define F367_OFDM_AGC_VAL_HI 0xF087000F
+
+/* AGC_TARG */
+#define R367_OFDM_AGC_TARG 0xF088
+#define F367_OFDM_AGC_TARGET 0xF08800FF
+
+/* AGC_GAIN1 */
+#define R367_OFDM_AGC_GAIN1 0xF089
+#define F367_OFDM_AGC_GAIN_LO 0xF08900FF
+
+/* AGC_GAIN2 */
+#define R367_OFDM_AGC_GAIN2 0xF08A
+#define F367_OFDM_AGC_LOCKED_GAIN2 0xF08A0010
+#define F367_OFDM_AGC_GAIN_HI 0xF08A000F
+
+/* RESERVED_1 */
+#define R367_OFDM_RESERVED_1 0xF08B
+#define F367_OFDM_RESERVED1 0xF08B00FF
+
+/* RESERVED_2 */
+#define R367_OFDM_RESERVED_2 0xF08C
+#define F367_OFDM_RESERVED2 0xF08C00FF
+
+/* RESERVED_3 */
+#define R367_OFDM_RESERVED_3 0xF08D
+#define F367_OFDM_RESERVED3 0xF08D00FF
+
+/* CAS_CTL */
+#define R367_OFDM_CAS_CTL 0xF08E
+#define F367_OFDM_CCS_ENABLE 0xF08E0080
+#define F367_OFDM_ACS_DISABLE 0xF08E0040
+#define F367_OFDM_DAGC_DIS 0xF08E0020
+#define F367_OFDM_DAGC_GAIN 0xF08E0018
+#define F367_OFDM_CCSMU 0xF08E0007
+
+/* CAS_FREQ */
+#define R367_OFDM_CAS_FREQ 0xF08F
+#define F367_OFDM_CCS_FREQ 0xF08F00FF
+
+/* CAS_DAGCGAIN */
+#define R367_OFDM_CAS_DAGCGAIN 0xF090
+#define F367_OFDM_CAS_DAGC_GAIN 0xF09000FF
+
+/* SYR_CTL */
+#define R367_OFDM_SYR_CTL 0xF091
+#define F367_OFDM_SICTH_ENABLE 0xF0910080
+#define F367_OFDM_LONG_ECHO 0xF0910078
+#define F367_OFDM_AUTO_LE_EN 0xF0910004
+#define F367_OFDM_SYR_BYPASS 0xF0910002
+#define F367_OFDM_SYR_TR_DIS 0xF0910001
+
+/* SYR_STAT */
+#define R367_OFDM_SYR_STAT 0xF092
+#define F367_OFDM_SYR_LOCKED_STAT 0xF0920010
+#define F367_OFDM_SYR_MODE 0xF092000C
+#define F367_OFDM_SYR_GUARD 0xF0920003
+
+/* SYR_NCO1 */
+#define R367_OFDM_SYR_NCO1 0xF093
+#define F367_OFDM_SYR_NCO_LO 0xF09300FF
+
+/* SYR_NCO2 */
+#define R367_OFDM_SYR_NCO2 0xF094
+#define F367_OFDM_SYR_NCO_HI 0xF094003F
+
+/* SYR_OFFSET1 */
+#define R367_OFDM_SYR_OFFSET1 0xF095
+#define F367_OFDM_SYR_OFFSET_LO 0xF09500FF
+
+/* SYR_OFFSET2 */
+#define R367_OFDM_SYR_OFFSET2 0xF096
+#define F367_OFDM_SYR_OFFSET_HI 0xF096003F
+
+/* FFT_CTL */
+#define R367_OFDM_FFT_CTL 0xF097
+#define F367_OFDM_SHIFT_FFT_TRIG 0xF0970018
+#define F367_OFDM_FFT_TRIGGER 0xF0970004
+#define F367_OFDM_FFT_MANUAL 0xF0970002
+#define F367_OFDM_IFFT_MODE 0xF0970001
+
+/* SCR_CTL */
+#define R367_OFDM_SCR_CTL 0xF098
+#define F367_OFDM_SYRADJDECAY 0xF0980070
+#define F367_OFDM_SCR_CPEDIS 0xF0980002
+#define F367_OFDM_SCR_DIS 0xF0980001
+
+/* PPM_CTL1 */
+#define R367_OFDM_PPM_CTL1 0xF099
+#define F367_OFDM_PPM_MAXFREQ 0xF0990030
+#define F367_OFDM_PPM_MAXTIM 0xF0990008
+#define F367_OFDM_PPM_INVSEL 0xF0990004
+#define F367_OFDM_PPM_SCATDIS 0xF0990002
+#define F367_OFDM_PPM_BYP 0xF0990001
+
+/* TRL_CTL */
+#define R367_OFDM_TRL_CTL 0xF09A
+#define F367_OFDM_TRL_NOMRATE_LSB 0xF09A0080
+#define F367_OFDM_TRL_GAIN_FACTOR 0xF09A0078
+#define F367_OFDM_TRL_LOOPGAIN 0xF09A0007
+
+/* TRL_NOMRATE1 */
+#define R367_OFDM_TRL_NOMRATE1 0xF09B
+#define F367_OFDM_TRL_NOMRATE_LO 0xF09B00FF
+
+/* TRL_NOMRATE2 */
+#define R367_OFDM_TRL_NOMRATE2 0xF09C
+#define F367_OFDM_TRL_NOMRATE_HI 0xF09C00FF
+
+/* TRL_TIME1 */
+#define R367_OFDM_TRL_TIME1 0xF09D
+#define F367_OFDM_TRL_TOFFSET_LO 0xF09D00FF
+
+/* TRL_TIME2 */
+#define R367_OFDM_TRL_TIME2 0xF09E
+#define F367_OFDM_TRL_TOFFSET_HI 0xF09E00FF
+
+/* CRL_CTL */
+#define R367_OFDM_CRL_CTL 0xF09F
+#define F367_OFDM_CRL_DIS 0xF09F0080
+#define F367_OFDM_CRL_GAIN_FACTOR 0xF09F0078
+#define F367_OFDM_CRL_LOOPGAIN 0xF09F0007
+
+/* CRL_FREQ1 */
+#define R367_OFDM_CRL_FREQ1 0xF0A0
+#define F367_OFDM_CRL_FOFFSET_LO 0xF0A000FF
+
+/* CRL_FREQ2 */
+#define R367_OFDM_CRL_FREQ2 0xF0A1
+#define F367_OFDM_CRL_FOFFSET_HI 0xF0A100FF
+
+/* CRL_FREQ3 */
+#define R367_OFDM_CRL_FREQ3 0xF0A2
+#define F367_OFDM_CRL_FOFFSET_VHI 0xF0A200FF
+
+/* TPS_SFRAME_CTL */
+#define R367_OFDM_TPS_SFRAME_CTL 0xF0A3
+#define F367_OFDM_TPS_SFRAME_SYNC 0xF0A30001
+
+/* CHC_SNR */
+#define R367_OFDM_CHC_SNR 0xF0A4
+#define F367_OFDM_CHCSNR 0xF0A400FF
+
+/* BDI_CTL */
+#define R367_OFDM_BDI_CTL 0xF0A5
+#define F367_OFDM_BDI_LPSEL 0xF0A50002
+#define F367_OFDM_BDI_SERIAL 0xF0A50001
+
+/* DMP_CTL */
+#define R367_OFDM_DMP_CTL 0xF0A6
+#define F367_OFDM_DMP_SCALING_FACTOR 0xF0A6001E
+#define F367_OFDM_DMP_SDDIS 0xF0A60001
+
+/* TPS_RCVD1 */
+#define R367_OFDM_TPS_RCVD1 0xF0A7
+#define F367_OFDM_TPS_CHANGE 0xF0A70040
+#define F367_OFDM_BCH_OK 0xF0A70020
+#define F367_OFDM_TPS_SYNC 0xF0A70010
+#define F367_OFDM_TPS_FRAME 0xF0A70003
+
+/* TPS_RCVD2 */
+#define R367_OFDM_TPS_RCVD2 0xF0A8
+#define F367_OFDM_TPS_HIERMODE 0xF0A80070
+#define F367_OFDM_TPS_CONST 0xF0A80003
+
+/* TPS_RCVD3 */
+#define R367_OFDM_TPS_RCVD3 0xF0A9
+#define F367_OFDM_TPS_LPCODE 0xF0A90070
+#define F367_OFDM_TPS_HPCODE 0xF0A90007
+
+/* TPS_RCVD4 */
+#define R367_OFDM_TPS_RCVD4 0xF0AA
+#define F367_OFDM_TPS_GUARD 0xF0AA0030
+#define F367_OFDM_TPS_MODE 0xF0AA0003
+
+/* TPS_ID_CELL1 */
+#define R367_OFDM_TPS_ID_CELL1 0xF0AB
+#define F367_OFDM_TPS_ID_CELL_LO 0xF0AB00FF
+
+/* TPS_ID_CELL2 */
+#define R367_OFDM_TPS_ID_CELL2 0xF0AC
+#define F367_OFDM_TPS_ID_CELL_HI 0xF0AC00FF
+
+/* TPS_RCVD5_SET1 */
+#define R367_OFDM_TPS_RCVD5_SET1 0xF0AD
+#define F367_OFDM_TPS_NA 0xF0AD00FC
+#define F367_OFDM_TPS_SETFRAME 0xF0AD0003
+
+/* TPS_SET2 */
+#define R367_OFDM_TPS_SET2 0xF0AE
+#define F367_OFDM_TPS_SETHIERMODE 0xF0AE0070
+#define F367_OFDM_TPS_SETCONST 0xF0AE0003
+
+/* TPS_SET3 */
+#define R367_OFDM_TPS_SET3 0xF0AF
+#define F367_OFDM_TPS_SETLPCODE 0xF0AF0070
+#define F367_OFDM_TPS_SETHPCODE 0xF0AF0007
+
+/* TPS_CTL */
+#define R367_OFDM_TPS_CTL 0xF0B0
+#define F367_OFDM_TPS_IMM 0xF0B00004
+#define F367_OFDM_TPS_BCHDIS 0xF0B00002
+#define F367_OFDM_TPS_UPDDIS 0xF0B00001
+
+/* CTL_FFTOSNUM */
+#define R367_OFDM_CTL_FFTOSNUM 0xF0B1
+#define F367_OFDM_SYMBOL_NUMBER 0xF0B1007F
+
+/* TESTSELECT */
+#define R367_OFDM_TESTSELECT 0xF0B2
+#define F367_OFDM_TEST_SELECT 0xF0B2001F
+
+/* MSC_REV */
+#define R367_OFDM_MSC_REV 0xF0B3
+#define F367_OFDM_REV_NUMBER 0xF0B300FF
+
+/* PIR_CTL */
+#define R367_OFDM_PIR_CTL 0xF0B4
+#define F367_OFDM_FREEZE 0xF0B40001
+
+/* SNR_CARRIER1 */
+#define R367_OFDM_SNR_CARRIER1 0xF0B5
+#define F367_OFDM_SNR_CARRIER_LO 0xF0B500FF
+
+/* SNR_CARRIER2 */
+#define R367_OFDM_SNR_CARRIER2 0xF0B6
+#define F367_OFDM_MEAN 0xF0B600C0
+#define F367_OFDM_SNR_CARRIER_HI 0xF0B6001F
+
+/* PPM_CPAMP */
+#define R367_OFDM_PPM_CPAMP 0xF0B7
+#define F367_OFDM_PPM_CPC 0xF0B700FF
+
+/* TSM_AP0 */
+#define R367_OFDM_TSM_AP0 0xF0B8
+#define F367_OFDM_ADDRESS_BYTE_0 0xF0B800FF
+
+/* TSM_AP1 */
+#define R367_OFDM_TSM_AP1 0xF0B9
+#define F367_OFDM_ADDRESS_BYTE_1 0xF0B900FF
+
+/* TSM_AP2 */
+#define R367_OFDM_TSM_AP2 0xF0BA
+#define F367_OFDM_DATA_BYTE_0 0xF0BA00FF
+
+/* TSM_AP3 */
+#define R367_OFDM_TSM_AP3 0xF0BB
+#define F367_OFDM_DATA_BYTE_1 0xF0BB00FF
+
+/* TSM_AP4 */
+#define R367_OFDM_TSM_AP4 0xF0BC
+#define F367_OFDM_DATA_BYTE_2 0xF0BC00FF
+
+/* TSM_AP5 */
+#define R367_OFDM_TSM_AP5 0xF0BD
+#define F367_OFDM_DATA_BYTE_3 0xF0BD00FF
+
+/* TSM_AP6 */
+#define R367_OFDM_TSM_AP6 0xF0BE
+#define F367_OFDM_TSM_AP_6 0xF0BE00FF
+
+/* TSM_AP7 */
+#define R367_OFDM_TSM_AP7 0xF0BF
+#define F367_OFDM_MEM_SELECT_BYTE 0xF0BF00FF
+
+/* TSTRES */
+#define R367_TSTRES 0xF0C0
+#define F367_FRES_DISPLAY 0xF0C00080
+#define F367_FRES_FIFO_AD 0xF0C00020
+#define F367_FRESRS 0xF0C00010
+#define F367_FRESACS 0xF0C00008
+#define F367_FRESFEC 0xF0C00004
+#define F367_FRES_PRIF 0xF0C00002
+#define F367_FRESCORE 0xF0C00001
+
+/* ANACTRL */
+#define R367_ANACTRL 0xF0C1
+#define F367_BYPASS_XTAL 0xF0C10040
+#define F367_BYPASS_PLLXN 0xF0C1000C
+#define F367_DIS_PAD_OSC 0xF0C10002
+#define F367_STDBY_PLLXN 0xF0C10001
+
+/* TSTBUS */
+#define R367_TSTBUS 0xF0C2
+#define F367_TS_BYTE_CLK_INV 0xF0C20080
+#define F367_CFG_IP 0xF0C20070
+#define F367_CFG_TST 0xF0C2000F
+
+/* TSTRATE */
+#define R367_TSTRATE 0xF0C6
+#define F367_FORCEPHA 0xF0C60080
+#define F367_FNEWPHA 0xF0C60010
+#define F367_FROT90 0xF0C60008
+#define F367_FR 0xF0C60007
+
+/* CONSTMODE */
+#define R367_OFDM_CONSTMODE 0xF0CB
+#define F367_OFDM_TST_PRIF 0xF0CB00E0
+#define F367_OFDM_CAR_TYPE 0xF0CB0018
+#define F367_OFDM_CONST_MODE 0xF0CB0003
+
+/* CONSTCARR1 */
+#define R367_OFDM_CONSTCARR1 0xF0CC
+#define F367_OFDM_CONST_CARR_LO 0xF0CC00FF
+
+/* CONSTCARR2 */
+#define R367_OFDM_CONSTCARR2 0xF0CD
+#define F367_OFDM_CONST_CARR_HI 0xF0CD001F
+
+/* ICONSTEL */
+#define R367_OFDM_ICONSTEL 0xF0CE
+#define F367_OFDM_PICONSTEL 0xF0CE00FF
+
+/* QCONSTEL */
+#define R367_OFDM_QCONSTEL 0xF0CF
+#define F367_OFDM_PQCONSTEL 0xF0CF00FF
+
+/* TSTBISTRES0 */
+#define R367_OFDM_TSTBISTRES0 0xF0D0
+#define F367_OFDM_BEND_PPM 0xF0D00080
+#define F367_OFDM_BBAD_PPM 0xF0D00040
+#define F367_OFDM_BEND_FFTW 0xF0D00020
+#define F367_OFDM_BBAD_FFTW 0xF0D00010
+#define F367_OFDM_BEND_FFT_BUF 0xF0D00008
+#define F367_OFDM_BBAD_FFT_BUF 0xF0D00004
+#define F367_OFDM_BEND_SYR 0xF0D00002
+#define F367_OFDM_BBAD_SYR 0xF0D00001
+
+/* TSTBISTRES1 */
+#define R367_OFDM_TSTBISTRES1 0xF0D1
+#define F367_OFDM_BEND_CHC_CP 0xF0D10080
+#define F367_OFDM_BBAD_CHC_CP 0xF0D10040
+#define F367_OFDM_BEND_CHCI 0xF0D10020
+#define F367_OFDM_BBAD_CHCI 0xF0D10010
+#define F367_OFDM_BEND_BDI 0xF0D10008
+#define F367_OFDM_BBAD_BDI 0xF0D10004
+#define F367_OFDM_BEND_SDI 0xF0D10002
+#define F367_OFDM_BBAD_SDI 0xF0D10001
+
+/* TSTBISTRES2 */
+#define R367_OFDM_TSTBISTRES2 0xF0D2
+#define F367_OFDM_BEND_CHC_INC 0xF0D20080
+#define F367_OFDM_BBAD_CHC_INC 0xF0D20040
+#define F367_OFDM_BEND_CHC_SPP 0xF0D20020
+#define F367_OFDM_BBAD_CHC_SPP 0xF0D20010
+#define F367_OFDM_BEND_CHC_CPP 0xF0D20008
+#define F367_OFDM_BBAD_CHC_CPP 0xF0D20004
+#define F367_OFDM_BEND_CHC_SP 0xF0D20002
+#define F367_OFDM_BBAD_CHC_SP 0xF0D20001
+
+/* TSTBISTRES3 */
+#define R367_OFDM_TSTBISTRES3 0xF0D3
+#define F367_OFDM_BEND_QAM 0xF0D30080
+#define F367_OFDM_BBAD_QAM 0xF0D30040
+#define F367_OFDM_BEND_SFEC_VIT 0xF0D30020
+#define F367_OFDM_BBAD_SFEC_VIT 0xF0D30010
+#define F367_OFDM_BEND_SFEC_DLINE 0xF0D30008
+#define F367_OFDM_BBAD_SFEC_DLINE 0xF0D30004
+#define F367_OFDM_BEND_SFEC_HW 0xF0D30002
+#define F367_OFDM_BBAD_SFEC_HW 0xF0D30001
+
+/* RF_AGC1 */
+#define R367_RF_AGC1 0xF0D4
+#define F367_RF_AGC1_LEVEL_HI 0xF0D400FF
+
+/* RF_AGC2 */
+#define R367_RF_AGC2 0xF0D5
+#define F367_REF_ADGP 0xF0D50080
+#define F367_STDBY_ADCGP 0xF0D50020
+#define F367_CHANNEL_SEL 0xF0D5001C
+#define F367_RF_AGC1_LEVEL_LO 0xF0D50003
+
+/* ANADIGCTRL */
+#define R367_ANADIGCTRL 0xF0D7
+#define F367_SEL_CLKDEM 0xF0D70020
+#define F367_EN_BUFFER_Q 0xF0D70010
+#define F367_EN_BUFFER_I 0xF0D70008
+#define F367_ADC_RIS_EGDE 0xF0D70004
+#define F367_SGN_ADC 0xF0D70002
+#define F367_SEL_AD12_SYNC 0xF0D70001
+
+/* PLLMDIV */
+#define R367_PLLMDIV 0xF0D8
+#define F367_PLL_MDIV 0xF0D800FF
+
+/* PLLNDIV */
+#define R367_PLLNDIV 0xF0D9
+#define F367_PLL_NDIV 0xF0D900FF
+
+/* PLLSETUP */
+#define R367_PLLSETUP 0xF0DA
+#define F367_PLL_PDIV 0xF0DA0070
+#define F367_PLL_KDIV 0xF0DA000F
+
+/* DUAL_AD12 */
+#define R367_DUAL_AD12 0xF0DB
+#define F367_FS20M 0xF0DB0020
+#define F367_FS50M 0xF0DB0010
+#define F367_INMODE0 0xF0DB0008
+#define F367_POFFQ 0xF0DB0004
+#define F367_POFFI 0xF0DB0002
+#define F367_INMODE1 0xF0DB0001
+
+/* TSTBIST */
+#define R367_TSTBIST 0xF0DC
+#define F367_TST_BYP_CLK 0xF0DC0080
+#define F367_TST_GCLKENA_STD 0xF0DC0040
+#define F367_TST_GCLKENA 0xF0DC0020
+#define F367_TST_MEMBIST 0xF0DC001F
+
+/* PAD_COMP_CTRL */
+#define R367_PAD_COMP_CTRL 0xF0DD
+#define F367_COMPTQ 0xF0DD0010
+#define F367_COMPEN 0xF0DD0008
+#define F367_FREEZE2 0xF0DD0004
+#define F367_SLEEP_INHBT 0xF0DD0002
+#define F367_CHIP_SLEEP 0xF0DD0001
+
+/* PAD_COMP_WR */
+#define R367_PAD_COMP_WR 0xF0DE
+#define F367_WR_ASRC 0xF0DE007F
+
+/* PAD_COMP_RD */
+#define R367_PAD_COMP_RD 0xF0DF
+#define F367_COMPOK 0xF0DF0080
+#define F367_RD_ASRC 0xF0DF007F
+
+/* SYR_TARGET_FFTADJT_MSB */
+#define R367_OFDM_SYR_TARGET_FFTADJT_MSB 0xF100
+#define F367_OFDM_SYR_START 0xF1000080
+#define F367_OFDM_SYR_TARGET_FFTADJ_HI 0xF100000F
+
+/* SYR_TARGET_FFTADJT_LSB */
+#define R367_OFDM_SYR_TARGET_FFTADJT_LSB 0xF101
+#define F367_OFDM_SYR_TARGET_FFTADJ_LO 0xF10100FF
+
+/* SYR_TARGET_CHCADJT_MSB */
+#define R367_OFDM_SYR_TARGET_CHCADJT_MSB 0xF102
+#define F367_OFDM_SYR_TARGET_CHCADJ_HI 0xF102000F
+
+/* SYR_TARGET_CHCADJT_LSB */
+#define R367_OFDM_SYR_TARGET_CHCADJT_LSB 0xF103
+#define F367_OFDM_SYR_TARGET_CHCADJ_LO 0xF10300FF
+
+/* SYR_FLAG */
+#define R367_OFDM_SYR_FLAG 0xF104
+#define F367_OFDM_TRIG_FLG1 0xF1040080
+#define F367_OFDM_TRIG_FLG0 0xF1040040
+#define F367_OFDM_FFT_FLG1 0xF1040008
+#define F367_OFDM_FFT_FLG0 0xF1040004
+#define F367_OFDM_CHC_FLG1 0xF1040002
+#define F367_OFDM_CHC_FLG0 0xF1040001
+
+/* CRL_TARGET1 */
+#define R367_OFDM_CRL_TARGET1 0xF105
+#define F367_OFDM_CRL_START 0xF1050080
+#define F367_OFDM_CRL_TARGET_VHI 0xF105000F
+
+/* CRL_TARGET2 */
+#define R367_OFDM_CRL_TARGET2 0xF106
+#define F367_OFDM_CRL_TARGET_HI 0xF10600FF
+
+/* CRL_TARGET3 */
+#define R367_OFDM_CRL_TARGET3 0xF107
+#define F367_OFDM_CRL_TARGET_LO 0xF10700FF
+
+/* CRL_TARGET4 */
+#define R367_OFDM_CRL_TARGET4 0xF108
+#define F367_OFDM_CRL_TARGET_VLO 0xF10800FF
+
+/* CRL_FLAG */
+#define R367_OFDM_CRL_FLAG 0xF109
+#define F367_OFDM_CRL_FLAG1 0xF1090002
+#define F367_OFDM_CRL_FLAG0 0xF1090001
+
+/* TRL_TARGET1 */
+#define R367_OFDM_TRL_TARGET1 0xF10A
+#define F367_OFDM_TRL_TARGET_HI 0xF10A00FF
+
+/* TRL_TARGET2 */
+#define R367_OFDM_TRL_TARGET2 0xF10B
+#define F367_OFDM_TRL_TARGET_LO 0xF10B00FF
+
+/* TRL_CHC */
+#define R367_OFDM_TRL_CHC 0xF10C
+#define F367_OFDM_TRL_START 0xF10C0080
+#define F367_OFDM_CHC_START 0xF10C0040
+#define F367_OFDM_TRL_FLAG1 0xF10C0002
+#define F367_OFDM_TRL_FLAG0 0xF10C0001
+
+/* CHC_SNR_TARG */
+#define R367_OFDM_CHC_SNR_TARG 0xF10D
+#define F367_OFDM_CHC_SNR_TARGET 0xF10D00FF
+
+/* TOP_TRACK */
+#define R367_OFDM_TOP_TRACK 0xF10E
+#define F367_OFDM_TOP_START 0xF10E0080
+#define F367_OFDM_FIRST_FLAG 0xF10E0070
+#define F367_OFDM_TOP_FLAG1 0xF10E0008
+#define F367_OFDM_TOP_FLAG0 0xF10E0004
+#define F367_OFDM_CHC_FLAG1 0xF10E0002
+#define F367_OFDM_CHC_FLAG0 0xF10E0001
+
+/* TRACKER_FREE1 */
+#define R367_OFDM_TRACKER_FREE1 0xF10F
+#define F367_OFDM_TRACKER_FREE_1 0xF10F00FF
+
+/* ERROR_CRL1 */
+#define R367_OFDM_ERROR_CRL1 0xF110
+#define F367_OFDM_ERROR_CRL_VHI 0xF11000FF
+
+/* ERROR_CRL2 */
+#define R367_OFDM_ERROR_CRL2 0xF111
+#define F367_OFDM_ERROR_CRL_HI 0xF11100FF
+
+/* ERROR_CRL3 */
+#define R367_OFDM_ERROR_CRL3 0xF112
+#define F367_OFDM_ERROR_CRL_LOI 0xF11200FF
+
+/* ERROR_CRL4 */
+#define R367_OFDM_ERROR_CRL4 0xF113
+#define F367_OFDM_ERROR_CRL_VLO 0xF11300FF
+
+/* DEC_NCO1 */
+#define R367_OFDM_DEC_NCO1 0xF114
+#define F367_OFDM_DEC_NCO_VHI 0xF11400FF
+
+/* DEC_NCO2 */
+#define R367_OFDM_DEC_NCO2 0xF115
+#define F367_OFDM_DEC_NCO_HI 0xF11500FF
+
+/* DEC_NCO3 */
+#define R367_OFDM_DEC_NCO3 0xF116
+#define F367_OFDM_DEC_NCO_LO 0xF11600FF
+
+/* SNR */
+#define R367_OFDM_SNR 0xF117
+#define F367_OFDM_SNRATIO 0xF11700FF
+
+/* SYR_FFTADJ1 */
+#define R367_OFDM_SYR_FFTADJ1 0xF118
+#define F367_OFDM_SYR_FFTADJ_HI 0xF11800FF
+
+/* SYR_FFTADJ2 */
+#define R367_OFDM_SYR_FFTADJ2 0xF119
+#define F367_OFDM_SYR_FFTADJ_LO 0xF11900FF
+
+/* SYR_CHCADJ1 */
+#define R367_OFDM_SYR_CHCADJ1 0xF11A
+#define F367_OFDM_SYR_CHCADJ_HI 0xF11A00FF
+
+/* SYR_CHCADJ2 */
+#define R367_OFDM_SYR_CHCADJ2 0xF11B
+#define F367_OFDM_SYR_CHCADJ_LO 0xF11B00FF
+
+/* SYR_OFF */
+#define R367_OFDM_SYR_OFF 0xF11C
+#define F367_OFDM_SYR_OFFSET 0xF11C00FF
+
+/* PPM_OFFSET1 */
+#define R367_OFDM_PPM_OFFSET1 0xF11D
+#define F367_OFDM_PPM_OFFSET_HI 0xF11D00FF
+
+/* PPM_OFFSET2 */
+#define R367_OFDM_PPM_OFFSET2 0xF11E
+#define F367_OFDM_PPM_OFFSET_LO 0xF11E00FF
+
+/* TRACKER_FREE2 */
+#define R367_OFDM_TRACKER_FREE2 0xF11F
+#define F367_OFDM_TRACKER_FREE_2 0xF11F00FF
+
+/* DEBG_LT10 */
+#define R367_OFDM_DEBG_LT10 0xF120
+#define F367_OFDM_DEBUG_LT10 0xF12000FF
+
+/* DEBG_LT11 */
+#define R367_OFDM_DEBG_LT11 0xF121
+#define F367_OFDM_DEBUG_LT11 0xF12100FF
+
+/* DEBG_LT12 */
+#define R367_OFDM_DEBG_LT12 0xF122
+#define F367_OFDM_DEBUG_LT12 0xF12200FF
+
+/* DEBG_LT13 */
+#define R367_OFDM_DEBG_LT13 0xF123
+#define F367_OFDM_DEBUG_LT13 0xF12300FF
+
+/* DEBG_LT14 */
+#define R367_OFDM_DEBG_LT14 0xF124
+#define F367_OFDM_DEBUG_LT14 0xF12400FF
+
+/* DEBG_LT15 */
+#define R367_OFDM_DEBG_LT15 0xF125
+#define F367_OFDM_DEBUG_LT15 0xF12500FF
+
+/* DEBG_LT16 */
+#define R367_OFDM_DEBG_LT16 0xF126
+#define F367_OFDM_DEBUG_LT16 0xF12600FF
+
+/* DEBG_LT17 */
+#define R367_OFDM_DEBG_LT17 0xF127
+#define F367_OFDM_DEBUG_LT17 0xF12700FF
+
+/* DEBG_LT18 */
+#define R367_OFDM_DEBG_LT18 0xF128
+#define F367_OFDM_DEBUG_LT18 0xF12800FF
+
+/* DEBG_LT19 */
+#define R367_OFDM_DEBG_LT19 0xF129
+#define F367_OFDM_DEBUG_LT19 0xF12900FF
+
+/* DEBG_LT1A */
+#define R367_OFDM_DEBG_LT1A 0xF12A
+#define F367_OFDM_DEBUG_LT1A 0xF12A00FF
+
+/* DEBG_LT1B */
+#define R367_OFDM_DEBG_LT1B 0xF12B
+#define F367_OFDM_DEBUG_LT1B 0xF12B00FF
+
+/* DEBG_LT1C */
+#define R367_OFDM_DEBG_LT1C 0xF12C
+#define F367_OFDM_DEBUG_LT1C 0xF12C00FF
+
+/* DEBG_LT1D */
+#define R367_OFDM_DEBG_LT1D 0xF12D
+#define F367_OFDM_DEBUG_LT1D 0xF12D00FF
+
+/* DEBG_LT1E */
+#define R367_OFDM_DEBG_LT1E 0xF12E
+#define F367_OFDM_DEBUG_LT1E 0xF12E00FF
+
+/* DEBG_LT1F */
+#define R367_OFDM_DEBG_LT1F 0xF12F
+#define F367_OFDM_DEBUG_LT1F 0xF12F00FF
+
+/* RCCFGH */
+#define R367_OFDM_RCCFGH 0xF200
+#define F367_OFDM_TSRCFIFO_DVBCI 0xF2000080
+#define F367_OFDM_TSRCFIFO_SERIAL 0xF2000040
+#define F367_OFDM_TSRCFIFO_DISABLE 0xF2000020
+#define F367_OFDM_TSFIFO_2TORC 0xF2000010
+#define F367_OFDM_TSRCFIFO_HSGNLOUT 0xF2000008
+#define F367_OFDM_TSRCFIFO_ERRMODE 0xF2000006
+#define F367_OFDM_RCCFGH_0 0xF2000001
+
+/* RCCFGM */
+#define R367_OFDM_RCCFGM 0xF201
+#define F367_OFDM_TSRCFIFO_MANSPEED 0xF20100C0
+#define F367_OFDM_TSRCFIFO_PERMDATA 0xF2010020
+#define F367_OFDM_TSRCFIFO_NONEWSGNL 0xF2010010
+#define F367_OFDM_RCBYTE_OVERSAMPLING 0xF201000E
+#define F367_OFDM_TSRCFIFO_INVDATA 0xF2010001
+
+/* RCCFGL */
+#define R367_OFDM_RCCFGL 0xF202
+#define F367_OFDM_TSRCFIFO_BCLKDEL1CK 0xF20200C0
+#define F367_OFDM_RCCFGL_5 0xF2020020
+#define F367_OFDM_TSRCFIFO_DUTY50 0xF2020010
+#define F367_OFDM_TSRCFIFO_NSGNL2DATA 0xF2020008
+#define F367_OFDM_TSRCFIFO_DISSERMUX 0xF2020004
+#define F367_OFDM_RCCFGL_1 0xF2020002
+#define F367_OFDM_TSRCFIFO_STOPCKDIS 0xF2020001
+
+/* RCINSDELH */
+#define R367_OFDM_RCINSDELH 0xF203
+#define F367_OFDM_TSRCDEL_SYNCBYTE 0xF2030080
+#define F367_OFDM_TSRCDEL_XXHEADER 0xF2030040
+#define F367_OFDM_TSRCDEL_BBHEADER 0xF2030020
+#define F367_OFDM_TSRCDEL_DATAFIELD 0xF2030010
+#define F367_OFDM_TSRCINSDEL_ISCR 0xF2030008
+#define F367_OFDM_TSRCINSDEL_NPD 0xF2030004
+#define F367_OFDM_TSRCINSDEL_RSPARITY 0xF2030002
+#define F367_OFDM_TSRCINSDEL_CRC8 0xF2030001
+
+/* RCINSDELM */
+#define R367_OFDM_RCINSDELM 0xF204
+#define F367_OFDM_TSRCINS_BBPADDING 0xF2040080
+#define F367_OFDM_TSRCINS_BCHFEC 0xF2040040
+#define F367_OFDM_TSRCINS_LDPCFEC 0xF2040020
+#define F367_OFDM_TSRCINS_EMODCOD 0xF2040010
+#define F367_OFDM_TSRCINS_TOKEN 0xF2040008
+#define F367_OFDM_TSRCINS_XXXERR 0xF2040004
+#define F367_OFDM_TSRCINS_MATYPE 0xF2040002
+#define F367_OFDM_TSRCINS_UPL 0xF2040001
+
+/* RCINSDELL */
+#define R367_OFDM_RCINSDELL 0xF205
+#define F367_OFDM_TSRCINS_DFL 0xF2050080
+#define F367_OFDM_TSRCINS_SYNCD 0xF2050040
+#define F367_OFDM_TSRCINS_BLOCLEN 0xF2050020
+#define F367_OFDM_TSRCINS_SIGPCOUNT 0xF2050010
+#define F367_OFDM_TSRCINS_FIFO 0xF2050008
+#define F367_OFDM_TSRCINS_REALPACK 0xF2050004
+#define F367_OFDM_TSRCINS_TSCONFIG 0xF2050002
+#define F367_OFDM_TSRCINS_LATENCY 0xF2050001
+
+/* RCSTATUS */
+#define R367_OFDM_RCSTATUS 0xF206
+#define F367_OFDM_TSRCFIFO_LINEOK 0xF2060080
+#define F367_OFDM_TSRCFIFO_ERROR 0xF2060040
+#define F367_OFDM_TSRCFIFO_DATA7 0xF2060020
+#define F367_OFDM_RCSTATUS_4 0xF2060010
+#define F367_OFDM_TSRCFIFO_DEMODSEL 0xF2060008
+#define F367_OFDM_TSRC1FIFOSPEED_STORE 0xF2060004
+#define F367_OFDM_RCSTATUS_1 0xF2060002
+#define F367_OFDM_TSRCSERIAL_IMPOSSIBLE 0xF2060001
+
+/* RCSPEED */
+#define R367_OFDM_RCSPEED 0xF207
+#define F367_OFDM_TSRCFIFO_OUTSPEED 0xF20700FF
+
+/* RCDEBUGM */
+#define R367_OFDM_RCDEBUGM 0xF208
+#define F367_OFDM_SD_UNSYNC 0xF2080080
+#define F367_OFDM_ULFLOCK_DETECTM 0xF2080040
+#define F367_OFDM_SUL_SELECTOS 0xF2080020
+#define F367_OFDM_DILUL_NOSCRBLE 0xF2080010
+#define F367_OFDM_NUL_SCRB 0xF2080008
+#define F367_OFDM_UL_SCRB 0xF2080004
+#define F367_OFDM_SCRAULBAD 0xF2080002
+#define F367_OFDM_SCRAUL_UNSYNC 0xF2080001
+
+/* RCDEBUGL */
+#define R367_OFDM_RCDEBUGL 0xF209
+#define F367_OFDM_RS_ERR 0xF2090080
+#define F367_OFDM_LLFLOCK_DETECTM 0xF2090040
+#define F367_OFDM_NOT_SUL_SELECTOS 0xF2090020
+#define F367_OFDM_DILLL_NOSCRBLE 0xF2090010
+#define F367_OFDM_NLL_SCRB 0xF2090008
+#define F367_OFDM_LL_SCRB 0xF2090004
+#define F367_OFDM_SCRALLBAD 0xF2090002
+#define F367_OFDM_SCRALL_UNSYNC 0xF2090001
+
+/* RCOBSCFG */
+#define R367_OFDM_RCOBSCFG 0xF20A
+#define F367_OFDM_TSRCFIFO_OBSCFG 0xF20A00FF
+
+/* RCOBSM */
+#define R367_OFDM_RCOBSM 0xF20B
+#define F367_OFDM_TSRCFIFO_OBSDATA_HI 0xF20B00FF
+
+/* RCOBSL */
+#define R367_OFDM_RCOBSL 0xF20C
+#define F367_OFDM_TSRCFIFO_OBSDATA_LO 0xF20C00FF
+
+/* RCFECSPY */
+#define R367_OFDM_RCFECSPY 0xF210
+#define F367_OFDM_SPYRC_ENABLE 0xF2100080
+#define F367_OFDM_RCNO_SYNCBYTE 0xF2100040
+#define F367_OFDM_RCSERIAL_MODE 0xF2100020
+#define F367_OFDM_RCUNUSUAL_PACKET 0xF2100010
+#define F367_OFDM_BERRCMETER_DATAMODE 0xF210000C
+#define F367_OFDM_BERRCMETER_LMODE 0xF2100002
+#define F367_OFDM_BERRCMETER_RESET 0xF2100001
+
+/* RCFSPYCFG */
+#define R367_OFDM_RCFSPYCFG 0xF211
+#define F367_OFDM_FECSPYRC_INPUT 0xF21100C0
+#define F367_OFDM_RCRST_ON_ERROR 0xF2110020
+#define F367_OFDM_RCONE_SHOT 0xF2110010
+#define F367_OFDM_RCI2C_MODE 0xF211000C
+#define F367_OFDM_SPYRC_HSTERESIS 0xF2110003
+
+/* RCFSPYDATA */
+#define R367_OFDM_RCFSPYDATA 0xF212
+#define F367_OFDM_SPYRC_STUFFING 0xF2120080
+#define F367_OFDM_RCNOERR_PKTJITTER 0xF2120040
+#define F367_OFDM_SPYRC_CNULLPKT 0xF2120020
+#define F367_OFDM_SPYRC_OUTDATA_MODE 0xF212001F
+
+/* RCFSPYOUT */
+#define R367_OFDM_RCFSPYOUT 0xF213
+#define F367_OFDM_FSPYRC_DIRECT 0xF2130080
+#define F367_OFDM_RCFSPYOUT_6 0xF2130040
+#define F367_OFDM_SPYRC_OUTDATA_BUS 0xF2130038
+#define F367_OFDM_RCSTUFF_MODE 0xF2130007
+
+/* RCFSTATUS */
+#define R367_OFDM_RCFSTATUS 0xF214
+#define F367_OFDM_SPYRC_ENDSIM 0xF2140080
+#define F367_OFDM_RCVALID_SIM 0xF2140040
+#define F367_OFDM_RCFOUND_SIGNAL 0xF2140020
+#define F367_OFDM_RCDSS_SYNCBYTE 0xF2140010
+#define F367_OFDM_RCRESULT_STATE 0xF214000F
+
+/* RCFGOODPACK */
+#define R367_OFDM_RCFGOODPACK 0xF215
+#define F367_OFDM_RCGOOD_PACKET 0xF21500FF
+
+/* RCFPACKCNT */
+#define R367_OFDM_RCFPACKCNT 0xF216
+#define F367_OFDM_RCPACKET_COUNTER 0xF21600FF
+
+/* RCFSPYMISC */
+#define R367_OFDM_RCFSPYMISC 0xF217
+#define F367_OFDM_RCLABEL_COUNTER 0xF21700FF
+
+/* RCFBERCPT4 */
+#define R367_OFDM_RCFBERCPT4 0xF218
+#define F367_OFDM_FBERRCMETER_CPT_MMMMSB 0xF21800FF
+
+/* RCFBERCPT3 */
+#define R367_OFDM_RCFBERCPT3 0xF219
+#define F367_OFDM_FBERRCMETER_CPT_MMMSB 0xF21900FF
+
+/* RCFBERCPT2 */
+#define R367_OFDM_RCFBERCPT2 0xF21A
+#define F367_OFDM_FBERRCMETER_CPT_MMSB 0xF21A00FF
+
+/* RCFBERCPT1 */
+#define R367_OFDM_RCFBERCPT1 0xF21B
+#define F367_OFDM_FBERRCMETER_CPT_MSB 0xF21B00FF
+
+/* RCFBERCPT0 */
+#define R367_OFDM_RCFBERCPT0 0xF21C
+#define F367_OFDM_FBERRCMETER_CPT_LSB 0xF21C00FF
+
+/* RCFBERERR2 */
+#define R367_OFDM_RCFBERERR2 0xF21D
+#define F367_OFDM_FBERRCMETER_ERR_HI 0xF21D00FF
+
+/* RCFBERERR1 */
+#define R367_OFDM_RCFBERERR1 0xF21E
+#define F367_OFDM_FBERRCMETER_ERR 0xF21E00FF
+
+/* RCFBERERR0 */
+#define R367_OFDM_RCFBERERR0 0xF21F
+#define F367_OFDM_FBERRCMETER_ERR_LO 0xF21F00FF
+
+/* RCFSTATESM */
+#define R367_OFDM_RCFSTATESM 0xF220
+#define F367_OFDM_RCRSTATE_F 0xF2200080
+#define F367_OFDM_RCRSTATE_E 0xF2200040
+#define F367_OFDM_RCRSTATE_D 0xF2200020
+#define F367_OFDM_RCRSTATE_C 0xF2200010
+#define F367_OFDM_RCRSTATE_B 0xF2200008
+#define F367_OFDM_RCRSTATE_A 0xF2200004
+#define F367_OFDM_RCRSTATE_9 0xF2200002
+#define F367_OFDM_RCRSTATE_8 0xF2200001
+
+/* RCFSTATESL */
+#define R367_OFDM_RCFSTATESL 0xF221
+#define F367_OFDM_RCRSTATE_7 0xF2210080
+#define F367_OFDM_RCRSTATE_6 0xF2210040
+#define F367_OFDM_RCRSTATE_5 0xF2210020
+#define F367_OFDM_RCRSTATE_4 0xF2210010
+#define F367_OFDM_RCRSTATE_3 0xF2210008
+#define F367_OFDM_RCRSTATE_2 0xF2210004
+#define F367_OFDM_RCRSTATE_1 0xF2210002
+#define F367_OFDM_RCRSTATE_0 0xF2210001
+
+/* RCFSPYBER */
+#define R367_OFDM_RCFSPYBER 0xF222
+#define F367_OFDM_RCFSPYBER_7 0xF2220080
+#define F367_OFDM_SPYRCOBS_XORREAD 0xF2220040
+#define F367_OFDM_FSPYRCBER_OBSMODE 0xF2220020
+#define F367_OFDM_FSPYRCBER_SYNCBYT 0xF2220010
+#define F367_OFDM_FSPYRCBER_UNSYNC 0xF2220008
+#define F367_OFDM_FSPYRCBER_CTIME 0xF2220007
+
+/* RCFSPYDISTM */
+#define R367_OFDM_RCFSPYDISTM 0xF223
+#define F367_OFDM_RCPKTTIME_DISTANCE_HI 0xF22300FF
+
+/* RCFSPYDISTL */
+#define R367_OFDM_RCFSPYDISTL 0xF224
+#define F367_OFDM_RCPKTTIME_DISTANCE_LO 0xF22400FF
+
+/* RCFSPYOBS7 */
+#define R367_OFDM_RCFSPYOBS7 0xF228
+#define F367_OFDM_RCSPYOBS_SPYFAIL 0xF2280080
+#define F367_OFDM_RCSPYOBS_SPYFAIL1 0xF2280040
+#define F367_OFDM_RCSPYOBS_ERROR 0xF2280020
+#define F367_OFDM_RCSPYOBS_STROUT 0xF2280010
+#define F367_OFDM_RCSPYOBS_RESULTSTATE1 0xF228000F
+
+/* RCFSPYOBS6 */
+#define R367_OFDM_RCFSPYOBS6 0xF229
+#define F367_OFDM_RCSPYOBS_RESULTSTATE0 0xF22900F0
+#define F367_OFDM_RCSPYOBS_RESULTSTATEM1 0xF229000F
+
+/* RCFSPYOBS5 */
+#define R367_OFDM_RCFSPYOBS5 0xF22A
+#define F367_OFDM_RCSPYOBS_BYTEOFPACKET1 0xF22A00FF
+
+/* RCFSPYOBS4 */
+#define R367_OFDM_RCFSPYOBS4 0xF22B
+#define F367_OFDM_RCSPYOBS_BYTEVALUE1 0xF22B00FF
+
+/* RCFSPYOBS3 */
+#define R367_OFDM_RCFSPYOBS3 0xF22C
+#define F367_OFDM_RCSPYOBS_DATA1 0xF22C00FF
+
+/* RCFSPYOBS2 */
+#define R367_OFDM_RCFSPYOBS2 0xF22D
+#define F367_OFDM_RCSPYOBS_DATA0 0xF22D00FF
+
+/* RCFSPYOBS1 */
+#define R367_OFDM_RCFSPYOBS1 0xF22E
+#define F367_OFDM_RCSPYOBS_DATAM1 0xF22E00FF
+
+/* RCFSPYOBS0 */
+#define R367_OFDM_RCFSPYOBS0 0xF22F
+#define F367_OFDM_RCSPYOBS_DATAM2 0xF22F00FF
+
+/* TSGENERAL */
+#define R367_TSGENERAL 0xF230
+#define F367_TSGENERAL_7 0xF2300080
+#define F367_TSGENERAL_6 0xF2300040
+#define F367_TSFIFO_BCLK1ALL 0xF2300020
+#define F367_TSGENERAL_4 0xF2300010
+#define F367_MUXSTREAM_OUTMODE 0xF2300008
+#define F367_TSFIFO_PERMPARAL 0xF2300006
+#define F367_RST_REEDSOLO 0xF2300001
+
+/* RC1SPEED */
+#define R367_RC1SPEED 0xF231
+#define F367_TSRCFIFO1_OUTSPEED 0xF23100FF
+
+/* TSGSTATUS */
+#define R367_TSGSTATUS 0xF232
+#define F367_TSGSTATUS_7 0xF2320080
+#define F367_TSGSTATUS_6 0xF2320040
+#define F367_RSMEM_FULL 0xF2320020
+#define F367_RS_MULTCALC 0xF2320010
+#define F367_RSIN_OVERTIME 0xF2320008
+#define F367_TSFIFO3_DEMODSEL 0xF2320004
+#define F367_TSFIFO2_DEMODSEL 0xF2320002
+#define F367_TSFIFO1_DEMODSEL 0xF2320001
+
+
+/* FECM */
+#define R367_OFDM_FECM 0xF233
+#define F367_OFDM_DSS_DVB 0xF2330080
+#define F367_OFDM_DEMOD_BYPASS 0xF2330040
+#define F367_OFDM_CMP_SLOWMODE 0xF2330020
+#define F367_OFDM_DSS_SRCH 0xF2330010
+#define F367_OFDM_FECM_3 0xF2330008
+#define F367_OFDM_DIFF_MODEVIT 0xF2330004
+#define F367_OFDM_SYNCVIT 0xF2330002
+#define F367_OFDM_I2CSYM 0xF2330001
+
+/* VTH12 */
+#define R367_OFDM_VTH12 0xF234
+#define F367_OFDM_VTH_12 0xF23400FF
+
+/* VTH23 */
+#define R367_OFDM_VTH23 0xF235
+#define F367_OFDM_VTH_23 0xF23500FF
+
+/* VTH34 */
+#define R367_OFDM_VTH34 0xF236
+#define F367_OFDM_VTH_34 0xF23600FF
+
+/* VTH56 */
+#define R367_OFDM_VTH56 0xF237
+#define F367_OFDM_VTH_56 0xF23700FF
+
+/* VTH67 */
+#define R367_OFDM_VTH67 0xF238
+#define F367_OFDM_VTH_67 0xF23800FF
+
+/* VTH78 */
+#define R367_OFDM_VTH78 0xF239
+#define F367_OFDM_VTH_78 0xF23900FF
+
+/* VITCURPUN */
+#define R367_OFDM_VITCURPUN 0xF23A
+#define F367_OFDM_VIT_MAPPING 0xF23A00E0
+#define F367_OFDM_VIT_CURPUN 0xF23A001F
+
+/* VERROR */
+#define R367_OFDM_VERROR 0xF23B
+#define F367_OFDM_REGERR_VIT 0xF23B00FF
+
+/* PRVIT */
+#define R367_OFDM_PRVIT 0xF23C
+#define F367_OFDM_PRVIT_7 0xF23C0080
+#define F367_OFDM_DIS_VTHLOCK 0xF23C0040
+#define F367_OFDM_E7_8VIT 0xF23C0020
+#define F367_OFDM_E6_7VIT 0xF23C0010
+#define F367_OFDM_E5_6VIT 0xF23C0008
+#define F367_OFDM_E3_4VIT 0xF23C0004
+#define F367_OFDM_E2_3VIT 0xF23C0002
+#define F367_OFDM_E1_2VIT 0xF23C0001
+
+/* VAVSRVIT */
+#define R367_OFDM_VAVSRVIT 0xF23D
+#define F367_OFDM_AMVIT 0xF23D0080
+#define F367_OFDM_FROZENVIT 0xF23D0040
+#define F367_OFDM_SNVIT 0xF23D0030
+#define F367_OFDM_TOVVIT 0xF23D000C
+#define F367_OFDM_HYPVIT 0xF23D0003
+
+/* VSTATUSVIT */
+#define R367_OFDM_VSTATUSVIT 0xF23E
+#define F367_OFDM_VITERBI_ON 0xF23E0080
+#define F367_OFDM_END_LOOPVIT 0xF23E0040
+#define F367_OFDM_VITERBI_DEPRF 0xF23E0020
+#define F367_OFDM_PRFVIT 0xF23E0010
+#define F367_OFDM_LOCKEDVIT 0xF23E0008
+#define F367_OFDM_VITERBI_DELOCK 0xF23E0004
+#define F367_OFDM_VIT_DEMODSEL 0xF23E0002
+#define F367_OFDM_VITERBI_COMPOUT 0xF23E0001
+
+/* VTHINUSE */
+#define R367_OFDM_VTHINUSE 0xF23F
+#define F367_OFDM_VIT_INUSE 0xF23F00FF
+
+/* KDIV12 */
+#define R367_OFDM_KDIV12 0xF240
+#define F367_OFDM_KDIV12_MANUAL 0xF2400080
+#define F367_OFDM_K_DIVIDER_12 0xF240007F
+
+/* KDIV23 */
+#define R367_OFDM_KDIV23 0xF241
+#define F367_OFDM_KDIV23_MANUAL 0xF2410080
+#define F367_OFDM_K_DIVIDER_23 0xF241007F
+
+/* KDIV34 */
+#define R367_OFDM_KDIV34 0xF242
+#define F367_OFDM_KDIV34_MANUAL 0xF2420080
+#define F367_OFDM_K_DIVIDER_34 0xF242007F
+
+/* KDIV56 */
+#define R367_OFDM_KDIV56 0xF243
+#define F367_OFDM_KDIV56_MANUAL 0xF2430080
+#define F367_OFDM_K_DIVIDER_56 0xF243007F
+
+/* KDIV67 */
+#define R367_OFDM_KDIV67 0xF244
+#define F367_OFDM_KDIV67_MANUAL 0xF2440080
+#define F367_OFDM_K_DIVIDER_67 0xF244007F
+
+/* KDIV78 */
+#define R367_OFDM_KDIV78 0xF245
+#define F367_OFDM_KDIV78_MANUAL 0xF2450080
+#define F367_OFDM_K_DIVIDER_78 0xF245007F
+
+/* SIGPOWER */
+#define R367_OFDM_SIGPOWER 0xF246
+#define F367_OFDM_SIGPOWER_MANUAL 0xF2460080
+#define F367_OFDM_SIG_POWER 0xF246007F
+
+/* DEMAPVIT */
+#define R367_OFDM_DEMAPVIT 0xF247
+#define F367_OFDM_DEMAPVIT_7 0xF2470080
+#define F367_OFDM_K_DIVIDER_VIT 0xF247007F
+
+/* VITSCALE */
+#define R367_OFDM_VITSCALE 0xF248
+#define F367_OFDM_NVTH_NOSRANGE 0xF2480080
+#define F367_OFDM_VERROR_MAXMODE 0xF2480040
+#define F367_OFDM_KDIV_MODE 0xF2480030
+#define F367_OFDM_NSLOWSN_LOCKED 0xF2480008
+#define F367_OFDM_DELOCK_PRFLOSS 0xF2480004
+#define F367_OFDM_DIS_RSFLOCK 0xF2480002
+#define F367_OFDM_VITSCALE_0 0xF2480001
+
+/* FFEC1PRG */
+#define R367_OFDM_FFEC1PRG 0xF249
+#define F367_OFDM_FDSS_DVB 0xF2490080
+#define F367_OFDM_FDSS_SRCH 0xF2490040
+#define F367_OFDM_FFECPROG_5 0xF2490020
+#define F367_OFDM_FFECPROG_4 0xF2490010
+#define F367_OFDM_FFECPROG_3 0xF2490008
+#define F367_OFDM_FFECPROG_2 0xF2490004
+#define F367_OFDM_FTS1_DISABLE 0xF2490002
+#define F367_OFDM_FTS2_DISABLE 0xF2490001
+
+/* FVITCURPUN */
+#define R367_OFDM_FVITCURPUN 0xF24A
+#define F367_OFDM_FVIT_MAPPING 0xF24A00E0
+#define F367_OFDM_FVIT_CURPUN 0xF24A001F
+
+/* FVERROR */
+#define R367_OFDM_FVERROR 0xF24B
+#define F367_OFDM_FREGERR_VIT 0xF24B00FF
+
+/* FVSTATUSVIT */
+#define R367_OFDM_FVSTATUSVIT 0xF24C
+#define F367_OFDM_FVITERBI_ON 0xF24C0080
+#define F367_OFDM_F1END_LOOPVIT 0xF24C0040
+#define F367_OFDM_FVITERBI_DEPRF 0xF24C0020
+#define F367_OFDM_FPRFVIT 0xF24C0010
+#define F367_OFDM_FLOCKEDVIT 0xF24C0008
+#define F367_OFDM_FVITERBI_DELOCK 0xF24C0004
+#define F367_OFDM_FVIT_DEMODSEL 0xF24C0002
+#define F367_OFDM_FVITERBI_COMPOUT 0xF24C0001
+
+/* DEBUG_LT1 */
+#define R367_OFDM_DEBUG_LT1 0xF24D
+#define F367_OFDM_DBG_LT1 0xF24D00FF
+
+/* DEBUG_LT2 */
+#define R367_OFDM_DEBUG_LT2 0xF24E
+#define F367_OFDM_DBG_LT2 0xF24E00FF
+
+/* DEBUG_LT3 */
+#define R367_OFDM_DEBUG_LT3 0xF24F
+#define F367_OFDM_DBG_LT3 0xF24F00FF
+
+ /* TSTSFMET */
+#define R367_OFDM_TSTSFMET 0xF250
+#define F367_OFDM_TSTSFEC_METRIQUES 0xF25000FF
+
+ /* SELOUT */
+#define R367_OFDM_SELOUT 0xF252
+#define F367_OFDM_EN_SYNC 0xF2520080
+#define F367_OFDM_EN_TBUSDEMAP 0xF2520040
+#define F367_OFDM_SELOUT_5 0xF2520020
+#define F367_OFDM_SELOUT_4 0xF2520010
+#define F367_OFDM_TSTSYNCHRO_MODE 0xF2520002
+
+ /* TSYNC */
+#define R367_OFDM_TSYNC 0xF253
+#define F367_OFDM_CURPUN_INCMODE 0xF2530080
+#define F367_OFDM_CERR_TSTMODE 0xF2530040
+#define F367_OFDM_SHIFTSOF_MODE 0xF2530030
+#define F367_OFDM_SLOWPHA_MODE 0xF2530008
+#define F367_OFDM_PXX_BYPALL 0xF2530004
+#define F367_OFDM_FROTA45_FIRST 0xF2530002
+#define F367_OFDM_TST_BCHERROR 0xF2530001
+
+ /* TSTERR */
+#define R367_OFDM_TSTERR 0xF254
+#define F367_OFDM_TST_LONGPKT 0xF2540080
+#define F367_OFDM_TST_ISSYION 0xF2540040
+#define F367_OFDM_TST_NPDON 0xF2540020
+#define F367_OFDM_TSTERR_4 0xF2540010
+#define F367_OFDM_TRACEBACK_MODE 0xF2540008
+#define F367_OFDM_TST_RSPARITY 0xF2540004
+#define F367_OFDM_METRIQUE_MODE 0xF2540003
+
+ /* TSFSYNC */
+#define R367_OFDM_TSFSYNC 0xF255
+#define F367_OFDM_EN_SFECSYNC 0xF2550080
+#define F367_OFDM_EN_SFECDEMAP 0xF2550040
+#define F367_OFDM_SFCERR_TSTMODE 0xF2550020
+#define F367_OFDM_SFECPXX_BYPALL 0xF2550010
+#define F367_OFDM_SFECTSTSYNCHRO_MODE 0xF255000F
+
+ /* TSTSFERR */
+#define R367_OFDM_TSTSFERR 0xF256
+#define F367_OFDM_TSTSTERR_7 0xF2560080
+#define F367_OFDM_TSTSTERR_6 0xF2560040
+#define F367_OFDM_TSTSTERR_5 0xF2560020
+#define F367_OFDM_TSTSTERR_4 0xF2560010
+#define F367_OFDM_SFECTRACEBACK_MODE 0xF2560008
+#define F367_OFDM_SFEC_NCONVPROG 0xF2560004
+#define F367_OFDM_SFECMETRIQUE_MODE 0xF2560003
+
+ /* TSTTSSF1 */
+#define R367_OFDM_TSTTSSF1 0xF258
+#define F367_OFDM_TSTERSSF 0xF2580080
+#define F367_OFDM_TSTTSSFEN 0xF2580040
+#define F367_OFDM_SFEC_OUTMODE 0xF2580030
+#define F367_OFDM_XLSF_NOFTHRESHOLD 0xF2580008
+#define F367_OFDM_TSTTSSF_STACKSEL 0xF2580007
+
+ /* TSTTSSF2 */
+#define R367_OFDM_TSTTSSF2 0xF259
+#define F367_OFDM_DILSF_DBBHEADER 0xF2590080
+#define F367_OFDM_TSTTSSF_DISBUG 0xF2590040
+#define F367_OFDM_TSTTSSF_NOBADSTART 0xF2590020
+#define F367_OFDM_TSTTSSF_SELECT 0xF259001F
+
+ /* TSTTSSF3 */
+#define R367_OFDM_TSTTSSF3 0xF25A
+#define F367_OFDM_TSTTSSF3_7 0xF25A0080
+#define F367_OFDM_TSTTSSF3_6 0xF25A0040
+#define F367_OFDM_TSTTSSF3_5 0xF25A0020
+#define F367_OFDM_TSTTSSF3_4 0xF25A0010
+#define F367_OFDM_TSTTSSF3_3 0xF25A0008
+#define F367_OFDM_TSTTSSF3_2 0xF25A0004
+#define F367_OFDM_TSTTSSF3_1 0xF25A0002
+#define F367_OFDM_DISSF_CLKENABLE 0xF25A0001
+
+ /* TSTTS1 */
+#define R367_OFDM_TSTTS1 0xF25C
+#define F367_OFDM_TSTERS 0xF25C0080
+#define F367_OFDM_TSFIFO_DSSSYNCB 0xF25C0040
+#define F367_OFDM_TSTTS_FSPYBEFRS 0xF25C0020
+#define F367_OFDM_NFORCE_SYNCBYTE 0xF25C0010
+#define F367_OFDM_XL_NOFTHRESHOLD 0xF25C0008
+#define F367_OFDM_TSTTS_FRFORCEPKT 0xF25C0004
+#define F367_OFDM_DESCR_NOTAUTO 0xF25C0002
+#define F367_OFDM_TSTTSEN 0xF25C0001
+
+ /* TSTTS2 */
+#define R367_OFDM_TSTTS2 0xF25D
+#define F367_OFDM_DIL_DBBHEADER 0xF25D0080
+#define F367_OFDM_TSTTS_NOBADXXX 0xF25D0040
+#define F367_OFDM_TSFIFO_DELSPEEDUP 0xF25D0020
+#define F367_OFDM_TSTTS_SELECT 0xF25D001F
+
+ /* TSTTS3 */
+#define R367_OFDM_TSTTS3 0xF25E
+#define F367_OFDM_TSTTS_NOPKTGAIN 0xF25E0080
+#define F367_OFDM_TSTTS_NOPKTENE 0xF25E0040
+#define F367_OFDM_TSTTS_ISOLATION 0xF25E0020
+#define F367_OFDM_TSTTS_DISBUG 0xF25E0010
+#define F367_OFDM_TSTTS_NOBADSTART 0xF25E0008
+#define F367_OFDM_TSTTS_STACKSEL 0xF25E0007
+
+ /* TSTTS4 */
+#define R367_OFDM_TSTTS4 0xF25F
+#define F367_OFDM_TSTTS4_7 0xF25F0080
+#define F367_OFDM_TSTTS4_6 0xF25F0040
+#define F367_OFDM_TSTTS4_5 0xF25F0020
+#define F367_OFDM_TSTTS_DISDSTATE 0xF25F0010
+#define F367_OFDM_TSTTS_FASTNOSYNC 0xF25F0008
+#define F367_OFDM_EXT_FECSPYIN 0xF25F0004
+#define F367_OFDM_TSTTS_NODPZERO 0xF25F0002
+#define F367_OFDM_TSTTS_NODIV3 0xF25F0001
+
+ /* TSTTSRC */
+#define R367_OFDM_TSTTSRC 0xF26C
+#define F367_OFDM_TSTTSRC_7 0xF26C0080
+#define F367_OFDM_TSRCFIFO_DSSSYNCB 0xF26C0040
+#define F367_OFDM_TSRCFIFO_DPUNACTIVE 0xF26C0020
+#define F367_OFDM_TSRCFIFO_DELSPEEDUP 0xF26C0010
+#define F367_OFDM_TSTTSRC_NODIV3 0xF26C0008
+#define F367_OFDM_TSTTSRC_FRFORCEPKT 0xF26C0004
+#define F367_OFDM_SAT25_SDDORIGINE 0xF26C0002
+#define F367_OFDM_TSTTSRC_INACTIVE 0xF26C0001
+
+ /* TSTTSRS */
+#define R367_OFDM_TSTTSRS 0xF26D
+#define F367_OFDM_TSTTSRS_7 0xF26D0080
+#define F367_OFDM_TSTTSRS_6 0xF26D0040
+#define F367_OFDM_TSTTSRS_5 0xF26D0020
+#define F367_OFDM_TSTTSRS_4 0xF26D0010
+#define F367_OFDM_TSTTSRS_3 0xF26D0008
+#define F367_OFDM_TSTTSRS_2 0xF26D0004
+#define F367_OFDM_TSTRS_DISRS2 0xF26D0002
+#define F367_OFDM_TSTRS_DISRS1 0xF26D0001
+
+/* TSSTATEM */
+#define R367_OFDM_TSSTATEM 0xF270
+#define F367_OFDM_TSDIL_ON 0xF2700080
+#define F367_OFDM_TSSKIPRS_ON 0xF2700040
+#define F367_OFDM_TSRS_ON 0xF2700020
+#define F367_OFDM_TSDESCRAMB_ON 0xF2700010
+#define F367_OFDM_TSFRAME_MODE 0xF2700008
+#define F367_OFDM_TS_DISABLE 0xF2700004
+#define F367_OFDM_TSACM_MODE 0xF2700002
+#define F367_OFDM_TSOUT_NOSYNC 0xF2700001
+
+/* TSSTATEL */
+#define R367_OFDM_TSSTATEL 0xF271
+#define F367_OFDM_TSNOSYNCBYTE 0xF2710080
+#define F367_OFDM_TSPARITY_ON 0xF2710040
+#define F367_OFDM_TSSYNCOUTRS_ON 0xF2710020
+#define F367_OFDM_TSDVBS2_MODE 0xF2710010
+#define F367_OFDM_TSISSYI_ON 0xF2710008
+#define F367_OFDM_TSNPD_ON 0xF2710004
+#define F367_OFDM_TSCRC8_ON 0xF2710002
+#define F367_OFDM_TSDSS_PACKET 0xF2710001
+
+/* TSCFGH */
+#define R367_OFDM_TSCFGH 0xF272
+#define F367_OFDM_TSFIFO_DVBCI 0xF2720080
+#define F367_OFDM_TSFIFO_SERIAL 0xF2720040
+#define F367_OFDM_TSFIFO_TEIUPDATE 0xF2720020
+#define F367_OFDM_TSFIFO_DUTY50 0xF2720010
+#define F367_OFDM_TSFIFO_HSGNLOUT 0xF2720008
+#define F367_OFDM_TSFIFO_ERRMODE 0xF2720006
+#define F367_OFDM_RST_HWARE 0xF2720001
+
+/* TSCFGM */
+#define R367_OFDM_TSCFGM 0xF273
+#define F367_OFDM_TSFIFO_MANSPEED 0xF27300C0
+#define F367_OFDM_TSFIFO_PERMDATA 0xF2730020
+#define F367_OFDM_TSFIFO_NONEWSGNL 0xF2730010
+#define F367_OFDM_TSFIFO_BITSPEED 0xF2730008
+#define F367_OFDM_NPD_SPECDVBS2 0xF2730004
+#define F367_OFDM_TSFIFO_STOPCKDIS 0xF2730002
+#define F367_OFDM_TSFIFO_INVDATA 0xF2730001
+
+/* TSCFGL */
+#define R367_OFDM_TSCFGL 0xF274
+#define F367_OFDM_TSFIFO_BCLKDEL1CK 0xF27400C0
+#define F367_OFDM_BCHERROR_MODE 0xF2740030
+#define F367_OFDM_TSFIFO_NSGNL2DATA 0xF2740008
+#define F367_OFDM_TSFIFO_EMBINDVB 0xF2740004
+#define F367_OFDM_TSFIFO_DPUNACT 0xF2740002
+#define F367_OFDM_TSFIFO_NPDOFF 0xF2740001
+
+/* TSSYNC */
+#define R367_OFDM_TSSYNC 0xF275
+#define F367_OFDM_TSFIFO_PERMUTE 0xF2750080
+#define F367_OFDM_TSFIFO_FISCR3B 0xF2750060
+#define F367_OFDM_TSFIFO_SYNCMODE 0xF2750018
+#define F367_OFDM_TSFIFO_SYNCSEL 0xF2750007
+
+/* TSINSDELH */
+#define R367_OFDM_TSINSDELH 0xF276
+#define F367_OFDM_TSDEL_SYNCBYTE 0xF2760080
+#define F367_OFDM_TSDEL_XXHEADER 0xF2760040
+#define F367_OFDM_TSDEL_BBHEADER 0xF2760020
+#define F367_OFDM_TSDEL_DATAFIELD 0xF2760010
+#define F367_OFDM_TSINSDEL_ISCR 0xF2760008
+#define F367_OFDM_TSINSDEL_NPD 0xF2760004
+#define F367_OFDM_TSINSDEL_RSPARITY 0xF2760002
+#define F367_OFDM_TSINSDEL_CRC8 0xF2760001
+
+/* TSINSDELM */
+#define R367_OFDM_TSINSDELM 0xF277
+#define F367_OFDM_TSINS_BBPADDING 0xF2770080
+#define F367_OFDM_TSINS_BCHFEC 0xF2770040
+#define F367_OFDM_TSINS_LDPCFEC 0xF2770020
+#define F367_OFDM_TSINS_EMODCOD 0xF2770010
+#define F367_OFDM_TSINS_TOKEN 0xF2770008
+#define F367_OFDM_TSINS_XXXERR 0xF2770004
+#define F367_OFDM_TSINS_MATYPE 0xF2770002
+#define F367_OFDM_TSINS_UPL 0xF2770001
+
+/* TSINSDELL */
+#define R367_OFDM_TSINSDELL 0xF278
+#define F367_OFDM_TSINS_DFL 0xF2780080
+#define F367_OFDM_TSINS_SYNCD 0xF2780040
+#define F367_OFDM_TSINS_BLOCLEN 0xF2780020
+#define F367_OFDM_TSINS_SIGPCOUNT 0xF2780010
+#define F367_OFDM_TSINS_FIFO 0xF2780008
+#define F367_OFDM_TSINS_REALPACK 0xF2780004
+#define F367_OFDM_TSINS_TSCONFIG 0xF2780002
+#define F367_OFDM_TSINS_LATENCY 0xF2780001
+
+/* TSDIVN */
+#define R367_OFDM_TSDIVN 0xF279
+#define F367_OFDM_TSFIFO_LOWSPEED 0xF2790080
+#define F367_OFDM_BYTE_OVERSAMPLING 0xF2790070
+#define F367_OFDM_TSMANUAL_PACKETNBR 0xF279000F
+
+/* TSDIVPM */
+#define R367_OFDM_TSDIVPM 0xF27A
+#define F367_OFDM_TSMANUAL_P_HI 0xF27A00FF
+
+/* TSDIVPL */
+#define R367_OFDM_TSDIVPL 0xF27B
+#define F367_OFDM_TSMANUAL_P_LO 0xF27B00FF
+
+/* TSDIVQM */
+#define R367_OFDM_TSDIVQM 0xF27C
+#define F367_OFDM_TSMANUAL_Q_HI 0xF27C00FF
+
+/* TSDIVQL */
+#define R367_OFDM_TSDIVQL 0xF27D
+#define F367_OFDM_TSMANUAL_Q_LO 0xF27D00FF
+
+/* TSDILSTKM */
+#define R367_OFDM_TSDILSTKM 0xF27E
+#define F367_OFDM_TSFIFO_DILSTK_HI 0xF27E00FF
+
+/* TSDILSTKL */
+#define R367_OFDM_TSDILSTKL 0xF27F
+#define F367_OFDM_TSFIFO_DILSTK_LO 0xF27F00FF
+
+/* TSSPEED */
+#define R367_OFDM_TSSPEED 0xF280
+#define F367_OFDM_TSFIFO_OUTSPEED 0xF28000FF
+
+/* TSSTATUS */
+#define R367_OFDM_TSSTATUS 0xF281
+#define F367_OFDM_TSFIFO_LINEOK 0xF2810080
+#define F367_OFDM_TSFIFO_ERROR 0xF2810040
+#define F367_OFDM_TSFIFO_DATA7 0xF2810020
+#define F367_OFDM_TSFIFO_NOSYNC 0xF2810010
+#define F367_OFDM_ISCR_INITIALIZED 0xF2810008
+#define F367_OFDM_ISCR_UPDATED 0xF2810004
+#define F367_OFDM_SOFFIFO_UNREGUL 0xF2810002
+#define F367_OFDM_DIL_READY 0xF2810001
+
+/* TSSTATUS2 */
+#define R367_OFDM_TSSTATUS2 0xF282
+#define F367_OFDM_TSFIFO_DEMODSEL 0xF2820080
+#define F367_OFDM_TSFIFOSPEED_STORE 0xF2820040
+#define F367_OFDM_DILXX_RESET 0xF2820020
+#define F367_OFDM_TSSERIAL_IMPOSSIBLE 0xF2820010
+#define F367_OFDM_TSFIFO_UNDERSPEED 0xF2820008
+#define F367_OFDM_BITSPEED_EVENT 0xF2820004
+#define F367_OFDM_UL_SCRAMBDETECT 0xF2820002
+#define F367_OFDM_ULDTV67_FALSELOCK 0xF2820001
+
+/* TSBITRATEM */
+#define R367_OFDM_TSBITRATEM 0xF283
+#define F367_OFDM_TSFIFO_BITRATE_HI 0xF28300FF
+
+/* TSBITRATEL */
+#define R367_OFDM_TSBITRATEL 0xF284
+#define F367_OFDM_TSFIFO_BITRATE_LO 0xF28400FF
+
+/* TSPACKLENM */
+#define R367_OFDM_TSPACKLENM 0xF285
+#define F367_OFDM_TSFIFO_PACKCPT 0xF28500E0
+#define F367_OFDM_DIL_RPLEN_HI 0xF285001F
+
+/* TSPACKLENL */
+#define R367_OFDM_TSPACKLENL 0xF286
+#define F367_OFDM_DIL_RPLEN_LO 0xF28600FF
+
+/* TSBLOCLENM */
+#define R367_OFDM_TSBLOCLENM 0xF287
+#define F367_OFDM_TSFIFO_PFLEN_HI 0xF28700FF
+
+/* TSBLOCLENL */
+#define R367_OFDM_TSBLOCLENL 0xF288
+#define F367_OFDM_TSFIFO_PFLEN_LO 0xF28800FF
+
+/* TSDLYH */
+#define R367_OFDM_TSDLYH 0xF289
+#define F367_OFDM_SOFFIFO_TSTIMEVALID 0xF2890080
+#define F367_OFDM_SOFFIFO_SPEEDUP 0xF2890040
+#define F367_OFDM_SOFFIFO_STOP 0xF2890020
+#define F367_OFDM_SOFFIFO_REGULATED 0xF2890010
+#define F367_OFDM_SOFFIFO_REALSBOFF_HI 0xF289000F
+
+/* TSDLYM */
+#define R367_OFDM_TSDLYM 0xF28A
+#define F367_OFDM_SOFFIFO_REALSBOFF_MED 0xF28A00FF
+
+/* TSDLYL */
+#define R367_OFDM_TSDLYL 0xF28B
+#define F367_OFDM_SOFFIFO_REALSBOFF_LO 0xF28B00FF
+
+/* TSNPDAV */
+#define R367_OFDM_TSNPDAV 0xF28C
+#define F367_OFDM_TSNPD_AVERAGE 0xF28C00FF
+
+/* TSBUFSTATH */
+#define R367_OFDM_TSBUFSTATH 0xF28D
+#define F367_OFDM_TSISCR_3BYTES 0xF28D0080
+#define F367_OFDM_TSISCR_NEWDATA 0xF28D0040
+#define F367_OFDM_TSISCR_BUFSTAT_HI 0xF28D003F
+
+/* TSBUFSTATM */
+#define R367_OFDM_TSBUFSTATM 0xF28E
+#define F367_OFDM_TSISCR_BUFSTAT_MED 0xF28E00FF
+
+/* TSBUFSTATL */
+#define R367_OFDM_TSBUFSTATL 0xF28F
+#define F367_OFDM_TSISCR_BUFSTAT_LO 0xF28F00FF
+
+/* TSDEBUGM */
+#define R367_OFDM_TSDEBUGM 0xF290
+#define F367_OFDM_TSFIFO_ILLPACKET 0xF2900080
+#define F367_OFDM_DIL_NOSYNC 0xF2900040
+#define F367_OFDM_DIL_ISCR 0xF2900020
+#define F367_OFDM_DILOUT_BSYNCB 0xF2900010
+#define F367_OFDM_TSFIFO_EMPTYPKT 0xF2900008
+#define F367_OFDM_TSFIFO_EMPTYRD 0xF2900004
+#define F367_OFDM_SOFFIFO_STOPM 0xF2900002
+#define F367_OFDM_SOFFIFO_SPEEDUPM 0xF2900001
+
+/* TSDEBUGL */
+#define R367_OFDM_TSDEBUGL 0xF291
+#define F367_OFDM_TSFIFO_PACKLENFAIL 0xF2910080
+#define F367_OFDM_TSFIFO_SYNCBFAIL 0xF2910040
+#define F367_OFDM_TSFIFO_VITLIBRE 0xF2910020
+#define F367_OFDM_TSFIFO_BOOSTSPEEDM 0xF2910010
+#define F367_OFDM_TSFIFO_UNDERSPEEDM 0xF2910008
+#define F367_OFDM_TSFIFO_ERROR_EVNT 0xF2910004
+#define F367_OFDM_TSFIFO_FULL 0xF2910002
+#define F367_OFDM_TSFIFO_OVERFLOWM 0xF2910001
+
+/* TSDLYSETH */
+#define R367_OFDM_TSDLYSETH 0xF292
+#define F367_OFDM_SOFFIFO_OFFSET 0xF29200E0
+#define F367_OFDM_SOFFIFO_SYMBOFFSET_HI 0xF292001F
+
+/* TSDLYSETM */
+#define R367_OFDM_TSDLYSETM 0xF293
+#define F367_OFDM_SOFFIFO_SYMBOFFSET_MED 0xF29300FF
+
+/* TSDLYSETL */
+#define R367_OFDM_TSDLYSETL 0xF294
+#define F367_OFDM_SOFFIFO_SYMBOFFSET_LO 0xF29400FF
+
+/* TSOBSCFG */
+#define R367_OFDM_TSOBSCFG 0xF295
+#define F367_OFDM_TSFIFO_OBSCFG 0xF29500FF
+
+/* TSOBSM */
+#define R367_OFDM_TSOBSM 0xF296
+#define F367_OFDM_TSFIFO_OBSDATA_HI 0xF29600FF
+
+/* TSOBSL */
+#define R367_OFDM_TSOBSL 0xF297
+#define F367_OFDM_TSFIFO_OBSDATA_LO 0xF29700FF
+
+/* ERRCTRL1 */
+#define R367_OFDM_ERRCTRL1 0xF298
+#define F367_OFDM_ERR_SRC1 0xF29800F0
+#define F367_OFDM_ERRCTRL1_3 0xF2980008
+#define F367_OFDM_NUM_EVT1 0xF2980007
+
+/* ERRCNT1H */
+#define R367_OFDM_ERRCNT1H 0xF299
+#define F367_OFDM_ERRCNT1_OLDVALUE 0xF2990080
+#define F367_OFDM_ERR_CNT1 0xF299007F
+
+/* ERRCNT1M */
+#define R367_OFDM_ERRCNT1M 0xF29A
+#define F367_OFDM_ERR_CNT1_HI 0xF29A00FF
+
+/* ERRCNT1L */
+#define R367_OFDM_ERRCNT1L 0xF29B
+#define F367_OFDM_ERR_CNT1_LO 0xF29B00FF
+
+/* ERRCTRL2 */
+#define R367_OFDM_ERRCTRL2 0xF29C
+#define F367_OFDM_ERR_SRC2 0xF29C00F0
+#define F367_OFDM_ERRCTRL2_3 0xF29C0008
+#define F367_OFDM_NUM_EVT2 0xF29C0007
+
+/* ERRCNT2H */
+#define R367_OFDM_ERRCNT2H 0xF29D
+#define F367_OFDM_ERRCNT2_OLDVALUE 0xF29D0080
+#define F367_OFDM_ERR_CNT2_HI 0xF29D007F
+
+/* ERRCNT2M */
+#define R367_OFDM_ERRCNT2M 0xF29E
+#define F367_OFDM_ERR_CNT2_MED 0xF29E00FF
+
+/* ERRCNT2L */
+#define R367_OFDM_ERRCNT2L 0xF29F
+#define F367_OFDM_ERR_CNT2_LO 0xF29F00FF
+
+/* FECSPY */
+#define R367_OFDM_FECSPY 0xF2A0
+#define F367_OFDM_SPY_ENABLE 0xF2A00080
+#define F367_OFDM_NO_SYNCBYTE 0xF2A00040
+#define F367_OFDM_SERIAL_MODE 0xF2A00020
+#define F367_OFDM_UNUSUAL_PACKET 0xF2A00010
+#define F367_OFDM_BERMETER_DATAMODE 0xF2A0000C
+#define F367_OFDM_BERMETER_LMODE 0xF2A00002
+#define F367_OFDM_BERMETER_RESET 0xF2A00001
+
+/* FSPYCFG */
+#define R367_OFDM_FSPYCFG 0xF2A1
+#define F367_OFDM_FECSPY_INPUT 0xF2A100C0
+#define F367_OFDM_RST_ON_ERROR 0xF2A10020
+#define F367_OFDM_ONE_SHOT 0xF2A10010
+#define F367_OFDM_I2C_MOD 0xF2A1000C
+#define F367_OFDM_SPY_HYSTERESIS 0xF2A10003
+
+/* FSPYDATA */
+#define R367_OFDM_FSPYDATA 0xF2A2
+#define F367_OFDM_SPY_STUFFING 0xF2A20080
+#define F367_OFDM_NOERROR_PKTJITTER 0xF2A20040
+#define F367_OFDM_SPY_CNULLPKT 0xF2A20020
+#define F367_OFDM_SPY_OUTDATA_MODE 0xF2A2001F
+
+/* FSPYOUT */
+#define R367_OFDM_FSPYOUT 0xF2A3
+#define F367_OFDM_FSPY_DIRECT 0xF2A30080
+#define F367_OFDM_FSPYOUT_6 0xF2A30040
+#define F367_OFDM_SPY_OUTDATA_BUS 0xF2A30038
+#define F367_OFDM_STUFF_MODE 0xF2A30007
+
+/* FSTATUS */
+#define R367_OFDM_FSTATUS 0xF2A4
+#define F367_OFDM_SPY_ENDSIM 0xF2A40080
+#define F367_OFDM_VALID_SIM 0xF2A40040
+#define F367_OFDM_FOUND_SIGNAL 0xF2A40020
+#define F367_OFDM_DSS_SYNCBYTE 0xF2A40010
+#define F367_OFDM_RESULT_STATE 0xF2A4000F
+
+/* FGOODPACK */
+#define R367_OFDM_FGOODPACK 0xF2A5
+#define F367_OFDM_FGOOD_PACKET 0xF2A500FF
+
+/* FPACKCNT */
+#define R367_OFDM_FPACKCNT 0xF2A6
+#define F367_OFDM_FPACKET_COUNTER 0xF2A600FF
+
+/* FSPYMISC */
+#define R367_OFDM_FSPYMISC 0xF2A7
+#define F367_OFDM_FLABEL_COUNTER 0xF2A700FF
+
+/* FBERCPT4 */
+#define R367_OFDM_FBERCPT4 0xF2A8
+#define F367_OFDM_FBERMETER_CPT5 0xF2A800FF
+
+/* FBERCPT3 */
+#define R367_OFDM_FBERCPT3 0xF2A9
+#define F367_OFDM_FBERMETER_CPT4 0xF2A900FF
+
+/* FBERCPT2 */
+#define R367_OFDM_FBERCPT2 0xF2AA
+#define F367_OFDM_FBERMETER_CPT3 0xF2AA00FF
+
+/* FBERCPT1 */
+#define R367_OFDM_FBERCPT1 0xF2AB
+#define F367_OFDM_FBERMETER_CPT2 0xF2AB00FF
+
+/* FBERCPT0 */
+#define R367_OFDM_FBERCPT0 0xF2AC
+#define F367_OFDM_FBERMETER_CPT1 0xF2AC00FF
+
+/* FBERERR2 */
+#define R367_OFDM_FBERERR2 0xF2AD
+#define F367_OFDM_FBERMETER_ERR_HI 0xF2AD00FF
+
+/* FBERERR1 */
+#define R367_OFDM_FBERERR1 0xF2AE
+#define F367_OFDM_FBERMETER_ERR_MED 0xF2AE00FF
+
+/* FBERERR0 */
+#define R367_OFDM_FBERERR0 0xF2AF
+#define F367_OFDM_FBERMETER_ERR_LO 0xF2AF00FF
+
+/* FSTATESM */
+#define R367_OFDM_FSTATESM 0xF2B0
+#define F367_OFDM_RSTATE_F 0xF2B00080
+#define F367_OFDM_RSTATE_E 0xF2B00040
+#define F367_OFDM_RSTATE_D 0xF2B00020
+#define F367_OFDM_RSTATE_C 0xF2B00010
+#define F367_OFDM_RSTATE_B 0xF2B00008
+#define F367_OFDM_RSTATE_A 0xF2B00004
+#define F367_OFDM_RSTATE_9 0xF2B00002
+#define F367_OFDM_RSTATE_8 0xF2B00001
+
+/* FSTATESL */
+#define R367_OFDM_FSTATESL 0xF2B1
+#define F367_OFDM_RSTATE_7 0xF2B10080
+#define F367_OFDM_RSTATE_6 0xF2B10040
+#define F367_OFDM_RSTATE_5 0xF2B10020
+#define F367_OFDM_RSTATE_4 0xF2B10010
+#define F367_OFDM_RSTATE_3 0xF2B10008
+#define F367_OFDM_RSTATE_2 0xF2B10004
+#define F367_OFDM_RSTATE_1 0xF2B10002
+#define F367_OFDM_RSTATE_0 0xF2B10001
+
+/* FSPYBER */
+#define R367_OFDM_FSPYBER 0xF2B2
+#define F367_OFDM_FSPYBER_7 0xF2B20080
+#define F367_OFDM_FSPYOBS_XORREAD 0xF2B20040
+#define F367_OFDM_FSPYBER_OBSMODE 0xF2B20020
+#define F367_OFDM_FSPYBER_SYNCBYTE 0xF2B20010
+#define F367_OFDM_FSPYBER_UNSYNC 0xF2B20008
+#define F367_OFDM_FSPYBER_CTIME 0xF2B20007
+
+/* FSPYDISTM */
+#define R367_OFDM_FSPYDISTM 0xF2B3
+#define F367_OFDM_PKTTIME_DISTANCE_HI 0xF2B300FF
+
+/* FSPYDISTL */
+#define R367_OFDM_FSPYDISTL 0xF2B4
+#define F367_OFDM_PKTTIME_DISTANCE_LO 0xF2B400FF
+
+/* FSPYOBS7 */
+#define R367_OFDM_FSPYOBS7 0xF2B8
+#define F367_OFDM_FSPYOBS_SPYFAIL 0xF2B80080
+#define F367_OFDM_FSPYOBS_SPYFAIL1 0xF2B80040
+#define F367_OFDM_FSPYOBS_ERROR 0xF2B80020
+#define F367_OFDM_FSPYOBS_STROUT 0xF2B80010
+#define F367_OFDM_FSPYOBS_RESULTSTATE1 0xF2B8000F
+
+/* FSPYOBS6 */
+#define R367_OFDM_FSPYOBS6 0xF2B9
+#define F367_OFDM_FSPYOBS_RESULTSTATE0 0xF2B900F0
+#define F367_OFDM_FSPYOBS_RESULTSTATEM1 0xF2B9000F
+
+/* FSPYOBS5 */
+#define R367_OFDM_FSPYOBS5 0xF2BA
+#define F367_OFDM_FSPYOBS_BYTEOFPACKET1 0xF2BA00FF
+
+/* FSPYOBS4 */
+#define R367_OFDM_FSPYOBS4 0xF2BB
+#define F367_OFDM_FSPYOBS_BYTEVALUE1 0xF2BB00FF
+
+/* FSPYOBS3 */
+#define R367_OFDM_FSPYOBS3 0xF2BC
+#define F367_OFDM_FSPYOBS_DATA1 0xF2BC00FF
+
+/* FSPYOBS2 */
+#define R367_OFDM_FSPYOBS2 0xF2BD
+#define F367_OFDM_FSPYOBS_DATA0 0xF2BD00FF
+
+/* FSPYOBS1 */
+#define R367_OFDM_FSPYOBS1 0xF2BE
+#define F367_OFDM_FSPYOBS_DATAM1 0xF2BE00FF
+
+/* FSPYOBS0 */
+#define R367_OFDM_FSPYOBS0 0xF2BF
+#define F367_OFDM_FSPYOBS_DATAM2 0xF2BF00FF
+
+/* SFDEMAP */
+#define R367_OFDM_SFDEMAP 0xF2C0
+#define F367_OFDM_SFDEMAP_7 0xF2C00080
+#define F367_OFDM_SFEC_K_DIVIDER_VIT 0xF2C0007F
+
+/* SFERROR */
+#define R367_OFDM_SFERROR 0xF2C1
+#define F367_OFDM_SFEC_REGERR_VIT 0xF2C100FF
+
+/* SFAVSR */
+#define R367_OFDM_SFAVSR 0xF2C2
+#define F367_OFDM_SFEC_SUMERRORS 0xF2C20080
+#define F367_OFDM_SERROR_MAXMODE 0xF2C20040
+#define F367_OFDM_SN_SFEC 0xF2C20030
+#define F367_OFDM_KDIV_MODE_SFEC 0xF2C2000C
+#define F367_OFDM_SFAVSR_1 0xF2C20002
+#define F367_OFDM_SFAVSR_0 0xF2C20001
+
+/* SFECSTATUS */
+#define R367_OFDM_SFECSTATUS 0xF2C3
+#define F367_OFDM_SFEC_ON 0xF2C30080
+#define F367_OFDM_SFSTATUS_6 0xF2C30040
+#define F367_OFDM_SFSTATUS_5 0xF2C30020
+#define F367_OFDM_SFSTATUS_4 0xF2C30010
+#define F367_OFDM_LOCKEDSFEC 0xF2C30008
+#define F367_OFDM_SFEC_DELOCK 0xF2C30004
+#define F367_OFDM_SFEC_DEMODSEL1 0xF2C30002
+#define F367_OFDM_SFEC_OVFON 0xF2C30001
+
+/* SFKDIV12 */
+#define R367_OFDM_SFKDIV12 0xF2C4
+#define F367_OFDM_SFECKDIV12_MAN 0xF2C40080
+#define F367_OFDM_SFEC_K_DIVIDER_12 0xF2C4007F
+
+/* SFKDIV23 */
+#define R367_OFDM_SFKDIV23 0xF2C5
+#define F367_OFDM_SFECKDIV23_MAN 0xF2C50080
+#define F367_OFDM_SFEC_K_DIVIDER_23 0xF2C5007F
+
+/* SFKDIV34 */
+#define R367_OFDM_SFKDIV34 0xF2C6
+#define F367_OFDM_SFECKDIV34_MAN 0xF2C60080
+#define F367_OFDM_SFEC_K_DIVIDER_34 0xF2C6007F
+
+/* SFKDIV56 */
+#define R367_OFDM_SFKDIV56 0xF2C7
+#define F367_OFDM_SFECKDIV56_MAN 0xF2C70080
+#define F367_OFDM_SFEC_K_DIVIDER_56 0xF2C7007F
+
+/* SFKDIV67 */
+#define R367_OFDM_SFKDIV67 0xF2C8
+#define F367_OFDM_SFECKDIV67_MAN 0xF2C80080
+#define F367_OFDM_SFEC_K_DIVIDER_67 0xF2C8007F
+
+/* SFKDIV78 */
+#define R367_OFDM_SFKDIV78 0xF2C9
+#define F367_OFDM_SFECKDIV78_MAN 0xF2C90080
+#define F367_OFDM_SFEC_K_DIVIDER_78 0xF2C9007F
+
+/* SFDILSTKM */
+#define R367_OFDM_SFDILSTKM 0xF2CA
+#define F367_OFDM_SFEC_PACKCPT 0xF2CA00E0
+#define F367_OFDM_SFEC_DILSTK_HI 0xF2CA001F
+
+/* SFDILSTKL */
+#define R367_OFDM_SFDILSTKL 0xF2CB
+#define F367_OFDM_SFEC_DILSTK_LO 0xF2CB00FF
+
+/* SFSTATUS */
+#define R367_OFDM_SFSTATUS 0xF2CC
+#define F367_OFDM_SFEC_LINEOK 0xF2CC0080
+#define F367_OFDM_SFEC_ERROR 0xF2CC0040
+#define F367_OFDM_SFEC_DATA7 0xF2CC0020
+#define F367_OFDM_SFEC_OVERFLOW 0xF2CC0010
+#define F367_OFDM_SFEC_DEMODSEL2 0xF2CC0008
+#define F367_OFDM_SFEC_NOSYNC 0xF2CC0004
+#define F367_OFDM_SFEC_UNREGULA 0xF2CC0002
+#define F367_OFDM_SFEC_READY 0xF2CC0001
+
+/* SFDLYH */
+#define R367_OFDM_SFDLYH 0xF2CD
+#define F367_OFDM_SFEC_TSTIMEVALID 0xF2CD0080
+#define F367_OFDM_SFEC_SPEEDUP 0xF2CD0040
+#define F367_OFDM_SFEC_STOP 0xF2CD0020
+#define F367_OFDM_SFEC_REGULATED 0xF2CD0010
+#define F367_OFDM_SFEC_REALSYMBOFFSET 0xF2CD000F
+
+/* SFDLYM */
+#define R367_OFDM_SFDLYM 0xF2CE
+#define F367_OFDM_SFEC_REALSYMBOFFSET_HI 0xF2CE00FF
+
+/* SFDLYL */
+#define R367_OFDM_SFDLYL 0xF2CF
+#define F367_OFDM_SFEC_REALSYMBOFFSET_LO 0xF2CF00FF
+
+/* SFDLYSETH */
+#define R367_OFDM_SFDLYSETH 0xF2D0
+#define F367_OFDM_SFEC_OFFSET 0xF2D000E0
+#define F367_OFDM_SFECDLYSETH_4 0xF2D00010
+#define F367_OFDM_RST_SFEC 0xF2D00008
+#define F367_OFDM_SFECDLYSETH_2 0xF2D00004
+#define F367_OFDM_SFEC_DISABLE 0xF2D00002
+#define F367_OFDM_SFEC_UNREGUL 0xF2D00001
+
+/* SFDLYSETM */
+#define R367_OFDM_SFDLYSETM 0xF2D1
+#define F367_OFDM_SFECDLYSETM_7 0xF2D10080
+#define F367_OFDM_SFEC_SYMBOFFSET_HI 0xF2D1007F
+
+/* SFDLYSETL */
+#define R367_OFDM_SFDLYSETL 0xF2D2
+#define F367_OFDM_SFEC_SYMBOFFSET_LO 0xF2D200FF
+
+/* SFOBSCFG */
+#define R367_OFDM_SFOBSCFG 0xF2D3
+#define F367_OFDM_SFEC_OBSCFG 0xF2D300FF
+
+/* SFOBSM */
+#define R367_OFDM_SFOBSM 0xF2D4
+#define F367_OFDM_SFEC_OBSDATA_HI 0xF2D400FF
+
+/* SFOBSL */
+#define R367_OFDM_SFOBSL 0xF2D5
+#define F367_OFDM_SFEC_OBSDATA_LO 0xF2D500FF
+
+/* SFECINFO */
+#define R367_OFDM_SFECINFO 0xF2D6
+#define F367_OFDM_SFECINFO_7 0xF2D60080
+#define F367_OFDM_SFEC_SYNCDLSB 0xF2D60070
+#define F367_OFDM_SFCE_S1CPHASE 0xF2D6000F
+
+/* SFERRCTRL */
+#define R367_OFDM_SFERRCTRL 0xF2D8
+#define F367_OFDM_SFEC_ERR_SOURCE 0xF2D800F0
+#define F367_OFDM_SFERRCTRL_3 0xF2D80008
+#define F367_OFDM_SFEC_NUM_EVENT 0xF2D80007
+
+/* SFERRCNTH */
+#define R367_OFDM_SFERRCNTH 0xF2D9
+#define F367_OFDM_SFERRC_OLDVALUE 0xF2D90080
+#define F367_OFDM_SFEC_ERR_CNT 0xF2D9007F
+
+/* SFERRCNTM */
+#define R367_OFDM_SFERRCNTM 0xF2DA
+#define F367_OFDM_SFEC_ERR_CNT_HI 0xF2DA00FF
+
+/* SFERRCNTL */
+#define R367_OFDM_SFERRCNTL 0xF2DB
+#define F367_OFDM_SFEC_ERR_CNT_LO 0xF2DB00FF
+
+/* SYMBRATEM */
+#define R367_OFDM_SYMBRATEM 0xF2E0
+#define F367_OFDM_DEFGEN_SYMBRATE_HI 0xF2E000FF
+
+/* SYMBRATEL */
+#define R367_OFDM_SYMBRATEL 0xF2E1
+#define F367_OFDM_DEFGEN_SYMBRATE_LO 0xF2E100FF
+
+/* SYMBSTATUS */
+#define R367_OFDM_SYMBSTATUS 0xF2E2
+#define F367_OFDM_SYMBDLINE2_OFF 0xF2E20080
+#define F367_OFDM_SDDL_REINIT1 0xF2E20040
+#define F367_OFDM_SDD_REINIT1 0xF2E20020
+#define F367_OFDM_TOKENID_ERROR 0xF2E20010
+#define F367_OFDM_SYMBRATE_OVERFLOW 0xF2E20008
+#define F367_OFDM_SYMBRATE_UNDERFLOW 0xF2E20004
+#define F367_OFDM_TOKENID_RSTEVENT 0xF2E20002
+#define F367_OFDM_TOKENID_RESET1 0xF2E20001
+
+/* SYMBCFG */
+#define R367_OFDM_SYMBCFG 0xF2E3
+#define F367_OFDM_SYMBCFG_7 0xF2E30080
+#define F367_OFDM_SYMBCFG_6 0xF2E30040
+#define F367_OFDM_SYMBCFG_5 0xF2E30020
+#define F367_OFDM_SYMBCFG_4 0xF2E30010
+#define F367_OFDM_SYMRATE_FSPEED 0xF2E3000C
+#define F367_OFDM_SYMRATE_SSPEED 0xF2E30003
+
+/* SYMBFIFOM */
+#define R367_OFDM_SYMBFIFOM 0xF2E4
+#define F367_OFDM_SYMBFIFOM_7 0xF2E40080
+#define F367_OFDM_SYMBFIFOM_6 0xF2E40040
+#define F367_OFDM_DEFGEN_SYMFIFO_HI 0xF2E4003F
+
+/* SYMBFIFOL */
+#define R367_OFDM_SYMBFIFOL 0xF2E5
+#define F367_OFDM_DEFGEN_SYMFIFO_LO 0xF2E500FF
+
+/* SYMBOFFSM */
+#define R367_OFDM_SYMBOFFSM 0xF2E6
+#define F367_OFDM_TOKENID_RESET2 0xF2E60080
+#define F367_OFDM_SDDL_REINIT2 0xF2E60040
+#define F367_OFDM_SDD_REINIT2 0xF2E60020
+#define F367_OFDM_SYMBOFFSM_4 0xF2E60010
+#define F367_OFDM_SYMBOFFSM_3 0xF2E60008
+#define F367_OFDM_DEFGEN_SYMBOFFSET_HI 0xF2E60007
+
+/* SYMBOFFSL */
+#define R367_OFDM_SYMBOFFSL 0xF2E7
+#define F367_OFDM_DEFGEN_SYMBOFFSET_LO 0xF2E700FF
+
+/* DEBUG_LT4 */
+#define R367_DEBUG_LT4 0xF400
+#define F367_F_DEBUG_LT4 0xF40000FF
+
+/* DEBUG_LT5 */
+#define R367_DEBUG_LT5 0xF401
+#define F367_F_DEBUG_LT5 0xF40100FF
+
+/* DEBUG_LT6 */
+#define R367_DEBUG_LT6 0xF402
+#define F367_F_DEBUG_LT6 0xF40200FF
+
+/* DEBUG_LT7 */
+#define R367_DEBUG_LT7 0xF403
+#define F367_F_DEBUG_LT7 0xF40300FF
+
+/* DEBUG_LT8 */
+#define R367_DEBUG_LT8 0xF404
+#define F367_F_DEBUG_LT8 0xF40400FF
+
+/* DEBUG_LT9 */
+#define R367_DEBUG_LT9 0xF405
+#define F367_F_DEBUG_LT9 0xF40500FF
+
+/* CTRL_1 */
+#define R367_QAM_CTRL_1 0xF402
+#define F367_QAM_SOFT_RST 0xF4020080
+#define F367_QAM_EQU_RST 0xF4020008
+#define F367_QAM_CRL_RST 0xF4020004
+#define F367_QAM_TRL_RST 0xF4020002
+#define F367_QAM_AGC_RST 0xF4020001
+
+/* CTRL_2 */
+#define R367_QAM_CTRL_2 0xF403
+#define F367_QAM_DEINT_RST 0xF4030008
+#define F367_QAM_RS_RST 0xF4030004
+
+/* IT_STATUS1 */
+#define R367_QAM_IT_STATUS1 0xF408
+#define F367_QAM_SWEEP_OUT 0xF4080080
+#define F367_QAM_FSM_CRL 0xF4080040
+#define F367_QAM_CRL_LOCK 0xF4080020
+#define F367_QAM_MFSM 0xF4080010
+#define F367_QAM_TRL_LOCK 0xF4080008
+#define F367_QAM_TRL_AGC_LIMIT 0xF4080004
+#define F367_QAM_ADJ_AGC_LOCK 0xF4080002
+#define F367_QAM_AGC_QAM_LOCK 0xF4080001
+
+/* IT_STATUS2 */
+#define R367_QAM_IT_STATUS2 0xF409
+#define F367_QAM_TSMF_CNT 0xF4090080
+#define F367_QAM_TSMF_EOF 0xF4090040
+#define F367_QAM_TSMF_RDY 0xF4090020
+#define F367_QAM_FEC_NOCORR 0xF4090010
+#define F367_QAM_SYNCSTATE 0xF4090008
+#define F367_QAM_DEINT_LOCK 0xF4090004
+#define F367_QAM_FADDING_FRZ 0xF4090002
+#define F367_QAM_TAPMON_ALARM 0xF4090001
+
+/* IT_EN1 */
+#define R367_QAM_IT_EN1 0xF40A
+#define F367_QAM_SWEEP_OUTE 0xF40A0080
+#define F367_QAM_FSM_CRLE 0xF40A0040
+#define F367_QAM_CRL_LOCKE 0xF40A0020
+#define F367_QAM_MFSME 0xF40A0010
+#define F367_QAM_TRL_LOCKE 0xF40A0008
+#define F367_QAM_TRL_AGC_LIMITE 0xF40A0004
+#define F367_QAM_ADJ_AGC_LOCKE 0xF40A0002
+#define F367_QAM_AGC_LOCKE 0xF40A0001
+
+/* IT_EN2 */
+#define R367_QAM_IT_EN2 0xF40B
+#define F367_QAM_TSMF_CNTE 0xF40B0080
+#define F367_QAM_TSMF_EOFE 0xF40B0040
+#define F367_QAM_TSMF_RDYE 0xF40B0020
+#define F367_QAM_FEC_NOCORRE 0xF40B0010
+#define F367_QAM_SYNCSTATEE 0xF40B0008
+#define F367_QAM_DEINT_LOCKE 0xF40B0004
+#define F367_QAM_FADDING_FRZE 0xF40B0002
+#define F367_QAM_TAPMON_ALARME 0xF40B0001
+
+/* CTRL_STATUS */
+#define R367_QAM_CTRL_STATUS 0xF40C
+#define F367_QAM_QAMFEC_LOCK 0xF40C0004
+#define F367_QAM_TSMF_LOCK 0xF40C0002
+#define F367_QAM_TSMF_ERROR 0xF40C0001
+
+/* TEST_CTL */
+#define R367_QAM_TEST_CTL 0xF40F
+#define F367_QAM_TST_BLK_SEL 0xF40F0060
+#define F367_QAM_TST_BUS_SEL 0xF40F001F
+
+/* AGC_CTL */
+#define R367_QAM_AGC_CTL 0xF410
+#define F367_QAM_AGC_LCK_TH 0xF41000F0
+#define F367_QAM_AGC_ACCUMRSTSEL 0xF4100007
+
+/* AGC_IF_CFG */
+#define R367_QAM_AGC_IF_CFG 0xF411
+#define F367_QAM_AGC_IF_BWSEL 0xF41100F0
+#define F367_QAM_AGC_IF_FREEZE 0xF4110002
+
+/* AGC_RF_CFG */
+#define R367_QAM_AGC_RF_CFG 0xF412
+#define F367_QAM_AGC_RF_BWSEL 0xF4120070
+#define F367_QAM_AGC_RF_FREEZE 0xF4120002
+
+/* AGC_PWM_CFG */
+#define R367_QAM_AGC_PWM_CFG 0xF413
+#define F367_QAM_AGC_RF_PWM_TST 0xF4130080
+#define F367_QAM_AGC_RF_PWM_INV 0xF4130040
+#define F367_QAM_AGC_IF_PWM_TST 0xF4130008
+#define F367_QAM_AGC_IF_PWM_INV 0xF4130004
+#define F367_QAM_AGC_PWM_CLKDIV 0xF4130003
+
+/* AGC_PWR_REF_L */
+#define R367_QAM_AGC_PWR_REF_L 0xF414
+#define F367_QAM_AGC_PWRREF_LO 0xF41400FF
+
+/* AGC_PWR_REF_H */
+#define R367_QAM_AGC_PWR_REF_H 0xF415
+#define F367_QAM_AGC_PWRREF_HI 0xF4150003
+
+/* AGC_RF_TH_L */
+#define R367_QAM_AGC_RF_TH_L 0xF416
+#define F367_QAM_AGC_RF_TH_LO 0xF41600FF
+
+/* AGC_RF_TH_H */
+#define R367_QAM_AGC_RF_TH_H 0xF417
+#define F367_QAM_AGC_RF_TH_HI 0xF417000F
+
+/* AGC_IF_LTH_L */
+#define R367_QAM_AGC_IF_LTH_L 0xF418
+#define F367_QAM_AGC_IF_THLO_LO 0xF41800FF
+
+/* AGC_IF_LTH_H */
+#define R367_QAM_AGC_IF_LTH_H 0xF419
+#define F367_QAM_AGC_IF_THLO_HI 0xF419000F
+
+/* AGC_IF_HTH_L */
+#define R367_QAM_AGC_IF_HTH_L 0xF41A
+#define F367_QAM_AGC_IF_THHI_LO 0xF41A00FF
+
+/* AGC_IF_HTH_H */
+#define R367_QAM_AGC_IF_HTH_H 0xF41B
+#define F367_QAM_AGC_IF_THHI_HI 0xF41B000F
+
+/* AGC_PWR_RD_L */
+#define R367_QAM_AGC_PWR_RD_L 0xF41C
+#define F367_QAM_AGC_PWR_WORD_LO 0xF41C00FF
+
+/* AGC_PWR_RD_M */
+#define R367_QAM_AGC_PWR_RD_M 0xF41D
+#define F367_QAM_AGC_PWR_WORD_ME 0xF41D00FF
+
+/* AGC_PWR_RD_H */
+#define R367_QAM_AGC_PWR_RD_H 0xF41E
+#define F367_QAM_AGC_PWR_WORD_HI 0xF41E0003
+
+/* AGC_PWM_IFCMD_L */
+#define R367_QAM_AGC_PWM_IFCMD_L 0xF420
+#define F367_QAM_AGC_IF_PWMCMD_LO 0xF42000FF
+
+/* AGC_PWM_IFCMD_H */
+#define R367_QAM_AGC_PWM_IFCMD_H 0xF421
+#define F367_QAM_AGC_IF_PWMCMD_HI 0xF421000F
+
+/* AGC_PWM_RFCMD_L */
+#define R367_QAM_AGC_PWM_RFCMD_L 0xF422
+#define F367_QAM_AGC_RF_PWMCMD_LO 0xF42200FF
+
+/* AGC_PWM_RFCMD_H */
+#define R367_QAM_AGC_PWM_RFCMD_H 0xF423
+#define F367_QAM_AGC_RF_PWMCMD_HI 0xF423000F
+
+/* IQDEM_CFG */
+#define R367_QAM_IQDEM_CFG 0xF424
+#define F367_QAM_IQDEM_CLK_SEL 0xF4240004
+#define F367_QAM_IQDEM_INVIQ 0xF4240002
+#define F367_QAM_IQDEM_A2DTYPE 0xF4240001
+
+/* MIX_NCO_LL */
+#define R367_QAM_MIX_NCO_LL 0xF425
+#define F367_QAM_MIX_NCO_INC_LL 0xF42500FF
+
+/* MIX_NCO_HL */
+#define R367_QAM_MIX_NCO_HL 0xF426
+#define F367_QAM_MIX_NCO_INC_HL 0xF42600FF
+
+/* MIX_NCO_HH */
+#define R367_QAM_MIX_NCO_HH 0xF427
+#define F367_QAM_MIX_NCO_INVCNST 0xF4270080
+#define F367_QAM_MIX_NCO_INC_HH 0xF427007F
+
+/* SRC_NCO_LL */
+#define R367_QAM_SRC_NCO_LL 0xF428
+#define F367_QAM_SRC_NCO_INC_LL 0xF42800FF
+
+/* SRC_NCO_LH */
+#define R367_QAM_SRC_NCO_LH 0xF429
+#define F367_QAM_SRC_NCO_INC_LH 0xF42900FF
+
+/* SRC_NCO_HL */
+#define R367_QAM_SRC_NCO_HL 0xF42A
+#define F367_QAM_SRC_NCO_INC_HL 0xF42A00FF
+
+/* SRC_NCO_HH */
+#define R367_QAM_SRC_NCO_HH 0xF42B
+#define F367_QAM_SRC_NCO_INC_HH 0xF42B007F
+
+/* IQDEM_GAIN_SRC_L */
+#define R367_QAM_IQDEM_GAIN_SRC_L 0xF42C
+#define F367_QAM_GAIN_SRC_LO 0xF42C00FF
+
+/* IQDEM_GAIN_SRC_H */
+#define R367_QAM_IQDEM_GAIN_SRC_H 0xF42D
+#define F367_QAM_GAIN_SRC_HI 0xF42D0003
+
+/* IQDEM_DCRM_CFG_LL */
+#define R367_QAM_IQDEM_DCRM_CFG_LL 0xF430
+#define F367_QAM_DCRM0_DCIN_L 0xF43000FF
+
+/* IQDEM_DCRM_CFG_LH */
+#define R367_QAM_IQDEM_DCRM_CFG_LH 0xF431
+#define F367_QAM_DCRM1_I_DCIN_L 0xF43100FC
+#define F367_QAM_DCRM0_DCIN_H 0xF4310003
+
+/* IQDEM_DCRM_CFG_HL */
+#define R367_QAM_IQDEM_DCRM_CFG_HL 0xF432
+#define F367_QAM_DCRM1_Q_DCIN_L 0xF43200F0
+#define F367_QAM_DCRM1_I_DCIN_H 0xF432000F
+
+/* IQDEM_DCRM_CFG_HH */
+#define R367_QAM_IQDEM_DCRM_CFG_HH 0xF433
+#define F367_QAM_DCRM1_FRZ 0xF4330080
+#define F367_QAM_DCRM0_FRZ 0xF4330040
+#define F367_QAM_DCRM1_Q_DCIN_H 0xF433003F
+
+/* IQDEM_ADJ_COEFF0 */
+#define R367_QAM_IQDEM_ADJ_COEFF0 0xF434
+#define F367_QAM_ADJIIR_COEFF10_L 0xF43400FF
+
+/* IQDEM_ADJ_COEFF1 */
+#define R367_QAM_IQDEM_ADJ_COEFF1 0xF435
+#define F367_QAM_ADJIIR_COEFF11_L 0xF43500FC
+#define F367_QAM_ADJIIR_COEFF10_H 0xF4350003
+
+/* IQDEM_ADJ_COEFF2 */
+#define R367_QAM_IQDEM_ADJ_COEFF2 0xF436
+#define F367_QAM_ADJIIR_COEFF12_L 0xF43600F0
+#define F367_QAM_ADJIIR_COEFF11_H 0xF436000F
+
+/* IQDEM_ADJ_COEFF3 */
+#define R367_QAM_IQDEM_ADJ_COEFF3 0xF437
+#define F367_QAM_ADJIIR_COEFF20_L 0xF43700C0
+#define F367_QAM_ADJIIR_COEFF12_H 0xF437003F
+
+/* IQDEM_ADJ_COEFF4 */
+#define R367_QAM_IQDEM_ADJ_COEFF4 0xF438
+#define F367_QAM_ADJIIR_COEFF20_H 0xF43800FF
+
+/* IQDEM_ADJ_COEFF5 */
+#define R367_QAM_IQDEM_ADJ_COEFF5 0xF439
+#define F367_QAM_ADJIIR_COEFF21_L 0xF43900FF
+
+/* IQDEM_ADJ_COEFF6 */
+#define R367_QAM_IQDEM_ADJ_COEFF6 0xF43A
+#define F367_QAM_ADJIIR_COEFF22_L 0xF43A00FC
+#define F367_QAM_ADJIIR_COEFF21_H 0xF43A0003
+
+/* IQDEM_ADJ_COEFF7 */
+#define R367_QAM_IQDEM_ADJ_COEFF7 0xF43B
+#define F367_QAM_ADJIIR_COEFF22_H 0xF43B000F
+
+/* IQDEM_ADJ_EN */
+#define R367_QAM_IQDEM_ADJ_EN 0xF43C
+#define F367_QAM_ALLPASSFILT_EN 0xF43C0008
+#define F367_QAM_ADJ_AGC_EN 0xF43C0004
+#define F367_QAM_ADJ_COEFF_FRZ 0xF43C0002
+#define F367_QAM_ADJ_EN 0xF43C0001
+
+/* IQDEM_ADJ_AGC_REF */
+#define R367_QAM_IQDEM_ADJ_AGC_REF 0xF43D
+#define F367_QAM_ADJ_AGC_REF 0xF43D00FF
+
+/* ALLPASSFILT1 */
+#define R367_QAM_ALLPASSFILT1 0xF440
+#define F367_QAM_ALLPASSFILT_COEFF1_LO 0xF44000FF
+
+/* ALLPASSFILT2 */
+#define R367_QAM_ALLPASSFILT2 0xF441
+#define F367_QAM_ALLPASSFILT_COEFF1_ME 0xF44100FF
+
+/* ALLPASSFILT3 */
+#define R367_QAM_ALLPASSFILT3 0xF442
+#define F367_QAM_ALLPASSFILT_COEFF2_LO 0xF44200C0
+#define F367_QAM_ALLPASSFILT_COEFF1_HI 0xF442003F
+
+/* ALLPASSFILT4 */
+#define R367_QAM_ALLPASSFILT4 0xF443
+#define F367_QAM_ALLPASSFILT_COEFF2_MEL 0xF44300FF
+
+/* ALLPASSFILT5 */
+#define R367_QAM_ALLPASSFILT5 0xF444
+#define F367_QAM_ALLPASSFILT_COEFF2_MEH 0xF44400FF
+
+/* ALLPASSFILT6 */
+#define R367_QAM_ALLPASSFILT6 0xF445
+#define F367_QAM_ALLPASSFILT_COEFF3_LO 0xF44500F0
+#define F367_QAM_ALLPASSFILT_COEFF2_HI 0xF445000F
+
+/* ALLPASSFILT7 */
+#define R367_QAM_ALLPASSFILT7 0xF446
+#define F367_QAM_ALLPASSFILT_COEFF3_MEL 0xF44600FF
+
+/* ALLPASSFILT8 */
+#define R367_QAM_ALLPASSFILT8 0xF447
+#define F367_QAM_ALLPASSFILT_COEFF3_MEH 0xF44700FF
+
+/* ALLPASSFILT9 */
+#define R367_QAM_ALLPASSFILT9 0xF448
+#define F367_QAM_ALLPASSFILT_COEFF4_LO 0xF44800FC
+#define F367_QAM_ALLPASSFILT_COEFF3_HI 0xF4480003
+
+/* ALLPASSFILT10 */
+#define R367_QAM_ALLPASSFILT10 0xF449
+#define F367_QAM_ALLPASSFILT_COEFF4_ME 0xF44900FF
+
+/* ALLPASSFILT11 */
+#define R367_QAM_ALLPASSFILT11 0xF44A
+#define F367_QAM_ALLPASSFILT_COEFF4_HI 0xF44A00FF
+
+/* TRL_AGC_CFG */
+#define R367_QAM_TRL_AGC_CFG 0xF450
+#define F367_QAM_TRL_AGC_FREEZE 0xF4500080
+#define F367_QAM_TRL_AGC_REF 0xF450007F
+
+/* TRL_LPF_CFG */
+#define R367_QAM_TRL_LPF_CFG 0xF454
+#define F367_QAM_NYQPOINT_INV 0xF4540040
+#define F367_QAM_TRL_SHIFT 0xF4540030
+#define F367_QAM_NYQ_COEFF_SEL 0xF454000C
+#define F367_QAM_TRL_LPF_FREEZE 0xF4540002
+#define F367_QAM_TRL_LPF_CRT 0xF4540001
+
+/* TRL_LPF_ACQ_GAIN */
+#define R367_QAM_TRL_LPF_ACQ_GAIN 0xF455
+#define F367_QAM_TRL_GDIR_ACQ 0xF4550070
+#define F367_QAM_TRL_GINT_ACQ 0xF4550007
+
+/* TRL_LPF_TRK_GAIN */
+#define R367_QAM_TRL_LPF_TRK_GAIN 0xF456
+#define F367_QAM_TRL_GDIR_TRK 0xF4560070
+#define F367_QAM_TRL_GINT_TRK 0xF4560007
+
+/* TRL_LPF_OUT_GAIN */
+#define R367_QAM_TRL_LPF_OUT_GAIN 0xF457
+#define F367_QAM_TRL_GAIN_OUT 0xF4570007
+
+/* TRL_LOCKDET_LTH */
+#define R367_QAM_TRL_LOCKDET_LTH 0xF458
+#define F367_QAM_TRL_LCK_THLO 0xF4580007
+
+/* TRL_LOCKDET_HTH */
+#define R367_QAM_TRL_LOCKDET_HTH 0xF459
+#define F367_QAM_TRL_LCK_THHI 0xF45900FF
+
+/* TRL_LOCKDET_TRGVAL */
+#define R367_QAM_TRL_LOCKDET_TRGVAL 0xF45A
+#define F367_QAM_TRL_LCK_TRG 0xF45A00FF
+
+/* IQ_QAM */
+#define R367_QAM_IQ_QAM 0xF45C
+#define F367_QAM_IQ_INPUT 0xF45C0008
+#define F367_QAM_DETECT_MODE 0xF45C0007
+
+/* FSM_STATE */
+#define R367_QAM_FSM_STATE 0xF460
+#define F367_QAM_CRL_DFE 0xF4600080
+#define F367_QAM_DFE_START 0xF4600040
+#define F367_QAM_CTRLG_START 0xF4600030
+#define F367_QAM_FSM_FORCESTATE 0xF460000F
+
+/* FSM_CTL */
+#define R367_QAM_FSM_CTL 0xF461
+#define F367_QAM_FEC2_EN 0xF4610040
+#define F367_QAM_SIT_EN 0xF4610020
+#define F367_QAM_TRL_AHEAD 0xF4610010
+#define F367_QAM_TRL2_EN 0xF4610008
+#define F367_QAM_FSM_EQA1_EN 0xF4610004
+#define F367_QAM_FSM_BKP_DIS 0xF4610002
+#define F367_QAM_FSM_FORCE_EN 0xF4610001
+
+/* FSM_STS */
+#define R367_QAM_FSM_STS 0xF462
+#define F367_QAM_FSM_STATUS 0xF462000F
+
+/* FSM_SNR0_HTH */
+#define R367_QAM_FSM_SNR0_HTH 0xF463
+#define F367_QAM_SNR0_HTH 0xF46300FF
+
+/* FSM_SNR1_HTH */
+#define R367_QAM_FSM_SNR1_HTH 0xF464
+#define F367_QAM_SNR1_HTH 0xF46400FF
+
+/* FSM_SNR2_HTH */
+#define R367_QAM_FSM_SNR2_HTH 0xF465
+#define F367_QAM_SNR2_HTH 0xF46500FF
+
+/* FSM_SNR0_LTH */
+#define R367_QAM_FSM_SNR0_LTH 0xF466
+#define F367_QAM_SNR0_LTH 0xF46600FF
+
+/* FSM_SNR1_LTH */
+#define R367_QAM_FSM_SNR1_LTH 0xF467
+#define F367_QAM_SNR1_LTH 0xF46700FF
+
+/* FSM_EQA1_HTH */
+#define R367_QAM_FSM_EQA1_HTH 0xF468
+#define F367_QAM_SNR3_HTH_LO 0xF46800F0
+#define F367_QAM_EQA1_HTH 0xF468000F
+
+/* FSM_TEMPO */
+#define R367_QAM_FSM_TEMPO 0xF469
+#define F367_QAM_SIT 0xF46900C0
+#define F367_QAM_WST 0xF4690038
+#define F367_QAM_ELT 0xF4690006
+#define F367_QAM_SNR3_HTH_HI 0xF4690001
+
+/* FSM_CONFIG */
+#define R367_QAM_FSM_CONFIG 0xF46A
+#define F367_QAM_FEC2_DFEOFF 0xF46A0004
+#define F367_QAM_PRIT_STATE 0xF46A0002
+#define F367_QAM_MODMAP_STATE 0xF46A0001
+
+/* EQU_I_TESTTAP_L */
+#define R367_QAM_EQU_I_TESTTAP_L 0xF474
+#define F367_QAM_I_TEST_TAP_L 0xF47400FF
+
+/* EQU_I_TESTTAP_M */
+#define R367_QAM_EQU_I_TESTTAP_M 0xF475
+#define F367_QAM_I_TEST_TAP_M 0xF47500FF
+
+/* EQU_I_TESTTAP_H */
+#define R367_QAM_EQU_I_TESTTAP_H 0xF476
+#define F367_QAM_I_TEST_TAP_H 0xF476001F
+
+/* EQU_TESTAP_CFG */
+#define R367_QAM_EQU_TESTAP_CFG 0xF477
+#define F367_QAM_TEST_FFE_DFE_SEL 0xF4770040
+#define F367_QAM_TEST_TAP_SELECT 0xF477003F
+
+/* EQU_Q_TESTTAP_L */
+#define R367_QAM_EQU_Q_TESTTAP_L 0xF478
+#define F367_QAM_Q_TEST_TAP_L 0xF47800FF
+
+/* EQU_Q_TESTTAP_M */
+#define R367_QAM_EQU_Q_TESTTAP_M 0xF479
+#define F367_QAM_Q_TEST_TAP_M 0xF47900FF
+
+/* EQU_Q_TESTTAP_H */
+#define R367_QAM_EQU_Q_TESTTAP_H 0xF47A
+#define F367_QAM_Q_TEST_TAP_H 0xF47A001F
+
+/* EQU_TAP_CTRL */
+#define R367_QAM_EQU_TAP_CTRL 0xF47B
+#define F367_QAM_MTAP_FRZ 0xF47B0010
+#define F367_QAM_PRE_FREEZE 0xF47B0008
+#define F367_QAM_DFE_TAPMON_EN 0xF47B0004
+#define F367_QAM_FFE_TAPMON_EN 0xF47B0002
+#define F367_QAM_MTAP_ONLY 0xF47B0001
+
+/* EQU_CTR_CRL_CONTROL_L */
+#define R367_QAM_EQU_CTR_CRL_CONTROL_L 0xF47C
+#define F367_QAM_EQU_CTR_CRL_CONTROL_LO 0xF47C00FF
+
+/* EQU_CTR_CRL_CONTROL_H */
+#define R367_QAM_EQU_CTR_CRL_CONTROL_H 0xF47D
+#define F367_QAM_EQU_CTR_CRL_CONTROL_HI 0xF47D00FF
+
+/* EQU_CTR_HIPOW_L */
+#define R367_QAM_EQU_CTR_HIPOW_L 0xF47E
+#define F367_QAM_CTR_HIPOW_L 0xF47E00FF
+
+/* EQU_CTR_HIPOW_H */
+#define R367_QAM_EQU_CTR_HIPOW_H 0xF47F
+#define F367_QAM_CTR_HIPOW_H 0xF47F00FF
+
+/* EQU_I_EQU_LO */
+#define R367_QAM_EQU_I_EQU_LO 0xF480
+#define F367_QAM_EQU_I_EQU_L 0xF48000FF
+
+/* EQU_I_EQU_HI */
+#define R367_QAM_EQU_I_EQU_HI 0xF481
+#define F367_QAM_EQU_I_EQU_H 0xF4810003
+
+/* EQU_Q_EQU_LO */
+#define R367_QAM_EQU_Q_EQU_LO 0xF482
+#define F367_QAM_EQU_Q_EQU_L 0xF48200FF
+
+/* EQU_Q_EQU_HI */
+#define R367_QAM_EQU_Q_EQU_HI 0xF483
+#define F367_QAM_EQU_Q_EQU_H 0xF4830003
+
+/* EQU_MAPPER */
+#define R367_QAM_EQU_MAPPER 0xF484
+#define F367_QAM_QUAD_AUTO 0xF4840080
+#define F367_QAM_QUAD_INV 0xF4840040
+#define F367_QAM_QAM_MODE 0xF4840007
+
+/* EQU_SWEEP_RATE */
+#define R367_QAM_EQU_SWEEP_RATE 0xF485
+#define F367_QAM_SNR_PER 0xF48500C0
+#define F367_QAM_SWEEP_RATE 0xF485003F
+
+/* EQU_SNR_LO */
+#define R367_QAM_EQU_SNR_LO 0xF486
+#define F367_QAM_SNR_LO 0xF48600FF
+
+/* EQU_SNR_HI */
+#define R367_QAM_EQU_SNR_HI 0xF487
+#define F367_QAM_SNR_HI 0xF48700FF
+
+/* EQU_GAMMA_LO */
+#define R367_QAM_EQU_GAMMA_LO 0xF488
+#define F367_QAM_GAMMA_LO 0xF48800FF
+
+/* EQU_GAMMA_HI */
+#define R367_QAM_EQU_GAMMA_HI 0xF489
+#define F367_QAM_GAMMA_ME 0xF48900FF
+
+/* EQU_ERR_GAIN */
+#define R367_QAM_EQU_ERR_GAIN 0xF48A
+#define F367_QAM_EQA1MU 0xF48A0070
+#define F367_QAM_CRL2MU 0xF48A000E
+#define F367_QAM_GAMMA_HI 0xF48A0001
+
+/* EQU_RADIUS */
+#define R367_QAM_EQU_RADIUS 0xF48B
+#define F367_QAM_RADIUS 0xF48B00FF
+
+/* EQU_FFE_MAINTAP */
+#define R367_QAM_EQU_FFE_MAINTAP 0xF48C
+#define F367_QAM_FFE_MAINTAP_INIT 0xF48C00FF
+
+/* EQU_FFE_LEAKAGE */
+#define R367_QAM_EQU_FFE_LEAKAGE 0xF48E
+#define F367_QAM_LEAK_PER 0xF48E00F0
+#define F367_QAM_EQU_OUTSEL 0xF48E0002
+#define F367_QAM_PNT2DFE 0xF48E0001
+
+/* EQU_FFE_MAINTAP_POS */
+#define R367_QAM_EQU_FFE_MAINTAP_POS 0xF48F
+#define F367_QAM_FFE_LEAK_EN 0xF48F0080
+#define F367_QAM_DFE_LEAK_EN 0xF48F0040
+#define F367_QAM_FFE_MAINTAP_POS 0xF48F003F
+
+/* EQU_GAIN_WIDE */
+#define R367_QAM_EQU_GAIN_WIDE 0xF490
+#define F367_QAM_DFE_GAIN_WIDE 0xF49000F0
+#define F367_QAM_FFE_GAIN_WIDE 0xF490000F
+
+/* EQU_GAIN_NARROW */
+#define R367_QAM_EQU_GAIN_NARROW 0xF491
+#define F367_QAM_DFE_GAIN_NARROW 0xF49100F0
+#define F367_QAM_FFE_GAIN_NARROW 0xF491000F
+
+/* EQU_CTR_LPF_GAIN */
+#define R367_QAM_EQU_CTR_LPF_GAIN 0xF492
+#define F367_QAM_CTR_GTO 0xF4920080
+#define F367_QAM_CTR_GDIR 0xF4920070
+#define F367_QAM_SWEEP_EN 0xF4920008
+#define F367_QAM_CTR_GINT 0xF4920007
+
+/* EQU_CRL_LPF_GAIN */
+#define R367_QAM_EQU_CRL_LPF_GAIN 0xF493
+#define F367_QAM_CRL_GTO 0xF4930080
+#define F367_QAM_CRL_GDIR 0xF4930070
+#define F367_QAM_SWEEP_DIR 0xF4930008
+#define F367_QAM_CRL_GINT 0xF4930007
+
+/* EQU_GLOBAL_GAIN */
+#define R367_QAM_EQU_GLOBAL_GAIN 0xF494
+#define F367_QAM_CRL_GAIN 0xF49400F8
+#define F367_QAM_CTR_INC_GAIN 0xF4940004
+#define F367_QAM_CTR_FRAC 0xF4940003
+
+/* EQU_CRL_LD_SEN */
+#define R367_QAM_EQU_CRL_LD_SEN 0xF495
+#define F367_QAM_CTR_BADPOINT_EN 0xF4950080
+#define F367_QAM_CTR_GAIN 0xF4950070
+#define F367_QAM_LIMANEN 0xF4950008
+#define F367_QAM_CRL_LD_SEN 0xF4950007
+
+/* EQU_CRL_LD_VAL */
+#define R367_QAM_EQU_CRL_LD_VAL 0xF496
+#define F367_QAM_CRL_BISTH_LIMIT 0xF4960080
+#define F367_QAM_CARE_EN 0xF4960040
+#define F367_QAM_CRL_LD_PER 0xF4960030
+#define F367_QAM_CRL_LD_WST 0xF496000C
+#define F367_QAM_CRL_LD_TFS 0xF4960003
+
+/* EQU_CRL_TFR */
+#define R367_QAM_EQU_CRL_TFR 0xF497
+#define F367_QAM_CRL_LD_TFR 0xF49700FF
+
+/* EQU_CRL_BISTH_LO */
+#define R367_QAM_EQU_CRL_BISTH_LO 0xF498
+#define F367_QAM_CRL_BISTH_LO 0xF49800FF
+
+/* EQU_CRL_BISTH_HI */
+#define R367_QAM_EQU_CRL_BISTH_HI 0xF499
+#define F367_QAM_CRL_BISTH_HI 0xF49900FF
+
+/* EQU_SWEEP_RANGE_LO */
+#define R367_QAM_EQU_SWEEP_RANGE_LO 0xF49A
+#define F367_QAM_SWEEP_RANGE_LO 0xF49A00FF
+
+/* EQU_SWEEP_RANGE_HI */
+#define R367_QAM_EQU_SWEEP_RANGE_HI 0xF49B
+#define F367_QAM_SWEEP_RANGE_HI 0xF49B00FF
+
+/* EQU_CRL_LIMITER */
+#define R367_QAM_EQU_CRL_LIMITER 0xF49C
+#define F367_QAM_BISECTOR_EN 0xF49C0080
+#define F367_QAM_PHEST128_EN 0xF49C0040
+#define F367_QAM_CRL_LIM 0xF49C003F
+
+/* EQU_MODULUS_MAP */
+#define R367_QAM_EQU_MODULUS_MAP 0xF49D
+#define F367_QAM_PNT_DEPTH 0xF49D00E0
+#define F367_QAM_MODULUS_CMP 0xF49D001F
+
+/* EQU_PNT_GAIN */
+#define R367_QAM_EQU_PNT_GAIN 0xF49E
+#define F367_QAM_PNT_EN 0xF49E0080
+#define F367_QAM_MODULUSMAP_EN 0xF49E0040
+#define F367_QAM_PNT_GAIN 0xF49E003F
+
+/* FEC_AC_CTR_0 */
+#define R367_QAM_FEC_AC_CTR_0 0xF4A8
+#define F367_QAM_BE_BYPASS 0xF4A80020
+#define F367_QAM_REFRESH47 0xF4A80010
+#define F367_QAM_CT_NBST 0xF4A80008
+#define F367_QAM_TEI_ENA 0xF4A80004
+#define F367_QAM_DS_ENA 0xF4A80002
+#define F367_QAM_TSMF_EN 0xF4A80001
+
+/* FEC_AC_CTR_1 */
+#define R367_QAM_FEC_AC_CTR_1 0xF4A9
+#define F367_QAM_DEINT_DEPTH 0xF4A900FF
+
+/* FEC_AC_CTR_2 */
+#define R367_QAM_FEC_AC_CTR_2 0xF4AA
+#define F367_QAM_DEINT_M 0xF4AA00F8
+#define F367_QAM_DIS_UNLOCK 0xF4AA0004
+#define F367_QAM_DESCR_MODE 0xF4AA0003
+
+/* FEC_AC_CTR_3 */
+#define R367_QAM_FEC_AC_CTR_3 0xF4AB
+#define F367_QAM_DI_UNLOCK 0xF4AB0080
+#define F367_QAM_DI_FREEZE 0xF4AB0040
+#define F367_QAM_MISMATCH 0xF4AB0030
+#define F367_QAM_ACQ_MODE 0xF4AB000C
+#define F367_QAM_TRK_MODE 0xF4AB0003
+
+/* FEC_STATUS */
+#define R367_QAM_FEC_STATUS 0xF4AC
+#define F367_QAM_DEINT_SMCNTR 0xF4AC00E0
+#define F367_QAM_DEINT_SYNCSTATE 0xF4AC0018
+#define F367_QAM_DEINT_SYNLOST 0xF4AC0004
+#define F367_QAM_DESCR_SYNCSTATE 0xF4AC0002
+
+/* RS_COUNTER_0 */
+#define R367_QAM_RS_COUNTER_0 0xF4AE
+#define F367_QAM_BK_CT_L 0xF4AE00FF
+
+/* RS_COUNTER_1 */
+#define R367_QAM_RS_COUNTER_1 0xF4AF
+#define F367_QAM_BK_CT_H 0xF4AF00FF
+
+/* RS_COUNTER_2 */
+#define R367_QAM_RS_COUNTER_2 0xF4B0
+#define F367_QAM_CORR_CT_L 0xF4B000FF
+
+/* RS_COUNTER_3 */
+#define R367_QAM_RS_COUNTER_3 0xF4B1
+#define F367_QAM_CORR_CT_H 0xF4B100FF
+
+/* RS_COUNTER_4 */
+#define R367_QAM_RS_COUNTER_4 0xF4B2
+#define F367_QAM_UNCORR_CT_L 0xF4B200FF
+
+/* RS_COUNTER_5 */
+#define R367_QAM_RS_COUNTER_5 0xF4B3
+#define F367_QAM_UNCORR_CT_H 0xF4B300FF
+
+/* BERT_0 */
+#define R367_QAM_BERT_0 0xF4B4
+#define F367_QAM_RS_NOCORR 0xF4B40004
+#define F367_QAM_CT_HOLD 0xF4B40002
+#define F367_QAM_CT_CLEAR 0xF4B40001
+
+/* BERT_1 */
+#define R367_QAM_BERT_1 0xF4B5
+#define F367_QAM_BERT_ON 0xF4B50020
+#define F367_QAM_BERT_ERR_SRC 0xF4B50010
+#define F367_QAM_BERT_ERR_MODE 0xF4B50008
+#define F367_QAM_BERT_NBYTE 0xF4B50007
+
+/* BERT_2 */
+#define R367_QAM_BERT_2 0xF4B6
+#define F367_QAM_BERT_ERRCOUNT_L 0xF4B600FF
+
+/* BERT_3 */
+#define R367_QAM_BERT_3 0xF4B7
+#define F367_QAM_BERT_ERRCOUNT_H 0xF4B700FF
+
+/* OUTFORMAT_0 */
+#define R367_QAM_OUTFORMAT_0 0xF4B8
+#define F367_QAM_CLK_POLARITY 0xF4B80080
+#define F367_QAM_FEC_TYPE 0xF4B80040
+#define F367_QAM_SYNC_STRIP 0xF4B80008
+#define F367_QAM_TS_SWAP 0xF4B80004
+#define F367_QAM_OUTFORMAT 0xF4B80003
+
+/* OUTFORMAT_1 */
+#define R367_QAM_OUTFORMAT_1 0xF4B9
+#define F367_QAM_CI_DIVRANGE 0xF4B900FF
+
+/* SMOOTHER_2 */
+#define R367_QAM_SMOOTHER_2 0xF4BE
+#define F367_QAM_FIFO_BYPASS 0xF4BE0020
+
+/* TSMF_CTRL_0 */
+#define R367_QAM_TSMF_CTRL_0 0xF4C0
+#define F367_QAM_TS_NUMBER 0xF4C0001E
+#define F367_QAM_SEL_MODE 0xF4C00001
+
+/* TSMF_CTRL_1 */
+#define R367_QAM_TSMF_CTRL_1 0xF4C1
+#define F367_QAM_CHECK_ERROR_BIT 0xF4C10080
+#define F367_QAM_CHCK_F_SYNC 0xF4C10040
+#define F367_QAM_H_MODE 0xF4C10008
+#define F367_QAM_D_V_MODE 0xF4C10004
+#define F367_QAM_MODE 0xF4C10003
+
+/* TSMF_CTRL_3 */
+#define R367_QAM_TSMF_CTRL_3 0xF4C3
+#define F367_QAM_SYNC_IN_COUNT 0xF4C300F0
+#define F367_QAM_SYNC_OUT_COUNT 0xF4C3000F
+
+/* TS_ON_ID_0 */
+#define R367_QAM_TS_ON_ID_0 0xF4C4
+#define F367_QAM_TS_ID_L 0xF4C400FF
+
+/* TS_ON_ID_1 */
+#define R367_QAM_TS_ON_ID_1 0xF4C5
+#define F367_QAM_TS_ID_H 0xF4C500FF
+
+/* TS_ON_ID_2 */
+#define R367_QAM_TS_ON_ID_2 0xF4C6
+#define F367_QAM_ON_ID_L 0xF4C600FF
+
+/* TS_ON_ID_3 */
+#define R367_QAM_TS_ON_ID_3 0xF4C7
+#define F367_QAM_ON_ID_H 0xF4C700FF
+
+/* RE_STATUS_0 */
+#define R367_QAM_RE_STATUS_0 0xF4C8
+#define F367_QAM_RECEIVE_STATUS_L 0xF4C800FF
+
+/* RE_STATUS_1 */
+#define R367_QAM_RE_STATUS_1 0xF4C9
+#define F367_QAM_RECEIVE_STATUS_LH 0xF4C900FF
+
+/* RE_STATUS_2 */
+#define R367_QAM_RE_STATUS_2 0xF4CA
+#define F367_QAM_RECEIVE_STATUS_HL 0xF4CA00FF
+
+/* RE_STATUS_3 */
+#define R367_QAM_RE_STATUS_3 0xF4CB
+#define F367_QAM_RECEIVE_STATUS_HH 0xF4CB003F
+
+/* TS_STATUS_0 */
+#define R367_QAM_TS_STATUS_0 0xF4CC
+#define F367_QAM_TS_STATUS_L 0xF4CC00FF
+
+/* TS_STATUS_1 */
+#define R367_QAM_TS_STATUS_1 0xF4CD
+#define F367_QAM_TS_STATUS_H 0xF4CD007F
+
+/* TS_STATUS_2 */
+#define R367_QAM_TS_STATUS_2 0xF4CE
+#define F367_QAM_ERROR 0xF4CE0080
+#define F367_QAM_EMERGENCY 0xF4CE0040
+#define F367_QAM_CRE_TS 0xF4CE0030
+#define F367_QAM_VER 0xF4CE000E
+#define F367_QAM_M_LOCK 0xF4CE0001
+
+/* TS_STATUS_3 */
+#define R367_QAM_TS_STATUS_3 0xF4CF
+#define F367_QAM_UPDATE_READY 0xF4CF0080
+#define F367_QAM_END_FRAME_HEADER 0xF4CF0040
+#define F367_QAM_CONTCNT 0xF4CF0020
+#define F367_QAM_TS_IDENTIFIER_SEL 0xF4CF000F
+
+/* T_O_ID_0 */
+#define R367_QAM_T_O_ID_0 0xF4D0
+#define F367_QAM_ON_ID_I_L 0xF4D000FF
+
+/* T_O_ID_1 */
+#define R367_QAM_T_O_ID_1 0xF4D1
+#define F367_QAM_ON_ID_I_H 0xF4D100FF
+
+/* T_O_ID_2 */
+#define R367_QAM_T_O_ID_2 0xF4D2
+#define F367_QAM_TS_ID_I_L 0xF4D200FF
+
+/* T_O_ID_3 */
+#define R367_QAM_T_O_ID_3 0xF4D3
+#define F367_QAM_TS_ID_I_H 0xF4D300FF
+
+#endif