2007-07-30 12:49:04 -03:00
/*
* Linux - DVB Driver for DiBcom ' s DiB0070 base - band RF Tuner .
*
* Copyright ( C ) 2005 - 7 DiBcom ( http : //www.dibcom.fr/)
*
* 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 , version 2.
*/
# ifndef DIB0070_H
# define DIB0070_H
struct dvb_frontend ;
struct i2c_adapter ;
# define DEFAULT_DIB0070_I2C_ADDRESS 0x60
2009-08-03 13:43:40 -03:00
struct dib0070_wbd_gain_cfg {
2009-08-17 05:13:28 -03:00
u16 freq ;
u16 wbd_gain_val ;
2009-08-03 13:43:40 -03:00
} ;
2007-07-30 12:49:04 -03:00
struct dib0070_config {
u8 i2c_address ;
/* tuner pins controlled externally */
int ( * reset ) ( struct dvb_frontend * , int ) ;
int ( * sleep ) ( struct dvb_frontend * , int ) ;
/* offset in kHz */
int freq_offset_khz_uhf ;
int freq_offset_khz_vhf ;
2009-08-17 05:13:28 -03:00
u8 osc_buffer_state ; /* 0= normal, 1= tri-state */
u32 clock_khz ;
u8 clock_pad_drive ; /* (Drive + 1) * 2mA */
2007-07-30 12:49:04 -03:00
2009-08-17 05:13:28 -03:00
u8 invert_iq ; /* invert Q - in case I or Q is inverted on the board */
2007-07-30 12:49:04 -03:00
2009-08-17 05:13:28 -03:00
u8 force_crystal_mode ; /* if == 0 -> decision is made in the driver default: <24 -> 2, >=24 -> 1 */
2007-07-30 12:49:04 -03:00
u8 flip_chip ;
2009-08-17 05:13:28 -03:00
u8 enable_third_order_filter ;
u8 charge_pump ;
2009-08-03 13:43:40 -03:00
2009-08-17 05:13:28 -03:00
const struct dib0070_wbd_gain_cfg * wbd_gain ;
2009-08-03 13:43:40 -03:00
2009-08-17 05:13:28 -03:00
u8 vga_filter ;
2007-07-30 12:49:04 -03:00
} ;
2015-02-18 14:12:42 -03:00
# if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0070)
2009-08-17 05:13:28 -03:00
extern struct dvb_frontend * dib0070_attach ( struct dvb_frontend * fe , struct i2c_adapter * i2c , struct dib0070_config * cfg ) ;
2008-08-09 14:21:58 -03:00
extern u16 dib0070_wbd_offset ( struct dvb_frontend * ) ;
2009-09-27 19:11:34 -03:00
extern void dib0070_ctrl_agc_filter ( struct dvb_frontend * , u8 open ) ;
2009-12-04 13:27:57 -03:00
extern u8 dib0070_get_rf_output ( struct dvb_frontend * fe ) ;
extern int dib0070_set_rf_output ( struct dvb_frontend * fe , u8 no ) ;
2008-06-05 13:08:29 -03:00
# else
2009-08-17 05:13:28 -03:00
static inline struct dvb_frontend * dib0070_attach ( struct dvb_frontend * fe , struct i2c_adapter * i2c , struct dib0070_config * cfg )
2008-06-05 13:08:29 -03:00
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return NULL ;
}
2008-08-09 14:21:58 -03:00
static inline u16 dib0070_wbd_offset ( struct dvb_frontend * fe )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
2009-12-04 13:27:57 -03:00
return 0 ;
2008-08-09 14:21:58 -03:00
}
2009-09-27 19:11:34 -03:00
static inline void dib0070_ctrl_agc_filter ( struct dvb_frontend * fe , u8 open )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
}
2008-06-05 13:08:29 -03:00
# endif
2007-07-30 12:49:04 -03:00
# endif