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