xref: /linux/drivers/media/dvb-frontends/cx24120.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
25afc9a25SJemma Denson /*
35afc9a25SJemma Denson  * Conexant CX24120/CX24118 - DVB-S/S2 demod/tuner driver
45afc9a25SJemma Denson  *
55afc9a25SJemma Denson  * Copyright (C) 2008 Patrick Boettcher <pb@linuxtv.org>
65afc9a25SJemma Denson  * Copyright (C) 2009 Sergey Tyurin <forum.free-x.de>
75afc9a25SJemma Denson  * Updated 2012 by Jannis Achstetter <jannis_achstetter@web.de>
85afc9a25SJemma Denson  * Copyright (C) 2015 Jemma Denson <jdenson@gmail.com>
95afc9a25SJemma Denson  */
105afc9a25SJemma Denson 
115afc9a25SJemma Denson #ifndef CX24120_H
125afc9a25SJemma Denson #define CX24120_H
135afc9a25SJemma Denson 
145afc9a25SJemma Denson #include <linux/dvb/frontend.h>
155afc9a25SJemma Denson #include <linux/firmware.h>
165afc9a25SJemma Denson 
175afc9a25SJemma Denson struct cx24120_initial_mpeg_config {
185afc9a25SJemma Denson 	u8 x1;
195afc9a25SJemma Denson 	u8 x2;
205afc9a25SJemma Denson 	u8 x3;
215afc9a25SJemma Denson };
225afc9a25SJemma Denson 
235afc9a25SJemma Denson struct cx24120_config {
245afc9a25SJemma Denson 	u8 i2c_addr;
255afc9a25SJemma Denson 	u32 xtal_khz;
265afc9a25SJemma Denson 	struct cx24120_initial_mpeg_config initial_mpeg_config;
275afc9a25SJemma Denson 
285afc9a25SJemma Denson 	int (*request_firmware)(struct dvb_frontend *fe,
295afc9a25SJemma Denson 				const struct firmware **fw, char *name);
30f7a77ebfSPatrick Boettcher 
31f7a77ebfSPatrick Boettcher 	/* max bytes I2C provider can write at once */
32f7a77ebfSPatrick Boettcher 	u16 i2c_wr_max;
335afc9a25SJemma Denson };
345afc9a25SJemma Denson 
355afc9a25SJemma Denson #if IS_REACHABLE(CONFIG_DVB_CX24120)
361ff2e8edSPatrick Boettcher struct dvb_frontend *cx24120_attach(const struct cx24120_config *config,
375afc9a25SJemma Denson 				    struct i2c_adapter *i2c);
385afc9a25SJemma Denson #else
391ff2e8edSPatrick Boettcher static inline
401ff2e8edSPatrick Boettcher struct dvb_frontend *cx24120_attach(const struct cx24120_config *config,
415afc9a25SJemma Denson 				    struct i2c_adapter *i2c)
425afc9a25SJemma Denson {
43c5fb0f5fSPatrick Boettcher 	pr_warn("%s: driver disabled by Kconfig\n", __func__);
445afc9a25SJemma Denson 	return NULL;
455afc9a25SJemma Denson }
465afc9a25SJemma Denson #endif
475afc9a25SJemma Denson 
485afc9a25SJemma Denson #endif /* CX24120_H */
49