Commit 96e2e637 authored by Tomi Valkeinen's avatar Tomi Valkeinen

OMAPDSS: move irq handling to dispc-compat

The whole dispc irq handling system we currently have is only needed for
compat layer, and thus can be moved from dispc.c to the compat layer.

This is quite straigtforward, but we need to add new dispc functions to
request and free the actual hardware irq: dispc_request_irq() and
dispc_free_irq().
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 549acbe7
...@@ -1607,11 +1607,23 @@ int omapdss_compat_init(void) ...@@ -1607,11 +1607,23 @@ int omapdss_compat_init(void)
if (r) if (r)
goto err_mgr_ops; goto err_mgr_ops;
dispc_runtime_get();
r = dss_dispc_initialize_irq();
if (r)
goto err_init_irq;
dispc_runtime_put();
out: out:
mutex_unlock(&compat_init_lock); mutex_unlock(&compat_init_lock);
return 0; return 0;
err_init_irq:
dispc_runtime_put();
dss_uninstall_mgr_ops();
err_mgr_ops: err_mgr_ops:
dss_uninit_overlay_managers(pdev); dss_uninit_overlay_managers(pdev);
dss_uninit_overlays(pdev); dss_uninit_overlays(pdev);
...@@ -1633,6 +1645,8 @@ void omapdss_compat_uninit(void) ...@@ -1633,6 +1645,8 @@ void omapdss_compat_uninit(void)
if (--compat_refcnt > 0) if (--compat_refcnt > 0)
goto out; goto out;
dss_dispc_uninitialize_irq();
dss_uninstall_mgr_ops(); dss_uninstall_mgr_ops();
dss_uninit_overlay_managers(pdev); dss_uninit_overlay_managers(pdev);
......
This diff is collapsed.
...@@ -24,4 +24,7 @@ void dispc_mgr_disable_sync(enum omap_channel channel); ...@@ -24,4 +24,7 @@ void dispc_mgr_disable_sync(enum omap_channel channel);
int omap_dispc_wait_for_irq_interruptible_timeout(u32 irqmask, int omap_dispc_wait_for_irq_interruptible_timeout(u32 irqmask,
unsigned long timeout); unsigned long timeout);
int dss_dispc_initialize_irq(void);
void dss_dispc_uninitialize_irq(void);
#endif #endif
This diff is collapsed.
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
#ifndef __OMAP2_DSS_H #ifndef __OMAP2_DSS_H
#define __OMAP2_DSS_H #define __OMAP2_DSS_H
#include <linux/interrupt.h>
#ifdef pr_fmt #ifdef pr_fmt
#undef pr_fmt #undef pr_fmt
#endif #endif
...@@ -386,6 +388,9 @@ void dispc_clear_irqstatus(u32 mask); ...@@ -386,6 +388,9 @@ void dispc_clear_irqstatus(u32 mask);
u32 dispc_read_irqenable(void); u32 dispc_read_irqenable(void);
void dispc_write_irqenable(u32 mask); void dispc_write_irqenable(u32 mask);
int dispc_request_irq(irq_handler_t handler, void *dev_id);
void dispc_free_irq(void *dev_id);
int dispc_runtime_get(void); int dispc_runtime_get(void);
void dispc_runtime_put(void); void dispc_runtime_put(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment