1*9a0bf528SMauro Carvalho Chehab /* 2*9a0bf528SMauro Carvalho Chehab NXP TDA10048HN DVB OFDM demodulator driver 3*9a0bf528SMauro Carvalho Chehab 4*9a0bf528SMauro Carvalho Chehab Copyright (C) 2009 Steven Toth <stoth@kernellabs.com> 5*9a0bf528SMauro Carvalho Chehab 6*9a0bf528SMauro Carvalho Chehab This program is free software; you can redistribute it and/or modify 7*9a0bf528SMauro Carvalho Chehab it under the terms of the GNU General Public License as published by 8*9a0bf528SMauro Carvalho Chehab the Free Software Foundation; either version 2 of the License, or 9*9a0bf528SMauro Carvalho Chehab (at your option) any later version. 10*9a0bf528SMauro Carvalho Chehab 11*9a0bf528SMauro Carvalho Chehab This program is distributed in the hope that it will be useful, 12*9a0bf528SMauro Carvalho Chehab but WITHOUT ANY WARRANTY; without even the implied warranty of 13*9a0bf528SMauro Carvalho Chehab MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*9a0bf528SMauro Carvalho Chehab GNU General Public License for more details. 15*9a0bf528SMauro Carvalho Chehab 16*9a0bf528SMauro Carvalho Chehab You should have received a copy of the GNU General Public License 17*9a0bf528SMauro Carvalho Chehab along with this program; if not, write to the Free Software 18*9a0bf528SMauro Carvalho Chehab Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19*9a0bf528SMauro Carvalho Chehab 20*9a0bf528SMauro Carvalho Chehab */ 21*9a0bf528SMauro Carvalho Chehab 22*9a0bf528SMauro Carvalho Chehab #ifndef TDA10048_H 23*9a0bf528SMauro Carvalho Chehab #define TDA10048_H 24*9a0bf528SMauro Carvalho Chehab 25*9a0bf528SMauro Carvalho Chehab #include <linux/dvb/frontend.h> 26*9a0bf528SMauro Carvalho Chehab #include <linux/firmware.h> 27*9a0bf528SMauro Carvalho Chehab 28*9a0bf528SMauro Carvalho Chehab struct tda10048_config { 29*9a0bf528SMauro Carvalho Chehab 30*9a0bf528SMauro Carvalho Chehab /* the demodulator's i2c address */ 31*9a0bf528SMauro Carvalho Chehab u8 demod_address; 32*9a0bf528SMauro Carvalho Chehab 33*9a0bf528SMauro Carvalho Chehab /* serial/parallel output */ 34*9a0bf528SMauro Carvalho Chehab #define TDA10048_PARALLEL_OUTPUT 0 35*9a0bf528SMauro Carvalho Chehab #define TDA10048_SERIAL_OUTPUT 1 36*9a0bf528SMauro Carvalho Chehab u8 output_mode; 37*9a0bf528SMauro Carvalho Chehab 38*9a0bf528SMauro Carvalho Chehab #define TDA10048_BULKWRITE_200 200 39*9a0bf528SMauro Carvalho Chehab #define TDA10048_BULKWRITE_50 50 40*9a0bf528SMauro Carvalho Chehab u8 fwbulkwritelen; 41*9a0bf528SMauro Carvalho Chehab 42*9a0bf528SMauro Carvalho Chehab /* Spectral Inversion */ 43*9a0bf528SMauro Carvalho Chehab #define TDA10048_INVERSION_OFF 0 44*9a0bf528SMauro Carvalho Chehab #define TDA10048_INVERSION_ON 1 45*9a0bf528SMauro Carvalho Chehab u8 inversion; 46*9a0bf528SMauro Carvalho Chehab 47*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3300 3300 48*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3500 3500 49*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_3800 3800 50*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4000 4000 51*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4300 4300 52*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4500 4500 53*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_4750 4750 54*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_5000 5000 55*9a0bf528SMauro Carvalho Chehab #define TDA10048_IF_36130 36130 56*9a0bf528SMauro Carvalho Chehab u16 dtv6_if_freq_khz; 57*9a0bf528SMauro Carvalho Chehab u16 dtv7_if_freq_khz; 58*9a0bf528SMauro Carvalho Chehab u16 dtv8_if_freq_khz; 59*9a0bf528SMauro Carvalho Chehab 60*9a0bf528SMauro Carvalho Chehab #define TDA10048_CLK_4000 4000 61*9a0bf528SMauro Carvalho Chehab #define TDA10048_CLK_16000 16000 62*9a0bf528SMauro Carvalho Chehab u16 clk_freq_khz; 63*9a0bf528SMauro Carvalho Chehab 64*9a0bf528SMauro Carvalho Chehab /* Disable I2C gate access */ 65*9a0bf528SMauro Carvalho Chehab u8 disable_gate_access; 66*9a0bf528SMauro Carvalho Chehab 67*9a0bf528SMauro Carvalho Chehab bool no_firmware; 68*9a0bf528SMauro Carvalho Chehab 69*9a0bf528SMauro Carvalho Chehab bool set_pll; 70*9a0bf528SMauro Carvalho Chehab u8 pll_m; 71*9a0bf528SMauro Carvalho Chehab u8 pll_p; 72*9a0bf528SMauro Carvalho Chehab u8 pll_n; 73*9a0bf528SMauro Carvalho Chehab }; 74*9a0bf528SMauro Carvalho Chehab 75*9a0bf528SMauro Carvalho Chehab #if defined(CONFIG_DVB_TDA10048) || \ 76*9a0bf528SMauro Carvalho Chehab (defined(CONFIG_DVB_TDA10048_MODULE) && defined(MODULE)) 77*9a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *tda10048_attach( 78*9a0bf528SMauro Carvalho Chehab const struct tda10048_config *config, 79*9a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c); 80*9a0bf528SMauro Carvalho Chehab #else 81*9a0bf528SMauro Carvalho Chehab static inline struct dvb_frontend *tda10048_attach( 82*9a0bf528SMauro Carvalho Chehab const struct tda10048_config *config, 83*9a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c) 84*9a0bf528SMauro Carvalho Chehab { 85*9a0bf528SMauro Carvalho Chehab printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 86*9a0bf528SMauro Carvalho Chehab return NULL; 87*9a0bf528SMauro Carvalho Chehab } 88*9a0bf528SMauro Carvalho Chehab #endif /* CONFIG_DVB_TDA10048 */ 89*9a0bf528SMauro Carvalho Chehab 90*9a0bf528SMauro Carvalho Chehab #endif /* TDA10048_H */ 91