From 64657066f51355461b634a0aa6a1171d50c355c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Heiko=20St=C3=BCbner?= Date: Tue, 2 Jun 2015 11:43:50 -0300 Subject: [media] rc: gpio-ir-recv: don't sleep in irq handler Don't allow sleep when getting the gpio value in the irq-handler. On my rk3288 board this results in might_sleep warnings when receiving data like: BUG: sleeping function called from invalid context at drivers/gpio/gpiolib.c:1531 in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/0 CPU: 0 PID: 0 Comm: swapper/0 Tainted: P 4.1.0-rc5+ #2011 Hardware name: Rockchip (Device Tree) [] (unwind_backtrace) from [] (show_stack+0x20/0x24) [] (show_stack) from [] (dump_stack+0x8c/0xbc) [] (dump_stack) from [] (___might_sleep+0x238/0x284) [] (___might_sleep) from [] (__might_sleep+0x90/0xa4) [] (__might_sleep) from [] (gpiod_get_raw_value_cansleep+0x28/0x44) [] (gpiod_get_raw_value_cansleep) from [] (gpio_ir_recv_irq+0x24/0x6c [gpio_ir_recv]) [] (gpio_ir_recv_irq [gpio_ir_recv]) from [] (handle_irq_event_percpu+0x164/0x550) [] (handle_irq_event_percpu) from [] (handle_irq_event+0x4c/0x6c) [] (handle_irq_event) from [] (handle_edge_irq+0x128/0x150) [] (handle_edge_irq) from [] (generic_handle_irq+0x30/0x40) [] (generic_handle_irq) from [] (rockchip_irq_demux+0x158/0x210) [] (rockchip_irq_demux) from [] (generic_handle_irq+0x30/0x40) [] (generic_handle_irq) from [] (__handle_domain_irq+0x98/0xc0) [] (__handle_domain_irq) from [] (gic_handle_irq+0x4c/0x70) [] (gic_handle_irq) from [] (__irq_svc+0x44/0x5c) Signed-off-by: Heiko Stuebner Signed-off-by: Mauro Carvalho Chehab diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c index 707df54..7dbc9ca 100644 --- a/drivers/media/rc/gpio-ir-recv.c +++ b/drivers/media/rc/gpio-ir-recv.c @@ -78,7 +78,7 @@ static irqreturn_t gpio_ir_recv_irq(int irq, void *dev_id) int rc = 0; enum raw_event_type type = IR_SPACE; - gval = gpio_get_value_cansleep(gpio_dev->gpio_nr); + gval = gpio_get_value(gpio_dev->gpio_nr); if (gval < 0) goto err_get_value; -- cgit v0.10.2