parent
fda22c6a1d
commit
230930e975
@ -1,196 +0,0 @@ |
|||||||
#ifndef _R820T_TUNER_H |
|
||||||
#define _R820T_TUNER_H |
|
||||||
|
|
||||||
#define R820T_I2C_ADDR 0x34 |
|
||||||
#define R820T_CHECK_ADDR 0x00 |
|
||||||
#define R820T_CHECK_VAL 0x69 |
|
||||||
|
|
||||||
#define R820T_IF_FREQ 3570000 |
|
||||||
|
|
||||||
//***************************************************************
|
|
||||||
//* INCLUDES.H
|
|
||||||
//***************************************************************
|
|
||||||
#define VERSION "R820T_v1.49_ASTRO" |
|
||||||
#define VER_NUM 49 |
|
||||||
|
|
||||||
#define USE_16M_XTAL FALSE |
|
||||||
#define R828_Xtal 28800 |
|
||||||
|
|
||||||
#define USE_DIPLEXER FALSE |
|
||||||
#define TUNER_CLK_OUT TRUE |
|
||||||
|
|
||||||
#ifndef _UINT_X_ |
|
||||||
#define _UINT_X_ 1 |
|
||||||
typedef unsigned char UINT8; |
|
||||||
typedef unsigned short UINT16; |
|
||||||
typedef unsigned int UINT32; |
|
||||||
#endif |
|
||||||
|
|
||||||
#define TRUE 1 |
|
||||||
#define FALSE 0 |
|
||||||
|
|
||||||
#define FUNCTION_SUCCESS 0 |
|
||||||
#define FUNCTION_ERROR -1 |
|
||||||
|
|
||||||
typedef enum _R828_ErrCode |
|
||||||
{ |
|
||||||
RT_Success, |
|
||||||
RT_Fail |
|
||||||
}R828_ErrCode; |
|
||||||
|
|
||||||
typedef enum _Rafael_Chip_Type //Don't modify chip list
|
|
||||||
{ |
|
||||||
R828 = 0, |
|
||||||
R828D, |
|
||||||
R828S, |
|
||||||
R820T, |
|
||||||
R820C, |
|
||||||
R620D, |
|
||||||
R620S |
|
||||||
}Rafael_Chip_Type; |
|
||||||
//----------------------------------------------------------//
|
|
||||||
// R828 Parameter //
|
|
||||||
//----------------------------------------------------------//
|
|
||||||
|
|
||||||
extern UINT8 R828_ADDRESS; |
|
||||||
|
|
||||||
#define DIP_FREQ 320000 |
|
||||||
#define IMR_TRIAL 9 |
|
||||||
#define VCO_pwr_ref 0x02 |
|
||||||
|
|
||||||
extern UINT32 R828_IF_khz; |
|
||||||
extern UINT32 R828_CAL_LO_khz; |
|
||||||
extern UINT8 R828_IMR_point_num; |
|
||||||
extern UINT8 R828_IMR_done_flag; |
|
||||||
extern UINT8 Rafael_Chip; |
|
||||||
|
|
||||||
typedef enum _R828_Standard_Type //Don't remove standand list!!
|
|
||||||
{ |
|
||||||
NTSC_MN = 0, |
|
||||||
PAL_I, |
|
||||||
PAL_DK, |
|
||||||
PAL_B_7M, //no use
|
|
||||||
PAL_BGH_8M, //for PAL B/G, PAL G/H
|
|
||||||
SECAM_L, |
|
||||||
SECAM_L1_INV, //for SECAM L'
|
|
||||||
SECAM_L1, //no use
|
|
||||||
ATV_SIZE, |
|
||||||
DVB_T_6M = ATV_SIZE, |
|
||||||
DVB_T_7M, |
|
||||||
DVB_T_7M_2, |
|
||||||
DVB_T_8M, |
|
||||||
DVB_T2_6M, |
|
||||||
DVB_T2_7M, |
|
||||||
DVB_T2_7M_2, |
|
||||||
DVB_T2_8M, |
|
||||||
DVB_T2_1_7M, |
|
||||||
DVB_T2_10M, |
|
||||||
DVB_C_8M, |
|
||||||
DVB_C_6M, |
|
||||||
ISDB_T, |
|
||||||
DTMB, |
|
||||||
R828_ATSC, |
|
||||||
FM, |
|
||||||
STD_SIZE |
|
||||||
}R828_Standard_Type; |
|
||||||
|
|
||||||
extern UINT8 R828_Fil_Cal_flag[STD_SIZE]; |
|
||||||
|
|
||||||
typedef enum _R828_SetFreq_Type |
|
||||||
{ |
|
||||||
FAST_MODE = TRUE, |
|
||||||
NORMAL_MODE = FALSE |
|
||||||
}R828_SetFreq_Type; |
|
||||||
|
|
||||||
typedef enum _R828_LoopThrough_Type |
|
||||||
{ |
|
||||||
LOOP_THROUGH = TRUE, |
|
||||||
SIGLE_IN = FALSE |
|
||||||
}R828_LoopThrough_Type; |
|
||||||
|
|
||||||
|
|
||||||
typedef enum _R828_InputMode_Type |
|
||||||
{ |
|
||||||
AIR_IN = 0, |
|
||||||
CABLE_IN_1, |
|
||||||
CABLE_IN_2 |
|
||||||
}R828_InputMode_Type; |
|
||||||
|
|
||||||
typedef enum _R828_IfAgc_Type |
|
||||||
{ |
|
||||||
IF_AGC1 = 0, |
|
||||||
IF_AGC2 |
|
||||||
}R828_IfAgc_Type; |
|
||||||
|
|
||||||
typedef enum _R828_GPIO_Type |
|
||||||
{ |
|
||||||
HI_SIG = TRUE, |
|
||||||
LO_SIG = FALSE |
|
||||||
}R828_GPIO_Type; |
|
||||||
|
|
||||||
typedef struct _R828_Set_Info |
|
||||||
{ |
|
||||||
UINT32 RF_Hz; |
|
||||||
UINT32 RF_KHz; |
|
||||||
R828_Standard_Type R828_Standard; |
|
||||||
R828_LoopThrough_Type RT_Input; |
|
||||||
R828_InputMode_Type RT_InputMode; |
|
||||||
R828_IfAgc_Type R828_IfAgc_Select;
|
|
||||||
}R828_Set_Info; |
|
||||||
|
|
||||||
typedef struct _R828_RF_Gain_Info |
|
||||||
{ |
|
||||||
UINT8 RF_gain1; |
|
||||||
UINT8 RF_gain2; |
|
||||||
UINT8 RF_gain_comb; |
|
||||||
}R828_RF_Gain_Info; |
|
||||||
|
|
||||||
typedef enum _R828_RF_Gain_TYPE |
|
||||||
{ |
|
||||||
RF_AUTO = 0, |
|
||||||
RF_MANUAL |
|
||||||
}R828_RF_Gain_TYPE; |
|
||||||
|
|
||||||
typedef struct _R828_I2C_LEN_TYPE |
|
||||||
{ |
|
||||||
UINT8 RegAddr; |
|
||||||
UINT8 Data[50]; |
|
||||||
UINT8 Len; |
|
||||||
}R828_I2C_LEN_TYPE; |
|
||||||
|
|
||||||
typedef struct _R828_I2C_TYPE |
|
||||||
{ |
|
||||||
UINT8 RegAddr; |
|
||||||
UINT8 Data; |
|
||||||
}R828_I2C_TYPE; |
|
||||||
//----------------------------------------------------------//
|
|
||||||
// R828 Function //
|
|
||||||
//----------------------------------------------------------//
|
|
||||||
R828_ErrCode R828_Init(void *pTuner); |
|
||||||
R828_ErrCode R828_Standby(void *pTuner, R828_LoopThrough_Type R828_LoopSwitch); |
|
||||||
R828_ErrCode R828_GPIO(void *pTuner, R828_GPIO_Type R828_GPIO_Conrl); |
|
||||||
R828_ErrCode R828_SetStandard(void *pTuner, R828_Standard_Type RT_Standard); |
|
||||||
R828_ErrCode R828_SetFrequency(void *pTuner, R828_Set_Info R828_INFO, R828_SetFreq_Type R828_SetFreqMode); |
|
||||||
R828_ErrCode R828_GetRfGain(void *pTuner, R828_RF_Gain_Info *pR828_rf_gain); |
|
||||||
R828_ErrCode R828_SetRfGain(void *pTuner, int gain); |
|
||||||
R828_ErrCode R828_RfGainMode(void *pTuner, int manual); |
|
||||||
|
|
||||||
int |
|
||||||
r820t_SetRfFreqHz( |
|
||||||
void *pTuner, |
|
||||||
unsigned long RfFreqHz |
|
||||||
); |
|
||||||
|
|
||||||
int |
|
||||||
r820t_SetStandardMode( |
|
||||||
void *pTuner, |
|
||||||
int StandardMode |
|
||||||
); |
|
||||||
|
|
||||||
int |
|
||||||
r820t_SetStandby( |
|
||||||
void *pTuner, |
|
||||||
int LoopThroughType |
|
||||||
); |
|
||||||
|
|
||||||
#endif /* _R820T_TUNER_H */ |
|
@ -0,0 +1,116 @@ |
|||||||
|
/*
|
||||||
|
* Rafael Micro R820T/R828D driver |
||||||
|
* |
||||||
|
* Copyright (C) 2013 Mauro Carvalho Chehab <mchehab@redhat.com> |
||||||
|
* Copyright (C) 2013 Steve Markgraf <steve@steve-m.de> |
||||||
|
* |
||||||
|
* This driver is a heavily modified version of the driver found in the |
||||||
|
* Linux kernel: |
||||||
|
* http://git.linuxtv.org/linux-2.6.git/history/HEAD:/drivers/media/tuners/r820t.c
|
||||||
|
* |
||||||
|
* This program is free software: you can redistribute it and/or modify |
||||||
|
* it under the terms of the GNU General Public License as published by |
||||||
|
* the Free Software Foundation, either version 2 of the License, or |
||||||
|
* (at your option) any later version. |
||||||
|
* |
||||||
|
* This program is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef R82XX_H |
||||||
|
#define R82XX_H |
||||||
|
|
||||||
|
#define R820T_I2C_ADDR 0x34 |
||||||
|
#define R820T_CHECK_ADDR 0x00 |
||||||
|
#define R820T_CHECK_VAL 0x69 |
||||||
|
|
||||||
|
#define R82XX_IF_FREQ 3570000 |
||||||
|
|
||||||
|
#define REG_SHADOW_START 5 |
||||||
|
#define NUM_REGS 30 |
||||||
|
#define NUM_IMR 5 |
||||||
|
#define IMR_TRIAL 9 |
||||||
|
|
||||||
|
#define VER_NUM 49 |
||||||
|
|
||||||
|
enum r82xx_chip { |
||||||
|
CHIP_R820T, |
||||||
|
CHIP_R620D, |
||||||
|
CHIP_R828D, |
||||||
|
CHIP_R828, |
||||||
|
CHIP_R828S, |
||||||
|
CHIP_R820C, |
||||||
|
}; |
||||||
|
|
||||||
|
enum r82xx_tuner_type { |
||||||
|
TUNER_RADIO = 1, |
||||||
|
TUNER_ANALOG_TV, |
||||||
|
TUNER_DIGITAL_TV |
||||||
|
}; |
||||||
|
|
||||||
|
enum r82xx_xtal_cap_value { |
||||||
|
XTAL_LOW_CAP_30P = 0, |
||||||
|
XTAL_LOW_CAP_20P, |
||||||
|
XTAL_LOW_CAP_10P, |
||||||
|
XTAL_LOW_CAP_0P, |
||||||
|
XTAL_HIGH_CAP_0P |
||||||
|
}; |
||||||
|
|
||||||
|
struct r82xx_config { |
||||||
|
uint8_t i2c_addr; |
||||||
|
uint32_t xtal; |
||||||
|
enum r82xx_chip rafael_chip; |
||||||
|
unsigned int max_i2c_msg_len; |
||||||
|
int use_diplexer; |
||||||
|
int use_predetect; |
||||||
|
}; |
||||||
|
|
||||||
|
struct r82xx_priv { |
||||||
|
struct r82xx_config *cfg; |
||||||
|
|
||||||
|
uint8_t regs[NUM_REGS]; |
||||||
|
uint8_t buf[NUM_REGS + 1]; |
||||||
|
enum r82xx_xtal_cap_value xtal_cap_sel; |
||||||
|
uint16_t pll; /* kHz */ |
||||||
|
uint32_t int_freq; |
||||||
|
uint8_t fil_cal_code; |
||||||
|
int has_lock; |
||||||
|
int init_done; |
||||||
|
|
||||||
|
/* Store current mode */ |
||||||
|
uint32_t delsys; |
||||||
|
enum r82xx_tuner_type type; |
||||||
|
|
||||||
|
uint32_t bw; /* in MHz */ |
||||||
|
|
||||||
|
void *rtl_dev; |
||||||
|
}; |
||||||
|
|
||||||
|
struct r82xx_freq_range { |
||||||
|
uint32_t freq; |
||||||
|
uint8_t open_d; |
||||||
|
uint8_t rf_mux_ploy; |
||||||
|
uint8_t tf_c; |
||||||
|
uint8_t xtal_cap20p; |
||||||
|
uint8_t xtal_cap10p; |
||||||
|
uint8_t xtal_cap0p; |
||||||
|
}; |
||||||
|
|
||||||
|
enum r82xx_delivery_system { |
||||||
|
SYS_UNDEFINED, |
||||||
|
SYS_DVBT, |
||||||
|
SYS_DVBT2, |
||||||
|
SYS_ISDBT, |
||||||
|
}; |
||||||
|
|
||||||
|
int r82xx_standby(struct r82xx_priv *priv); |
||||||
|
int r82xx_init(struct r82xx_priv *priv); |
||||||
|
int r82xx_set_freq(struct r82xx_priv *priv, uint32_t freq); |
||||||
|
int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain); |
||||||
|
|
||||||
|
#endif |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue