Lines Matching +full:0 +full:x01008000

10  *   0xffdc iMON devices, and for sending me one to hack on, without
12 * also to the numerous 0xffdc device owners that tested auto-config
84 #define IMON_NO_FLAGS 0
100 bool dev_present_intf0; /* USB device presence, interface 0 */
140 bool pad_mouse; /* toggle kbd(0)/mouse(1) mode */
197 IMON_DISPLAY_TYPE_AUTO = 0,
205 IMON_KEY_IMON = 0,
226 { 0x000000000f00ffeell, KEY_MEDIA }, /* Go */
227 { 0x000000001200ffeell, KEY_UP },
228 { 0x000000001300ffeell, KEY_DOWN },
229 { 0x000000001400ffeell, KEY_LEFT },
230 { 0x000000001500ffeell, KEY_RIGHT },
231 { 0x000000001600ffeell, KEY_ENTER },
232 { 0x000000001700ffeell, KEY_ESC },
233 { 0x000000001f00ffeell, KEY_AUDIO },
234 { 0x000000002000ffeell, KEY_VIDEO },
235 { 0x000000002100ffeell, KEY_CAMERA },
236 { 0x000000002700ffeell, KEY_DVD },
237 { 0x000000002300ffeell, KEY_TV },
238 { 0x000000002b00ffeell, KEY_EXIT },
239 { 0x000000002c00ffeell, KEY_SELECT },
240 { 0x000000002d00ffeell, KEY_MENU },
241 { 0x000000000500ffeell, KEY_PREVIOUS },
242 { 0x000000000700ffeell, KEY_REWIND },
243 { 0x000000000400ffeell, KEY_STOP },
244 { 0x000000003c00ffeell, KEY_PLAYPAUSE },
245 { 0x000000000800ffeell, KEY_FASTFORWARD },
246 { 0x000000000600ffeell, KEY_NEXT },
247 { 0x000000010000ffeell, KEY_RIGHT },
248 { 0x000001000000ffeell, KEY_LEFT },
249 { 0x000000003d00ffeell, KEY_SELECT },
250 { 0x000100000000ffeell, KEY_VOLUMEUP },
251 { 0x010000000000ffeell, KEY_VOLUMEDOWN },
252 { 0x000000000100ffeell, KEY_MUTE },
253 /* 0xffdc iMON MCE VFD */
254 { 0x00010000ffffffeell, KEY_VOLUMEUP },
255 { 0x01000000ffffffeell, KEY_VOLUMEDOWN },
256 { 0x00000001ffffffeell, KEY_MUTE },
257 { 0x0000000fffffffeell, KEY_MEDIA },
258 { 0x00000012ffffffeell, KEY_UP },
259 { 0x00000013ffffffeell, KEY_DOWN },
260 { 0x00000014ffffffeell, KEY_LEFT },
261 { 0x00000015ffffffeell, KEY_RIGHT },
262 { 0x00000016ffffffeell, KEY_ENTER },
263 { 0x00000017ffffffeell, KEY_ESC },
265 { 0x000100ffffffffeell, KEY_VOLUMEUP },
266 { 0x010000ffffffffeell, KEY_VOLUMEDOWN },
267 { 0x000008ffffffffeell, KEY_MUTE },
268 { 0, KEY_RESERVED },
275 { 0x000000000f00ffeell, KEY_MEDIA }, /* Go */
276 { 0x000000001200ffeell, KEY_UP },
277 { 0x000000001300ffeell, KEY_DOWN },
278 { 0x000000001400ffeell, KEY_LEFT },
279 { 0x000000001500ffeell, KEY_RIGHT },
280 { 0x000000001600ffeell, KEY_ENTER },
281 { 0x000000001700ffeell, KEY_ESC },
282 { 0x000000001f00ffeell, KEY_AUDIO },
283 { 0x000000002b00ffeell, KEY_EXIT },
284 { 0x000000002c00ffeell, KEY_SELECT },
285 { 0x000000002d00ffeell, KEY_MENU },
286 { 0x000000000500ffeell, KEY_PREVIOUS },
287 { 0x000000000700ffeell, KEY_REWIND },
288 { 0x000000000400ffeell, KEY_STOP },
289 { 0x000000003c00ffeell, KEY_PLAYPAUSE },
290 { 0x000000000800ffeell, KEY_FASTFORWARD },
291 { 0x000000000600ffeell, KEY_NEXT },
292 { 0x000000010000ffeell, KEY_RIGHT },
293 { 0x000001000000ffeell, KEY_LEFT },
294 { 0x000000003d00ffeell, KEY_SELECT },
295 { 0x000100000000ffeell, KEY_VOLUMEUP },
296 { 0x010000000000ffeell, KEY_VOLUMEDOWN },
297 { 0x000000000100ffeell, KEY_MUTE },
298 /* 0xffdc iMON MCE VFD */
299 { 0x00010000ffffffeell, KEY_VOLUMEUP },
300 { 0x01000000ffffffeell, KEY_VOLUMEDOWN },
301 { 0x00000001ffffffeell, KEY_MUTE },
302 { 0x0000000fffffffeell, KEY_MEDIA },
303 { 0x00000012ffffffeell, KEY_UP },
304 { 0x00000013ffffffeell, KEY_DOWN },
305 { 0x00000014ffffffeell, KEY_LEFT },
306 { 0x00000015ffffffeell, KEY_RIGHT },
307 { 0x00000016ffffffeell, KEY_ENTER },
308 { 0x00000017ffffffeell, KEY_ESC },
310 { 0x000100ffffffffeell, KEY_VOLUMEUP },
311 { 0x010000ffffffffeell, KEY_VOLUMEDOWN },
312 { 0x000008ffffffffeell, KEY_MUTE },
313 { 0, KEY_RESERVED },
321 { 0x000100000000ffeell, KEY_VOLUMEUP },
322 { 0x010000000000ffeell, KEY_VOLUMEDOWN },
323 { 0x000000010000ffeell, KEY_MUTE },
324 { 0x0000000f0000ffeell, KEY_MEDIA },
325 { 0x000000120000ffeell, KEY_UP },
326 { 0x000000130000ffeell, KEY_DOWN },
327 { 0x000000140000ffeell, KEY_LEFT },
328 { 0x000000150000ffeell, KEY_RIGHT },
329 { 0x000000160000ffeell, KEY_ENTER },
330 { 0x000000170000ffeell, KEY_ESC },
331 { 0x0000002b0000ffeell, KEY_EXIT },
332 { 0x0000002c0000ffeell, KEY_SELECT },
333 { 0x0000002d0000ffeell, KEY_MENU },
334 { 0, KEY_RESERVED }
342 { 0x0000000f0000ffeell, KEY_MEDIA }, /* Go */
343 { 0x000000000100ffeell, KEY_UP },
344 { 0x000000000001ffeell, KEY_DOWN },
345 { 0x000000160000ffeell, KEY_ENTER },
346 { 0x0000001f0000ffeell, KEY_AUDIO }, /* Music */
347 { 0x000000200000ffeell, KEY_VIDEO }, /* Movie */
348 { 0x000000210000ffeell, KEY_CAMERA }, /* Photo */
349 { 0x000000270000ffeell, KEY_DVD }, /* DVD */
350 { 0x000000230000ffeell, KEY_TV }, /* TV */
351 { 0x000000050000ffeell, KEY_PREVIOUS }, /* Previous */
352 { 0x000000070000ffeell, KEY_REWIND },
353 { 0x000000040000ffeell, KEY_STOP },
354 { 0x000000020000ffeell, KEY_PLAYPAUSE },
355 { 0x000000080000ffeell, KEY_FASTFORWARD },
356 { 0x000000060000ffeell, KEY_NEXT }, /* Next */
357 { 0x000100000000ffeell, KEY_VOLUMEUP },
358 { 0x010000000000ffeell, KEY_VOLUMEDOWN },
359 { 0x000000010000ffeell, KEY_MUTE },
360 { 0, KEY_RESERVED },
368 * each new device until the 0x0034-0x0046 devices, which all use the same
371 * Samsung vendor ID (0x0aa8 and 0x04e8 respectively), while all later
372 * devices use the SoundGraph vendor ID (0x15c2). This driver only supports
382 { USB_DEVICE(0x15c2, 0xffdc),
391 { USB_DEVICE(0x15c2, 0x0034),
394 { USB_DEVICE(0x15c2, 0x0035),
397 { USB_DEVICE(0x15c2, 0x0036),
400 { USB_DEVICE(0x15c2, 0x0037),
403 { USB_DEVICE(0x15c2, 0x0038),
406 { USB_DEVICE(0x15c2, 0x0039),
409 { USB_DEVICE(0x15c2, 0x003a),
412 { USB_DEVICE(0x15c2, 0x003b),
415 { USB_DEVICE(0x15c2, 0x003c),
418 { USB_DEVICE(0x15c2, 0x003d),
421 { USB_DEVICE(0x15c2, 0x003e),
424 { USB_DEVICE(0x15c2, 0x003f),
427 { USB_DEVICE(0x15c2, 0x0040),
430 { USB_DEVICE(0x15c2, 0x0041),
433 { USB_DEVICE(0x15c2, 0x0042),
436 { USB_DEVICE(0x15c2, 0x0043),
439 { USB_DEVICE(0x15c2, 0x0044),
442 { USB_DEVICE(0x15c2, 0x0045),
445 { USB_DEVICE(0x15c2, 0x0046),
469 MODULE_PARM_DESC(debug, "Debug messages: 0=no, 1=yes (default: no)");
474 MODULE_PARM_DESC(display_type, "Type of attached display. 0=autodetect, 1=vfd, 2=lcd, 3=vga, 4=none…
478 …lize, "Apply stabilization algorithm to iMON PAD presses in arrow key mode. 0=disable, 1=enable (d…
486 MODULE_PARM_DESC(nomouse, "Disable mouse input device mode when IR device is open. 0=don't disable,…
517 int retval = 0; in display_open()
567 int retval = 0; in display_close()
597 int interval = 0; in send_packet()
598 int retval = 0; in send_packet()
612 ictx->tx_urb->actual_length = 0; in send_packet()
620 control_req->bRequestType = 0x21; in send_packet()
621 control_req->bRequest = 0x09; in send_packet()
622 control_req->wValue = cpu_to_le16(0x0200); in send_packet()
623 control_req->wIndex = cpu_to_le16(0x0001); in send_packet()
624 control_req->wLength = cpu_to_le16(0x0008); in send_packet()
626 /* control pipe is endpoint 0x00 */ in send_packet()
627 pipe = usb_sndctrlpipe(ictx->usbdev_intf0, 0); in send_packet()
635 ictx->tx_urb->actual_length = 0; in send_packet()
686 const unsigned char packet[8] = { 0x01, 0x00, 0x00, 0x00, in send_associate_24g()
687 0x00, 0x00, 0x00, 0x20 }; in send_associate_24g()
708 * day - 1..31, dow - day of the week (0-Sun...6-Sat),
709 * hour - 0..23, minute - 0..59, second - 0..59
718 int retval = 0; in send_set_imon_clock()
728 clock_enable_pkt[0][0] = 0x80; in send_set_imon_clock()
729 clock_enable_pkt[0][1] = year; in send_set_imon_clock()
730 clock_enable_pkt[0][2] = month-1; in send_set_imon_clock()
731 clock_enable_pkt[0][3] = day; in send_set_imon_clock()
732 clock_enable_pkt[0][4] = hour; in send_set_imon_clock()
733 clock_enable_pkt[0][5] = minute; in send_set_imon_clock()
734 clock_enable_pkt[0][6] = second; in send_set_imon_clock()
736 clock_enable_pkt[1][0] = 0x80; in send_set_imon_clock()
737 clock_enable_pkt[1][1] = 0; in send_set_imon_clock()
738 clock_enable_pkt[1][2] = 0; in send_set_imon_clock()
739 clock_enable_pkt[1][3] = 0; in send_set_imon_clock()
740 clock_enable_pkt[1][4] = 0; in send_set_imon_clock()
741 clock_enable_pkt[1][5] = 0; in send_set_imon_clock()
742 clock_enable_pkt[1][6] = 0; in send_set_imon_clock()
744 if (ictx->product == 0xffdc) { in send_set_imon_clock()
745 clock_enable_pkt[0][7] = 0x50; in send_set_imon_clock()
746 clock_enable_pkt[1][7] = 0x51; in send_set_imon_clock()
748 clock_enable_pkt[0][7] = 0x88; in send_set_imon_clock()
749 clock_enable_pkt[1][7] = 0x8a; in send_set_imon_clock()
755 clock_enable_pkt[0][0] = year; in send_set_imon_clock()
756 clock_enable_pkt[0][1] = month-1; in send_set_imon_clock()
757 clock_enable_pkt[0][2] = day; in send_set_imon_clock()
758 clock_enable_pkt[0][3] = dow; in send_set_imon_clock()
759 clock_enable_pkt[0][4] = hour; in send_set_imon_clock()
760 clock_enable_pkt[0][5] = minute; in send_set_imon_clock()
761 clock_enable_pkt[0][6] = second; in send_set_imon_clock()
762 clock_enable_pkt[0][7] = 0x40; in send_set_imon_clock()
764 clock_enable_pkt[1][0] = 0; in send_set_imon_clock()
765 clock_enable_pkt[1][1] = 0; in send_set_imon_clock()
767 clock_enable_pkt[1][3] = 0; in send_set_imon_clock()
768 clock_enable_pkt[1][4] = 0; in send_set_imon_clock()
769 clock_enable_pkt[1][5] = 0; in send_set_imon_clock()
770 clock_enable_pkt[1][6] = 0; in send_set_imon_clock()
771 clock_enable_pkt[1][7] = 0x42; in send_set_imon_clock()
779 for (i = 0; i < IMON_CLOCK_ENABLE_PACKETS; i++) { in send_set_imon_clock()
947 int retval = 0; in vfd_write()
950 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF }; in vfd_write()
964 if (n_bytes <= 0 || n_bytes > 32) { in vfd_write()
980 ictx->tx.data_buf[i] = 0xFF; in vfd_write()
982 offset = 0; in vfd_write()
983 seq = 0; in vfd_write()
1029 int retval = 0; in lcd_write()
1101 input_report_key(ictx->touch, BTN_TOUCH, 0x00); in imon_touch_display_timeout()
1126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86 }; in imon_ir_change_protocol()
1133 ir_proto_packet[0] = 0x01; in imon_ir_change_protocol()
1139 /* ir_proto_packet[0] = 0x00; // already the default */ in imon_ir_change_protocol()
1145 /* ir_proto_packet[0] = 0x00; // already the default */ in imon_ir_change_protocol()
1181 int result = 0; in stabilize()
1189 x = 0; in stabilize()
1190 y = 0; in stabilize()
1191 hits = 0; in stabilize()
1201 result = (y > 0) ? 0x7F : 0x80; in stabilize()
1203 result = (x > 0) ? 0x7F00 : 0x8000; in stabilize()
1205 x = 0; in stabilize()
1206 y = 0; in stabilize()
1213 case 0x7F: in stabilize()
1216 case 0x80: in stabilize()
1219 case 0x7F00: in stabilize()
1222 case 0x8000: in stabilize()
1229 result = 0; in stabilize()
1250 ictx->rc_toggle = 0x0; in imon_remote_key_lookup()
1255 release = scancode & ~0x4000; in imon_remote_key_lookup()
1270 #define MCE_KEY_MASK 0x7000 in imon_mce_key_lookup()
1271 #define MCE_TOGGLE_BIT 0x8000 in imon_mce_key_lookup()
1274 * On some receivers, mce keys decode to 0x8000f04xx and 0x8000f84xx in imon_mce_key_lookup()
1276 * on other receivers, we see 0x8000f74xx and 0x8000ff4xx. To keep in imon_mce_key_lookup()
1277 * the table trim, we always or in the bits to look up 0x8000ff4xx, in imon_mce_key_lookup()
1281 if (scancode & 0x80000000) in imon_mce_key_lookup()
1301 for (i = 0; key_table[i].hw_code != 0; i++) { in imon_panel_key_lookup()
1302 if (key_table[i].hw_code == (code | 0xffee)) { in imon_panel_key_lookup()
1314 signed char rel_x = 0x00, rel_y = 0x00; in imon_mouse_event()
1317 int dir = 0; in imon_mouse_event()
1323 if (ictx->product != 0xffdc && (buf[0] & 0x01) && len == 5) { in imon_mouse_event()
1327 /* 0xffdc iMON PAD or mouse button input */ in imon_mouse_event()
1328 } else if (ictx->product == 0xffdc && (buf[0] & 0x40) && in imon_mouse_event()
1329 !((buf[1] & 0x01) || ((buf[1] >> 2) & 0x01))) { in imon_mouse_event()
1330 rel_x = (buf[1] & 0x08) | (buf[1] & 0x10) >> 2 | in imon_mouse_event()
1331 (buf[1] & 0x20) >> 4 | (buf[1] & 0x40) >> 6; in imon_mouse_event()
1332 if (buf[0] & 0x02) in imon_mouse_event()
1333 rel_x |= ~0x0f; in imon_mouse_event()
1335 rel_y = (buf[2] & 0x08) | (buf[2] & 0x10) >> 2 | in imon_mouse_event()
1336 (buf[2] & 0x20) >> 4 | (buf[2] & 0x40) >> 6; in imon_mouse_event()
1337 if (buf[0] & 0x01) in imon_mouse_event()
1338 rel_y |= ~0x0f; in imon_mouse_event()
1342 } else if (ictx->product == 0xffdc && (buf[0] == 0x68)) { in imon_mouse_event()
1345 } else if (ictx->kc == KEY_CHANNELUP && (buf[2] & 0x40) != 0x40) { in imon_mouse_event()
1347 } else if (ictx->kc == KEY_CHANNELDOWN && (buf[2] & 0x40) != 0x40) { in imon_mouse_event()
1363 input_report_key(ictx->idev, BTN_LEFT, buf[1] & 0x1); in imon_mouse_event()
1365 buf[1] >> right_shift & 0x1); in imon_mouse_event()
1379 ictx->touch_x = (buf[0] << 4) | (buf[1] >> 4); in imon_touch_event()
1380 ictx->touch_y = 0xfff - ((buf[2] << 4) | (buf[1] & 0xf)); in imon_touch_event()
1383 input_report_key(ictx->touch, BTN_TOUCH, 0x01); in imon_touch_event()
1389 int dir = 0; in imon_pad_to_keys()
1390 signed char rel_x = 0x00, rel_y = 0x00; in imon_pad_to_keys()
1403 if (ictx->product != 0xffdc) { in imon_pad_to_keys()
1405 buf[5] = buf[6] = buf[7] = 0; in imon_pad_to_keys()
1413 if ((buf[1] == 0) && ((rel_x != 0) || (rel_y != 0))) { in imon_pad_to_keys()
1424 buf[2] = dir & 0xFF; in imon_pad_to_keys()
1425 buf[3] = (dir >> 8) & 0xFF; in imon_pad_to_keys()
1434 buf[2] = (rel_y > 0) ? 0x7F : 0x80; in imon_pad_to_keys()
1435 buf[3] = 0; in imon_pad_to_keys()
1436 if (rel_y > 0) in imon_pad_to_keys()
1437 scancode = 0x01007f00; /* KEY_DOWN */ in imon_pad_to_keys()
1439 scancode = 0x01008000; /* KEY_UP */ in imon_pad_to_keys()
1441 buf[2] = 0; in imon_pad_to_keys()
1442 buf[3] = (rel_x > 0) ? 0x7F : 0x80; in imon_pad_to_keys()
1443 if (rel_x > 0) in imon_pad_to_keys()
1444 scancode = 0x0100007f; /* KEY_RIGHT */ in imon_pad_to_keys()
1446 scancode = 0x01000080; /* KEY_LEFT */ in imon_pad_to_keys()
1453 * 0x68nnnnB7 to 0x6AnnnnB7, the left mouse button generates in imon_pad_to_keys()
1454 * 0x688301b7 and the right one 0x688481b7. All other keys generate in imon_pad_to_keys()
1455 * 0x2nnnnnnn. Position coordinate is encoded in buf[1] and buf[2] with in imon_pad_to_keys()
1458 * will be 0x01008000, 0x01007F00, which match the newer devices. in imon_pad_to_keys()
1466 rel_x = (buf[1] & 0x08) | (buf[1] & 0x10) >> 2 | in imon_pad_to_keys()
1467 (buf[1] & 0x20) >> 4 | (buf[1] & 0x40) >> 6; in imon_pad_to_keys()
1468 if (buf[0] & 0x02) in imon_pad_to_keys()
1469 rel_x |= ~0x10+1; in imon_pad_to_keys()
1471 rel_y = (buf[2] & 0x08) | (buf[2] & 0x10) >> 2 | in imon_pad_to_keys()
1472 (buf[2] & 0x20) >> 4 | (buf[2] & 0x40) >> 6; in imon_pad_to_keys()
1473 if (buf[0] & 0x01) in imon_pad_to_keys()
1474 rel_y |= ~0x10+1; in imon_pad_to_keys()
1476 buf[0] = 0x01; in imon_pad_to_keys()
1477 buf[1] = buf[4] = buf[5] = buf[6] = buf[7] = 0; in imon_pad_to_keys()
1488 buf[2] = dir & 0xFF; in imon_pad_to_keys()
1489 buf[3] = (dir >> 8) & 0xFF; in imon_pad_to_keys()
1497 buf[2] = (rel_y > 0) ? 0x7F : 0x80; in imon_pad_to_keys()
1498 buf[3] = 0; in imon_pad_to_keys()
1499 if (rel_y > 0) in imon_pad_to_keys()
1500 scancode = 0x01007f00; /* KEY_DOWN */ in imon_pad_to_keys()
1502 scancode = 0x01008000; /* KEY_UP */ in imon_pad_to_keys()
1504 buf[2] = 0; in imon_pad_to_keys()
1505 buf[3] = (rel_x > 0) ? 0x7F : 0x80; in imon_pad_to_keys()
1506 if (rel_x > 0) in imon_pad_to_keys()
1507 scancode = 0x0100007f; /* KEY_RIGHT */ in imon_pad_to_keys()
1509 scancode = 0x01000080; /* KEY_LEFT */ in imon_pad_to_keys()
1529 int press_type = 0; in imon_parse_press_type()
1534 /* key release of 0x02XXXXXX key */ in imon_parse_press_type()
1535 if (ictx->kc == KEY_RESERVED && buf[0] == 0x02 && buf[3] == 0x00) in imon_parse_press_type()
1538 /* mouse button release on (some) 0xffdc devices */ in imon_parse_press_type()
1539 else if (ictx->kc == KEY_RESERVED && buf[0] == 0x68 && buf[1] == 0x82 && in imon_parse_press_type()
1540 buf[2] == 0x81 && buf[3] == 0xb7) in imon_parse_press_type()
1543 /* mouse button release on (some other) 0xffdc devices */ in imon_parse_press_type()
1544 else if (ictx->kc == KEY_RESERVED && buf[0] == 0x01 && buf[1] == 0x00 && in imon_parse_press_type()
1545 buf[2] == 0x81 && buf[3] == 0xb7) in imon_parse_press_type()
1557 /* key release of 0xXXXXXXb7 key */ in imon_parse_press_type()
1559 press_type = 0; in imon_parse_press_type()
1582 int press_type = 0; in imon_incoming_packet()
1587 /* filter out junk data on the older 0xffdc imon devices */ in imon_incoming_packet()
1588 if ((buf[0] == 0xff) && (buf[1] == 0xff) && (buf[2] == 0xff)) in imon_incoming_packet()
1592 if (len == 8 && buf[7] == 0xee) { in imon_incoming_packet()
1601 if (buf[0] == 0x80) in imon_incoming_packet()
1630 if (ictx->touch && len == 8 && buf[7] == 0x86) { in imon_incoming_packet()
1641 if (((len == 5) && (buf[0] == 0x01) && (buf[4] == 0x00)) || in imon_incoming_packet()
1642 ((len == 8) && (buf[0] & 0x40) && in imon_incoming_packet()
1643 !(buf[1] & 0x1 || buf[1] >> 2 & 0x1))) { in imon_incoming_packet()
1654 if (press_type < 0) in imon_incoming_packet()
1658 if (press_type == 0) in imon_incoming_packet()
1703 input_report_key(ictx->idev, kc, 0); in imon_incoming_packet()
1720 if (buf[0] == 0x00 && in imon_incoming_packet()
1721 buf[2] == 0xFF && /* REFID */ in imon_incoming_packet()
1722 buf[3] == 0xFF && in imon_incoming_packet()
1723 buf[4] == 0xFF && in imon_incoming_packet()
1724 buf[5] == 0xFF && /* iMON 2.4G */ in imon_incoming_packet()
1725 ((buf[6] == 0x4E && buf[7] == 0xDF) || /* LT */ in imon_incoming_packet()
1726 (buf[6] == 0x5E && buf[7] == 0xDF))) { /* DT */ in imon_incoming_packet()
1739 int intfnum = 0; in usb_rx_callback_intf0()
1763 case 0: in usb_rx_callback_intf0()
1804 case 0: in usb_rx_callback_intf1()
1819 * The 0x15c2:0xffdc device ID was used for umpteen different imon
1835 case 0x21: in imon_get_ffdc_type()
1836 dev_info(ictx->dev, "0xffdc iMON Knob, iMON IR"); in imon_get_ffdc_type()
1840 case 0x4e: in imon_get_ffdc_type()
1841 dev_info(ictx->dev, "0xffdc iMON 2.4G LT, iMON RF"); in imon_get_ffdc_type()
1846 case 0x35: in imon_get_ffdc_type()
1847 dev_info(ictx->dev, "0xffdc iMON VFD + knob, no IR"); in imon_get_ffdc_type()
1851 case 0x24: in imon_get_ffdc_type()
1852 case 0x30: in imon_get_ffdc_type()
1853 case 0x85: in imon_get_ffdc_type()
1854 dev_info(ictx->dev, "0xffdc iMON VFD, iMON IR"); in imon_get_ffdc_type()
1858 case 0x46: in imon_get_ffdc_type()
1859 case 0x9e: in imon_get_ffdc_type()
1860 dev_info(ictx->dev, "0xffdc iMON VFD, MCE IR"); in imon_get_ffdc_type()
1865 case 0x7e: in imon_get_ffdc_type()
1866 dev_info(ictx->dev, "0xffdc iMON VFD, iMON or MCE IR"); in imon_get_ffdc_type()
1871 case 0x9f: in imon_get_ffdc_type()
1872 dev_info(ictx->dev, "0xffdc iMON LCD, MCE IR"); in imon_get_ffdc_type()
1877 case 0x26: in imon_get_ffdc_type()
1878 dev_info(ictx->dev, "0xffdc iMON Inside, iMON IR"); in imon_get_ffdc_type()
1882 case 0x98: in imon_get_ffdc_type()
1883 dev_info(ictx->dev, "0xffdc iMON UltraBay, LCD + IR"); in imon_get_ffdc_type()
1890 dev_info(ictx->dev, "Unknown 0xffdc device, defaulting to VFD and iMON IR"); in imon_get_ffdc_type()
1900 printk(KERN_CONT " (id 0x%02x)\n", ffdc_cfg_byte); in imon_get_ffdc_type()
1917 case 0xffdc: in imon_set_display_type()
1921 case 0x0034: in imon_set_display_type()
1922 case 0x0035: in imon_set_display_type()
1925 case 0x0038: in imon_set_display_type()
1926 case 0x0039: in imon_set_display_type()
1927 case 0x0045: in imon_set_display_type()
1930 case 0x003c: in imon_set_display_type()
1931 case 0x0041: in imon_set_display_type()
1932 case 0x0042: in imon_set_display_type()
1933 case 0x0043: in imon_set_display_type()
1937 case 0x0036: in imon_set_display_type()
1938 case 0x0044: in imon_set_display_type()
1961 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88 }; in imon_init_rdev()
1993 if (ictx->product == 0xffdc) { in imon_init_rdev()
2006 if (ret < 0) { in imon_init_rdev()
2040 idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP) | BIT_MASK(EV_REL); in imon_init_idev()
2044 idev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y) | in imon_init_idev()
2048 for (i = 0; key_table[i].hw_code != 0; i++) { in imon_init_idev()
2058 if (ret < 0) { in imon_init_idev()
2089 touch->evbit[0] = in imon_init_touch()
2094 0x00, 0xfff, 0, 0); in imon_init_touch()
2096 0x00, 0xfff, 0, 0); in imon_init_touch()
2103 if (ret < 0) { in imon_init_touch()
2135 for (i = 0; i < num_endpts && !(ir_ep_found && display_ep_found); ++i) { in imon_find_endpoints()
2155 if (ifnum == 0) { in imon_find_endpoints()
2223 rx_urb = usb_alloc_urb(0, GFP_KERNEL); in imon_init_intf0()
2226 tx_urb = usb_alloc_urb(0, GFP_KERNEL); in imon_init_intf0()
2314 rx_urb = usb_alloc_urb(0, GFP_KERNEL); in imon_init_intf1()
2321 timer_setup(&ictx->ttimer, imon_touch_display_timeout, 0); in imon_init_intf1()
2408 int ret = 0; in imon_probe()
2421 first_if = usb_ifnum_to_if(usbdev, 0); in imon_probe()
2433 if (ifnum == 0) { in imon_probe()
2464 if (ifnum == 0) { in imon_probe()
2465 if (product == 0xffdc && ictx->rf_device) { in imon_probe()
2483 return 0; in imon_probe()
2521 if (ifnum == 0) { in imon_disconnect()
2555 if (ifnum == 0) in imon_suspend()
2560 return 0; in imon_suspend()
2565 int rc = 0; in imon_resume()
2569 if (ifnum == 0) { in imon_resume()