[PATCH] media: gpio-ir-tx: Driver does not behave with PREEMPT_RT

Sean Young posted 1 patch 2 months, 1 week ago
drivers/media/rc/Kconfig | 1 +
1 file changed, 1 insertion(+)
[PATCH] media: gpio-ir-tx: Driver does not behave with PREEMPT_RT
Posted by Sean Young 2 months, 1 week ago
This driver bit-bangs a signal with interrupts disabled. The signal can
last for up to half a second (IR_MAX_DURATION).

A much better way of transmitting IR is using the pwm-ir-tx driver,
which does not disable interrupts.

Signed-off-by: Sean Young <sean@mess.org>
---
 drivers/media/rc/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/rc/Kconfig b/drivers/media/rc/Kconfig
index 74d69ce22a33e..0a8aeafdb7e07 100644
--- a/drivers/media/rc/Kconfig
+++ b/drivers/media/rc/Kconfig
@@ -184,6 +184,7 @@ config IR_GPIO_TX
 	tristate "GPIO IR Bit Banging Transmitter"
 	depends on LIRC
 	depends on (OF && GPIOLIB) || COMPILE_TEST
+	depends on !PREEMPT_RT
 	help
 	   Say Y if you want to a GPIO based IR transmitter. This is a
 	   bit banging driver.
-- 
2.46.1
Re: [PATCH] media: gpio-ir-tx: Driver does not behave with PREEMPT_RT
Posted by Sebastian Andrzej Siewior 1 month, 3 weeks ago
On 2024-09-21 20:07:20 [+0100], Sean Young wrote:
> This driver bit-bangs a signal with interrupts disabled. The signal can
> last for up to half a second (IR_MAX_DURATION).
> 
> A much better way of transmitting IR is using the pwm-ir-tx driver,
> which does not disable interrupts.

If you have to spin to make the signal exact and there is no other way
then be may guest.

Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

But RT or not, spinning for up to 0.5s is a lot. Is this 0.5s in total
or 0.5 * count?
Anyway, gpio_ir_tx_unmodulated() and gpio_ir_tx_modulated() have
local_irq_disable() in there which can be removed. It got introduced in
commit 1451b93223bbe ("media: gpio-ir-tx: spinlock is not needed to
disable interrupts") but the previous irq-save is enough.

> Signed-off-by: Sean Young <sean@mess.org>

Sebastian