From 547989c49cbf0d454d077b6c6581e02b944f1145 Mon Sep 17 00:00:00 2001 From: CvH Date: Sun, 26 Aug 2018 17:25:33 +0200 Subject: [PATCH] dvb-latest: add rc6 decode fix patch --- ...-linux-901-extend-rc6-toggle-support.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-linux-901-extend-rc6-toggle-support.patch diff --git a/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-linux-901-extend-rc6-toggle-support.patch b/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-linux-901-extend-rc6-toggle-support.patch new file mode 100644 index 0000000000..de21628bda --- /dev/null +++ b/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-linux-901-extend-rc6-toggle-support.patch @@ -0,0 +1,52 @@ +From 3f1f8303b6e0be751d7a7c55031c8ab840ed5c1a Mon Sep 17 00:00:00 2001 +From: Matthias Reichl +Date: Fri, 24 Aug 2018 23:31:51 +0200 +Subject: [PATCH] media: rc: ir-rc6-decoder: enable toggle bit for Kathrein + RCU-676 remote + +The Kathrein RCU-676 remote uses the 32-bit rc6 protocol and toggles +bit 15 (0x8000) on repeated button presses, like MCE remotes. + +Add it's customer code 0x80460000 to the 32-bit rc6 toggle +handling code to get proper scancodes and toggle reports. + +Signed-off-by: Matthias Reichl +--- + drivers/media/rc/ir-rc6-decoder.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/drivers/media/rc/ir-rc6-decoder.c b/drivers/media/rc/ir-rc6-decoder.c +index 68487ce9f79b..d96aed1343e4 100644 +--- a/drivers/media/rc/ir-rc6-decoder.c ++++ b/drivers/media/rc/ir-rc6-decoder.c +@@ -40,6 +40,7 @@ + #define RC6_6A_MCE_TOGGLE_MASK 0x8000 /* for the body bits */ + #define RC6_6A_LCC_MASK 0xffff0000 /* RC6-6A-32 long customer code mask */ + #define RC6_6A_MCE_CC 0x800f0000 /* MCE customer code */ ++#define RC6_6A_KATHREIN_CC 0x80460000 /* Kathrein RCU-676 customer code */ + #ifndef CHAR_BIT + #define CHAR_BIT 8 /* Normally in */ + #endif +@@ -242,13 +243,17 @@ static int ir_rc6_decode(struct rc_dev *dev, struct ir_raw_event ev) + toggle = 0; + break; + case 32: +- if ((scancode & RC6_6A_LCC_MASK) == RC6_6A_MCE_CC) { ++ switch (scancode & RC6_6A_LCC_MASK) { ++ case RC6_6A_MCE_CC: ++ case RC6_6A_KATHREIN_CC: + protocol = RC_PROTO_RC6_MCE; + toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK); + scancode &= ~RC6_6A_MCE_TOGGLE_MASK; +- } else { ++ break; ++ default: + protocol = RC_PROTO_RC6_6A_32; + toggle = 0; ++ break; + } + break; + default: +-- +2.11.0 +