1dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#ifndef DIB9000_H 2dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#define DIB9000_H 3dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 4dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#include "dibx000_common.h" 5dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 6dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestruct dib9000_config { 7dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u8 dvbt_mode; 8dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u8 output_mpeg2_in_188_bytes; 9dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u8 hostbus_diversity; 10dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie struct dibx000_bandwidth_config *bw; 11dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 12dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u16 if_drives; 13dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 14dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u32 timing_frequency; 15dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u32 xtal_clock_khz; 16dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u32 vcxo_timer; 17dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u32 demod_clock_khz; 18dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 19dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie const u8 *microcode_B_fe_buffer; 20dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u32 microcode_B_fe_size; 21dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 22dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie struct dibGPIOFunction gpio_function[2]; 23dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie struct dibSubbandSelection subband; 24dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 25dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie u8 output_mode; 26dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie}; 27dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 28dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#define DEFAULT_DIB9000_I2C_ADDRESS 18 29dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 307b34be71db533f3e0cf93d53cf62d036cdb5418aPeter Senna Tschudin#if IS_ENABLED(CONFIG_DVB_DIB9000) 31dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, const struct dib9000_config *cfg); 32dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 default_addr, u8 first_addr); 33dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern struct i2c_adapter *dib9000_get_tuner_interface(struct dvb_frontend *fe); 34dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern struct i2c_adapter *dib9000_get_i2c_master(struct dvb_frontend *fe, enum dibx000_i2c_interface intf, int gating); 35dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_set_gpio(struct dvb_frontend *fe, u8 num, u8 dir, u8 val); 36dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff); 37dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff); 38dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_firmware_post_pll_init(struct dvb_frontend *fe); 39dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave); 40dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_remove_slave_frontend(struct dvb_frontend *fe); 41b4d6046e841955be9cc49164b03b91c9524f9c2eOlivier Grenieextern struct dvb_frontend *dib9000_get_slave_frontend(struct dvb_frontend *fe, int slave_index); 42dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern struct i2c_adapter *dib9000_get_component_bus_interface(struct dvb_frontend *fe); 43dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_set_i2c_adapter(struct dvb_frontend *fe, struct i2c_adapter *i2c); 44dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenieextern int dib9000_fw_set_component_bus_speed(struct dvb_frontend *fe, u16 speed); 45dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#else 46dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib9000_config *cfg) 47dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 48dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 49dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return NULL; 50dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 51dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 52dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline struct i2c_adapter *dib9000_get_i2c_master(struct dvb_frontend *fe, enum dibx000_i2c_interface intf, int gating) 53dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 54dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 55dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return NULL; 56dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 57dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 58dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 default_addr, u8 first_addr) 59dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 60dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 61dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 62dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 63dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 64dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline struct i2c_adapter *dib9000_get_tuner_interface(struct dvb_frontend *fe) 65dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 66dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 67dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return NULL; 68dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 69dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 70dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_set_gpio(struct dvb_frontend *fe, u8 num, u8 dir, u8 val) 71dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 72dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 73dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 74dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 75dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 76dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff) 77dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 78dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 79dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 80dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 81dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 82dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff) 83dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 84dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 85dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 86dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 87dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 88dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_firmware_post_pll_init(struct dvb_frontend *fe) 89dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 90dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 91dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 92dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 93dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 94dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave) 95dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 96dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 97dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 98dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 99dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 1002e8c1e569392c84a926b9bf94176c5d7ba5d3e50Mauro Carvalho Chehabstatic inline int dib9000_remove_slave_frontend(struct dvb_frontend *fe) 101dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 102dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 103dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 104dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 105dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 106b4d6046e841955be9cc49164b03b91c9524f9c2eOlivier Greniestatic inline struct dvb_frontend *dib9000_get_slave_frontend(struct dvb_frontend *fe, int slave_index) 107b4d6046e841955be9cc49164b03b91c9524f9c2eOlivier Grenie{ 108dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 109dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return NULL; 110dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 111dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 112dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline struct i2c_adapter *dib9000_get_component_bus_interface(struct dvb_frontend *fe) 113dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 114dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 115dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return NULL; 116dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 117dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 118dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_set_i2c_adapter(struct dvb_frontend *fe, struct i2c_adapter *i2c) 119dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 120dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 121dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 122dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 123dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 124dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Greniestatic inline int dib9000_fw_set_component_bus_speed(struct dvb_frontend *fe, u16 speed) 125dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie{ 126dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 127dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie return -ENODEV; 128dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie} 129dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#endif 130dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie 131dd316c6bacc2bdb22288507fd479bd2181eb7a7bOlivier Grenie#endif 132