1*9a0bf528SMauro Carvalho Chehab /* 2*9a0bf528SMauro Carvalho Chehab * Driver for DiBcom DiB3000MC/P-demodulator. 3*9a0bf528SMauro Carvalho Chehab * 4*9a0bf528SMauro Carvalho Chehab * Copyright (C) 2004-6 DiBcom (http://www.dibcom.fr/) 5*9a0bf528SMauro Carvalho Chehab * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher\@desy.de) 6*9a0bf528SMauro Carvalho Chehab * 7*9a0bf528SMauro Carvalho Chehab * This code is partially based on the previous dib3000mc.c . 8*9a0bf528SMauro Carvalho Chehab * 9*9a0bf528SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or 10*9a0bf528SMauro Carvalho Chehab * modify it under the terms of the GNU General Public License as 11*9a0bf528SMauro Carvalho Chehab * published by the Free Software Foundation, version 2. 12*9a0bf528SMauro Carvalho Chehab */ 13*9a0bf528SMauro Carvalho Chehab #ifndef DIB3000MC_H 14*9a0bf528SMauro Carvalho Chehab #define DIB3000MC_H 15*9a0bf528SMauro Carvalho Chehab 16*9a0bf528SMauro Carvalho Chehab #include "dibx000_common.h" 17*9a0bf528SMauro Carvalho Chehab 18*9a0bf528SMauro Carvalho Chehab struct dib3000mc_config { 19*9a0bf528SMauro Carvalho Chehab struct dibx000_agc_config *agc; 20*9a0bf528SMauro Carvalho Chehab 21*9a0bf528SMauro Carvalho Chehab u8 phase_noise_mode; 22*9a0bf528SMauro Carvalho Chehab u8 impulse_noise_mode; 23*9a0bf528SMauro Carvalho Chehab 24*9a0bf528SMauro Carvalho Chehab u8 pwm3_inversion; 25*9a0bf528SMauro Carvalho Chehab u8 use_pwm3; 26*9a0bf528SMauro Carvalho Chehab u16 pwm3_value; 27*9a0bf528SMauro Carvalho Chehab 28*9a0bf528SMauro Carvalho Chehab u16 max_time; 29*9a0bf528SMauro Carvalho Chehab u16 ln_adc_level; 30*9a0bf528SMauro Carvalho Chehab 31*9a0bf528SMauro Carvalho Chehab u8 agc_command1 :1; 32*9a0bf528SMauro Carvalho Chehab u8 agc_command2 :1; 33*9a0bf528SMauro Carvalho Chehab 34*9a0bf528SMauro Carvalho Chehab u8 mobile_mode; 35*9a0bf528SMauro Carvalho Chehab 36*9a0bf528SMauro Carvalho Chehab u8 output_mpeg2_in_188_bytes; 37*9a0bf528SMauro Carvalho Chehab }; 38*9a0bf528SMauro Carvalho Chehab 39*9a0bf528SMauro Carvalho Chehab #define DEFAULT_DIB3000MC_I2C_ADDRESS 16 40*9a0bf528SMauro Carvalho Chehab #define DEFAULT_DIB3000P_I2C_ADDRESS 24 41*9a0bf528SMauro Carvalho Chehab 42*9a0bf528SMauro Carvalho Chehab #if defined(CONFIG_DVB_DIB3000MC) || (defined(CONFIG_DVB_DIB3000MC_MODULE) && \ 43*9a0bf528SMauro Carvalho Chehab defined(MODULE)) 44*9a0bf528SMauro Carvalho Chehab extern struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, 45*9a0bf528SMauro Carvalho Chehab u8 i2c_addr, 46*9a0bf528SMauro Carvalho Chehab struct dib3000mc_config *cfg); 47*9a0bf528SMauro Carvalho Chehab extern int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c, 48*9a0bf528SMauro Carvalho Chehab int no_of_demods, u8 default_addr, 49*9a0bf528SMauro Carvalho Chehab struct dib3000mc_config cfg[]); 50*9a0bf528SMauro Carvalho Chehab extern 51*9a0bf528SMauro Carvalho Chehab struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod, 52*9a0bf528SMauro Carvalho Chehab int gating); 53*9a0bf528SMauro Carvalho Chehab #else 54*9a0bf528SMauro Carvalho Chehab static inline 55*9a0bf528SMauro Carvalho Chehab struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, 56*9a0bf528SMauro Carvalho Chehab struct dib3000mc_config *cfg) 57*9a0bf528SMauro Carvalho Chehab { 58*9a0bf528SMauro Carvalho Chehab printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 59*9a0bf528SMauro Carvalho Chehab return NULL; 60*9a0bf528SMauro Carvalho Chehab } 61*9a0bf528SMauro Carvalho Chehab 62*9a0bf528SMauro Carvalho Chehab static inline 63*9a0bf528SMauro Carvalho Chehab int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c, 64*9a0bf528SMauro Carvalho Chehab int no_of_demods, u8 default_addr, 65*9a0bf528SMauro Carvalho Chehab struct dib3000mc_config cfg[]) 66*9a0bf528SMauro Carvalho Chehab { 67*9a0bf528SMauro Carvalho Chehab printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 68*9a0bf528SMauro Carvalho Chehab return -ENODEV; 69*9a0bf528SMauro Carvalho Chehab } 70*9a0bf528SMauro Carvalho Chehab 71*9a0bf528SMauro Carvalho Chehab static inline 72*9a0bf528SMauro Carvalho Chehab struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod, 73*9a0bf528SMauro Carvalho Chehab int gating) 74*9a0bf528SMauro Carvalho Chehab { 75*9a0bf528SMauro Carvalho Chehab printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 76*9a0bf528SMauro Carvalho Chehab return NULL; 77*9a0bf528SMauro Carvalho Chehab } 78*9a0bf528SMauro Carvalho Chehab #endif // CONFIG_DVB_DIB3000MC 79*9a0bf528SMauro Carvalho Chehab 80*9a0bf528SMauro Carvalho Chehab extern int dib3000mc_pid_control(struct dvb_frontend *fe, int index, int pid,int onoff); 81*9a0bf528SMauro Carvalho Chehab extern int dib3000mc_pid_parse(struct dvb_frontend *fe, int onoff); 82*9a0bf528SMauro Carvalho Chehab 83*9a0bf528SMauro Carvalho Chehab extern void dib3000mc_set_config(struct dvb_frontend *, struct dib3000mc_config *); 84*9a0bf528SMauro Carvalho Chehab 85*9a0bf528SMauro Carvalho Chehab #endif 86