Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Linux-DVB Driver for DiBcom's DiB0070 base-band RF Tuner.
0004  *
0005  * Copyright (C) 2005-7 DiBcom (http://www.dibcom.fr/)
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     /* tuner pins controlled externally */
0024     int (*reset) (struct dvb_frontend *, int);
0025     int (*sleep) (struct dvb_frontend *, int);
0026 
0027     /*  offset in kHz */
0028     int freq_offset_khz_uhf;
0029     int freq_offset_khz_vhf;
0030 
0031     u8 osc_buffer_state;    /* 0= normal, 1= tri-state */
0032     u32 clock_khz;
0033     u8 clock_pad_drive; /* (Drive + 1) * 2mA */
0034 
0035     u8 invert_iq;       /* invert Q - in case I or Q is inverted on the board */
0036 
0037     u8 force_crystal_mode;  /* if == 0 -> decision is made in the driver default: <24 -> 2, >=24 -> 1 */
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