aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@iki.fi>2012-05-14 08:52:37 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-05-20 10:40:06 -0400
commit5085c99eeb8e47bcfc2cce6ba0ae03db057057ba (patch)
treeaa2e59ec362636d2886d43c6b0093bd5dd0b8446
parent9554d57ebbc78db6d66057bfc12552247a7567da (diff)
[media] ati_remote: add keymap for Medion X10 OR2x remotes
Add another Medion X10 remote keymap. This is for the Medion OR2x remotes with the Windows MCE button. The receiver shipped with this remote has the same USB ID as the other Medion receivers, but the name is different and is therefore used to detect this variant. Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/rc/ati_remote.c30
-rw-r--r--drivers/media/rc/keymaps/Makefile1
-rw-r--r--drivers/media/rc/keymaps/rc-medion-x10-or2x.c108
-rw-r--r--include/media/rc-map.h1
4 files changed, 136 insertions, 4 deletions
diff --git a/drivers/media/rc/ati_remote.c b/drivers/media/rc/ati_remote.c
index 26fa043d3de7..7be377fc1be8 100644
--- a/drivers/media/rc/ati_remote.c
+++ b/drivers/media/rc/ati_remote.c
@@ -161,10 +161,32 @@ static const char *get_medion_keymap(struct usb_interface *interface)
161{ 161{
162 struct usb_device *udev = interface_to_usbdev(interface); 162 struct usb_device *udev = interface_to_usbdev(interface);
163 163
164 /* The receiver shipped with the "Digitainer" variant helpfully has 164 /*
165 * a single additional bit set in its descriptor. */ 165 * There are many different Medion remotes shipped with a receiver
166 if (udev->actconfig->desc.bmAttributes & USB_CONFIG_ATT_WAKEUP) 166 * with the same usb id, but the receivers have subtle differences
167 return RC_MAP_MEDION_X10_DIGITAINER; 167 * in the USB descriptors allowing us to detect them.
168 */
169
170 if (udev->manufacturer && udev->product) {
171 if (udev->actconfig->desc.bmAttributes & USB_CONFIG_ATT_WAKEUP) {
172
173 if (!strcmp(udev->manufacturer, "X10 Wireless Technology Inc")
174 && !strcmp(udev->product, "USB Receiver"))
175 return RC_MAP_MEDION_X10_DIGITAINER;
176
177 if (!strcmp(udev->manufacturer, "X10 WTI")
178 && !strcmp(udev->product, "RF receiver"))
179 return RC_MAP_MEDION_X10_OR2X;
180 } else {
181
182 if (!strcmp(udev->manufacturer, "X10 Wireless Technology Inc")
183 && !strcmp(udev->product, "USB Receiver"))
184 return RC_MAP_MEDION_X10;
185 }
186 }
187
188 dev_info(&interface->dev,
189 "Unknown Medion X10 receiver, using default ati_remote Medion keymap\n");
168 190
169 return RC_MAP_MEDION_X10; 191 return RC_MAP_MEDION_X10;
170} 192}
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
index 38ff6e0e099a..6d41a29861ac 100644
--- a/drivers/media/rc/keymaps/Makefile
+++ b/drivers/media/rc/keymaps/Makefile
@@ -53,6 +53,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
53 rc-manli.o \ 53 rc-manli.o \
54 rc-medion-x10.o \ 54 rc-medion-x10.o \
55 rc-medion-x10-digitainer.o \ 55 rc-medion-x10-digitainer.o \
56 rc-medion-x10-or2x.o \
56 rc-msi-digivox-ii.o \ 57 rc-msi-digivox-ii.o \
57 rc-msi-digivox-iii.o \ 58 rc-msi-digivox-iii.o \
58 rc-msi-tvanywhere.o \ 59 rc-msi-tvanywhere.o \
diff --git a/drivers/media/rc/keymaps/rc-medion-x10-or2x.c b/drivers/media/rc/keymaps/rc-medion-x10-or2x.c
new file mode 100644
index 000000000000..b077300ecb5c
--- /dev/null
+++ b/drivers/media/rc/keymaps/rc-medion-x10-or2x.c
@@ -0,0 +1,108 @@
1/*
2 * Medion X10 OR22/OR24 RF remote keytable
3 *
4 * Copyright (C) 2012 Anssi Hannula <anssi.hannula@iki.fi>
5 *
6 * This keymap is for several Medion X10 remotes that have the Windows MCE
7 * button. This has been tested with a "RF VISTA Remote Control", OR24V,
8 * P/N 20035335, but should work with other variants that have the same
9 * buttons, such as OR22V and OR24E.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 */
25
26#include <linux/module.h>
27#include <media/rc-map.h>
28
29static struct rc_map_table medion_x10_or2x[] = {
30 { 0x02, KEY_POWER },
31 { 0x16, KEY_TEXT }, /* "T" in a box, for teletext */
32
33 { 0x09, KEY_VOLUMEUP },
34 { 0x08, KEY_VOLUMEDOWN },
35 { 0x00, KEY_MUTE },
36 { 0x0b, KEY_CHANNELUP },
37 { 0x0c, KEY_CHANNELDOWN },
38
39 { 0x32, KEY_RED },
40 { 0x33, KEY_GREEN },
41 { 0x34, KEY_YELLOW },
42 { 0x35, KEY_BLUE },
43
44 { 0x18, KEY_PVR }, /* record symbol inside a tv symbol */
45 { 0x04, KEY_DVD }, /* disc symbol */
46 { 0x31, KEY_EPG }, /* a tv schedule symbol */
47 { 0x1c, KEY_TV }, /* play symbol inside a tv symbol */
48 { 0x20, KEY_BACK },
49 { 0x2f, KEY_INFO },
50
51 { 0x1a, KEY_UP },
52 { 0x22, KEY_DOWN },
53 { 0x1d, KEY_LEFT },
54 { 0x1f, KEY_RIGHT },
55 { 0x1e, KEY_OK },
56
57 { 0x1b, KEY_MEDIA }, /* Windows MCE button */
58
59 { 0x21, KEY_PREVIOUS },
60 { 0x23, KEY_NEXT },
61 { 0x24, KEY_REWIND },
62 { 0x26, KEY_FORWARD },
63 { 0x25, KEY_PLAY },
64 { 0x28, KEY_STOP },
65 { 0x29, KEY_PAUSE },
66 { 0x27, KEY_RECORD },
67
68 { 0x0d, KEY_1 },
69 { 0x0e, KEY_2 },
70 { 0x0f, KEY_3 },
71 { 0x10, KEY_4 },
72 { 0x11, KEY_5 },
73 { 0x12, KEY_6 },
74 { 0x13, KEY_7 },
75 { 0x14, KEY_8 },
76 { 0x15, KEY_9 },
77 { 0x17, KEY_0 },
78 { 0x30, KEY_CLEAR },
79 { 0x36, KEY_ENTER },
80 { 0x37, KEY_NUMERIC_STAR },
81 { 0x38, KEY_NUMERIC_POUND },
82};
83
84static struct rc_map_list medion_x10_or2x_map = {
85 .map = {
86 .scan = medion_x10_or2x,
87 .size = ARRAY_SIZE(medion_x10_or2x),
88 .rc_type = RC_TYPE_OTHER,
89 .name = RC_MAP_MEDION_X10_OR2X,
90 }
91};
92
93static int __init init_rc_map_medion_x10_or2x(void)
94{
95 return rc_map_register(&medion_x10_or2x_map);
96}
97
98static void __exit exit_rc_map_medion_x10_or2x(void)
99{
100 rc_map_unregister(&medion_x10_or2x_map);
101}
102
103module_init(init_rc_map_medion_x10_or2x)
104module_exit(exit_rc_map_medion_x10_or2x)
105
106MODULE_DESCRIPTION("Medion X10 OR22/OR24 RF remote keytable");
107MODULE_AUTHOR("Anssi Hannula <anssi.hannula@iki.fi>");
108MODULE_LICENSE("GPL");
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
index 88583a6ff7f2..2e0f67db666f 100644
--- a/include/media/rc-map.h
+++ b/include/media/rc-map.h
@@ -114,6 +114,7 @@ void rc_map_init(void);
114#define RC_MAP_MANLI "rc-manli" 114#define RC_MAP_MANLI "rc-manli"
115#define RC_MAP_MEDION_X10 "rc-medion-x10" 115#define RC_MAP_MEDION_X10 "rc-medion-x10"
116#define RC_MAP_MEDION_X10_DIGITAINER "rc-medion-x10-digitainer" 116#define RC_MAP_MEDION_X10_DIGITAINER "rc-medion-x10-digitainer"
117#define RC_MAP_MEDION_X10_OR2X "rc-medion-x10-or2x"
117#define RC_MAP_MSI_DIGIVOX_II "rc-msi-digivox-ii" 118#define RC_MAP_MSI_DIGIVOX_II "rc-msi-digivox-ii"
118#define RC_MAP_MSI_DIGIVOX_III "rc-msi-digivox-iii" 119#define RC_MAP_MSI_DIGIVOX_III "rc-msi-digivox-iii"
119#define RC_MAP_MSI_TVANYWHERE_PLUS "rc-msi-tvanywhere-plus" 120#define RC_MAP_MSI_TVANYWHERE_PLUS "rc-msi-tvanywhere-plus"