aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/af9015.h
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2010-09-12 12:31:56 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-20 23:05:52 -0400
commitd3bb73de97a9685bb150f81017d7e184fdb18451 (patch)
treed551bf4cd3710e678dabff7a19283fca0a9632a7 /drivers/media/dvb/dvb-usb/af9015.h
parent2ec01b41e3e06bd22d8f6c7f330605b554e9b121 (diff)
V4L/DVB: af9015: reimplement remote controller
Remove HID and polling via firmware API. Implement direct access to remote codes via memory read and write. HID and polling via firmware api never worked 100% well and there was also some limitations which tied used remote and device together. After that it is possible to use upcoming kernel remote controller core. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/af9015.h')
-rw-r--r--drivers/media/dvb/dvb-usb/af9015.h1142
1 files changed, 382 insertions, 760 deletions
diff --git a/drivers/media/dvb/dvb-usb/af9015.h b/drivers/media/dvb/dvb-usb/af9015.h
index ab5de92d3f2e..948e50b47ae1 100644
--- a/drivers/media/dvb/dvb-usb/af9015.h
+++ b/drivers/media/dvb/dvb-usb/af9015.h
@@ -100,6 +100,7 @@ enum af9015_ir_mode {
100 100
101struct af9015_state { 101struct af9015_state {
102 struct i2c_adapter i2c_adap; /* I2C adapter for 2nd FE */ 102 struct i2c_adapter i2c_adap; /* I2C adapter for 2nd FE */
103 u8 rc_repeat;
103}; 104};
104 105
105struct af9015_config { 106struct af9015_config {
@@ -108,8 +109,6 @@ struct af9015_config {
108 u16 firmware_size; 109 u16 firmware_size;
109 u16 firmware_checksum; 110 u16 firmware_checksum;
110 u32 eeprom_sum; 111 u32 eeprom_sum;
111 u8 *ir_table;
112 u16 ir_table_size;
113}; 112};
114 113
115enum af9015_remote { 114enum af9015_remote {
@@ -123,796 +122,419 @@ enum af9015_remote {
123 122
124/* LeadTek - Y04G0051 */ 123/* LeadTek - Y04G0051 */
125/* Leadtek WinFast DTV Dongle Gold */ 124/* Leadtek WinFast DTV Dongle Gold */
126static struct ir_scancode ir_codes_af9015_table_leadtek[] = { 125static struct ir_scancode af9015_rc_leadtek[] = {
127 { 0x001e, KEY_1 }, 126 { 0x0300, KEY_POWER2 },
128 { 0x001f, KEY_2 }, 127 { 0x0303, KEY_SCREEN },
129 { 0x0020, KEY_3 }, 128 { 0x0304, KEY_RIGHT },
130 { 0x0021, KEY_4 }, 129 { 0x0305, KEY_1 },
131 { 0x0022, KEY_5 }, 130 { 0x0306, KEY_2 },
132 { 0x0023, KEY_6 }, 131 { 0x0307, KEY_3 },
133 { 0x0024, KEY_7 }, 132 { 0x0308, KEY_LEFT },
134 { 0x0025, KEY_8 }, 133 { 0x0309, KEY_4 },
135 { 0x0026, KEY_9 }, 134 { 0x030a, KEY_5 },
136 { 0x0027, KEY_0 }, 135 { 0x030b, KEY_6 },
137 { 0x0028, KEY_OK }, 136 { 0x030c, KEY_UP },
138 { 0x004f, KEY_RIGHT }, 137 { 0x030d, KEY_7 },
139 { 0x0050, KEY_LEFT }, 138 { 0x030e, KEY_8 },
140 { 0x0051, KEY_DOWN }, 139 { 0x030f, KEY_9 },
141 { 0x0052, KEY_UP }, 140 { 0x0310, KEY_DOWN },
142 { 0x011a, KEY_POWER2 }, 141 { 0x0311, KEY_AGAIN },
143 { 0x04b4, KEY_TV }, 142 { 0x0312, KEY_0 },
144 { 0x04b3, KEY_RED }, 143 { 0x0313, KEY_OK }, /* 1st ok */
145 { 0x04b2, KEY_GREEN }, 144 { 0x0314, KEY_MUTE },
146 { 0x04b1, KEY_YELLOW }, 145 { 0x0316, KEY_OK }, /* 2nd ok */
147 { 0x04b0, KEY_BLUE }, 146 { 0x031e, KEY_VIDEO }, /* 2nd video */
148 { 0x003d, KEY_TEXT }, 147 { 0x031b, KEY_AUDIO },
149 { 0x0113, KEY_SLEEP }, 148 { 0x031f, KEY_TEXT },
150 { 0x0010, KEY_MUTE }, 149 { 0x0340, KEY_SLEEP },
151 { 0x0105, KEY_ESC }, 150 { 0x0341, KEY_DOT },
152 { 0x0009, KEY_SCREEN }, 151 { 0x0342, KEY_REWIND },
153 { 0x010f, KEY_MENU }, 152 { 0x0343, KEY_PLAY },
154 { 0x003f, KEY_CHANNEL }, 153 { 0x0344, KEY_FASTFORWARD },
155 { 0x0013, KEY_REWIND }, 154 { 0x0345, KEY_TIME },
156 { 0x0012, KEY_PLAY }, 155 { 0x0346, KEY_STOP }, /* 2nd stop */
157 { 0x0011, KEY_FASTFORWARD }, 156 { 0x0347, KEY_RECORD },
158 { 0x0005, KEY_PREVIOUS }, 157 { 0x0348, KEY_CAMERA },
159 { 0x0029, KEY_STOP }, 158 { 0x0349, KEY_ESC },
160 { 0x002b, KEY_NEXT }, 159 { 0x034a, KEY_NEW },
161 { 0x0041, KEY_EPG }, 160 { 0x034b, KEY_RED },
162 { 0x0019, KEY_VIDEO }, 161 { 0x034c, KEY_GREEN },
163 { 0x0016, KEY_AUDIO }, 162 { 0x034d, KEY_YELLOW },
164 { 0x0037, KEY_DOT }, 163 { 0x034e, KEY_BLUE },
165 { 0x002a, KEY_AGAIN }, 164 { 0x034f, KEY_MENU },
166 { 0x002c, KEY_CAMERA }, 165 { 0x0350, KEY_STOP }, /* 1st stop */
167 { 0x003c, KEY_NEW }, 166 { 0x0351, KEY_CHANNEL },
168 { 0x0115, KEY_RECORD }, 167 { 0x0352, KEY_VIDEO }, /* 1st video */
169 { 0x010b, KEY_TIME }, 168 { 0x0353, KEY_EPG },
170 { 0x0043, KEY_VOLUMEUP }, 169 { 0x0354, KEY_PREVIOUS },
171 { 0x0042, KEY_VOLUMEDOWN }, 170 { 0x0355, KEY_NEXT },
172 { 0x004b, KEY_CHANNELUP }, 171 { 0x0356, KEY_TV },
173 { 0x004e, KEY_CHANNELDOWN }, 172 { 0x035a, KEY_VOLUMEDOWN },
174}; 173 { 0x035b, KEY_CHANNELUP },
175 174 { 0x035e, KEY_VOLUMEUP },
176static u8 af9015_ir_table_leadtek[] = { 175 { 0x035f, KEY_CHANNELDOWN },
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 */
227}; 176};
228 177
229/* TwinHan AzureWave AD-TU700(704J) */ 178/* TwinHan AzureWave AD-TU700(704J) */
230static struct ir_scancode ir_codes_af9015_table_twinhan[] = { 179static struct ir_scancode af9015_rc_twinhan[] = {
231 { 0x053f, KEY_POWER }, 180 { 0x0000, KEY_TAB }, /* Tab */
232 { 0x0019, KEY_FAVORITES }, /* Favorite List */ 181 { 0x0001, KEY_2 },
233 { 0x0004, KEY_TEXT }, /* Teletext */ 182 { 0x0002, KEY_CHANNELDOWN },
234 { 0x000e, KEY_POWER }, 183 { 0x0003, KEY_1 },
235 { 0x000e, KEY_INFO }, /* Preview */ 184 { 0x0004, KEY_LIST }, /* Record List */
236 { 0x0008, KEY_EPG }, /* Info/EPG */ 185 { 0x0005, KEY_CHANNELUP },
237 { 0x000f, KEY_LIST }, /* Record List */ 186 { 0x0006, KEY_3 },
238 { 0x001e, KEY_1 }, 187 { 0x0007, KEY_SLEEP }, /* Hibernate */
239 { 0x001f, KEY_2 }, 188 { 0x0008, KEY_SWITCHVIDEOMODE }, /* A/V */
240 { 0x0020, KEY_3 }, 189 { 0x0009, KEY_4 },
241 { 0x0021, KEY_4 }, 190 { 0x000a, KEY_VOLUMEDOWN },
242 { 0x0022, KEY_5 }, 191 { 0x000c, KEY_CANCEL }, /* Cancel */
243 { 0x0023, KEY_6 }, 192 { 0x000d, KEY_7 },
244 { 0x0024, KEY_7 }, 193 { 0x000e, KEY_AGAIN }, /* Recall */
245 { 0x0025, KEY_8 }, 194 { 0x000f, KEY_TEXT }, /* Teletext */
246 { 0x0026, KEY_9 },
247 { 0x0027, KEY_0 },
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 }, 195 { 0x0010, KEY_MUTE },
274 { 0x0119, KEY_AUDIO }, /* L/R */ /* TODO better event */ 196 { 0x0011, KEY_RECORD },
275 { 0x0116, KEY_SLEEP }, /* Hibernate */ 197 { 0x0012, KEY_FASTFORWARD }, /* FF >> */
276 { 0x0116, KEY_SWITCHVIDEOMODE }, 198 { 0x0013, KEY_BACK }, /* Back */
277 /* A/V */ /* TODO does not work */ 199 { 0x0014, KEY_PLAY },
278 { 0x0006, KEY_AGAIN }, /* Recall */ 200 { 0x0015, KEY_0 },
279 { 0x0116, KEY_KPPLUS }, /* Zoom+ */ /* TODO does not work */ 201 { 0x0016, KEY_POWER },
280 { 0x0116, KEY_KPMINUS }, /* Zoom- */ /* TODO does not work */ 202 { 0x0017, KEY_FAVORITES }, /* Favorite List */
281 { 0x0215, KEY_RED }, 203 { 0x0018, KEY_RED },
282 { 0x020a, KEY_GREEN }, 204 { 0x0019, KEY_8 },
283 { 0x021c, KEY_YELLOW }, 205 { 0x001a, KEY_STOP },
284 { 0x0205, KEY_BLUE }, 206 { 0x001b, KEY_9 },
285}; 207 { 0x001c, KEY_EPG }, /* Info/EPG */
286 208 { 0x001d, KEY_5 },
287static u8 af9015_ir_table_twinhan[] = { 209 { 0x001e, KEY_VOLUMEUP },
288 0x00, 0xff, 0x16, 0xe9, 0x3f, 0x05, 0x00, 210 { 0x001f, KEY_6 },
289 0x00, 0xff, 0x07, 0xf8, 0x16, 0x01, 0x00, 211 { 0x0040, KEY_REWIND }, /* FR << */
290 0x00, 0xff, 0x14, 0xeb, 0x11, 0x01, 0x00, 212 { 0x0041, KEY_PREVIOUS }, /* Replay */
291 0x00, 0xff, 0x1a, 0xe5, 0x4d, 0x00, 0x00, 213 { 0x0042, KEY_NEXT }, /* Skip */
292 0x00, 0xff, 0x4c, 0xb3, 0x17, 0x00, 0x00, 214 { 0x0043, KEY_SUBTITLE }, /* Subtitle / CC */
293 0x00, 0xff, 0x12, 0xed, 0x11, 0x00, 0x00, 215 { 0x0045, KEY_KPPLUS }, /* Zoom+ */
294 0x00, 0xff, 0x40, 0xbf, 0x0c, 0x00, 0x00, 216 { 0x0046, KEY_KPMINUS }, /* Zoom- */
295 0x00, 0xff, 0x11, 0xee, 0x4a, 0x00, 0x00, 217 { 0x0047, KEY_TV2 }, /* PIP */
296 0x00, 0xff, 0x54, 0xab, 0x13, 0x00, 0x00, 218 { 0x0048, KEY_INFO }, /* Preview */
297 0x00, 0xff, 0x41, 0xbe, 0x15, 0x01, 0x00, 219 { 0x0049, KEY_AUDIO }, /* L/R */ /* TODO better event */
298 0x00, 0xff, 0x42, 0xbd, 0x0e, 0x01, 0x00, 220 { 0x004a, KEY_CLEAR }, /* Clear */
299 0x00, 0xff, 0x43, 0xbc, 0x17, 0x01, 0x00, 221 { 0x004b, KEY_UP }, /* up arrow */
300 0x00, 0xff, 0x50, 0xaf, 0x0f, 0x01, 0x00, 222 { 0x004c, KEY_PAUSE },
301 0x00, 0xff, 0x4d, 0xb2, 0x1d, 0x00, 0x00, 223 { 0x004d, KEY_ZOOM }, /* Full Screen */
302 0x00, 0xff, 0x47, 0xb8, 0x13, 0x01, 0x00, 224 { 0x004e, KEY_LEFT }, /* left arrow */
303 0x00, 0xff, 0x05, 0xfa, 0x4b, 0x00, 0x00, 225 { 0x004f, KEY_ENTER }, /* Enter / ok */
304 0x00, 0xff, 0x02, 0xfd, 0x4e, 0x00, 0x00, 226 { 0x0050, KEY_LANGUAGE }, /* SAP */
305 0x00, 0xff, 0x0e, 0xf1, 0x06, 0x00, 0x00, 227 { 0x0051, KEY_DOWN }, /* down arrow */
306 0x00, 0xff, 0x1e, 0xe1, 0x52, 0x02, 0x00, 228 { 0x0052, KEY_RIGHT }, /* right arrow */
307 0x00, 0xff, 0x0a, 0xf5, 0x51, 0x02, 0x00, 229 { 0x0053, KEY_GREEN },
308 0x00, 0xff, 0x10, 0xef, 0x10, 0x00, 0x00, 230 { 0x0054, KEY_CAMERA }, /* Capture */
309 0x00, 0xff, 0x49, 0xb6, 0x19, 0x01, 0x00, 231 { 0x005e, KEY_YELLOW },
310 0x00, 0xff, 0x15, 0xea, 0x27, 0x00, 0x00, 232 { 0x005f, KEY_BLUE },
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,
338};
339
340/* A-Link DTU(m) */
341static struct ir_scancode ir_codes_af9015_table_a_link[] = {
342 { 0x001e, KEY_1 },
343 { 0x001f, KEY_2 },
344 { 0x0020, KEY_3 },
345 { 0x0021, KEY_4 },
346 { 0x0022, KEY_5 },
347 { 0x0023, KEY_6 },
348 { 0x0024, KEY_7 },
349 { 0x0025, KEY_8 },
350 { 0x0026, KEY_9 },
351 { 0x0027, KEY_0 },
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 },
360}; 233};
361 234
362static u8 af9015_ir_table_a_link[] = { 235/* A-Link DTU(m) - 3x6 slim remote */
363 0x08, 0xf7, 0x12, 0xed, 0x45, 0x05, 0x00, /* power */ 236static struct ir_scancode af9015_rc_a_link[] = {
364 0x08, 0xf7, 0x1a, 0xe5, 0x41, 0x00, 0x00, /* mute */ 237 { 0x0800, KEY_VOLUMEUP },
365 0x08, 0xf7, 0x01, 0xfe, 0x1e, 0x00, 0x00, /* 1 */ 238 { 0x0801, KEY_1 },
366 0x08, 0xf7, 0x1c, 0xe3, 0x21, 0x00, 0x00, /* 4 */ 239 { 0x0802, KEY_3 },
367 0x08, 0xf7, 0x03, 0xfc, 0x24, 0x00, 0x00, /* 7 */ 240 { 0x0803, KEY_7 },
368 0x08, 0xf7, 0x05, 0xfa, 0x28, 0x04, 0x00, /* zoom */ 241 { 0x0804, KEY_9 },
369 0x08, 0xf7, 0x00, 0xff, 0x43, 0x00, 0x00, /* volume up */ 242 { 0x0805, KEY_ZOOM },
370 0x08, 0xf7, 0x16, 0xe9, 0x42, 0x00, 0x00, /* volume down */ 243 { 0x0806, KEY_0 },
371 0x08, 0xf7, 0x0f, 0xf0, 0x1f, 0x00, 0x00, /* 2 */ 244 { 0x0807, KEY_GOTO }, /* jump */
372 0x08, 0xf7, 0x0d, 0xf2, 0x22, 0x00, 0x00, /* 5 */ 245 { 0x080d, KEY_5 },
373 0x08, 0xf7, 0x1b, 0xe4, 0x25, 0x00, 0x00, /* 8 */ 246 { 0x080f, KEY_2 },
374 0x08, 0xf7, 0x06, 0xf9, 0x27, 0x00, 0x00, /* 0 */ 247 { 0x0812, KEY_POWER },
375 0x08, 0xf7, 0x14, 0xeb, 0x2e, 0x00, 0x00, /* channel up */ 248 { 0x0814, KEY_CHANNELUP },
376 0x08, 0xf7, 0x1d, 0xe2, 0x2d, 0x00, 0x00, /* channel down */ 249 { 0x0816, KEY_VOLUMEDOWN },
377 0x08, 0xf7, 0x02, 0xfd, 0x20, 0x00, 0x00, /* 3 */ 250 { 0x0818, KEY_6 },
378 0x08, 0xf7, 0x18, 0xe7, 0x23, 0x00, 0x00, /* 6 */ 251 { 0x081a, KEY_MUTE },
379 0x08, 0xf7, 0x04, 0xfb, 0x26, 0x00, 0x00, /* 9 */ 252 { 0x081b, KEY_8 },
380 0x08, 0xf7, 0x07, 0xf8, 0x44, 0x00, 0x00, /* jump */ 253 { 0x081c, KEY_4 },
254 { 0x081d, KEY_CHANNELDOWN },
381}; 255};
382 256
383/* MSI DIGIVOX mini II V3.0 */ 257/* MSI DIGIVOX mini II V3.0 */
384static struct ir_scancode ir_codes_af9015_table_msi[] = { 258static struct ir_scancode af9015_rc_msi[] = {
385 { 0x001e, KEY_1 }, 259 { 0x0002, KEY_2 },
386 { 0x001f, KEY_2 }, 260 { 0x0003, KEY_UP }, /* up */
387 { 0x0020, KEY_3 }, 261 { 0x0004, KEY_3 },
388 { 0x0021, KEY_4 }, 262 { 0x0005, KEY_CHANNELDOWN },
389 { 0x0022, KEY_5 }, 263 { 0x0008, KEY_5 },
390 { 0x0023, KEY_6 }, 264 { 0x0009, KEY_0 },
391 { 0x0024, KEY_7 }, 265 { 0x000b, KEY_8 },
392 { 0x0025, KEY_8 }, 266 { 0x000d, KEY_DOWN }, /* down */
393 { 0x0026, KEY_9 }, 267 { 0x0010, KEY_9 },
394 { 0x0027, KEY_0 }, 268 { 0x0011, KEY_7 },
395 { 0x030f, KEY_CHANNELUP }, 269 { 0x0014, KEY_VOLUMEUP },
396 { 0x030e, KEY_CHANNELDOWN }, 270 { 0x0015, KEY_CHANNELUP },
397 { 0x0042, KEY_VOLUMEDOWN }, 271 { 0x0016, KEY_ENTER },
398 { 0x0043, KEY_VOLUMEUP }, 272 { 0x0017, KEY_POWER },
399 { 0x0545, KEY_POWER }, 273 { 0x001a, KEY_1 },
400 { 0x0052, KEY_UP }, /* up */ 274 { 0x001c, KEY_4 },
401 { 0x0051, KEY_DOWN }, /* down */ 275 { 0x001d, KEY_6 },
402 { 0x0028, KEY_ENTER }, 276 { 0x001f, KEY_VOLUMEDOWN },
403};
404
405static 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 */
424}; 277};
425 278
426/* MYGICTV U718 */ 279/* MYGICTV U718 */
427static struct ir_scancode ir_codes_af9015_table_mygictv[] = { 280/* Uses NEC extended 0x02bd. Extended byte removed for compatibility... */
428 { 0x003d, KEY_SWITCHVIDEOMODE }, 281static struct ir_scancode af9015_rc_mygictv[] = {
429 /* TV / AV */ 282 { 0x0200, KEY_1 },
430 { 0x0545, KEY_POWER }, 283 { 0x0201, KEY_2 },
431 { 0x001e, KEY_1 }, 284 { 0x0202, KEY_3 },
432 { 0x001f, KEY_2 }, 285 { 0x0203, KEY_4 },
433 { 0x0020, KEY_3 }, 286 { 0x0204, KEY_5 },
434 { 0x0021, KEY_4 }, 287 { 0x0205, KEY_6 },
435 { 0x0022, KEY_5 }, 288 { 0x0206, KEY_7 },
436 { 0x0023, KEY_6 }, 289 { 0x0207, KEY_8 },
437 { 0x0024, KEY_7 }, 290 { 0x0208, KEY_9 },
438 { 0x0025, KEY_8 }, 291 { 0x0209, KEY_0 },
439 { 0x0026, KEY_9 }, 292 { 0x020a, KEY_MUTE },
440 { 0x0027, KEY_0 }, 293 { 0x020b, KEY_CYCLEWINDOWS }, /* yellow, min / max */
441 { 0x0041, KEY_MUTE }, 294 { 0x020c, KEY_SWITCHVIDEOMODE }, /* TV / AV */
442 { 0x002a, KEY_ESC }, /* Esc */ 295 { 0x020e, KEY_VOLUMEDOWN },
443 { 0x002e, KEY_CHANNELUP }, 296 { 0x020f, KEY_TIME }, /* TimeShift */
444 { 0x002d, KEY_CHANNELDOWN }, 297 { 0x0210, KEY_RIGHT }, /* right arrow */
445 { 0x0042, KEY_VOLUMEDOWN }, 298 { 0x0211, KEY_LEFT }, /* left arrow */
446 { 0x0043, KEY_VOLUMEUP }, 299 { 0x0212, KEY_UP }, /* up arrow */
447 { 0x0052, KEY_UP }, /* up arrow */ 300 { 0x0213, KEY_DOWN }, /* down arrow */
448 { 0x0051, KEY_DOWN }, /* down arrow */ 301 { 0x0214, KEY_POWER },
449 { 0x004f, KEY_RIGHT }, /* right arrow */ 302 { 0x0215, KEY_ENTER }, /* ok */
450 { 0x0050, KEY_LEFT }, /* left arrow */ 303 { 0x0216, KEY_STOP },
451 { 0x0028, KEY_ENTER }, /* ok */ 304 { 0x0217, KEY_CAMERA }, /* Snapshot */
452 { 0x0115, KEY_RECORD }, 305 { 0x0218, KEY_CHANNELUP },
453 { 0x0313, KEY_PLAY }, 306 { 0x0219, KEY_RECORD },
454 { 0x0113, KEY_PAUSE }, 307 { 0x021a, KEY_CHANNELDOWN },
455 { 0x0116, KEY_STOP }, 308 { 0x021c, KEY_ESC }, /* Esc */
456 { 0x0307, KEY_REWIND }, /* FR << */ 309 { 0x021e, KEY_PLAY },
457 { 0x0309, KEY_FASTFORWARD }, /* FF >> */ 310 { 0x021f, KEY_VOLUMEUP },
458 { 0x003b, KEY_TIME }, /* TimeShift */ 311 { 0x0240, KEY_PAUSE },
459 { 0x003e, KEY_CAMERA }, /* Snapshot */ 312 { 0x0241, KEY_FASTFORWARD }, /* FF >> */
460 { 0x0316, KEY_CYCLEWINDOWS }, /* yellow, min / max */ 313 { 0x0242, KEY_REWIND }, /* FR << */
461 { 0x0000, KEY_ZOOM }, /* 'select' (?) */ 314 { 0x0243, KEY_ZOOM }, /* 'select' (?) */
462 { 0x0316, KEY_SHUFFLE }, /* Shuffle */ 315 { 0x0244, KEY_SHUFFLE }, /* Shuffle */
463 { 0x0345, KEY_POWER }, 316 { 0x0245, KEY_POWER },
464};
465
466static 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 */
502}; 317};
503 318
504/* KWorld PlusTV Dual DVB-T Stick (DVB-T 399U) */ 319/* KWorld PlusTV Dual DVB-T Stick (DVB-T 399U) */
505static u8 af9015_ir_table_kworld[] = { 320/* FIXME: This mapping is totally incomplete and probably even wrong... */
506 0x86, 0x6b, 0x0c, 0xf3, 0x2e, 0x07, 0x00, 321/* Uses NEC extended 0x866b. Extended byte removed for compatibility... */
507 0x86, 0x6b, 0x16, 0xe9, 0x2d, 0x07, 0x00, 322static struct ir_scancode af9015_rc_kworld[] = {
508 0x86, 0x6b, 0x1d, 0xe2, 0x37, 0x07, 0x00, 323 { 0x8600, KEY_1 },
509 0x86, 0x6b, 0x00, 0xff, 0x1e, 0x07, 0x00, 324 { 0x8601, KEY_2 },
510 0x86, 0x6b, 0x01, 0xfe, 0x1f, 0x07, 0x00, 325 { 0x8602, KEY_3 },
511 0x86, 0x6b, 0x02, 0xfd, 0x20, 0x07, 0x00, 326 { 0x8603, KEY_4 },
512 0x86, 0x6b, 0x03, 0xfc, 0x21, 0x07, 0x00, 327 { 0x8604, KEY_5 },
513 0x86, 0x6b, 0x04, 0xfb, 0x22, 0x07, 0x00, 328 { 0x8605, KEY_6 },
514 0x86, 0x6b, 0x05, 0xfa, 0x23, 0x07, 0x00, 329 { 0x8606, KEY_7 },
515 0x86, 0x6b, 0x06, 0xf9, 0x24, 0x07, 0x00, 330 { 0x8607, KEY_8 },
516 0x86, 0x6b, 0x07, 0xf8, 0x25, 0x07, 0x00, 331 { 0x8608, KEY_9 },
517 0x86, 0x6b, 0x08, 0xf7, 0x26, 0x07, 0x00, 332 { 0x860a, KEY_0 },
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,
550}; 333};
551 334
552/* AverMedia Volar X */ 335/* AverMedia Volar X */
553static struct ir_scancode ir_codes_af9015_table_avermedia[] = { 336static struct ir_scancode af9015_rc_avermedia[] = {
554 { 0x053d, KEY_PROG1 }, /* SOURCE */ 337 { 0x0200, KEY_POWER }, /* POWER */
555 { 0x0512, KEY_POWER }, /* POWER */ 338 { 0x0201, KEY_PROG1 }, /* SOURCE */
556 { 0x051e, KEY_1 }, /* 1 */ 339 { 0x0203, KEY_TEXT }, /* TELETEXT */
557 { 0x051f, KEY_2 }, /* 2 */ 340 { 0x0204, KEY_EPG }, /* EPG */
558 { 0x0520, KEY_3 }, /* 3 */ 341 { 0x0205, KEY_1 }, /* 1 */
559 { 0x0521, KEY_4 }, /* 4 */ 342 { 0x0206, KEY_2 }, /* 2 */
560 { 0x0522, KEY_5 }, /* 5 */ 343 { 0x0207, KEY_3 }, /* 3 */
561 { 0x0523, KEY_6 }, /* 6 */ 344 { 0x0208, KEY_AUDIO }, /* AUDIO */
562 { 0x0524, KEY_7 }, /* 7 */ 345 { 0x0209, KEY_4 }, /* 4 */
563 { 0x0525, KEY_8 }, /* 8 */ 346 { 0x020a, KEY_5 }, /* 5 */
564 { 0x0526, KEY_9 }, /* 9 */ 347 { 0x020b, KEY_6 }, /* 6 */
565 { 0x053f, KEY_LEFT }, /* L / DISPLAY */ 348 { 0x020c, KEY_ZOOM }, /* FULL SCREEN */
566 { 0x0527, KEY_0 }, /* 0 */ 349 { 0x020d, KEY_7 }, /* 7 */
567 { 0x050f, KEY_RIGHT }, /* R / CH RTN */ 350 { 0x020e, KEY_8 }, /* 8 */
568 { 0x0518, KEY_PROG2 }, /* SNAP SHOT */ 351 { 0x020f, KEY_9 }, /* 9 */
569 { 0x051c, KEY_PROG3 }, /* 16-CH PREV */ 352 { 0x0210, KEY_PROG3 }, /* 16-CH PREV */
570 { 0x052d, KEY_VOLUMEDOWN }, /* VOL DOWN */ 353 { 0x0211, KEY_0 }, /* 0 */
571 { 0x053e, KEY_ZOOM }, /* FULL SCREEN */ 354 { 0x0212, KEY_LEFT }, /* L / DISPLAY */
572 { 0x052e, KEY_VOLUMEUP }, /* VOL UP */ 355 { 0x0213, KEY_RIGHT }, /* R / CH RTN */
573 { 0x0510, KEY_MUTE }, /* MUTE */ 356 { 0x0214, KEY_MUTE }, /* MUTE */
574 { 0x0504, KEY_AUDIO }, /* AUDIO */ 357 { 0x0215, KEY_MENU }, /* MENU */
575 { 0x0515, KEY_RECORD }, /* RECORD */ 358 { 0x0217, KEY_PROG2 }, /* SNAP SHOT */
576 { 0x0511, KEY_PLAY }, /* PLAY */ 359 { 0x0218, KEY_PLAY }, /* PLAY */
577 { 0x0516, KEY_STOP }, /* STOP */ 360 { 0x0219, KEY_RECORD }, /* RECORD */
578 { 0x050c, KEY_PLAYPAUSE }, /* TIMESHIFT / PAUSE */ 361 { 0x021a, KEY_PLAYPAUSE }, /* TIMESHIFT / PAUSE */
579 { 0x0505, KEY_BACK }, /* << / RED */ 362 { 0x021b, KEY_STOP }, /* STOP */
580 { 0x0509, KEY_FORWARD }, /* >> / YELLOW */ 363 { 0x021c, KEY_FORWARD }, /* >> / YELLOW */
581 { 0x0517, KEY_TEXT }, /* TELETEXT */ 364 { 0x021d, KEY_BACK }, /* << / RED */
582 { 0x050a, KEY_EPG }, /* EPG */ 365 { 0x021e, KEY_VOLUMEDOWN }, /* VOL DOWN */
583 { 0x0513, KEY_MENU }, /* MENU */ 366 { 0x021f, KEY_VOLUMEUP }, /* VOL UP */
584 367
585 { 0x050e, KEY_CHANNELUP }, /* CH UP */ 368 { 0x0300, KEY_LAST }, /* >>| / BLUE */
586 { 0x050d, KEY_CHANNELDOWN }, /* CH DOWN */ 369 { 0x0301, KEY_FIRST }, /* |<< / GREEN */
587 { 0x0519, KEY_FIRST }, /* |<< / GREEN */ 370 { 0x0302, KEY_CHANNELDOWN }, /* CH DOWN */
588 { 0x0508, KEY_LAST }, /* >>| / BLUE */ 371 { 0x0303, KEY_CHANNELUP }, /* CH UP */
589}; 372};
590 373
591static u8 af9015_ir_table_avermedia[] = { 374/* AverMedia KS */
592 0x02, 0xfd, 0x00, 0xff, 0x12, 0x05, 0x00, 375/* FIXME: mappings are not 100% correct? */
593 0x02, 0xfd, 0x01, 0xfe, 0x3d, 0x05, 0x00, 376static struct ir_scancode af9015_rc_avermedia_ks[] = {
594 0x02, 0xfd, 0x03, 0xfc, 0x17, 0x05, 0x00, 377 { 0x0501, KEY_POWER },
595 0x02, 0xfd, 0x04, 0xfb, 0x0a, 0x05, 0x00, 378 { 0x0502, KEY_CHANNELUP },
596 0x02, 0xfd, 0x05, 0xfa, 0x1e, 0x05, 0x00, 379 { 0x0503, KEY_CHANNELDOWN },
597 0x02, 0xfd, 0x06, 0xf9, 0x1f, 0x05, 0x00, 380 { 0x0504, KEY_VOLUMEUP },
598 0x02, 0xfd, 0x07, 0xf8, 0x20, 0x05, 0x00, 381 { 0x0505, KEY_VOLUMEDOWN },
599 0x02, 0xfd, 0x09, 0xf6, 0x21, 0x05, 0x00, 382 { 0x0506, KEY_MUTE },
600 0x02, 0xfd, 0x0a, 0xf5, 0x22, 0x05, 0x00, 383 { 0x0507, KEY_RIGHT },
601 0x02, 0xfd, 0x0b, 0xf4, 0x23, 0x05, 0x00, 384 { 0x0508, KEY_PROG1 },
602 0x02, 0xfd, 0x0d, 0xf2, 0x24, 0x05, 0x00, 385 { 0x0509, KEY_1 },
603 0x02, 0xfd, 0x0e, 0xf1, 0x25, 0x05, 0x00, 386 { 0x050a, KEY_2 },
604 0x02, 0xfd, 0x0f, 0xf0, 0x26, 0x05, 0x00, 387 { 0x050b, KEY_3 },
605 0x02, 0xfd, 0x11, 0xee, 0x27, 0x05, 0x00, 388 { 0x050c, KEY_4 },
606 0x02, 0xfd, 0x08, 0xf7, 0x04, 0x05, 0x00, 389 { 0x050d, KEY_5 },
607 0x02, 0xfd, 0x0c, 0xf3, 0x3e, 0x05, 0x00, 390 { 0x050e, KEY_6 },
608 0x02, 0xfd, 0x10, 0xef, 0x1c, 0x05, 0x00, 391 { 0x050f, KEY_7 },
609 0x02, 0xfd, 0x12, 0xed, 0x3f, 0x05, 0x00, 392 { 0x0510, KEY_8 },
610 0x02, 0xfd, 0x13, 0xec, 0x0f, 0x05, 0x00, 393 { 0x0511, KEY_9 },
611 0x02, 0xfd, 0x14, 0xeb, 0x10, 0x05, 0x00, 394 { 0x0512, KEY_0 },
612 0x02, 0xfd, 0x15, 0xea, 0x13, 0x05, 0x00, 395 { 0x0513, KEY_AUDIO },
613 0x02, 0xfd, 0x17, 0xe8, 0x18, 0x05, 0x00, 396 { 0x0515, KEY_EPG },
614 0x02, 0xfd, 0x18, 0xe7, 0x11, 0x05, 0x00, 397 { 0x0516, KEY_PLAY },
615 0x02, 0xfd, 0x19, 0xe6, 0x15, 0x05, 0x00, 398 { 0x0517, KEY_RECORD },
616 0x02, 0xfd, 0x1a, 0xe5, 0x0c, 0x05, 0x00, 399 { 0x0518, KEY_STOP },
617 0x02, 0xfd, 0x1b, 0xe4, 0x16, 0x05, 0x00, 400 { 0x051c, KEY_BACK },
618 0x02, 0xfd, 0x1c, 0xe3, 0x09, 0x05, 0x00, 401 { 0x051d, KEY_FORWARD },
619 0x02, 0xfd, 0x1d, 0xe2, 0x05, 0x05, 0x00, 402 { 0x054d, KEY_LEFT },
620 0x02, 0xfd, 0x1e, 0xe1, 0x2d, 0x05, 0x00, 403 { 0x0556, KEY_ZOOM },
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,
626};
627
628static 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
656}; 404};
657 405
658/* Digittrade DVB-T USB Stick */ 406/* Digittrade DVB-T USB Stick */
659static struct ir_scancode ir_codes_af9015_table_digittrade[] = { 407static struct ir_scancode af9015_rc_digittrade[] = {
660 { 0x010f, KEY_LAST }, /* RETURN */ 408 { 0x0000, KEY_9 },
661 { 0x0517, KEY_TEXT }, /* TELETEXT */ 409 { 0x0001, KEY_EPG }, /* EPG */
662 { 0x0108, KEY_EPG }, /* EPG */ 410 { 0x0002, KEY_VOLUMEDOWN }, /* Vol Dn */
663 { 0x0513, KEY_POWER }, /* POWER */ 411 { 0x0003, KEY_TEXT }, /* TELETEXT */
664 { 0x0109, KEY_ZOOM }, /* FULLSCREEN */ 412 { 0x0004, KEY_8 },
665 { 0x0040, KEY_AUDIO }, /* DUAL SOUND */ 413 { 0x0005, KEY_MUTE }, /* MUTE */
666 { 0x002c, KEY_PRINT }, /* SNAPSHOT */ 414 { 0x0006, KEY_POWER }, /* POWER */
667 { 0x0516, KEY_SUBTITLE }, /* SUBTITLE */ 415 { 0x0009, KEY_ZOOM }, /* FULLSCREEN */
668 { 0x0052, KEY_CHANNELUP }, /* CH Up */ 416 { 0x000a, KEY_RECORD }, /* RECORD */
669 { 0x0051, KEY_CHANNELDOWN },/* Ch Dn */ 417 { 0x000d, KEY_SUBTITLE }, /* SUBTITLE */
670 { 0x0057, KEY_VOLUMEUP }, /* Vol Up */ 418 { 0x000e, KEY_STOP }, /* STOP */
671 { 0x0056, KEY_VOLUMEDOWN }, /* Vol Dn */ 419 { 0x0010, KEY_LAST }, /* RETURN */
672 { 0x0110, KEY_MUTE }, /* MUTE */ 420 { 0x0011, KEY_2 },
673 { 0x0027, KEY_0 }, 421 { 0x0012, KEY_4 },
674 { 0x001e, KEY_1 }, 422 { 0x0015, KEY_3 },
675 { 0x001f, KEY_2 }, 423 { 0x0016, KEY_5 },
676 { 0x0020, KEY_3 }, 424 { 0x0017, KEY_CHANNELDOWN }, /* Ch Dn */
677 { 0x0021, KEY_4 }, 425 { 0x0019, KEY_CHANNELUP }, /* CH Up */
678 { 0x0022, KEY_5 }, 426 { 0x001a, KEY_PAUSE }, /* PAUSE */
679 { 0x0023, KEY_6 }, 427 { 0x001b, KEY_1 },
680 { 0x0024, KEY_7 }, 428 { 0x001d, KEY_AUDIO }, /* DUAL SOUND */
681 { 0x0025, KEY_8 }, 429 { 0x001e, KEY_PLAY }, /* PLAY */
682 { 0x0026, KEY_9 }, 430 { 0x001f, KEY_PRINT }, /* SNAPSHOT */
683 { 0x0117, KEY_PLAYPAUSE }, /* TIMESHIFT */ 431 { 0x0040, KEY_VOLUMEUP }, /* Vol Up */
684 { 0x0115, KEY_RECORD }, /* RECORD */ 432 { 0x0048, KEY_7 },
685 { 0x0313, KEY_PLAY }, /* PLAY */ 433 { 0x004c, KEY_6 },
686 { 0x0116, KEY_STOP }, /* STOP */ 434 { 0x004d, KEY_PLAYPAUSE }, /* TIMESHIFT */
687 { 0x0113, KEY_PAUSE }, /* PAUSE */ 435 { 0x0054, KEY_0 },
688};
689
690static 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,
719}; 436};
720 437
721/* TREKSTOR DVB-T USB Stick */ 438/* TREKSTOR DVB-T USB Stick */
722static struct ir_scancode ir_codes_af9015_table_trekstor[] = { 439static struct ir_scancode af9015_rc_trekstor[] = {
723 { 0x0704, KEY_AGAIN }, /* Home */ 440 { 0x0084, KEY_0 },
724 { 0x0705, KEY_MUTE }, /* Mute */ 441 { 0x0085, KEY_MUTE }, /* Mute */
725 { 0x0706, KEY_UP }, /* Up */ 442 { 0x0086, KEY_AGAIN }, /* Home */
726 { 0x0707, KEY_DOWN }, /* Down */ 443 { 0x0087, KEY_UP }, /* Up */
727 { 0x0709, KEY_RIGHT }, /* Right */ 444 { 0x0088, KEY_ENTER }, /* OK */
728 { 0x070a, KEY_ENTER }, /* OK */ 445 { 0x0089, KEY_RIGHT }, /* Right */
729 { 0x070b, KEY_FASTFORWARD }, /* Fast forward */ 446 { 0x008a, KEY_FASTFORWARD }, /* Fast forward */
730 { 0x070c, KEY_REWIND }, /* Rewind */ 447 { 0x008b, KEY_VOLUMEUP }, /* Volume + */
731 { 0x070d, KEY_PLAY }, /* Play/Pause */ 448 { 0x008c, KEY_DOWN }, /* Down */
732 { 0x070e, KEY_VOLUMEUP }, /* Volume + */ 449 { 0x008d, KEY_PLAY }, /* Play/Pause */
733 { 0x070f, KEY_VOLUMEDOWN }, /* Volume - */ 450 { 0x008e, KEY_STOP }, /* Stop */
734 { 0x0710, KEY_RECORD }, /* Record */ 451 { 0x008f, KEY_EPG }, /* Info/EPG */
735 { 0x0711, KEY_STOP }, /* Stop */ 452 { 0x0090, KEY_7 },
736 { 0x0712, KEY_ZOOM }, /* TV */ 453 { 0x0091, KEY_4 },
737 { 0x0713, KEY_EPG }, /* Info/EPG */ 454 { 0x0092, KEY_1 },
738 { 0x0714, KEY_CHANNELDOWN }, /* Channel - */ 455 { 0x0093, KEY_CHANNELDOWN }, /* Channel - */
739 { 0x0715, KEY_CHANNELUP }, /* Channel + */ 456 { 0x0094, KEY_8 },
740 { 0x071e, KEY_1 }, 457 { 0x0095, KEY_5 },
741 { 0x071f, KEY_2 }, 458 { 0x0096, KEY_2 },
742 { 0x0720, KEY_3 }, 459 { 0x0097, KEY_CHANNELUP }, /* Channel + */
743 { 0x0721, KEY_4 }, 460 { 0x0098, KEY_9 },
744 { 0x0722, KEY_5 }, 461 { 0x0099, KEY_6 },
745 { 0x0723, KEY_6 }, 462 { 0x009a, KEY_3 },
746 { 0x0724, KEY_7 }, 463 { 0x009b, KEY_VOLUMEDOWN }, /* Volume - */
747 { 0x0725, KEY_8 }, 464 { 0x009c, KEY_ZOOM }, /* TV */
748 { 0x0726, KEY_9 }, 465 { 0x009d, KEY_RECORD }, /* Record */
749 { 0x0708, KEY_LEFT }, /* LEFT */ 466 { 0x009e, KEY_REWIND }, /* Rewind */
750 { 0x0727, KEY_0 }, 467 { 0x009f, KEY_LEFT }, /* Left */
751};
752
753static 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,
782}; 468};
783 469
784/* MSI DIGIVOX mini III */ 470/* MSI DIGIVOX mini III */
785static struct ir_scancode ir_codes_af9015_table_msi_digivox_iii[] = { 471/* Uses NEC extended 0x61d6. Extended byte removed for compatibility... */
786 { 0x0713, KEY_POWER }, /* [red power button] */ 472static struct ir_scancode af9015_rc_msi_digivox_iii[] = {
787 { 0x073b, KEY_VIDEO }, /* Source */ 473 { 0x6101, KEY_VIDEO }, /* Source */
788 { 0x073e, KEY_ZOOM }, /* Zoom */ 474 { 0x6102, KEY_3 },
789 { 0x070b, KEY_POWER2 }, /* ShutDown */ 475 { 0x6103, KEY_POWER2 }, /* ShutDown */
790 { 0x071e, KEY_1 }, 476 { 0x6104, KEY_1 },
791 { 0x071f, KEY_2 }, 477 { 0x6105, KEY_5 },
792 { 0x0720, KEY_3 }, 478 { 0x6106, KEY_6 },
793 { 0x0721, KEY_4 }, 479 { 0x6107, KEY_CHANNELDOWN }, /* CH- */
794 { 0x0722, KEY_5 }, 480 { 0x6108, KEY_2 },
795 { 0x0723, KEY_6 }, 481 { 0x6109, KEY_CHANNELUP }, /* CH+ */
796 { 0x0724, KEY_7 }, 482 { 0x610a, KEY_9 },
797 { 0x0725, KEY_8 }, 483 { 0x610b, KEY_ZOOM }, /* Zoom */
798 { 0x0726, KEY_9 }, 484 { 0x610c, KEY_7 },
799 { 0x0727, KEY_0 }, 485 { 0x610d, KEY_8 },
800 { 0x0752, KEY_CHANNELUP }, /* CH+ */ 486 { 0x610e, KEY_VOLUMEUP }, /* Vol+ */
801 { 0x0751, KEY_CHANNELDOWN }, /* CH- */ 487 { 0x610f, KEY_4 },
802 { 0x0750, KEY_VOLUMEUP }, /* Vol+ */ 488 { 0x6110, KEY_ESC }, /* [back up arrow] */
803 { 0x074f, KEY_VOLUMEDOWN }, /* Vol- */ 489 { 0x6111, KEY_0 },
804 { 0x0705, KEY_ESC }, /* [back up arrow] */ 490 { 0x6112, KEY_OK }, /* [enter arrow] */
805 { 0x0708, KEY_OK }, /* [enter arrow] */ 491 { 0x6113, KEY_VOLUMEDOWN }, /* Vol- */
806 { 0x073f, KEY_RECORD }, /* Rec */ 492 { 0x6114, KEY_RECORD }, /* Rec */
807 { 0x0716, KEY_STOP }, /* Stop */ 493 { 0x6115, KEY_STOP }, /* Stop */
808 { 0x072a, KEY_PLAY }, /* Play */ 494 { 0x6116, KEY_PLAY }, /* Play */
809 { 0x073c, KEY_MUTE }, /* Mute */ 495 { 0x6117, KEY_MUTE }, /* Mute */
810 { 0x0718, KEY_UP }, 496 { 0x6118, KEY_UP },
811 { 0x0707, KEY_DOWN }, 497 { 0x6119, KEY_DOWN },
812 { 0x070f, KEY_LEFT }, 498 { 0x611a, KEY_LEFT },
813 { 0x0715, KEY_RIGHT }, 499 { 0x611b, KEY_RIGHT },
814 { 0x0736, KEY_RED }, 500 { 0x611c, KEY_RED },
815 { 0x0737, KEY_GREEN }, 501 { 0x611d, KEY_GREEN },
816 { 0x072d, KEY_YELLOW }, 502 { 0x611e, KEY_YELLOW },
817 { 0x072e, KEY_BLUE }, 503 { 0x611f, KEY_BLUE },
818}; 504 { 0x6143, KEY_POWER }, /* [red power button] */
819
820static 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 */
853}; 505};
854 506
855/* TerraTec - 4x7 slim remote */ 507/* TerraTec - 4x7 slim remote */
856static struct ir_scancode ir_codes_terratec[] = { 508/* Uses NEC extended 0x02bd. Extended byte removed for compatibility... */
857 { 0x0010, KEY_MUTE }, 509static struct ir_scancode af9015_rc_terratec[] = {
858 { 0x0008, KEY_EPG }, 510 { 0x0200, KEY_1 },
859 { 0x0009, KEY_ZOOM }, /* symbol: PIP or zoom ? */ 511 { 0x0201, KEY_2 },
860 { 0x043d, KEY_POWER2 }, /* [red power button] */ 512 { 0x0202, KEY_3 },
861 { 0x001e, KEY_1 }, 513 { 0x0203, KEY_4 },
862 { 0x001f, KEY_2 }, 514 { 0x0204, KEY_5 },
863 { 0x0020, KEY_3 }, 515 { 0x0205, KEY_6 },
864 { 0x0021, KEY_4 }, 516 { 0x0206, KEY_7 },
865 { 0x0022, KEY_5 }, 517 { 0x0207, KEY_8 },
866 { 0x0023, KEY_6 }, 518 { 0x0208, KEY_9 },
867 { 0x0024, KEY_7 }, 519 { 0x0209, KEY_0 },
868 { 0x0025, KEY_8 }, 520 { 0x020a, KEY_MUTE },
869 { 0x0026, KEY_9 }, 521 { 0x020b, KEY_ZOOM }, /* symbol: PIP or zoom ? */
870 { 0x0027, KEY_0 }, 522 { 0x020e, KEY_VOLUMEDOWN },
871 { 0x0029, KEY_ESC }, 523 { 0x020f, KEY_PLAYPAUSE },
872 { 0x0013, KEY_CAMERA }, /* snapshot */ 524 { 0x0210, KEY_RIGHT },
873 { 0x0028, KEY_OK }, 525 { 0x0211, KEY_LEFT },
874 { 0x004f, KEY_RIGHT }, 526 { 0x0212, KEY_UP },
875 { 0x0050, KEY_LEFT }, 527 { 0x0213, KEY_DOWN },
876 { 0x0051, KEY_DOWN }, 528 { 0x0215, KEY_OK },
877 { 0x0052, KEY_UP }, 529 { 0x0216, KEY_STOP },
878 { 0x004b, KEY_CHANNELUP }, 530 { 0x0217, KEY_CAMERA }, /* snapshot */
879 { 0x004e, KEY_CHANNELDOWN }, 531 { 0x0218, KEY_CHANNELUP },
880 { 0x0057, KEY_VOLUMEUP }, 532 { 0x0219, KEY_RECORD },
881 { 0x0056, KEY_VOLUMEDOWN }, 533 { 0x021a, KEY_CHANNELDOWN },
882 { 0x0015, KEY_RECORD }, 534 { 0x021c, KEY_ESC },
883 { 0x001b, KEY_STOP }, 535 { 0x021f, KEY_VOLUMEUP },
884 { 0x002c, KEY_PLAYPAUSE }, 536 { 0x0244, KEY_EPG },
885}; 537 { 0x0245, KEY_POWER2 }, /* [red power button] */
886
887static u8 af9015_ir_terratec[] = {
888 0x02, 0xbd, 0x0a, 0xf5, 0x10, 0x00, 0x00, /* KEY_MUTE */
889 0x02, 0xbd, 0x0b, 0xf4, 0x09, 0x00, 0x00, /* KEY_ZOOM */
890 0x02, 0xbd, 0x00, 0xff, 0x1e, 0x00, 0x00, /* KEY_1 */
891 0x02, 0xbd, 0x01, 0xfe, 0x1f, 0x00, 0x00, /* KEY_2 */
892 0x02, 0xbd, 0x02, 0xfd, 0x20, 0x00, 0x00, /* KEY_3 */
893 0x02, 0xbd, 0x03, 0xfc, 0x21, 0x00, 0x00, /* KEY_4 */
894 0x02, 0xbd, 0x04, 0xfb, 0x22, 0x00, 0x00, /* KEY_5 */
895 0x02, 0xbd, 0x05, 0xfa, 0x23, 0x00, 0x00, /* KEY_6 */
896 0x02, 0xbd, 0x06, 0xf9, 0x24, 0x00, 0x00, /* KEY_7 */
897 0x02, 0xbd, 0x07, 0xf8, 0x25, 0x00, 0x00, /* KEY_8 */
898 0x02, 0xbd, 0x08, 0xf7, 0x26, 0x00, 0x00, /* KEY_9 */
899 0x02, 0xbd, 0x09, 0xf6, 0x27, 0x00, 0x00, /* KEY_0 */
900 0x02, 0xbd, 0x12, 0xed, 0x52, 0x00, 0x00, /* KEY_UP */
901 0x02, 0xbd, 0x17, 0xe8, 0x13, 0x00, 0x00, /* KEY_CAMERA */
902 0x02, 0xbd, 0x11, 0xee, 0x50, 0x00, 0x00, /* KEY_LEFT */
903 0x02, 0xbd, 0x15, 0xea, 0x28, 0x00, 0x00, /* KEY_OK */
904 0x02, 0xbd, 0x10, 0xef, 0x4f, 0x00, 0x00, /* KEY_RIGHT */
905 0x02, 0xbd, 0x18, 0xe7, 0x4b, 0x00, 0x00, /* KEY_CHANNELUP */
906 0x02, 0xbd, 0x13, 0xec, 0x51, 0x00, 0x00, /* KEY_DOWN */
907 0x02, 0xbd, 0x19, 0xe6, 0x15, 0x00, 0x00, /* KEY_RECORD */
908 0x02, 0xbd, 0x1a, 0xe5, 0x4e, 0x00, 0x00, /* KEY_CHANNELDOWN */
909 0x02, 0xbd, 0x0e, 0xf1, 0x56, 0x00, 0x00, /* KEY_VOLUMEDOWN */
910 0x02, 0xbd, 0x16, 0xe9, 0x1b, 0x00, 0x00, /* KEY_STOP */
911 0x02, 0xbd, 0x1c, 0xe3, 0x29, 0x00, 0x00, /* KEY_ESC */
912 0x02, 0xbd, 0x1f, 0xe0, 0x57, 0x00, 0x00, /* KEY_VOLUMEUP */
913 0x02, 0xbd, 0x44, 0xbb, 0x08, 0x00, 0x00, /* KEY_EPG */
914 0x02, 0xbd, 0x45, 0xba, 0x3d, 0x04, 0x00, /* KEY_POWER2 */
915 0x02, 0xbd, 0x0f, 0xf0, 0x2c, 0x00, 0x00, /* KEY_PLAYPAUSE */
916}; 538};
917 539
918#endif 540#endif