linux/drivers/gpu/drm/i2c
Laurent Pinchart a5241289c4 drm: adv7511: Fix nested sleep when reading EDID
The EDID read code waits for the read completion interrupt to occur
using wait_event_interruptible(). The condition passed to the macro
reads I2C registers. This results in sleeping with the task state set
to TASK_INTERRUPTIBLE, triggering a WARN_ON() introduced in commit
8eb23b9f35 ("sched: Debug nested sleeps").

Fix this by reworking the EDID read code. Instead of checking whether
the read is complete through I2C reads, handle the interrupt registers
in the interrupt handler and update a new edid_read flag accordingly. As
a side effect both the IRQ and polling code paths now process the
interrupt sources through the same code path, simplifying the code.

Cc: stable@vger.kernel.org
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
2015-03-19 12:28:55 +02:00
..
adv7511.c drm: adv7511: Fix nested sleep when reading EDID 2015-03-19 12:28:55 +02:00
adv7511.h drm: Add adv7511 encoder driver 2014-11-26 20:09:40 +02:00
ch7006_drv.c drm: encapsulate crtc->set_config calls 2013-01-20 15:57:58 +01:00
ch7006_mode.c
ch7006_priv.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
Kconfig drm: Add adv7511 encoder driver 2014-11-26 20:09:40 +02:00
Makefile drm: Add adv7511 encoder driver 2014-11-26 20:09:40 +02:00
sil164_drv.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
tda998x_drv.c Merge branch 'drm-tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next 2015-03-05 09:37:19 +10:00