af9015.h 27 KB

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