2 * DVB USB Linux driver for Afatech AF9015 DVB-T USB2.0 receiver
4 * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
6 * Thanks to Afatech who kindly provided information.
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.
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.
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.
24 #ifndef _DVB_USB_AF9015_H_
25 #define _DVB_USB_AF9015_H_
27 #define DVB_USB_LOG_PREFIX "af9015"
30 #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)
37 #define AF9015_I2C_EEPROM 0xa0
38 #define AF9015_I2C_DEMOD 0x38
39 #define AF9015_USB_TIMEOUT 2000
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
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
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
65 #define AF9015_EEPROM_OFFSET (AF9015_EEPROM_SAW_BW2 - AF9015_EEPROM_SAW_BW1)
70 u8 i2c_addr
; /* [2] */
73 u8 addr_len
; /* [6] */
74 u8 data_len
; /* [7] */
80 DOWNLOAD_FIRMWARE
= 0x11,
84 READ_WRITE_I2C
= 0x22,
87 WRITE_VIRTUAL_MEMORY
= 0x26,
94 AF9015_IR_MODE_DISABLED
= 0,
98 AF9015_IR_MODE_POLLING
, /* just guess */
101 struct af9015_state
{
102 struct i2c_adapter i2c_adap
; /* I2C adapter for 2nd FE */
105 struct af9015_config
{
109 u16 firmware_checksum
;
116 AF9015_REMOTE_NONE
= 0,
117 /* 1 */ AF9015_REMOTE_A_LINK_DTU_M
,
118 AF9015_REMOTE_MSI_DIGIVOX_MINI_II_V3
,
119 AF9015_REMOTE_MYGICTV_U718
,
120 AF9015_REMOTE_DIGITTRADE_DVB_T
,
121 /* 5 */ AF9015_REMOTE_AVERMEDIA_KS
,
124 /* LeadTek - Y04G0051 */
125 /* Leadtek WinFast DTV Dongle Gold */
126 static struct dvb_usb_rc_key af9015_rc_keys_leadtek
[] = {
138 { 0x004f, KEY_RIGHT
},
139 { 0x0050, KEY_LEFT
},
140 { 0x0051, KEY_DOWN
},
142 { 0x011a, KEY_POWER2
},
145 { 0x04b2, KEY_GREEN
},
146 { 0x04b1, KEY_YELLOW
},
147 { 0x04b0, KEY_BLUE
},
148 { 0x003d, KEY_TEXT
},
149 { 0x0113, KEY_SLEEP
},
150 { 0x0010, KEY_MUTE
},
152 { 0x0009, KEY_SCREEN
},
153 { 0x010f, KEY_MENU
},
154 { 0x003f, KEY_CHANNEL
},
155 { 0x0013, KEY_REWIND
},
156 { 0x0012, KEY_PLAY
},
157 { 0x0011, KEY_FASTFORWARD
},
158 { 0x0005, KEY_PREVIOUS
},
159 { 0x0029, KEY_STOP
},
160 { 0x002b, KEY_NEXT
},
162 { 0x0019, KEY_VIDEO
},
163 { 0x0016, KEY_AUDIO
},
165 { 0x002a, KEY_AGAIN
},
166 { 0x002c, KEY_CAMERA
},
168 { 0x0115, KEY_RECORD
},
169 { 0x010b, KEY_TIME
},
170 { 0x0043, KEY_VOLUMEUP
},
171 { 0x0042, KEY_VOLUMEDOWN
},
172 { 0x004b, KEY_CHANNELUP
},
173 { 0x004e, KEY_CHANNELDOWN
},
176 static u8 af9015_ir_table_leadtek
[] = {
177 0x03, 0xfc, 0x00, 0xff, 0x1a, 0x01, 0x00, /* KEY_POWER2 */
178 0x03, 0xfc, 0x56, 0xa9, 0xb4, 0x04, 0x00, /* KEY_TV */
179 0x03, 0xfc, 0x4b, 0xb4, 0xb3, 0x04, 0x00, /* KEY_RED */
180 0x03, 0xfc, 0x4c, 0xb3, 0xb2, 0x04, 0x00, /* KEY_GREEN */
181 0x03, 0xfc, 0x4d, 0xb2, 0xb1, 0x04, 0x00, /* KEY_YELLOW */
182 0x03, 0xfc, 0x4e, 0xb1, 0xb0, 0x04, 0x00, /* KEY_BLUE */
183 0x03, 0xfc, 0x1f, 0xe0, 0x3d, 0x00, 0x00, /* KEY_TEXT */
184 0x03, 0xfc, 0x40, 0xbf, 0x13, 0x01, 0x00, /* KEY_SLEEP */
185 0x03, 0xfc, 0x14, 0xeb, 0x10, 0x00, 0x00, /* KEY_MUTE */
186 0x03, 0xfc, 0x49, 0xb6, 0x05, 0x01, 0x00, /* KEY_ESC */
187 0x03, 0xfc, 0x50, 0xaf, 0x29, 0x00, 0x00, /* KEY_STOP (1)*/
188 0x03, 0xfc, 0x0c, 0xf3, 0x52, 0x00, 0x00, /* KEY_UP */
189 0x03, 0xfc, 0x03, 0xfc, 0x09, 0x00, 0x00, /* KEY_SCREEN */
190 0x03, 0xfc, 0x08, 0xf7, 0x50, 0x00, 0x00, /* KEY_LEFT */
191 0x03, 0xfc, 0x13, 0xec, 0x28, 0x00, 0x00, /* KEY_OK (1) */
192 0x03, 0xfc, 0x04, 0xfb, 0x4f, 0x00, 0x00, /* KEY_RIGHT */
193 0x03, 0xfc, 0x4f, 0xb0, 0x0f, 0x01, 0x00, /* KEY_MENU */
194 0x03, 0xfc, 0x10, 0xef, 0x51, 0x00, 0x00, /* KEY_DOWN */
195 0x03, 0xfc, 0x51, 0xae, 0x3f, 0x00, 0x00, /* KEY_CHANNEL */
196 0x03, 0xfc, 0x42, 0xbd, 0x13, 0x00, 0x00, /* KEY_REWIND */
197 0x03, 0xfc, 0x43, 0xbc, 0x12, 0x00, 0x00, /* KEY_PLAY */
198 0x03, 0xfc, 0x44, 0xbb, 0x11, 0x00, 0x00, /* KEY_FASTFORWARD */
199 0x03, 0xfc, 0x52, 0xad, 0x19, 0x00, 0x00, /* KEY_VIDEO (1) */
200 0x03, 0xfc, 0x54, 0xab, 0x05, 0x00, 0x00, /* KEY_PREVIOUS */
201 0x03, 0xfc, 0x46, 0xb9, 0x29, 0x00, 0x00, /* KEY_STOP (2) */
202 0x03, 0xfc, 0x55, 0xaa, 0x2b, 0x00, 0x00, /* KEY_NEXT */
203 0x03, 0xfc, 0x53, 0xac, 0x41, 0x00, 0x00, /* KEY_EPG */
204 0x03, 0xfc, 0x05, 0xfa, 0x1e, 0x00, 0x00, /* KEY_1 */
205 0x03, 0xfc, 0x06, 0xf9, 0x1f, 0x00, 0x00, /* KEY_2 */
206 0x03, 0xfc, 0x07, 0xf8, 0x20, 0x00, 0x00, /* KEY_3 */
207 0x03, 0xfc, 0x1e, 0xe1, 0x19, 0x00, 0x00, /* KEY_VIDEO (2) */
208 0x03, 0xfc, 0x09, 0xf6, 0x21, 0x00, 0x00, /* KEY_4 */
209 0x03, 0xfc, 0x0a, 0xf5, 0x22, 0x00, 0x00, /* KEY_5 */
210 0x03, 0xfc, 0x0b, 0xf4, 0x23, 0x00, 0x00, /* KEY_6 */
211 0x03, 0xfc, 0x1b, 0xe4, 0x16, 0x00, 0x00, /* KEY_AUDIO */
212 0x03, 0xfc, 0x0d, 0xf2, 0x24, 0x00, 0x00, /* KEY_7 */
213 0x03, 0xfc, 0x0e, 0xf1, 0x25, 0x00, 0x00, /* KEY_8 */
214 0x03, 0xfc, 0x0f, 0xf0, 0x26, 0x00, 0x00, /* KEY_9 */
215 0x03, 0xfc, 0x16, 0xe9, 0x28, 0x00, 0x00, /* KEY_OK (2) */
216 0x03, 0xfc, 0x41, 0xbe, 0x37, 0x00, 0x00, /* KEY_DOT */
217 0x03, 0xfc, 0x12, 0xed, 0x27, 0x00, 0x00, /* KEY_0 */
218 0x03, 0xfc, 0x11, 0xee, 0x2a, 0x00, 0x00, /* KEY_AGAIN */
219 0x03, 0xfc, 0x48, 0xb7, 0x2c, 0x00, 0x00, /* KEY_CAMERA */
220 0x03, 0xfc, 0x4a, 0xb5, 0x3c, 0x00, 0x00, /* KEY_NEW */
221 0x03, 0xfc, 0x47, 0xb8, 0x15, 0x01, 0x00, /* KEY_RECORD */
222 0x03, 0xfc, 0x45, 0xba, 0x0b, 0x01, 0x00, /* KEY_TIME */
223 0x03, 0xfc, 0x5e, 0xa1, 0x43, 0x00, 0x00, /* KEY_VOLUMEUP */
224 0x03, 0xfc, 0x5a, 0xa5, 0x42, 0x00, 0x00, /* KEY_VOLUMEDOWN */
225 0x03, 0xfc, 0x5b, 0xa4, 0x4b, 0x00, 0x00, /* KEY_CHANNELUP */
226 0x03, 0xfc, 0x5f, 0xa0, 0x4e, 0x00, 0x00, /* KEY_CHANNELDOWN */
229 /* TwinHan AzureWave AD-TU700(704J) */
230 static struct dvb_usb_rc_key af9015_rc_keys_twinhan
[] = {
231 { 0x053f, KEY_POWER
},
232 { 0x0019, KEY_FAVORITES
}, /* Favorite List */
233 { 0x0004, KEY_TEXT
}, /* Teletext */
234 { 0x000e, KEY_POWER
},
235 { 0x000e, KEY_INFO
}, /* Preview */
236 { 0x0008, KEY_EPG
}, /* Info/EPG */
237 { 0x000f, KEY_LIST
}, /* Record List */
248 { 0x0029, KEY_CANCEL
}, /* Cancel */
249 { 0x004c, KEY_CLEAR
}, /* Clear */
250 { 0x002a, KEY_BACK
}, /* Back */
251 { 0x002b, KEY_TAB
}, /* Tab */
252 { 0x0052, KEY_UP
}, /* up arrow */
253 { 0x0051, KEY_DOWN
}, /* down arrow */
254 { 0x004f, KEY_RIGHT
}, /* right arrow */
255 { 0x0050, KEY_LEFT
}, /* left arrow */
256 { 0x0028, KEY_ENTER
}, /* Enter / ok */
257 { 0x0252, KEY_VOLUMEUP
},
258 { 0x0251, KEY_VOLUMEDOWN
},
259 { 0x004e, KEY_CHANNELDOWN
},
260 { 0x004b, KEY_CHANNELUP
},
261 { 0x004a, KEY_RECORD
},
262 { 0x0111, KEY_PLAY
},
263 { 0x0017, KEY_PAUSE
},
264 { 0x000c, KEY_REWIND
}, /* FR << */
265 { 0x0011, KEY_FASTFORWARD
}, /* FF >> */
266 { 0x0115, KEY_PREVIOUS
}, /* Replay */
267 { 0x010e, KEY_NEXT
}, /* Skip */
268 { 0x0013, KEY_CAMERA
}, /* Capture */
269 { 0x010f, KEY_LANGUAGE
}, /* SAP */
270 { 0x0113, KEY_TV2
}, /* PIP */
271 { 0x001d, KEY_ZOOM
}, /* Full Screen */
272 { 0x0117, KEY_SUBTITLE
}, /* Subtitle / CC */
273 { 0x0010, KEY_MUTE
},
274 { 0x0119, KEY_AUDIO
}, /* L/R */ /* TODO better event */
275 { 0x0116, KEY_SLEEP
}, /* Hibernate */
276 { 0x0116, KEY_SWITCHVIDEOMODE
},
277 /* A/V */ /* TODO does not work */
278 { 0x0006, KEY_AGAIN
}, /* Recall */
279 { 0x0116, KEY_KPPLUS
}, /* Zoom+ */ /* TODO does not work */
280 { 0x0116, KEY_KPMINUS
}, /* Zoom- */ /* TODO does not work */
282 { 0x020a, KEY_GREEN
},
283 { 0x021c, KEY_YELLOW
},
284 { 0x0205, KEY_BLUE
},
287 static u8 af9015_ir_table_twinhan
[] = {
288 0x00, 0xff, 0x16, 0xe9, 0x3f, 0x05, 0x00,
289 0x00, 0xff, 0x07, 0xf8, 0x16, 0x01, 0x00,
290 0x00, 0xff, 0x14, 0xeb, 0x11, 0x01, 0x00,
291 0x00, 0xff, 0x1a, 0xe5, 0x4d, 0x00, 0x00,
292 0x00, 0xff, 0x4c, 0xb3, 0x17, 0x00, 0x00,
293 0x00, 0xff, 0x12, 0xed, 0x11, 0x00, 0x00,
294 0x00, 0xff, 0x40, 0xbf, 0x0c, 0x00, 0x00,
295 0x00, 0xff, 0x11, 0xee, 0x4a, 0x00, 0x00,
296 0x00, 0xff, 0x54, 0xab, 0x13, 0x00, 0x00,
297 0x00, 0xff, 0x41, 0xbe, 0x15, 0x01, 0x00,
298 0x00, 0xff, 0x42, 0xbd, 0x0e, 0x01, 0x00,
299 0x00, 0xff, 0x43, 0xbc, 0x17, 0x01, 0x00,
300 0x00, 0xff, 0x50, 0xaf, 0x0f, 0x01, 0x00,
301 0x00, 0xff, 0x4d, 0xb2, 0x1d, 0x00, 0x00,
302 0x00, 0xff, 0x47, 0xb8, 0x13, 0x01, 0x00,
303 0x00, 0xff, 0x05, 0xfa, 0x4b, 0x00, 0x00,
304 0x00, 0xff, 0x02, 0xfd, 0x4e, 0x00, 0x00,
305 0x00, 0xff, 0x0e, 0xf1, 0x06, 0x00, 0x00,
306 0x00, 0xff, 0x1e, 0xe1, 0x52, 0x02, 0x00,
307 0x00, 0xff, 0x0a, 0xf5, 0x51, 0x02, 0x00,
308 0x00, 0xff, 0x10, 0xef, 0x10, 0x00, 0x00,
309 0x00, 0xff, 0x49, 0xb6, 0x19, 0x01, 0x00,
310 0x00, 0xff, 0x15, 0xea, 0x27, 0x00, 0x00,
311 0x00, 0xff, 0x03, 0xfc, 0x1e, 0x00, 0x00,
312 0x00, 0xff, 0x01, 0xfe, 0x1f, 0x00, 0x00,
313 0x00, 0xff, 0x06, 0xf9, 0x20, 0x00, 0x00,
314 0x00, 0xff, 0x09, 0xf6, 0x21, 0x00, 0x00,
315 0x00, 0xff, 0x1d, 0xe2, 0x22, 0x00, 0x00,
316 0x00, 0xff, 0x1f, 0xe0, 0x23, 0x00, 0x00,
317 0x00, 0xff, 0x0d, 0xf2, 0x24, 0x00, 0x00,
318 0x00, 0xff, 0x19, 0xe6, 0x25, 0x00, 0x00,
319 0x00, 0xff, 0x1b, 0xe4, 0x26, 0x00, 0x00,
320 0x00, 0xff, 0x00, 0xff, 0x2b, 0x00, 0x00,
321 0x00, 0xff, 0x4a, 0xb5, 0x4c, 0x00, 0x00,
322 0x00, 0xff, 0x4b, 0xb4, 0x52, 0x00, 0x00,
323 0x00, 0xff, 0x51, 0xae, 0x51, 0x00, 0x00,
324 0x00, 0xff, 0x52, 0xad, 0x4f, 0x00, 0x00,
325 0x00, 0xff, 0x4e, 0xb1, 0x50, 0x00, 0x00,
326 0x00, 0xff, 0x0c, 0xf3, 0x29, 0x00, 0x00,
327 0x00, 0xff, 0x4f, 0xb0, 0x28, 0x00, 0x00,
328 0x00, 0xff, 0x13, 0xec, 0x2a, 0x00, 0x00,
329 0x00, 0xff, 0x17, 0xe8, 0x19, 0x00, 0x00,
330 0x00, 0xff, 0x04, 0xfb, 0x0f, 0x00, 0x00,
331 0x00, 0xff, 0x48, 0xb7, 0x0e, 0x00, 0x00,
332 0x00, 0xff, 0x0f, 0xf0, 0x04, 0x00, 0x00,
333 0x00, 0xff, 0x1c, 0xe3, 0x08, 0x00, 0x00,
334 0x00, 0xff, 0x18, 0xe7, 0x15, 0x02, 0x00,
335 0x00, 0xff, 0x53, 0xac, 0x0a, 0x02, 0x00,
336 0x00, 0xff, 0x5e, 0xa1, 0x1c, 0x02, 0x00,
337 0x00, 0xff, 0x5f, 0xa0, 0x05, 0x02, 0x00,
341 static struct dvb_usb_rc_key af9015_rc_keys_a_link
[] = {
352 { 0x002e, KEY_CHANNELUP
},
353 { 0x002d, KEY_CHANNELDOWN
},
354 { 0x0428, KEY_ZOOM
},
355 { 0x0041, KEY_MUTE
},
356 { 0x0042, KEY_VOLUMEDOWN
},
357 { 0x0043, KEY_VOLUMEUP
},
358 { 0x0044, KEY_GOTO
}, /* jump */
359 { 0x0545, KEY_POWER
},
362 static u8 af9015_ir_table_a_link
[] = {
363 0x08, 0xf7, 0x12, 0xed, 0x45, 0x05, 0x00, /* power */
364 0x08, 0xf7, 0x1a, 0xe5, 0x41, 0x00, 0x00, /* mute */
365 0x08, 0xf7, 0x01, 0xfe, 0x1e, 0x00, 0x00, /* 1 */
366 0x08, 0xf7, 0x1c, 0xe3, 0x21, 0x00, 0x00, /* 4 */
367 0x08, 0xf7, 0x03, 0xfc, 0x24, 0x00, 0x00, /* 7 */
368 0x08, 0xf7, 0x05, 0xfa, 0x28, 0x04, 0x00, /* zoom */
369 0x08, 0xf7, 0x00, 0xff, 0x43, 0x00, 0x00, /* volume up */
370 0x08, 0xf7, 0x16, 0xe9, 0x42, 0x00, 0x00, /* volume down */
371 0x08, 0xf7, 0x0f, 0xf0, 0x1f, 0x00, 0x00, /* 2 */
372 0x08, 0xf7, 0x0d, 0xf2, 0x22, 0x00, 0x00, /* 5 */
373 0x08, 0xf7, 0x1b, 0xe4, 0x25, 0x00, 0x00, /* 8 */
374 0x08, 0xf7, 0x06, 0xf9, 0x27, 0x00, 0x00, /* 0 */
375 0x08, 0xf7, 0x14, 0xeb, 0x2e, 0x00, 0x00, /* channel up */
376 0x08, 0xf7, 0x1d, 0xe2, 0x2d, 0x00, 0x00, /* channel down */
377 0x08, 0xf7, 0x02, 0xfd, 0x20, 0x00, 0x00, /* 3 */
378 0x08, 0xf7, 0x18, 0xe7, 0x23, 0x00, 0x00, /* 6 */
379 0x08, 0xf7, 0x04, 0xfb, 0x26, 0x00, 0x00, /* 9 */
380 0x08, 0xf7, 0x07, 0xf8, 0x44, 0x00, 0x00, /* jump */
383 /* MSI DIGIVOX mini II V3.0 */
384 static struct dvb_usb_rc_key af9015_rc_keys_msi
[] = {
395 { 0x030f, KEY_CHANNELUP
},
396 { 0x030e, KEY_CHANNELDOWN
},
397 { 0x0042, KEY_VOLUMEDOWN
},
398 { 0x0043, KEY_VOLUMEUP
},
399 { 0x0545, KEY_POWER
},
400 { 0x0052, KEY_UP
}, /* up */
401 { 0x0051, KEY_DOWN
}, /* down */
402 { 0x0028, KEY_ENTER
},
405 static u8 af9015_ir_table_msi
[] = {
406 0x03, 0xfc, 0x17, 0xe8, 0x45, 0x05, 0x00, /* power */
407 0x03, 0xfc, 0x0d, 0xf2, 0x51, 0x00, 0x00, /* down */
408 0x03, 0xfc, 0x03, 0xfc, 0x52, 0x00, 0x00, /* up */
409 0x03, 0xfc, 0x1a, 0xe5, 0x1e, 0x00, 0x00, /* 1 */
410 0x03, 0xfc, 0x02, 0xfd, 0x1f, 0x00, 0x00, /* 2 */
411 0x03, 0xfc, 0x04, 0xfb, 0x20, 0x00, 0x00, /* 3 */
412 0x03, 0xfc, 0x1c, 0xe3, 0x21, 0x00, 0x00, /* 4 */
413 0x03, 0xfc, 0x08, 0xf7, 0x22, 0x00, 0x00, /* 5 */
414 0x03, 0xfc, 0x1d, 0xe2, 0x23, 0x00, 0x00, /* 6 */
415 0x03, 0xfc, 0x11, 0xee, 0x24, 0x00, 0x00, /* 7 */
416 0x03, 0xfc, 0x0b, 0xf4, 0x25, 0x00, 0x00, /* 8 */
417 0x03, 0xfc, 0x10, 0xef, 0x26, 0x00, 0x00, /* 9 */
418 0x03, 0xfc, 0x09, 0xf6, 0x27, 0x00, 0x00, /* 0 */
419 0x03, 0xfc, 0x14, 0xeb, 0x43, 0x00, 0x00, /* volume up */
420 0x03, 0xfc, 0x1f, 0xe0, 0x42, 0x00, 0x00, /* volume down */
421 0x03, 0xfc, 0x15, 0xea, 0x0f, 0x03, 0x00, /* channel up */
422 0x03, 0xfc, 0x05, 0xfa, 0x0e, 0x03, 0x00, /* channel down */
423 0x03, 0xfc, 0x16, 0xe9, 0x28, 0x00, 0x00, /* enter */
427 static struct dvb_usb_rc_key af9015_rc_keys_mygictv
[] = {
428 { 0x003d, KEY_SWITCHVIDEOMODE
},
430 { 0x0545, KEY_POWER
},
441 { 0x0041, KEY_MUTE
},
442 { 0x002a, KEY_ESC
}, /* Esc */
443 { 0x002e, KEY_CHANNELUP
},
444 { 0x002d, KEY_CHANNELDOWN
},
445 { 0x0042, KEY_VOLUMEDOWN
},
446 { 0x0043, KEY_VOLUMEUP
},
447 { 0x0052, KEY_UP
}, /* up arrow */
448 { 0x0051, KEY_DOWN
}, /* down arrow */
449 { 0x004f, KEY_RIGHT
}, /* right arrow */
450 { 0x0050, KEY_LEFT
}, /* left arrow */
451 { 0x0028, KEY_ENTER
}, /* ok */
452 { 0x0115, KEY_RECORD
},
453 { 0x0313, KEY_PLAY
},
454 { 0x0113, KEY_PAUSE
},
455 { 0x0116, KEY_STOP
},
456 { 0x0307, KEY_REWIND
}, /* FR << */
457 { 0x0309, KEY_FASTFORWARD
}, /* FF >> */
458 { 0x003b, KEY_TIME
}, /* TimeShift */
459 { 0x003e, KEY_CAMERA
}, /* Snapshot */
460 { 0x0316, KEY_CYCLEWINDOWS
}, /* yellow, min / max */
461 { 0x0000, KEY_ZOOM
}, /* 'select' (?) */
462 { 0x0316, KEY_SHUFFLE
}, /* Shuffle */
463 { 0x0345, KEY_POWER
},
466 static u8 af9015_ir_table_mygictv
[] = {
467 0x02, 0xbd, 0x0c, 0xf3, 0x3d, 0x00, 0x00, /* TV / AV */
468 0x02, 0xbd, 0x14, 0xeb, 0x45, 0x05, 0x00, /* power */
469 0x02, 0xbd, 0x00, 0xff, 0x1e, 0x00, 0x00, /* 1 */
470 0x02, 0xbd, 0x01, 0xfe, 0x1f, 0x00, 0x00, /* 2 */
471 0x02, 0xbd, 0x02, 0xfd, 0x20, 0x00, 0x00, /* 3 */
472 0x02, 0xbd, 0x03, 0xfc, 0x21, 0x00, 0x00, /* 4 */
473 0x02, 0xbd, 0x04, 0xfb, 0x22, 0x00, 0x00, /* 5 */
474 0x02, 0xbd, 0x05, 0xfa, 0x23, 0x00, 0x00, /* 6 */
475 0x02, 0xbd, 0x06, 0xf9, 0x24, 0x00, 0x00, /* 7 */
476 0x02, 0xbd, 0x07, 0xf8, 0x25, 0x00, 0x00, /* 8 */
477 0x02, 0xbd, 0x08, 0xf7, 0x26, 0x00, 0x00, /* 9 */
478 0x02, 0xbd, 0x09, 0xf6, 0x27, 0x00, 0x00, /* 0 */
479 0x02, 0xbd, 0x0a, 0xf5, 0x41, 0x00, 0x00, /* mute */
480 0x02, 0xbd, 0x1c, 0xe3, 0x2a, 0x00, 0x00, /* esc */
481 0x02, 0xbd, 0x1f, 0xe0, 0x43, 0x00, 0x00, /* volume up */
482 0x02, 0xbd, 0x12, 0xed, 0x52, 0x00, 0x00, /* up arrow */
483 0x02, 0xbd, 0x11, 0xee, 0x50, 0x00, 0x00, /* left arrow */
484 0x02, 0xbd, 0x15, 0xea, 0x28, 0x00, 0x00, /* ok */
485 0x02, 0xbd, 0x10, 0xef, 0x4f, 0x00, 0x00, /* right arrow */
486 0x02, 0xbd, 0x13, 0xec, 0x51, 0x00, 0x00, /* down arrow */
487 0x02, 0xbd, 0x0e, 0xf1, 0x42, 0x00, 0x00, /* volume down */
488 0x02, 0xbd, 0x19, 0xe6, 0x15, 0x01, 0x00, /* record */
489 0x02, 0xbd, 0x1e, 0xe1, 0x13, 0x03, 0x00, /* play */
490 0x02, 0xbd, 0x16, 0xe9, 0x16, 0x01, 0x00, /* stop */
491 0x02, 0xbd, 0x0b, 0xf4, 0x28, 0x04, 0x00, /* yellow, min / max */
492 0x02, 0xbd, 0x0f, 0xf0, 0x3b, 0x00, 0x00, /* time shift */
493 0x02, 0xbd, 0x18, 0xe7, 0x2e, 0x00, 0x00, /* channel up */
494 0x02, 0xbd, 0x1a, 0xe5, 0x2d, 0x00, 0x00, /* channel down */
495 0x02, 0xbd, 0x17, 0xe8, 0x3e, 0x00, 0x00, /* snapshot */
496 0x02, 0xbd, 0x40, 0xbf, 0x13, 0x01, 0x00, /* pause */
497 0x02, 0xbd, 0x41, 0xbe, 0x09, 0x03, 0x00, /* FF >> */
498 0x02, 0xbd, 0x42, 0xbd, 0x07, 0x03, 0x00, /* FR << */
499 0x02, 0xbd, 0x43, 0xbc, 0x00, 0x00, 0x00, /* 'select' (?) */
500 0x02, 0xbd, 0x44, 0xbb, 0x16, 0x03, 0x00, /* shuffle */
501 0x02, 0xbd, 0x45, 0xba, 0x45, 0x03, 0x00, /* power */
504 /* KWorld PlusTV Dual DVB-T Stick (DVB-T 399U) */
505 static u8 af9015_ir_table_kworld
[] = {
506 0x86, 0x6b, 0x0c, 0xf3, 0x2e, 0x07, 0x00,
507 0x86, 0x6b, 0x16, 0xe9, 0x2d, 0x07, 0x00,
508 0x86, 0x6b, 0x1d, 0xe2, 0x37, 0x07, 0x00,
509 0x86, 0x6b, 0x00, 0xff, 0x1e, 0x07, 0x00,
510 0x86, 0x6b, 0x01, 0xfe, 0x1f, 0x07, 0x00,
511 0x86, 0x6b, 0x02, 0xfd, 0x20, 0x07, 0x00,
512 0x86, 0x6b, 0x03, 0xfc, 0x21, 0x07, 0x00,
513 0x86, 0x6b, 0x04, 0xfb, 0x22, 0x07, 0x00,
514 0x86, 0x6b, 0x05, 0xfa, 0x23, 0x07, 0x00,
515 0x86, 0x6b, 0x06, 0xf9, 0x24, 0x07, 0x00,
516 0x86, 0x6b, 0x07, 0xf8, 0x25, 0x07, 0x00,
517 0x86, 0x6b, 0x08, 0xf7, 0x26, 0x07, 0x00,
518 0x86, 0x6b, 0x09, 0xf6, 0x4d, 0x07, 0x00,
519 0x86, 0x6b, 0x0a, 0xf5, 0x4e, 0x07, 0x00,
520 0x86, 0x6b, 0x14, 0xeb, 0x4f, 0x07, 0x00,
521 0x86, 0x6b, 0x1e, 0xe1, 0x50, 0x07, 0x00,
522 0x86, 0x6b, 0x17, 0xe8, 0x52, 0x07, 0x00,
523 0x86, 0x6b, 0x1f, 0xe0, 0x51, 0x07, 0x00,
524 0x86, 0x6b, 0x0e, 0xf1, 0x0b, 0x07, 0x00,
525 0x86, 0x6b, 0x20, 0xdf, 0x0c, 0x07, 0x00,
526 0x86, 0x6b, 0x42, 0xbd, 0x0d, 0x07, 0x00,
527 0x86, 0x6b, 0x0b, 0xf4, 0x0e, 0x07, 0x00,
528 0x86, 0x6b, 0x43, 0xbc, 0x0f, 0x07, 0x00,
529 0x86, 0x6b, 0x10, 0xef, 0x10, 0x07, 0x00,
530 0x86, 0x6b, 0x21, 0xde, 0x11, 0x07, 0x00,
531 0x86, 0x6b, 0x13, 0xec, 0x12, 0x07, 0x00,
532 0x86, 0x6b, 0x11, 0xee, 0x13, 0x07, 0x00,
533 0x86, 0x6b, 0x12, 0xed, 0x14, 0x07, 0x00,
534 0x86, 0x6b, 0x19, 0xe6, 0x15, 0x07, 0x00,
535 0x86, 0x6b, 0x1a, 0xe5, 0x16, 0x07, 0x00,
536 0x86, 0x6b, 0x1b, 0xe4, 0x17, 0x07, 0x00,
537 0x86, 0x6b, 0x4b, 0xb4, 0x18, 0x07, 0x00,
538 0x86, 0x6b, 0x40, 0xbf, 0x19, 0x07, 0x00,
539 0x86, 0x6b, 0x44, 0xbb, 0x1a, 0x07, 0x00,
540 0x86, 0x6b, 0x41, 0xbe, 0x1b, 0x07, 0x00,
541 0x86, 0x6b, 0x22, 0xdd, 0x1c, 0x07, 0x00,
542 0x86, 0x6b, 0x15, 0xea, 0x1d, 0x07, 0x00,
543 0x86, 0x6b, 0x0f, 0xf0, 0x3f, 0x07, 0x00,
544 0x86, 0x6b, 0x1c, 0xe3, 0x40, 0x07, 0x00,
545 0x86, 0x6b, 0x4a, 0xb5, 0x41, 0x07, 0x00,
546 0x86, 0x6b, 0x48, 0xb7, 0x42, 0x07, 0x00,
547 0x86, 0x6b, 0x49, 0xb6, 0x43, 0x07, 0x00,
548 0x86, 0x6b, 0x18, 0xe7, 0x44, 0x07, 0x00,
549 0x86, 0x6b, 0x23, 0xdc, 0x45, 0x07, 0x00,
552 /* AverMedia Volar X */
553 static struct dvb_usb_rc_key af9015_rc_keys_avermedia
[] = {
554 { 0x053d, KEY_PROG1
}, /* SOURCE */
555 { 0x0512, KEY_POWER
}, /* POWER */
556 { 0x051e, KEY_1
}, /* 1 */
557 { 0x051f, KEY_2
}, /* 2 */
558 { 0x0520, KEY_3
}, /* 3 */
559 { 0x0521, KEY_4
}, /* 4 */
560 { 0x0522, KEY_5
}, /* 5 */
561 { 0x0523, KEY_6
}, /* 6 */
562 { 0x0524, KEY_7
}, /* 7 */
563 { 0x0525, KEY_8
}, /* 8 */
564 { 0x0526, KEY_9
}, /* 9 */
565 { 0x053f, KEY_LEFT
}, /* L / DISPLAY */
566 { 0x0527, KEY_0
}, /* 0 */
567 { 0x050f, KEY_RIGHT
}, /* R / CH RTN */
568 { 0x0518, KEY_PROG2
}, /* SNAP SHOT */
569 { 0x051c, KEY_PROG3
}, /* 16-CH PREV */
570 { 0x052d, KEY_VOLUMEDOWN
}, /* VOL DOWN */
571 { 0x053e, KEY_ZOOM
}, /* FULL SCREEN */
572 { 0x052e, KEY_VOLUMEUP
}, /* VOL UP */
573 { 0x0510, KEY_MUTE
}, /* MUTE */
574 { 0x0504, KEY_AUDIO
}, /* AUDIO */
575 { 0x0515, KEY_RECORD
}, /* RECORD */
576 { 0x0511, KEY_PLAY
}, /* PLAY */
577 { 0x0516, KEY_STOP
}, /* STOP */
578 { 0x050c, KEY_PLAYPAUSE
}, /* TIMESHIFT / PAUSE */
579 { 0x0505, KEY_BACK
}, /* << / RED */
580 { 0x0509, KEY_FORWARD
}, /* >> / YELLOW */
581 { 0x0517, KEY_TEXT
}, /* TELETEXT */
582 { 0x050a, KEY_EPG
}, /* EPG */
583 { 0x0513, KEY_MENU
}, /* MENU */
585 { 0x050e, KEY_CHANNELUP
}, /* CH UP */
586 { 0x050d, KEY_CHANNELDOWN
}, /* CH DOWN */
587 { 0x0519, KEY_FIRST
}, /* |<< / GREEN */
588 { 0x0508, KEY_LAST
}, /* >>| / BLUE */
591 static u8 af9015_ir_table_avermedia
[] = {
592 0x02, 0xfd, 0x00, 0xff, 0x12, 0x05, 0x00,
593 0x02, 0xfd, 0x01, 0xfe, 0x3d, 0x05, 0x00,
594 0x02, 0xfd, 0x03, 0xfc, 0x17, 0x05, 0x00,
595 0x02, 0xfd, 0x04, 0xfb, 0x0a, 0x05, 0x00,
596 0x02, 0xfd, 0x05, 0xfa, 0x1e, 0x05, 0x00,
597 0x02, 0xfd, 0x06, 0xf9, 0x1f, 0x05, 0x00,
598 0x02, 0xfd, 0x07, 0xf8, 0x20, 0x05, 0x00,
599 0x02, 0xfd, 0x09, 0xf6, 0x21, 0x05, 0x00,
600 0x02, 0xfd, 0x0a, 0xf5, 0x22, 0x05, 0x00,
601 0x02, 0xfd, 0x0b, 0xf4, 0x23, 0x05, 0x00,
602 0x02, 0xfd, 0x0d, 0xf2, 0x24, 0x05, 0x00,
603 0x02, 0xfd, 0x0e, 0xf1, 0x25, 0x05, 0x00,
604 0x02, 0xfd, 0x0f, 0xf0, 0x26, 0x05, 0x00,
605 0x02, 0xfd, 0x11, 0xee, 0x27, 0x05, 0x00,
606 0x02, 0xfd, 0x08, 0xf7, 0x04, 0x05, 0x00,
607 0x02, 0xfd, 0x0c, 0xf3, 0x3e, 0x05, 0x00,
608 0x02, 0xfd, 0x10, 0xef, 0x1c, 0x05, 0x00,
609 0x02, 0xfd, 0x12, 0xed, 0x3f, 0x05, 0x00,
610 0x02, 0xfd, 0x13, 0xec, 0x0f, 0x05, 0x00,
611 0x02, 0xfd, 0x14, 0xeb, 0x10, 0x05, 0x00,
612 0x02, 0xfd, 0x15, 0xea, 0x13, 0x05, 0x00,
613 0x02, 0xfd, 0x17, 0xe8, 0x18, 0x05, 0x00,
614 0x02, 0xfd, 0x18, 0xe7, 0x11, 0x05, 0x00,
615 0x02, 0xfd, 0x19, 0xe6, 0x15, 0x05, 0x00,
616 0x02, 0xfd, 0x1a, 0xe5, 0x0c, 0x05, 0x00,
617 0x02, 0xfd, 0x1b, 0xe4, 0x16, 0x05, 0x00,
618 0x02, 0xfd, 0x1c, 0xe3, 0x09, 0x05, 0x00,
619 0x02, 0xfd, 0x1d, 0xe2, 0x05, 0x05, 0x00,
620 0x02, 0xfd, 0x1e, 0xe1, 0x2d, 0x05, 0x00,
621 0x02, 0xfd, 0x1f, 0xe0, 0x2e, 0x05, 0x00,
622 0x03, 0xfc, 0x00, 0xff, 0x08, 0x05, 0x00,
623 0x03, 0xfc, 0x01, 0xfe, 0x19, 0x05, 0x00,
624 0x03, 0xfc, 0x02, 0xfd, 0x0d, 0x05, 0x00,
625 0x03, 0xfc, 0x03, 0xfc, 0x0e, 0x05, 0x00,
628 static u8 af9015_ir_table_avermedia_ks
[] = {
629 0x05, 0xfa, 0x01, 0xfe, 0x12, 0x05, 0x00,
630 0x05, 0xfa, 0x02, 0xfd, 0x0e, 0x05, 0x00,
631 0x05, 0xfa, 0x03, 0xfc, 0x0d, 0x05, 0x00,
632 0x05, 0xfa, 0x04, 0xfb, 0x2e, 0x05, 0x00,
633 0x05, 0xfa, 0x05, 0xfa, 0x2d, 0x05, 0x00,
634 0x05, 0xfa, 0x06, 0xf9, 0x10, 0x05, 0x00,
635 0x05, 0xfa, 0x07, 0xf8, 0x0f, 0x05, 0x00,
636 0x05, 0xfa, 0x08, 0xf7, 0x3d, 0x05, 0x00,
637 0x05, 0xfa, 0x09, 0xf6, 0x1e, 0x05, 0x00,
638 0x05, 0xfa, 0x0a, 0xf5, 0x1f, 0x05, 0x00,
639 0x05, 0xfa, 0x0b, 0xf4, 0x20, 0x05, 0x00,
640 0x05, 0xfa, 0x0c, 0xf3, 0x21, 0x05, 0x00,
641 0x05, 0xfa, 0x0d, 0xf2, 0x22, 0x05, 0x00,
642 0x05, 0xfa, 0x0e, 0xf1, 0x23, 0x05, 0x00,
643 0x05, 0xfa, 0x0f, 0xf0, 0x24, 0x05, 0x00,
644 0x05, 0xfa, 0x10, 0xef, 0x25, 0x05, 0x00,
645 0x05, 0xfa, 0x11, 0xee, 0x26, 0x05, 0x00,
646 0x05, 0xfa, 0x12, 0xed, 0x27, 0x05, 0x00,
647 0x05, 0xfa, 0x13, 0xec, 0x04, 0x05, 0x00,
648 0x05, 0xfa, 0x15, 0xea, 0x0a, 0x05, 0x00,
649 0x05, 0xfa, 0x16, 0xe9, 0x11, 0x05, 0x00,
650 0x05, 0xfa, 0x17, 0xe8, 0x15, 0x05, 0x00,
651 0x05, 0xfa, 0x18, 0xe7, 0x16, 0x05, 0x00,
652 0x05, 0xfa, 0x1c, 0xe3, 0x05, 0x05, 0x00,
653 0x05, 0xfa, 0x1d, 0xe2, 0x09, 0x05, 0x00,
654 0x05, 0xfa, 0x4d, 0xb2, 0x3f, 0x05, 0x00,
655 0x05, 0xfa, 0x56, 0xa9, 0x3e, 0x05, 0x00
658 /* Digittrade DVB-T USB Stick */
659 static struct dvb_usb_rc_key af9015_rc_keys_digittrade
[] = {
660 { 0x010f, KEY_LAST
}, /* RETURN */
661 { 0x0517, KEY_TEXT
}, /* TELETEXT */
662 { 0x0108, KEY_EPG
}, /* EPG */
663 { 0x0513, KEY_POWER
}, /* POWER */
664 { 0x0109, KEY_ZOOM
}, /* FULLSCREEN */
665 { 0x0040, KEY_AUDIO
}, /* DUAL SOUND */
666 { 0x002c, KEY_PRINT
}, /* SNAPSHOT */
667 { 0x0516, KEY_SUBTITLE
}, /* SUBTITLE */
668 { 0x0052, KEY_CHANNELUP
}, /* CH Up */
669 { 0x0051, KEY_CHANNELDOWN
},/* Ch Dn */
670 { 0x0057, KEY_VOLUMEUP
}, /* Vol Up */
671 { 0x0056, KEY_VOLUMEDOWN
}, /* Vol Dn */
672 { 0x0110, KEY_MUTE
}, /* MUTE */
683 { 0x0117, KEY_PLAYPAUSE
}, /* TIMESHIFT */
684 { 0x0115, KEY_RECORD
}, /* RECORD */
685 { 0x0313, KEY_PLAY
}, /* PLAY */
686 { 0x0116, KEY_STOP
}, /* STOP */
687 { 0x0113, KEY_PAUSE
}, /* PAUSE */
690 static u8 af9015_ir_table_digittrade
[] = {
691 0x00, 0xff, 0x06, 0xf9, 0x13, 0x05, 0x00,
692 0x00, 0xff, 0x4d, 0xb2, 0x17, 0x01, 0x00,
693 0x00, 0xff, 0x1f, 0xe0, 0x2c, 0x00, 0x00,
694 0x00, 0xff, 0x0a, 0xf5, 0x15, 0x01, 0x00,
695 0x00, 0xff, 0x0e, 0xf1, 0x16, 0x01, 0x00,
696 0x00, 0xff, 0x09, 0xf6, 0x09, 0x01, 0x00,
697 0x00, 0xff, 0x01, 0xfe, 0x08, 0x01, 0x00,
698 0x00, 0xff, 0x05, 0xfa, 0x10, 0x01, 0x00,
699 0x00, 0xff, 0x02, 0xfd, 0x56, 0x00, 0x00,
700 0x00, 0xff, 0x40, 0xbf, 0x57, 0x00, 0x00,
701 0x00, 0xff, 0x19, 0xe6, 0x52, 0x00, 0x00,
702 0x00, 0xff, 0x17, 0xe8, 0x51, 0x00, 0x00,
703 0x00, 0xff, 0x10, 0xef, 0x0f, 0x01, 0x00,
704 0x00, 0xff, 0x54, 0xab, 0x27, 0x00, 0x00,
705 0x00, 0xff, 0x1b, 0xe4, 0x1e, 0x00, 0x00,
706 0x00, 0xff, 0x11, 0xee, 0x1f, 0x00, 0x00,
707 0x00, 0xff, 0x15, 0xea, 0x20, 0x00, 0x00,
708 0x00, 0xff, 0x12, 0xed, 0x21, 0x00, 0x00,
709 0x00, 0xff, 0x16, 0xe9, 0x22, 0x00, 0x00,
710 0x00, 0xff, 0x4c, 0xb3, 0x23, 0x00, 0x00,
711 0x00, 0xff, 0x48, 0xb7, 0x24, 0x00, 0x00,
712 0x00, 0xff, 0x04, 0xfb, 0x25, 0x00, 0x00,
713 0x00, 0xff, 0x00, 0xff, 0x26, 0x00, 0x00,
714 0x00, 0xff, 0x1e, 0xe1, 0x13, 0x03, 0x00,
715 0x00, 0xff, 0x1a, 0xe5, 0x13, 0x01, 0x00,
716 0x00, 0xff, 0x03, 0xfc, 0x17, 0x05, 0x00,
717 0x00, 0xff, 0x0d, 0xf2, 0x16, 0x05, 0x00,
718 0x00, 0xff, 0x1d, 0xe2, 0x40, 0x00, 0x00,
721 /* TREKSTOR DVB-T USB Stick */
722 static struct dvb_usb_rc_key af9015_rc_keys_trekstor
[] = {
723 { 0x0704, KEY_AGAIN
}, /* Home */
724 { 0x0705, KEY_MUTE
}, /* Mute */
725 { 0x0706, KEY_UP
}, /* Up */
726 { 0x0707, KEY_DOWN
}, /* Down */
727 { 0x0709, KEY_RIGHT
}, /* Right */
728 { 0x070a, KEY_ENTER
}, /* OK */
729 { 0x070b, KEY_FASTFORWARD
}, /* Fast forward */
730 { 0x070c, KEY_REWIND
}, /* Rewind */
731 { 0x070d, KEY_PLAY
}, /* Play/Pause */
732 { 0x070e, KEY_VOLUMEUP
}, /* Volume + */
733 { 0x070f, KEY_VOLUMEDOWN
}, /* Volume - */
734 { 0x0710, KEY_RECORD
}, /* Record */
735 { 0x0711, KEY_STOP
}, /* Stop */
736 { 0x0712, KEY_ZOOM
}, /* TV */
737 { 0x0713, KEY_EPG
}, /* Info/EPG */
738 { 0x0714, KEY_CHANNELDOWN
}, /* Channel - */
739 { 0x0715, KEY_CHANNELUP
}, /* Channel + */
749 { 0x0708, KEY_LEFT
}, /* LEFT */
753 static u8 af9015_ir_table_trekstor
[] = {
754 0x00, 0xff, 0x86, 0x79, 0x04, 0x07, 0x00,
755 0x00, 0xff, 0x85, 0x7a, 0x05, 0x07, 0x00,
756 0x00, 0xff, 0x87, 0x78, 0x06, 0x07, 0x00,
757 0x00, 0xff, 0x8c, 0x73, 0x07, 0x07, 0x00,
758 0x00, 0xff, 0x89, 0x76, 0x09, 0x07, 0x00,
759 0x00, 0xff, 0x88, 0x77, 0x0a, 0x07, 0x00,
760 0x00, 0xff, 0x8a, 0x75, 0x0b, 0x07, 0x00,
761 0x00, 0xff, 0x9e, 0x61, 0x0c, 0x07, 0x00,
762 0x00, 0xff, 0x8d, 0x72, 0x0d, 0x07, 0x00,
763 0x00, 0xff, 0x8b, 0x74, 0x0e, 0x07, 0x00,
764 0x00, 0xff, 0x9b, 0x64, 0x0f, 0x07, 0x00,
765 0x00, 0xff, 0x9d, 0x62, 0x10, 0x07, 0x00,
766 0x00, 0xff, 0x8e, 0x71, 0x11, 0x07, 0x00,
767 0x00, 0xff, 0x9c, 0x63, 0x12, 0x07, 0x00,
768 0x00, 0xff, 0x8f, 0x70, 0x13, 0x07, 0x00,
769 0x00, 0xff, 0x93, 0x6c, 0x14, 0x07, 0x00,
770 0x00, 0xff, 0x97, 0x68, 0x15, 0x07, 0x00,
771 0x00, 0xff, 0x92, 0x6d, 0x1e, 0x07, 0x00,
772 0x00, 0xff, 0x96, 0x69, 0x1f, 0x07, 0x00,
773 0x00, 0xff, 0x9a, 0x65, 0x20, 0x07, 0x00,
774 0x00, 0xff, 0x91, 0x6e, 0x21, 0x07, 0x00,
775 0x00, 0xff, 0x95, 0x6a, 0x22, 0x07, 0x00,
776 0x00, 0xff, 0x99, 0x66, 0x23, 0x07, 0x00,
777 0x00, 0xff, 0x90, 0x6f, 0x24, 0x07, 0x00,
778 0x00, 0xff, 0x94, 0x6b, 0x25, 0x07, 0x00,
779 0x00, 0xff, 0x98, 0x67, 0x26, 0x07, 0x00,
780 0x00, 0xff, 0x9f, 0x60, 0x08, 0x07, 0x00,
781 0x00, 0xff, 0x84, 0x7b, 0x27, 0x07, 0x00,
784 /* MSI DIGIVOX mini III */
785 static struct dvb_usb_rc_key af9015_rc_keys_msi_digivox_iii
[] = {
786 { 0x0713, KEY_POWER
}, /* [red power button] */
787 { 0x073b, KEY_VIDEO
}, /* Source */
788 { 0x073e, KEY_ZOOM
}, /* Zoom */
789 { 0x070b, KEY_POWER2
}, /* ShutDown */
800 { 0x0752, KEY_CHANNELUP
}, /* CH+ */
801 { 0x0751, KEY_CHANNELDOWN
}, /* CH- */
802 { 0x0750, KEY_VOLUMEUP
}, /* Vol+ */
803 { 0x074f, KEY_VOLUMEDOWN
}, /* Vol- */
804 { 0x0705, KEY_ESC
}, /* [back up arrow] */
805 { 0x0708, KEY_OK
}, /* [enter arrow] */
806 { 0x073f, KEY_RECORD
}, /* Rec */
807 { 0x0716, KEY_STOP
}, /* Stop */
808 { 0x072a, KEY_PLAY
}, /* Play */
809 { 0x073c, KEY_MUTE
}, /* Mute */
811 { 0x0707, KEY_DOWN
},
812 { 0x070f, KEY_LEFT
},
813 { 0x0715, KEY_RIGHT
},
815 { 0x0737, KEY_GREEN
},
816 { 0x072d, KEY_YELLOW
},
817 { 0x072e, KEY_BLUE
},
820 static u8 af9015_ir_table_msi_digivox_iii
[] = {
821 0x61, 0xd6, 0x43, 0xbc, 0x13, 0x07, 0x00, /* KEY_POWER */
822 0x61, 0xd6, 0x01, 0xfe, 0x3b, 0x07, 0x00, /* KEY_VIDEO */
823 0x61, 0xd6, 0x0b, 0xf4, 0x3e, 0x07, 0x00, /* KEY_ZOOM */
824 0x61, 0xd6, 0x03, 0xfc, 0x0b, 0x07, 0x00, /* KEY_POWER2 */
825 0x61, 0xd6, 0x04, 0xfb, 0x1e, 0x07, 0x00, /* KEY_1 */
826 0x61, 0xd6, 0x08, 0xf7, 0x1f, 0x07, 0x00, /* KEY_2 */
827 0x61, 0xd6, 0x02, 0xfd, 0x20, 0x07, 0x00, /* KEY_3 */
828 0x61, 0xd6, 0x0f, 0xf0, 0x21, 0x07, 0x00, /* KEY_4 */
829 0x61, 0xd6, 0x05, 0xfa, 0x22, 0x07, 0x00, /* KEY_5 */
830 0x61, 0xd6, 0x06, 0xf9, 0x23, 0x07, 0x00, /* KEY_6 */
831 0x61, 0xd6, 0x0c, 0xf3, 0x24, 0x07, 0x00, /* KEY_7 */
832 0x61, 0xd6, 0x0d, 0xf2, 0x25, 0x07, 0x00, /* KEY_8 */
833 0x61, 0xd6, 0x0a, 0xf5, 0x26, 0x07, 0x00, /* KEY_9 */
834 0x61, 0xd6, 0x11, 0xee, 0x27, 0x07, 0x00, /* KEY_0 */
835 0x61, 0xd6, 0x09, 0xf6, 0x52, 0x07, 0x00, /* KEY_CHANNELUP */
836 0x61, 0xd6, 0x07, 0xf8, 0x51, 0x07, 0x00, /* KEY_CHANNELDOWN */
837 0x61, 0xd6, 0x0e, 0xf1, 0x50, 0x07, 0x00, /* KEY_VOLUMEUP */
838 0x61, 0xd6, 0x13, 0xec, 0x4f, 0x07, 0x00, /* KEY_VOLUMEDOWN */
839 0x61, 0xd6, 0x10, 0xef, 0x05, 0x07, 0x00, /* KEY_ESC */
840 0x61, 0xd6, 0x12, 0xed, 0x08, 0x07, 0x00, /* KEY_OK */
841 0x61, 0xd6, 0x14, 0xeb, 0x3f, 0x07, 0x00, /* KEY_RECORD */
842 0x61, 0xd6, 0x15, 0xea, 0x16, 0x07, 0x00, /* KEY_STOP */
843 0x61, 0xd6, 0x16, 0xe9, 0x2a, 0x07, 0x00, /* KEY_PLAY */
844 0x61, 0xd6, 0x17, 0xe8, 0x3c, 0x07, 0x00, /* KEY_MUTE */
845 0x61, 0xd6, 0x18, 0xe7, 0x18, 0x07, 0x00, /* KEY_UP */
846 0x61, 0xd6, 0x19, 0xe6, 0x07, 0x07, 0x00, /* KEY_DOWN */
847 0x61, 0xd6, 0x1a, 0xe5, 0x0f, 0x07, 0x00, /* KEY_LEFT */
848 0x61, 0xd6, 0x1b, 0xe4, 0x15, 0x07, 0x00, /* KEY_RIGHT */
849 0x61, 0xd6, 0x1c, 0xe3, 0x36, 0x07, 0x00, /* KEY_RED */
850 0x61, 0xd6, 0x1d, 0xe2, 0x37, 0x07, 0x00, /* KEY_GREEN */
851 0x61, 0xd6, 0x1e, 0xe1, 0x2d, 0x07, 0x00, /* KEY_YELLOW */
852 0x61, 0xd6, 0x1f, 0xe0, 0x2e, 0x07, 0x00, /* KEY_BLUE */