aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/dib0700_devices.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dib0700_devices.c')
-rw-r--r--drivers/media/dvb/dvb-usb/dib0700_devices.c614
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
476static 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 */
481static 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
565static 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 */
837static struct dibx000_agc_config stk7700p_7000m_mt2060_agc_config = { 537static 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