• Tomi Valkeinen's avatar
    drm/omap: fix (un)registering irqs inside an irq handler · 6da9f891
    Tomi Valkeinen authored
    omapdrm (un)registers irqs inside an irq handler. The problem is that
    the (un)register function uses dispc_runtime_get/put() to enable the
    clocks, and those functions are not irq safe by default.
    
    This was kind of fixed in 48664b21
    (OMAPDSS: DISPC: set irq_safe for runtime PM), which makes dispc's
    runtime calls irq-safe.
    
    However, using pm_runtime_irq_safe in dispc makes the parent of dispc,
    dss, always enabled, effectively preventing PM for the whole DSS module.
    
    This patch makes omapdrm behave better by adding new irq (un)register
    functions that do not use dispc_runtime_get/put, and using those
    functions in interrupt context. Thus we can make dispc again
    non-irq-safe, allowing proper PM.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Rob Clark <robdclark@gmail.com>
    6da9f891
dispc.c 92.3 KB