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