diff --git a/packages/linux/patches/linux-3.2.16-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch b/packages/linux/patches/linux-3.2.16-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch new file mode 100644 index 0000000000..be811f7d9b --- /dev/null +++ b/packages/linux/patches/linux-3.2.16-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch @@ -0,0 +1,207 @@ +From ba993a6e4af8ff0e3a2f865836ff9330e5ffa219 Mon Sep 17 00:00:00 2001 +From: Anssi Hannula +Date: Mon, 23 Apr 2012 00:25:14 +0300 +Subject: [PATCH 3/4] [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. + +[TODO: testing information] + +Signed-off-by: Anssi Hannula +--- + drivers/media/rc/ati_remote.c | 30 ++++++- + drivers/media/rc/keymaps/Makefile | 1 + + drivers/media/rc/keymaps/rc-medion-x10-or2x.c | 108 +++++++++++++++++++++++++ + include/media/rc-map.h | 1 + + 4 files changed, 136 insertions(+), 4 deletions(-) + create mode 100644 drivers/media/rc/keymaps/rc-medion-x10-or2x.c + +diff --git a/drivers/media/rc/ati_remote.c b/drivers/media/rc/ati_remote.c +index 26fa043..2c70352 100644 +--- a/drivers/media/rc/ati_remote.c ++++ b/drivers/media/rc/ati_remote.c +@@ -161,11 +161,33 @@ static const char *get_medion_keymap(struct usb_interface *interface) + { + struct usb_device *udev = interface_to_usbdev(interface); + +- /* The receiver shipped with the "Digitainer" variant helpfully has +- * a single additional bit set in its descriptor. */ +- if (udev->actconfig->desc.bmAttributes & USB_CONFIG_ATT_WAKEUP) +- return RC_MAP_MEDION_X10_DIGITAINER; ++ /* ++ * There are many different Medion remotes shipped with a receiver ++ * with the same usb id, but the receivers have subtle differences ++ * in the USB descriptors allowing us to detect them. ++ */ ++ ++ if (udev->manufacturer && udev->product) { ++ if (udev->actconfig->desc.bmAttributes & USB_CONFIG_ATT_WAKEUP) { ++ ++ if (!strcmp(udev->manufacturer, "X10 Wireless Technology Inc") ++ && !strcmp(udev->product, "USB Receiver")) ++ return RC_MAP_MEDION_X10_DIGITAINER; ++ ++ if (!strcmp(udev->manufacturer, "X10 WTI") ++ && !strcmp(udev->product, "RF receiver")) ++ return RC_MAP_MEDION_X10_OR2X; ++ } else { ++ ++ if (!strcmp(udev->manufacturer, "X10 Wireless Technology Inc") ++ && !strcmp(udev->product, "USB Receiver")) ++ return RC_MAP_MEDION_X10; ++ } ++ } + ++ dev_info(&interface->dev, ++ "Unknown Medion X10 receiver, using default ati_remote Medion keymap\n"); ++ + return RC_MAP_MEDION_X10; + } + +diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile +index c1d977c..975e130 100644 +--- a/drivers/media/rc/keymaps/Makefile ++++ b/drivers/media/rc/keymaps/Makefile +@@ -50,6 +50,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \ + rc-manli.o \ + rc-medion-x10.o \ + rc-medion-x10-digitainer.o \ ++ rc-medion-x10-or2x.o \ + rc-msi-digivox-ii.o \ + rc-msi-digivox-iii.o \ + 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 0000000..b077300 +--- /dev/null ++++ b/drivers/media/rc/keymaps/rc-medion-x10-or2x.c +@@ -0,0 +1,108 @@ ++/* ++ * Medion X10 OR22/OR24 RF remote keytable ++ * ++ * Copyright (C) 2012 Anssi Hannula ++ * ++ * This keymap is for several Medion X10 remotes that have the Windows MCE ++ * button. This has been tested with a "RF VISTA Remote Control", OR24V, ++ * P/N 20035335, but should work with other variants that have the same ++ * buttons, such as OR22V and OR24E. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ */ ++ ++#include ++#include ++ ++static struct rc_map_table medion_x10_or2x[] = { ++ { 0x02, KEY_POWER }, ++ { 0x16, KEY_TEXT }, /* "T" in a box, for teletext */ ++ ++ { 0x09, KEY_VOLUMEUP }, ++ { 0x08, KEY_VOLUMEDOWN }, ++ { 0x00, KEY_MUTE }, ++ { 0x0b, KEY_CHANNELUP }, ++ { 0x0c, KEY_CHANNELDOWN }, ++ ++ { 0x32, KEY_RED }, ++ { 0x33, KEY_GREEN }, ++ { 0x34, KEY_YELLOW }, ++ { 0x35, KEY_BLUE }, ++ ++ { 0x18, KEY_PVR }, /* record symbol inside a tv symbol */ ++ { 0x04, KEY_DVD }, /* disc symbol */ ++ { 0x31, KEY_EPG }, /* a tv schedule symbol */ ++ { 0x1c, KEY_TV }, /* play symbol inside a tv symbol */ ++ { 0x20, KEY_BACK }, ++ { 0x2f, KEY_INFO }, ++ ++ { 0x1a, KEY_UP }, ++ { 0x22, KEY_DOWN }, ++ { 0x1d, KEY_LEFT }, ++ { 0x1f, KEY_RIGHT }, ++ { 0x1e, KEY_OK }, ++ ++ { 0x1b, KEY_MEDIA }, /* Windows MCE button */ ++ ++ { 0x21, KEY_PREVIOUS }, ++ { 0x23, KEY_NEXT }, ++ { 0x24, KEY_REWIND }, ++ { 0x26, KEY_FORWARD }, ++ { 0x25, KEY_PLAY }, ++ { 0x28, KEY_STOP }, ++ { 0x29, KEY_PAUSE }, ++ { 0x27, KEY_RECORD }, ++ ++ { 0x0d, KEY_1 }, ++ { 0x0e, KEY_2 }, ++ { 0x0f, KEY_3 }, ++ { 0x10, KEY_4 }, ++ { 0x11, KEY_5 }, ++ { 0x12, KEY_6 }, ++ { 0x13, KEY_7 }, ++ { 0x14, KEY_8 }, ++ { 0x15, KEY_9 }, ++ { 0x17, KEY_0 }, ++ { 0x30, KEY_CLEAR }, ++ { 0x36, KEY_ENTER }, ++ { 0x37, KEY_NUMERIC_STAR }, ++ { 0x38, KEY_NUMERIC_POUND }, ++}; ++ ++static struct rc_map_list medion_x10_or2x_map = { ++ .map = { ++ .scan = medion_x10_or2x, ++ .size = ARRAY_SIZE(medion_x10_or2x), ++ .rc_type = RC_TYPE_OTHER, ++ .name = RC_MAP_MEDION_X10_OR2X, ++ } ++}; ++ ++static int __init init_rc_map_medion_x10_or2x(void) ++{ ++ return rc_map_register(&medion_x10_or2x_map); ++} ++ ++static void __exit exit_rc_map_medion_x10_or2x(void) ++{ ++ rc_map_unregister(&medion_x10_or2x_map); ++} ++ ++module_init(init_rc_map_medion_x10_or2x) ++module_exit(exit_rc_map_medion_x10_or2x) ++ ++MODULE_DESCRIPTION("Medion X10 OR22/OR24 RF remote keytable"); ++MODULE_AUTHOR("Anssi Hannula "); ++MODULE_LICENSE("GPL"); +diff --git a/include/media/rc-map.h b/include/media/rc-map.h +index 902d29d..20970ae 100644 +--- a/include/media/rc-map.h ++++ b/include/media/rc-map.h +@@ -111,6 +111,7 @@ void rc_map_init(void); + #define RC_MAP_MANLI "rc-manli" + #define RC_MAP_MEDION_X10 "rc-medion-x10" + #define RC_MAP_MEDION_X10_DIGITAINER "rc-medion-x10-digitainer" ++#define RC_MAP_MEDION_X10_OR2X "rc-medion-x10-or2x" + #define RC_MAP_MSI_DIGIVOX_II "rc-msi-digivox-ii" + #define RC_MAP_MSI_DIGIVOX_III "rc-msi-digivox-iii" + #define RC_MAP_MSI_TVANYWHERE_PLUS "rc-msi-tvanywhere-plus" +-- +1.7.10 + diff --git a/packages/linux/patches/linux-3.2.16-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch b/packages/linux/patches/linux-3.2.16-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch new file mode 100644 index 0000000000..10b412a339 --- /dev/null +++ b/packages/linux/patches/linux-3.2.16-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch @@ -0,0 +1,48 @@ +From 3c90ed099a00fc9913665fab0ed3c4382a1b4d64 Mon Sep 17 00:00:00 2001 +From: Anssi Hannula +Date: Mon, 23 Apr 2012 00:37:39 +0300 +Subject: [PATCH 4/4] [media] ati_remote: add regular up/down buttons to + Medion Digitainer keymap + +There are many different Medion X10 remotes that need slightly different +keymaps. We may not yet have all the needed keymaps, in which case a +wrong keymap may be used. This happened with Medion X10 OR2x remotes +before the keymap for them was added, causing the ati_remote driver to +select the Medion Digitainer keymap instead. Unfortunately, the Medion +Digitainer keymap doesn't have the standard X10 up/down scancodes +assigned to KEY_UP and KEY_DOWN keycodes, making wrongly assigned +remotes mostly unusable. + +Add the regular KEY_UP and KEY_DOWN scancodes to the Medion X10 +Digitainer keymap, making any Medion remote mostly usable even when +wrongly used with that keymap (standard buttons, such as +up/down/left/right, 0-9, play/stop/pause, have the same scancode in all +the X10 remotes). + +Signed-off-by: Anssi Hannula +--- + drivers/media/rc/keymaps/rc-medion-x10-digitainer.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/drivers/media/rc/keymaps/rc-medion-x10-digitainer.c b/drivers/media/rc/keymaps/rc-medion-x10-digitainer.c +index 0a5ce84..d405d8c 100644 +--- a/drivers/media/rc/keymaps/rc-medion-x10-digitainer.c ++++ b/drivers/media/rc/keymaps/rc-medion-x10-digitainer.c +@@ -86,6 +86,14 @@ static struct rc_map_table medion_x10_digitainer[] = { + { 0x14, KEY_8 }, + { 0x15, KEY_9 }, + { 0x17, KEY_0 }, ++ ++ /* these do not actually exist on this remote, but these scancodes ++ * exist on all other Medion X10 remotes and adding them here allows ++ * such remotes to be adequately usable with this keymap in case ++ * this keymap is wrongly used with them (which is quite possible as ++ * there are lots of different Medion X10 remotesi): */ ++ { 0x1a, KEY_UP }, ++ { 0x22, KEY_DOWN }, + }; + + static struct rc_map_list medion_x10_digitainer_map = { +-- +1.7.10 +