blob: c1e2b7d1d41211a3bd5450de11cdf46f8b0f693a [file] [log] [blame]
Antti Palosaari80619de2008-09-15 17:18:09 -03001/*
2 * DVB USB Linux driver for Afatech AF9015 DVB-T USB2.0 receiver
3 *
4 * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
5 *
6 * Thanks to Afatech who kindly provided information.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 */
23
24#ifndef _DVB_USB_AF9015_H_
25#define _DVB_USB_AF9015_H_
26
27#define DVB_USB_LOG_PREFIX "af9015"
28#include "dvb-usb.h"
29
Antti Palosaari80619de2008-09-15 17:18:09 -030030#define deb_info(args...) dprintk(dvb_usb_af9015_debug, 0x01, args)
31#define deb_rc(args...) dprintk(dvb_usb_af9015_debug, 0x02, args)
32#define deb_xfer(args...) dprintk(dvb_usb_af9015_debug, 0x04, args)
33#define deb_reg(args...) dprintk(dvb_usb_af9015_debug, 0x08, args)
34#define deb_i2c(args...) dprintk(dvb_usb_af9015_debug, 0x10, args)
35#define deb_fw(args...) dprintk(dvb_usb_af9015_debug, 0x20, args)
36
37#define AF9015_I2C_EEPROM 0xa0
38#define AF9015_I2C_DEMOD 0x38
39#define AF9015_USB_TIMEOUT 2000
40
41/* EEPROM locations */
42#define AF9015_EEPROM_IR_MODE 0x18
43#define AF9015_EEPROM_IR_REMOTE_TYPE 0x34
44#define AF9015_EEPROM_TS_MODE 0x31
45#define AF9015_EEPROM_DEMOD2_I2C 0x32
46
47#define AF9015_EEPROM_SAW_BW1 0x35
48#define AF9015_EEPROM_XTAL_TYPE1 0x36
49#define AF9015_EEPROM_SPEC_INV1 0x37
50#define AF9015_EEPROM_IF1L 0x38
51#define AF9015_EEPROM_IF1H 0x39
52#define AF9015_EEPROM_MT2060_IF1L 0x3a
53#define AF9015_EEPROM_MT2060_IF1H 0x3b
54#define AF9015_EEPROM_TUNER_ID1 0x3c
55
56#define AF9015_EEPROM_SAW_BW2 0x45
57#define AF9015_EEPROM_XTAL_TYPE2 0x46
58#define AF9015_EEPROM_SPEC_INV2 0x47
59#define AF9015_EEPROM_IF2L 0x48
60#define AF9015_EEPROM_IF2H 0x49
61#define AF9015_EEPROM_MT2060_IF2L 0x4a
62#define AF9015_EEPROM_MT2060_IF2H 0x4b
63#define AF9015_EEPROM_TUNER_ID2 0x4c
64
65#define AF9015_EEPROM_OFFSET (AF9015_EEPROM_SAW_BW2 - AF9015_EEPROM_SAW_BW1)
66
Antti Palosaari80619de2008-09-15 17:18:09 -030067struct req_t {
68 u8 cmd; /* [0] */
69 /* seq */ /* [1] */
70 u8 i2c_addr; /* [2] */
71 u16 addr; /* [3|4] */
72 u8 mbox; /* [5] */
73 u8 addr_len; /* [6] */
74 u8 data_len; /* [7] */
75 u8 *data;
76};
77
78enum af9015_cmd {
79 GET_CONFIG = 0x10,
80 DOWNLOAD_FIRMWARE = 0x11,
81 BOOT = 0x13,
82 READ_MEMORY = 0x20,
83 WRITE_MEMORY = 0x21,
84 READ_WRITE_I2C = 0x22,
85 COPY_FIRMWARE = 0x23,
86 RECONNECT_USB = 0x5a,
87 WRITE_VIRTUAL_MEMORY = 0x26,
88 GET_IR_CODE = 0x27,
89 READ_I2C,
90 WRITE_I2C,
91};
92
93enum af9015_ir_mode {
94 AF9015_IR_MODE_DISABLED = 0,
95 AF9015_IR_MODE_HID,
96 AF9015_IR_MODE_RLC,
97 AF9015_IR_MODE_RC6,
98};
99
100struct af9015_state {
101 struct i2c_adapter i2c_adap; /* I2C adapter for 2nd FE */
102};
103
104struct af9015_config {
105 u8 dual_mode:1;
106 u16 mt2060_if1[2];
107 u16 firmware_size;
108 u16 firmware_checksum;
109 u8 *ir_table;
110 u16 ir_table_size;
111};
112
113enum af9015_remote {
114 AF9015_REMOTE_NONE = 0,
Marc Schneider26144842009-03-26 21:07:18 -0300115/* 1 */ AF9015_REMOTE_A_LINK_DTU_M,
Antti Palosaari80619de2008-09-15 17:18:09 -0300116 AF9015_REMOTE_MSI_DIGIVOX_MINI_II_V3,
117 AF9015_REMOTE_MYGICTV_U718,
Alain Kalker05371562008-11-17 17:20:38 -0300118 AF9015_REMOTE_DIGITTRADE_DVB_T,
Marc Schneider26144842009-03-26 21:07:18 -0300119/* 5 */ AF9015_REMOTE_AVERMEDIA_KS,
Antti Palosaari80619de2008-09-15 17:18:09 -0300120};
121
Antti Palosaari641342d2009-09-21 18:56:12 -0300122/* LeadTek - Y04G0051 */
Antti Palosaari80619de2008-09-15 17:18:09 -0300123/* Leadtek WinFast DTV Dongle Gold */
124static struct dvb_usb_rc_key af9015_rc_keys_leadtek[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300125 { 0x001e, KEY_1 },
126 { 0x001f, KEY_2 },
127 { 0x0020, KEY_3 },
128 { 0x0021, KEY_4 },
129 { 0x0022, KEY_5 },
130 { 0x0023, KEY_6 },
131 { 0x0024, KEY_7 },
132 { 0x0025, KEY_8 },
133 { 0x0026, KEY_9 },
134 { 0x0027, KEY_0 },
Antti Palosaari641342d2009-09-21 18:56:12 -0300135 { 0x0028, KEY_OK },
136 { 0x004f, KEY_RIGHT },
137 { 0x0050, KEY_LEFT },
138 { 0x0051, KEY_DOWN },
139 { 0x0052, KEY_UP },
140 { 0x011a, KEY_POWER2 },
141 { 0x04b4, KEY_TV },
142 { 0x04b3, KEY_RED },
143 { 0x04b2, KEY_GREEN },
144 { 0x04b1, KEY_YELLOW },
145 { 0x04b0, KEY_BLUE },
146 { 0x003d, KEY_TEXT },
147 { 0x0113, KEY_SLEEP },
148 { 0x0010, KEY_MUTE },
149 { 0x0105, KEY_ESC },
150 { 0x0009, KEY_SCREEN },
151 { 0x010f, KEY_MENU },
152 { 0x003f, KEY_CHANNEL },
153 { 0x0013, KEY_REWIND },
154 { 0x0012, KEY_PLAY },
155 { 0x0011, KEY_FASTFORWARD },
156 { 0x0005, KEY_PREVIOUS },
157 { 0x0029, KEY_STOP },
158 { 0x002b, KEY_NEXT },
159 { 0x0041, KEY_EPG },
160 { 0x0019, KEY_VIDEO },
161 { 0x0016, KEY_AUDIO },
162 { 0x0037, KEY_DOT },
163 { 0x002a, KEY_AGAIN },
164 { 0x002c, KEY_CAMERA },
165 { 0x003c, KEY_NEW },
166 { 0x0115, KEY_RECORD },
167 { 0x010b, KEY_TIME },
168 { 0x0043, KEY_VOLUMEUP },
169 { 0x0042, KEY_VOLUMEDOWN },
170 { 0x004b, KEY_CHANNELUP },
171 { 0x004e, KEY_CHANNELDOWN },
Antti Palosaari80619de2008-09-15 17:18:09 -0300172};
173
174static u8 af9015_ir_table_leadtek[] = {
Antti Palosaari641342d2009-09-21 18:56:12 -0300175 0x03, 0xfc, 0x00, 0xff, 0x1a, 0x01, 0x00, /* KEY_POWER2 */
176 0x03, 0xfc, 0x56, 0xa9, 0xb4, 0x04, 0x00, /* KEY_TV */
177 0x03, 0xfc, 0x4b, 0xb4, 0xb3, 0x04, 0x00, /* KEY_RED */
178 0x03, 0xfc, 0x4c, 0xb3, 0xb2, 0x04, 0x00, /* KEY_GREEN */
179 0x03, 0xfc, 0x4d, 0xb2, 0xb1, 0x04, 0x00, /* KEY_YELLOW */
180 0x03, 0xfc, 0x4e, 0xb1, 0xb0, 0x04, 0x00, /* KEY_BLUE */
181 0x03, 0xfc, 0x1f, 0xe0, 0x3d, 0x00, 0x00, /* KEY_TEXT */
182 0x03, 0xfc, 0x40, 0xbf, 0x13, 0x01, 0x00, /* KEY_SLEEP */
183 0x03, 0xfc, 0x14, 0xeb, 0x10, 0x00, 0x00, /* KEY_MUTE */
184 0x03, 0xfc, 0x49, 0xb6, 0x05, 0x01, 0x00, /* KEY_ESC */
185 0x03, 0xfc, 0x50, 0xaf, 0x29, 0x00, 0x00, /* KEY_STOP (1)*/
186 0x03, 0xfc, 0x0c, 0xf3, 0x52, 0x00, 0x00, /* KEY_UP */
187 0x03, 0xfc, 0x03, 0xfc, 0x09, 0x00, 0x00, /* KEY_SCREEN */
188 0x03, 0xfc, 0x08, 0xf7, 0x50, 0x00, 0x00, /* KEY_LEFT */
189 0x03, 0xfc, 0x13, 0xec, 0x28, 0x00, 0x00, /* KEY_OK (1) */
190 0x03, 0xfc, 0x04, 0xfb, 0x4f, 0x00, 0x00, /* KEY_RIGHT */
191 0x03, 0xfc, 0x4f, 0xb0, 0x0f, 0x01, 0x00, /* KEY_MENU */
192 0x03, 0xfc, 0x10, 0xef, 0x51, 0x00, 0x00, /* KEY_DOWN */
193 0x03, 0xfc, 0x51, 0xae, 0x3f, 0x00, 0x00, /* KEY_CHANNEL */
194 0x03, 0xfc, 0x42, 0xbd, 0x13, 0x00, 0x00, /* KEY_REWIND */
195 0x03, 0xfc, 0x43, 0xbc, 0x12, 0x00, 0x00, /* KEY_PLAY */
196 0x03, 0xfc, 0x44, 0xbb, 0x11, 0x00, 0x00, /* KEY_FASTFORWARD */
197 0x03, 0xfc, 0x52, 0xad, 0x19, 0x00, 0x00, /* KEY_VIDEO (1) */
198 0x03, 0xfc, 0x54, 0xab, 0x05, 0x00, 0x00, /* KEY_PREVIOUS */
199 0x03, 0xfc, 0x46, 0xb9, 0x29, 0x00, 0x00, /* KEY_STOP (2) */
200 0x03, 0xfc, 0x55, 0xaa, 0x2b, 0x00, 0x00, /* KEY_NEXT */
201 0x03, 0xfc, 0x53, 0xac, 0x41, 0x00, 0x00, /* KEY_EPG */
202 0x03, 0xfc, 0x05, 0xfa, 0x1e, 0x00, 0x00, /* KEY_1 */
203 0x03, 0xfc, 0x06, 0xf9, 0x1f, 0x00, 0x00, /* KEY_2 */
204 0x03, 0xfc, 0x07, 0xf8, 0x20, 0x00, 0x00, /* KEY_3 */
205 0x03, 0xfc, 0x1e, 0xe1, 0x19, 0x00, 0x00, /* KEY_VIDEO (2) */
206 0x03, 0xfc, 0x09, 0xf6, 0x21, 0x00, 0x00, /* KEY_4 */
207 0x03, 0xfc, 0x0a, 0xf5, 0x22, 0x00, 0x00, /* KEY_5 */
208 0x03, 0xfc, 0x0b, 0xf4, 0x23, 0x00, 0x00, /* KEY_6 */
209 0x03, 0xfc, 0x1b, 0xe4, 0x16, 0x00, 0x00, /* KEY_AUDIO */
210 0x03, 0xfc, 0x0d, 0xf2, 0x24, 0x00, 0x00, /* KEY_7 */
211 0x03, 0xfc, 0x0e, 0xf1, 0x25, 0x00, 0x00, /* KEY_8 */
212 0x03, 0xfc, 0x0f, 0xf0, 0x26, 0x00, 0x00, /* KEY_9 */
213 0x03, 0xfc, 0x16, 0xe9, 0x28, 0x00, 0x00, /* KEY_OK (2) */
214 0x03, 0xfc, 0x41, 0xbe, 0x37, 0x00, 0x00, /* KEY_DOT */
215 0x03, 0xfc, 0x12, 0xed, 0x27, 0x00, 0x00, /* KEY_0 */
216 0x03, 0xfc, 0x11, 0xee, 0x2a, 0x00, 0x00, /* KEY_AGAIN */
217 0x03, 0xfc, 0x48, 0xb7, 0x2c, 0x00, 0x00, /* KEY_CAMERA */
218 0x03, 0xfc, 0x4a, 0xb5, 0x3c, 0x00, 0x00, /* KEY_NEW */
219 0x03, 0xfc, 0x47, 0xb8, 0x15, 0x01, 0x00, /* KEY_RECORD */
220 0x03, 0xfc, 0x45, 0xba, 0x0b, 0x01, 0x00, /* KEY_TIME */
221 0x03, 0xfc, 0x5e, 0xa1, 0x43, 0x00, 0x00, /* KEY_VOLUMEUP */
222 0x03, 0xfc, 0x5a, 0xa5, 0x42, 0x00, 0x00, /* KEY_VOLUMEDOWN */
223 0x03, 0xfc, 0x5b, 0xa4, 0x4b, 0x00, 0x00, /* KEY_CHANNELUP */
224 0x03, 0xfc, 0x5f, 0xa0, 0x4e, 0x00, 0x00, /* KEY_CHANNELDOWN */
Antti Palosaari80619de2008-09-15 17:18:09 -0300225};
226
227/* TwinHan AzureWave AD-TU700(704J) */
228static struct dvb_usb_rc_key af9015_rc_keys_twinhan[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300229 { 0x053f, KEY_POWER },
230 { 0x0019, KEY_FAVORITES }, /* Favorite List */
231 { 0x0004, KEY_TEXT }, /* Teletext */
232 { 0x000e, KEY_POWER },
233 { 0x000e, KEY_INFO }, /* Preview */
234 { 0x0008, KEY_EPG }, /* Info/EPG */
235 { 0x000f, KEY_LIST }, /* Record List */
236 { 0x001e, KEY_1 },
237 { 0x001f, KEY_2 },
238 { 0x0020, KEY_3 },
239 { 0x0021, KEY_4 },
240 { 0x0022, KEY_5 },
241 { 0x0023, KEY_6 },
242 { 0x0024, KEY_7 },
243 { 0x0025, KEY_8 },
244 { 0x0026, KEY_9 },
245 { 0x0027, KEY_0 },
246 { 0x0029, KEY_CANCEL }, /* Cancel */
247 { 0x004c, KEY_CLEAR }, /* Clear */
248 { 0x002a, KEY_BACK }, /* Back */
249 { 0x002b, KEY_TAB }, /* Tab */
250 { 0x0052, KEY_UP }, /* up arrow */
251 { 0x0051, KEY_DOWN }, /* down arrow */
252 { 0x004f, KEY_RIGHT }, /* right arrow */
253 { 0x0050, KEY_LEFT }, /* left arrow */
254 { 0x0028, KEY_ENTER }, /* Enter / ok */
255 { 0x0252, KEY_VOLUMEUP },
256 { 0x0251, KEY_VOLUMEDOWN },
257 { 0x004e, KEY_CHANNELDOWN },
258 { 0x004b, KEY_CHANNELUP },
259 { 0x004a, KEY_RECORD },
260 { 0x0111, KEY_PLAY },
261 { 0x0017, KEY_PAUSE },
262 { 0x000c, KEY_REWIND }, /* FR << */
263 { 0x0011, KEY_FASTFORWARD }, /* FF >> */
264 { 0x0115, KEY_PREVIOUS }, /* Replay */
265 { 0x010e, KEY_NEXT }, /* Skip */
266 { 0x0013, KEY_CAMERA }, /* Capture */
267 { 0x010f, KEY_LANGUAGE }, /* SAP */
268 { 0x0113, KEY_TV2 }, /* PIP */
269 { 0x001d, KEY_ZOOM }, /* Full Screen */
270 { 0x0117, KEY_SUBTITLE }, /* Subtitle / CC */
271 { 0x0010, KEY_MUTE },
272 { 0x0119, KEY_AUDIO }, /* L/R */ /* TODO better event */
273 { 0x0116, KEY_SLEEP }, /* Hibernate */
274 { 0x0116, KEY_SWITCHVIDEOMODE },
Antti Palosaari80619de2008-09-15 17:18:09 -0300275 /* A/V */ /* TODO does not work */
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300276 { 0x0006, KEY_AGAIN }, /* Recall */
277 { 0x0116, KEY_KPPLUS }, /* Zoom+ */ /* TODO does not work */
278 { 0x0116, KEY_KPMINUS }, /* Zoom- */ /* TODO does not work */
279 { 0x0215, KEY_RED },
280 { 0x020a, KEY_GREEN },
281 { 0x021c, KEY_YELLOW },
282 { 0x0205, KEY_BLUE },
Antti Palosaari80619de2008-09-15 17:18:09 -0300283};
284
285static u8 af9015_ir_table_twinhan[] = {
286 0x00, 0xff, 0x16, 0xe9, 0x3f, 0x05, 0x00,
287 0x00, 0xff, 0x07, 0xf8, 0x16, 0x01, 0x00,
288 0x00, 0xff, 0x14, 0xeb, 0x11, 0x01, 0x00,
289 0x00, 0xff, 0x1a, 0xe5, 0x4d, 0x00, 0x00,
290 0x00, 0xff, 0x4c, 0xb3, 0x17, 0x00, 0x00,
291 0x00, 0xff, 0x12, 0xed, 0x11, 0x00, 0x00,
292 0x00, 0xff, 0x40, 0xbf, 0x0c, 0x00, 0x00,
293 0x00, 0xff, 0x11, 0xee, 0x4a, 0x00, 0x00,
294 0x00, 0xff, 0x54, 0xab, 0x13, 0x00, 0x00,
295 0x00, 0xff, 0x41, 0xbe, 0x15, 0x01, 0x00,
296 0x00, 0xff, 0x42, 0xbd, 0x0e, 0x01, 0x00,
297 0x00, 0xff, 0x43, 0xbc, 0x17, 0x01, 0x00,
298 0x00, 0xff, 0x50, 0xaf, 0x0f, 0x01, 0x00,
299 0x00, 0xff, 0x4d, 0xb2, 0x1d, 0x00, 0x00,
300 0x00, 0xff, 0x47, 0xb8, 0x13, 0x01, 0x00,
301 0x00, 0xff, 0x05, 0xfa, 0x4b, 0x00, 0x00,
302 0x00, 0xff, 0x02, 0xfd, 0x4e, 0x00, 0x00,
303 0x00, 0xff, 0x0e, 0xf1, 0x06, 0x00, 0x00,
304 0x00, 0xff, 0x1e, 0xe1, 0x52, 0x02, 0x00,
305 0x00, 0xff, 0x0a, 0xf5, 0x51, 0x02, 0x00,
306 0x00, 0xff, 0x10, 0xef, 0x10, 0x00, 0x00,
307 0x00, 0xff, 0x49, 0xb6, 0x19, 0x01, 0x00,
308 0x00, 0xff, 0x15, 0xea, 0x27, 0x00, 0x00,
309 0x00, 0xff, 0x03, 0xfc, 0x1e, 0x00, 0x00,
310 0x00, 0xff, 0x01, 0xfe, 0x1f, 0x00, 0x00,
311 0x00, 0xff, 0x06, 0xf9, 0x20, 0x00, 0x00,
312 0x00, 0xff, 0x09, 0xf6, 0x21, 0x00, 0x00,
313 0x00, 0xff, 0x1d, 0xe2, 0x22, 0x00, 0x00,
314 0x00, 0xff, 0x1f, 0xe0, 0x23, 0x00, 0x00,
315 0x00, 0xff, 0x0d, 0xf2, 0x24, 0x00, 0x00,
316 0x00, 0xff, 0x19, 0xe6, 0x25, 0x00, 0x00,
317 0x00, 0xff, 0x1b, 0xe4, 0x26, 0x00, 0x00,
318 0x00, 0xff, 0x00, 0xff, 0x2b, 0x00, 0x00,
319 0x00, 0xff, 0x4a, 0xb5, 0x4c, 0x00, 0x00,
320 0x00, 0xff, 0x4b, 0xb4, 0x52, 0x00, 0x00,
321 0x00, 0xff, 0x51, 0xae, 0x51, 0x00, 0x00,
322 0x00, 0xff, 0x52, 0xad, 0x4f, 0x00, 0x00,
323 0x00, 0xff, 0x4e, 0xb1, 0x50, 0x00, 0x00,
324 0x00, 0xff, 0x0c, 0xf3, 0x29, 0x00, 0x00,
325 0x00, 0xff, 0x4f, 0xb0, 0x28, 0x00, 0x00,
326 0x00, 0xff, 0x13, 0xec, 0x2a, 0x00, 0x00,
327 0x00, 0xff, 0x17, 0xe8, 0x19, 0x00, 0x00,
328 0x00, 0xff, 0x04, 0xfb, 0x0f, 0x00, 0x00,
329 0x00, 0xff, 0x48, 0xb7, 0x0e, 0x00, 0x00,
330 0x00, 0xff, 0x0f, 0xf0, 0x04, 0x00, 0x00,
331 0x00, 0xff, 0x1c, 0xe3, 0x08, 0x00, 0x00,
332 0x00, 0xff, 0x18, 0xe7, 0x15, 0x02, 0x00,
333 0x00, 0xff, 0x53, 0xac, 0x0a, 0x02, 0x00,
334 0x00, 0xff, 0x5e, 0xa1, 0x1c, 0x02, 0x00,
335 0x00, 0xff, 0x5f, 0xa0, 0x05, 0x02, 0x00,
336};
337
338/* A-Link DTU(m) */
339static struct dvb_usb_rc_key af9015_rc_keys_a_link[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300340 { 0x001e, KEY_1 },
341 { 0x001f, KEY_2 },
342 { 0x0020, KEY_3 },
343 { 0x0021, KEY_4 },
344 { 0x0022, KEY_5 },
345 { 0x0023, KEY_6 },
346 { 0x0024, KEY_7 },
347 { 0x0025, KEY_8 },
348 { 0x0026, KEY_9 },
349 { 0x0027, KEY_0 },
350 { 0x002e, KEY_CHANNELUP },
351 { 0x002d, KEY_CHANNELDOWN },
352 { 0x0428, KEY_ZOOM },
353 { 0x0041, KEY_MUTE },
354 { 0x0042, KEY_VOLUMEDOWN },
355 { 0x0043, KEY_VOLUMEUP },
356 { 0x0044, KEY_GOTO }, /* jump */
357 { 0x0545, KEY_POWER },
Antti Palosaari80619de2008-09-15 17:18:09 -0300358};
359
360static u8 af9015_ir_table_a_link[] = {
361 0x08, 0xf7, 0x12, 0xed, 0x45, 0x05, 0x00, /* power */
362 0x08, 0xf7, 0x1a, 0xe5, 0x41, 0x00, 0x00, /* mute */
363 0x08, 0xf7, 0x01, 0xfe, 0x1e, 0x00, 0x00, /* 1 */
364 0x08, 0xf7, 0x1c, 0xe3, 0x21, 0x00, 0x00, /* 4 */
365 0x08, 0xf7, 0x03, 0xfc, 0x24, 0x00, 0x00, /* 7 */
366 0x08, 0xf7, 0x05, 0xfa, 0x28, 0x04, 0x00, /* zoom */
367 0x08, 0xf7, 0x00, 0xff, 0x43, 0x00, 0x00, /* volume up */
368 0x08, 0xf7, 0x16, 0xe9, 0x42, 0x00, 0x00, /* volume down */
369 0x08, 0xf7, 0x0f, 0xf0, 0x1f, 0x00, 0x00, /* 2 */
370 0x08, 0xf7, 0x0d, 0xf2, 0x22, 0x00, 0x00, /* 5 */
371 0x08, 0xf7, 0x1b, 0xe4, 0x25, 0x00, 0x00, /* 8 */
372 0x08, 0xf7, 0x06, 0xf9, 0x27, 0x00, 0x00, /* 0 */
373 0x08, 0xf7, 0x14, 0xeb, 0x2e, 0x00, 0x00, /* channel up */
374 0x08, 0xf7, 0x1d, 0xe2, 0x2d, 0x00, 0x00, /* channel down */
375 0x08, 0xf7, 0x02, 0xfd, 0x20, 0x00, 0x00, /* 3 */
376 0x08, 0xf7, 0x18, 0xe7, 0x23, 0x00, 0x00, /* 6 */
377 0x08, 0xf7, 0x04, 0xfb, 0x26, 0x00, 0x00, /* 9 */
378 0x08, 0xf7, 0x07, 0xf8, 0x44, 0x00, 0x00, /* jump */
379};
380
381/* MSI DIGIVOX mini II V3.0 */
382static struct dvb_usb_rc_key af9015_rc_keys_msi[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300383 { 0x001e, KEY_1 },
384 { 0x001f, KEY_2 },
385 { 0x0020, KEY_3 },
386 { 0x0021, KEY_4 },
387 { 0x0022, KEY_5 },
388 { 0x0023, KEY_6 },
389 { 0x0024, KEY_7 },
390 { 0x0025, KEY_8 },
391 { 0x0026, KEY_9 },
392 { 0x0027, KEY_0 },
393 { 0x030f, KEY_CHANNELUP },
394 { 0x030e, KEY_CHANNELDOWN },
395 { 0x0042, KEY_VOLUMEDOWN },
396 { 0x0043, KEY_VOLUMEUP },
397 { 0x0545, KEY_POWER },
398 { 0x0052, KEY_UP }, /* up */
399 { 0x0051, KEY_DOWN }, /* down */
400 { 0x0028, KEY_ENTER },
Antti Palosaari80619de2008-09-15 17:18:09 -0300401};
402
403static u8 af9015_ir_table_msi[] = {
404 0x03, 0xfc, 0x17, 0xe8, 0x45, 0x05, 0x00, /* power */
405 0x03, 0xfc, 0x0d, 0xf2, 0x51, 0x00, 0x00, /* down */
406 0x03, 0xfc, 0x03, 0xfc, 0x52, 0x00, 0x00, /* up */
407 0x03, 0xfc, 0x1a, 0xe5, 0x1e, 0x00, 0x00, /* 1 */
408 0x03, 0xfc, 0x02, 0xfd, 0x1f, 0x00, 0x00, /* 2 */
409 0x03, 0xfc, 0x04, 0xfb, 0x20, 0x00, 0x00, /* 3 */
410 0x03, 0xfc, 0x1c, 0xe3, 0x21, 0x00, 0x00, /* 4 */
411 0x03, 0xfc, 0x08, 0xf7, 0x22, 0x00, 0x00, /* 5 */
412 0x03, 0xfc, 0x1d, 0xe2, 0x23, 0x00, 0x00, /* 6 */
413 0x03, 0xfc, 0x11, 0xee, 0x24, 0x00, 0x00, /* 7 */
414 0x03, 0xfc, 0x0b, 0xf4, 0x25, 0x00, 0x00, /* 8 */
415 0x03, 0xfc, 0x10, 0xef, 0x26, 0x00, 0x00, /* 9 */
416 0x03, 0xfc, 0x09, 0xf6, 0x27, 0x00, 0x00, /* 0 */
417 0x03, 0xfc, 0x14, 0xeb, 0x43, 0x00, 0x00, /* volume up */
418 0x03, 0xfc, 0x1f, 0xe0, 0x42, 0x00, 0x00, /* volume down */
419 0x03, 0xfc, 0x15, 0xea, 0x0f, 0x03, 0x00, /* channel up */
420 0x03, 0xfc, 0x05, 0xfa, 0x0e, 0x03, 0x00, /* channel down */
421 0x03, 0xfc, 0x16, 0xe9, 0x28, 0x00, 0x00, /* enter */
422};
423
424/* MYGICTV U718 */
425static struct dvb_usb_rc_key af9015_rc_keys_mygictv[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300426 { 0x003d, KEY_SWITCHVIDEOMODE },
Antti Palosaari80619de2008-09-15 17:18:09 -0300427 /* TV / AV */
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300428 { 0x0545, KEY_POWER },
429 { 0x001e, KEY_1 },
430 { 0x001f, KEY_2 },
431 { 0x0020, KEY_3 },
432 { 0x0021, KEY_4 },
433 { 0x0022, KEY_5 },
434 { 0x0023, KEY_6 },
435 { 0x0024, KEY_7 },
436 { 0x0025, KEY_8 },
437 { 0x0026, KEY_9 },
438 { 0x0027, KEY_0 },
439 { 0x0041, KEY_MUTE },
440 { 0x002a, KEY_ESC }, /* Esc */
441 { 0x002e, KEY_CHANNELUP },
442 { 0x002d, KEY_CHANNELDOWN },
443 { 0x0042, KEY_VOLUMEDOWN },
444 { 0x0043, KEY_VOLUMEUP },
445 { 0x0052, KEY_UP }, /* up arrow */
446 { 0x0051, KEY_DOWN }, /* down arrow */
447 { 0x004f, KEY_RIGHT }, /* right arrow */
448 { 0x0050, KEY_LEFT }, /* left arrow */
449 { 0x0028, KEY_ENTER }, /* ok */
450 { 0x0115, KEY_RECORD },
451 { 0x0313, KEY_PLAY },
452 { 0x0113, KEY_PAUSE },
453 { 0x0116, KEY_STOP },
454 { 0x0307, KEY_REWIND }, /* FR << */
455 { 0x0309, KEY_FASTFORWARD }, /* FF >> */
456 { 0x003b, KEY_TIME }, /* TimeShift */
457 { 0x003e, KEY_CAMERA }, /* Snapshot */
458 { 0x0316, KEY_CYCLEWINDOWS }, /* yellow, min / max */
459 { 0x0000, KEY_ZOOM }, /* 'select' (?) */
460 { 0x0316, KEY_SHUFFLE }, /* Shuffle */
461 { 0x0345, KEY_POWER },
Antti Palosaari80619de2008-09-15 17:18:09 -0300462};
463
464static u8 af9015_ir_table_mygictv[] = {
465 0x02, 0xbd, 0x0c, 0xf3, 0x3d, 0x00, 0x00, /* TV / AV */
466 0x02, 0xbd, 0x14, 0xeb, 0x45, 0x05, 0x00, /* power */
467 0x02, 0xbd, 0x00, 0xff, 0x1e, 0x00, 0x00, /* 1 */
468 0x02, 0xbd, 0x01, 0xfe, 0x1f, 0x00, 0x00, /* 2 */
469 0x02, 0xbd, 0x02, 0xfd, 0x20, 0x00, 0x00, /* 3 */
470 0x02, 0xbd, 0x03, 0xfc, 0x21, 0x00, 0x00, /* 4 */
471 0x02, 0xbd, 0x04, 0xfb, 0x22, 0x00, 0x00, /* 5 */
472 0x02, 0xbd, 0x05, 0xfa, 0x23, 0x00, 0x00, /* 6 */
473 0x02, 0xbd, 0x06, 0xf9, 0x24, 0x00, 0x00, /* 7 */
474 0x02, 0xbd, 0x07, 0xf8, 0x25, 0x00, 0x00, /* 8 */
475 0x02, 0xbd, 0x08, 0xf7, 0x26, 0x00, 0x00, /* 9 */
476 0x02, 0xbd, 0x09, 0xf6, 0x27, 0x00, 0x00, /* 0 */
477 0x02, 0xbd, 0x0a, 0xf5, 0x41, 0x00, 0x00, /* mute */
478 0x02, 0xbd, 0x1c, 0xe3, 0x2a, 0x00, 0x00, /* esc */
479 0x02, 0xbd, 0x1f, 0xe0, 0x43, 0x00, 0x00, /* volume up */
480 0x02, 0xbd, 0x12, 0xed, 0x52, 0x00, 0x00, /* up arrow */
481 0x02, 0xbd, 0x11, 0xee, 0x50, 0x00, 0x00, /* left arrow */
482 0x02, 0xbd, 0x15, 0xea, 0x28, 0x00, 0x00, /* ok */
483 0x02, 0xbd, 0x10, 0xef, 0x4f, 0x00, 0x00, /* right arrow */
484 0x02, 0xbd, 0x13, 0xec, 0x51, 0x00, 0x00, /* down arrow */
485 0x02, 0xbd, 0x0e, 0xf1, 0x42, 0x00, 0x00, /* volume down */
486 0x02, 0xbd, 0x19, 0xe6, 0x15, 0x01, 0x00, /* record */
487 0x02, 0xbd, 0x1e, 0xe1, 0x13, 0x03, 0x00, /* play */
488 0x02, 0xbd, 0x16, 0xe9, 0x16, 0x01, 0x00, /* stop */
489 0x02, 0xbd, 0x0b, 0xf4, 0x28, 0x04, 0x00, /* yellow, min / max */
490 0x02, 0xbd, 0x0f, 0xf0, 0x3b, 0x00, 0x00, /* time shift */
491 0x02, 0xbd, 0x18, 0xe7, 0x2e, 0x00, 0x00, /* channel up */
492 0x02, 0xbd, 0x1a, 0xe5, 0x2d, 0x00, 0x00, /* channel down */
493 0x02, 0xbd, 0x17, 0xe8, 0x3e, 0x00, 0x00, /* snapshot */
494 0x02, 0xbd, 0x40, 0xbf, 0x13, 0x01, 0x00, /* pause */
495 0x02, 0xbd, 0x41, 0xbe, 0x09, 0x03, 0x00, /* FF >> */
496 0x02, 0xbd, 0x42, 0xbd, 0x07, 0x03, 0x00, /* FR << */
497 0x02, 0xbd, 0x43, 0xbc, 0x00, 0x00, 0x00, /* 'select' (?) */
498 0x02, 0xbd, 0x44, 0xbb, 0x16, 0x03, 0x00, /* shuffle */
499 0x02, 0xbd, 0x45, 0xba, 0x45, 0x03, 0x00, /* power */
500};
501
502/* KWorld PlusTV Dual DVB-T Stick (DVB-T 399U) */
503static u8 af9015_ir_table_kworld[] = {
504 0x86, 0x6b, 0x0c, 0xf3, 0x2e, 0x07, 0x00,
505 0x86, 0x6b, 0x16, 0xe9, 0x2d, 0x07, 0x00,
506 0x86, 0x6b, 0x1d, 0xe2, 0x37, 0x07, 0x00,
507 0x86, 0x6b, 0x00, 0xff, 0x1e, 0x07, 0x00,
508 0x86, 0x6b, 0x01, 0xfe, 0x1f, 0x07, 0x00,
509 0x86, 0x6b, 0x02, 0xfd, 0x20, 0x07, 0x00,
510 0x86, 0x6b, 0x03, 0xfc, 0x21, 0x07, 0x00,
511 0x86, 0x6b, 0x04, 0xfb, 0x22, 0x07, 0x00,
512 0x86, 0x6b, 0x05, 0xfa, 0x23, 0x07, 0x00,
513 0x86, 0x6b, 0x06, 0xf9, 0x24, 0x07, 0x00,
514 0x86, 0x6b, 0x07, 0xf8, 0x25, 0x07, 0x00,
515 0x86, 0x6b, 0x08, 0xf7, 0x26, 0x07, 0x00,
516 0x86, 0x6b, 0x09, 0xf6, 0x4d, 0x07, 0x00,
517 0x86, 0x6b, 0x0a, 0xf5, 0x4e, 0x07, 0x00,
518 0x86, 0x6b, 0x14, 0xeb, 0x4f, 0x07, 0x00,
519 0x86, 0x6b, 0x1e, 0xe1, 0x50, 0x07, 0x00,
520 0x86, 0x6b, 0x17, 0xe8, 0x52, 0x07, 0x00,
521 0x86, 0x6b, 0x1f, 0xe0, 0x51, 0x07, 0x00,
522 0x86, 0x6b, 0x0e, 0xf1, 0x0b, 0x07, 0x00,
523 0x86, 0x6b, 0x20, 0xdf, 0x0c, 0x07, 0x00,
524 0x86, 0x6b, 0x42, 0xbd, 0x0d, 0x07, 0x00,
525 0x86, 0x6b, 0x0b, 0xf4, 0x0e, 0x07, 0x00,
526 0x86, 0x6b, 0x43, 0xbc, 0x0f, 0x07, 0x00,
527 0x86, 0x6b, 0x10, 0xef, 0x10, 0x07, 0x00,
528 0x86, 0x6b, 0x21, 0xde, 0x11, 0x07, 0x00,
529 0x86, 0x6b, 0x13, 0xec, 0x12, 0x07, 0x00,
530 0x86, 0x6b, 0x11, 0xee, 0x13, 0x07, 0x00,
531 0x86, 0x6b, 0x12, 0xed, 0x14, 0x07, 0x00,
532 0x86, 0x6b, 0x19, 0xe6, 0x15, 0x07, 0x00,
533 0x86, 0x6b, 0x1a, 0xe5, 0x16, 0x07, 0x00,
534 0x86, 0x6b, 0x1b, 0xe4, 0x17, 0x07, 0x00,
535 0x86, 0x6b, 0x4b, 0xb4, 0x18, 0x07, 0x00,
536 0x86, 0x6b, 0x40, 0xbf, 0x19, 0x07, 0x00,
537 0x86, 0x6b, 0x44, 0xbb, 0x1a, 0x07, 0x00,
538 0x86, 0x6b, 0x41, 0xbe, 0x1b, 0x07, 0x00,
539 0x86, 0x6b, 0x22, 0xdd, 0x1c, 0x07, 0x00,
540 0x86, 0x6b, 0x15, 0xea, 0x1d, 0x07, 0x00,
541 0x86, 0x6b, 0x0f, 0xf0, 0x3f, 0x07, 0x00,
542 0x86, 0x6b, 0x1c, 0xe3, 0x40, 0x07, 0x00,
543 0x86, 0x6b, 0x4a, 0xb5, 0x41, 0x07, 0x00,
544 0x86, 0x6b, 0x48, 0xb7, 0x42, 0x07, 0x00,
545 0x86, 0x6b, 0x49, 0xb6, 0x43, 0x07, 0x00,
546 0x86, 0x6b, 0x18, 0xe7, 0x44, 0x07, 0x00,
547 0x86, 0x6b, 0x23, 0xdc, 0x45, 0x07, 0x00,
548};
549
Jose Alberto Regueroc78de712008-11-04 11:38:01 -0300550/* AverMedia Volar X */
551static struct dvb_usb_rc_key af9015_rc_keys_avermedia[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300552 { 0x053d, KEY_PROG1 }, /* SOURCE */
553 { 0x0512, KEY_POWER }, /* POWER */
554 { 0x051e, KEY_1 }, /* 1 */
555 { 0x051f, KEY_2 }, /* 2 */
556 { 0x0520, KEY_3 }, /* 3 */
557 { 0x0521, KEY_4 }, /* 4 */
558 { 0x0522, KEY_5 }, /* 5 */
559 { 0x0523, KEY_6 }, /* 6 */
560 { 0x0524, KEY_7 }, /* 7 */
561 { 0x0525, KEY_8 }, /* 8 */
562 { 0x0526, KEY_9 }, /* 9 */
563 { 0x053f, KEY_LEFT }, /* L / DISPLAY */
564 { 0x0527, KEY_0 }, /* 0 */
565 { 0x050f, KEY_RIGHT }, /* R / CH RTN */
566 { 0x0518, KEY_PROG2 }, /* SNAP SHOT */
567 { 0x051c, KEY_PROG3 }, /* 16-CH PREV */
568 { 0x052d, KEY_VOLUMEDOWN }, /* VOL DOWN */
569 { 0x053e, KEY_ZOOM }, /* FULL SCREEN */
570 { 0x052e, KEY_VOLUMEUP }, /* VOL UP */
571 { 0x0510, KEY_MUTE }, /* MUTE */
572 { 0x0504, KEY_AUDIO }, /* AUDIO */
573 { 0x0515, KEY_RECORD }, /* RECORD */
574 { 0x0511, KEY_PLAY }, /* PLAY */
575 { 0x0516, KEY_STOP }, /* STOP */
576 { 0x050c, KEY_PLAYPAUSE }, /* TIMESHIFT / PAUSE */
577 { 0x0505, KEY_BACK }, /* << / RED */
578 { 0x0509, KEY_FORWARD }, /* >> / YELLOW */
579 { 0x0517, KEY_TEXT }, /* TELETEXT */
580 { 0x050a, KEY_EPG }, /* EPG */
581 { 0x0513, KEY_MENU }, /* MENU */
Jose Alberto Regueroc78de712008-11-04 11:38:01 -0300582
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300583 { 0x050e, KEY_CHANNELUP }, /* CH UP */
584 { 0x050d, KEY_CHANNELDOWN }, /* CH DOWN */
585 { 0x0519, KEY_FIRST }, /* |<< / GREEN */
586 { 0x0508, KEY_LAST }, /* >>| / BLUE */
Jose Alberto Regueroc78de712008-11-04 11:38:01 -0300587};
588
589static u8 af9015_ir_table_avermedia[] = {
590 0x02, 0xfd, 0x00, 0xff, 0x12, 0x05, 0x00,
591 0x02, 0xfd, 0x01, 0xfe, 0x3d, 0x05, 0x00,
592 0x02, 0xfd, 0x03, 0xfc, 0x17, 0x05, 0x00,
593 0x02, 0xfd, 0x04, 0xfb, 0x0a, 0x05, 0x00,
594 0x02, 0xfd, 0x05, 0xfa, 0x1e, 0x05, 0x00,
595 0x02, 0xfd, 0x06, 0xf9, 0x1f, 0x05, 0x00,
596 0x02, 0xfd, 0x07, 0xf8, 0x20, 0x05, 0x00,
597 0x02, 0xfd, 0x09, 0xf6, 0x21, 0x05, 0x00,
598 0x02, 0xfd, 0x0a, 0xf5, 0x22, 0x05, 0x00,
599 0x02, 0xfd, 0x0b, 0xf4, 0x23, 0x05, 0x00,
600 0x02, 0xfd, 0x0d, 0xf2, 0x24, 0x05, 0x00,
601 0x02, 0xfd, 0x0e, 0xf1, 0x25, 0x05, 0x00,
602 0x02, 0xfd, 0x0f, 0xf0, 0x26, 0x05, 0x00,
603 0x02, 0xfd, 0x11, 0xee, 0x27, 0x05, 0x00,
604 0x02, 0xfd, 0x08, 0xf7, 0x04, 0x05, 0x00,
605 0x02, 0xfd, 0x0c, 0xf3, 0x3e, 0x05, 0x00,
606 0x02, 0xfd, 0x10, 0xef, 0x1c, 0x05, 0x00,
607 0x02, 0xfd, 0x12, 0xed, 0x3f, 0x05, 0x00,
608 0x02, 0xfd, 0x13, 0xec, 0x0f, 0x05, 0x00,
609 0x02, 0xfd, 0x14, 0xeb, 0x10, 0x05, 0x00,
610 0x02, 0xfd, 0x15, 0xea, 0x13, 0x05, 0x00,
611 0x02, 0xfd, 0x17, 0xe8, 0x18, 0x05, 0x00,
612 0x02, 0xfd, 0x18, 0xe7, 0x11, 0x05, 0x00,
613 0x02, 0xfd, 0x19, 0xe6, 0x15, 0x05, 0x00,
614 0x02, 0xfd, 0x1a, 0xe5, 0x0c, 0x05, 0x00,
615 0x02, 0xfd, 0x1b, 0xe4, 0x16, 0x05, 0x00,
616 0x02, 0xfd, 0x1c, 0xe3, 0x09, 0x05, 0x00,
617 0x02, 0xfd, 0x1d, 0xe2, 0x05, 0x05, 0x00,
618 0x02, 0xfd, 0x1e, 0xe1, 0x2d, 0x05, 0x00,
619 0x02, 0xfd, 0x1f, 0xe0, 0x2e, 0x05, 0x00,
620 0x03, 0xfc, 0x00, 0xff, 0x08, 0x05, 0x00,
621 0x03, 0xfc, 0x01, 0xfe, 0x19, 0x05, 0x00,
622 0x03, 0xfc, 0x02, 0xfd, 0x0d, 0x05, 0x00,
623 0x03, 0xfc, 0x03, 0xfc, 0x0e, 0x05, 0x00,
624};
625
Jose Alberto Reguero90b0f692009-01-23 19:23:23 -0300626static u8 af9015_ir_table_avermedia_ks[] = {
627 0x05, 0xfa, 0x01, 0xfe, 0x12, 0x05, 0x00,
628 0x05, 0xfa, 0x02, 0xfd, 0x0e, 0x05, 0x00,
629 0x05, 0xfa, 0x03, 0xfc, 0x0d, 0x05, 0x00,
630 0x05, 0xfa, 0x04, 0xfb, 0x2e, 0x05, 0x00,
631 0x05, 0xfa, 0x05, 0xfa, 0x2d, 0x05, 0x00,
632 0x05, 0xfa, 0x06, 0xf9, 0x10, 0x05, 0x00,
633 0x05, 0xfa, 0x07, 0xf8, 0x0f, 0x05, 0x00,
634 0x05, 0xfa, 0x08, 0xf7, 0x3d, 0x05, 0x00,
635 0x05, 0xfa, 0x09, 0xf6, 0x1e, 0x05, 0x00,
636 0x05, 0xfa, 0x0a, 0xf5, 0x1f, 0x05, 0x00,
637 0x05, 0xfa, 0x0b, 0xf4, 0x20, 0x05, 0x00,
638 0x05, 0xfa, 0x0c, 0xf3, 0x21, 0x05, 0x00,
639 0x05, 0xfa, 0x0d, 0xf2, 0x22, 0x05, 0x00,
640 0x05, 0xfa, 0x0e, 0xf1, 0x23, 0x05, 0x00,
641 0x05, 0xfa, 0x0f, 0xf0, 0x24, 0x05, 0x00,
642 0x05, 0xfa, 0x10, 0xef, 0x25, 0x05, 0x00,
643 0x05, 0xfa, 0x11, 0xee, 0x26, 0x05, 0x00,
644 0x05, 0xfa, 0x12, 0xed, 0x27, 0x05, 0x00,
645 0x05, 0xfa, 0x13, 0xec, 0x04, 0x05, 0x00,
646 0x05, 0xfa, 0x15, 0xea, 0x0a, 0x05, 0x00,
647 0x05, 0xfa, 0x16, 0xe9, 0x11, 0x05, 0x00,
648 0x05, 0xfa, 0x17, 0xe8, 0x15, 0x05, 0x00,
649 0x05, 0xfa, 0x18, 0xe7, 0x16, 0x05, 0x00,
650 0x05, 0xfa, 0x1c, 0xe3, 0x05, 0x05, 0x00,
651 0x05, 0xfa, 0x1d, 0xe2, 0x09, 0x05, 0x00,
652 0x05, 0xfa, 0x4d, 0xb2, 0x3f, 0x05, 0x00,
653 0x05, 0xfa, 0x56, 0xa9, 0x3e, 0x05, 0x00
654};
655
Alain Kalker05371562008-11-17 17:20:38 -0300656/* Digittrade DVB-T USB Stick */
657static struct dvb_usb_rc_key af9015_rc_keys_digittrade[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300658 { 0x010f, KEY_LAST }, /* RETURN */
659 { 0x0517, KEY_TEXT }, /* TELETEXT */
660 { 0x0108, KEY_EPG }, /* EPG */
661 { 0x0513, KEY_POWER }, /* POWER */
662 { 0x0109, KEY_ZOOM }, /* FULLSCREEN */
663 { 0x0040, KEY_AUDIO }, /* DUAL SOUND */
664 { 0x002c, KEY_PRINT }, /* SNAPSHOT */
665 { 0x0516, KEY_SUBTITLE }, /* SUBTITLE */
666 { 0x0052, KEY_CHANNELUP }, /* CH Up */
667 { 0x0051, KEY_CHANNELDOWN },/* Ch Dn */
668 { 0x0057, KEY_VOLUMEUP }, /* Vol Up */
669 { 0x0056, KEY_VOLUMEDOWN }, /* Vol Dn */
670 { 0x0110, KEY_MUTE }, /* MUTE */
671 { 0x0027, KEY_0 },
672 { 0x001e, KEY_1 },
673 { 0x001f, KEY_2 },
674 { 0x0020, KEY_3 },
675 { 0x0021, KEY_4 },
676 { 0x0022, KEY_5 },
677 { 0x0023, KEY_6 },
678 { 0x0024, KEY_7 },
679 { 0x0025, KEY_8 },
680 { 0x0026, KEY_9 },
681 { 0x0117, KEY_PLAYPAUSE }, /* TIMESHIFT */
682 { 0x0115, KEY_RECORD }, /* RECORD */
683 { 0x0313, KEY_PLAY }, /* PLAY */
684 { 0x0116, KEY_STOP }, /* STOP */
685 { 0x0113, KEY_PAUSE }, /* PAUSE */
Alain Kalker05371562008-11-17 17:20:38 -0300686};
687
688static u8 af9015_ir_table_digittrade[] = {
689 0x00, 0xff, 0x06, 0xf9, 0x13, 0x05, 0x00,
690 0x00, 0xff, 0x4d, 0xb2, 0x17, 0x01, 0x00,
691 0x00, 0xff, 0x1f, 0xe0, 0x2c, 0x00, 0x00,
692 0x00, 0xff, 0x0a, 0xf5, 0x15, 0x01, 0x00,
693 0x00, 0xff, 0x0e, 0xf1, 0x16, 0x01, 0x00,
694 0x00, 0xff, 0x09, 0xf6, 0x09, 0x01, 0x00,
695 0x00, 0xff, 0x01, 0xfe, 0x08, 0x01, 0x00,
696 0x00, 0xff, 0x05, 0xfa, 0x10, 0x01, 0x00,
697 0x00, 0xff, 0x02, 0xfd, 0x56, 0x00, 0x00,
698 0x00, 0xff, 0x40, 0xbf, 0x57, 0x00, 0x00,
699 0x00, 0xff, 0x19, 0xe6, 0x52, 0x00, 0x00,
700 0x00, 0xff, 0x17, 0xe8, 0x51, 0x00, 0x00,
701 0x00, 0xff, 0x10, 0xef, 0x0f, 0x01, 0x00,
702 0x00, 0xff, 0x54, 0xab, 0x27, 0x00, 0x00,
703 0x00, 0xff, 0x1b, 0xe4, 0x1e, 0x00, 0x00,
704 0x00, 0xff, 0x11, 0xee, 0x1f, 0x00, 0x00,
705 0x00, 0xff, 0x15, 0xea, 0x20, 0x00, 0x00,
706 0x00, 0xff, 0x12, 0xed, 0x21, 0x00, 0x00,
707 0x00, 0xff, 0x16, 0xe9, 0x22, 0x00, 0x00,
708 0x00, 0xff, 0x4c, 0xb3, 0x23, 0x00, 0x00,
709 0x00, 0xff, 0x48, 0xb7, 0x24, 0x00, 0x00,
710 0x00, 0xff, 0x04, 0xfb, 0x25, 0x00, 0x00,
711 0x00, 0xff, 0x00, 0xff, 0x26, 0x00, 0x00,
712 0x00, 0xff, 0x1e, 0xe1, 0x13, 0x03, 0x00,
713 0x00, 0xff, 0x1a, 0xe5, 0x13, 0x01, 0x00,
714 0x00, 0xff, 0x03, 0xfc, 0x17, 0x05, 0x00,
715 0x00, 0xff, 0x0d, 0xf2, 0x16, 0x05, 0x00,
716 0x00, 0xff, 0x1d, 0xe2, 0x40, 0x00, 0x00,
717};
718
Marc Schneider26144842009-03-26 21:07:18 -0300719/* TREKSTOR DVB-T USB Stick */
720static struct dvb_usb_rc_key af9015_rc_keys_trekstor[] = {
Mauro Carvalho Chehab2e365882009-08-29 15:19:31 -0300721 { 0x0704, KEY_AGAIN }, /* Home */
722 { 0x0705, KEY_MUTE }, /* Mute */
723 { 0x0706, KEY_UP }, /* Up */
724 { 0x0707, KEY_DOWN }, /* Down */
725 { 0x0709, KEY_RIGHT }, /* Right */
726 { 0x070a, KEY_ENTER }, /* OK */
727 { 0x070b, KEY_FASTFORWARD }, /* Fast forward */
728 { 0x070c, KEY_REWIND }, /* Rewind */
729 { 0x070d, KEY_PLAY }, /* Play/Pause */
730 { 0x070e, KEY_VOLUMEUP }, /* Volume + */
731 { 0x070f, KEY_VOLUMEDOWN }, /* Volume - */
732 { 0x0710, KEY_RECORD }, /* Record */
733 { 0x0711, KEY_STOP }, /* Stop */
734 { 0x0712, KEY_ZOOM }, /* TV */
735 { 0x0713, KEY_EPG }, /* Info/EPG */
736 { 0x0714, KEY_CHANNELDOWN }, /* Channel - */
737 { 0x0715, KEY_CHANNELUP }, /* Channel + */
738 { 0x071e, KEY_1 },
739 { 0x071f, KEY_2 },
740 { 0x0720, KEY_3 },
741 { 0x0721, KEY_4 },
742 { 0x0722, KEY_5 },
743 { 0x0723, KEY_6 },
744 { 0x0724, KEY_7 },
745 { 0x0725, KEY_8 },
746 { 0x0726, KEY_9 },
747 { 0x0708, KEY_LEFT }, /* LEFT */
748 { 0x0727, KEY_0 },
Marc Schneider26144842009-03-26 21:07:18 -0300749};
750
751static u8 af9015_ir_table_trekstor[] = {
752 0x00, 0xff, 0x86, 0x79, 0x04, 0x07, 0x00,
753 0x00, 0xff, 0x85, 0x7a, 0x05, 0x07, 0x00,
754 0x00, 0xff, 0x87, 0x78, 0x06, 0x07, 0x00,
755 0x00, 0xff, 0x8c, 0x73, 0x07, 0x07, 0x00,
756 0x00, 0xff, 0x89, 0x76, 0x09, 0x07, 0x00,
757 0x00, 0xff, 0x88, 0x77, 0x0a, 0x07, 0x00,
758 0x00, 0xff, 0x8a, 0x75, 0x0b, 0x07, 0x00,
759 0x00, 0xff, 0x9e, 0x61, 0x0c, 0x07, 0x00,
760 0x00, 0xff, 0x8d, 0x72, 0x0d, 0x07, 0x00,
761 0x00, 0xff, 0x8b, 0x74, 0x0e, 0x07, 0x00,
762 0x00, 0xff, 0x9b, 0x64, 0x0f, 0x07, 0x00,
763 0x00, 0xff, 0x9d, 0x62, 0x10, 0x07, 0x00,
764 0x00, 0xff, 0x8e, 0x71, 0x11, 0x07, 0x00,
765 0x00, 0xff, 0x9c, 0x63, 0x12, 0x07, 0x00,
766 0x00, 0xff, 0x8f, 0x70, 0x13, 0x07, 0x00,
767 0x00, 0xff, 0x93, 0x6c, 0x14, 0x07, 0x00,
768 0x00, 0xff, 0x97, 0x68, 0x15, 0x07, 0x00,
769 0x00, 0xff, 0x92, 0x6d, 0x1e, 0x07, 0x00,
770 0x00, 0xff, 0x96, 0x69, 0x1f, 0x07, 0x00,
771 0x00, 0xff, 0x9a, 0x65, 0x20, 0x07, 0x00,
772 0x00, 0xff, 0x91, 0x6e, 0x21, 0x07, 0x00,
773 0x00, 0xff, 0x95, 0x6a, 0x22, 0x07, 0x00,
774 0x00, 0xff, 0x99, 0x66, 0x23, 0x07, 0x00,
775 0x00, 0xff, 0x90, 0x6f, 0x24, 0x07, 0x00,
776 0x00, 0xff, 0x94, 0x6b, 0x25, 0x07, 0x00,
777 0x00, 0xff, 0x98, 0x67, 0x26, 0x07, 0x00,
778 0x00, 0xff, 0x9f, 0x60, 0x08, 0x07, 0x00,
779 0x00, 0xff, 0x84, 0x7b, 0x27, 0x07, 0x00,
780};
781
Antti Palosaari80619de2008-09-15 17:18:09 -0300782#endif