0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __TUNER_XC2028_H__
0009 #define __TUNER_XC2028_H__
0010
0011 #include <media/dvb_frontend.h>
0012
0013 #define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
0014 #define XC3028L_DEFAULT_FIRMWARE "xc3028L-v36.fw"
0015
0016
0017 #define XC3028_FE_DEFAULT 0
0018 #define XC3028_FE_LG60 6000
0019 #define XC3028_FE_ATI638 6380
0020 #define XC3028_FE_OREN538 5380
0021 #define XC3028_FE_OREN36 3600
0022 #define XC3028_FE_TOYOTA388 3880
0023 #define XC3028_FE_TOYOTA794 7940
0024 #define XC3028_FE_DIBCOM52 5200
0025 #define XC3028_FE_ZARLINK456 4560
0026 #define XC3028_FE_CHINA 5200
0027
0028 enum firmware_type {
0029 XC2028_AUTO = 0,
0030 XC2028_D2633,
0031 XC2028_D2620,
0032 };
0033
0034 struct xc2028_ctrl {
0035 char *fname;
0036 int max_len;
0037 int msleep;
0038 unsigned int scode_table;
0039 unsigned int mts :1;
0040 unsigned int input1:1;
0041 unsigned int vhfbw7:1;
0042 unsigned int uhfbw8:1;
0043 unsigned int disable_power_mgmt:1;
0044 unsigned int read_not_reliable:1;
0045 unsigned int demod;
0046 enum firmware_type type:2;
0047 };
0048
0049 struct xc2028_config {
0050 struct i2c_adapter *i2c_adap;
0051 u8 i2c_addr;
0052 struct xc2028_ctrl *ctrl;
0053 };
0054
0055
0056 #define XC2028_TUNER_RESET 0
0057 #define XC2028_RESET_CLK 1
0058 #define XC2028_I2C_FLUSH 2
0059
0060 #if IS_REACHABLE(CONFIG_MEDIA_TUNER_XC2028)
0061 extern struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
0062 struct xc2028_config *cfg);
0063 #else
0064 static inline struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
0065 struct xc2028_config *cfg)
0066 {
0067 printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
0068 __func__);
0069 return NULL;
0070 }
0071 #endif
0072
0073 #endif