xref: /linux/drivers/media/dvb-frontends/tda10048.h (revision 9b174527e7b756cda9f5d9e541f87b7fec9cfdf0)
19a0bf528SMauro Carvalho Chehab /*
29a0bf528SMauro Carvalho Chehab     NXP TDA10048HN DVB OFDM demodulator driver
39a0bf528SMauro Carvalho Chehab 
49a0bf528SMauro Carvalho Chehab     Copyright (C) 2009 Steven Toth <stoth@kernellabs.com>
59a0bf528SMauro Carvalho Chehab 
69a0bf528SMauro Carvalho Chehab     This program is free software; you can redistribute it and/or modify
79a0bf528SMauro Carvalho Chehab     it under the terms of the GNU General Public License as published by
89a0bf528SMauro Carvalho Chehab     the Free Software Foundation; either version 2 of the License, or
99a0bf528SMauro Carvalho Chehab     (at your option) any later version.
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     You should have received a copy of the GNU General Public License
179a0bf528SMauro Carvalho Chehab     along with this program; if not, write to the Free Software
189a0bf528SMauro Carvalho Chehab     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
199a0bf528SMauro Carvalho Chehab 
209a0bf528SMauro Carvalho Chehab */
219a0bf528SMauro Carvalho Chehab 
229a0bf528SMauro Carvalho Chehab #ifndef TDA10048_H
239a0bf528SMauro Carvalho Chehab #define TDA10048_H
249a0bf528SMauro Carvalho Chehab 
25782d8b74SMauro Carvalho Chehab #include <linux/kconfig.h>
269a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
279a0bf528SMauro Carvalho Chehab #include <linux/firmware.h>
289a0bf528SMauro Carvalho Chehab 
299a0bf528SMauro Carvalho Chehab struct tda10048_config {
309a0bf528SMauro Carvalho Chehab 
319a0bf528SMauro Carvalho Chehab 	/* the demodulator's i2c address */
329a0bf528SMauro Carvalho Chehab 	u8 demod_address;
339a0bf528SMauro Carvalho Chehab 
349a0bf528SMauro Carvalho Chehab 	/* serial/parallel output */
359a0bf528SMauro Carvalho Chehab #define TDA10048_PARALLEL_OUTPUT 0
369a0bf528SMauro Carvalho Chehab #define TDA10048_SERIAL_OUTPUT   1
379a0bf528SMauro Carvalho Chehab 	u8 output_mode;
389a0bf528SMauro Carvalho Chehab 
399a0bf528SMauro Carvalho Chehab #define TDA10048_BULKWRITE_200	200
409a0bf528SMauro Carvalho Chehab #define TDA10048_BULKWRITE_50	50
419a0bf528SMauro Carvalho Chehab 	u8 fwbulkwritelen;
429a0bf528SMauro Carvalho Chehab 
439a0bf528SMauro Carvalho Chehab 	/* Spectral Inversion */
449a0bf528SMauro Carvalho Chehab #define TDA10048_INVERSION_OFF 0
459a0bf528SMauro Carvalho Chehab #define TDA10048_INVERSION_ON  1
469a0bf528SMauro Carvalho Chehab 	u8 inversion;
479a0bf528SMauro Carvalho Chehab 
489a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3300  3300
499a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3500  3500
509a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3800  3800
519a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4000  4000
529a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4300  4300
539a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4500  4500
549a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4750  4750
559a0bf528SMauro Carvalho Chehab #define TDA10048_IF_5000  5000
569a0bf528SMauro Carvalho Chehab #define TDA10048_IF_36130 36130
579a0bf528SMauro Carvalho Chehab 	u16 dtv6_if_freq_khz;
589a0bf528SMauro Carvalho Chehab 	u16 dtv7_if_freq_khz;
599a0bf528SMauro Carvalho Chehab 	u16 dtv8_if_freq_khz;
609a0bf528SMauro Carvalho Chehab 
619a0bf528SMauro Carvalho Chehab #define TDA10048_CLK_4000  4000
629a0bf528SMauro Carvalho Chehab #define TDA10048_CLK_16000 16000
639a0bf528SMauro Carvalho Chehab 	u16 clk_freq_khz;
649a0bf528SMauro Carvalho Chehab 
659a0bf528SMauro Carvalho Chehab 	/* Disable I2C gate access */
669a0bf528SMauro Carvalho Chehab 	u8 disable_gate_access;
679a0bf528SMauro Carvalho Chehab 
689a0bf528SMauro Carvalho Chehab 	bool no_firmware;
699a0bf528SMauro Carvalho Chehab 
709a0bf528SMauro Carvalho Chehab 	bool set_pll;
719a0bf528SMauro Carvalho Chehab 	u8 pll_m;
729a0bf528SMauro Carvalho Chehab 	u8 pll_p;
739a0bf528SMauro Carvalho Chehab 	u8 pll_n;
749a0bf528SMauro Carvalho Chehab };
759a0bf528SMauro Carvalho Chehab 
76*9b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_TDA10048)
779a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *tda10048_attach(
789a0bf528SMauro Carvalho Chehab 	const struct tda10048_config *config,
799a0bf528SMauro Carvalho Chehab 	struct i2c_adapter *i2c);
809a0bf528SMauro Carvalho Chehab #else
819a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *tda10048_attach(
829a0bf528SMauro Carvalho Chehab 	const struct tda10048_config *config,
839a0bf528SMauro Carvalho Chehab 	struct i2c_adapter *i2c)
849a0bf528SMauro Carvalho Chehab {
859a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
869a0bf528SMauro Carvalho Chehab 	return NULL;
879a0bf528SMauro Carvalho Chehab }
889a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_TDA10048 */
899a0bf528SMauro Carvalho Chehab 
909a0bf528SMauro Carvalho Chehab #endif /* TDA10048_H */
91