xref: /linux/drivers/media/dvb-frontends/drxd.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*89ee7f4fSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2126f1e61SRalph Metzler /*
3126f1e61SRalph Metzler  * drxd.h: DRXD DVB-T demodulator driver
4126f1e61SRalph Metzler  *
5126f1e61SRalph Metzler  * Copyright (C) 2005-2007 Micronas
6126f1e61SRalph Metzler  */
7126f1e61SRalph Metzler 
8126f1e61SRalph Metzler #ifndef _DRXD_H_
9126f1e61SRalph Metzler #define _DRXD_H_
10126f1e61SRalph Metzler 
11126f1e61SRalph Metzler #include <linux/types.h>
12126f1e61SRalph Metzler #include <linux/i2c.h>
13126f1e61SRalph Metzler 
146cacdd46SDevin Heitmueller struct drxd_config {
15126f1e61SRalph Metzler 	u8 index;
16126f1e61SRalph Metzler 
17126f1e61SRalph Metzler 	u8 pll_address;
18126f1e61SRalph Metzler 	u8 pll_type;
19126f1e61SRalph Metzler #define DRXD_PLL_NONE     0
20126f1e61SRalph Metzler #define DRXD_PLL_DTT7520X 1
21126f1e61SRalph Metzler #define DRXD_PLL_MT3X0823 2
22126f1e61SRalph Metzler 
23126f1e61SRalph Metzler 	u32 clock;
24ba967965SDevin Heitmueller 	u8 insert_rs_byte;
25126f1e61SRalph Metzler 
26126f1e61SRalph Metzler 	u8 demod_address;
27126f1e61SRalph Metzler 	u8 demoda_address;
28126f1e61SRalph Metzler 	u8 demod_revision;
29126f1e61SRalph Metzler 
306b142b3cSDevin Heitmueller 	/* If the tuner is not behind an i2c gate, be sure to flip this bit
316b142b3cSDevin Heitmueller 	   or else the i2c bus could get wedged */
326b142b3cSDevin Heitmueller 	u8 disable_i2c_gate_ctrl;
336b142b3cSDevin Heitmueller 
34126f1e61SRalph Metzler 	u32 IF;
35126f1e61SRalph Metzler 	 s16(*osc_deviation) (void *priv, s16 dev, int flag);
36126f1e61SRalph Metzler };
37126f1e61SRalph Metzler 
389b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_DRXD)
39126f1e61SRalph Metzler extern
40126f1e61SRalph Metzler struct dvb_frontend *drxd_attach(const struct drxd_config *config,
41126f1e61SRalph Metzler 				 void *priv, struct i2c_adapter *i2c,
42126f1e61SRalph Metzler 				 struct device *dev);
4360ab5e12SArnd Bergmann #else
4460ab5e12SArnd Bergmann static inline
4560ab5e12SArnd Bergmann struct dvb_frontend *drxd_attach(const struct drxd_config *config,
4660ab5e12SArnd Bergmann 				 void *priv, struct i2c_adapter *i2c,
4760ab5e12SArnd Bergmann 				 struct device *dev)
4860ab5e12SArnd Bergmann {
4960ab5e12SArnd Bergmann 	printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
5060ab5e12SArnd Bergmann 	       __func__);
5160ab5e12SArnd Bergmann 	return NULL;
5260ab5e12SArnd Bergmann }
5360ab5e12SArnd Bergmann #endif
5460ab5e12SArnd Bergmann 
55126f1e61SRalph Metzler #endif
56