0001
0002
0003
0004
0005
0006
0007 #ifndef DIB0070_H
0008 #define DIB0070_H
0009
0010 struct dvb_frontend;
0011 struct i2c_adapter;
0012
0013 #define DEFAULT_DIB0070_I2C_ADDRESS 0x60
0014
0015 struct dib0070_wbd_gain_cfg {
0016 u16 freq;
0017 u16 wbd_gain_val;
0018 };
0019
0020 struct dib0070_config {
0021 u8 i2c_address;
0022
0023
0024 int (*reset) (struct dvb_frontend *, int);
0025 int (*sleep) (struct dvb_frontend *, int);
0026
0027
0028 int freq_offset_khz_uhf;
0029 int freq_offset_khz_vhf;
0030
0031 u8 osc_buffer_state;
0032 u32 clock_khz;
0033 u8 clock_pad_drive;
0034
0035 u8 invert_iq;
0036
0037 u8 force_crystal_mode;
0038
0039 u8 flip_chip;
0040 u8 enable_third_order_filter;
0041 u8 charge_pump;
0042
0043 const struct dib0070_wbd_gain_cfg *wbd_gain;
0044
0045 u8 vga_filter;
0046 };
0047
0048 #if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0070)
0049 extern struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg);
0050 extern u16 dib0070_wbd_offset(struct dvb_frontend *);
0051 extern void dib0070_ctrl_agc_filter(struct dvb_frontend *, u8 open);
0052 extern u8 dib0070_get_rf_output(struct dvb_frontend *fe);
0053 extern int dib0070_set_rf_output(struct dvb_frontend *fe, u8 no);
0054 #else
0055 static inline struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg)
0056 {
0057 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
0058 return NULL;
0059 }
0060
0061 static inline u16 dib0070_wbd_offset(struct dvb_frontend *fe)
0062 {
0063 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
0064 return 0;
0065 }
0066
0067 static inline void dib0070_ctrl_agc_filter(struct dvb_frontend *fe, u8 open)
0068 {
0069 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
0070 }
0071 #endif
0072
0073 #endif