1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#ifndef RTL28XXU_H
23#define RTL28XXU_H
24
25#include <linux/platform_device.h>
26
27#include "dvb_usb.h"
28
29#include "rtl2830.h"
30#include "rtl2832.h"
31#include "rtl2832_sdr.h"
32#include "mn88472.h"
33#include "mn88473.h"
34#include "cxd2841er.h"
35
36#include "qt1010.h"
37#include "mt2060.h"
38#include "mxl5005s.h"
39#include "fc0012.h"
40#include "fc0013.h"
41#include "e4000.h"
42#include "fc2580.h"
43#include "tua9001.h"
44#include "r820t.h"
45#include "si2168.h"
46#include "si2157.h"
47
48
49
50
51
52
53#define DEMOD 0x0000
54#define USB 0x0100
55#define SYS 0x0200
56#define I2C 0x0300
57#define I2C_DA 0x0600
58
59#define CMD_WR_FLAG 0x0010
60#define CMD_DEMOD_RD 0x0000
61#define CMD_DEMOD_WR 0x0010
62#define CMD_USB_RD 0x0100
63#define CMD_USB_WR 0x0110
64#define CMD_SYS_RD 0x0200
65#define CMD_IR_RD 0x0201
66#define CMD_IR_WR 0x0211
67#define CMD_SYS_WR 0x0210
68#define CMD_I2C_RD 0x0300
69#define CMD_I2C_WR 0x0310
70#define CMD_I2C_DA_RD 0x0600
71#define CMD_I2C_DA_WR 0x0610
72
73
74struct rtl28xxu_dev {
75 u8 buf[128];
76 u8 chip_id;
77 u8 tuner;
78 char *tuner_name;
79 u8 page;
80 struct i2c_adapter *demod_i2c_adapter;
81 bool rc_active;
82 bool new_i2c_write;
83 struct i2c_client *i2c_client_demod;
84 struct i2c_client *i2c_client_tuner;
85 struct i2c_client *i2c_client_slave_demod;
86 struct platform_device *platform_device_sdr;
87 #define SLAVE_DEMOD_NONE 0
88 #define SLAVE_DEMOD_MN88472 1
89 #define SLAVE_DEMOD_MN88473 2
90 #define SLAVE_DEMOD_SI2168 3
91 #define SLAVE_DEMOD_CXD2837ER 4
92 unsigned int slave_demod:3;
93 union {
94 struct rtl2830_platform_data rtl2830_platform_data;
95 struct rtl2832_platform_data rtl2832_platform_data;
96 };
97};
98
99enum rtl28xxu_chip_id {
100 CHIP_ID_NONE,
101 CHIP_ID_RTL2831U,
102 CHIP_ID_RTL2832U,
103};
104
105
106enum rtl28xxu_tuner {
107 TUNER_NONE,
108
109 TUNER_RTL2830_QT1010 = 0x10,
110 TUNER_RTL2830_MT2060,
111 TUNER_RTL2830_MXL5005S,
112
113 TUNER_RTL2832_MT2266 = 0x20,
114 TUNER_RTL2832_FC2580,
115 TUNER_RTL2832_MT2063,
116 TUNER_RTL2832_MAX3543,
117 TUNER_RTL2832_TUA9001,
118 TUNER_RTL2832_MXL5007T,
119 TUNER_RTL2832_FC0012,
120 TUNER_RTL2832_E4000,
121 TUNER_RTL2832_TDA18272,
122 TUNER_RTL2832_FC0013,
123 TUNER_RTL2832_R820T,
124 TUNER_RTL2832_R828D,
125 TUNER_RTL2832_SI2157,
126};
127
128struct rtl28xxu_req {
129 u16 value;
130 u16 index;
131 u16 size;
132 u8 *data;
133};
134
135struct rtl28xxu_reg_val {
136 u16 reg;
137 u8 val;
138};
139
140struct rtl28xxu_reg_val_mask {
141 u16 reg;
142 u8 val;
143 u8 mask;
144};
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159#define USB_SYSCTL 0x2000
160#define USB_SYSCTL_0 0x2000
161#define USB_SYSCTL_1 0x2001
162#define USB_SYSCTL_2 0x2002
163#define USB_SYSCTL_3 0x2003
164#define USB_IRQSTAT 0x2008
165#define USB_IRQEN 0x200C
166#define USB_CTRL 0x2010
167#define USB_STAT 0x2014
168#define USB_DEVADDR 0x2018
169#define USB_TEST 0x201C
170#define USB_FRAME_NUMBER 0x2020
171#define USB_FIFO_ADDR 0x2028
172#define USB_FIFO_CMD 0x202A
173#define USB_FIFO_DATA 0x2030
174
175#define EP0_SETUPA 0x20F8
176#define EP0_SETUPB 0x20FC
177#define USB_EP0_CFG 0x2104
178#define USB_EP0_CTL 0x2108
179#define USB_EP0_STAT 0x210C
180#define USB_EP0_IRQSTAT 0x2110
181#define USB_EP0_IRQEN 0x2114
182#define USB_EP0_MAXPKT 0x2118
183#define USB_EP0_BC 0x2120
184#define USB_EPA_CFG 0x2144
185#define USB_EPA_CFG_0 0x2144
186#define USB_EPA_CFG_1 0x2145
187#define USB_EPA_CFG_2 0x2146
188#define USB_EPA_CFG_3 0x2147
189#define USB_EPA_CTL 0x2148
190#define USB_EPA_CTL_0 0x2148
191#define USB_EPA_CTL_1 0x2149
192#define USB_EPA_CTL_2 0x214A
193#define USB_EPA_CTL_3 0x214B
194#define USB_EPA_STAT 0x214C
195#define USB_EPA_IRQSTAT 0x2150
196#define USB_EPA_IRQEN 0x2154
197#define USB_EPA_MAXPKT 0x2158
198#define USB_EPA_MAXPKT_0 0x2158
199#define USB_EPA_MAXPKT_1 0x2159
200#define USB_EPA_MAXPKT_2 0x215A
201#define USB_EPA_MAXPKT_3 0x215B
202#define USB_EPA_FIFO_CFG 0x2160
203#define USB_EPA_FIFO_CFG_0 0x2160
204#define USB_EPA_FIFO_CFG_1 0x2161
205#define USB_EPA_FIFO_CFG_2 0x2162
206#define USB_EPA_FIFO_CFG_3 0x2163
207
208#define USB_PHYTSTDIS 0x2F04
209#define USB_TOUT_VAL 0x2F08
210#define USB_VDRCTRL 0x2F10
211#define USB_VSTAIN 0x2F14
212#define USB_VLOADM 0x2F18
213#define USB_VSTAOUT 0x2F1C
214#define USB_UTMI_TST 0x2F80
215#define USB_UTMI_STATUS 0x2F84
216#define USB_TSTCTL 0x2F88
217#define USB_TSTCTL2 0x2F8C
218#define USB_PID_FORCE 0x2F90
219#define USB_PKTERR_CNT 0x2F94
220#define USB_RXERR_CNT 0x2F98
221#define USB_MEM_BIST 0x2F9C
222#define USB_SLBBIST 0x2FA0
223#define USB_CNTTEST 0x2FA4
224#define USB_PHYTST 0x2FC0
225#define USB_DBGIDX 0x2FF0
226#define USB_DBGMUX 0x2FF4
227
228
229
230
231
232#define SYS_SYS0 0x3000
233#define SYS_DEMOD_CTL 0x3000
234
235#define SYS_GPIO_OUT_VAL 0x3001
236#define SYS_GPIO_IN_VAL 0x3002
237#define SYS_GPIO_OUT_EN 0x3003
238#define SYS_SYS1 0x3004
239#define SYS_GPIO_DIR 0x3004
240#define SYS_SYSINTE 0x3005
241#define SYS_SYSINTS 0x3006
242#define SYS_GPIO_CFG0 0x3007
243#define SYS_SYS2 0x3008
244#define SYS_GPIO_CFG1 0x3008
245#define SYS_DEMOD_CTL1 0x300B
246
247
248#define SYS_IRRC_PSR 0x3020
249#define SYS_IRRC_PER 0x3024
250#define SYS_IRRC_SF 0x3028
251#define SYS_IRRC_DPIR 0x302C
252#define SYS_IRRC_CR 0x3030
253#define SYS_IRRC_RP 0x3034
254#define SYS_IRRC_SR 0x3038
255
256#define SYS_I2CCR 0x3040
257#define SYS_I2CMCR 0x3044
258#define SYS_I2CMSTR 0x3048
259#define SYS_I2CMSR 0x304C
260#define SYS_I2CMFR 0x3050
261
262
263
264
265#define IR_RX_BUF 0xFC00
266#define IR_RX_IE 0xFD00
267#define IR_RX_IF 0xFD01
268#define IR_RX_CTRL 0xFD02
269#define IR_RX_CFG 0xFD03
270#define IR_MAX_DURATION0 0xFD04
271#define IR_MAX_DURATION1 0xFD05
272#define IR_IDLE_LEN0 0xFD06
273#define IR_IDLE_LEN1 0xFD07
274#define IR_GLITCH_LEN 0xFD08
275#define IR_RX_BUF_CTRL 0xFD09
276#define IR_RX_BUF_DATA 0xFD0A
277#define IR_RX_BC 0xFD0B
278#define IR_RX_CLK 0xFD0C
279#define IR_RX_C_COUNT_L 0xFD0D
280#define IR_RX_C_COUNT_H 0xFD0E
281#define IR_SUSPEND_CTRL 0xFD10
282#define IR_ERR_TOL_CTRL 0xFD11
283#define IR_UNIT_LEN 0xFD12
284#define IR_ERR_TOL_LEN 0xFD13
285#define IR_MAX_H_TOL_LEN 0xFD14
286#define IR_MAX_L_TOL_LEN 0xFD15
287#define IR_MASK_CTRL 0xFD16
288#define IR_MASK_DATA 0xFD17
289#define IR_RES_MASK_ADDR 0xFD18
290#define IR_RES_MASK_T_LEN 0xFD19
291
292#endif
293