xref: /linux/drivers/media/dvb-frontends/s5h1420.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab  * Driver for
49a0bf528SMauro Carvalho Chehab  *    Samsung S5H1420 and
59a0bf528SMauro Carvalho Chehab  *    PnpNetwork PN1010 QPSK Demodulator
69a0bf528SMauro Carvalho Chehab  *
79a0bf528SMauro Carvalho Chehab  * Copyright (C) 2005 Andrew de Quincey <adq_dvb@lidskialf.net>
89a0bf528SMauro Carvalho Chehab  * Copyright (C) 2005-8 Patrick Boettcher <pb@linuxtv.org>
99a0bf528SMauro Carvalho Chehab  */
109a0bf528SMauro Carvalho Chehab #ifndef S5H1420_H
119a0bf528SMauro Carvalho Chehab #define S5H1420_H
129a0bf528SMauro Carvalho Chehab 
139a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
149a0bf528SMauro Carvalho Chehab 
159a0bf528SMauro Carvalho Chehab struct s5h1420_config
169a0bf528SMauro Carvalho Chehab {
179a0bf528SMauro Carvalho Chehab 	/* the demodulator's i2c address */
189a0bf528SMauro Carvalho Chehab 	u8 demod_address;
199a0bf528SMauro Carvalho Chehab 
209a0bf528SMauro Carvalho Chehab 	/* does the inversion require inversion? */
219a0bf528SMauro Carvalho Chehab 	u8 invert:1;
229a0bf528SMauro Carvalho Chehab 
239a0bf528SMauro Carvalho Chehab 	u8 repeated_start_workaround:1;
249a0bf528SMauro Carvalho Chehab 	u8 cdclk_polarity:1; /* 1 == falling edge, 0 == raising edge */
259a0bf528SMauro Carvalho Chehab 
269a0bf528SMauro Carvalho Chehab 	u8 serial_mpeg:1;
279a0bf528SMauro Carvalho Chehab };
289a0bf528SMauro Carvalho Chehab 
299b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_S5H1420)
309a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *s5h1420_attach(const struct s5h1420_config *config,
319a0bf528SMauro Carvalho Chehab 	     struct i2c_adapter *i2c);
329a0bf528SMauro Carvalho Chehab extern struct i2c_adapter *s5h1420_get_tuner_i2c_adapter(struct dvb_frontend *fe);
339a0bf528SMauro Carvalho Chehab #else
s5h1420_attach(const struct s5h1420_config * config,struct i2c_adapter * i2c)349a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *s5h1420_attach(const struct s5h1420_config *config,
359a0bf528SMauro Carvalho Chehab 					   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 }
409a0bf528SMauro Carvalho Chehab 
s5h1420_get_tuner_i2c_adapter(struct dvb_frontend * fe)419a0bf528SMauro Carvalho Chehab static inline struct i2c_adapter *s5h1420_get_tuner_i2c_adapter(struct dvb_frontend *fe)
429a0bf528SMauro Carvalho Chehab {
439a0bf528SMauro Carvalho Chehab 	return NULL;
449a0bf528SMauro Carvalho Chehab }
459a0bf528SMauro Carvalho Chehab #endif // CONFIG_DVB_S5H1420
469a0bf528SMauro Carvalho Chehab 
479a0bf528SMauro Carvalho Chehab #endif // S5H1420_H
48