]>
Commit | Line | Data |
---|---|---|
7f882c2e AP |
1 | /* |
2 | * Afatech AF9035 DVB USB 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 AF9035_H | |
23 | #define AF9035_H | |
24 | ||
5da2aecb | 25 | #include "dvb_usb.h" |
2a79eefa AP |
26 | #include "af9033.h" |
27 | #include "tua9001.h" | |
28 | #include "fc0011.h" | |
7e0bc296 | 29 | #include "fc0012.h" |
2a79eefa AP |
30 | #include "mxl5007t.h" |
31 | #include "tda18218.h" | |
d67ceb33 | 32 | #include "fc2580.h" |
c2ba9726 | 33 | #include "it913x.h" |
5b556084 OS |
34 | #include "si2168.h" |
35 | #include "si2157.h" | |
7f882c2e AP |
36 | |
37 | struct reg_val { | |
38 | u32 reg; | |
39 | u8 val; | |
40 | }; | |
41 | ||
42 | struct reg_val_mask { | |
43 | u32 reg; | |
44 | u8 val; | |
45 | u8 mask; | |
46 | }; | |
47 | ||
48 | struct usb_req { | |
49 | u8 cmd; | |
50 | u8 mbox; | |
51 | u8 wlen; | |
52 | u8 *wbuf; | |
53 | u8 rlen; | |
54 | u8 *rbuf; | |
55 | }; | |
56 | ||
2a79eefa | 57 | struct state { |
3484d37a AP |
58 | #define BUF_LEN 64 |
59 | u8 buf[BUF_LEN]; | |
5da2aecb | 60 | u8 seq; /* packet sequence number */ |
74c1883a AP |
61 | u8 prechip_version; |
62 | u8 chip_version; | |
63 | u16 chip_type; | |
70375ecc | 64 | u8 dual_mode:1; |
1882f59f | 65 | u8 no_read:1; |
df8f1be1 | 66 | u16 eeprom_addr; |
a781edd1 | 67 | u8 af9033_i2c_addr[2]; |
2a79eefa | 68 | struct af9033_config af9033_config[2]; |
ed97a6fe | 69 | struct af9033_ops ops; |
f5b00a76 | 70 | #define AF9035_I2C_CLIENT_MAX 4 |
3b2a5e8c | 71 | struct i2c_client *i2c_client[AF9035_I2C_CLIENT_MAX]; |
5b556084 | 72 | struct i2c_adapter *i2c_adapter_demod; |
7f882c2e AP |
73 | }; |
74 | ||
9ea3681d | 75 | static const u32 clock_lut_af9035[] = { |
7f882c2e AP |
76 | 20480000, /* FPGA */ |
77 | 16384000, /* 16.38 MHz */ | |
78 | 20480000, /* 20.48 MHz */ | |
79 | 36000000, /* 36.00 MHz */ | |
80 | 30000000, /* 30.00 MHz */ | |
81 | 26000000, /* 26.00 MHz */ | |
82 | 28000000, /* 28.00 MHz */ | |
83 | 32000000, /* 32.00 MHz */ | |
84 | 34000000, /* 34.00 MHz */ | |
85 | 24000000, /* 24.00 MHz */ | |
86 | 22000000, /* 22.00 MHz */ | |
87 | 12000000, /* 12.00 MHz */ | |
88 | }; | |
89 | ||
a7816b76 | 90 | static const u32 clock_lut_it9135[] = { |
f2b61d0c AP |
91 | 12000000, /* 12.00 MHz */ |
92 | 20480000, /* 20.48 MHz */ | |
93 | 36000000, /* 36.00 MHz */ | |
94 | 30000000, /* 30.00 MHz */ | |
95 | 26000000, /* 26.00 MHz */ | |
96 | 28000000, /* 28.00 MHz */ | |
97 | 32000000, /* 32.00 MHz */ | |
98 | 34000000, /* 34.00 MHz */ | |
99 | 24000000, /* 24.00 MHz */ | |
100 | 22000000, /* 22.00 MHz */ | |
101 | }; | |
102 | ||
4395e4b7 | 103 | #define AF9035_FIRMWARE_AF9035 "dvb-usb-af9035-02.fw" |
74c1883a AP |
104 | #define AF9035_FIRMWARE_IT9135_V1 "dvb-usb-it9135-01.fw" |
105 | #define AF9035_FIRMWARE_IT9135_V2 "dvb-usb-it9135-02.fw" | |
5b556084 | 106 | #define AF9035_FIRMWARE_IT9303 "dvb-usb-it9303-01.fw" |
4395e4b7 | 107 | |
70375ecc AP |
108 | /* |
109 | * eeprom is memory mapped as read only. Writing that memory mapped address | |
110 | * will not corrupt eeprom. | |
111 | * | |
d716ef46 AP |
112 | * TS mode: |
113 | * 0 TS | |
114 | * 1 DCA + PIP | |
115 | * 3 PIP | |
9e422f64 | 116 | * 5 DCA + PIP (AF9035 only) |
d716ef46 AP |
117 | * n DCA |
118 | * | |
b8278f8b | 119 | * Values 0, 3 and 5 are seen to this day. 0 for single TS and 3/5 for dual TS. |
70375ecc AP |
120 | */ |
121 | ||
9c574ad4 AP |
122 | #define EEPROM_BASE_AF9035 0x42f5 |
123 | #define EEPROM_BASE_IT9135 0x4994 | |
9ea3681d AP |
124 | #define EEPROM_SHIFT 0x10 |
125 | ||
9c574ad4 AP |
126 | #define EEPROM_IR_MODE 0x18 |
127 | #define EEPROM_TS_MODE 0x31 | |
128 | #define EEPROM_2ND_DEMOD_ADDR 0x32 | |
129 | #define EEPROM_IR_TYPE 0x34 | |
130 | #define EEPROM_1_IF_L 0x38 | |
131 | #define EEPROM_1_IF_H 0x39 | |
132 | #define EEPROM_1_TUNER_ID 0x3c | |
133 | #define EEPROM_2_IF_L 0x48 | |
134 | #define EEPROM_2_IF_H 0x49 | |
135 | #define EEPROM_2_TUNER_ID 0x4c | |
7f882c2e AP |
136 | |
137 | /* USB commands */ | |
138 | #define CMD_MEM_RD 0x00 | |
139 | #define CMD_MEM_WR 0x01 | |
140 | #define CMD_I2C_RD 0x02 | |
141 | #define CMD_I2C_WR 0x03 | |
3234bd2f | 142 | #define CMD_IR_GET 0x18 |
7f882c2e AP |
143 | #define CMD_FW_DL 0x21 |
144 | #define CMD_FW_QUERYINFO 0x22 | |
145 | #define CMD_FW_BOOT 0x23 | |
146 | #define CMD_FW_DL_BEGIN 0x24 | |
147 | #define CMD_FW_DL_END 0x25 | |
f2b61d0c | 148 | #define CMD_FW_SCATTER_WR 0x29 |
5b556084 OS |
149 | #define CMD_GENERIC_I2C_RD 0x2a |
150 | #define CMD_GENERIC_I2C_WR 0x2b | |
7f882c2e AP |
151 | |
152 | #endif |