mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #2692 from HiassofT/le9-topseed-mceusb-fix
RPi, Generic: fix erratic IR timeout behaviour on Topseed mceusb receiver 1784:0011
This commit is contained in:
commit
657683e73c
@ -1,7 +1,7 @@
|
||||
From 057ccfd1d18842bd2fa39c4b996a9a952c5a821d Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Tue, 27 Mar 2018 19:35:11 +0200
|
||||
Subject: [PATCH 1/9] media: rc: set timeout to smallest value required by
|
||||
Subject: [PATCH 01/11] media: rc: set timeout to smallest value required by
|
||||
enabled protocols
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48516/
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
12 files changed, 46 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-jvc-decoder.c b/drivers/media/rc/ir-jvc-decoder.c
|
||||
index e2bd68c42edfa..fc931fe39bb75 100644
|
||||
index e2bd68c42edf..fc931fe39bb7 100644
|
||||
--- a/drivers/media/rc/ir-jvc-decoder.c
|
||||
+++ b/drivers/media/rc/ir-jvc-decoder.c
|
||||
@@ -212,6 +212,7 @@ static struct ir_raw_handler jvc_handler = {
|
||||
@ -43,7 +43,7 @@ index e2bd68c42edfa..fc931fe39bb75 100644
|
||||
|
||||
static int __init ir_jvc_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 7c572a6436563..7afeab04dbbfd 100644
|
||||
index 7c572a643656..7afeab04dbbf 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -474,6 +474,7 @@ static struct ir_raw_handler mce_kbd_handler = {
|
||||
@ -55,7 +55,7 @@ index 7c572a6436563..7afeab04dbbfd 100644
|
||||
|
||||
static int __init ir_mce_kbd_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c
|
||||
index a95d09acc22a5..3e12059add84d 100644
|
||||
index a95d09acc22a..3e12059add84 100644
|
||||
--- a/drivers/media/rc/ir-nec-decoder.c
|
||||
+++ b/drivers/media/rc/ir-nec-decoder.c
|
||||
@@ -264,6 +264,7 @@ static struct ir_raw_handler nec_handler = {
|
||||
@ -67,7 +67,7 @@ index a95d09acc22a5..3e12059add84d 100644
|
||||
|
||||
static int __init ir_nec_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-rc5-decoder.c b/drivers/media/rc/ir-rc5-decoder.c
|
||||
index 1292f534de434..1eaca0528b691 100644
|
||||
index 1292f534de43..1eaca0528b69 100644
|
||||
--- a/drivers/media/rc/ir-rc5-decoder.c
|
||||
+++ b/drivers/media/rc/ir-rc5-decoder.c
|
||||
@@ -282,6 +282,7 @@ static struct ir_raw_handler rc5_handler = {
|
||||
@ -79,7 +79,7 @@ index 1292f534de434..1eaca0528b691 100644
|
||||
|
||||
static int __init ir_rc5_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-rc6-decoder.c b/drivers/media/rc/ir-rc6-decoder.c
|
||||
index 5d0d2fe3b7a7f..8c4c733a5f27b 100644
|
||||
index 5d0d2fe3b7a7..8c4c733a5f27 100644
|
||||
--- a/drivers/media/rc/ir-rc6-decoder.c
|
||||
+++ b/drivers/media/rc/ir-rc6-decoder.c
|
||||
@@ -408,6 +408,7 @@ static struct ir_raw_handler rc6_handler = {
|
||||
@ -91,7 +91,7 @@ index 5d0d2fe3b7a7f..8c4c733a5f27b 100644
|
||||
|
||||
static int __init ir_rc6_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-sanyo-decoder.c b/drivers/media/rc/ir-sanyo-decoder.c
|
||||
index 758c60956850f..935880d4889ec 100644
|
||||
index 758c60956850..935880d4889e 100644
|
||||
--- a/drivers/media/rc/ir-sanyo-decoder.c
|
||||
+++ b/drivers/media/rc/ir-sanyo-decoder.c
|
||||
@@ -218,6 +218,7 @@ static struct ir_raw_handler sanyo_handler = {
|
||||
@ -103,7 +103,7 @@ index 758c60956850f..935880d4889ec 100644
|
||||
|
||||
static int __init ir_sanyo_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-sharp-decoder.c b/drivers/media/rc/ir-sharp-decoder.c
|
||||
index 129b558acc921..96d818bd0cc98 100644
|
||||
index 129b558acc92..96d818bd0cc9 100644
|
||||
--- a/drivers/media/rc/ir-sharp-decoder.c
|
||||
+++ b/drivers/media/rc/ir-sharp-decoder.c
|
||||
@@ -226,6 +226,7 @@ static struct ir_raw_handler sharp_handler = {
|
||||
@ -115,7 +115,7 @@ index 129b558acc921..96d818bd0cc98 100644
|
||||
|
||||
static int __init ir_sharp_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-sony-decoder.c b/drivers/media/rc/ir-sony-decoder.c
|
||||
index a47ced763031d..d57d15b431f6d 100644
|
||||
index a47ced763031..d57d15b431f6 100644
|
||||
--- a/drivers/media/rc/ir-sony-decoder.c
|
||||
+++ b/drivers/media/rc/ir-sony-decoder.c
|
||||
@@ -221,6 +221,7 @@ static struct ir_raw_handler sony_handler = {
|
||||
@ -127,7 +127,7 @@ index a47ced763031d..d57d15b431f6d 100644
|
||||
|
||||
static int __init ir_sony_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-xmp-decoder.c b/drivers/media/rc/ir-xmp-decoder.c
|
||||
index 6f464be1c8d7a..1ac3a4cee69e3 100644
|
||||
index 6f464be1c8d7..1ac3a4cee69e 100644
|
||||
--- a/drivers/media/rc/ir-xmp-decoder.c
|
||||
+++ b/drivers/media/rc/ir-xmp-decoder.c
|
||||
@@ -198,6 +198,7 @@ static int ir_xmp_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
@ -139,7 +139,7 @@ index 6f464be1c8d7a..1ac3a4cee69e3 100644
|
||||
|
||||
static int __init ir_xmp_decode_init(void)
|
||||
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
|
||||
index 7da9c96cb0588..5fd3b5aed9ece 100644
|
||||
index 7da9c96cb058..5fd3b5aed9ec 100644
|
||||
--- a/drivers/media/rc/rc-core-priv.h
|
||||
+++ b/drivers/media/rc/rc-core-priv.h
|
||||
@@ -29,6 +29,7 @@ struct ir_raw_handler {
|
||||
@ -151,7 +151,7 @@ index 7da9c96cb0588..5fd3b5aed9ece 100644
|
||||
/* These two should only be used by the lirc decoder */
|
||||
int (*raw_register)(struct rc_dev *dev);
|
||||
diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c
|
||||
index 503bc425a187c..7f0197bf5d32d 100644
|
||||
index 503bc425a187..7f0197bf5d32 100644
|
||||
--- a/drivers/media/rc/rc-ir-raw.c
|
||||
+++ b/drivers/media/rc/rc-ir-raw.c
|
||||
@@ -215,7 +215,36 @@ ir_raw_get_allowed_protocols(void)
|
||||
@ -193,7 +193,7 @@ index 503bc425a187c..7f0197bf5d32d 100644
|
||||
}
|
||||
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index 72f381522cb26..e7e20bcfe2729 100644
|
||||
index 72f381522cb2..e7e20bcfe272 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -1161,6 +1161,9 @@ static ssize_t store_protocols(struct device *device,
|
||||
@ -243,7 +243,7 @@ index 72f381522cb26..e7e20bcfe2729 100644
|
||||
From 00f54931b0ff7202020567544605b7e3c4f1dee8 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Tue, 27 Mar 2018 19:45:36 +0200
|
||||
Subject: [PATCH 2/9] media: rc: per-protocol repeat period and minimum keyup
|
||||
Subject: [PATCH 02/11] media: rc: per-protocol repeat period and minimum keyup
|
||||
timer
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48520/
|
||||
@ -265,7 +265,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
3 files changed, 30 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/cec/cec-core.c b/drivers/media/cec/cec-core.c
|
||||
index 648136e552d5b..4cf35e4af7bd6 100644
|
||||
index 648136e552d5..4cf35e4af7bd 100644
|
||||
--- a/drivers/media/cec/cec-core.c
|
||||
+++ b/drivers/media/cec/cec-core.c
|
||||
@@ -280,7 +280,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
|
||||
@ -278,7 +278,7 @@ index 648136e552d5b..4cf35e4af7bd6 100644
|
||||
#endif
|
||||
return adap;
|
||||
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
|
||||
index 4c8f456238bca..ef7e43038092f 100644
|
||||
index 4c8f456238bc..ef7e43038092 100644
|
||||
--- a/drivers/media/rc/ir-lirc-codec.c
|
||||
+++ b/drivers/media/rc/ir-lirc-codec.c
|
||||
@@ -314,7 +314,7 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
|
||||
@ -291,7 +291,7 @@ index 4c8f456238bca..ef7e43038092f 100644
|
||||
|
||||
lirc->send_timeout_reports = !!val;
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index e7e20bcfe2729..36f99a0919c30 100644
|
||||
index e7e20bcfe272..36f99a0919c3 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -35,48 +35,48 @@ static const struct {
|
||||
@ -409,7 +409,7 @@ index e7e20bcfe2729..36f99a0919c30 100644
|
||||
From 6f3d979fa02a3847799d838a03ad9c5ad009a778 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:39 +0100
|
||||
Subject: [PATCH 3/9] media: rc: mce_kbd decoder: low timeout values cause
|
||||
Subject: [PATCH 03/11] media: rc: mce_kbd decoder: low timeout values cause
|
||||
double keydowns
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48522/
|
||||
@ -429,7 +429,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 7afeab04dbbfd..a243d2d1ca935 100644
|
||||
index 7afeab04dbbf..a243d2d1ca93 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -319,11 +319,13 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
@ -458,7 +458,7 @@ index 7afeab04dbbfd..a243d2d1ca935 100644
|
||||
From f4d8df33339167784bb6a17e3ee2d20f9efe1b21 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:40 +0100
|
||||
Subject: [PATCH 4/9] media: rc: mce_kbd protocol encodes two scancodes
|
||||
Subject: [PATCH 04/11] media: rc: mce_kbd protocol encodes two scancodes
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48518/
|
||||
|
||||
@ -473,7 +473,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
2 files changed, 13 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index a243d2d1ca935..2ea48a54f2b3e 100644
|
||||
index a243d2d1ca93..2ea48a54f2b3 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -147,13 +147,14 @@ static enum mce_kbd_mode mce_kbd_mode(struct mce_kbd_dec *data)
|
||||
@ -522,7 +522,7 @@ index a243d2d1ca935..2ea48a54f2b3e 100644
|
||||
if (scancode) {
|
||||
delay = nsecs_to_jiffies(dev->timeout) +
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index 36f99a0919c30..34cef7aa207c9 100644
|
||||
index 36f99a0919c3..34cef7aa207c 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -60,7 +60,7 @@ static const struct {
|
||||
@ -541,7 +541,7 @@ index 36f99a0919c30..34cef7aa207c9 100644
|
||||
From 8b0ffc3eccf8737aa93c6b7bf9bc9d1e10d634bd Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:41 +0100
|
||||
Subject: [PATCH 5/9] media: rc: mce_kbd decoder: fix stuck keys
|
||||
Subject: [PATCH 05/11] media: rc: mce_kbd decoder: fix stuck keys
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48519/
|
||||
|
||||
@ -557,7 +557,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 2ea48a54f2b3e..164302ec4fef0 100644
|
||||
index 2ea48a54f2b3..164302ec4fef 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -130,6 +130,8 @@ static void mce_kbd_rx_timeout(unsigned long data)
|
||||
@ -576,7 +576,7 @@ index 2ea48a54f2b3e..164302ec4fef0 100644
|
||||
From b77de094b54449079890b8cc4fbc2f98573253b2 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:42 +0100
|
||||
Subject: [PATCH 6/9] media: rc: mceusb: allow the timeout to be configurable
|
||||
Subject: [PATCH 06/11] media: rc: mceusb: allow the timeout to be configurable
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48521/
|
||||
|
||||
@ -589,7 +589,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index bf7aaff3aa375..160754a7a3822 100644
|
||||
index bf7aaff3aa37..160754a7a382 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -937,6 +937,25 @@ static int mceusb_set_tx_carrier(struct rc_dev *dev, u32 carrier)
|
||||
@ -636,7 +636,7 @@ index bf7aaff3aa375..160754a7a3822 100644
|
||||
From dccebb7231209acb8da7f9f1e8fd1e7c12c3e70f Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 15 Apr 2018 17:26:21 +0200
|
||||
Subject: [PATCH 7/9] media: rc: mce_kbd decoder: remove superfluous call to
|
||||
Subject: [PATCH 07/11] media: rc: mce_kbd decoder: remove superfluous call to
|
||||
input_sync
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48681/
|
||||
@ -651,7 +651,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 164302ec4fef0..f057b57074c97 100644
|
||||
index 164302ec4fef..f057b57074c9 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -355,7 +355,6 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
@ -669,7 +669,7 @@ index 164302ec4fef0..f057b57074c97 100644
|
||||
From 731b38824c8145bbc7d55a9c2af4e449ff5988fb Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 15 Apr 2018 17:38:49 +0200
|
||||
Subject: [PATCH 8/9] media: rc: mce_kbd decoder: fix race condition
|
||||
Subject: [PATCH 08/11] media: rc: mce_kbd decoder: fix race condition
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48680/
|
||||
|
||||
@ -692,7 +692,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
2 files changed, 17 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index f057b57074c97..67c37db76737f 100644
|
||||
index f057b57074c9..67c37db76737 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -120,18 +120,24 @@ static void mce_kbd_rx_timeout(unsigned long data)
|
||||
@ -752,7 +752,7 @@ index f057b57074c97..67c37db76737f 100644
|
||||
input_set_drvdata(idev, mce_kbd);
|
||||
|
||||
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
|
||||
index 5fd3b5aed9ece..77928ae431041 100644
|
||||
index 5fd3b5aed9ec..77928ae43104 100644
|
||||
--- a/drivers/media/rc/rc-core-priv.h
|
||||
+++ b/drivers/media/rc/rc-core-priv.h
|
||||
@@ -97,6 +97,7 @@ struct ir_raw_event_ctrl {
|
||||
@ -770,7 +770,7 @@ index 5fd3b5aed9ece..77928ae431041 100644
|
||||
From 4e363f78b2aae387980ac411e0f901caee5da9e1 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Wed, 18 Apr 2018 13:50:52 +0200
|
||||
Subject: [PATCH 9/9] media: rc: mceusb: IR of length 0 means IR timeout, not
|
||||
Subject: [PATCH 09/11] media: rc: mceusb: IR of length 0 means IR timeout, not
|
||||
reset
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48782/
|
||||
@ -785,7 +785,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index 160754a7a3822..dc7ebed00b3ac 100644
|
||||
index 160754a7a382..dc7ebed00b3a 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -1056,8 +1056,14 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
|
||||
@ -808,3 +808,124 @@ index 160754a7a3822..dc7ebed00b3ac 100644
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
From f74716d6fc4a38f56a374a00cb96be61f2d6fc2d Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Thu, 10 May 2018 10:42:24 +0200
|
||||
Subject: [PATCH 10/11] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange
|
||||
behaviour on device
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/49409/
|
||||
|
||||
If the IR timeout is set on vid 1784 pid 0011, the device starts
|
||||
behaving strangely.
|
||||
|
||||
Reported-by: Matthias Reichl <hias@horus.com>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/media/rc/mceusb.c | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index dc7ebed00b3a..2e1241f09c9d 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -181,6 +181,7 @@ enum mceusb_model_type {
|
||||
MCE_GEN2 = 0, /* Most boards */
|
||||
MCE_GEN1,
|
||||
MCE_GEN3,
|
||||
+ MCE_GEN3_BROKEN_IRTIMEOUT,
|
||||
MCE_GEN2_TX_INV,
|
||||
POLARIS_EVK,
|
||||
CX_HYBRID_TV,
|
||||
@@ -196,6 +197,7 @@ struct mceusb_model {
|
||||
u32 mce_gen3:1;
|
||||
u32 tx_mask_normal:1;
|
||||
u32 no_tx:1;
|
||||
+ u32 broken_irtimeout:1;
|
||||
|
||||
int ir_intfnum;
|
||||
|
||||
@@ -223,6 +225,11 @@ static const struct mceusb_model mceusb_model[] = {
|
||||
.mce_gen3 = 1,
|
||||
.tx_mask_normal = 1,
|
||||
},
|
||||
+ [MCE_GEN3_BROKEN_IRTIMEOUT] = {
|
||||
+ .mce_gen3 = 1,
|
||||
+ .tx_mask_normal = 1,
|
||||
+ .broken_irtimeout = 1
|
||||
+ },
|
||||
[POLARIS_EVK] = {
|
||||
/*
|
||||
* In fact, the EVK is shipped without
|
||||
@@ -320,7 +327,7 @@ static struct usb_device_id mceusb_dev_table[] = {
|
||||
.driver_info = MCE_GEN2_TX_INV },
|
||||
/* Topseed eHome Infrared Transceiver */
|
||||
{ USB_DEVICE(VENDOR_TOPSEED, 0x0011),
|
||||
- .driver_info = MCE_GEN3 },
|
||||
+ .driver_info = MCE_GEN3_BROKEN_IRTIMEOUT },
|
||||
/* Ricavision internal Infrared Transceiver */
|
||||
{ USB_DEVICE(VENDOR_RICAVISION, 0x0010) },
|
||||
/* Itron ione Libra Q-11 */
|
||||
@@ -1295,8 +1302,16 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
|
||||
rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
|
||||
rc->min_timeout = US_TO_NS(MCE_TIME_UNIT);
|
||||
rc->timeout = MS_TO_NS(100);
|
||||
- rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
|
||||
- rc->s_timeout = mceusb_set_timeout;
|
||||
+ if (!mceusb_model[ir->model].broken_irtimeout) {
|
||||
+ rc->s_timeout = mceusb_set_timeout;
|
||||
+ rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
|
||||
+ } else {
|
||||
+ /*
|
||||
+ * If we can't set the timeout using CMD_SETIRTIMEOUT, we can
|
||||
+ * rely on software timeouts for timeouts < 100ms.
|
||||
+ */
|
||||
+ rc->max_timeout = rc->timeout;
|
||||
+ }
|
||||
if (!ir->flags.no_tx) {
|
||||
rc->s_tx_mask = mceusb_set_tx_mask;
|
||||
rc->s_tx_carrier = mceusb_set_tx_carrier;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
From 0899b373cb0604ed80a80b501dd48cf6a3cbff25 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Fri, 11 May 2018 12:20:44 +0200
|
||||
Subject: [PATCH 11/11] media: mceusb: filter out bogus timing irdata of
|
||||
duration 0
|
||||
|
||||
Backport of https://patchwork.linuxtv.org/patch/49430/
|
||||
|
||||
A mceusb device has been observed producing invalid irdata. Proactively
|
||||
guard against this.
|
||||
|
||||
Suggested-by: Matthias Reichl <hias@horus.com>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/media/rc/mceusb.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index 2e1241f09c9d..7864a30c4f9e 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -1038,6 +1038,12 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
|
||||
rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK)
|
||||
* US_TO_NS(MCE_TIME_UNIT);
|
||||
|
||||
+ if (unlikely(!rawir.duration)) {
|
||||
+ dev_warn(ir->dev, "nonsensical irdata %02x with duration 0",
|
||||
+ ir->buf_in[i]);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
dev_dbg(ir->dev, "Storing %s with duration %u",
|
||||
rawir.pulse ? "pulse" : "space",
|
||||
rawir.duration);
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 057ccfd1d18842bd2fa39c4b996a9a952c5a821d Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Tue, 27 Mar 2018 19:35:11 +0200
|
||||
Subject: [PATCH 1/9] media: rc: set timeout to smallest value required by
|
||||
Subject: [PATCH 01/11] media: rc: set timeout to smallest value required by
|
||||
enabled protocols
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48516/
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
12 files changed, 46 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-jvc-decoder.c b/drivers/media/rc/ir-jvc-decoder.c
|
||||
index e2bd68c42edfa..fc931fe39bb75 100644
|
||||
index e2bd68c42edf..fc931fe39bb7 100644
|
||||
--- a/drivers/media/rc/ir-jvc-decoder.c
|
||||
+++ b/drivers/media/rc/ir-jvc-decoder.c
|
||||
@@ -212,6 +212,7 @@ static struct ir_raw_handler jvc_handler = {
|
||||
@ -43,7 +43,7 @@ index e2bd68c42edfa..fc931fe39bb75 100644
|
||||
|
||||
static int __init ir_jvc_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 7c572a6436563..7afeab04dbbfd 100644
|
||||
index 7c572a643656..7afeab04dbbf 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -474,6 +474,7 @@ static struct ir_raw_handler mce_kbd_handler = {
|
||||
@ -55,7 +55,7 @@ index 7c572a6436563..7afeab04dbbfd 100644
|
||||
|
||||
static int __init ir_mce_kbd_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c
|
||||
index a95d09acc22a5..3e12059add84d 100644
|
||||
index a95d09acc22a..3e12059add84 100644
|
||||
--- a/drivers/media/rc/ir-nec-decoder.c
|
||||
+++ b/drivers/media/rc/ir-nec-decoder.c
|
||||
@@ -264,6 +264,7 @@ static struct ir_raw_handler nec_handler = {
|
||||
@ -67,7 +67,7 @@ index a95d09acc22a5..3e12059add84d 100644
|
||||
|
||||
static int __init ir_nec_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-rc5-decoder.c b/drivers/media/rc/ir-rc5-decoder.c
|
||||
index 1292f534de434..1eaca0528b691 100644
|
||||
index 1292f534de43..1eaca0528b69 100644
|
||||
--- a/drivers/media/rc/ir-rc5-decoder.c
|
||||
+++ b/drivers/media/rc/ir-rc5-decoder.c
|
||||
@@ -282,6 +282,7 @@ static struct ir_raw_handler rc5_handler = {
|
||||
@ -79,7 +79,7 @@ index 1292f534de434..1eaca0528b691 100644
|
||||
|
||||
static int __init ir_rc5_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-rc6-decoder.c b/drivers/media/rc/ir-rc6-decoder.c
|
||||
index 5d0d2fe3b7a7f..8c4c733a5f27b 100644
|
||||
index 5d0d2fe3b7a7..8c4c733a5f27 100644
|
||||
--- a/drivers/media/rc/ir-rc6-decoder.c
|
||||
+++ b/drivers/media/rc/ir-rc6-decoder.c
|
||||
@@ -408,6 +408,7 @@ static struct ir_raw_handler rc6_handler = {
|
||||
@ -91,7 +91,7 @@ index 5d0d2fe3b7a7f..8c4c733a5f27b 100644
|
||||
|
||||
static int __init ir_rc6_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-sanyo-decoder.c b/drivers/media/rc/ir-sanyo-decoder.c
|
||||
index 758c60956850f..935880d4889ec 100644
|
||||
index 758c60956850..935880d4889e 100644
|
||||
--- a/drivers/media/rc/ir-sanyo-decoder.c
|
||||
+++ b/drivers/media/rc/ir-sanyo-decoder.c
|
||||
@@ -218,6 +218,7 @@ static struct ir_raw_handler sanyo_handler = {
|
||||
@ -103,7 +103,7 @@ index 758c60956850f..935880d4889ec 100644
|
||||
|
||||
static int __init ir_sanyo_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-sharp-decoder.c b/drivers/media/rc/ir-sharp-decoder.c
|
||||
index 129b558acc921..96d818bd0cc98 100644
|
||||
index 129b558acc92..96d818bd0cc9 100644
|
||||
--- a/drivers/media/rc/ir-sharp-decoder.c
|
||||
+++ b/drivers/media/rc/ir-sharp-decoder.c
|
||||
@@ -226,6 +226,7 @@ static struct ir_raw_handler sharp_handler = {
|
||||
@ -115,7 +115,7 @@ index 129b558acc921..96d818bd0cc98 100644
|
||||
|
||||
static int __init ir_sharp_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-sony-decoder.c b/drivers/media/rc/ir-sony-decoder.c
|
||||
index a47ced763031d..d57d15b431f6d 100644
|
||||
index a47ced763031..d57d15b431f6 100644
|
||||
--- a/drivers/media/rc/ir-sony-decoder.c
|
||||
+++ b/drivers/media/rc/ir-sony-decoder.c
|
||||
@@ -221,6 +221,7 @@ static struct ir_raw_handler sony_handler = {
|
||||
@ -127,7 +127,7 @@ index a47ced763031d..d57d15b431f6d 100644
|
||||
|
||||
static int __init ir_sony_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-xmp-decoder.c b/drivers/media/rc/ir-xmp-decoder.c
|
||||
index 6f464be1c8d7a..1ac3a4cee69e3 100644
|
||||
index 6f464be1c8d7..1ac3a4cee69e 100644
|
||||
--- a/drivers/media/rc/ir-xmp-decoder.c
|
||||
+++ b/drivers/media/rc/ir-xmp-decoder.c
|
||||
@@ -198,6 +198,7 @@ static int ir_xmp_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
@ -139,7 +139,7 @@ index 6f464be1c8d7a..1ac3a4cee69e3 100644
|
||||
|
||||
static int __init ir_xmp_decode_init(void)
|
||||
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
|
||||
index 7da9c96cb0588..5fd3b5aed9ece 100644
|
||||
index 7da9c96cb058..5fd3b5aed9ec 100644
|
||||
--- a/drivers/media/rc/rc-core-priv.h
|
||||
+++ b/drivers/media/rc/rc-core-priv.h
|
||||
@@ -29,6 +29,7 @@ struct ir_raw_handler {
|
||||
@ -151,7 +151,7 @@ index 7da9c96cb0588..5fd3b5aed9ece 100644
|
||||
/* These two should only be used by the lirc decoder */
|
||||
int (*raw_register)(struct rc_dev *dev);
|
||||
diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c
|
||||
index 503bc425a187c..7f0197bf5d32d 100644
|
||||
index 503bc425a187..7f0197bf5d32 100644
|
||||
--- a/drivers/media/rc/rc-ir-raw.c
|
||||
+++ b/drivers/media/rc/rc-ir-raw.c
|
||||
@@ -215,7 +215,36 @@ ir_raw_get_allowed_protocols(void)
|
||||
@ -193,7 +193,7 @@ index 503bc425a187c..7f0197bf5d32d 100644
|
||||
}
|
||||
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index 72f381522cb26..e7e20bcfe2729 100644
|
||||
index 72f381522cb2..e7e20bcfe272 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -1161,6 +1161,9 @@ static ssize_t store_protocols(struct device *device,
|
||||
@ -243,7 +243,7 @@ index 72f381522cb26..e7e20bcfe2729 100644
|
||||
From 00f54931b0ff7202020567544605b7e3c4f1dee8 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Tue, 27 Mar 2018 19:45:36 +0200
|
||||
Subject: [PATCH 2/9] media: rc: per-protocol repeat period and minimum keyup
|
||||
Subject: [PATCH 02/11] media: rc: per-protocol repeat period and minimum keyup
|
||||
timer
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48520/
|
||||
@ -265,7 +265,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
3 files changed, 30 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/cec/cec-core.c b/drivers/media/cec/cec-core.c
|
||||
index 648136e552d5b..4cf35e4af7bd6 100644
|
||||
index 648136e552d5..4cf35e4af7bd 100644
|
||||
--- a/drivers/media/cec/cec-core.c
|
||||
+++ b/drivers/media/cec/cec-core.c
|
||||
@@ -280,7 +280,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
|
||||
@ -278,7 +278,7 @@ index 648136e552d5b..4cf35e4af7bd6 100644
|
||||
#endif
|
||||
return adap;
|
||||
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
|
||||
index 4c8f456238bca..ef7e43038092f 100644
|
||||
index 4c8f456238bc..ef7e43038092 100644
|
||||
--- a/drivers/media/rc/ir-lirc-codec.c
|
||||
+++ b/drivers/media/rc/ir-lirc-codec.c
|
||||
@@ -314,7 +314,7 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
|
||||
@ -291,7 +291,7 @@ index 4c8f456238bca..ef7e43038092f 100644
|
||||
|
||||
lirc->send_timeout_reports = !!val;
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index e7e20bcfe2729..36f99a0919c30 100644
|
||||
index e7e20bcfe272..36f99a0919c3 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -35,48 +35,48 @@ static const struct {
|
||||
@ -409,7 +409,7 @@ index e7e20bcfe2729..36f99a0919c30 100644
|
||||
From 6f3d979fa02a3847799d838a03ad9c5ad009a778 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:39 +0100
|
||||
Subject: [PATCH 3/9] media: rc: mce_kbd decoder: low timeout values cause
|
||||
Subject: [PATCH 03/11] media: rc: mce_kbd decoder: low timeout values cause
|
||||
double keydowns
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48522/
|
||||
@ -429,7 +429,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 7afeab04dbbfd..a243d2d1ca935 100644
|
||||
index 7afeab04dbbf..a243d2d1ca93 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -319,11 +319,13 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
@ -458,7 +458,7 @@ index 7afeab04dbbfd..a243d2d1ca935 100644
|
||||
From f4d8df33339167784bb6a17e3ee2d20f9efe1b21 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:40 +0100
|
||||
Subject: [PATCH 4/9] media: rc: mce_kbd protocol encodes two scancodes
|
||||
Subject: [PATCH 04/11] media: rc: mce_kbd protocol encodes two scancodes
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48518/
|
||||
|
||||
@ -473,7 +473,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
2 files changed, 13 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index a243d2d1ca935..2ea48a54f2b3e 100644
|
||||
index a243d2d1ca93..2ea48a54f2b3 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -147,13 +147,14 @@ static enum mce_kbd_mode mce_kbd_mode(struct mce_kbd_dec *data)
|
||||
@ -522,7 +522,7 @@ index a243d2d1ca935..2ea48a54f2b3e 100644
|
||||
if (scancode) {
|
||||
delay = nsecs_to_jiffies(dev->timeout) +
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index 36f99a0919c30..34cef7aa207c9 100644
|
||||
index 36f99a0919c3..34cef7aa207c 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -60,7 +60,7 @@ static const struct {
|
||||
@ -541,7 +541,7 @@ index 36f99a0919c30..34cef7aa207c9 100644
|
||||
From 8b0ffc3eccf8737aa93c6b7bf9bc9d1e10d634bd Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:41 +0100
|
||||
Subject: [PATCH 5/9] media: rc: mce_kbd decoder: fix stuck keys
|
||||
Subject: [PATCH 05/11] media: rc: mce_kbd decoder: fix stuck keys
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48519/
|
||||
|
||||
@ -557,7 +557,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 2ea48a54f2b3e..164302ec4fef0 100644
|
||||
index 2ea48a54f2b3..164302ec4fef 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -130,6 +130,8 @@ static void mce_kbd_rx_timeout(unsigned long data)
|
||||
@ -576,7 +576,7 @@ index 2ea48a54f2b3e..164302ec4fef0 100644
|
||||
From b77de094b54449079890b8cc4fbc2f98573253b2 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 22:19:42 +0100
|
||||
Subject: [PATCH 6/9] media: rc: mceusb: allow the timeout to be configurable
|
||||
Subject: [PATCH 06/11] media: rc: mceusb: allow the timeout to be configurable
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48521/
|
||||
|
||||
@ -589,7 +589,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index bf7aaff3aa375..160754a7a3822 100644
|
||||
index bf7aaff3aa37..160754a7a382 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -937,6 +937,25 @@ static int mceusb_set_tx_carrier(struct rc_dev *dev, u32 carrier)
|
||||
@ -636,7 +636,7 @@ index bf7aaff3aa375..160754a7a3822 100644
|
||||
From dccebb7231209acb8da7f9f1e8fd1e7c12c3e70f Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 15 Apr 2018 17:26:21 +0200
|
||||
Subject: [PATCH 7/9] media: rc: mce_kbd decoder: remove superfluous call to
|
||||
Subject: [PATCH 07/11] media: rc: mce_kbd decoder: remove superfluous call to
|
||||
input_sync
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48681/
|
||||
@ -651,7 +651,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 164302ec4fef0..f057b57074c97 100644
|
||||
index 164302ec4fef..f057b57074c9 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -355,7 +355,6 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
@ -669,7 +669,7 @@ index 164302ec4fef0..f057b57074c97 100644
|
||||
From 731b38824c8145bbc7d55a9c2af4e449ff5988fb Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 15 Apr 2018 17:38:49 +0200
|
||||
Subject: [PATCH 8/9] media: rc: mce_kbd decoder: fix race condition
|
||||
Subject: [PATCH 08/11] media: rc: mce_kbd decoder: fix race condition
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48680/
|
||||
|
||||
@ -692,7 +692,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
2 files changed, 17 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index f057b57074c97..67c37db76737f 100644
|
||||
index f057b57074c9..67c37db76737 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -120,18 +120,24 @@ static void mce_kbd_rx_timeout(unsigned long data)
|
||||
@ -752,7 +752,7 @@ index f057b57074c97..67c37db76737f 100644
|
||||
input_set_drvdata(idev, mce_kbd);
|
||||
|
||||
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
|
||||
index 5fd3b5aed9ece..77928ae431041 100644
|
||||
index 5fd3b5aed9ec..77928ae43104 100644
|
||||
--- a/drivers/media/rc/rc-core-priv.h
|
||||
+++ b/drivers/media/rc/rc-core-priv.h
|
||||
@@ -97,6 +97,7 @@ struct ir_raw_event_ctrl {
|
||||
@ -770,7 +770,7 @@ index 5fd3b5aed9ece..77928ae431041 100644
|
||||
From 4e363f78b2aae387980ac411e0f901caee5da9e1 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Wed, 18 Apr 2018 13:50:52 +0200
|
||||
Subject: [PATCH 9/9] media: rc: mceusb: IR of length 0 means IR timeout, not
|
||||
Subject: [PATCH 09/11] media: rc: mceusb: IR of length 0 means IR timeout, not
|
||||
reset
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/48782/
|
||||
@ -785,7 +785,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index 160754a7a3822..dc7ebed00b3ac 100644
|
||||
index 160754a7a382..dc7ebed00b3a 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -1056,8 +1056,14 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
|
||||
@ -808,3 +808,124 @@ index 160754a7a3822..dc7ebed00b3ac 100644
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
From f74716d6fc4a38f56a374a00cb96be61f2d6fc2d Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Thu, 10 May 2018 10:42:24 +0200
|
||||
Subject: [PATCH 10/11] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange
|
||||
behaviour on device
|
||||
|
||||
backport of https://patchwork.linuxtv.org/patch/49409/
|
||||
|
||||
If the IR timeout is set on vid 1784 pid 0011, the device starts
|
||||
behaving strangely.
|
||||
|
||||
Reported-by: Matthias Reichl <hias@horus.com>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/media/rc/mceusb.c | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index dc7ebed00b3a..2e1241f09c9d 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -181,6 +181,7 @@ enum mceusb_model_type {
|
||||
MCE_GEN2 = 0, /* Most boards */
|
||||
MCE_GEN1,
|
||||
MCE_GEN3,
|
||||
+ MCE_GEN3_BROKEN_IRTIMEOUT,
|
||||
MCE_GEN2_TX_INV,
|
||||
POLARIS_EVK,
|
||||
CX_HYBRID_TV,
|
||||
@@ -196,6 +197,7 @@ struct mceusb_model {
|
||||
u32 mce_gen3:1;
|
||||
u32 tx_mask_normal:1;
|
||||
u32 no_tx:1;
|
||||
+ u32 broken_irtimeout:1;
|
||||
|
||||
int ir_intfnum;
|
||||
|
||||
@@ -223,6 +225,11 @@ static const struct mceusb_model mceusb_model[] = {
|
||||
.mce_gen3 = 1,
|
||||
.tx_mask_normal = 1,
|
||||
},
|
||||
+ [MCE_GEN3_BROKEN_IRTIMEOUT] = {
|
||||
+ .mce_gen3 = 1,
|
||||
+ .tx_mask_normal = 1,
|
||||
+ .broken_irtimeout = 1
|
||||
+ },
|
||||
[POLARIS_EVK] = {
|
||||
/*
|
||||
* In fact, the EVK is shipped without
|
||||
@@ -320,7 +327,7 @@ static struct usb_device_id mceusb_dev_table[] = {
|
||||
.driver_info = MCE_GEN2_TX_INV },
|
||||
/* Topseed eHome Infrared Transceiver */
|
||||
{ USB_DEVICE(VENDOR_TOPSEED, 0x0011),
|
||||
- .driver_info = MCE_GEN3 },
|
||||
+ .driver_info = MCE_GEN3_BROKEN_IRTIMEOUT },
|
||||
/* Ricavision internal Infrared Transceiver */
|
||||
{ USB_DEVICE(VENDOR_RICAVISION, 0x0010) },
|
||||
/* Itron ione Libra Q-11 */
|
||||
@@ -1295,8 +1302,16 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
|
||||
rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
|
||||
rc->min_timeout = US_TO_NS(MCE_TIME_UNIT);
|
||||
rc->timeout = MS_TO_NS(100);
|
||||
- rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
|
||||
- rc->s_timeout = mceusb_set_timeout;
|
||||
+ if (!mceusb_model[ir->model].broken_irtimeout) {
|
||||
+ rc->s_timeout = mceusb_set_timeout;
|
||||
+ rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
|
||||
+ } else {
|
||||
+ /*
|
||||
+ * If we can't set the timeout using CMD_SETIRTIMEOUT, we can
|
||||
+ * rely on software timeouts for timeouts < 100ms.
|
||||
+ */
|
||||
+ rc->max_timeout = rc->timeout;
|
||||
+ }
|
||||
if (!ir->flags.no_tx) {
|
||||
rc->s_tx_mask = mceusb_set_tx_mask;
|
||||
rc->s_tx_carrier = mceusb_set_tx_carrier;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
From 0899b373cb0604ed80a80b501dd48cf6a3cbff25 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Fri, 11 May 2018 12:20:44 +0200
|
||||
Subject: [PATCH 11/11] media: mceusb: filter out bogus timing irdata of
|
||||
duration 0
|
||||
|
||||
Backport of https://patchwork.linuxtv.org/patch/49430/
|
||||
|
||||
A mceusb device has been observed producing invalid irdata. Proactively
|
||||
guard against this.
|
||||
|
||||
Suggested-by: Matthias Reichl <hias@horus.com>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/media/rc/mceusb.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index 2e1241f09c9d..7864a30c4f9e 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -1038,6 +1038,12 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
|
||||
rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK)
|
||||
* US_TO_NS(MCE_TIME_UNIT);
|
||||
|
||||
+ if (unlikely(!rawir.duration)) {
|
||||
+ dev_warn(ir->dev, "nonsensical irdata %02x with duration 0",
|
||||
+ ir->buf_in[i]);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
dev_dbg(ir->dev, "Storing %s with duration %u",
|
||||
rawir.pulse ? "pulse" : "space",
|
||||
rawir.duration);
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user