1*a10e763bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 242afd061SPatrick Boettcher /* 342afd061SPatrick Boettcher * Driver for DiBcom DiB3000MC/P-demodulator. 442afd061SPatrick Boettcher * 542afd061SPatrick Boettcher * Copyright (C) 2004-6 DiBcom (http://www.dibcom.fr/) 699e44da7SPatrick Boettcher * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de) 742afd061SPatrick Boettcher * 842afd061SPatrick Boettcher * This code is partially based on the previous dib3000mc.c . 942afd061SPatrick Boettcher */ 1042afd061SPatrick Boettcher #ifndef DIB3000MC_H 1142afd061SPatrick Boettcher #define DIB3000MC_H 1242afd061SPatrick Boettcher 1342afd061SPatrick Boettcher #include "dibx000_common.h" 1442afd061SPatrick Boettcher 1542afd061SPatrick Boettcher struct dib3000mc_config { 1642afd061SPatrick Boettcher struct dibx000_agc_config *agc; 1742afd061SPatrick Boettcher 1842afd061SPatrick Boettcher u8 phase_noise_mode; 1942afd061SPatrick Boettcher u8 impulse_noise_mode; 2042afd061SPatrick Boettcher 2142afd061SPatrick Boettcher u8 pwm3_inversion; 2242afd061SPatrick Boettcher u8 use_pwm3; 2342afd061SPatrick Boettcher u16 pwm3_value; 2442afd061SPatrick Boettcher 2542afd061SPatrick Boettcher u16 max_time; 2642afd061SPatrick Boettcher u16 ln_adc_level; 2742afd061SPatrick Boettcher 285570dd02SPatrick Boettcher u8 agc_command1 :1; 295570dd02SPatrick Boettcher u8 agc_command2 :1; 305570dd02SPatrick Boettcher 3142afd061SPatrick Boettcher u8 mobile_mode; 3242afd061SPatrick Boettcher 3342afd061SPatrick Boettcher u8 output_mpeg2_in_188_bytes; 3442afd061SPatrick Boettcher }; 3542afd061SPatrick Boettcher 3642afd061SPatrick Boettcher #define DEFAULT_DIB3000MC_I2C_ADDRESS 16 3742afd061SPatrick Boettcher #define DEFAULT_DIB3000P_I2C_ADDRESS 24 3842afd061SPatrick Boettcher 399b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_DIB3000MC) 4053655c6aSMichael Krufky extern struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, 4153655c6aSMichael Krufky u8 i2c_addr, 4253655c6aSMichael Krufky struct dib3000mc_config *cfg); 4353655c6aSMichael Krufky extern int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c, 4453655c6aSMichael Krufky int no_of_demods, u8 default_addr, 4553655c6aSMichael Krufky struct dib3000mc_config cfg[]); 4653655c6aSMichael Krufky extern 4753655c6aSMichael Krufky struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod, 4853655c6aSMichael Krufky int gating); 4942afd061SPatrick Boettcher #else 5053655c6aSMichael Krufky static inline 5153655c6aSMichael Krufky struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, 5253655c6aSMichael Krufky struct dib3000mc_config *cfg) 5353655c6aSMichael Krufky { 5453655c6aSMichael Krufky printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 5553655c6aSMichael Krufky return NULL; 5653655c6aSMichael Krufky } 5753655c6aSMichael Krufky 5853655c6aSMichael Krufky static inline 5953655c6aSMichael Krufky int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c, 6053655c6aSMichael Krufky int no_of_demods, u8 default_addr, 6153655c6aSMichael Krufky struct dib3000mc_config cfg[]) 6253655c6aSMichael Krufky { 6353655c6aSMichael Krufky printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 6453655c6aSMichael Krufky return -ENODEV; 6553655c6aSMichael Krufky } 6653655c6aSMichael Krufky 6753655c6aSMichael Krufky static inline 6853655c6aSMichael Krufky struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod, 6953655c6aSMichael Krufky int gating) 7042afd061SPatrick Boettcher { 71271ddbf7SHarvey Harrison printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 7242afd061SPatrick Boettcher return NULL; 7342afd061SPatrick Boettcher } 7442afd061SPatrick Boettcher #endif // CONFIG_DVB_DIB3000MC 7542afd061SPatrick Boettcher 7642afd061SPatrick Boettcher extern int dib3000mc_pid_control(struct dvb_frontend *fe, int index, int pid,int onoff); 7742afd061SPatrick Boettcher extern int dib3000mc_pid_parse(struct dvb_frontend *fe, int onoff); 7842afd061SPatrick Boettcher 7942afd061SPatrick Boettcher extern void dib3000mc_set_config(struct dvb_frontend *, struct dib3000mc_config *); 8042afd061SPatrick Boettcher 8142afd061SPatrick Boettcher #endif 82