xref: /linux/drivers/media/dvb-frontends/cx24123.h (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
1*74ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab     Conexant cx24123/cx24109 - DVB QPSK Satellite demod/tuner driver
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab     Copyright (C) 2005 Steven Toth <stoth@linuxtv.org>
69a0bf528SMauro Carvalho Chehab 
79a0bf528SMauro Carvalho Chehab */
89a0bf528SMauro Carvalho Chehab 
99a0bf528SMauro Carvalho Chehab #ifndef CX24123_H
109a0bf528SMauro Carvalho Chehab #define CX24123_H
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
139a0bf528SMauro Carvalho Chehab 
149a0bf528SMauro Carvalho Chehab struct cx24123_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 	/* 0 = LNB voltage normal, 1 = LNB voltage inverted */
229a0bf528SMauro Carvalho Chehab 	int lnb_polarity;
239a0bf528SMauro Carvalho Chehab 
249a0bf528SMauro Carvalho Chehab 	/* this device has another tuner */
259a0bf528SMauro Carvalho Chehab 	u8 dont_use_pll;
269a0bf528SMauro Carvalho Chehab 	void (*agc_callback) (struct dvb_frontend *);
279a0bf528SMauro Carvalho Chehab };
289a0bf528SMauro Carvalho Chehab 
299b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_CX24123)
309a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *cx24123_attach(const struct cx24123_config *config,
319a0bf528SMauro Carvalho Chehab 					   struct i2c_adapter *i2c);
329a0bf528SMauro Carvalho Chehab extern struct i2c_adapter *cx24123_get_tuner_i2c_adapter(struct dvb_frontend *);
339a0bf528SMauro Carvalho Chehab #else
cx24123_attach(const struct cx24123_config * config,struct i2c_adapter * i2c)349a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *cx24123_attach(
359a0bf528SMauro Carvalho Chehab 	const struct cx24123_config *config, struct i2c_adapter *i2c)
369a0bf528SMauro Carvalho Chehab {
379a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
389a0bf528SMauro Carvalho Chehab 	return NULL;
399a0bf528SMauro Carvalho Chehab }
408b012fc9SHans Verkuil static inline struct i2c_adapter *
cx24123_get_tuner_i2c_adapter(struct dvb_frontend * fe)419a0bf528SMauro Carvalho Chehab 	cx24123_get_tuner_i2c_adapter(struct dvb_frontend *fe)
429a0bf528SMauro Carvalho Chehab {
439a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
449a0bf528SMauro Carvalho Chehab 	return NULL;
459a0bf528SMauro Carvalho Chehab }
469a0bf528SMauro Carvalho Chehab #endif
479a0bf528SMauro Carvalho Chehab 
489a0bf528SMauro Carvalho Chehab #endif /* CX24123_H */
49