1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
29a0bf528SMauro Carvalho Chehab #ifndef SI21XX_H
39a0bf528SMauro Carvalho Chehab #define SI21XX_H
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
6fada1935SMauro Carvalho Chehab #include <media/dvb_frontend.h>
79a0bf528SMauro Carvalho Chehab 
89a0bf528SMauro Carvalho Chehab struct si21xx_config {
99a0bf528SMauro Carvalho Chehab 	/* the demodulator's i2c address */
109a0bf528SMauro Carvalho Chehab 	u8 demod_address;
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab 	/* minimum delay before retuning */
139a0bf528SMauro Carvalho Chehab 	int min_delay_ms;
149a0bf528SMauro Carvalho Chehab };
159a0bf528SMauro Carvalho Chehab 
169b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_SI21XX)
179a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *si21xx_attach(const struct si21xx_config *config,
189a0bf528SMauro Carvalho Chehab 						struct i2c_adapter *i2c);
199a0bf528SMauro Carvalho Chehab #else
si21xx_attach(const struct si21xx_config * config,struct i2c_adapter * i2c)209a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *si21xx_attach(
219a0bf528SMauro Carvalho Chehab 		const struct si21xx_config *config, struct i2c_adapter *i2c)
229a0bf528SMauro Carvalho Chehab {
239a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
249a0bf528SMauro Carvalho Chehab 	return NULL;
259a0bf528SMauro Carvalho Chehab }
269a0bf528SMauro Carvalho Chehab #endif
279a0bf528SMauro Carvalho Chehab 
si21xx_writeregister(struct dvb_frontend * fe,u8 reg,u8 val)289a0bf528SMauro Carvalho Chehab static inline int si21xx_writeregister(struct dvb_frontend *fe, u8 reg, u8 val)
299a0bf528SMauro Carvalho Chehab {
309a0bf528SMauro Carvalho Chehab 	int r = 0;
319a0bf528SMauro Carvalho Chehab 	u8 buf[] = {reg, val};
329a0bf528SMauro Carvalho Chehab 	if (fe->ops.write)
339a0bf528SMauro Carvalho Chehab 		r = fe->ops.write(fe, buf, 2);
349a0bf528SMauro Carvalho Chehab 	return r;
359a0bf528SMauro Carvalho Chehab }
369a0bf528SMauro Carvalho Chehab 
379a0bf528SMauro Carvalho Chehab #endif
38