diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dib0700_devices.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_devices.c | 614 |
1 files changed, 230 insertions, 384 deletions
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index 800800a9649e..f634d2e784b2 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
@@ -473,16 +473,19 @@ static u8 rc_request[] = { REQUEST_POLL_RC, 0 }; | |||
473 | /* Number of keypresses to ignore before start repeating */ | 473 | /* Number of keypresses to ignore before start repeating */ |
474 | #define RC_REPEAT_DELAY 6 | 474 | #define RC_REPEAT_DELAY 6 |
475 | 475 | ||
476 | static int dib0700_rc_query(struct dvb_usb_device *d, u32 *event, int *state) | 476 | /* |
477 | * This function is used only when firmware is < 1.20 version. Newer | ||
478 | * firmwares use bulk mode, with functions implemented at dib0700_core, | ||
479 | * at dib0700_rc_urb_completion() | ||
480 | */ | ||
481 | static int dib0700_rc_query_old_firmware(struct dvb_usb_device *d) | ||
477 | { | 482 | { |
478 | u8 key[4]; | 483 | u8 key[4]; |
484 | u32 keycode; | ||
485 | u8 toggle; | ||
479 | int i; | 486 | int i; |
480 | struct dvb_usb_rc_key *keymap = d->props.rc_key_map; | ||
481 | struct dib0700_state *st = d->priv; | 487 | struct dib0700_state *st = d->priv; |
482 | 488 | ||
483 | *event = 0; | ||
484 | *state = REMOTE_NO_KEY_PRESSED; | ||
485 | |||
486 | if (st->fw_version >= 0x10200) { | 489 | if (st->fw_version >= 0x10200) { |
487 | /* For 1.20 firmware , We need to keep the RC polling | 490 | /* For 1.20 firmware , We need to keep the RC polling |
488 | callback so we can reuse the input device setup in | 491 | callback so we can reuse the input device setup in |
@@ -491,348 +494,45 @@ static int dib0700_rc_query(struct dvb_usb_device *d, u32 *event, int *state) | |||
491 | return 0; | 494 | return 0; |
492 | } | 495 | } |
493 | 496 | ||
494 | i=dib0700_ctrl_rd(d,rc_request,2,key,4); | 497 | i = dib0700_ctrl_rd(d, rc_request, 2, key, 4); |
495 | if (i<=0) { | 498 | if (i <= 0) { |
496 | err("RC Query Failed"); | 499 | err("RC Query Failed"); |
497 | return -1; | 500 | return -1; |
498 | } | 501 | } |
499 | 502 | ||
500 | /* losing half of KEY_0 events from Philipps rc5 remotes.. */ | 503 | /* losing half of KEY_0 events from Philipps rc5 remotes.. */ |
501 | if (key[0]==0 && key[1]==0 && key[2]==0 && key[3]==0) return 0; | 504 | if (key[0] == 0 && key[1] == 0 && key[2] == 0 && key[3] == 0) |
505 | return 0; | ||
502 | 506 | ||
503 | /* info("%d: %2X %2X %2X %2X",dvb_usb_dib0700_ir_proto,(int)key[3-2],(int)key[3-3],(int)key[3-1],(int)key[3]); */ | 507 | /* info("%d: %2X %2X %2X %2X",dvb_usb_dib0700_ir_proto,(int)key[3-2],(int)key[3-3],(int)key[3-1],(int)key[3]); */ |
504 | 508 | ||
505 | dib0700_rc_setup(d); /* reset ir sensor data to prevent false events */ | 509 | dib0700_rc_setup(d); /* reset ir sensor data to prevent false events */ |
506 | 510 | ||
507 | switch (dvb_usb_dib0700_ir_proto) { | 511 | d->last_event = 0; |
508 | case 0: { | 512 | switch (d->props.rc.core.protocol) { |
513 | case IR_TYPE_NEC: | ||
509 | /* NEC protocol sends repeat code as 0 0 0 FF */ | 514 | /* NEC protocol sends repeat code as 0 0 0 FF */ |
510 | if ((key[3-2] == 0x00) && (key[3-3] == 0x00) && | 515 | if ((key[3-2] == 0x00) && (key[3-3] == 0x00) && |
511 | (key[3] == 0xFF)) { | 516 | (key[3] == 0xff)) |
512 | st->rc_counter++; | 517 | keycode = d->last_event; |
513 | if (st->rc_counter > RC_REPEAT_DELAY) { | 518 | else { |
514 | *event = d->last_event; | 519 | keycode = key[3-2] << 8 | key[3-3]; |
515 | *state = REMOTE_KEY_PRESSED; | 520 | d->last_event = keycode; |
516 | st->rc_counter = RC_REPEAT_DELAY; | ||
517 | } | ||
518 | return 0; | ||
519 | } | ||
520 | for (i=0;i<d->props.rc_key_map_size; i++) { | ||
521 | if (rc5_custom(&keymap[i]) == key[3-2] && | ||
522 | rc5_data(&keymap[i]) == key[3-3]) { | ||
523 | st->rc_counter = 0; | ||
524 | *event = keymap[i].event; | ||
525 | *state = REMOTE_KEY_PRESSED; | ||
526 | d->last_event = keymap[i].event; | ||
527 | return 0; | ||
528 | } | ||
529 | } | 521 | } |
522 | |||
523 | ir_keydown(d->rc_input_dev, keycode, 0); | ||
530 | break; | 524 | break; |
531 | } | 525 | default: |
532 | default: { | ||
533 | /* RC-5 protocol changes toggle bit on new keypress */ | 526 | /* RC-5 protocol changes toggle bit on new keypress */ |
534 | for (i = 0; i < d->props.rc_key_map_size; i++) { | 527 | keycode = key[3-2] << 8 | key[3-3]; |
535 | if (rc5_custom(&keymap[i]) == key[3-2] && | 528 | toggle = key[3-1]; |
536 | rc5_data(&keymap[i]) == key[3-3]) { | 529 | ir_keydown(d->rc_input_dev, keycode, toggle); |
537 | if (d->last_event == keymap[i].event && | 530 | |
538 | key[3-1] == st->rc_toggle) { | ||
539 | st->rc_counter++; | ||
540 | /* prevents unwanted double hits */ | ||
541 | if (st->rc_counter > RC_REPEAT_DELAY) { | ||
542 | *event = d->last_event; | ||
543 | *state = REMOTE_KEY_PRESSED; | ||
544 | st->rc_counter = RC_REPEAT_DELAY; | ||
545 | } | ||
546 | |||
547 | return 0; | ||
548 | } | ||
549 | st->rc_counter = 0; | ||
550 | *event = keymap[i].event; | ||
551 | *state = REMOTE_KEY_PRESSED; | ||
552 | st->rc_toggle = key[3-1]; | ||
553 | d->last_event = keymap[i].event; | ||
554 | return 0; | ||
555 | } | ||
556 | } | ||
557 | break; | 531 | break; |
558 | } | 532 | } |
559 | } | ||
560 | err("Unknown remote controller key: %2X %2X %2X %2X", (int) key[3-2], (int) key[3-3], (int) key[3-1], (int) key[3]); | ||
561 | d->last_event = 0; | ||
562 | return 0; | 533 | return 0; |
563 | } | 534 | } |
564 | 535 | ||
565 | static struct dvb_usb_rc_key ir_codes_dib0700_table[] = { | ||
566 | /* Key codes for the tiny Pinnacle remote*/ | ||
567 | { 0x0700, KEY_MUTE }, | ||
568 | { 0x0701, KEY_MENU }, /* Pinnacle logo */ | ||
569 | { 0x0739, KEY_POWER }, | ||
570 | { 0x0703, KEY_VOLUMEUP }, | ||
571 | { 0x0709, KEY_VOLUMEDOWN }, | ||
572 | { 0x0706, KEY_CHANNELUP }, | ||
573 | { 0x070c, KEY_CHANNELDOWN }, | ||
574 | { 0x070f, KEY_1 }, | ||
575 | { 0x0715, KEY_2 }, | ||
576 | { 0x0710, KEY_3 }, | ||
577 | { 0x0718, KEY_4 }, | ||
578 | { 0x071b, KEY_5 }, | ||
579 | { 0x071e, KEY_6 }, | ||
580 | { 0x0711, KEY_7 }, | ||
581 | { 0x0721, KEY_8 }, | ||
582 | { 0x0712, KEY_9 }, | ||
583 | { 0x0727, KEY_0 }, | ||
584 | { 0x0724, KEY_SCREEN }, /* 'Square' key */ | ||
585 | { 0x072a, KEY_TEXT }, /* 'T' key */ | ||
586 | { 0x072d, KEY_REWIND }, | ||
587 | { 0x0730, KEY_PLAY }, | ||
588 | { 0x0733, KEY_FASTFORWARD }, | ||
589 | { 0x0736, KEY_RECORD }, | ||
590 | { 0x073c, KEY_STOP }, | ||
591 | { 0x073f, KEY_CANCEL }, /* '?' key */ | ||
592 | /* Key codes for the Terratec Cinergy DT XS Diversity, similar to cinergyT2.c */ | ||
593 | { 0xeb01, KEY_POWER }, | ||
594 | { 0xeb02, KEY_1 }, | ||
595 | { 0xeb03, KEY_2 }, | ||
596 | { 0xeb04, KEY_3 }, | ||
597 | { 0xeb05, KEY_4 }, | ||
598 | { 0xeb06, KEY_5 }, | ||
599 | { 0xeb07, KEY_6 }, | ||
600 | { 0xeb08, KEY_7 }, | ||
601 | { 0xeb09, KEY_8 }, | ||
602 | { 0xeb0a, KEY_9 }, | ||
603 | { 0xeb0b, KEY_VIDEO }, | ||
604 | { 0xeb0c, KEY_0 }, | ||
605 | { 0xeb0d, KEY_REFRESH }, | ||
606 | { 0xeb0f, KEY_EPG }, | ||
607 | { 0xeb10, KEY_UP }, | ||
608 | { 0xeb11, KEY_LEFT }, | ||
609 | { 0xeb12, KEY_OK }, | ||
610 | { 0xeb13, KEY_RIGHT }, | ||
611 | { 0xeb14, KEY_DOWN }, | ||
612 | { 0xeb16, KEY_INFO }, | ||
613 | { 0xeb17, KEY_RED }, | ||
614 | { 0xeb18, KEY_GREEN }, | ||
615 | { 0xeb19, KEY_YELLOW }, | ||
616 | { 0xeb1a, KEY_BLUE }, | ||
617 | { 0xeb1b, KEY_CHANNELUP }, | ||
618 | { 0xeb1c, KEY_VOLUMEUP }, | ||
619 | { 0xeb1d, KEY_MUTE }, | ||
620 | { 0xeb1e, KEY_VOLUMEDOWN }, | ||
621 | { 0xeb1f, KEY_CHANNELDOWN }, | ||
622 | { 0xeb40, KEY_PAUSE }, | ||
623 | { 0xeb41, KEY_HOME }, | ||
624 | { 0xeb42, KEY_MENU }, /* DVD Menu */ | ||
625 | { 0xeb43, KEY_SUBTITLE }, | ||
626 | { 0xeb44, KEY_TEXT }, /* Teletext */ | ||
627 | { 0xeb45, KEY_DELETE }, | ||
628 | { 0xeb46, KEY_TV }, | ||
629 | { 0xeb47, KEY_DVD }, | ||
630 | { 0xeb48, KEY_STOP }, | ||
631 | { 0xeb49, KEY_VIDEO }, | ||
632 | { 0xeb4a, KEY_AUDIO }, /* Music */ | ||
633 | { 0xeb4b, KEY_SCREEN }, /* Pic */ | ||
634 | { 0xeb4c, KEY_PLAY }, | ||
635 | { 0xeb4d, KEY_BACK }, | ||
636 | { 0xeb4e, KEY_REWIND }, | ||
637 | { 0xeb4f, KEY_FASTFORWARD }, | ||
638 | { 0xeb54, KEY_PREVIOUS }, | ||
639 | { 0xeb58, KEY_RECORD }, | ||
640 | { 0xeb5c, KEY_NEXT }, | ||
641 | |||
642 | /* Key codes for the Haupauge WinTV Nova-TD, copied from nova-t-usb2.c (Nova-T USB2) */ | ||
643 | { 0x1e00, KEY_0 }, | ||
644 | { 0x1e01, KEY_1 }, | ||
645 | { 0x1e02, KEY_2 }, | ||
646 | { 0x1e03, KEY_3 }, | ||
647 | { 0x1e04, KEY_4 }, | ||
648 | { 0x1e05, KEY_5 }, | ||
649 | { 0x1e06, KEY_6 }, | ||
650 | { 0x1e07, KEY_7 }, | ||
651 | { 0x1e08, KEY_8 }, | ||
652 | { 0x1e09, KEY_9 }, | ||
653 | { 0x1e0a, KEY_KPASTERISK }, | ||
654 | { 0x1e0b, KEY_RED }, | ||
655 | { 0x1e0c, KEY_RADIO }, | ||
656 | { 0x1e0d, KEY_MENU }, | ||
657 | { 0x1e0e, KEY_GRAVE }, /* # */ | ||
658 | { 0x1e0f, KEY_MUTE }, | ||
659 | { 0x1e10, KEY_VOLUMEUP }, | ||
660 | { 0x1e11, KEY_VOLUMEDOWN }, | ||
661 | { 0x1e12, KEY_CHANNEL }, | ||
662 | { 0x1e14, KEY_UP }, | ||
663 | { 0x1e15, KEY_DOWN }, | ||
664 | { 0x1e16, KEY_LEFT }, | ||
665 | { 0x1e17, KEY_RIGHT }, | ||
666 | { 0x1e18, KEY_VIDEO }, | ||
667 | { 0x1e19, KEY_AUDIO }, | ||
668 | { 0x1e1a, KEY_MEDIA }, | ||
669 | { 0x1e1b, KEY_EPG }, | ||
670 | { 0x1e1c, KEY_TV }, | ||
671 | { 0x1e1e, KEY_NEXT }, | ||
672 | { 0x1e1f, KEY_BACK }, | ||
673 | { 0x1e20, KEY_CHANNELUP }, | ||
674 | { 0x1e21, KEY_CHANNELDOWN }, | ||
675 | { 0x1e24, KEY_LAST }, /* Skip backwards */ | ||
676 | { 0x1e25, KEY_OK }, | ||
677 | { 0x1e29, KEY_BLUE}, | ||
678 | { 0x1e2e, KEY_GREEN }, | ||
679 | { 0x1e30, KEY_PAUSE }, | ||
680 | { 0x1e32, KEY_REWIND }, | ||
681 | { 0x1e34, KEY_FASTFORWARD }, | ||
682 | { 0x1e35, KEY_PLAY }, | ||
683 | { 0x1e36, KEY_STOP }, | ||
684 | { 0x1e37, KEY_RECORD }, | ||
685 | { 0x1e38, KEY_YELLOW }, | ||
686 | { 0x1e3b, KEY_GOTO }, | ||
687 | { 0x1e3d, KEY_POWER }, | ||
688 | |||
689 | /* Key codes for the Leadtek Winfast DTV Dongle */ | ||
690 | { 0x0042, KEY_POWER }, | ||
691 | { 0x077c, KEY_TUNER }, | ||
692 | { 0x0f4e, KEY_PRINT }, /* PREVIEW */ | ||
693 | { 0x0840, KEY_SCREEN }, /* full screen toggle*/ | ||
694 | { 0x0f71, KEY_DOT }, /* frequency */ | ||
695 | { 0x0743, KEY_0 }, | ||
696 | { 0x0c41, KEY_1 }, | ||
697 | { 0x0443, KEY_2 }, | ||
698 | { 0x0b7f, KEY_3 }, | ||
699 | { 0x0e41, KEY_4 }, | ||
700 | { 0x0643, KEY_5 }, | ||
701 | { 0x097f, KEY_6 }, | ||
702 | { 0x0d7e, KEY_7 }, | ||
703 | { 0x057c, KEY_8 }, | ||
704 | { 0x0a40, KEY_9 }, | ||
705 | { 0x0e4e, KEY_CLEAR }, | ||
706 | { 0x047c, KEY_CHANNEL }, /* show channel number */ | ||
707 | { 0x0f41, KEY_LAST }, /* recall */ | ||
708 | { 0x0342, KEY_MUTE }, | ||
709 | { 0x064c, KEY_RESERVED }, /* PIP button*/ | ||
710 | { 0x0172, KEY_SHUFFLE }, /* SNAPSHOT */ | ||
711 | { 0x0c4e, KEY_PLAYPAUSE }, /* TIMESHIFT */ | ||
712 | { 0x0b70, KEY_RECORD }, | ||
713 | { 0x037d, KEY_VOLUMEUP }, | ||
714 | { 0x017d, KEY_VOLUMEDOWN }, | ||
715 | { 0x0242, KEY_CHANNELUP }, | ||
716 | { 0x007d, KEY_CHANNELDOWN }, | ||
717 | |||
718 | /* Key codes for Nova-TD "credit card" remote control. */ | ||
719 | { 0x1d00, KEY_0 }, | ||
720 | { 0x1d01, KEY_1 }, | ||
721 | { 0x1d02, KEY_2 }, | ||
722 | { 0x1d03, KEY_3 }, | ||
723 | { 0x1d04, KEY_4 }, | ||
724 | { 0x1d05, KEY_5 }, | ||
725 | { 0x1d06, KEY_6 }, | ||
726 | { 0x1d07, KEY_7 }, | ||
727 | { 0x1d08, KEY_8 }, | ||
728 | { 0x1d09, KEY_9 }, | ||
729 | { 0x1d0a, KEY_TEXT }, | ||
730 | { 0x1d0d, KEY_MENU }, | ||
731 | { 0x1d0f, KEY_MUTE }, | ||
732 | { 0x1d10, KEY_VOLUMEUP }, | ||
733 | { 0x1d11, KEY_VOLUMEDOWN }, | ||
734 | { 0x1d12, KEY_CHANNEL }, | ||
735 | { 0x1d14, KEY_UP }, | ||
736 | { 0x1d15, KEY_DOWN }, | ||
737 | { 0x1d16, KEY_LEFT }, | ||
738 | { 0x1d17, KEY_RIGHT }, | ||
739 | { 0x1d1c, KEY_TV }, | ||
740 | { 0x1d1e, KEY_NEXT }, | ||
741 | { 0x1d1f, KEY_BACK }, | ||
742 | { 0x1d20, KEY_CHANNELUP }, | ||
743 | { 0x1d21, KEY_CHANNELDOWN }, | ||
744 | { 0x1d24, KEY_LAST }, | ||
745 | { 0x1d25, KEY_OK }, | ||
746 | { 0x1d30, KEY_PAUSE }, | ||
747 | { 0x1d32, KEY_REWIND }, | ||
748 | { 0x1d34, KEY_FASTFORWARD }, | ||
749 | { 0x1d35, KEY_PLAY }, | ||
750 | { 0x1d36, KEY_STOP }, | ||
751 | { 0x1d37, KEY_RECORD }, | ||
752 | { 0x1d3b, KEY_GOTO }, | ||
753 | { 0x1d3d, KEY_POWER }, | ||
754 | |||
755 | /* Key codes for the Pixelview SBTVD remote (proto NEC) */ | ||
756 | { 0x8613, KEY_MUTE }, | ||
757 | { 0x8612, KEY_POWER }, | ||
758 | { 0x8601, KEY_1 }, | ||
759 | { 0x8602, KEY_2 }, | ||
760 | { 0x8603, KEY_3 }, | ||
761 | { 0x8604, KEY_4 }, | ||
762 | { 0x8605, KEY_5 }, | ||
763 | { 0x8606, KEY_6 }, | ||
764 | { 0x8607, KEY_7 }, | ||
765 | { 0x8608, KEY_8 }, | ||
766 | { 0x8609, KEY_9 }, | ||
767 | { 0x8600, KEY_0 }, | ||
768 | { 0x860d, KEY_CHANNELUP }, | ||
769 | { 0x8619, KEY_CHANNELDOWN }, | ||
770 | { 0x8610, KEY_VOLUMEUP }, | ||
771 | { 0x860c, KEY_VOLUMEDOWN }, | ||
772 | |||
773 | { 0x860a, KEY_CAMERA }, | ||
774 | { 0x860b, KEY_ZOOM }, | ||
775 | { 0x861b, KEY_BACKSPACE }, | ||
776 | { 0x8615, KEY_ENTER }, | ||
777 | |||
778 | { 0x861d, KEY_UP }, | ||
779 | { 0x861e, KEY_DOWN }, | ||
780 | { 0x860e, KEY_LEFT }, | ||
781 | { 0x860f, KEY_RIGHT }, | ||
782 | |||
783 | { 0x8618, KEY_RECORD }, | ||
784 | { 0x861a, KEY_STOP }, | ||
785 | |||
786 | /* Key codes for the EvolutePC TVWay+ remote (proto NEC) */ | ||
787 | { 0x7a00, KEY_MENU }, | ||
788 | { 0x7a01, KEY_RECORD }, | ||
789 | { 0x7a02, KEY_PLAY }, | ||
790 | { 0x7a03, KEY_STOP }, | ||
791 | { 0x7a10, KEY_CHANNELUP }, | ||
792 | { 0x7a11, KEY_CHANNELDOWN }, | ||
793 | { 0x7a12, KEY_VOLUMEUP }, | ||
794 | { 0x7a13, KEY_VOLUMEDOWN }, | ||
795 | { 0x7a40, KEY_POWER }, | ||
796 | { 0x7a41, KEY_MUTE }, | ||
797 | |||
798 | /* Key codes for the Elgato EyeTV Diversity silver remote, | ||
799 | set dvb_usb_dib0700_ir_proto=0 */ | ||
800 | { 0x4501, KEY_POWER }, | ||
801 | { 0x4502, KEY_MUTE }, | ||
802 | { 0x4503, KEY_1 }, | ||
803 | { 0x4504, KEY_2 }, | ||
804 | { 0x4505, KEY_3 }, | ||
805 | { 0x4506, KEY_4 }, | ||
806 | { 0x4507, KEY_5 }, | ||
807 | { 0x4508, KEY_6 }, | ||
808 | { 0x4509, KEY_7 }, | ||
809 | { 0x450a, KEY_8 }, | ||
810 | { 0x450b, KEY_9 }, | ||
811 | { 0x450c, KEY_LAST }, | ||
812 | { 0x450d, KEY_0 }, | ||
813 | { 0x450e, KEY_ENTER }, | ||
814 | { 0x450f, KEY_RED }, | ||
815 | { 0x4510, KEY_CHANNELUP }, | ||
816 | { 0x4511, KEY_GREEN }, | ||
817 | { 0x4512, KEY_VOLUMEDOWN }, | ||
818 | { 0x4513, KEY_OK }, | ||
819 | { 0x4514, KEY_VOLUMEUP }, | ||
820 | { 0x4515, KEY_YELLOW }, | ||
821 | { 0x4516, KEY_CHANNELDOWN }, | ||
822 | { 0x4517, KEY_BLUE }, | ||
823 | { 0x4518, KEY_LEFT }, /* Skip backwards */ | ||
824 | { 0x4519, KEY_PLAYPAUSE }, | ||
825 | { 0x451a, KEY_RIGHT }, /* Skip forward */ | ||
826 | { 0x451b, KEY_REWIND }, | ||
827 | { 0x451c, KEY_L }, /* Live */ | ||
828 | { 0x451d, KEY_FASTFORWARD }, | ||
829 | { 0x451e, KEY_STOP }, /* 'Reveal' for Teletext */ | ||
830 | { 0x451f, KEY_MENU }, /* KEY_TEXT for Teletext */ | ||
831 | { 0x4540, KEY_RECORD }, /* Font 'Size' for Teletext */ | ||
832 | { 0x4541, KEY_SCREEN }, /* Full screen toggle, 'Hold' for Teletext */ | ||
833 | { 0x4542, KEY_SELECT }, /* Select video input, 'Select' for Teletext */ | ||
834 | }; | ||
835 | |||
836 | /* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */ | 536 | /* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */ |
837 | static struct dibx000_agc_config stk7700p_7000m_mt2060_agc_config = { | 537 | static struct dibx000_agc_config stk7700p_7000m_mt2060_agc_config = { |
838 | BAND_UHF | BAND_VHF, | 538 | BAND_UHF | BAND_VHF, |
@@ -2168,10 +1868,17 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2168 | } | 1868 | } |
2169 | }, | 1869 | }, |
2170 | 1870 | ||
2171 | .rc_interval = DEFAULT_RC_INTERVAL, | 1871 | .rc.core = { |
2172 | .rc_key_map = ir_codes_dib0700_table, | 1872 | .rc_interval = DEFAULT_RC_INTERVAL, |
2173 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 1873 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2174 | .rc_query = dib0700_rc_query | 1874 | .rc_query = dib0700_rc_query_old_firmware, |
1875 | .rc_props = { | ||
1876 | .allowed_protos = IR_TYPE_RC5 | | ||
1877 | IR_TYPE_RC6 | | ||
1878 | IR_TYPE_NEC, | ||
1879 | .change_protocol = dib0700_change_protocol, | ||
1880 | }, | ||
1881 | }, | ||
2175 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1882 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2176 | 1883 | ||
2177 | .num_adapters = 2, | 1884 | .num_adapters = 2, |
@@ -2197,10 +1904,17 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2197 | }, | 1904 | }, |
2198 | }, | 1905 | }, |
2199 | 1906 | ||
2200 | .rc_interval = DEFAULT_RC_INTERVAL, | 1907 | .rc.core = { |
2201 | .rc_key_map = ir_codes_dib0700_table, | 1908 | .rc_interval = DEFAULT_RC_INTERVAL, |
2202 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 1909 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2203 | .rc_query = dib0700_rc_query | 1910 | .rc_query = dib0700_rc_query_old_firmware, |
1911 | .rc_props = { | ||
1912 | .allowed_protos = IR_TYPE_RC5 | | ||
1913 | IR_TYPE_RC6 | | ||
1914 | IR_TYPE_NEC, | ||
1915 | .change_protocol = dib0700_change_protocol, | ||
1916 | }, | ||
1917 | }, | ||
2204 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1918 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2205 | 1919 | ||
2206 | .num_adapters = 2, | 1920 | .num_adapters = 2, |
@@ -2251,11 +1965,17 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2251 | 1965 | ||
2252 | }, | 1966 | }, |
2253 | 1967 | ||
2254 | .rc_interval = DEFAULT_RC_INTERVAL, | 1968 | .rc.core = { |
2255 | .rc_key_map = ir_codes_dib0700_table, | 1969 | .rc_interval = DEFAULT_RC_INTERVAL, |
2256 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 1970 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2257 | .rc_query = dib0700_rc_query | 1971 | .rc_query = dib0700_rc_query_old_firmware, |
2258 | 1972 | .rc_props = { | |
1973 | .allowed_protos = IR_TYPE_RC5 | | ||
1974 | IR_TYPE_RC6 | | ||
1975 | IR_TYPE_NEC, | ||
1976 | .change_protocol = dib0700_change_protocol, | ||
1977 | }, | ||
1978 | }, | ||
2259 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1979 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2260 | 1980 | ||
2261 | .num_adapters = 1, | 1981 | .num_adapters = 1, |
@@ -2288,10 +2008,18 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2288 | } | 2008 | } |
2289 | }, | 2009 | }, |
2290 | 2010 | ||
2291 | .rc_interval = DEFAULT_RC_INTERVAL, | 2011 | .rc.core = { |
2292 | .rc_key_map = ir_codes_dib0700_table, | 2012 | .rc_interval = DEFAULT_RC_INTERVAL, |
2293 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2013 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2294 | .rc_query = dib0700_rc_query | 2014 | .module_name = "dib0700", |
2015 | .rc_query = dib0700_rc_query_old_firmware, | ||
2016 | .rc_props = { | ||
2017 | .allowed_protos = IR_TYPE_RC5 | | ||
2018 | IR_TYPE_RC6 | | ||
2019 | IR_TYPE_NEC, | ||
2020 | .change_protocol = dib0700_change_protocol, | ||
2021 | }, | ||
2022 | }, | ||
2295 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2023 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2296 | 2024 | ||
2297 | .num_adapters = 1, | 2025 | .num_adapters = 1, |
@@ -2358,11 +2086,18 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2358 | }, | 2086 | }, |
2359 | }, | 2087 | }, |
2360 | 2088 | ||
2361 | .rc_interval = DEFAULT_RC_INTERVAL, | 2089 | .rc.core = { |
2362 | .rc_key_map = ir_codes_dib0700_table, | 2090 | .rc_interval = DEFAULT_RC_INTERVAL, |
2363 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2091 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2364 | .rc_query = dib0700_rc_query | 2092 | .module_name = "dib0700", |
2365 | 2093 | .rc_query = dib0700_rc_query_old_firmware, | |
2094 | .rc_props = { | ||
2095 | .allowed_protos = IR_TYPE_RC5 | | ||
2096 | IR_TYPE_RC6 | | ||
2097 | IR_TYPE_NEC, | ||
2098 | .change_protocol = dib0700_change_protocol, | ||
2099 | }, | ||
2100 | }, | ||
2366 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2101 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2367 | 2102 | ||
2368 | .num_adapters = 1, | 2103 | .num_adapters = 1, |
@@ -2397,11 +2132,18 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2397 | }, | 2132 | }, |
2398 | }, | 2133 | }, |
2399 | 2134 | ||
2400 | .rc_interval = DEFAULT_RC_INTERVAL, | 2135 | .rc.core = { |
2401 | .rc_key_map = ir_codes_dib0700_table, | 2136 | .rc_interval = DEFAULT_RC_INTERVAL, |
2402 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2137 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2403 | .rc_query = dib0700_rc_query | 2138 | .module_name = "dib0700", |
2404 | 2139 | .rc_query = dib0700_rc_query_old_firmware, | |
2140 | .rc_props = { | ||
2141 | .allowed_protos = IR_TYPE_RC5 | | ||
2142 | IR_TYPE_RC6 | | ||
2143 | IR_TYPE_NEC, | ||
2144 | .change_protocol = dib0700_change_protocol, | ||
2145 | }, | ||
2146 | }, | ||
2405 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2147 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2406 | 2148 | ||
2407 | .num_adapters = 2, | 2149 | .num_adapters = 2, |
@@ -2431,7 +2173,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2431 | } | 2173 | } |
2432 | }, | 2174 | }, |
2433 | 2175 | ||
2434 | .num_device_descs = 7, | 2176 | .num_device_descs = 6, |
2435 | .devices = { | 2177 | .devices = { |
2436 | { "DiBcom STK7070PD reference design", | 2178 | { "DiBcom STK7070PD reference design", |
2437 | { &dib0700_usb_id_table[17], NULL }, | 2179 | { &dib0700_usb_id_table[17], NULL }, |
@@ -2458,15 +2200,69 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2458 | { &dib0700_usb_id_table[44], NULL }, | 2200 | { &dib0700_usb_id_table[44], NULL }, |
2459 | { NULL }, | 2201 | { NULL }, |
2460 | }, | 2202 | }, |
2203 | }, | ||
2204 | |||
2205 | .rc.core = { | ||
2206 | .rc_interval = DEFAULT_RC_INTERVAL, | ||
2207 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | ||
2208 | .module_name = "dib0700", | ||
2209 | .rc_query = dib0700_rc_query_old_firmware, | ||
2210 | .rc_props = { | ||
2211 | .allowed_protos = IR_TYPE_RC5 | | ||
2212 | IR_TYPE_RC6 | | ||
2213 | IR_TYPE_NEC, | ||
2214 | .change_protocol = dib0700_change_protocol, | ||
2215 | }, | ||
2216 | }, | ||
2217 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | ||
2218 | |||
2219 | .num_adapters = 2, | ||
2220 | .adapter = { | ||
2221 | { | ||
2222 | .caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, | ||
2223 | .pid_filter_count = 32, | ||
2224 | .pid_filter = stk70x0p_pid_filter, | ||
2225 | .pid_filter_ctrl = stk70x0p_pid_filter_ctrl, | ||
2226 | .frontend_attach = stk7070pd_frontend_attach0, | ||
2227 | .tuner_attach = dib7070p_tuner_attach, | ||
2228 | |||
2229 | DIB0700_DEFAULT_STREAMING_CONFIG(0x02), | ||
2230 | |||
2231 | .size_of_priv = sizeof(struct dib0700_adapter_state), | ||
2232 | }, { | ||
2233 | .caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, | ||
2234 | .pid_filter_count = 32, | ||
2235 | .pid_filter = stk70x0p_pid_filter, | ||
2236 | .pid_filter_ctrl = stk70x0p_pid_filter_ctrl, | ||
2237 | .frontend_attach = stk7070pd_frontend_attach1, | ||
2238 | .tuner_attach = dib7070p_tuner_attach, | ||
2239 | |||
2240 | DIB0700_DEFAULT_STREAMING_CONFIG(0x03), | ||
2241 | |||
2242 | .size_of_priv = sizeof(struct dib0700_adapter_state), | ||
2243 | } | ||
2244 | }, | ||
2245 | |||
2246 | .num_device_descs = 1, | ||
2247 | .devices = { | ||
2461 | { "Elgato EyeTV Diversity", | 2248 | { "Elgato EyeTV Diversity", |
2462 | { &dib0700_usb_id_table[68], NULL }, | 2249 | { &dib0700_usb_id_table[68], NULL }, |
2463 | { NULL }, | 2250 | { NULL }, |
2464 | }, | 2251 | }, |
2465 | }, | 2252 | }, |
2466 | .rc_interval = DEFAULT_RC_INTERVAL, | 2253 | |
2467 | .rc_key_map = ir_codes_dib0700_table, | 2254 | .rc.core = { |
2468 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2255 | .rc_interval = DEFAULT_RC_INTERVAL, |
2469 | .rc_query = dib0700_rc_query | 2256 | .rc_codes = RC_MAP_DIB0700_NEC_TABLE, |
2257 | .module_name = "dib0700", | ||
2258 | .rc_query = dib0700_rc_query_old_firmware, | ||
2259 | .rc_props = { | ||
2260 | .allowed_protos = IR_TYPE_RC5 | | ||
2261 | IR_TYPE_RC6 | | ||
2262 | IR_TYPE_NEC, | ||
2263 | .change_protocol = dib0700_change_protocol, | ||
2264 | }, | ||
2265 | }, | ||
2470 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2266 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2471 | 2267 | ||
2472 | .num_adapters = 1, | 2268 | .num_adapters = 1, |
@@ -2525,10 +2321,19 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2525 | { NULL }, | 2321 | { NULL }, |
2526 | }, | 2322 | }, |
2527 | }, | 2323 | }, |
2528 | .rc_interval = DEFAULT_RC_INTERVAL, | 2324 | |
2529 | .rc_key_map = ir_codes_dib0700_table, | 2325 | .rc.core = { |
2530 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2326 | .rc_interval = DEFAULT_RC_INTERVAL, |
2531 | .rc_query = dib0700_rc_query | 2327 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2328 | .module_name = "dib0700", | ||
2329 | .rc_query = dib0700_rc_query_old_firmware, | ||
2330 | .rc_props = { | ||
2331 | .allowed_protos = IR_TYPE_RC5 | | ||
2332 | IR_TYPE_RC6 | | ||
2333 | IR_TYPE_NEC, | ||
2334 | .change_protocol = dib0700_change_protocol, | ||
2335 | }, | ||
2336 | }, | ||
2532 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2337 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2533 | .num_adapters = 1, | 2338 | .num_adapters = 1, |
2534 | .adapter = { | 2339 | .adapter = { |
@@ -2554,10 +2359,19 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2554 | { NULL }, | 2359 | { NULL }, |
2555 | }, | 2360 | }, |
2556 | }, | 2361 | }, |
2557 | .rc_interval = DEFAULT_RC_INTERVAL, | 2362 | |
2558 | .rc_key_map = ir_codes_dib0700_table, | 2363 | .rc.core = { |
2559 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2364 | .rc_interval = DEFAULT_RC_INTERVAL, |
2560 | .rc_query = dib0700_rc_query | 2365 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2366 | .module_name = "dib0700", | ||
2367 | .rc_query = dib0700_rc_query_old_firmware, | ||
2368 | .rc_props = { | ||
2369 | .allowed_protos = IR_TYPE_RC5 | | ||
2370 | IR_TYPE_RC6 | | ||
2371 | IR_TYPE_NEC, | ||
2372 | .change_protocol = dib0700_change_protocol, | ||
2373 | }, | ||
2374 | }, | ||
2561 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2375 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2562 | .num_adapters = 1, | 2376 | .num_adapters = 1, |
2563 | .adapter = { | 2377 | .adapter = { |
@@ -2615,10 +2429,19 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2615 | { NULL }, | 2429 | { NULL }, |
2616 | }, | 2430 | }, |
2617 | }, | 2431 | }, |
2618 | .rc_interval = DEFAULT_RC_INTERVAL, | 2432 | |
2619 | .rc_key_map = ir_codes_dib0700_table, | 2433 | .rc.core = { |
2620 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2434 | .rc_interval = DEFAULT_RC_INTERVAL, |
2621 | .rc_query = dib0700_rc_query | 2435 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2436 | .module_name = "dib0700", | ||
2437 | .rc_query = dib0700_rc_query_old_firmware, | ||
2438 | .rc_props = { | ||
2439 | .allowed_protos = IR_TYPE_RC5 | | ||
2440 | IR_TYPE_RC6 | | ||
2441 | IR_TYPE_NEC, | ||
2442 | .change_protocol = dib0700_change_protocol, | ||
2443 | }, | ||
2444 | }, | ||
2622 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2445 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2623 | .num_adapters = 1, | 2446 | .num_adapters = 1, |
2624 | .adapter = { | 2447 | .adapter = { |
@@ -2653,11 +2476,18 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2653 | }, | 2476 | }, |
2654 | }, | 2477 | }, |
2655 | 2478 | ||
2656 | .rc_interval = DEFAULT_RC_INTERVAL, | 2479 | .rc.core = { |
2657 | .rc_key_map = ir_codes_dib0700_table, | 2480 | .rc_interval = DEFAULT_RC_INTERVAL, |
2658 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2481 | .rc_codes = RC_MAP_DIB0700_NEC_TABLE, |
2659 | .rc_query = dib0700_rc_query | 2482 | .module_name = "dib0700", |
2660 | 2483 | .rc_query = dib0700_rc_query_old_firmware, | |
2484 | .rc_props = { | ||
2485 | .allowed_protos = IR_TYPE_RC5 | | ||
2486 | IR_TYPE_RC6 | | ||
2487 | IR_TYPE_NEC, | ||
2488 | .change_protocol = dib0700_change_protocol, | ||
2489 | }, | ||
2490 | }, | ||
2661 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2491 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2662 | .num_adapters = 2, | 2492 | .num_adapters = 2, |
2663 | .adapter = { | 2493 | .adapter = { |
@@ -2697,10 +2527,18 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2697 | }, | 2527 | }, |
2698 | }, | 2528 | }, |
2699 | 2529 | ||
2700 | .rc_interval = DEFAULT_RC_INTERVAL, | 2530 | .rc.core = { |
2701 | .rc_key_map = ir_codes_dib0700_table, | 2531 | .rc_interval = DEFAULT_RC_INTERVAL, |
2702 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2532 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2703 | .rc_query = dib0700_rc_query | 2533 | .module_name = "dib0700", |
2534 | .rc_query = dib0700_rc_query_old_firmware, | ||
2535 | .rc_props = { | ||
2536 | .allowed_protos = IR_TYPE_RC5 | | ||
2537 | IR_TYPE_RC6 | | ||
2538 | IR_TYPE_NEC, | ||
2539 | .change_protocol = dib0700_change_protocol, | ||
2540 | }, | ||
2541 | }, | ||
2704 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2542 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2705 | .num_adapters = 1, | 2543 | .num_adapters = 1, |
2706 | .adapter = { | 2544 | .adapter = { |
@@ -2728,10 +2566,18 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2728 | }, | 2566 | }, |
2729 | }, | 2567 | }, |
2730 | 2568 | ||
2731 | .rc_interval = DEFAULT_RC_INTERVAL, | 2569 | .rc.core = { |
2732 | .rc_key_map = ir_codes_dib0700_table, | 2570 | .rc_interval = DEFAULT_RC_INTERVAL, |
2733 | .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table), | 2571 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2734 | .rc_query = dib0700_rc_query | 2572 | .module_name = "dib0700", |
2573 | .rc_query = dib0700_rc_query_old_firmware, | ||
2574 | .rc_props = { | ||
2575 | .allowed_protos = IR_TYPE_RC5 | | ||
2576 | IR_TYPE_RC6 | | ||
2577 | IR_TYPE_NEC, | ||
2578 | .change_protocol = dib0700_change_protocol, | ||
2579 | }, | ||
2580 | }, | ||
2735 | }, | 2581 | }, |
2736 | }; | 2582 | }; |
2737 | 2583 | ||