2019-05-31 01:09:32 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2009-12-04 13:27:57 -03:00
/*
* Linux - DVB Driver for DiBcom ' s DiB0090 base - band RF Tuner .
*
* Copyright ( C ) 2005 - 7 DiBcom ( http : //www.dibcom.fr/)
*/
# ifndef DIB0090_H
# define DIB0090_H
struct dvb_frontend ;
struct i2c_adapter ;
# define DEFAULT_DIB0090_I2C_ADDRESS 0x60
struct dib0090_io_config {
u32 clock_khz ;
u8 pll_bypass : 1 ;
u8 pll_range : 1 ;
u8 pll_prediv : 6 ;
u8 pll_loopdiv : 6 ;
u8 adc_clock_ratio ; /* valid is 8, 7 ,6 */
2009-12-07 07:49:40 -03:00
u16 pll_int_loop_filt ;
2009-12-04 13:27:57 -03:00
} ;
2011-01-04 04:27:11 -03:00
struct dib0090_wbd_slope {
u16 max_freq ; /* for every frequency less than or equal to that field: this information is correct */
u16 slope_cold ;
u16 offset_cold ;
u16 slope_hot ;
u16 offset_hot ;
u8 wbd_gain ;
} ;
struct dib0090_low_if_offset_table {
int std ;
u32 RF_freq ;
s32 offset_khz ;
} ;
2009-12-04 13:27:57 -03:00
struct dib0090_config {
struct dib0090_io_config io ;
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 ;
int ( * get_adc_power ) ( struct dvb_frontend * ) ;
u8 clkouttobamse : 1 ; /* activate or deactivate clock output */
u8 analog_output ;
u8 i2c_address ;
/* add drives and other things if necessary */
u16 wbd_vhf_offset ;
u16 wbd_cband_offset ;
u8 use_pwm_agc ;
u8 clkoutdrive ;
2011-01-04 04:27:11 -03:00
u8 ls_cfg_pad_drv ;
u8 data_tx_drv ;
u8 in_soc ;
const struct dib0090_low_if_offset_table * low_if ;
u8 fref_clock_ratio ;
u16 force_cband_input ;
struct dib0090_wbd_slope * wbd ;
2011-08-05 10:39:15 -03:00
u8 is_dib7090e ;
u8 force_crystal_mode ;
2009-12-04 13:27:57 -03:00
} ;
2015-02-18 14:12:42 -03:00
# if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0090)
2009-12-04 13:27:57 -03:00
extern struct dvb_frontend * dib0090_register ( struct dvb_frontend * fe , struct i2c_adapter * i2c , const struct dib0090_config * config ) ;
2011-01-04 04:27:11 -03:00
extern struct dvb_frontend * dib0090_fw_register ( struct dvb_frontend * fe , struct i2c_adapter * i2c , const struct dib0090_config * config ) ;
2009-12-04 13:27:57 -03:00
extern void dib0090_dcc_freq ( struct dvb_frontend * fe , u8 fast ) ;
extern void dib0090_pwm_gain_reset ( struct dvb_frontend * fe ) ;
2011-08-05 13:49:33 -03:00
extern u16 dib0090_get_wbd_target ( struct dvb_frontend * tuner ) ;
extern u16 dib0090_get_wbd_offset ( struct dvb_frontend * fe ) ;
2009-12-04 13:27:57 -03:00
extern int dib0090_gain_control ( struct dvb_frontend * fe ) ;
extern enum frontend_tune_state dib0090_get_tune_state ( struct dvb_frontend * fe ) ;
extern int dib0090_set_tune_state ( struct dvb_frontend * fe , enum frontend_tune_state tune_state ) ;
extern void dib0090_get_current_gain ( struct dvb_frontend * fe , u16 * rf , u16 * bb , u16 * rf_gain_limit , u16 * rflt ) ;
2011-08-05 10:39:15 -03:00
extern void dib0090_set_dc_servo ( struct dvb_frontend * fe , u8 DC_servo_cutoff ) ;
2011-08-05 13:49:33 -03:00
extern int dib0090_set_switch ( struct dvb_frontend * fe , u8 sw1 , u8 sw2 , u8 sw3 ) ;
extern int dib0090_set_vga ( struct dvb_frontend * fe , u8 onoff ) ;
extern int dib0090_update_rframp_7090 ( struct dvb_frontend * fe ,
u8 cfg_sensitivity ) ;
extern int dib0090_update_tuning_table_7090 ( struct dvb_frontend * fe ,
u8 cfg_sensitivity ) ;
2009-12-04 13:27:57 -03:00
# else
2011-08-05 13:49:33 -03:00
static inline struct dvb_frontend * dib0090_register ( struct dvb_frontend * fe , struct i2c_adapter * i2c , const struct dib0090_config * config )
2009-12-04 13:27:57 -03:00
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return NULL ;
}
2011-01-04 04:27:11 -03:00
static inline struct dvb_frontend * dib0090_fw_register ( struct dvb_frontend * fe , struct i2c_adapter * i2c , struct dib0090_config * config )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return NULL ;
}
2009-12-04 13:27:57 -03:00
static inline void dib0090_dcc_freq ( struct dvb_frontend * fe , u8 fast )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
}
static inline void dib0090_pwm_gain_reset ( struct dvb_frontend * fe )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
}
2011-08-05 13:49:33 -03:00
static inline u16 dib0090_get_wbd_target ( struct dvb_frontend * tuner )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return 0 ;
}
static inline u16 dib0090_get_wbd_offset ( struct dvb_frontend * fe )
2009-12-04 13:27:57 -03:00
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return 0 ;
}
static inline int dib0090_gain_control ( struct dvb_frontend * fe )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return - ENODEV ;
}
static inline enum frontend_tune_state dib0090_get_tune_state ( struct dvb_frontend * fe )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return CT_DONE ;
}
static inline int dib0090_set_tune_state ( struct dvb_frontend * fe , enum frontend_tune_state tune_state )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return - ENODEV ;
}
static inline void dib0090_get_current_gain ( struct dvb_frontend * fe , u16 * rf , u16 * bb , u16 * rf_gain_limit , u16 * rflt )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
}
2011-08-05 10:39:15 -03:00
static inline void dib0090_set_dc_servo ( struct dvb_frontend * fe , u8 DC_servo_cutoff )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
}
2011-08-05 13:49:33 -03:00
static inline int dib0090_set_switch ( struct dvb_frontend * fe ,
u8 sw1 , u8 sw2 , u8 sw3 )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return - ENODEV ;
}
static inline int dib0090_set_vga ( struct dvb_frontend * fe , u8 onoff )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return - ENODEV ;
}
static inline int dib0090_update_rframp_7090 ( struct dvb_frontend * fe ,
u8 cfg_sensitivity )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return - ENODEV ;
}
static inline int dib0090_update_tuning_table_7090 ( struct dvb_frontend * fe ,
u8 cfg_sensitivity )
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return - ENODEV ;
}
2009-12-04 13:27:57 -03:00
# endif
# endif