xref: /linux/drivers/media/dvb-frontends/tda10048.h (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
1*74ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab     NXP TDA10048HN DVB OFDM demodulator driver
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab     Copyright (C) 2009 Steven Toth <stoth@kernellabs.com>
69a0bf528SMauro Carvalho Chehab 
79a0bf528SMauro Carvalho Chehab 
89a0bf528SMauro Carvalho Chehab */
99a0bf528SMauro Carvalho Chehab 
109a0bf528SMauro Carvalho Chehab #ifndef TDA10048_H
119a0bf528SMauro Carvalho Chehab #define TDA10048_H
129a0bf528SMauro Carvalho Chehab 
139a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h>
149a0bf528SMauro Carvalho Chehab #include <linux/firmware.h>
159a0bf528SMauro Carvalho Chehab 
169a0bf528SMauro Carvalho Chehab struct tda10048_config {
179a0bf528SMauro Carvalho Chehab 
189a0bf528SMauro Carvalho Chehab 	/* the demodulator's i2c address */
199a0bf528SMauro Carvalho Chehab 	u8 demod_address;
209a0bf528SMauro Carvalho Chehab 
219a0bf528SMauro Carvalho Chehab 	/* serial/parallel output */
229a0bf528SMauro Carvalho Chehab #define TDA10048_PARALLEL_OUTPUT 0
239a0bf528SMauro Carvalho Chehab #define TDA10048_SERIAL_OUTPUT   1
249a0bf528SMauro Carvalho Chehab 	u8 output_mode;
259a0bf528SMauro Carvalho Chehab 
269a0bf528SMauro Carvalho Chehab #define TDA10048_BULKWRITE_200	200
279a0bf528SMauro Carvalho Chehab #define TDA10048_BULKWRITE_50	50
289a0bf528SMauro Carvalho Chehab 	u8 fwbulkwritelen;
299a0bf528SMauro Carvalho Chehab 
309a0bf528SMauro Carvalho Chehab 	/* Spectral Inversion */
319a0bf528SMauro Carvalho Chehab #define TDA10048_INVERSION_OFF 0
329a0bf528SMauro Carvalho Chehab #define TDA10048_INVERSION_ON  1
339a0bf528SMauro Carvalho Chehab 	u8 inversion;
349a0bf528SMauro Carvalho Chehab 
359a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3300  3300
369a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3500  3500
379a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3800  3800
389a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4000  4000
399a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4300  4300
409a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4500  4500
419a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4750  4750
429a0bf528SMauro Carvalho Chehab #define TDA10048_IF_5000  5000
439a0bf528SMauro Carvalho Chehab #define TDA10048_IF_36130 36130
449a0bf528SMauro Carvalho Chehab 	u16 dtv6_if_freq_khz;
459a0bf528SMauro Carvalho Chehab 	u16 dtv7_if_freq_khz;
469a0bf528SMauro Carvalho Chehab 	u16 dtv8_if_freq_khz;
479a0bf528SMauro Carvalho Chehab 
489a0bf528SMauro Carvalho Chehab #define TDA10048_CLK_4000  4000
499a0bf528SMauro Carvalho Chehab #define TDA10048_CLK_16000 16000
509a0bf528SMauro Carvalho Chehab 	u16 clk_freq_khz;
519a0bf528SMauro Carvalho Chehab 
529a0bf528SMauro Carvalho Chehab 	/* Disable I2C gate access */
539a0bf528SMauro Carvalho Chehab 	u8 disable_gate_access;
549a0bf528SMauro Carvalho Chehab 
559a0bf528SMauro Carvalho Chehab 	bool no_firmware;
569a0bf528SMauro Carvalho Chehab 
579a0bf528SMauro Carvalho Chehab 	bool set_pll;
589a0bf528SMauro Carvalho Chehab 	u8 pll_m;
599a0bf528SMauro Carvalho Chehab 	u8 pll_p;
609a0bf528SMauro Carvalho Chehab 	u8 pll_n;
619a0bf528SMauro Carvalho Chehab };
629a0bf528SMauro Carvalho Chehab 
639b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_TDA10048)
649a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *tda10048_attach(
659a0bf528SMauro Carvalho Chehab 	const struct tda10048_config *config,
669a0bf528SMauro Carvalho Chehab 	struct i2c_adapter *i2c);
679a0bf528SMauro Carvalho Chehab #else
tda10048_attach(const struct tda10048_config * config,struct i2c_adapter * i2c)689a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *tda10048_attach(
699a0bf528SMauro Carvalho Chehab 	const struct tda10048_config *config,
709a0bf528SMauro Carvalho Chehab 	struct i2c_adapter *i2c)
719a0bf528SMauro Carvalho Chehab {
729a0bf528SMauro Carvalho Chehab 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
739a0bf528SMauro Carvalho Chehab 	return NULL;
749a0bf528SMauro Carvalho Chehab }
759a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_TDA10048 */
769a0bf528SMauro Carvalho Chehab 
779a0bf528SMauro Carvalho Chehab #endif /* TDA10048_H */
78