174ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab 	Driver for M88RS2000 demodulator
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab 
69a0bf528SMauro Carvalho Chehab */
79a0bf528SMauro Carvalho Chehab 
89a0bf528SMauro Carvalho Chehab #ifndef M88RS2000_H
99a0bf528SMauro Carvalho Chehab #define M88RS2000_H
109a0bf528SMauro Carvalho Chehab 
119a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
12fada1935SMauro Carvalho Chehab #include <media/dvb_frontend.h>
139a0bf528SMauro Carvalho Chehab 
149a0bf528SMauro Carvalho Chehab struct m88rs2000_config {
159a0bf528SMauro Carvalho Chehab 	/* Demodulator i2c address */
169a0bf528SMauro Carvalho Chehab 	u8 demod_addr;
179a0bf528SMauro Carvalho Chehab 
189a0bf528SMauro Carvalho Chehab 	u8 *inittab;
199a0bf528SMauro Carvalho Chehab 
209a0bf528SMauro Carvalho Chehab 	/* minimum delay before retuning */
219a0bf528SMauro Carvalho Chehab 	int min_delay_ms;
229a0bf528SMauro Carvalho Chehab 
239a0bf528SMauro Carvalho Chehab 	int (*set_ts_params)(struct dvb_frontend *, int);
249a0bf528SMauro Carvalho Chehab };
259a0bf528SMauro Carvalho Chehab 
269a0bf528SMauro Carvalho Chehab enum {
279a0bf528SMauro Carvalho Chehab 	CALL_IS_SET_FRONTEND = 0x0,
289a0bf528SMauro Carvalho Chehab 	CALL_IS_READ,
299a0bf528SMauro Carvalho Chehab };
309a0bf528SMauro Carvalho Chehab 
319b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_M88RS2000)
329a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *m88rs2000_attach(
339a0bf528SMauro Carvalho Chehab 	const struct m88rs2000_config *config, struct i2c_adapter *i2c);
349a0bf528SMauro Carvalho Chehab #else
m88rs2000_attach(const struct m88rs2000_config * config,struct i2c_adapter * i2c)359a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *m88rs2000_attach(
369a0bf528SMauro Carvalho Chehab 	const struct m88rs2000_config *config, struct i2c_adapter *i2c)
379a0bf528SMauro Carvalho Chehab {
389a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
399a0bf528SMauro Carvalho Chehab 	return NULL;
409a0bf528SMauro Carvalho Chehab }
419a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_M88RS2000 */
429a0bf528SMauro Carvalho Chehab 
4306af15d1SMalcolm Priestley #define RS2000_FE_CRYSTAL_KHZ 27000
4406af15d1SMalcolm Priestley 
459a0bf528SMauro Carvalho Chehab enum {
469a0bf528SMauro Carvalho Chehab 	DEMOD_WRITE = 0x1,
479a0bf528SMauro Carvalho Chehab 	WRITE_DELAY = 0x10,
489a0bf528SMauro Carvalho Chehab };
499a0bf528SMauro Carvalho Chehab #endif /* M88RS2000_H */
50