diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2013-09-19 12:59:57 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2013-09-19 13:29:40 +0300 |
commit | 48664b21aeeffb40c5fa06843f18052e2c4ec9ef (patch) | |
tree | a76cd92b309f3cbe28515be6c50d2ab1852ed708 | |
parent | 0fd9560257e9491b9f8ff55e882099e171277fb5 (diff) |
OMAPDSS: DISPC: set irq_safe for runtime PM
We have a bug with omapdrm, where omapdrm calls dispc's pm_runtime
function in atomic context, and dispc's pm_runtime is not marked as
irq_safe:
BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:952
Dispc's runtime PM callbacks are irq safe, so we can just set the
irq_safe flag to fix the issue.
However, in the long term, I'd rather have omapdrm manage the runtime PM
calls in a better way. Calling get/put for every small operation that
touches the dispc registers is very inefficient. It'd be better and
cleaner to have clear "in-use" and "not-in-use" states for dispc, so
that we don't need to do register context restore for small operations,
only to turn dispc off right afterwards.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index 02a7340111df..477975009eee 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c @@ -3691,6 +3691,7 @@ static int __init omap_dispchw_probe(struct platform_device *pdev) } pm_runtime_enable(&pdev->dev); + pm_runtime_irq_safe(&pdev->dev); r = dispc_runtime_get(); if (r) |