1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab    Driver for the Spase sp887x demodulator
49a0bf528SMauro Carvalho Chehab */
59a0bf528SMauro Carvalho Chehab 
69a0bf528SMauro Carvalho Chehab #ifndef SP887X_H
79a0bf528SMauro Carvalho Chehab #define SP887X_H
89a0bf528SMauro Carvalho Chehab 
99a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
109a0bf528SMauro Carvalho Chehab #include <linux/firmware.h>
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab struct sp887x_config
139a0bf528SMauro Carvalho Chehab {
149a0bf528SMauro Carvalho Chehab 	/* the demodulator's i2c address */
159a0bf528SMauro Carvalho Chehab 	u8 demod_address;
169a0bf528SMauro Carvalho Chehab 
179a0bf528SMauro Carvalho Chehab 	/* request firmware for device */
189a0bf528SMauro Carvalho Chehab 	int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name);
199a0bf528SMauro Carvalho Chehab };
209a0bf528SMauro Carvalho Chehab 
219b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_SP887X)
229a0bf528SMauro Carvalho Chehab extern struct dvb_frontend* sp887x_attach(const struct sp887x_config* config,
239a0bf528SMauro Carvalho Chehab 					  struct i2c_adapter* i2c);
249a0bf528SMauro Carvalho Chehab #else
sp887x_attach(const struct sp887x_config * config,struct i2c_adapter * i2c)259a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend* sp887x_attach(const struct sp887x_config* config,
269a0bf528SMauro Carvalho Chehab 					  struct i2c_adapter* i2c)
279a0bf528SMauro Carvalho Chehab {
289a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
299a0bf528SMauro Carvalho Chehab 	return NULL;
309a0bf528SMauro Carvalho Chehab }
319a0bf528SMauro Carvalho Chehab #endif // CONFIG_DVB_SP887X
329a0bf528SMauro Carvalho Chehab 
339a0bf528SMauro Carvalho Chehab #endif // SP887X_H
34