174ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab     Conexant cx24116/cx24118 - DVBS/S2 Satellite demod/tuner driver
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab     Copyright (C) 2006 Steven Toth <stoth@linuxtv.com>
69a0bf528SMauro Carvalho Chehab 
79a0bf528SMauro Carvalho Chehab */
89a0bf528SMauro Carvalho Chehab 
99a0bf528SMauro Carvalho Chehab #ifndef CX24116_H
109a0bf528SMauro Carvalho Chehab #define CX24116_H
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
139a0bf528SMauro Carvalho Chehab 
149a0bf528SMauro Carvalho Chehab struct cx24116_config {
159a0bf528SMauro Carvalho Chehab 	/* the demodulator's i2c address */
169a0bf528SMauro Carvalho Chehab 	u8 demod_address;
179a0bf528SMauro Carvalho Chehab 
189a0bf528SMauro Carvalho Chehab 	/* Need to set device param for start_dma */
199a0bf528SMauro Carvalho Chehab 	int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
209a0bf528SMauro Carvalho Chehab 
219a0bf528SMauro Carvalho Chehab 	/* Need to reset device during firmware loading */
229a0bf528SMauro Carvalho Chehab 	int (*reset_device)(struct dvb_frontend *fe);
239a0bf528SMauro Carvalho Chehab 
249a0bf528SMauro Carvalho Chehab 	/* Need to set MPEG parameters */
259a0bf528SMauro Carvalho Chehab 	u8 mpg_clk_pos_pol:0x02;
269a0bf528SMauro Carvalho Chehab 
279a0bf528SMauro Carvalho Chehab 	/* max bytes I2C provider can write at once */
289a0bf528SMauro Carvalho Chehab 	u16 i2c_wr_max;
299a0bf528SMauro Carvalho Chehab };
309a0bf528SMauro Carvalho Chehab 
319b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_CX24116)
329a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *cx24116_attach(
339a0bf528SMauro Carvalho Chehab 	const struct cx24116_config *config,
349a0bf528SMauro Carvalho Chehab 	struct i2c_adapter *i2c);
359a0bf528SMauro Carvalho Chehab #else
cx24116_attach(const struct cx24116_config * config,struct i2c_adapter * i2c)369a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *cx24116_attach(
379a0bf528SMauro Carvalho Chehab 	const struct cx24116_config *config,
389a0bf528SMauro Carvalho Chehab 	struct i2c_adapter *i2c)
399a0bf528SMauro Carvalho Chehab {
409a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
419a0bf528SMauro Carvalho Chehab 	return NULL;
429a0bf528SMauro Carvalho Chehab }
439a0bf528SMauro Carvalho Chehab #endif
449a0bf528SMauro Carvalho Chehab 
459a0bf528SMauro Carvalho Chehab #endif /* CX24116_H */
46