1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
29a0bf528SMauro Carvalho Chehab #ifndef DIB9000_H
39a0bf528SMauro Carvalho Chehab #define DIB9000_H
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab #include "dibx000_common.h"
69a0bf528SMauro Carvalho Chehab 
79a0bf528SMauro Carvalho Chehab struct dib9000_config {
89a0bf528SMauro Carvalho Chehab 	u8 dvbt_mode;
99a0bf528SMauro Carvalho Chehab 	u8 output_mpeg2_in_188_bytes;
109a0bf528SMauro Carvalho Chehab 	u8 hostbus_diversity;
119a0bf528SMauro Carvalho Chehab 	struct dibx000_bandwidth_config *bw;
129a0bf528SMauro Carvalho Chehab 
139a0bf528SMauro Carvalho Chehab 	u16 if_drives;
149a0bf528SMauro Carvalho Chehab 
159a0bf528SMauro Carvalho Chehab 	u32 timing_frequency;
169a0bf528SMauro Carvalho Chehab 	u32 xtal_clock_khz;
179a0bf528SMauro Carvalho Chehab 	u32 vcxo_timer;
189a0bf528SMauro Carvalho Chehab 	u32 demod_clock_khz;
199a0bf528SMauro Carvalho Chehab 
209a0bf528SMauro Carvalho Chehab 	const u8 *microcode_B_fe_buffer;
219a0bf528SMauro Carvalho Chehab 	u32 microcode_B_fe_size;
229a0bf528SMauro Carvalho Chehab 
239a0bf528SMauro Carvalho Chehab 	struct dibGPIOFunction gpio_function[2];
249a0bf528SMauro Carvalho Chehab 	struct dibSubbandSelection subband;
259a0bf528SMauro Carvalho Chehab 
269a0bf528SMauro Carvalho Chehab 	u8 output_mode;
279a0bf528SMauro Carvalho Chehab };
289a0bf528SMauro Carvalho Chehab 
299a0bf528SMauro Carvalho Chehab #define DEFAULT_DIB9000_I2C_ADDRESS 18
309a0bf528SMauro Carvalho Chehab 
319b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_DIB9000)
329a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, const struct dib9000_config *cfg);
339a0bf528SMauro Carvalho Chehab extern int dib9000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 default_addr, u8 first_addr);
349a0bf528SMauro Carvalho Chehab extern struct i2c_adapter *dib9000_get_tuner_interface(struct dvb_frontend *fe);
359a0bf528SMauro Carvalho Chehab extern struct i2c_adapter *dib9000_get_i2c_master(struct dvb_frontend *fe, enum dibx000_i2c_interface intf, int gating);
369a0bf528SMauro Carvalho Chehab extern int dib9000_set_gpio(struct dvb_frontend *fe, u8 num, u8 dir, u8 val);
379a0bf528SMauro Carvalho Chehab extern int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff);
389a0bf528SMauro Carvalho Chehab extern int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff);
399a0bf528SMauro Carvalho Chehab extern int dib9000_firmware_post_pll_init(struct dvb_frontend *fe);
409a0bf528SMauro Carvalho Chehab extern int dib9000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave);
419a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *dib9000_get_slave_frontend(struct dvb_frontend *fe, int slave_index);
429a0bf528SMauro Carvalho Chehab extern struct i2c_adapter *dib9000_get_component_bus_interface(struct dvb_frontend *fe);
439a0bf528SMauro Carvalho Chehab extern int dib9000_set_i2c_adapter(struct dvb_frontend *fe, struct i2c_adapter *i2c);
449a0bf528SMauro Carvalho Chehab extern int dib9000_fw_set_component_bus_speed(struct dvb_frontend *fe, u16 speed);
459a0bf528SMauro Carvalho Chehab #else
dib9000_attach(struct i2c_adapter * i2c_adap,u8 i2c_addr,struct dib9000_config * cfg)469a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib9000_config *cfg)
479a0bf528SMauro Carvalho Chehab {
489a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
499a0bf528SMauro Carvalho Chehab 	return NULL;
509a0bf528SMauro Carvalho Chehab }
519a0bf528SMauro Carvalho Chehab 
dib9000_get_i2c_master(struct dvb_frontend * fe,enum dibx000_i2c_interface intf,int gating)529a0bf528SMauro Carvalho Chehab static inline struct i2c_adapter *dib9000_get_i2c_master(struct dvb_frontend *fe, enum dibx000_i2c_interface intf, int gating)
539a0bf528SMauro Carvalho Chehab {
549a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
559a0bf528SMauro Carvalho Chehab 	return NULL;
569a0bf528SMauro Carvalho Chehab }
579a0bf528SMauro Carvalho Chehab 
dib9000_i2c_enumeration(struct i2c_adapter * host,int no_of_demods,u8 default_addr,u8 first_addr)589a0bf528SMauro Carvalho Chehab static inline int dib9000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 default_addr, u8 first_addr)
599a0bf528SMauro Carvalho Chehab {
609a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
619a0bf528SMauro Carvalho Chehab 	return -ENODEV;
629a0bf528SMauro Carvalho Chehab }
639a0bf528SMauro Carvalho Chehab 
dib9000_get_tuner_interface(struct dvb_frontend * fe)649a0bf528SMauro Carvalho Chehab static inline struct i2c_adapter *dib9000_get_tuner_interface(struct dvb_frontend *fe)
659a0bf528SMauro Carvalho Chehab {
669a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
679a0bf528SMauro Carvalho Chehab 	return NULL;
689a0bf528SMauro Carvalho Chehab }
699a0bf528SMauro Carvalho Chehab 
dib9000_set_gpio(struct dvb_frontend * fe,u8 num,u8 dir,u8 val)709a0bf528SMauro Carvalho Chehab static inline int dib9000_set_gpio(struct dvb_frontend *fe, u8 num, u8 dir, u8 val)
719a0bf528SMauro Carvalho Chehab {
729a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
739a0bf528SMauro Carvalho Chehab 	return -ENODEV;
749a0bf528SMauro Carvalho Chehab }
759a0bf528SMauro Carvalho Chehab 
dib9000_fw_pid_filter_ctrl(struct dvb_frontend * fe,u8 onoff)769a0bf528SMauro Carvalho Chehab static inline int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff)
779a0bf528SMauro Carvalho Chehab {
789a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
799a0bf528SMauro Carvalho Chehab 	return -ENODEV;
809a0bf528SMauro Carvalho Chehab }
819a0bf528SMauro Carvalho Chehab 
dib9000_fw_pid_filter(struct dvb_frontend * fe,u8 id,u16 pid,u8 onoff)829a0bf528SMauro Carvalho Chehab static inline int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff)
839a0bf528SMauro Carvalho Chehab {
849a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
859a0bf528SMauro Carvalho Chehab 	return -ENODEV;
869a0bf528SMauro Carvalho Chehab }
879a0bf528SMauro Carvalho Chehab 
dib9000_firmware_post_pll_init(struct dvb_frontend * fe)889a0bf528SMauro Carvalho Chehab static inline int dib9000_firmware_post_pll_init(struct dvb_frontend *fe)
899a0bf528SMauro Carvalho Chehab {
909a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
919a0bf528SMauro Carvalho Chehab 	return -ENODEV;
929a0bf528SMauro Carvalho Chehab }
939a0bf528SMauro Carvalho Chehab 
dib9000_set_slave_frontend(struct dvb_frontend * fe,struct dvb_frontend * fe_slave)949a0bf528SMauro Carvalho Chehab static inline int dib9000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave)
959a0bf528SMauro Carvalho Chehab {
969a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
979a0bf528SMauro Carvalho Chehab 	return -ENODEV;
989a0bf528SMauro Carvalho Chehab }
999a0bf528SMauro Carvalho Chehab 
dib9000_get_slave_frontend(struct dvb_frontend * fe,int slave_index)1009a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *dib9000_get_slave_frontend(struct dvb_frontend *fe, int slave_index)
1019a0bf528SMauro Carvalho Chehab {
1029a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
1039a0bf528SMauro Carvalho Chehab 	return NULL;
1049a0bf528SMauro Carvalho Chehab }
1059a0bf528SMauro Carvalho Chehab 
dib9000_get_component_bus_interface(struct dvb_frontend * fe)1069a0bf528SMauro Carvalho Chehab static inline struct i2c_adapter *dib9000_get_component_bus_interface(struct dvb_frontend *fe)
1079a0bf528SMauro Carvalho Chehab {
1089a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
1099a0bf528SMauro Carvalho Chehab 	return NULL;
1109a0bf528SMauro Carvalho Chehab }
1119a0bf528SMauro Carvalho Chehab 
dib9000_set_i2c_adapter(struct dvb_frontend * fe,struct i2c_adapter * i2c)1129a0bf528SMauro Carvalho Chehab static inline int dib9000_set_i2c_adapter(struct dvb_frontend *fe, struct i2c_adapter *i2c)
1139a0bf528SMauro Carvalho Chehab {
1149a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
1159a0bf528SMauro Carvalho Chehab 	return -ENODEV;
1169a0bf528SMauro Carvalho Chehab }
1179a0bf528SMauro Carvalho Chehab 
dib9000_fw_set_component_bus_speed(struct dvb_frontend * fe,u16 speed)1189a0bf528SMauro Carvalho Chehab static inline int dib9000_fw_set_component_bus_speed(struct dvb_frontend *fe, u16 speed)
1199a0bf528SMauro Carvalho Chehab {
1209a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
1219a0bf528SMauro Carvalho Chehab 	return -ENODEV;
1229a0bf528SMauro Carvalho Chehab }
1239a0bf528SMauro Carvalho Chehab #endif
1249a0bf528SMauro Carvalho Chehab 
1259a0bf528SMauro Carvalho Chehab #endif
126