19a0bf528SMauro Carvalho Chehab /*
29a0bf528SMauro Carvalho Chehab  * drxd.h: DRXD DVB-T demodulator driver
39a0bf528SMauro Carvalho Chehab  *
49a0bf528SMauro Carvalho Chehab  * Copyright (C) 2005-2007 Micronas
59a0bf528SMauro Carvalho Chehab  *
69a0bf528SMauro Carvalho Chehab  * This program is free software; you can redistribute it and/or
79a0bf528SMauro Carvalho Chehab  * modify it under the terms of the GNU General Public License
89a0bf528SMauro Carvalho Chehab  * version 2 only, as published by the Free Software Foundation.
99a0bf528SMauro Carvalho Chehab  *
109a0bf528SMauro Carvalho Chehab  *
119a0bf528SMauro Carvalho Chehab  * This program is distributed in the hope that it will be useful,
129a0bf528SMauro Carvalho Chehab  * but WITHOUT ANY WARRANTY; without even the implied warranty of
139a0bf528SMauro Carvalho Chehab  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
149a0bf528SMauro Carvalho Chehab  * GNU General Public License for more details.
159a0bf528SMauro Carvalho Chehab  *
169a0bf528SMauro Carvalho Chehab  *
179a0bf528SMauro Carvalho Chehab  * You should have received a copy of the GNU General Public License
189a0bf528SMauro Carvalho Chehab  * along with this program; if not, write to the Free Software
199a0bf528SMauro Carvalho Chehab  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
209a0bf528SMauro Carvalho Chehab  * 02110-1301, USA
219a0bf528SMauro Carvalho Chehab  * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
229a0bf528SMauro Carvalho Chehab  */
239a0bf528SMauro Carvalho Chehab 
249a0bf528SMauro Carvalho Chehab #ifndef _DRXD_H_
259a0bf528SMauro Carvalho Chehab #define _DRXD_H_
269a0bf528SMauro Carvalho Chehab 
279a0bf528SMauro Carvalho Chehab #include <linux/types.h>
289a0bf528SMauro Carvalho Chehab #include <linux/i2c.h>
299a0bf528SMauro Carvalho Chehab 
309a0bf528SMauro Carvalho Chehab struct drxd_config {
319a0bf528SMauro Carvalho Chehab 	u8 index;
329a0bf528SMauro Carvalho Chehab 
339a0bf528SMauro Carvalho Chehab 	u8 pll_address;
349a0bf528SMauro Carvalho Chehab 	u8 pll_type;
359a0bf528SMauro Carvalho Chehab #define DRXD_PLL_NONE     0
369a0bf528SMauro Carvalho Chehab #define DRXD_PLL_DTT7520X 1
379a0bf528SMauro Carvalho Chehab #define DRXD_PLL_MT3X0823 2
389a0bf528SMauro Carvalho Chehab 
399a0bf528SMauro Carvalho Chehab 	u32 clock;
409a0bf528SMauro Carvalho Chehab 	u8 insert_rs_byte;
419a0bf528SMauro Carvalho Chehab 
429a0bf528SMauro Carvalho Chehab 	u8 demod_address;
439a0bf528SMauro Carvalho Chehab 	u8 demoda_address;
449a0bf528SMauro Carvalho Chehab 	u8 demod_revision;
459a0bf528SMauro Carvalho Chehab 
469a0bf528SMauro Carvalho Chehab 	/* If the tuner is not behind an i2c gate, be sure to flip this bit
479a0bf528SMauro Carvalho Chehab 	   or else the i2c bus could get wedged */
489a0bf528SMauro Carvalho Chehab 	u8 disable_i2c_gate_ctrl;
499a0bf528SMauro Carvalho Chehab 
509a0bf528SMauro Carvalho Chehab 	u32 IF;
519a0bf528SMauro Carvalho Chehab 	 s16(*osc_deviation) (void *priv, s16 dev, int flag);
529a0bf528SMauro Carvalho Chehab };
539a0bf528SMauro Carvalho Chehab 
549a0bf528SMauro Carvalho Chehab #if defined(CONFIG_DVB_DRXD) || \
559a0bf528SMauro Carvalho Chehab 			(defined(CONFIG_DVB_DRXD_MODULE) && defined(MODULE))
569a0bf528SMauro Carvalho Chehab extern
579a0bf528SMauro Carvalho Chehab struct dvb_frontend *drxd_attach(const struct drxd_config *config,
589a0bf528SMauro Carvalho Chehab 				 void *priv, struct i2c_adapter *i2c,
599a0bf528SMauro Carvalho Chehab 				 struct device *dev);
609a0bf528SMauro Carvalho Chehab #else
619a0bf528SMauro Carvalho Chehab static inline
629a0bf528SMauro Carvalho Chehab struct dvb_frontend *drxd_attach(const struct drxd_config *config,
639a0bf528SMauro Carvalho Chehab 				 void *priv, struct i2c_adapter *i2c,
649a0bf528SMauro Carvalho Chehab 				 struct device *dev)
659a0bf528SMauro Carvalho Chehab {
669a0bf528SMauro Carvalho Chehab 	printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
679a0bf528SMauro Carvalho Chehab 	       __func__);
689a0bf528SMauro Carvalho Chehab 	return NULL;
699a0bf528SMauro Carvalho Chehab }
709a0bf528SMauro Carvalho Chehab #endif
719a0bf528SMauro Carvalho Chehab 
729a0bf528SMauro Carvalho Chehab extern int drxd_config_i2c(struct dvb_frontend *, int);
739a0bf528SMauro Carvalho Chehab #endif
74