mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-31 14:37:59 +00:00
linux: add some more X10 patches
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
ff4c1fdad6
commit
7da0c2d928
@ -0,0 +1,207 @@
|
||||
From ba993a6e4af8ff0e3a2f865836ff9330e5ffa219 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
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 <anssi.hannula@iki.fi>
|
||||
---
|
||||
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 <anssi.hannula@iki.fi>
|
||||
+ *
|
||||
+ * 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 <linux/module.h>
|
||||
+#include <media/rc-map.h>
|
||||
+
|
||||
+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 <anssi.hannula@iki.fi>");
|
||||
+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
|
||||
|
@ -0,0 +1,48 @@
|
||||
From 3c90ed099a00fc9913665fab0ed3c4382a1b4d64 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
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 <anssi.hannula@iki.fi>
|
||||
---
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user