1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab  * stv0367.h
49a0bf528SMauro Carvalho Chehab  *
59a0bf528SMauro Carvalho Chehab  * Driver for ST STV0367 DVB-T & DVB-C demodulator IC.
69a0bf528SMauro Carvalho Chehab  *
79a0bf528SMauro Carvalho Chehab  * Copyright (C) ST Microelectronics.
89a0bf528SMauro Carvalho Chehab  * Copyright (C) 2010,2011 NetUP Inc.
99a0bf528SMauro Carvalho Chehab  * Copyright (C) 2010,2011 Igor M. Liplianin <liplianin@netup.ru>
109a0bf528SMauro Carvalho Chehab  */
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab #ifndef STV0367_H
139a0bf528SMauro Carvalho Chehab #define STV0367_H
149a0bf528SMauro Carvalho Chehab 
159a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
16fada1935SMauro Carvalho Chehab #include <media/dvb_frontend.h>
179a0bf528SMauro Carvalho Chehab 
188a9c0735SDaniel Scheller #define STV0367_ICSPEED_53125	53125000
198a9c0735SDaniel Scheller #define STV0367_ICSPEED_58000	58000000
208a9c0735SDaniel Scheller 
219a0bf528SMauro Carvalho Chehab struct stv0367_config {
229a0bf528SMauro Carvalho Chehab 	u8 demod_address;
239a0bf528SMauro Carvalho Chehab 	u32 xtal;
249a0bf528SMauro Carvalho Chehab 	u32 if_khz;/*4500*/
259a0bf528SMauro Carvalho Chehab 	int if_iq_mode;
269a0bf528SMauro Carvalho Chehab 	int ts_mode;
279a0bf528SMauro Carvalho Chehab 	int clk_pol;
289a0bf528SMauro Carvalho Chehab };
299a0bf528SMauro Carvalho Chehab 
309b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_STV0367)
319a0bf528SMauro Carvalho Chehab extern struct
329a0bf528SMauro Carvalho Chehab dvb_frontend *stv0367ter_attach(const struct stv0367_config *config,
339a0bf528SMauro Carvalho Chehab 					struct i2c_adapter *i2c);
349a0bf528SMauro Carvalho Chehab extern struct
359a0bf528SMauro Carvalho Chehab dvb_frontend *stv0367cab_attach(const struct stv0367_config *config,
369a0bf528SMauro Carvalho Chehab 					struct i2c_adapter *i2c);
37dbbac11eSDaniel Scheller extern struct
38dbbac11eSDaniel Scheller dvb_frontend *stv0367ddb_attach(const struct stv0367_config *config,
39dbbac11eSDaniel Scheller 					struct i2c_adapter *i2c);
409a0bf528SMauro Carvalho Chehab #else
419a0bf528SMauro Carvalho Chehab static inline struct
stv0367ter_attach(const struct stv0367_config * config,struct i2c_adapter * i2c)429a0bf528SMauro Carvalho Chehab dvb_frontend *stv0367ter_attach(const struct stv0367_config *config,
439a0bf528SMauro Carvalho Chehab 					struct i2c_adapter *i2c)
449a0bf528SMauro Carvalho Chehab {
459a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
469a0bf528SMauro Carvalho Chehab 	return NULL;
479a0bf528SMauro Carvalho Chehab }
489a0bf528SMauro Carvalho Chehab static inline struct
stv0367cab_attach(const struct stv0367_config * config,struct i2c_adapter * i2c)499a0bf528SMauro Carvalho Chehab dvb_frontend *stv0367cab_attach(const struct stv0367_config *config,
509a0bf528SMauro Carvalho Chehab 					struct i2c_adapter *i2c)
519a0bf528SMauro Carvalho Chehab {
529a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
539a0bf528SMauro Carvalho Chehab 	return NULL;
549a0bf528SMauro Carvalho Chehab }
55dbbac11eSDaniel Scheller static inline struct
stv0367ddb_attach(const struct stv0367_config * config,struct i2c_adapter * i2c)56dbbac11eSDaniel Scheller dvb_frontend *stv0367ddb_attach(const struct stv0367_config *config,
57dbbac11eSDaniel Scheller 					struct i2c_adapter *i2c)
58dbbac11eSDaniel Scheller {
59dbbac11eSDaniel Scheller 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
60dbbac11eSDaniel Scheller 	return NULL;
61dbbac11eSDaniel Scheller }
629a0bf528SMauro Carvalho Chehab #endif
639a0bf528SMauro Carvalho Chehab 
649a0bf528SMauro Carvalho Chehab #endif
65