1 #ifndef DIB8000_H 2 #define DIB8000_H 3 4 #include "dibx000_common.h" 5 6 struct dib8000_config { 7 u8 output_mpeg2_in_188_bytes; 8 u8 hostbus_diversity; 9 u8 tuner_is_baseband; 10 int (*update_lna) (struct dvb_frontend *, u16 agc_global); 11 12 u8 agc_config_count; 13 struct dibx000_agc_config *agc; 14 struct dibx000_bandwidth_config *pll; 15 16 #define DIB8000_GPIO_DEFAULT_DIRECTIONS 0xffff 17 u16 gpio_dir; 18 #define DIB8000_GPIO_DEFAULT_VALUES 0x0000 19 u16 gpio_val; 20 #define DIB8000_GPIO_PWM_POS0(v) ((v & 0xf) << 12) 21 #define DIB8000_GPIO_PWM_POS1(v) ((v & 0xf) << 8 ) 22 #define DIB8000_GPIO_PWM_POS2(v) ((v & 0xf) << 4 ) 23 #define DIB8000_GPIO_PWM_POS3(v) (v & 0xf) 24 #define DIB8000_GPIO_DEFAULT_PWM_POS 0xffff 25 u16 gpio_pwm_pos; 26 u16 pwm_freq_div; 27 28 void (*agc_control) (struct dvb_frontend *, u8 before); 29 30 u16 drives; 31 u16 diversity_delay; 32 u8 div_cfg; 33 u8 output_mode; 34 u8 refclksel; 35 u8 enMpegOutput:1; 36 }; 37 38 #define DEFAULT_DIB8000_I2C_ADDRESS 18 39 40 #if defined(CONFIG_DVB_DIB8000) || (defined(CONFIG_DVB_DIB8000_MODULE) && defined(MODULE)) 41 extern struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib8000_config *cfg); 42 extern struct i2c_adapter *dib8000_get_i2c_master(struct dvb_frontend *, enum dibx000_i2c_interface, int); 43 44 extern int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, 45 u8 default_addr, u8 first_addr, u8 is_dib8096p); 46 47 extern int dib8000_set_gpio(struct dvb_frontend *, u8 num, u8 dir, u8 val); 48 extern int dib8000_set_wbd_ref(struct dvb_frontend *, u16 value); 49 extern int dib8000_pid_filter_ctrl(struct dvb_frontend *, u8 onoff); 50 extern int dib8000_pid_filter(struct dvb_frontend *, u8 id, u16 pid, u8 onoff); 51 extern int dib8000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state); 52 extern enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe); 53 extern void dib8000_pwm_agc_reset(struct dvb_frontend *fe); 54 extern s32 dib8000_get_adc_power(struct dvb_frontend *fe, u8 mode); 55 extern struct i2c_adapter *dib8096p_get_i2c_tuner(struct dvb_frontend *fe); 56 extern int dib8096p_tuner_sleep(struct dvb_frontend *fe, int onoff); 57 extern int dib8090p_get_dc_power(struct dvb_frontend *fe, u8 IQ); 58 extern u32 dib8000_ctrl_timf(struct dvb_frontend *fe, 59 uint8_t op, uint32_t timf); 60 extern int dib8000_update_pll(struct dvb_frontend *fe, 61 struct dibx000_bandwidth_config *pll); 62 extern int dib8000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave); 63 extern int dib8000_remove_slave_frontend(struct dvb_frontend *fe); 64 extern struct dvb_frontend *dib8000_get_slave_frontend(struct dvb_frontend *fe, int slave_index); 65 #else 66 static inline struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib8000_config *cfg) 67 { 68 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 69 return NULL; 70 } 71 72 static inline struct i2c_adapter *dib8000_get_i2c_master(struct dvb_frontend *fe, enum dibx000_i2c_interface i, int x) 73 { 74 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 75 return NULL; 76 } 77 78 static inline int dib8000_i2c_enumeration(struct i2c_adapter *host, 79 int no_of_demods, u8 default_addr, u8 first_addr, 80 u8 is_dib8096p) 81 { 82 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 83 return -ENODEV; 84 } 85 86 static inline int dib8000_set_gpio(struct dvb_frontend *fe, u8 num, u8 dir, u8 val) 87 { 88 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 89 return -ENODEV; 90 } 91 92 static inline int dib8000_set_wbd_ref(struct dvb_frontend *fe, u16 value) 93 { 94 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 95 return -ENODEV; 96 } 97 98 static inline int dib8000_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff) 99 { 100 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 101 return -ENODEV; 102 } 103 104 static inline int dib8000_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff) 105 { 106 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 107 return -ENODEV; 108 } 109 static inline int dib8000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state) 110 { 111 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 112 return -ENODEV; 113 } 114 static inline enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe) 115 { 116 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 117 return CT_SHUTDOWN; 118 } 119 static inline void dib8000_pwm_agc_reset(struct dvb_frontend *fe) 120 { 121 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 122 } 123 static inline struct i2c_adapter *dib8096p_get_i2c_tuner(struct dvb_frontend *fe) 124 { 125 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 126 return NULL; 127 } 128 static inline int dib8096p_tuner_sleep(struct dvb_frontend *fe, int onoff) 129 { 130 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 131 return 0; 132 } 133 static inline s32 dib8000_get_adc_power(struct dvb_frontend *fe, u8 mode) 134 { 135 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 136 return 0; 137 } 138 static inline int dib8090p_get_dc_power(struct dvb_frontend *fe, u8 IQ) 139 { 140 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 141 return 0; 142 } 143 static inline u32 dib8000_ctrl_timf(struct dvb_frontend *fe, 144 uint8_t op, uint32_t timf) 145 { 146 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 147 return 0; 148 } 149 static inline int dib8000_update_pll(struct dvb_frontend *fe, 150 struct dibx000_bandwidth_config *pll) 151 { 152 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 153 return -ENODEV; 154 } 155 static inline int dib8000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave) 156 { 157 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 158 return -ENODEV; 159 } 160 161 int dib8000_remove_slave_frontend(struct dvb_frontend *fe) 162 { 163 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 164 return -ENODEV; 165 } 166 167 static inline struct dvb_frontend *dib8000_get_slave_frontend(struct dvb_frontend *fe, int slave_index) 168 { 169 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 170 return NULL; 171 } 172 #endif 173 174 #endif 175