1 /* 2 * Afatech AF9033 demodulator driver 3 * 4 * Copyright (C) 2009 Antti Palosaari <crope@iki.fi> 5 * Copyright (C) 2012 Antti Palosaari <crope@iki.fi> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 */ 21 22 #ifndef AF9033_H 23 #define AF9033_H 24 25 #include <linux/kconfig.h> 26 27 struct af9033_config { 28 /* 29 * I2C address 30 */ 31 u8 i2c_addr; 32 33 /* 34 * clock Hz 35 * 12000000, 22000000, 24000000, 34000000, 32000000, 28000000, 26000000, 36 * 30000000, 36000000, 20480000, 16384000 37 */ 38 u32 clock; 39 40 /* 41 * ADC multiplier 42 */ 43 #define AF9033_ADC_MULTIPLIER_1X 0 44 #define AF9033_ADC_MULTIPLIER_2X 1 45 u8 adc_multiplier; 46 47 /* 48 * tuner 49 */ 50 #define AF9033_TUNER_TUA9001 0x27 /* Infineon TUA 9001 */ 51 #define AF9033_TUNER_FC0011 0x28 /* Fitipower FC0011 */ 52 #define AF9033_TUNER_FC0012 0x2e /* Fitipower FC0012 */ 53 #define AF9033_TUNER_MXL5007T 0xa0 /* MaxLinear MxL5007T */ 54 #define AF9033_TUNER_TDA18218 0xa1 /* NXP TDA 18218HN */ 55 #define AF9033_TUNER_FC2580 0x32 /* FCI FC2580 */ 56 /* 50-5f Omega */ 57 #define AF9033_TUNER_IT9135_38 0x38 /* Omega */ 58 #define AF9033_TUNER_IT9135_51 0x51 /* Omega LNA config 1 */ 59 #define AF9033_TUNER_IT9135_52 0x52 /* Omega LNA config 2 */ 60 /* 60-6f Omega v2 */ 61 #define AF9033_TUNER_IT9135_60 0x60 /* Omega v2 */ 62 #define AF9033_TUNER_IT9135_61 0x61 /* Omega v2 LNA config 1 */ 63 #define AF9033_TUNER_IT9135_62 0x62 /* Omega v2 LNA config 2 */ 64 u8 tuner; 65 66 /* 67 * TS settings 68 */ 69 #define AF9033_TS_MODE_USB 0 70 #define AF9033_TS_MODE_PARALLEL 1 71 #define AF9033_TS_MODE_SERIAL 2 72 u8 ts_mode:2; 73 74 /* 75 * input spectrum inversion 76 */ 77 bool spec_inv; 78 }; 79 80 81 struct af9033_ops { 82 int (*pid_filter_ctrl)(struct dvb_frontend *fe, int onoff); 83 int (*pid_filter)(struct dvb_frontend *fe, int index, u16 pid, 84 int onoff); 85 }; 86 87 88 #if IS_ENABLED(CONFIG_DVB_AF9033) 89 extern 90 struct dvb_frontend *af9033_attach(const struct af9033_config *config, 91 struct i2c_adapter *i2c, 92 struct af9033_ops *ops); 93 94 #else 95 static inline 96 struct dvb_frontend *af9033_attach(const struct af9033_config *config, 97 struct i2c_adapter *i2c, 98 struct af9033_ops *ops) 99 { 100 pr_warn("%s: driver disabled by Kconfig\n", __func__); 101 return NULL; 102 } 103 104 static inline int af9033_pid_filter_ctrl(struct dvb_frontend *fe, int onoff) 105 { 106 pr_warn("%s: driver disabled by Kconfig\n", __func__); 107 return -ENODEV; 108 } 109 110 static inline int af9033_pid_filter(struct dvb_frontend *fe, int index, u16 pid, 111 int onoff) 112 { 113 pr_warn("%s: driver disabled by Kconfig\n", __func__); 114 return -ENODEV; 115 } 116 117 #endif 118 119 #endif /* AF9033_H */ 120