aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:37:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:37:45 -0400
commitfb091be08d1acf184e8801dfdcace6e0cb19b1fe (patch)
treecbd0c4200fd8628d592167589ca790e36fc4ae26 /drivers/media/dvb/dvb-usb
parentbd7fc2f2d807fdb254f7efc542f8eec3f23e289e (diff)
parente8d0416796d43a950ec7b65629e53419b2e22453 (diff)
Merge branch 'v4l_for_2.6.35' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'v4l_for_2.6.35' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (534 commits) V4L/DVB (13554a): v4l: Use the video_drvdata function in drivers V4L/DVB: vivi and mem2mem_testdev need slab.h to build V4L/DVB: tm6000: bugfix image position V4L/DVB: IR/imon: remove dead IMON_KEY_RELEASE_OFFSET V4L/DVB: tm6000: README - add vbi V4L/DVB: Fix unlock logic at medusa_video_init V4L/DVB: fix dvb frontend lockup V4L/DVB: s2255drv: remove dead code V4L/DVB: s2255drv: return if vdev not found V4L/DVB: ov511: cleanup: remove unneeded null check V4L/DVB: media/mem2mem: dereferencing free memory V4L/DVB: media/IR: Add missing include file to rc-map.c V4L/DVB: dvb/stv6110x: cleanup error handling V4L/DVB: ngene: Add lgdt3303 and mt2131 deps to Kconfig V4L/DVB: ngene: start separating out DVB functions into separate file V4L/DVB: ngene: split out card specific code into a separate file V4L/DVB: ngene: split out i2c code into a separate file V4L/DVB: ngene: add initial support for digital side of Avermedia m780 V4L/DVB: ngene: properly support boards where channel 0 isn't a TS input V4L-DVB: ngene: make sure that tuner headers are included ...
Diffstat (limited to 'drivers/media/dvb/dvb-usb')
-rw-r--r--drivers/media/dvb/dvb-usb/a800.c6
-rw-r--r--drivers/media/dvb/dvb-usb/af9005-remote.c16
-rw-r--r--drivers/media/dvb/dvb-usb/af9005.c8
-rw-r--r--drivers/media/dvb/dvb-usb/af9005.h4
-rw-r--r--drivers/media/dvb/dvb-usb/af9015.c43
-rw-r--r--drivers/media/dvb/dvb-usb/af9015.h18
-rw-r--r--drivers/media/dvb/dvb-usb/anysee.c6
-rw-r--r--drivers/media/dvb/dvb-usb/az6027.c114
-rw-r--r--drivers/media/dvb/dvb-usb/cinergyT2-core.c6
-rw-r--r--drivers/media/dvb/dvb-usb/cxusb.c51
-rw-r--r--drivers/media/dvb/dvb-usb/dib0700_devices.c100
-rw-r--r--drivers/media/dvb/dvb-usb/dibusb-common.c4
-rw-r--r--drivers/media/dvb/dvb-usb/dibusb-mb.c8
-rw-r--r--drivers/media/dvb/dvb-usb/dibusb-mc.c2
-rw-r--r--drivers/media/dvb/dvb-usb/dibusb.h2
-rw-r--r--drivers/media/dvb/dvb-usb/digitv.c6
-rw-r--r--drivers/media/dvb/dvb-usb/dtt200u.c18
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-ids.h9
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-urb.c2
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb.h7
-rw-r--r--drivers/media/dvb/dvb-usb/dw2102.c44
-rw-r--r--drivers/media/dvb/dvb-usb/gp8psk.c4
-rw-r--r--drivers/media/dvb/dvb-usb/m920x.c18
-rw-r--r--drivers/media/dvb/dvb-usb/nova-t-usb2.c18
-rw-r--r--drivers/media/dvb/dvb-usb/opera1.c16
-rw-r--r--drivers/media/dvb/dvb-usb/vp702x.c12
-rw-r--r--drivers/media/dvb/dvb-usb/vp7045.c12
27 files changed, 334 insertions, 220 deletions
diff --git a/drivers/media/dvb/dvb-usb/a800.c b/drivers/media/dvb/dvb-usb/a800.c
index 6247239982e9..b6cbb1dfc5f1 100644
--- a/drivers/media/dvb/dvb-usb/a800.c
+++ b/drivers/media/dvb/dvb-usb/a800.c
@@ -37,7 +37,7 @@ static int a800_identify_state(struct usb_device *udev, struct dvb_usb_device_pr
37 return 0; 37 return 0;
38} 38}
39 39
40static struct dvb_usb_rc_key a800_rc_keys[] = { 40static struct dvb_usb_rc_key ir_codes_a800_table[] = {
41 { 0x0201, KEY_PROG1 }, /* SOURCE */ 41 { 0x0201, KEY_PROG1 }, /* SOURCE */
42 { 0x0200, KEY_POWER }, /* POWER */ 42 { 0x0200, KEY_POWER }, /* POWER */
43 { 0x0205, KEY_1 }, /* 1 */ 43 { 0x0205, KEY_1 }, /* 1 */
@@ -147,8 +147,8 @@ static struct dvb_usb_device_properties a800_properties = {
147 .identify_state = a800_identify_state, 147 .identify_state = a800_identify_state,
148 148
149 .rc_interval = DEFAULT_RC_INTERVAL, 149 .rc_interval = DEFAULT_RC_INTERVAL,
150 .rc_key_map = a800_rc_keys, 150 .rc_key_map = ir_codes_a800_table,
151 .rc_key_map_size = ARRAY_SIZE(a800_rc_keys), 151 .rc_key_map_size = ARRAY_SIZE(ir_codes_a800_table),
152 .rc_query = a800_rc_query, 152 .rc_query = a800_rc_query,
153 153
154 .i2c_algo = &dibusb_i2c_algo, 154 .i2c_algo = &dibusb_i2c_algo,
diff --git a/drivers/media/dvb/dvb-usb/af9005-remote.c b/drivers/media/dvb/dvb-usb/af9005-remote.c
index f4379c650a19..b41fa873b04d 100644
--- a/drivers/media/dvb/dvb-usb/af9005-remote.c
+++ b/drivers/media/dvb/dvb-usb/af9005-remote.c
@@ -33,7 +33,7 @@ MODULE_PARM_DESC(debug,
33 33
34#define deb_decode(args...) dprintk(dvb_usb_af9005_remote_debug,0x01,args) 34#define deb_decode(args...) dprintk(dvb_usb_af9005_remote_debug,0x01,args)
35 35
36struct dvb_usb_rc_key af9005_rc_keys[] = { 36struct dvb_usb_rc_key ir_codes_af9005_table[] = {
37 37
38 {0x01b7, KEY_POWER}, 38 {0x01b7, KEY_POWER},
39 {0x01a7, KEY_VOLUMEUP}, 39 {0x01a7, KEY_VOLUMEUP},
@@ -74,7 +74,7 @@ struct dvb_usb_rc_key af9005_rc_keys[] = {
74 {0x00d5, KEY_GOTO}, /* marked jump on the remote */ 74 {0x00d5, KEY_GOTO}, /* marked jump on the remote */
75}; 75};
76 76
77int af9005_rc_keys_size = ARRAY_SIZE(af9005_rc_keys); 77int ir_codes_af9005_table_size = ARRAY_SIZE(ir_codes_af9005_table);
78 78
79static int repeatable_keys[] = { 79static int repeatable_keys[] = {
80 KEY_VOLUMEUP, 80 KEY_VOLUMEUP,
@@ -130,10 +130,10 @@ int af9005_rc_decode(struct dvb_usb_device *d, u8 * data, int len, u32 * event,
130 deb_decode("code != inverted code\n"); 130 deb_decode("code != inverted code\n");
131 return 0; 131 return 0;
132 } 132 }
133 for (i = 0; i < af9005_rc_keys_size; i++) { 133 for (i = 0; i < ir_codes_af9005_table_size; i++) {
134 if (rc5_custom(&af9005_rc_keys[i]) == cust 134 if (rc5_custom(&ir_codes_af9005_table[i]) == cust
135 && rc5_data(&af9005_rc_keys[i]) == dat) { 135 && rc5_data(&ir_codes_af9005_table[i]) == dat) {
136 *event = af9005_rc_keys[i].event; 136 *event = ir_codes_af9005_table[i].event;
137 *state = REMOTE_KEY_PRESSED; 137 *state = REMOTE_KEY_PRESSED;
138 deb_decode 138 deb_decode
139 ("key pressed, event %x\n", *event); 139 ("key pressed, event %x\n", *event);
@@ -146,8 +146,8 @@ int af9005_rc_decode(struct dvb_usb_device *d, u8 * data, int len, u32 * event,
146 return 0; 146 return 0;
147} 147}
148 148
149EXPORT_SYMBOL(af9005_rc_keys); 149EXPORT_SYMBOL(ir_codes_af9005_table);
150EXPORT_SYMBOL(af9005_rc_keys_size); 150EXPORT_SYMBOL(ir_codes_af9005_table_size);
151EXPORT_SYMBOL(af9005_rc_decode); 151EXPORT_SYMBOL(af9005_rc_decode);
152 152
153MODULE_AUTHOR("Luca Olivetti <luca@ventoso.org>"); 153MODULE_AUTHOR("Luca Olivetti <luca@ventoso.org>");
diff --git a/drivers/media/dvb/dvb-usb/af9005.c b/drivers/media/dvb/dvb-usb/af9005.c
index ca5a0a4d2a47..cfd6107d5349 100644
--- a/drivers/media/dvb/dvb-usb/af9005.c
+++ b/drivers/media/dvb/dvb-usb/af9005.c
@@ -1109,8 +1109,8 @@ static int __init af9005_usb_module_init(void)
1109 return result; 1109 return result;
1110 } 1110 }
1111 rc_decode = symbol_request(af9005_rc_decode); 1111 rc_decode = symbol_request(af9005_rc_decode);
1112 rc_keys = symbol_request(af9005_rc_keys); 1112 rc_keys = symbol_request(ir_codes_af9005_table);
1113 rc_keys_size = symbol_request(af9005_rc_keys_size); 1113 rc_keys_size = symbol_request(ir_codes_af9005_table_size);
1114 if (rc_decode == NULL || rc_keys == NULL || rc_keys_size == NULL) { 1114 if (rc_decode == NULL || rc_keys == NULL || rc_keys_size == NULL) {
1115 err("af9005_rc_decode function not found, disabling remote"); 1115 err("af9005_rc_decode function not found, disabling remote");
1116 af9005_properties.rc_query = NULL; 1116 af9005_properties.rc_query = NULL;
@@ -1128,9 +1128,9 @@ static void __exit af9005_usb_module_exit(void)
1128 if (rc_decode != NULL) 1128 if (rc_decode != NULL)
1129 symbol_put(af9005_rc_decode); 1129 symbol_put(af9005_rc_decode);
1130 if (rc_keys != NULL) 1130 if (rc_keys != NULL)
1131 symbol_put(af9005_rc_keys); 1131 symbol_put(ir_codes_af9005_table);
1132 if (rc_keys_size != NULL) 1132 if (rc_keys_size != NULL)
1133 symbol_put(af9005_rc_keys_size); 1133 symbol_put(ir_codes_af9005_table_size);
1134 /* deregister this driver from the USB subsystem */ 1134 /* deregister this driver from the USB subsystem */
1135 usb_deregister(&af9005_usb_driver); 1135 usb_deregister(&af9005_usb_driver);
1136} 1136}
diff --git a/drivers/media/dvb/dvb-usb/af9005.h b/drivers/media/dvb/dvb-usb/af9005.h
index 0bc48a012187..088e7083a39b 100644
--- a/drivers/media/dvb/dvb-usb/af9005.h
+++ b/drivers/media/dvb/dvb-usb/af9005.h
@@ -3490,7 +3490,7 @@ extern u8 regmask[8];
3490/* remote control decoder */ 3490/* remote control decoder */
3491extern int af9005_rc_decode(struct dvb_usb_device *d, u8 * data, int len, 3491extern int af9005_rc_decode(struct dvb_usb_device *d, u8 * data, int len,
3492 u32 * event, int *state); 3492 u32 * event, int *state);
3493extern struct dvb_usb_rc_key af9005_rc_keys[]; 3493extern struct dvb_usb_rc_key ir_codes_af9005_table[];
3494extern int af9005_rc_keys_size; 3494extern int ir_codes_af9005_table_size;
3495 3495
3496#endif 3496#endif
diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c
index 74d94e45324d..66c7c3ea7990 100644
--- a/drivers/media/dvb/dvb-usb/af9015.c
+++ b/drivers/media/dvb/dvb-usb/af9015.c
@@ -752,19 +752,19 @@ static const struct af9015_setup *af9015_setup_match(unsigned int id,
752 752
753static const struct af9015_setup af9015_setup_modparam[] = { 753static const struct af9015_setup af9015_setup_modparam[] = {
754 { AF9015_REMOTE_A_LINK_DTU_M, 754 { AF9015_REMOTE_A_LINK_DTU_M,
755 af9015_rc_keys_a_link, ARRAY_SIZE(af9015_rc_keys_a_link), 755 ir_codes_af9015_table_a_link, ARRAY_SIZE(ir_codes_af9015_table_a_link),
756 af9015_ir_table_a_link, ARRAY_SIZE(af9015_ir_table_a_link) }, 756 af9015_ir_table_a_link, ARRAY_SIZE(af9015_ir_table_a_link) },
757 { AF9015_REMOTE_MSI_DIGIVOX_MINI_II_V3, 757 { AF9015_REMOTE_MSI_DIGIVOX_MINI_II_V3,
758 af9015_rc_keys_msi, ARRAY_SIZE(af9015_rc_keys_msi), 758 ir_codes_af9015_table_msi, ARRAY_SIZE(ir_codes_af9015_table_msi),
759 af9015_ir_table_msi, ARRAY_SIZE(af9015_ir_table_msi) }, 759 af9015_ir_table_msi, ARRAY_SIZE(af9015_ir_table_msi) },
760 { AF9015_REMOTE_MYGICTV_U718, 760 { AF9015_REMOTE_MYGICTV_U718,
761 af9015_rc_keys_mygictv, ARRAY_SIZE(af9015_rc_keys_mygictv), 761 ir_codes_af9015_table_mygictv, ARRAY_SIZE(ir_codes_af9015_table_mygictv),
762 af9015_ir_table_mygictv, ARRAY_SIZE(af9015_ir_table_mygictv) }, 762 af9015_ir_table_mygictv, ARRAY_SIZE(af9015_ir_table_mygictv) },
763 { AF9015_REMOTE_DIGITTRADE_DVB_T, 763 { AF9015_REMOTE_DIGITTRADE_DVB_T,
764 af9015_rc_keys_digittrade, ARRAY_SIZE(af9015_rc_keys_digittrade), 764 ir_codes_af9015_table_digittrade, ARRAY_SIZE(ir_codes_af9015_table_digittrade),
765 af9015_ir_table_digittrade, ARRAY_SIZE(af9015_ir_table_digittrade) }, 765 af9015_ir_table_digittrade, ARRAY_SIZE(af9015_ir_table_digittrade) },
766 { AF9015_REMOTE_AVERMEDIA_KS, 766 { AF9015_REMOTE_AVERMEDIA_KS,
767 af9015_rc_keys_avermedia, ARRAY_SIZE(af9015_rc_keys_avermedia), 767 ir_codes_af9015_table_avermedia, ARRAY_SIZE(ir_codes_af9015_table_avermedia),
768 af9015_ir_table_avermedia_ks, ARRAY_SIZE(af9015_ir_table_avermedia_ks) }, 768 af9015_ir_table_avermedia_ks, ARRAY_SIZE(af9015_ir_table_avermedia_ks) },
769 { } 769 { }
770}; 770};
@@ -772,32 +772,32 @@ static const struct af9015_setup af9015_setup_modparam[] = {
772/* don't add new entries here anymore, use hashes instead */ 772/* don't add new entries here anymore, use hashes instead */
773static const struct af9015_setup af9015_setup_usbids[] = { 773static const struct af9015_setup af9015_setup_usbids[] = {
774 { USB_VID_LEADTEK, 774 { USB_VID_LEADTEK,
775 af9015_rc_keys_leadtek, ARRAY_SIZE(af9015_rc_keys_leadtek), 775 ir_codes_af9015_table_leadtek, ARRAY_SIZE(ir_codes_af9015_table_leadtek),
776 af9015_ir_table_leadtek, ARRAY_SIZE(af9015_ir_table_leadtek) }, 776 af9015_ir_table_leadtek, ARRAY_SIZE(af9015_ir_table_leadtek) },
777 { USB_VID_VISIONPLUS, 777 { USB_VID_VISIONPLUS,
778 af9015_rc_keys_twinhan, ARRAY_SIZE(af9015_rc_keys_twinhan), 778 ir_codes_af9015_table_twinhan, ARRAY_SIZE(ir_codes_af9015_table_twinhan),
779 af9015_ir_table_twinhan, ARRAY_SIZE(af9015_ir_table_twinhan) }, 779 af9015_ir_table_twinhan, ARRAY_SIZE(af9015_ir_table_twinhan) },
780 { USB_VID_KWORLD_2, /* TODO: use correct rc keys */ 780 { USB_VID_KWORLD_2, /* TODO: use correct rc keys */
781 af9015_rc_keys_twinhan, ARRAY_SIZE(af9015_rc_keys_twinhan), 781 ir_codes_af9015_table_twinhan, ARRAY_SIZE(ir_codes_af9015_table_twinhan),
782 af9015_ir_table_kworld, ARRAY_SIZE(af9015_ir_table_kworld) }, 782 af9015_ir_table_kworld, ARRAY_SIZE(af9015_ir_table_kworld) },
783 { USB_VID_AVERMEDIA, 783 { USB_VID_AVERMEDIA,
784 af9015_rc_keys_avermedia, ARRAY_SIZE(af9015_rc_keys_avermedia), 784 ir_codes_af9015_table_avermedia, ARRAY_SIZE(ir_codes_af9015_table_avermedia),
785 af9015_ir_table_avermedia, ARRAY_SIZE(af9015_ir_table_avermedia) }, 785 af9015_ir_table_avermedia, ARRAY_SIZE(af9015_ir_table_avermedia) },
786 { USB_VID_MSI_2, 786 { USB_VID_MSI_2,
787 af9015_rc_keys_msi_digivox_iii, ARRAY_SIZE(af9015_rc_keys_msi_digivox_iii), 787 ir_codes_af9015_table_msi_digivox_iii, ARRAY_SIZE(ir_codes_af9015_table_msi_digivox_iii),
788 af9015_ir_table_msi_digivox_iii, ARRAY_SIZE(af9015_ir_table_msi_digivox_iii) }, 788 af9015_ir_table_msi_digivox_iii, ARRAY_SIZE(af9015_ir_table_msi_digivox_iii) },
789 { } 789 { }
790}; 790};
791 791
792static const struct af9015_setup af9015_setup_hashes[] = { 792static const struct af9015_setup af9015_setup_hashes[] = {
793 { 0xb8feb708, 793 { 0xb8feb708,
794 af9015_rc_keys_msi, ARRAY_SIZE(af9015_rc_keys_msi), 794 ir_codes_af9015_table_msi, ARRAY_SIZE(ir_codes_af9015_table_msi),
795 af9015_ir_table_msi, ARRAY_SIZE(af9015_ir_table_msi) }, 795 af9015_ir_table_msi, ARRAY_SIZE(af9015_ir_table_msi) },
796 { 0xa3703d00, 796 { 0xa3703d00,
797 af9015_rc_keys_a_link, ARRAY_SIZE(af9015_rc_keys_a_link), 797 ir_codes_af9015_table_a_link, ARRAY_SIZE(ir_codes_af9015_table_a_link),
798 af9015_ir_table_a_link, ARRAY_SIZE(af9015_ir_table_a_link) }, 798 af9015_ir_table_a_link, ARRAY_SIZE(af9015_ir_table_a_link) },
799 { 0x9b7dc64e, 799 { 0x9b7dc64e,
800 af9015_rc_keys_mygictv, ARRAY_SIZE(af9015_rc_keys_mygictv), 800 ir_codes_af9015_table_mygictv, ARRAY_SIZE(ir_codes_af9015_table_mygictv),
801 af9015_ir_table_mygictv, ARRAY_SIZE(af9015_ir_table_mygictv) }, 801 af9015_ir_table_mygictv, ARRAY_SIZE(af9015_ir_table_mygictv) },
802 { } 802 { }
803}; 803};
@@ -836,8 +836,8 @@ static void af9015_set_remote_config(struct usb_device *udev,
836 } else if (udev->descriptor.idProduct == 836 } else if (udev->descriptor.idProduct ==
837 cpu_to_le16(USB_PID_TREKSTOR_DVBT)) { 837 cpu_to_le16(USB_PID_TREKSTOR_DVBT)) {
838 table = &(const struct af9015_setup){ 0, 838 table = &(const struct af9015_setup){ 0,
839 af9015_rc_keys_trekstor, 839 ir_codes_af9015_table_trekstor,
840 ARRAY_SIZE(af9015_rc_keys_trekstor), 840 ARRAY_SIZE(ir_codes_af9015_table_trekstor),
841 af9015_ir_table_trekstor, 841 af9015_ir_table_trekstor,
842 ARRAY_SIZE(af9015_ir_table_trekstor) 842 ARRAY_SIZE(af9015_ir_table_trekstor)
843 }; 843 };
@@ -1297,6 +1297,8 @@ static struct usb_device_id af9015_usb_table[] = {
1297 {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_SVEON_STV20)}, 1297 {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_SVEON_STV20)},
1298 {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_TINYTWIN_2)}, 1298 {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_TINYTWIN_2)},
1299 {USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV2000DS)}, 1299 {USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV2000DS)},
1300/* 30 */{USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_UB383_T)},
1301 {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_395U_4)},
1300 {0}, 1302 {0},
1301}; 1303};
1302MODULE_DEVICE_TABLE(usb, af9015_usb_table); 1304MODULE_DEVICE_TABLE(usb, af9015_usb_table);
@@ -1500,7 +1502,8 @@ static struct dvb_usb_device_properties af9015_properties[] = {
1500 "(VS-DVB-T 395U)", 1502 "(VS-DVB-T 395U)",
1501 .cold_ids = {&af9015_usb_table[16], 1503 .cold_ids = {&af9015_usb_table[16],
1502 &af9015_usb_table[17], 1504 &af9015_usb_table[17],
1503 &af9015_usb_table[18], NULL}, 1505 &af9015_usb_table[18],
1506 &af9015_usb_table[31], NULL},
1504 .warm_ids = {NULL}, 1507 .warm_ids = {NULL},
1505 }, 1508 },
1506 { 1509 {
@@ -1569,7 +1572,7 @@ static struct dvb_usb_device_properties af9015_properties[] = {
1569 1572
1570 .i2c_algo = &af9015_i2c_algo, 1573 .i2c_algo = &af9015_i2c_algo,
1571 1574
1572 .num_device_descs = 7, /* max 9 */ 1575 .num_device_descs = 8, /* max 9 */
1573 .devices = { 1576 .devices = {
1574 { 1577 {
1575 .name = "AverMedia AVerTV Volar GPS 805 (A805)", 1578 .name = "AverMedia AVerTV Volar GPS 805 (A805)",
@@ -1608,6 +1611,12 @@ static struct dvb_usb_device_properties af9015_properties[] = {
1608 .cold_ids = {&af9015_usb_table[29], NULL}, 1611 .cold_ids = {&af9015_usb_table[29], NULL},
1609 .warm_ids = {NULL}, 1612 .warm_ids = {NULL},
1610 }, 1613 },
1614 {
1615 .name = "KWorld USB DVB-T Stick Mobile " \
1616 "(UB383-T)",
1617 .cold_ids = {&af9015_usb_table[30], NULL},
1618 .warm_ids = {NULL},
1619 },
1611 } 1620 }
1612 }, 1621 },
1613}; 1622};
diff --git a/drivers/media/dvb/dvb-usb/af9015.h b/drivers/media/dvb/dvb-usb/af9015.h
index ef36b1831490..63b2a4907b7e 100644
--- a/drivers/media/dvb/dvb-usb/af9015.h
+++ b/drivers/media/dvb/dvb-usb/af9015.h
@@ -123,7 +123,7 @@ enum af9015_remote {
123 123
124/* LeadTek - Y04G0051 */ 124/* LeadTek - Y04G0051 */
125/* Leadtek WinFast DTV Dongle Gold */ 125/* Leadtek WinFast DTV Dongle Gold */
126static struct dvb_usb_rc_key af9015_rc_keys_leadtek[] = { 126static struct dvb_usb_rc_key ir_codes_af9015_table_leadtek[] = {
127 { 0x001e, KEY_1 }, 127 { 0x001e, KEY_1 },
128 { 0x001f, KEY_2 }, 128 { 0x001f, KEY_2 },
129 { 0x0020, KEY_3 }, 129 { 0x0020, KEY_3 },
@@ -227,7 +227,7 @@ static u8 af9015_ir_table_leadtek[] = {
227}; 227};
228 228
229/* TwinHan AzureWave AD-TU700(704J) */ 229/* TwinHan AzureWave AD-TU700(704J) */
230static struct dvb_usb_rc_key af9015_rc_keys_twinhan[] = { 230static struct dvb_usb_rc_key ir_codes_af9015_table_twinhan[] = {
231 { 0x053f, KEY_POWER }, 231 { 0x053f, KEY_POWER },
232 { 0x0019, KEY_FAVORITES }, /* Favorite List */ 232 { 0x0019, KEY_FAVORITES }, /* Favorite List */
233 { 0x0004, KEY_TEXT }, /* Teletext */ 233 { 0x0004, KEY_TEXT }, /* Teletext */
@@ -338,7 +338,7 @@ static u8 af9015_ir_table_twinhan[] = {
338}; 338};
339 339
340/* A-Link DTU(m) */ 340/* A-Link DTU(m) */
341static struct dvb_usb_rc_key af9015_rc_keys_a_link[] = { 341static struct dvb_usb_rc_key ir_codes_af9015_table_a_link[] = {
342 { 0x001e, KEY_1 }, 342 { 0x001e, KEY_1 },
343 { 0x001f, KEY_2 }, 343 { 0x001f, KEY_2 },
344 { 0x0020, KEY_3 }, 344 { 0x0020, KEY_3 },
@@ -381,7 +381,7 @@ static u8 af9015_ir_table_a_link[] = {
381}; 381};
382 382
383/* MSI DIGIVOX mini II V3.0 */ 383/* MSI DIGIVOX mini II V3.0 */
384static struct dvb_usb_rc_key af9015_rc_keys_msi[] = { 384static struct dvb_usb_rc_key ir_codes_af9015_table_msi[] = {
385 { 0x001e, KEY_1 }, 385 { 0x001e, KEY_1 },
386 { 0x001f, KEY_2 }, 386 { 0x001f, KEY_2 },
387 { 0x0020, KEY_3 }, 387 { 0x0020, KEY_3 },
@@ -424,7 +424,7 @@ static u8 af9015_ir_table_msi[] = {
424}; 424};
425 425
426/* MYGICTV U718 */ 426/* MYGICTV U718 */
427static struct dvb_usb_rc_key af9015_rc_keys_mygictv[] = { 427static struct dvb_usb_rc_key ir_codes_af9015_table_mygictv[] = {
428 { 0x003d, KEY_SWITCHVIDEOMODE }, 428 { 0x003d, KEY_SWITCHVIDEOMODE },
429 /* TV / AV */ 429 /* TV / AV */
430 { 0x0545, KEY_POWER }, 430 { 0x0545, KEY_POWER },
@@ -550,7 +550,7 @@ static u8 af9015_ir_table_kworld[] = {
550}; 550};
551 551
552/* AverMedia Volar X */ 552/* AverMedia Volar X */
553static struct dvb_usb_rc_key af9015_rc_keys_avermedia[] = { 553static struct dvb_usb_rc_key ir_codes_af9015_table_avermedia[] = {
554 { 0x053d, KEY_PROG1 }, /* SOURCE */ 554 { 0x053d, KEY_PROG1 }, /* SOURCE */
555 { 0x0512, KEY_POWER }, /* POWER */ 555 { 0x0512, KEY_POWER }, /* POWER */
556 { 0x051e, KEY_1 }, /* 1 */ 556 { 0x051e, KEY_1 }, /* 1 */
@@ -656,7 +656,7 @@ static u8 af9015_ir_table_avermedia_ks[] = {
656}; 656};
657 657
658/* Digittrade DVB-T USB Stick */ 658/* Digittrade DVB-T USB Stick */
659static struct dvb_usb_rc_key af9015_rc_keys_digittrade[] = { 659static struct dvb_usb_rc_key ir_codes_af9015_table_digittrade[] = {
660 { 0x010f, KEY_LAST }, /* RETURN */ 660 { 0x010f, KEY_LAST }, /* RETURN */
661 { 0x0517, KEY_TEXT }, /* TELETEXT */ 661 { 0x0517, KEY_TEXT }, /* TELETEXT */
662 { 0x0108, KEY_EPG }, /* EPG */ 662 { 0x0108, KEY_EPG }, /* EPG */
@@ -719,7 +719,7 @@ static u8 af9015_ir_table_digittrade[] = {
719}; 719};
720 720
721/* TREKSTOR DVB-T USB Stick */ 721/* TREKSTOR DVB-T USB Stick */
722static struct dvb_usb_rc_key af9015_rc_keys_trekstor[] = { 722static struct dvb_usb_rc_key ir_codes_af9015_table_trekstor[] = {
723 { 0x0704, KEY_AGAIN }, /* Home */ 723 { 0x0704, KEY_AGAIN }, /* Home */
724 { 0x0705, KEY_MUTE }, /* Mute */ 724 { 0x0705, KEY_MUTE }, /* Mute */
725 { 0x0706, KEY_UP }, /* Up */ 725 { 0x0706, KEY_UP }, /* Up */
@@ -782,7 +782,7 @@ static u8 af9015_ir_table_trekstor[] = {
782}; 782};
783 783
784/* MSI DIGIVOX mini III */ 784/* MSI DIGIVOX mini III */
785static struct dvb_usb_rc_key af9015_rc_keys_msi_digivox_iii[] = { 785static struct dvb_usb_rc_key ir_codes_af9015_table_msi_digivox_iii[] = {
786 { 0x0713, KEY_POWER }, /* [red power button] */ 786 { 0x0713, KEY_POWER }, /* [red power button] */
787 { 0x073b, KEY_VIDEO }, /* Source */ 787 { 0x073b, KEY_VIDEO }, /* Source */
788 { 0x073e, KEY_ZOOM }, /* Zoom */ 788 { 0x073e, KEY_ZOOM }, /* Zoom */
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
index bb69f3719f9a..faca1ad88a67 100644
--- a/drivers/media/dvb/dvb-usb/anysee.c
+++ b/drivers/media/dvb/dvb-usb/anysee.c
@@ -399,7 +399,7 @@ static int anysee_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
399 return 0; 399 return 0;
400} 400}
401 401
402static struct dvb_usb_rc_key anysee_rc_keys[] = { 402static struct dvb_usb_rc_key ir_codes_anysee_table[] = {
403 { 0x0100, KEY_0 }, 403 { 0x0100, KEY_0 },
404 { 0x0101, KEY_1 }, 404 { 0x0101, KEY_1 },
405 { 0x0102, KEY_2 }, 405 { 0x0102, KEY_2 },
@@ -518,8 +518,8 @@ static struct dvb_usb_device_properties anysee_properties = {
518 } 518 }
519 }, 519 },
520 520
521 .rc_key_map = anysee_rc_keys, 521 .rc_key_map = ir_codes_anysee_table,
522 .rc_key_map_size = ARRAY_SIZE(anysee_rc_keys), 522 .rc_key_map_size = ARRAY_SIZE(ir_codes_anysee_table),
523 .rc_query = anysee_rc_query, 523 .rc_query = anysee_rc_query,
524 .rc_interval = 200, /* windows driver uses 500ms */ 524 .rc_interval = 200, /* windows driver uses 500ms */
525 525
diff --git a/drivers/media/dvb/dvb-usb/az6027.c b/drivers/media/dvb/dvb-usb/az6027.c
index d7290b2c0913..6681ac1c56e3 100644
--- a/drivers/media/dvb/dvb-usb/az6027.c
+++ b/drivers/media/dvb/dvb-usb/az6027.c
@@ -125,12 +125,12 @@ static const struct stb0899_s1_reg az6027_stb0899_s1_init_3[] = {
125 { STB0899_RCOMPC , 0xc9 }, 125 { STB0899_RCOMPC , 0xc9 },
126 { STB0899_AGC1CN , 0x01 }, 126 { STB0899_AGC1CN , 0x01 },
127 { STB0899_AGC1REF , 0x10 }, 127 { STB0899_AGC1REF , 0x10 },
128 { STB0899_RTC , 0x23 }, 128 { STB0899_RTC , 0x23 },
129 { STB0899_TMGCFG , 0x4e }, 129 { STB0899_TMGCFG , 0x4e },
130 { STB0899_AGC2REF , 0x34 }, 130 { STB0899_AGC2REF , 0x34 },
131 { STB0899_TLSR , 0x84 }, 131 { STB0899_TLSR , 0x84 },
132 { STB0899_CFD , 0xf7 }, 132 { STB0899_CFD , 0xf7 },
133 { STB0899_ACLC , 0x87 }, 133 { STB0899_ACLC , 0x87 },
134 { STB0899_BCLC , 0x94 }, 134 { STB0899_BCLC , 0x94 },
135 { STB0899_EQON , 0x41 }, 135 { STB0899_EQON , 0x41 },
136 { STB0899_LDT , 0xf1 }, 136 { STB0899_LDT , 0xf1 },
@@ -183,10 +183,10 @@ static const struct stb0899_s1_reg az6027_stb0899_s1_init_3[] = {
183 { STB0899_ECNT3M , 0x0a }, 183 { STB0899_ECNT3M , 0x0a },
184 { STB0899_ECNT3L , 0xad }, 184 { STB0899_ECNT3L , 0xad },
185 { STB0899_FECAUTO1 , 0x06 }, 185 { STB0899_FECAUTO1 , 0x06 },
186 { STB0899_FECM , 0x01 }, 186 { STB0899_FECM , 0x01 },
187 { STB0899_VTH12 , 0xb0 }, 187 { STB0899_VTH12 , 0xb0 },
188 { STB0899_VTH23 , 0x7a }, 188 { STB0899_VTH23 , 0x7a },
189 { STB0899_VTH34 , 0x58 }, 189 { STB0899_VTH34 , 0x58 },
190 { STB0899_VTH56 , 0x38 }, 190 { STB0899_VTH56 , 0x38 },
191 { STB0899_VTH67 , 0x34 }, 191 { STB0899_VTH67 , 0x34 },
192 { STB0899_VTH78 , 0x24 }, 192 { STB0899_VTH78 , 0x24 },
@@ -195,7 +195,7 @@ static const struct stb0899_s1_reg az6027_stb0899_s1_init_3[] = {
195 { STB0899_RSULC , 0xb1 }, /* DVB = 0xb1, DSS = 0xa1 */ 195 { STB0899_RSULC , 0xb1 }, /* DVB = 0xb1, DSS = 0xa1 */
196 { STB0899_TSULC , 0x42 }, 196 { STB0899_TSULC , 0x42 },
197 { STB0899_RSLLC , 0x41 }, 197 { STB0899_RSLLC , 0x41 },
198 { STB0899_TSLPL , 0x12 }, 198 { STB0899_TSLPL , 0x12 },
199 { STB0899_TSCFGH , 0x0c }, 199 { STB0899_TSCFGH , 0x0c },
200 { STB0899_TSCFGM , 0x00 }, 200 { STB0899_TSCFGM , 0x00 },
201 { STB0899_TSCFGL , 0x00 }, 201 { STB0899_TSCFGL , 0x00 },
@@ -386,7 +386,7 @@ static int az6027_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
386} 386}
387 387
388/* keys for the enclosed remote control */ 388/* keys for the enclosed remote control */
389static struct dvb_usb_rc_key az6027_rc_keys[] = { 389static struct dvb_usb_rc_key ir_codes_az6027_table[] = {
390 { 0x01, KEY_1 }, 390 { 0x01, KEY_1 },
391 { 0x02, KEY_2 }, 391 { 0x02, KEY_2 },
392}; 392};
@@ -417,11 +417,15 @@ static int az6027_ci_read_attribute_mem(struct dvb_ca_en50221 *ca,
417 u16 value; 417 u16 value;
418 u16 index; 418 u16 index;
419 int blen; 419 int blen;
420 u8 b[12]; 420 u8 *b;
421 421
422 if (slot != 0) 422 if (slot != 0)
423 return -EINVAL; 423 return -EINVAL;
424 424
425 b = kmalloc(12, GFP_KERNEL);
426 if (!b)
427 return -ENOMEM;
428
425 mutex_lock(&state->ca_mutex); 429 mutex_lock(&state->ca_mutex);
426 430
427 req = 0xC1; 431 req = 0xC1;
@@ -438,6 +442,7 @@ static int az6027_ci_read_attribute_mem(struct dvb_ca_en50221 *ca,
438 } 442 }
439 443
440 mutex_unlock(&state->ca_mutex); 444 mutex_unlock(&state->ca_mutex);
445 kfree(b);
441 return ret; 446 return ret;
442} 447}
443 448
@@ -485,11 +490,15 @@ static int az6027_ci_read_cam_control(struct dvb_ca_en50221 *ca,
485 u16 value; 490 u16 value;
486 u16 index; 491 u16 index;
487 int blen; 492 int blen;
488 u8 b[12]; 493 u8 *b;
489 494
490 if (slot != 0) 495 if (slot != 0)
491 return -EINVAL; 496 return -EINVAL;
492 497
498 b = kmalloc(12, GFP_KERNEL);
499 if (!b)
500 return -ENOMEM;
501
493 mutex_lock(&state->ca_mutex); 502 mutex_lock(&state->ca_mutex);
494 503
495 req = 0xC3; 504 req = 0xC3;
@@ -510,6 +519,7 @@ static int az6027_ci_read_cam_control(struct dvb_ca_en50221 *ca,
510 } 519 }
511 520
512 mutex_unlock(&state->ca_mutex); 521 mutex_unlock(&state->ca_mutex);
522 kfree(b);
513 return ret; 523 return ret;
514} 524}
515 525
@@ -556,7 +566,11 @@ static int CI_CamReady(struct dvb_ca_en50221 *ca, int slot)
556 u16 value; 566 u16 value;
557 u16 index; 567 u16 index;
558 int blen; 568 int blen;
559 u8 b[12]; 569 u8 *b;
570
571 b = kmalloc(12, GFP_KERNEL);
572 if (!b)
573 return -ENOMEM;
560 574
561 req = 0xC8; 575 req = 0xC8;
562 value = 0; 576 value = 0;
@@ -570,6 +584,7 @@ static int CI_CamReady(struct dvb_ca_en50221 *ca, int slot)
570 } else{ 584 } else{
571 ret = b[0]; 585 ret = b[0];
572 } 586 }
587 kfree(b);
573 return ret; 588 return ret;
574} 589}
575 590
@@ -667,8 +682,11 @@ static int az6027_ci_poll_slot_status(struct dvb_ca_en50221 *ca, int slot, int o
667 u16 value; 682 u16 value;
668 u16 index; 683 u16 index;
669 int blen; 684 int blen;
670 u8 b[12]; 685 u8 *b;
671 686
687 b = kmalloc(12, GFP_KERNEL);
688 if (!b)
689 return -ENOMEM;
672 mutex_lock(&state->ca_mutex); 690 mutex_lock(&state->ca_mutex);
673 691
674 req = 0xC5; 692 req = 0xC5;
@@ -683,15 +701,13 @@ static int az6027_ci_poll_slot_status(struct dvb_ca_en50221 *ca, int slot, int o
683 } else 701 } else
684 ret = 0; 702 ret = 0;
685 703
686 if (b[0] == 0) { 704 if (!ret && b[0] == 1) {
687 ret = 0;
688
689 } else if (b[0] == 1) {
690 ret = DVB_CA_EN50221_POLL_CAM_PRESENT | 705 ret = DVB_CA_EN50221_POLL_CAM_PRESENT |
691 DVB_CA_EN50221_POLL_CAM_READY; 706 DVB_CA_EN50221_POLL_CAM_READY;
692 } 707 }
693 708
694 mutex_unlock(&state->ca_mutex); 709 mutex_unlock(&state->ca_mutex);
710 kfree(b);
695 return ret; 711 return ret;
696} 712}
697 713
@@ -943,10 +959,16 @@ static int az6027_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int n
943 u16 value; 959 u16 value;
944 int length; 960 int length;
945 u8 req; 961 u8 req;
946 u8 data[256]; 962 u8 *data;
947 963
948 if (mutex_lock_interruptible(&d->i2c_mutex) < 0) 964 data = kmalloc(256, GFP_KERNEL);
965 if (!data)
966 return -ENOMEM;
967
968 if (mutex_lock_interruptible(&d->i2c_mutex) < 0) {
969 kfree(data);
949 return -EAGAIN; 970 return -EAGAIN;
971 }
950 972
951 if (num > 2) 973 if (num > 2)
952 warn("more than 2 i2c messages at a time is not handled yet. TODO."); 974 warn("more than 2 i2c messages at a time is not handled yet. TODO.");
@@ -976,17 +998,14 @@ static int az6027_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int n
976 i++; 998 i++;
977 } else { 999 } else {
978 1000
979 if (msg[i].addr == 0xd0) { 1001 /* demod 16bit addr */
980 /* demod 16bit addr */ 1002 req = 0xBD;
981 req = 0xBD; 1003 index = (((msg[i].buf[0] << 8) & 0xff00) | (msg[i].buf[1] & 0x00ff));
982 index = (((msg[i].buf[0] << 8) & 0xff00) | (msg[i].buf[1] & 0x00ff)); 1004 value = msg[i].addr + (2 << 8);
983 value = msg[i].addr + (2 << 8); 1005 length = msg[i].len - 2;
984 length = msg[i].len - 2; 1006 len = msg[i].len - 2;
985 len = msg[i].len - 2; 1007 for (j = 0; j < len; j++)
986 for (j = 0; j < len; j++) 1008 data[j] = msg[i].buf[j + 2];
987 data[j] = msg[i].buf[j + 2];
988
989 }
990 az6027_usb_out_op(d, req, value, index, data, length); 1009 az6027_usb_out_op(d, req, value, index, data, length);
991 } 1010 }
992 } 1011 }
@@ -1019,6 +1038,7 @@ static int az6027_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int n
1019 } 1038 }
1020 } 1039 }
1021 mutex_unlock(&d->i2c_mutex); 1040 mutex_unlock(&d->i2c_mutex);
1041 kfree(data);
1022 1042
1023 return i; 1043 return i;
1024} 1044}
@@ -1039,8 +1059,14 @@ int az6027_identify_state(struct usb_device *udev,
1039 struct dvb_usb_device_description **desc, 1059 struct dvb_usb_device_description **desc,
1040 int *cold) 1060 int *cold)
1041{ 1061{
1042 u8 b[16]; 1062 u8 *b;
1043 s16 ret = usb_control_msg(udev, 1063 s16 ret;
1064
1065 b = kmalloc(16, GFP_KERNEL);
1066 if (!b)
1067 return -ENOMEM;
1068
1069 ret = usb_control_msg(udev,
1044 usb_rcvctrlpipe(udev, 0), 1070 usb_rcvctrlpipe(udev, 0),
1045 0xb7, 1071 0xb7,
1046 USB_TYPE_VENDOR | USB_DIR_IN, 1072 USB_TYPE_VENDOR | USB_DIR_IN,
@@ -1051,7 +1077,7 @@ int az6027_identify_state(struct usb_device *udev,
1051 USB_CTRL_GET_TIMEOUT); 1077 USB_CTRL_GET_TIMEOUT);
1052 1078
1053 *cold = ret <= 0; 1079 *cold = ret <= 0;
1054 1080 kfree(b);
1055 deb_info("cold: %d\n", *cold); 1081 deb_info("cold: %d\n", *cold);
1056 return 0; 1082 return 0;
1057} 1083}
@@ -1059,8 +1085,10 @@ int az6027_identify_state(struct usb_device *udev,
1059 1085
1060static struct usb_device_id az6027_usb_table[] = { 1086static struct usb_device_id az6027_usb_table[] = {
1061 { USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_AZ6027) }, 1087 { USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_AZ6027) },
1062 { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_DVBS2CI) }, 1088 { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_DVBS2CI_V1) },
1063 { USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_HDCI) }, 1089 { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_DVBS2CI_V2) },
1090 { USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_HDCI_V1) },
1091 { USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_HDCI_V2) },
1064 { }, 1092 { },
1065}; 1093};
1066 1094
@@ -1097,18 +1125,34 @@ static struct dvb_usb_device_properties az6027_properties = {
1097 .power_ctrl = az6027_power_ctrl, 1125 .power_ctrl = az6027_power_ctrl,
1098 .read_mac_address = az6027_read_mac_addr, 1126 .read_mac_address = az6027_read_mac_addr,
1099 */ 1127 */
1100 .rc_key_map = az6027_rc_keys, 1128 .rc_key_map = ir_codes_az6027_table,
1101 .rc_key_map_size = ARRAY_SIZE(az6027_rc_keys), 1129 .rc_key_map_size = ARRAY_SIZE(ir_codes_az6027_table),
1102 .rc_interval = 400, 1130 .rc_interval = 400,
1103 .rc_query = az6027_rc_query, 1131 .rc_query = az6027_rc_query,
1104 .i2c_algo = &az6027_i2c_algo, 1132 .i2c_algo = &az6027_i2c_algo,
1105 1133
1106 .num_device_descs = 1, 1134 .num_device_descs = 5,
1107 .devices = { 1135 .devices = {
1108 { 1136 {
1109 .name = "AZUREWAVE DVB-S/S2 USB2.0 (AZ6027)", 1137 .name = "AZUREWAVE DVB-S/S2 USB2.0 (AZ6027)",
1110 .cold_ids = { &az6027_usb_table[0], NULL }, 1138 .cold_ids = { &az6027_usb_table[0], NULL },
1111 .warm_ids = { NULL }, 1139 .warm_ids = { NULL },
1140 }, {
1141 .name = "TERRATEC S7",
1142 .cold_ids = { &az6027_usb_table[1], NULL },
1143 .warm_ids = { NULL },
1144 }, {
1145 .name = "TERRATEC S7 MKII",
1146 .cold_ids = { &az6027_usb_table[2], NULL },
1147 .warm_ids = { NULL },
1148 }, {
1149 .name = "Technisat SkyStar USB 2 HD CI",
1150 .cold_ids = { &az6027_usb_table[3], NULL },
1151 .warm_ids = { NULL },
1152 }, {
1153 .name = "Technisat SkyStar USB 2 HD CI",
1154 .cold_ids = { &az6027_usb_table[4], NULL },
1155 .warm_ids = { NULL },
1112 }, 1156 },
1113 { NULL }, 1157 { NULL },
1114 } 1158 }
diff --git a/drivers/media/dvb/dvb-usb/cinergyT2-core.c b/drivers/media/dvb/dvb-usb/cinergyT2-core.c
index e37ac4d48602..5a9c14bdc980 100644
--- a/drivers/media/dvb/dvb-usb/cinergyT2-core.c
+++ b/drivers/media/dvb/dvb-usb/cinergyT2-core.c
@@ -84,7 +84,7 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
84 return 0; 84 return 0;
85} 85}
86 86
87static struct dvb_usb_rc_key cinergyt2_rc_keys[] = { 87static struct dvb_usb_rc_key ir_codes_cinergyt2_table[] = {
88 { 0x0401, KEY_POWER }, 88 { 0x0401, KEY_POWER },
89 { 0x0402, KEY_1 }, 89 { 0x0402, KEY_1 },
90 { 0x0403, KEY_2 }, 90 { 0x0403, KEY_2 },
@@ -218,8 +218,8 @@ static struct dvb_usb_device_properties cinergyt2_properties = {
218 .power_ctrl = cinergyt2_power_ctrl, 218 .power_ctrl = cinergyt2_power_ctrl,
219 219
220 .rc_interval = 50, 220 .rc_interval = 50,
221 .rc_key_map = cinergyt2_rc_keys, 221 .rc_key_map = ir_codes_cinergyt2_table,
222 .rc_key_map_size = ARRAY_SIZE(cinergyt2_rc_keys), 222 .rc_key_map_size = ARRAY_SIZE(ir_codes_cinergyt2_table),
223 .rc_query = cinergyt2_rc_query, 223 .rc_query = cinergyt2_rc_query,
224 224
225 .generic_bulk_ctrl_endpoint = 1, 225 .generic_bulk_ctrl_endpoint = 1,
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c
index 960376da7d59..0eb490889162 100644
--- a/drivers/media/dvb/dvb-usb/cxusb.c
+++ b/drivers/media/dvb/dvb-usb/cxusb.c
@@ -461,7 +461,7 @@ static int cxusb_d680_dmb_rc_query(struct dvb_usb_device *d, u32 *event,
461 return 0; 461 return 0;
462} 462}
463 463
464static struct dvb_usb_rc_key dvico_mce_rc_keys[] = { 464static struct dvb_usb_rc_key ir_codes_dvico_mce_table[] = {
465 { 0xfe02, KEY_TV }, 465 { 0xfe02, KEY_TV },
466 { 0xfe0e, KEY_MP3 }, 466 { 0xfe0e, KEY_MP3 },
467 { 0xfe1a, KEY_DVD }, 467 { 0xfe1a, KEY_DVD },
@@ -509,7 +509,7 @@ static struct dvb_usb_rc_key dvico_mce_rc_keys[] = {
509 { 0xfe4e, KEY_POWER }, 509 { 0xfe4e, KEY_POWER },
510}; 510};
511 511
512static struct dvb_usb_rc_key dvico_portable_rc_keys[] = { 512static struct dvb_usb_rc_key ir_codes_dvico_portable_table[] = {
513 { 0xfc02, KEY_SETUP }, /* Profile */ 513 { 0xfc02, KEY_SETUP }, /* Profile */
514 { 0xfc43, KEY_POWER2 }, 514 { 0xfc43, KEY_POWER2 },
515 { 0xfc06, KEY_EPG }, 515 { 0xfc06, KEY_EPG },
@@ -548,7 +548,7 @@ static struct dvb_usb_rc_key dvico_portable_rc_keys[] = {
548 { 0xfc00, KEY_UNKNOWN }, /* HD */ 548 { 0xfc00, KEY_UNKNOWN }, /* HD */
549}; 549};
550 550
551static struct dvb_usb_rc_key d680_dmb_rc_keys[] = { 551static struct dvb_usb_rc_key ir_codes_d680_dmb_table[] = {
552 { 0x0038, KEY_UNKNOWN }, /* TV/AV */ 552 { 0x0038, KEY_UNKNOWN }, /* TV/AV */
553 { 0x080c, KEY_ZOOM }, 553 { 0x080c, KEY_ZOOM },
554 { 0x0800, KEY_0 }, 554 { 0x0800, KEY_0 },
@@ -1025,8 +1025,9 @@ static int cxusb_dualdig4_rev2_frontend_attach(struct dvb_usb_adapter *adap)
1025 1025
1026 cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); 1026 cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1);
1027 1027
1028 dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, 1028 if (dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18,
1029 &cxusb_dualdig4_rev2_config); 1029 &cxusb_dualdig4_rev2_config) < 0)
1030 return -ENODEV;
1030 1031
1031 adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, 1032 adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80,
1032 &cxusb_dualdig4_rev2_config); 1033 &cxusb_dualdig4_rev2_config);
@@ -1449,8 +1450,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = {
1449 .i2c_algo = &cxusb_i2c_algo, 1450 .i2c_algo = &cxusb_i2c_algo,
1450 1451
1451 .rc_interval = 100, 1452 .rc_interval = 100,
1452 .rc_key_map = dvico_portable_rc_keys, 1453 .rc_key_map = ir_codes_dvico_portable_table,
1453 .rc_key_map_size = ARRAY_SIZE(dvico_portable_rc_keys), 1454 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_portable_table),
1454 .rc_query = cxusb_rc_query, 1455 .rc_query = cxusb_rc_query,
1455 1456
1456 .generic_bulk_ctrl_endpoint = 0x01, 1457 .generic_bulk_ctrl_endpoint = 0x01,
@@ -1500,8 +1501,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = {
1500 .i2c_algo = &cxusb_i2c_algo, 1501 .i2c_algo = &cxusb_i2c_algo,
1501 1502
1502 .rc_interval = 150, 1503 .rc_interval = 150,
1503 .rc_key_map = dvico_mce_rc_keys, 1504 .rc_key_map = ir_codes_dvico_mce_table,
1504 .rc_key_map_size = ARRAY_SIZE(dvico_mce_rc_keys), 1505 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_mce_table),
1505 .rc_query = cxusb_rc_query, 1506 .rc_query = cxusb_rc_query,
1506 1507
1507 .generic_bulk_ctrl_endpoint = 0x01, 1508 .generic_bulk_ctrl_endpoint = 0x01,
@@ -1559,8 +1560,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = {
1559 .i2c_algo = &cxusb_i2c_algo, 1560 .i2c_algo = &cxusb_i2c_algo,
1560 1561
1561 .rc_interval = 100, 1562 .rc_interval = 100,
1562 .rc_key_map = dvico_portable_rc_keys, 1563 .rc_key_map = ir_codes_dvico_portable_table,
1563 .rc_key_map_size = ARRAY_SIZE(dvico_portable_rc_keys), 1564 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_portable_table),
1564 .rc_query = cxusb_rc_query, 1565 .rc_query = cxusb_rc_query,
1565 1566
1566 .generic_bulk_ctrl_endpoint = 0x01, 1567 .generic_bulk_ctrl_endpoint = 0x01,
@@ -1609,8 +1610,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = {
1609 .i2c_algo = &cxusb_i2c_algo, 1610 .i2c_algo = &cxusb_i2c_algo,
1610 1611
1611 .rc_interval = 100, 1612 .rc_interval = 100,
1612 .rc_key_map = dvico_portable_rc_keys, 1613 .rc_key_map = ir_codes_dvico_portable_table,
1613 .rc_key_map_size = ARRAY_SIZE(dvico_portable_rc_keys), 1614 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_portable_table),
1614 .rc_query = cxusb_rc_query, 1615 .rc_query = cxusb_rc_query,
1615 1616
1616 .generic_bulk_ctrl_endpoint = 0x01, 1617 .generic_bulk_ctrl_endpoint = 0x01,
@@ -1658,8 +1659,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = {
1658 .generic_bulk_ctrl_endpoint = 0x01, 1659 .generic_bulk_ctrl_endpoint = 0x01,
1659 1660
1660 .rc_interval = 100, 1661 .rc_interval = 100,
1661 .rc_key_map = dvico_mce_rc_keys, 1662 .rc_key_map = ir_codes_dvico_mce_table,
1662 .rc_key_map_size = ARRAY_SIZE(dvico_mce_rc_keys), 1663 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_mce_table),
1663 .rc_query = cxusb_bluebird2_rc_query, 1664 .rc_query = cxusb_bluebird2_rc_query,
1664 1665
1665 .num_device_descs = 1, 1666 .num_device_descs = 1,
@@ -1706,8 +1707,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = {
1706 .generic_bulk_ctrl_endpoint = 0x01, 1707 .generic_bulk_ctrl_endpoint = 0x01,
1707 1708
1708 .rc_interval = 100, 1709 .rc_interval = 100,
1709 .rc_key_map = dvico_portable_rc_keys, 1710 .rc_key_map = ir_codes_dvico_portable_table,
1710 .rc_key_map_size = ARRAY_SIZE(dvico_portable_rc_keys), 1711 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_portable_table),
1711 .rc_query = cxusb_bluebird2_rc_query, 1712 .rc_query = cxusb_bluebird2_rc_query,
1712 1713
1713 .num_device_descs = 1, 1714 .num_device_descs = 1,
@@ -1756,8 +1757,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope
1756 .generic_bulk_ctrl_endpoint = 0x01, 1757 .generic_bulk_ctrl_endpoint = 0x01,
1757 1758
1758 .rc_interval = 100, 1759 .rc_interval = 100,
1759 .rc_key_map = dvico_portable_rc_keys, 1760 .rc_key_map = ir_codes_dvico_portable_table,
1760 .rc_key_map_size = ARRAY_SIZE(dvico_portable_rc_keys), 1761 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_portable_table),
1761 .rc_query = cxusb_rc_query, 1762 .rc_query = cxusb_rc_query,
1762 1763
1763 .num_device_descs = 1, 1764 .num_device_descs = 1,
@@ -1847,8 +1848,8 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = {
1847 .generic_bulk_ctrl_endpoint = 0x01, 1848 .generic_bulk_ctrl_endpoint = 0x01,
1848 1849
1849 .rc_interval = 100, 1850 .rc_interval = 100,
1850 .rc_key_map = dvico_mce_rc_keys, 1851 .rc_key_map = ir_codes_dvico_mce_table,
1851 .rc_key_map_size = ARRAY_SIZE(dvico_mce_rc_keys), 1852 .rc_key_map_size = ARRAY_SIZE(ir_codes_dvico_mce_table),
1852 .rc_query = cxusb_rc_query, 1853 .rc_query = cxusb_rc_query,
1853 1854
1854 .num_device_descs = 1, 1855 .num_device_descs = 1,
@@ -1895,8 +1896,8 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = {
1895 .generic_bulk_ctrl_endpoint = 0x01, 1896 .generic_bulk_ctrl_endpoint = 0x01,
1896 1897
1897 .rc_interval = 100, 1898 .rc_interval = 100,
1898 .rc_key_map = d680_dmb_rc_keys, 1899 .rc_key_map = ir_codes_d680_dmb_table,
1899 .rc_key_map_size = ARRAY_SIZE(d680_dmb_rc_keys), 1900 .rc_key_map_size = ARRAY_SIZE(ir_codes_d680_dmb_table),
1900 .rc_query = cxusb_d680_dmb_rc_query, 1901 .rc_query = cxusb_d680_dmb_rc_query,
1901 1902
1902 .num_device_descs = 1, 1903 .num_device_descs = 1,
@@ -1944,8 +1945,8 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = {
1944 .generic_bulk_ctrl_endpoint = 0x01, 1945 .generic_bulk_ctrl_endpoint = 0x01,
1945 1946
1946 .rc_interval = 100, 1947 .rc_interval = 100,
1947 .rc_key_map = d680_dmb_rc_keys, 1948 .rc_key_map = ir_codes_d680_dmb_table,
1948 .rc_key_map_size = ARRAY_SIZE(d680_dmb_rc_keys), 1949 .rc_key_map_size = ARRAY_SIZE(ir_codes_d680_dmb_table),
1949 .rc_query = cxusb_d680_dmb_rc_query, 1950 .rc_query = cxusb_d680_dmb_rc_query,
1950 1951
1951 .num_device_descs = 1, 1952 .num_device_descs = 1,
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c
index 34eab05afc6c..800800a9649e 100644
--- a/drivers/media/dvb/dvb-usb/dib0700_devices.c
+++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c
@@ -562,7 +562,7 @@ static int dib0700_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
562 return 0; 562 return 0;
563} 563}
564 564
565static struct dvb_usb_rc_key dib0700_rc_keys[] = { 565static struct dvb_usb_rc_key ir_codes_dib0700_table[] = {
566 /* Key codes for the tiny Pinnacle remote*/ 566 /* Key codes for the tiny Pinnacle remote*/
567 { 0x0700, KEY_MUTE }, 567 { 0x0700, KEY_MUTE },
568 { 0x0701, KEY_MENU }, /* Pinnacle logo */ 568 { 0x0701, KEY_MENU }, /* Pinnacle logo */
@@ -794,6 +794,43 @@ static struct dvb_usb_rc_key dib0700_rc_keys[] = {
794 { 0x7a13, KEY_VOLUMEDOWN }, 794 { 0x7a13, KEY_VOLUMEDOWN },
795 { 0x7a40, KEY_POWER }, 795 { 0x7a40, KEY_POWER },
796 { 0x7a41, KEY_MUTE }, 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 */
797}; 834};
798 835
799/* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */ 836/* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */
@@ -2049,6 +2086,7 @@ struct usb_device_id dib0700_usb_id_table[] = {
2049/* 65 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) }, 2086/* 65 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) },
2050 { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) }, 2087 { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) },
2051 { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK8096GP) }, 2088 { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK8096GP) },
2089 { USB_DEVICE(USB_VID_ELGATO, USB_PID_ELGATO_EYETV_DIVERSITY) },
2052 { 0 } /* Terminating entry */ 2090 { 0 } /* Terminating entry */
2053}; 2091};
2054MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); 2092MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
@@ -2131,8 +2169,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2131 }, 2169 },
2132 2170
2133 .rc_interval = DEFAULT_RC_INTERVAL, 2171 .rc_interval = DEFAULT_RC_INTERVAL,
2134 .rc_key_map = dib0700_rc_keys, 2172 .rc_key_map = ir_codes_dib0700_table,
2135 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2173 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2136 .rc_query = dib0700_rc_query 2174 .rc_query = dib0700_rc_query
2137 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2175 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2138 2176
@@ -2160,8 +2198,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2160 }, 2198 },
2161 2199
2162 .rc_interval = DEFAULT_RC_INTERVAL, 2200 .rc_interval = DEFAULT_RC_INTERVAL,
2163 .rc_key_map = dib0700_rc_keys, 2201 .rc_key_map = ir_codes_dib0700_table,
2164 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2202 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2165 .rc_query = dib0700_rc_query 2203 .rc_query = dib0700_rc_query
2166 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2204 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2167 2205
@@ -2214,8 +2252,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2214 }, 2252 },
2215 2253
2216 .rc_interval = DEFAULT_RC_INTERVAL, 2254 .rc_interval = DEFAULT_RC_INTERVAL,
2217 .rc_key_map = dib0700_rc_keys, 2255 .rc_key_map = ir_codes_dib0700_table,
2218 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2256 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2219 .rc_query = dib0700_rc_query 2257 .rc_query = dib0700_rc_query
2220 2258
2221 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2259 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
@@ -2251,8 +2289,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2251 }, 2289 },
2252 2290
2253 .rc_interval = DEFAULT_RC_INTERVAL, 2291 .rc_interval = DEFAULT_RC_INTERVAL,
2254 .rc_key_map = dib0700_rc_keys, 2292 .rc_key_map = ir_codes_dib0700_table,
2255 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2293 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2256 .rc_query = dib0700_rc_query 2294 .rc_query = dib0700_rc_query
2257 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2295 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2258 2296
@@ -2321,8 +2359,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2321 }, 2359 },
2322 2360
2323 .rc_interval = DEFAULT_RC_INTERVAL, 2361 .rc_interval = DEFAULT_RC_INTERVAL,
2324 .rc_key_map = dib0700_rc_keys, 2362 .rc_key_map = ir_codes_dib0700_table,
2325 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2363 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2326 .rc_query = dib0700_rc_query 2364 .rc_query = dib0700_rc_query
2327 2365
2328 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2366 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
@@ -2360,8 +2398,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2360 }, 2398 },
2361 2399
2362 .rc_interval = DEFAULT_RC_INTERVAL, 2400 .rc_interval = DEFAULT_RC_INTERVAL,
2363 .rc_key_map = dib0700_rc_keys, 2401 .rc_key_map = ir_codes_dib0700_table,
2364 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2402 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2365 .rc_query = dib0700_rc_query 2403 .rc_query = dib0700_rc_query
2366 2404
2367 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2405 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
@@ -2393,7 +2431,7 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2393 } 2431 }
2394 }, 2432 },
2395 2433
2396 .num_device_descs = 6, 2434 .num_device_descs = 7,
2397 .devices = { 2435 .devices = {
2398 { "DiBcom STK7070PD reference design", 2436 { "DiBcom STK7070PD reference design",
2399 { &dib0700_usb_id_table[17], NULL }, 2437 { &dib0700_usb_id_table[17], NULL },
@@ -2419,11 +2457,15 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2419 { "Sony PlayTV", 2457 { "Sony PlayTV",
2420 { &dib0700_usb_id_table[44], NULL }, 2458 { &dib0700_usb_id_table[44], NULL },
2421 { NULL }, 2459 { NULL },
2422 } 2460 },
2461 { "Elgato EyeTV Diversity",
2462 { &dib0700_usb_id_table[68], NULL },
2463 { NULL },
2464 },
2423 }, 2465 },
2424 .rc_interval = DEFAULT_RC_INTERVAL, 2466 .rc_interval = DEFAULT_RC_INTERVAL,
2425 .rc_key_map = dib0700_rc_keys, 2467 .rc_key_map = ir_codes_dib0700_table,
2426 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2468 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2427 .rc_query = dib0700_rc_query 2469 .rc_query = dib0700_rc_query
2428 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2470 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2429 2471
@@ -2484,8 +2526,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2484 }, 2526 },
2485 }, 2527 },
2486 .rc_interval = DEFAULT_RC_INTERVAL, 2528 .rc_interval = DEFAULT_RC_INTERVAL,
2487 .rc_key_map = dib0700_rc_keys, 2529 .rc_key_map = ir_codes_dib0700_table,
2488 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2530 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2489 .rc_query = dib0700_rc_query 2531 .rc_query = dib0700_rc_query
2490 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2532 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2491 .num_adapters = 1, 2533 .num_adapters = 1,
@@ -2513,8 +2555,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2513 }, 2555 },
2514 }, 2556 },
2515 .rc_interval = DEFAULT_RC_INTERVAL, 2557 .rc_interval = DEFAULT_RC_INTERVAL,
2516 .rc_key_map = dib0700_rc_keys, 2558 .rc_key_map = ir_codes_dib0700_table,
2517 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2559 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2518 .rc_query = dib0700_rc_query 2560 .rc_query = dib0700_rc_query
2519 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2561 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2520 .num_adapters = 1, 2562 .num_adapters = 1,
@@ -2574,8 +2616,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2574 }, 2616 },
2575 }, 2617 },
2576 .rc_interval = DEFAULT_RC_INTERVAL, 2618 .rc_interval = DEFAULT_RC_INTERVAL,
2577 .rc_key_map = dib0700_rc_keys, 2619 .rc_key_map = ir_codes_dib0700_table,
2578 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2620 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2579 .rc_query = dib0700_rc_query 2621 .rc_query = dib0700_rc_query
2580 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2622 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2581 .num_adapters = 1, 2623 .num_adapters = 1,
@@ -2612,8 +2654,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2612 }, 2654 },
2613 2655
2614 .rc_interval = DEFAULT_RC_INTERVAL, 2656 .rc_interval = DEFAULT_RC_INTERVAL,
2615 .rc_key_map = dib0700_rc_keys, 2657 .rc_key_map = ir_codes_dib0700_table,
2616 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2658 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2617 .rc_query = dib0700_rc_query 2659 .rc_query = dib0700_rc_query
2618 2660
2619 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2661 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
@@ -2656,8 +2698,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2656 }, 2698 },
2657 2699
2658 .rc_interval = DEFAULT_RC_INTERVAL, 2700 .rc_interval = DEFAULT_RC_INTERVAL,
2659 .rc_key_map = dib0700_rc_keys, 2701 .rc_key_map = ir_codes_dib0700_table,
2660 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2702 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2661 .rc_query = dib0700_rc_query 2703 .rc_query = dib0700_rc_query
2662 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, 2704 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
2663 .num_adapters = 1, 2705 .num_adapters = 1,
@@ -2687,8 +2729,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2687 }, 2729 },
2688 2730
2689 .rc_interval = DEFAULT_RC_INTERVAL, 2731 .rc_interval = DEFAULT_RC_INTERVAL,
2690 .rc_key_map = dib0700_rc_keys, 2732 .rc_key_map = ir_codes_dib0700_table,
2691 .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), 2733 .rc_key_map_size = ARRAY_SIZE(ir_codes_dib0700_table),
2692 .rc_query = dib0700_rc_query 2734 .rc_query = dib0700_rc_query
2693 }, 2735 },
2694}; 2736};
diff --git a/drivers/media/dvb/dvb-usb/dibusb-common.c b/drivers/media/dvb/dvb-usb/dibusb-common.c
index 9143b5631e88..bc08bc0b723c 100644
--- a/drivers/media/dvb/dvb-usb/dibusb-common.c
+++ b/drivers/media/dvb/dvb-usb/dibusb-common.c
@@ -327,7 +327,7 @@ EXPORT_SYMBOL(dibusb_dib3000mc_tuner_attach);
327/* 327/*
328 * common remote control stuff 328 * common remote control stuff
329 */ 329 */
330struct dvb_usb_rc_key dibusb_rc_keys[] = { 330struct dvb_usb_rc_key ir_codes_dibusb_table[] = {
331 /* Key codes for the little Artec T1/Twinhan/HAMA/ remote. */ 331 /* Key codes for the little Artec T1/Twinhan/HAMA/ remote. */
332 { 0x0016, KEY_POWER }, 332 { 0x0016, KEY_POWER },
333 { 0x0010, KEY_MUTE }, 333 { 0x0010, KEY_MUTE },
@@ -456,7 +456,7 @@ struct dvb_usb_rc_key dibusb_rc_keys[] = {
456 { 0x804e, KEY_ENTER }, 456 { 0x804e, KEY_ENTER },
457 { 0x804f, KEY_VOLUMEDOWN }, 457 { 0x804f, KEY_VOLUMEDOWN },
458}; 458};
459EXPORT_SYMBOL(dibusb_rc_keys); 459EXPORT_SYMBOL(ir_codes_dibusb_table);
460 460
461int dibusb_rc_query(struct dvb_usb_device *d, u32 *event, int *state) 461int dibusb_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
462{ 462{
diff --git a/drivers/media/dvb/dvb-usb/dibusb-mb.c b/drivers/media/dvb/dvb-usb/dibusb-mb.c
index 5c0126dc1ff9..eb2e6f050fbe 100644
--- a/drivers/media/dvb/dvb-usb/dibusb-mb.c
+++ b/drivers/media/dvb/dvb-usb/dibusb-mb.c
@@ -212,7 +212,7 @@ static struct dvb_usb_device_properties dibusb1_1_properties = {
212 .power_ctrl = dibusb_power_ctrl, 212 .power_ctrl = dibusb_power_ctrl,
213 213
214 .rc_interval = DEFAULT_RC_INTERVAL, 214 .rc_interval = DEFAULT_RC_INTERVAL,
215 .rc_key_map = dibusb_rc_keys, 215 .rc_key_map = ir_codes_dibusb_table,
216 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ 216 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */
217 .rc_query = dibusb_rc_query, 217 .rc_query = dibusb_rc_query,
218 218
@@ -296,7 +296,7 @@ static struct dvb_usb_device_properties dibusb1_1_an2235_properties = {
296 .power_ctrl = dibusb_power_ctrl, 296 .power_ctrl = dibusb_power_ctrl,
297 297
298 .rc_interval = DEFAULT_RC_INTERVAL, 298 .rc_interval = DEFAULT_RC_INTERVAL,
299 .rc_key_map = dibusb_rc_keys, 299 .rc_key_map = ir_codes_dibusb_table,
300 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ 300 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */
301 .rc_query = dibusb_rc_query, 301 .rc_query = dibusb_rc_query,
302 302
@@ -360,7 +360,7 @@ static struct dvb_usb_device_properties dibusb2_0b_properties = {
360 .power_ctrl = dibusb2_0_power_ctrl, 360 .power_ctrl = dibusb2_0_power_ctrl,
361 361
362 .rc_interval = DEFAULT_RC_INTERVAL, 362 .rc_interval = DEFAULT_RC_INTERVAL,
363 .rc_key_map = dibusb_rc_keys, 363 .rc_key_map = ir_codes_dibusb_table,
364 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ 364 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */
365 .rc_query = dibusb_rc_query, 365 .rc_query = dibusb_rc_query,
366 366
@@ -417,7 +417,7 @@ static struct dvb_usb_device_properties artec_t1_usb2_properties = {
417 .power_ctrl = dibusb2_0_power_ctrl, 417 .power_ctrl = dibusb2_0_power_ctrl,
418 418
419 .rc_interval = DEFAULT_RC_INTERVAL, 419 .rc_interval = DEFAULT_RC_INTERVAL,
420 .rc_key_map = dibusb_rc_keys, 420 .rc_key_map = ir_codes_dibusb_table,
421 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ 421 .rc_key_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */
422 .rc_query = dibusb_rc_query, 422 .rc_query = dibusb_rc_query,
423 423
diff --git a/drivers/media/dvb/dvb-usb/dibusb-mc.c b/drivers/media/dvb/dvb-usb/dibusb-mc.c
index a05b9f875663..588308eb6638 100644
--- a/drivers/media/dvb/dvb-usb/dibusb-mc.c
+++ b/drivers/media/dvb/dvb-usb/dibusb-mc.c
@@ -82,7 +82,7 @@ static struct dvb_usb_device_properties dibusb_mc_properties = {
82 .power_ctrl = dibusb2_0_power_ctrl, 82 .power_ctrl = dibusb2_0_power_ctrl,
83 83
84 .rc_interval = DEFAULT_RC_INTERVAL, 84 .rc_interval = DEFAULT_RC_INTERVAL,
85 .rc_key_map = dibusb_rc_keys, 85 .rc_key_map = ir_codes_dibusb_table,
86 .rc_key_map_size = 111, /* FIXME */ 86 .rc_key_map_size = 111, /* FIXME */
87 .rc_query = dibusb_rc_query, 87 .rc_query = dibusb_rc_query,
88 88
diff --git a/drivers/media/dvb/dvb-usb/dibusb.h b/drivers/media/dvb/dvb-usb/dibusb.h
index 8e847aa73ba1..3d50ac59088f 100644
--- a/drivers/media/dvb/dvb-usb/dibusb.h
+++ b/drivers/media/dvb/dvb-usb/dibusb.h
@@ -124,7 +124,7 @@ extern int dibusb2_0_power_ctrl(struct dvb_usb_device *, int);
124#define DEFAULT_RC_INTERVAL 150 124#define DEFAULT_RC_INTERVAL 150
125//#define DEFAULT_RC_INTERVAL 100000 125//#define DEFAULT_RC_INTERVAL 100000
126 126
127extern struct dvb_usb_rc_key dibusb_rc_keys[]; 127extern struct dvb_usb_rc_key ir_codes_dibusb_table[];
128extern int dibusb_rc_query(struct dvb_usb_device *, u32 *, int *); 128extern int dibusb_rc_query(struct dvb_usb_device *, u32 *, int *);
129extern int dibusb_read_eeprom_byte(struct dvb_usb_device *, u8, u8 *); 129extern int dibusb_read_eeprom_byte(struct dvb_usb_device *, u8, u8 *);
130 130
diff --git a/drivers/media/dvb/dvb-usb/digitv.c b/drivers/media/dvb/dvb-usb/digitv.c
index 955147d00756..e826077094fa 100644
--- a/drivers/media/dvb/dvb-usb/digitv.c
+++ b/drivers/media/dvb/dvb-usb/digitv.c
@@ -161,7 +161,7 @@ static int digitv_tuner_attach(struct dvb_usb_adapter *adap)
161 return 0; 161 return 0;
162} 162}
163 163
164static struct dvb_usb_rc_key digitv_rc_keys[] = { 164static struct dvb_usb_rc_key ir_codes_digitv_table[] = {
165 { 0x5f55, KEY_0 }, 165 { 0x5f55, KEY_0 },
166 { 0x6f55, KEY_1 }, 166 { 0x6f55, KEY_1 },
167 { 0x9f55, KEY_2 }, 167 { 0x9f55, KEY_2 },
@@ -311,8 +311,8 @@ static struct dvb_usb_device_properties digitv_properties = {
311 .identify_state = digitv_identify_state, 311 .identify_state = digitv_identify_state,
312 312
313 .rc_interval = 1000, 313 .rc_interval = 1000,
314 .rc_key_map = digitv_rc_keys, 314 .rc_key_map = ir_codes_digitv_table,
315 .rc_key_map_size = ARRAY_SIZE(digitv_rc_keys), 315 .rc_key_map_size = ARRAY_SIZE(ir_codes_digitv_table),
316 .rc_query = digitv_rc_query, 316 .rc_query = digitv_rc_query,
317 317
318 .i2c_algo = &digitv_i2c_algo, 318 .i2c_algo = &digitv_i2c_algo,
diff --git a/drivers/media/dvb/dvb-usb/dtt200u.c b/drivers/media/dvb/dvb-usb/dtt200u.c
index a1b12b01cbe4..f57e59044d4d 100644
--- a/drivers/media/dvb/dvb-usb/dtt200u.c
+++ b/drivers/media/dvb/dvb-usb/dtt200u.c
@@ -57,7 +57,7 @@ static int dtt200u_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid,
57 57
58/* remote control */ 58/* remote control */
59/* key list for the tiny remote control (Yakumo, don't know about the others) */ 59/* key list for the tiny remote control (Yakumo, don't know about the others) */
60static struct dvb_usb_rc_key dtt200u_rc_keys[] = { 60static struct dvb_usb_rc_key ir_codes_dtt200u_table[] = {
61 { 0x8001, KEY_MUTE }, 61 { 0x8001, KEY_MUTE },
62 { 0x8002, KEY_CHANNELDOWN }, 62 { 0x8002, KEY_CHANNELDOWN },
63 { 0x8003, KEY_VOLUMEDOWN }, 63 { 0x8003, KEY_VOLUMEDOWN },
@@ -162,8 +162,8 @@ static struct dvb_usb_device_properties dtt200u_properties = {
162 .power_ctrl = dtt200u_power_ctrl, 162 .power_ctrl = dtt200u_power_ctrl,
163 163
164 .rc_interval = 300, 164 .rc_interval = 300,
165 .rc_key_map = dtt200u_rc_keys, 165 .rc_key_map = ir_codes_dtt200u_table,
166 .rc_key_map_size = ARRAY_SIZE(dtt200u_rc_keys), 166 .rc_key_map_size = ARRAY_SIZE(ir_codes_dtt200u_table),
167 .rc_query = dtt200u_rc_query, 167 .rc_query = dtt200u_rc_query,
168 168
169 .generic_bulk_ctrl_endpoint = 0x01, 169 .generic_bulk_ctrl_endpoint = 0x01,
@@ -207,8 +207,8 @@ static struct dvb_usb_device_properties wt220u_properties = {
207 .power_ctrl = dtt200u_power_ctrl, 207 .power_ctrl = dtt200u_power_ctrl,
208 208
209 .rc_interval = 300, 209 .rc_interval = 300,
210 .rc_key_map = dtt200u_rc_keys, 210 .rc_key_map = ir_codes_dtt200u_table,
211 .rc_key_map_size = ARRAY_SIZE(dtt200u_rc_keys), 211 .rc_key_map_size = ARRAY_SIZE(ir_codes_dtt200u_table),
212 .rc_query = dtt200u_rc_query, 212 .rc_query = dtt200u_rc_query,
213 213
214 .generic_bulk_ctrl_endpoint = 0x01, 214 .generic_bulk_ctrl_endpoint = 0x01,
@@ -252,8 +252,8 @@ static struct dvb_usb_device_properties wt220u_fc_properties = {
252 .power_ctrl = dtt200u_power_ctrl, 252 .power_ctrl = dtt200u_power_ctrl,
253 253
254 .rc_interval = 300, 254 .rc_interval = 300,
255 .rc_key_map = dtt200u_rc_keys, 255 .rc_key_map = ir_codes_dtt200u_table,
256 .rc_key_map_size = ARRAY_SIZE(dtt200u_rc_keys), 256 .rc_key_map_size = ARRAY_SIZE(ir_codes_dtt200u_table),
257 .rc_query = dtt200u_rc_query, 257 .rc_query = dtt200u_rc_query,
258 258
259 .generic_bulk_ctrl_endpoint = 0x01, 259 .generic_bulk_ctrl_endpoint = 0x01,
@@ -297,8 +297,8 @@ static struct dvb_usb_device_properties wt220u_zl0353_properties = {
297 .power_ctrl = dtt200u_power_ctrl, 297 .power_ctrl = dtt200u_power_ctrl,
298 298
299 .rc_interval = 300, 299 .rc_interval = 300,
300 .rc_key_map = dtt200u_rc_keys, 300 .rc_key_map = ir_codes_dtt200u_table,
301 .rc_key_map_size = ARRAY_SIZE(dtt200u_rc_keys), 301 .rc_key_map_size = ARRAY_SIZE(ir_codes_dtt200u_table),
302 .rc_query = dtt200u_rc_query, 302 .rc_query = dtt200u_rc_query,
303 303
304 .generic_bulk_ctrl_endpoint = 0x01, 304 .generic_bulk_ctrl_endpoint = 0x01,
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
index ae8b57acfe05..085c4e457e0e 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
@@ -124,9 +124,11 @@
124#define USB_PID_KWORLD_395U 0xe396 124#define USB_PID_KWORLD_395U 0xe396
125#define USB_PID_KWORLD_395U_2 0xe39b 125#define USB_PID_KWORLD_395U_2 0xe39b
126#define USB_PID_KWORLD_395U_3 0xe395 126#define USB_PID_KWORLD_395U_3 0xe395
127#define USB_PID_KWORLD_395U_4 0xe39a
127#define USB_PID_KWORLD_MC810 0xc810 128#define USB_PID_KWORLD_MC810 0xc810
128#define USB_PID_KWORLD_PC160_2T 0xc160 129#define USB_PID_KWORLD_PC160_2T 0xc160
129#define USB_PID_KWORLD_PC160_T 0xc161 130#define USB_PID_KWORLD_PC160_T 0xc161
131#define USB_PID_KWORLD_UB383_T 0xe383
130#define USB_PID_KWORLD_VSTREAM_COLD 0x17de 132#define USB_PID_KWORLD_VSTREAM_COLD 0x17de
131#define USB_PID_KWORLD_VSTREAM_WARM 0x17df 133#define USB_PID_KWORLD_VSTREAM_WARM 0x17df
132#define USB_PID_TERRATEC_CINERGY_T_USB_XE 0x0055 134#define USB_PID_TERRATEC_CINERGY_T_USB_XE 0x0055
@@ -288,6 +290,7 @@
288#define USB_PID_MSI_DIGI_VOX_MINI_III 0x8807 290#define USB_PID_MSI_DIGI_VOX_MINI_III 0x8807
289#define USB_PID_SONY_PLAYTV 0x0003 291#define USB_PID_SONY_PLAYTV 0x0003
290#define USB_PID_MYGICA_D689 0xd811 292#define USB_PID_MYGICA_D689 0xd811
293#define USB_PID_ELGATO_EYETV_DIVERSITY 0x0011
291#define USB_PID_ELGATO_EYETV_DTT 0x0021 294#define USB_PID_ELGATO_EYETV_DTT 0x0021
292#define USB_PID_ELGATO_EYETV_DTT_Dlx 0x0020 295#define USB_PID_ELGATO_EYETV_DTT_Dlx 0x0020
293#define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD 0x5000 296#define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD 0x5000
@@ -296,6 +299,8 @@
296#define USB_PID_TVWAY_PLUS 0x0002 299#define USB_PID_TVWAY_PLUS 0x0002
297#define USB_PID_SVEON_STV20 0xe39d 300#define USB_PID_SVEON_STV20 0xe39d
298#define USB_PID_AZUREWAVE_AZ6027 0x3275 301#define USB_PID_AZUREWAVE_AZ6027 0x3275
299#define USB_PID_TERRATEC_DVBS2CI 0x3275 302#define USB_PID_TERRATEC_DVBS2CI_V1 0x10a4
300#define USB_PID_TECHNISAT_USB2_HDCI 0x0002 303#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac
304#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001
305#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002
301#endif 306#endif
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
index 6fe71c6745eb..bb46ba6a3573 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
@@ -42,6 +42,8 @@ int dvb_usb_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
42 msleep(delay_ms); 42 msleep(delay_ms);
43 43
44 ret = usb_bulk_msg(d->udev,usb_rcvbulkpipe(d->udev, 44 ret = usb_bulk_msg(d->udev,usb_rcvbulkpipe(d->udev,
45 d->props.generic_bulk_ctrl_endpoint_response ?
46 d->props.generic_bulk_ctrl_endpoint_response :
45 d->props.generic_bulk_ctrl_endpoint),rbuf,rlen,&actlen, 47 d->props.generic_bulk_ctrl_endpoint),rbuf,rlen,&actlen,
46 2000); 48 2000);
47 49
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb.h b/drivers/media/dvb/dvb-usb/dvb-usb.h
index 0143aef19ecd..4a9f676087bf 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb.h
+++ b/drivers/media/dvb/dvb-usb/dvb-usb.h
@@ -198,6 +198,12 @@ struct dvb_usb_adapter_properties {
198 * is non-zero, one can use dvb_usb_generic_rw and dvb_usb_generic_write- 198 * is non-zero, one can use dvb_usb_generic_rw and dvb_usb_generic_write-
199 * helper functions. 199 * helper functions.
200 * 200 *
201 * @generic_bulk_ctrl_endpoint_response: some DVB USB devices use a separate
202 * endpoint for responses to control messages sent with bulk transfers via
203 * the generic_bulk_ctrl_endpoint. When this is non-zero, this will be used
204 * instead of the generic_bulk_ctrl_endpoint when reading usb responses in
205 * the dvb_usb_generic_rw helper function.
206 *
201 * @num_device_descs: number of struct dvb_usb_device_description in @devices 207 * @num_device_descs: number of struct dvb_usb_device_description in @devices
202 * @devices: array of struct dvb_usb_device_description compatibles with these 208 * @devices: array of struct dvb_usb_device_description compatibles with these
203 * properties. 209 * properties.
@@ -239,6 +245,7 @@ struct dvb_usb_device_properties {
239 struct i2c_algorithm *i2c_algo; 245 struct i2c_algorithm *i2c_algo;
240 246
241 int generic_bulk_ctrl_endpoint; 247 int generic_bulk_ctrl_endpoint;
248 int generic_bulk_ctrl_endpoint_response;
242 249
243 int num_device_descs; 250 int num_device_descs;
244 struct dvb_usb_device_description devices[12]; 251 struct dvb_usb_device_description devices[12];
diff --git a/drivers/media/dvb/dvb-usb/dw2102.c b/drivers/media/dvb/dvb-usb/dw2102.c
index accc65509b07..e8fb85380672 100644
--- a/drivers/media/dvb/dvb-usb/dw2102.c
+++ b/drivers/media/dvb/dvb-usb/dw2102.c
@@ -73,7 +73,7 @@
73 "Please see linux/Documentation/dvb/ for more details " \ 73 "Please see linux/Documentation/dvb/ for more details " \
74 "on firmware-problems." 74 "on firmware-problems."
75 75
76struct dvb_usb_rc_keys_table { 76struct ir_codes_dvb_usb_table_table {
77 struct dvb_usb_rc_key *rc_keys; 77 struct dvb_usb_rc_key *rc_keys;
78 int rc_keys_size; 78 int rc_keys_size;
79}; 79};
@@ -948,7 +948,7 @@ static int dw3101_tuner_attach(struct dvb_usb_adapter *adap)
948 return 0; 948 return 0;
949} 949}
950 950
951static struct dvb_usb_rc_key dw210x_rc_keys[] = { 951static struct dvb_usb_rc_key ir_codes_dw210x_table[] = {
952 { 0xf80a, KEY_Q }, /*power*/ 952 { 0xf80a, KEY_Q }, /*power*/
953 { 0xf80c, KEY_M }, /*mute*/ 953 { 0xf80c, KEY_M }, /*mute*/
954 { 0xf811, KEY_1 }, 954 { 0xf811, KEY_1 },
@@ -982,7 +982,7 @@ static struct dvb_usb_rc_key dw210x_rc_keys[] = {
982 { 0xf81b, KEY_B }, /*recall*/ 982 { 0xf81b, KEY_B }, /*recall*/
983}; 983};
984 984
985static struct dvb_usb_rc_key tevii_rc_keys[] = { 985static struct dvb_usb_rc_key ir_codes_tevii_table[] = {
986 { 0xf80a, KEY_POWER }, 986 { 0xf80a, KEY_POWER },
987 { 0xf80c, KEY_MUTE }, 987 { 0xf80c, KEY_MUTE },
988 { 0xf811, KEY_1 }, 988 { 0xf811, KEY_1 },
@@ -1032,7 +1032,7 @@ static struct dvb_usb_rc_key tevii_rc_keys[] = {
1032 { 0xf858, KEY_SWITCHVIDEOMODE }, 1032 { 0xf858, KEY_SWITCHVIDEOMODE },
1033}; 1033};
1034 1034
1035static struct dvb_usb_rc_key tbs_rc_keys[] = { 1035static struct dvb_usb_rc_key ir_codes_tbs_table[] = {
1036 { 0xf884, KEY_POWER }, 1036 { 0xf884, KEY_POWER },
1037 { 0xf894, KEY_MUTE }, 1037 { 0xf894, KEY_MUTE },
1038 { 0xf887, KEY_1 }, 1038 { 0xf887, KEY_1 },
@@ -1067,10 +1067,10 @@ static struct dvb_usb_rc_key tbs_rc_keys[] = {
1067 { 0xf89b, KEY_MODE } 1067 { 0xf89b, KEY_MODE }
1068}; 1068};
1069 1069
1070static struct dvb_usb_rc_keys_table keys_tables[] = { 1070static struct ir_codes_dvb_usb_table_table keys_tables[] = {
1071 { dw210x_rc_keys, ARRAY_SIZE(dw210x_rc_keys) }, 1071 { ir_codes_dw210x_table, ARRAY_SIZE(ir_codes_dw210x_table) },
1072 { tevii_rc_keys, ARRAY_SIZE(tevii_rc_keys) }, 1072 { ir_codes_tevii_table, ARRAY_SIZE(ir_codes_tevii_table) },
1073 { tbs_rc_keys, ARRAY_SIZE(tbs_rc_keys) }, 1073 { ir_codes_tbs_table, ARRAY_SIZE(ir_codes_tbs_table) },
1074}; 1074};
1075 1075
1076static int dw2102_rc_query(struct dvb_usb_device *d, u32 *event, int *state) 1076static int dw2102_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
@@ -1185,14 +1185,14 @@ static int dw2102_load_firmware(struct usb_device *dev,
1185 /* init registers */ 1185 /* init registers */
1186 switch (dev->descriptor.idProduct) { 1186 switch (dev->descriptor.idProduct) {
1187 case USB_PID_PROF_1100: 1187 case USB_PID_PROF_1100:
1188 s6x0_properties.rc_key_map = tbs_rc_keys; 1188 s6x0_properties.rc_key_map = ir_codes_tbs_table;
1189 s6x0_properties.rc_key_map_size = 1189 s6x0_properties.rc_key_map_size =
1190 ARRAY_SIZE(tbs_rc_keys); 1190 ARRAY_SIZE(ir_codes_tbs_table);
1191 break; 1191 break;
1192 case USB_PID_TEVII_S650: 1192 case USB_PID_TEVII_S650:
1193 dw2104_properties.rc_key_map = tevii_rc_keys; 1193 dw2104_properties.rc_key_map = ir_codes_tevii_table;
1194 dw2104_properties.rc_key_map_size = 1194 dw2104_properties.rc_key_map_size =
1195 ARRAY_SIZE(tevii_rc_keys); 1195 ARRAY_SIZE(ir_codes_tevii_table);
1196 case USB_PID_DW2104: 1196 case USB_PID_DW2104:
1197 reset = 1; 1197 reset = 1;
1198 dw210x_op_rw(dev, 0xc4, 0x0000, 0, &reset, 1, 1198 dw210x_op_rw(dev, 0xc4, 0x0000, 0, &reset, 1,
@@ -1255,8 +1255,8 @@ static struct dvb_usb_device_properties dw2102_properties = {
1255 .no_reconnect = 1, 1255 .no_reconnect = 1,
1256 1256
1257 .i2c_algo = &dw2102_serit_i2c_algo, 1257 .i2c_algo = &dw2102_serit_i2c_algo,
1258 .rc_key_map = dw210x_rc_keys, 1258 .rc_key_map = ir_codes_dw210x_table,
1259 .rc_key_map_size = ARRAY_SIZE(dw210x_rc_keys), 1259 .rc_key_map_size = ARRAY_SIZE(ir_codes_dw210x_table),
1260 .rc_interval = 150, 1260 .rc_interval = 150,
1261 .rc_query = dw2102_rc_query, 1261 .rc_query = dw2102_rc_query,
1262 1262
@@ -1306,8 +1306,8 @@ static struct dvb_usb_device_properties dw2104_properties = {
1306 .no_reconnect = 1, 1306 .no_reconnect = 1,
1307 1307
1308 .i2c_algo = &dw2104_i2c_algo, 1308 .i2c_algo = &dw2104_i2c_algo,
1309 .rc_key_map = dw210x_rc_keys, 1309 .rc_key_map = ir_codes_dw210x_table,
1310 .rc_key_map_size = ARRAY_SIZE(dw210x_rc_keys), 1310 .rc_key_map_size = ARRAY_SIZE(ir_codes_dw210x_table),
1311 .rc_interval = 150, 1311 .rc_interval = 150,
1312 .rc_query = dw2102_rc_query, 1312 .rc_query = dw2102_rc_query,
1313 1313
@@ -1353,8 +1353,8 @@ static struct dvb_usb_device_properties dw3101_properties = {
1353 .no_reconnect = 1, 1353 .no_reconnect = 1,
1354 1354
1355 .i2c_algo = &dw3101_i2c_algo, 1355 .i2c_algo = &dw3101_i2c_algo,
1356 .rc_key_map = dw210x_rc_keys, 1356 .rc_key_map = ir_codes_dw210x_table,
1357 .rc_key_map_size = ARRAY_SIZE(dw210x_rc_keys), 1357 .rc_key_map_size = ARRAY_SIZE(ir_codes_dw210x_table),
1358 .rc_interval = 150, 1358 .rc_interval = 150,
1359 .rc_query = dw2102_rc_query, 1359 .rc_query = dw2102_rc_query,
1360 1360
@@ -1396,8 +1396,8 @@ static struct dvb_usb_device_properties s6x0_properties = {
1396 .no_reconnect = 1, 1396 .no_reconnect = 1,
1397 1397
1398 .i2c_algo = &s6x0_i2c_algo, 1398 .i2c_algo = &s6x0_i2c_algo,
1399 .rc_key_map = tevii_rc_keys, 1399 .rc_key_map = ir_codes_tevii_table,
1400 .rc_key_map_size = ARRAY_SIZE(tevii_rc_keys), 1400 .rc_key_map_size = ARRAY_SIZE(ir_codes_tevii_table),
1401 .rc_interval = 150, 1401 .rc_interval = 150,
1402 .rc_query = dw2102_rc_query, 1402 .rc_query = dw2102_rc_query,
1403 1403
@@ -1459,8 +1459,8 @@ static int dw2102_probe(struct usb_interface *intf,
1459 /* fill only different fields */ 1459 /* fill only different fields */
1460 p7500->firmware = "dvb-usb-p7500.fw"; 1460 p7500->firmware = "dvb-usb-p7500.fw";
1461 p7500->devices[0] = d7500; 1461 p7500->devices[0] = d7500;
1462 p7500->rc_key_map = tbs_rc_keys; 1462 p7500->rc_key_map = ir_codes_tbs_table;
1463 p7500->rc_key_map_size = ARRAY_SIZE(tbs_rc_keys); 1463 p7500->rc_key_map_size = ARRAY_SIZE(ir_codes_tbs_table);
1464 p7500->adapter->frontend_attach = prof_7500_frontend_attach; 1464 p7500->adapter->frontend_attach = prof_7500_frontend_attach;
1465 1465
1466 if (0 == dvb_usb_device_init(intf, &dw2102_properties, 1466 if (0 == dvb_usb_device_init(intf, &dw2102_properties,
diff --git a/drivers/media/dvb/dvb-usb/gp8psk.c b/drivers/media/dvb/dvb-usb/gp8psk.c
index afb444db43ad..45106ac49674 100644
--- a/drivers/media/dvb/dvb-usb/gp8psk.c
+++ b/drivers/media/dvb/dvb-usb/gp8psk.c
@@ -105,6 +105,10 @@ static int gp8psk_load_bcm4500fw(struct dvb_usb_device *d)
105 105
106 ptr = fw->data; 106 ptr = fw->data;
107 buf = kmalloc(64, GFP_KERNEL | GFP_DMA); 107 buf = kmalloc(64, GFP_KERNEL | GFP_DMA);
108 if (!buf) {
109 ret = -ENOMEM;
110 goto out_rel_fw;
111 }
108 112
109 while (ptr[0] != 0xff) { 113 while (ptr[0] != 0xff) {
110 u16 buflen = ptr[0] + 4; 114 u16 buflen = ptr[0] + 4;
diff --git a/drivers/media/dvb/dvb-usb/m920x.c b/drivers/media/dvb/dvb-usb/m920x.c
index 737ffa36ac9c..c211fef45fc3 100644
--- a/drivers/media/dvb/dvb-usb/m920x.c
+++ b/drivers/media/dvb/dvb-usb/m920x.c
@@ -589,7 +589,7 @@ static struct m920x_inits pinnacle310e_init[] = {
589}; 589};
590 590
591/* ir keymaps */ 591/* ir keymaps */
592static struct dvb_usb_rc_key megasky_rc_keys [] = { 592static struct dvb_usb_rc_key ir_codes_megasky_table [] = {
593 { 0x0012, KEY_POWER }, 593 { 0x0012, KEY_POWER },
594 { 0x001e, KEY_CYCLEWINDOWS }, /* min/max */ 594 { 0x001e, KEY_CYCLEWINDOWS }, /* min/max */
595 { 0x0002, KEY_CHANNELUP }, 595 { 0x0002, KEY_CHANNELUP },
@@ -608,7 +608,7 @@ static struct dvb_usb_rc_key megasky_rc_keys [] = {
608 { 0x000e, KEY_COFFEE }, /* "MTS" */ 608 { 0x000e, KEY_COFFEE }, /* "MTS" */
609}; 609};
610 610
611static struct dvb_usb_rc_key tvwalkertwin_rc_keys [] = { 611static struct dvb_usb_rc_key ir_codes_tvwalkertwin_table [] = {
612 { 0x0001, KEY_ZOOM }, /* Full Screen */ 612 { 0x0001, KEY_ZOOM }, /* Full Screen */
613 { 0x0002, KEY_CAMERA }, /* snapshot */ 613 { 0x0002, KEY_CAMERA }, /* snapshot */
614 { 0x0003, KEY_MUTE }, 614 { 0x0003, KEY_MUTE },
@@ -628,7 +628,7 @@ static struct dvb_usb_rc_key tvwalkertwin_rc_keys [] = {
628 { 0x001e, KEY_VOLUMEUP }, 628 { 0x001e, KEY_VOLUMEUP },
629}; 629};
630 630
631static struct dvb_usb_rc_key pinnacle310e_rc_keys[] = { 631static struct dvb_usb_rc_key ir_codes_pinnacle310e_table[] = {
632 { 0x16, KEY_POWER }, 632 { 0x16, KEY_POWER },
633 { 0x17, KEY_FAVORITES }, 633 { 0x17, KEY_FAVORITES },
634 { 0x0f, KEY_TEXT }, 634 { 0x0f, KEY_TEXT },
@@ -785,8 +785,8 @@ static struct dvb_usb_device_properties megasky_properties = {
785 .download_firmware = m920x_firmware_download, 785 .download_firmware = m920x_firmware_download,
786 786
787 .rc_interval = 100, 787 .rc_interval = 100,
788 .rc_key_map = megasky_rc_keys, 788 .rc_key_map = ir_codes_megasky_table,
789 .rc_key_map_size = ARRAY_SIZE(megasky_rc_keys), 789 .rc_key_map_size = ARRAY_SIZE(ir_codes_megasky_table),
790 .rc_query = m920x_rc_query, 790 .rc_query = m920x_rc_query,
791 791
792 .size_of_priv = sizeof(struct m920x_state), 792 .size_of_priv = sizeof(struct m920x_state),
@@ -886,8 +886,8 @@ static struct dvb_usb_device_properties tvwalkertwin_properties = {
886 .download_firmware = m920x_firmware_download, 886 .download_firmware = m920x_firmware_download,
887 887
888 .rc_interval = 100, 888 .rc_interval = 100,
889 .rc_key_map = tvwalkertwin_rc_keys, 889 .rc_key_map = ir_codes_tvwalkertwin_table,
890 .rc_key_map_size = ARRAY_SIZE(tvwalkertwin_rc_keys), 890 .rc_key_map_size = ARRAY_SIZE(ir_codes_tvwalkertwin_table),
891 .rc_query = m920x_rc_query, 891 .rc_query = m920x_rc_query,
892 892
893 .size_of_priv = sizeof(struct m920x_state), 893 .size_of_priv = sizeof(struct m920x_state),
@@ -993,8 +993,8 @@ static struct dvb_usb_device_properties pinnacle_pctv310e_properties = {
993 .download_firmware = NULL, 993 .download_firmware = NULL,
994 994
995 .rc_interval = 100, 995 .rc_interval = 100,
996 .rc_key_map = pinnacle310e_rc_keys, 996 .rc_key_map = ir_codes_pinnacle310e_table,
997 .rc_key_map_size = ARRAY_SIZE(pinnacle310e_rc_keys), 997 .rc_key_map_size = ARRAY_SIZE(ir_codes_pinnacle310e_table),
998 .rc_query = m920x_rc_query, 998 .rc_query = m920x_rc_query,
999 999
1000 .size_of_priv = sizeof(struct m920x_state), 1000 .size_of_priv = sizeof(struct m920x_state),
diff --git a/drivers/media/dvb/dvb-usb/nova-t-usb2.c b/drivers/media/dvb/dvb-usb/nova-t-usb2.c
index b41d66ef8325..d195a587cc65 100644
--- a/drivers/media/dvb/dvb-usb/nova-t-usb2.c
+++ b/drivers/media/dvb/dvb-usb/nova-t-usb2.c
@@ -21,7 +21,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
21#define deb_ee(args...) dprintk(debug,0x02,args) 21#define deb_ee(args...) dprintk(debug,0x02,args)
22 22
23/* Hauppauge NOVA-T USB2 keys */ 23/* Hauppauge NOVA-T USB2 keys */
24static struct dvb_usb_rc_key haupp_rc_keys [] = { 24static struct dvb_usb_rc_key ir_codes_haupp_table [] = {
25 { 0x1e00, KEY_0 }, 25 { 0x1e00, KEY_0 },
26 { 0x1e01, KEY_1 }, 26 { 0x1e01, KEY_1 },
27 { 0x1e02, KEY_2 }, 27 { 0x1e02, KEY_2 },
@@ -91,14 +91,14 @@ static int nova_t_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
91 91
92 deb_rc("raw key code 0x%02x, 0x%02x, 0x%02x to c: %02x d: %02x toggle: %d\n",key[1],key[2],key[3],custom,data,toggle); 92 deb_rc("raw key code 0x%02x, 0x%02x, 0x%02x to c: %02x d: %02x toggle: %d\n",key[1],key[2],key[3],custom,data,toggle);
93 93
94 for (i = 0; i < ARRAY_SIZE(haupp_rc_keys); i++) { 94 for (i = 0; i < ARRAY_SIZE(ir_codes_haupp_table); i++) {
95 if (rc5_data(&haupp_rc_keys[i]) == data && 95 if (rc5_data(&ir_codes_haupp_table[i]) == data &&
96 rc5_custom(&haupp_rc_keys[i]) == custom) { 96 rc5_custom(&ir_codes_haupp_table[i]) == custom) {
97 97
98 deb_rc("c: %x, d: %x\n", rc5_data(&haupp_rc_keys[i]), 98 deb_rc("c: %x, d: %x\n", rc5_data(&ir_codes_haupp_table[i]),
99 rc5_custom(&haupp_rc_keys[i])); 99 rc5_custom(&ir_codes_haupp_table[i]));
100 100
101 *event = haupp_rc_keys[i].event; 101 *event = ir_codes_haupp_table[i].event;
102 *state = REMOTE_KEY_PRESSED; 102 *state = REMOTE_KEY_PRESSED;
103 if (st->old_toggle == toggle) { 103 if (st->old_toggle == toggle) {
104 if (st->last_repeat_count++ < 2) 104 if (st->last_repeat_count++ < 2)
@@ -196,8 +196,8 @@ static struct dvb_usb_device_properties nova_t_properties = {
196 .read_mac_address = nova_t_read_mac_address, 196 .read_mac_address = nova_t_read_mac_address,
197 197
198 .rc_interval = 100, 198 .rc_interval = 100,
199 .rc_key_map = haupp_rc_keys, 199 .rc_key_map = ir_codes_haupp_table,
200 .rc_key_map_size = ARRAY_SIZE(haupp_rc_keys), 200 .rc_key_map_size = ARRAY_SIZE(ir_codes_haupp_table),
201 .rc_query = nova_t_rc_query, 201 .rc_query = nova_t_rc_query,
202 202
203 .i2c_algo = &dibusb_i2c_algo, 203 .i2c_algo = &dibusb_i2c_algo,
diff --git a/drivers/media/dvb/dvb-usb/opera1.c b/drivers/media/dvb/dvb-usb/opera1.c
index 830557696ae6..dfb81ff1d9a7 100644
--- a/drivers/media/dvb/dvb-usb/opera1.c
+++ b/drivers/media/dvb/dvb-usb/opera1.c
@@ -35,7 +35,7 @@
35struct opera1_state { 35struct opera1_state {
36 u32 last_key_pressed; 36 u32 last_key_pressed;
37}; 37};
38struct opera_rc_keys { 38struct ir_codes_opera_table {
39 u32 keycode; 39 u32 keycode;
40 u32 event; 40 u32 event;
41}; 41};
@@ -331,7 +331,7 @@ static int opera1_pid_filter_control(struct dvb_usb_adapter *adap, int onoff)
331 return 0; 331 return 0;
332} 332}
333 333
334static struct dvb_usb_rc_key opera1_rc_keys[] = { 334static struct dvb_usb_rc_key ir_codes_opera1_table[] = {
335 {0x5fa0, KEY_1}, 335 {0x5fa0, KEY_1},
336 {0x51af, KEY_2}, 336 {0x51af, KEY_2},
337 {0x5da2, KEY_3}, 337 {0x5da2, KEY_3},
@@ -404,12 +404,12 @@ static int opera1_rc_query(struct dvb_usb_device *dev, u32 * event, int *state)
404 404
405 send_key = (send_key & 0xffff) | 0x0100; 405 send_key = (send_key & 0xffff) | 0x0100;
406 406
407 for (i = 0; i < ARRAY_SIZE(opera1_rc_keys); i++) { 407 for (i = 0; i < ARRAY_SIZE(ir_codes_opera1_table); i++) {
408 if (rc5_scan(&opera1_rc_keys[i]) == (send_key & 0xffff)) { 408 if (rc5_scan(&ir_codes_opera1_table[i]) == (send_key & 0xffff)) {
409 *state = REMOTE_KEY_PRESSED; 409 *state = REMOTE_KEY_PRESSED;
410 *event = opera1_rc_keys[i].event; 410 *event = ir_codes_opera1_table[i].event;
411 opst->last_key_pressed = 411 opst->last_key_pressed =
412 opera1_rc_keys[i].event; 412 ir_codes_opera1_table[i].event;
413 break; 413 break;
414 } 414 }
415 opst->last_key_pressed = 0; 415 opst->last_key_pressed = 0;
@@ -498,8 +498,8 @@ static struct dvb_usb_device_properties opera1_properties = {
498 .power_ctrl = opera1_power_ctrl, 498 .power_ctrl = opera1_power_ctrl,
499 .i2c_algo = &opera1_i2c_algo, 499 .i2c_algo = &opera1_i2c_algo,
500 500
501 .rc_key_map = opera1_rc_keys, 501 .rc_key_map = ir_codes_opera1_table,
502 .rc_key_map_size = ARRAY_SIZE(opera1_rc_keys), 502 .rc_key_map_size = ARRAY_SIZE(ir_codes_opera1_table),
503 .rc_interval = 200, 503 .rc_interval = 200,
504 .rc_query = opera1_rc_query, 504 .rc_query = opera1_rc_query,
505 .read_mac_address = opera1_read_mac_address, 505 .read_mac_address = opera1_read_mac_address,
diff --git a/drivers/media/dvb/dvb-usb/vp702x.c b/drivers/media/dvb/dvb-usb/vp702x.c
index ef4e37d9c5ff..4d332451653b 100644
--- a/drivers/media/dvb/dvb-usb/vp702x.c
+++ b/drivers/media/dvb/dvb-usb/vp702x.c
@@ -174,7 +174,7 @@ static int vp702x_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
174} 174}
175 175
176/* keys for the enclosed remote control */ 176/* keys for the enclosed remote control */
177static struct dvb_usb_rc_key vp702x_rc_keys[] = { 177static struct dvb_usb_rc_key ir_codes_vp702x_table[] = {
178 { 0x0001, KEY_1 }, 178 { 0x0001, KEY_1 },
179 { 0x0002, KEY_2 }, 179 { 0x0002, KEY_2 },
180}; 180};
@@ -197,10 +197,10 @@ static int vp702x_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
197 return 0; 197 return 0;
198 } 198 }
199 199
200 for (i = 0; i < ARRAY_SIZE(vp702x_rc_keys); i++) 200 for (i = 0; i < ARRAY_SIZE(ir_codes_vp702x_table); i++)
201 if (rc5_custom(&vp702x_rc_keys[i]) == key[1]) { 201 if (rc5_custom(&ir_codes_vp702x_table[i]) == key[1]) {
202 *state = REMOTE_KEY_PRESSED; 202 *state = REMOTE_KEY_PRESSED;
203 *event = vp702x_rc_keys[i].event; 203 *event = ir_codes_vp702x_table[i].event;
204 break; 204 break;
205 } 205 }
206 return 0; 206 return 0;
@@ -283,8 +283,8 @@ static struct dvb_usb_device_properties vp702x_properties = {
283 }, 283 },
284 .read_mac_address = vp702x_read_mac_addr, 284 .read_mac_address = vp702x_read_mac_addr,
285 285
286 .rc_key_map = vp702x_rc_keys, 286 .rc_key_map = ir_codes_vp702x_table,
287 .rc_key_map_size = ARRAY_SIZE(vp702x_rc_keys), 287 .rc_key_map_size = ARRAY_SIZE(ir_codes_vp702x_table),
288 .rc_interval = 400, 288 .rc_interval = 400,
289 .rc_query = vp702x_rc_query, 289 .rc_query = vp702x_rc_query,
290 290
diff --git a/drivers/media/dvb/dvb-usb/vp7045.c b/drivers/media/dvb/dvb-usb/vp7045.c
index a59faa27912a..036893fa4480 100644
--- a/drivers/media/dvb/dvb-usb/vp7045.c
+++ b/drivers/media/dvb/dvb-usb/vp7045.c
@@ -99,7 +99,7 @@ static int vp7045_power_ctrl(struct dvb_usb_device *d, int onoff)
99 99
100/* The keymapping struct. Somehow this should be loaded to the driver, but 100/* The keymapping struct. Somehow this should be loaded to the driver, but
101 * currently it is hardcoded. */ 101 * currently it is hardcoded. */
102static struct dvb_usb_rc_key vp7045_rc_keys[] = { 102static struct dvb_usb_rc_key ir_codes_vp7045_table[] = {
103 { 0x0016, KEY_POWER }, 103 { 0x0016, KEY_POWER },
104 { 0x0010, KEY_MUTE }, 104 { 0x0010, KEY_MUTE },
105 { 0x0003, KEY_1 }, 105 { 0x0003, KEY_1 },
@@ -165,10 +165,10 @@ static int vp7045_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
165 return 0; 165 return 0;
166 } 166 }
167 167
168 for (i = 0; i < ARRAY_SIZE(vp7045_rc_keys); i++) 168 for (i = 0; i < ARRAY_SIZE(ir_codes_vp7045_table); i++)
169 if (rc5_data(&vp7045_rc_keys[i]) == key) { 169 if (rc5_data(&ir_codes_vp7045_table[i]) == key) {
170 *state = REMOTE_KEY_PRESSED; 170 *state = REMOTE_KEY_PRESSED;
171 *event = vp7045_rc_keys[i].event; 171 *event = ir_codes_vp7045_table[i].event;
172 break; 172 break;
173 } 173 }
174 return 0; 174 return 0;
@@ -260,8 +260,8 @@ static struct dvb_usb_device_properties vp7045_properties = {
260 .read_mac_address = vp7045_read_mac_addr, 260 .read_mac_address = vp7045_read_mac_addr,
261 261
262 .rc_interval = 400, 262 .rc_interval = 400,
263 .rc_key_map = vp7045_rc_keys, 263 .rc_key_map = ir_codes_vp7045_table,
264 .rc_key_map_size = ARRAY_SIZE(vp7045_rc_keys), 264 .rc_key_map_size = ARRAY_SIZE(ir_codes_vp7045_table),
265 .rc_query = vp7045_rc_query, 265 .rc_query = vp7045_rc_query,
266 266
267 .num_device_descs = 2, 267 .num_device_descs = 2,