]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: lirc: increase IR_MAX_DURATION to send extended code sequences
authorLiPeng Huang <huanglipeng@vivo.com>
Thu, 5 Feb 2026 01:48:52 +0000 (09:48 +0800)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 17 Mar 2026 13:43:57 +0000 (14:43 +0100)
 sensor:increase IR_MAX_DURATION to 1000ms
 to fix long IR remote timeouts Certain infrared remotes
 (e.g., brand-specific smart home remotes, custom consumer electronics)
 send extended code sequences that exceed the default 500ms
 IR_MAX_DURATION threshold. This causes the kernel's raw
 IR driver to discard incomplete code, resulting in unrecognized commands.

Increase IR_MAX_DURATION to 1000ms:
- Aligns with common extended IR protocol specs
 (most long sequences use 700-900ms)
- No impact on standard remotes
 (all mainstream IR codes are <500ms)
- Validated on vivo X200 and vivo X300,
 resolves timeout issues without regressions

Signed-off-by: LiPeng Huang <huanglipeng@vivo.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/rc/gpio-ir-tx.c
include/media/rc-core.h

index e185ead40464470df2f3f4fffd0caa47429a197c..d15fb17fa0fa10ee1f2d97d9bead13c0ffe6cdc2 100644 (file)
@@ -51,7 +51,7 @@ static int gpio_ir_tx_set_carrier(struct rc_dev *dev, u32 carrier)
 static void delay_until(ktime_t until)
 {
        /*
-        * delta should never exceed 0.5 seconds (IR_MAX_DURATION) and on
+        * delta should never exceed 1 second (IR_MAX_DURATION) and on
         * m68k ndelay(s64) does not compile; so use s32 rather than s64.
         */
        s32 delta;
@@ -95,7 +95,7 @@ static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf,
 {
        ktime_t edge;
        /*
-        * delta should never exceed 0.5 seconds (IR_MAX_DURATION) and on
+        * delta should never exceed 1 second (IR_MAX_DURATION) and on
         * m68k ndelay(s64) does not compile; so use s32 rather than s64.
         */
        s32 delta;
index 7c964b5ad792693ae6700f987adfed6e878baa3c..d37fffc5dc3c2dfa0b7f143d197d69fb6e3bc975 100644 (file)
@@ -301,7 +301,7 @@ struct ir_raw_event {
 
 #define US_TO_NS(usec)         ((usec) * 1000)
 #define MS_TO_US(msec)         ((msec) * 1000)
-#define IR_MAX_DURATION                MS_TO_US(500)
+#define IR_MAX_DURATION                MS_TO_US(1000)
 #define IR_DEFAULT_TIMEOUT     MS_TO_US(125)
 #define IR_MAX_TIMEOUT         LIRC_VALUE_MASK