tda1004x.h revision f03cbea36ab9412dcea58e953be4933b36c9b7be
1 /* 2 Driver for Philips tda1004xh OFDM Frontend 3 4 (c) 2004 Andrew de Quincey 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 21 */ 22 23#ifndef TDA1004X_H 24#define TDA1004X_H 25 26#include <linux/dvb/frontend.h> 27#include <linux/firmware.h> 28 29enum tda10046_xtal { 30 TDA10046_XTAL_4M, 31 TDA10046_XTAL_16M, 32}; 33 34enum tda10046_agc { 35 TDA10046_AGC_DEFAULT, /* original configuration */ 36 TDA10046_AGC_IFO_AUTO_NEG, /* IF AGC only, automatic, negtive */ 37 TDA10046_AGC_IFO_AUTO_POS, /* IF AGC only, automatic, positive */ 38 TDA10046_AGC_TDA827X, /* IF AGC only, special setup for tda827x */ 39}; 40 41enum tda10046_if { 42 TDA10046_FREQ_3617, /* original config, 36,166 MHZ */ 43 TDA10046_FREQ_3613, /* 36,13 MHZ */ 44 TDA10046_FREQ_045, /* low IF, 4.0, 4.5, or 5.0 MHZ */ 45 TDA10046_FREQ_052, /* low IF, 5.1667 MHZ for tda9889 */ 46}; 47 48struct tda1004x_config 49{ 50 /* the demodulator's i2c address */ 51 u8 demod_address; 52 53 /* does the "inversion" need inverted? */ 54 u8 invert; 55 56 /* Does the OCLK signal need inverted? */ 57 u8 invert_oclk; 58 59 /* Xtal frequency, 4 or 16MHz*/ 60 enum tda10046_xtal xtal_freq; 61 62 /* IF frequency */ 63 enum tda10046_if if_freq; 64 65 /* AGC configuration */ 66 enum tda10046_agc agc_config; 67 68 /* PLL maintenance */ 69 int (*pll_init)(struct dvb_frontend* fe); 70 void (*pll_sleep)(struct dvb_frontend* fe); 71 int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); 72 73 /* request firmware for device */ 74 /* set this to NULL if the card has a firmware EEPROM */ 75 int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name); 76}; 77 78extern struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config, 79 struct i2c_adapter* i2c); 80 81extern struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config, 82 struct i2c_adapter* i2c); 83 84extern int tda1004x_write_byte(struct dvb_frontend* fe, int reg, int data); 85 86#endif // TDA1004X_H 87