mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge pull request #3039 from benpicco/master
linux: XBox DVD Remote uses 12 bits scancodes
This commit is contained in:
commit
86e23ee1ed
@ -1,4 +1,4 @@
|
|||||||
From 3a0776f16df87fcb0f001d721deac5986ba6d52b Mon Sep 17 00:00:00 2001
|
From 4d331d301222dc0585ab8864a842b3e460b1f744 Mon Sep 17 00:00:00 2001
|
||||||
From: Benjamin Valentin <benpicco@googlemail.com>
|
From: Benjamin Valentin <benpicco@googlemail.com>
|
||||||
Date: Thu, 4 Oct 2018 02:57:10 +0200
|
Date: Thu, 4 Oct 2018 02:57:10 +0200
|
||||||
Subject: [PATCH] media: rc: add driver for Xbox DVD Movie Playback Kit
|
Subject: [PATCH] media: rc: add driver for Xbox DVD Movie Playback Kit
|
||||||
@ -14,14 +14,15 @@ This driver is heaviely based on the ati_remote driver where all the
|
|||||||
boilerplate was taken from - I was mostly just removing code.
|
boilerplate was taken from - I was mostly just removing code.
|
||||||
|
|
||||||
Signed-off-by: Benjamin Valentin <benpicco@googlemail.com>
|
Signed-off-by: Benjamin Valentin <benpicco@googlemail.com>
|
||||||
|
Signed-off-by: Sean Young <sean@mess.org>
|
||||||
---
|
---
|
||||||
drivers/media/rc/Kconfig | 12 +
|
drivers/media/rc/Kconfig | 12 +
|
||||||
drivers/media/rc/Makefile | 1 +
|
drivers/media/rc/Makefile | 1 +
|
||||||
drivers/media/rc/keymaps/Makefile | 1 +
|
drivers/media/rc/keymaps/Makefile | 1 +
|
||||||
drivers/media/rc/keymaps/rc-xbox-dvd.c | 63 +++++
|
drivers/media/rc/keymaps/rc-xbox-dvd.c | 63 +++++
|
||||||
drivers/media/rc/xbox_remote.c | 305 +++++++++++++++++++++++++
|
drivers/media/rc/xbox_remote.c | 306 +++++++++++++++++++++++++
|
||||||
include/media/rc-map.h | 1 +
|
include/media/rc-map.h | 1 +
|
||||||
6 files changed, 383 insertions(+)
|
6 files changed, 384 insertions(+)
|
||||||
create mode 100644 drivers/media/rc/keymaps/rc-xbox-dvd.c
|
create mode 100644 drivers/media/rc/keymaps/rc-xbox-dvd.c
|
||||||
create mode 100644 drivers/media/rc/xbox_remote.c
|
create mode 100644 drivers/media/rc/xbox_remote.c
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ index d6b913a3032d..5b1399af6b3a 100644
|
|||||||
rc-zx-irdec.o
|
rc-zx-irdec.o
|
||||||
diff --git a/drivers/media/rc/keymaps/rc-xbox-dvd.c b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
diff --git a/drivers/media/rc/keymaps/rc-xbox-dvd.c b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..61da6706715c
|
index 000000000000..af387244636b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
+++ b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
||||||
@@ -0,0 +1,63 @@
|
@@ -0,0 +1,63 @@
|
||||||
@ -82,35 +83,35 @@ index 000000000000..61da6706715c
|
|||||||
+
|
+
|
||||||
+/* based on lircd.conf.xbox */
|
+/* based on lircd.conf.xbox */
|
||||||
+static struct rc_map_table xbox_dvd[] = {
|
+static struct rc_map_table xbox_dvd[] = {
|
||||||
+ {0x0b, KEY_OK},
|
+ {0xa0b, KEY_OK},
|
||||||
+ {0xa6, KEY_UP},
|
+ {0xaa6, KEY_UP},
|
||||||
+ {0xa7, KEY_DOWN},
|
+ {0xaa7, KEY_DOWN},
|
||||||
+ {0xa8, KEY_RIGHT},
|
+ {0xaa8, KEY_RIGHT},
|
||||||
+ {0xa9, KEY_LEFT},
|
+ {0xaa9, KEY_LEFT},
|
||||||
+ {0xc3, KEY_INFO},
|
+ {0xac3, KEY_INFO},
|
||||||
+
|
+
|
||||||
+ {0xc6, KEY_9},
|
+ {0xac6, KEY_9},
|
||||||
+ {0xc7, KEY_8},
|
+ {0xac7, KEY_8},
|
||||||
+ {0xc8, KEY_7},
|
+ {0xac8, KEY_7},
|
||||||
+ {0xc9, KEY_6},
|
+ {0xac9, KEY_6},
|
||||||
+ {0xca, KEY_5},
|
+ {0xaca, KEY_5},
|
||||||
+ {0xcb, KEY_4},
|
+ {0xacb, KEY_4},
|
||||||
+ {0xcc, KEY_3},
|
+ {0xacc, KEY_3},
|
||||||
+ {0xcd, KEY_2},
|
+ {0xacd, KEY_2},
|
||||||
+ {0xce, KEY_1},
|
+ {0xace, KEY_1},
|
||||||
+ {0xcf, KEY_0},
|
+ {0xacf, KEY_0},
|
||||||
+
|
+
|
||||||
+ {0xd5, KEY_ANGLE},
|
+ {0xad5, KEY_ANGLE},
|
||||||
+ {0xd8, KEY_BACK},
|
+ {0xad8, KEY_BACK},
|
||||||
+ {0xdd, KEY_PREVIOUSSONG},
|
+ {0xadd, KEY_PREVIOUSSONG},
|
||||||
+ {0xdf, KEY_NEXTSONG},
|
+ {0xadf, KEY_NEXTSONG},
|
||||||
+ {0xe0, KEY_STOP},
|
+ {0xae0, KEY_STOP},
|
||||||
+ {0xe2, KEY_REWIND},
|
+ {0xae2, KEY_REWIND},
|
||||||
+ {0xe3, KEY_FASTFORWARD},
|
+ {0xae3, KEY_FASTFORWARD},
|
||||||
+ {0xe5, KEY_TITLE},
|
+ {0xae5, KEY_TITLE},
|
||||||
+ {0xe6, KEY_PAUSE},
|
+ {0xae6, KEY_PAUSE},
|
||||||
+ {0xea, KEY_PLAY},
|
+ {0xaea, KEY_PLAY},
|
||||||
+ {0xf7, KEY_MENU},
|
+ {0xaf7, KEY_MENU},
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+static struct rc_map_list xbox_dvd_map = {
|
+static struct rc_map_list xbox_dvd_map = {
|
||||||
@ -138,10 +139,10 @@ index 000000000000..61da6706715c
|
|||||||
+MODULE_LICENSE("GPL");
|
+MODULE_LICENSE("GPL");
|
||||||
diff --git a/drivers/media/rc/xbox_remote.c b/drivers/media/rc/xbox_remote.c
|
diff --git a/drivers/media/rc/xbox_remote.c b/drivers/media/rc/xbox_remote.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..55fa4b4aed60
|
index 000000000000..07ed9be24a60
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/media/rc/xbox_remote.c
|
+++ b/drivers/media/rc/xbox_remote.c
|
||||||
@@ -0,0 +1,305 @@
|
@@ -0,0 +1,306 @@
|
||||||
+// SPDX-License-Identifier: GPL-2.0+
|
+// SPDX-License-Identifier: GPL-2.0+
|
||||||
+// Driver for Xbox DVD Movie Playback Kit
|
+// Driver for Xbox DVD Movie Playback Kit
|
||||||
+// Copyright (c) 2018 by Benjamin Valentin <benpicco@googlemail.com>
|
+// Copyright (c) 2018 by Benjamin Valentin <benpicco@googlemail.com>
|
||||||
@ -199,7 +200,7 @@ index 000000000000..55fa4b4aed60
|
|||||||
+ struct usb_interface *interface;
|
+ struct usb_interface *interface;
|
||||||
+
|
+
|
||||||
+ struct urb *irq_urb;
|
+ struct urb *irq_urb;
|
||||||
+ unsigned char inbuf[DATA_BUFSIZE];
|
+ unsigned char inbuf[DATA_BUFSIZE] __aligned(sizeof(u16));
|
||||||
+
|
+
|
||||||
+ char rc_name[NAME_BUFSIZE];
|
+ char rc_name[NAME_BUFSIZE];
|
||||||
+ char rc_phys[NAME_BUFSIZE];
|
+ char rc_phys[NAME_BUFSIZE];
|
||||||
@ -239,7 +240,7 @@ index 000000000000..55fa4b4aed60
|
|||||||
+ * data[0] = 0x00
|
+ * data[0] = 0x00
|
||||||
+ * data[1] = length - always 0x06
|
+ * data[1] = length - always 0x06
|
||||||
+ * data[2] = the key code
|
+ * data[2] = the key code
|
||||||
+ * data[3] = high part of key code? - always 0x0a
|
+ * data[3] = high part of key code
|
||||||
+ * data[4] = last_press_ms (low)
|
+ * data[4] = last_press_ms (low)
|
||||||
+ * data[5] = last_press_ms (high)
|
+ * data[5] = last_press_ms (high)
|
||||||
+ */
|
+ */
|
||||||
@ -251,7 +252,8 @@ index 000000000000..55fa4b4aed60
|
|||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ rc_keydown(xbox_remote->rdev, RC_PROTO_UNKNOWN, data[2], 0);
|
+ rc_keydown(xbox_remote->rdev, RC_PROTO_UNKNOWN,
|
||||||
|
+ le16_to_cpup((__le16*)(data + 2)), 0);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 3a0776f16df87fcb0f001d721deac5986ba6d52b Mon Sep 17 00:00:00 2001
|
From 4d331d301222dc0585ab8864a842b3e460b1f744 Mon Sep 17 00:00:00 2001
|
||||||
From: Benjamin Valentin <benpicco@googlemail.com>
|
From: Benjamin Valentin <benpicco@googlemail.com>
|
||||||
Date: Thu, 4 Oct 2018 02:57:10 +0200
|
Date: Thu, 4 Oct 2018 02:57:10 +0200
|
||||||
Subject: [PATCH] media: rc: add driver for Xbox DVD Movie Playback Kit
|
Subject: [PATCH] media: rc: add driver for Xbox DVD Movie Playback Kit
|
||||||
@ -14,14 +14,15 @@ This driver is heaviely based on the ati_remote driver where all the
|
|||||||
boilerplate was taken from - I was mostly just removing code.
|
boilerplate was taken from - I was mostly just removing code.
|
||||||
|
|
||||||
Signed-off-by: Benjamin Valentin <benpicco@googlemail.com>
|
Signed-off-by: Benjamin Valentin <benpicco@googlemail.com>
|
||||||
|
Signed-off-by: Sean Young <sean@mess.org>
|
||||||
---
|
---
|
||||||
drivers/media/rc/Kconfig | 12 +
|
drivers/media/rc/Kconfig | 12 +
|
||||||
drivers/media/rc/Makefile | 1 +
|
drivers/media/rc/Makefile | 1 +
|
||||||
drivers/media/rc/keymaps/Makefile | 1 +
|
drivers/media/rc/keymaps/Makefile | 1 +
|
||||||
drivers/media/rc/keymaps/rc-xbox-dvd.c | 63 +++++
|
drivers/media/rc/keymaps/rc-xbox-dvd.c | 63 +++++
|
||||||
drivers/media/rc/xbox_remote.c | 305 +++++++++++++++++++++++++
|
drivers/media/rc/xbox_remote.c | 306 +++++++++++++++++++++++++
|
||||||
include/media/rc-map.h | 1 +
|
include/media/rc-map.h | 1 +
|
||||||
6 files changed, 383 insertions(+)
|
6 files changed, 384 insertions(+)
|
||||||
create mode 100644 drivers/media/rc/keymaps/rc-xbox-dvd.c
|
create mode 100644 drivers/media/rc/keymaps/rc-xbox-dvd.c
|
||||||
create mode 100644 drivers/media/rc/xbox_remote.c
|
create mode 100644 drivers/media/rc/xbox_remote.c
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ index d6b913a3032d..5b1399af6b3a 100644
|
|||||||
rc-zx-irdec.o
|
rc-zx-irdec.o
|
||||||
diff --git a/drivers/media/rc/keymaps/rc-xbox-dvd.c b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
diff --git a/drivers/media/rc/keymaps/rc-xbox-dvd.c b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..61da6706715c
|
index 000000000000..af387244636b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
+++ b/drivers/media/rc/keymaps/rc-xbox-dvd.c
|
||||||
@@ -0,0 +1,63 @@
|
@@ -0,0 +1,63 @@
|
||||||
@ -82,35 +83,35 @@ index 000000000000..61da6706715c
|
|||||||
+
|
+
|
||||||
+/* based on lircd.conf.xbox */
|
+/* based on lircd.conf.xbox */
|
||||||
+static struct rc_map_table xbox_dvd[] = {
|
+static struct rc_map_table xbox_dvd[] = {
|
||||||
+ {0x0b, KEY_OK},
|
+ {0xa0b, KEY_OK},
|
||||||
+ {0xa6, KEY_UP},
|
+ {0xaa6, KEY_UP},
|
||||||
+ {0xa7, KEY_DOWN},
|
+ {0xaa7, KEY_DOWN},
|
||||||
+ {0xa8, KEY_RIGHT},
|
+ {0xaa8, KEY_RIGHT},
|
||||||
+ {0xa9, KEY_LEFT},
|
+ {0xaa9, KEY_LEFT},
|
||||||
+ {0xc3, KEY_INFO},
|
+ {0xac3, KEY_INFO},
|
||||||
+
|
+
|
||||||
+ {0xc6, KEY_9},
|
+ {0xac6, KEY_9},
|
||||||
+ {0xc7, KEY_8},
|
+ {0xac7, KEY_8},
|
||||||
+ {0xc8, KEY_7},
|
+ {0xac8, KEY_7},
|
||||||
+ {0xc9, KEY_6},
|
+ {0xac9, KEY_6},
|
||||||
+ {0xca, KEY_5},
|
+ {0xaca, KEY_5},
|
||||||
+ {0xcb, KEY_4},
|
+ {0xacb, KEY_4},
|
||||||
+ {0xcc, KEY_3},
|
+ {0xacc, KEY_3},
|
||||||
+ {0xcd, KEY_2},
|
+ {0xacd, KEY_2},
|
||||||
+ {0xce, KEY_1},
|
+ {0xace, KEY_1},
|
||||||
+ {0xcf, KEY_0},
|
+ {0xacf, KEY_0},
|
||||||
+
|
+
|
||||||
+ {0xd5, KEY_ANGLE},
|
+ {0xad5, KEY_ANGLE},
|
||||||
+ {0xd8, KEY_BACK},
|
+ {0xad8, KEY_BACK},
|
||||||
+ {0xdd, KEY_PREVIOUSSONG},
|
+ {0xadd, KEY_PREVIOUSSONG},
|
||||||
+ {0xdf, KEY_NEXTSONG},
|
+ {0xadf, KEY_NEXTSONG},
|
||||||
+ {0xe0, KEY_STOP},
|
+ {0xae0, KEY_STOP},
|
||||||
+ {0xe2, KEY_REWIND},
|
+ {0xae2, KEY_REWIND},
|
||||||
+ {0xe3, KEY_FASTFORWARD},
|
+ {0xae3, KEY_FASTFORWARD},
|
||||||
+ {0xe5, KEY_TITLE},
|
+ {0xae5, KEY_TITLE},
|
||||||
+ {0xe6, KEY_PAUSE},
|
+ {0xae6, KEY_PAUSE},
|
||||||
+ {0xea, KEY_PLAY},
|
+ {0xaea, KEY_PLAY},
|
||||||
+ {0xf7, KEY_MENU},
|
+ {0xaf7, KEY_MENU},
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+static struct rc_map_list xbox_dvd_map = {
|
+static struct rc_map_list xbox_dvd_map = {
|
||||||
@ -138,10 +139,10 @@ index 000000000000..61da6706715c
|
|||||||
+MODULE_LICENSE("GPL");
|
+MODULE_LICENSE("GPL");
|
||||||
diff --git a/drivers/media/rc/xbox_remote.c b/drivers/media/rc/xbox_remote.c
|
diff --git a/drivers/media/rc/xbox_remote.c b/drivers/media/rc/xbox_remote.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..55fa4b4aed60
|
index 000000000000..07ed9be24a60
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/media/rc/xbox_remote.c
|
+++ b/drivers/media/rc/xbox_remote.c
|
||||||
@@ -0,0 +1,305 @@
|
@@ -0,0 +1,306 @@
|
||||||
+// SPDX-License-Identifier: GPL-2.0+
|
+// SPDX-License-Identifier: GPL-2.0+
|
||||||
+// Driver for Xbox DVD Movie Playback Kit
|
+// Driver for Xbox DVD Movie Playback Kit
|
||||||
+// Copyright (c) 2018 by Benjamin Valentin <benpicco@googlemail.com>
|
+// Copyright (c) 2018 by Benjamin Valentin <benpicco@googlemail.com>
|
||||||
@ -199,7 +200,7 @@ index 000000000000..55fa4b4aed60
|
|||||||
+ struct usb_interface *interface;
|
+ struct usb_interface *interface;
|
||||||
+
|
+
|
||||||
+ struct urb *irq_urb;
|
+ struct urb *irq_urb;
|
||||||
+ unsigned char inbuf[DATA_BUFSIZE];
|
+ unsigned char inbuf[DATA_BUFSIZE] __aligned(sizeof(u16));
|
||||||
+
|
+
|
||||||
+ char rc_name[NAME_BUFSIZE];
|
+ char rc_name[NAME_BUFSIZE];
|
||||||
+ char rc_phys[NAME_BUFSIZE];
|
+ char rc_phys[NAME_BUFSIZE];
|
||||||
@ -239,7 +240,7 @@ index 000000000000..55fa4b4aed60
|
|||||||
+ * data[0] = 0x00
|
+ * data[0] = 0x00
|
||||||
+ * data[1] = length - always 0x06
|
+ * data[1] = length - always 0x06
|
||||||
+ * data[2] = the key code
|
+ * data[2] = the key code
|
||||||
+ * data[3] = high part of key code? - always 0x0a
|
+ * data[3] = high part of key code
|
||||||
+ * data[4] = last_press_ms (low)
|
+ * data[4] = last_press_ms (low)
|
||||||
+ * data[5] = last_press_ms (high)
|
+ * data[5] = last_press_ms (high)
|
||||||
+ */
|
+ */
|
||||||
@ -251,7 +252,8 @@ index 000000000000..55fa4b4aed60
|
|||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ rc_keydown(xbox_remote->rdev, RC_PROTO_UNKNOWN, data[2], 0);
|
+ rc_keydown(xbox_remote->rdev, RC_PROTO_UNKNOWN,
|
||||||
|
+ le16_to_cpup((__le16*)(data + 2)), 0);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
# table xbox_dvd, type: unknown
|
# table xbox_dvd, type: unknown
|
||||||
0x0b KEY_OK
|
0xa0b KEY_OK
|
||||||
0xa6 KEY_UP
|
0xaa6 KEY_UP
|
||||||
0xa7 KEY_DOWN
|
0xaa7 KEY_DOWN
|
||||||
0xa8 KEY_RIGHT
|
0xaa8 KEY_RIGHT
|
||||||
0xa9 KEY_LEFT
|
0xaa9 KEY_LEFT
|
||||||
0xc3 KEY_INFO
|
0xac3 KEY_INFO
|
||||||
0xc6 KEY_9
|
0xac6 KEY_9
|
||||||
0xc7 KEY_8
|
0xac7 KEY_8
|
||||||
0xc8 KEY_7
|
0xac8 KEY_7
|
||||||
0xc9 KEY_6
|
0xac9 KEY_6
|
||||||
0xca KEY_5
|
0xaca KEY_5
|
||||||
0xcb KEY_4
|
0xacb KEY_4
|
||||||
0xcc KEY_3
|
0xacc KEY_3
|
||||||
0xcd KEY_2
|
0xacd KEY_2
|
||||||
0xce KEY_1
|
0xace KEY_1
|
||||||
0xcf KEY_0
|
0xacf KEY_0
|
||||||
0xd5 KEY_ANGLE
|
0xad5 KEY_ANGLE
|
||||||
0xd8 KEY_BACK
|
0xad8 KEY_BACK
|
||||||
0xdd KEY_PREVIOUSSONG
|
0xadd KEY_PREVIOUSSONG
|
||||||
0xdf KEY_NEXTSONG
|
0xadf KEY_NEXTSONG
|
||||||
0xe0 KEY_STOP
|
0xae0 KEY_STOP
|
||||||
0xe2 KEY_REWIND
|
0xae2 KEY_REWIND
|
||||||
0xe3 KEY_FASTFORWARD
|
0xae3 KEY_FASTFORWARD
|
||||||
0xe5 KEY_TITLE
|
0xae5 KEY_TITLE
|
||||||
0xe6 KEY_PAUSE
|
0xae6 KEY_PAUSE
|
||||||
0xea KEY_PLAY
|
0xaea KEY_PLAY
|
||||||
0xf7 KEY_MENU
|
0xaf7 KEY_MENU
|
||||||
|
Loading…
x
Reference in New Issue
Block a user