aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap/rfbi.c
diff options
context:
space:
mode:
authorDaniel Stone <daniel.stone@nokia.com>2009-09-22 19:46:57 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-09-23 10:39:50 -0400
commit4c88ef170f0f9b1f26923b43af526c973c5a74da (patch)
tree358d55e961ad7c4d20143c52e7ae511326ffd879 /drivers/video/omap/rfbi.c
parent48a00e7fe9a6abeedb62c99ca7b7860754aae3d8 (diff)
omapfb: dispc: allow multiple external IRQ handlers
Previously, the only external (to dispc.c) IRQ handler was RFBI's frame done handler. dispc's IRQ framework was very dumb: you could only have one handler, and the semantics of {request,free}_irq were odd, to say the least. The new framework allows multiple consumers to register arbitrary IRQ masks. Signed-off-by: Daniel Stone <daniel.stone@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Imre Deak <imre.deak@nokia.com> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/omap/rfbi.c')
-rw-r--r--drivers/video/omap/rfbi.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/omap/rfbi.c b/drivers/video/omap/rfbi.c
index 9332d6ca6456..ee01e84e19c1 100644
--- a/drivers/video/omap/rfbi.c
+++ b/drivers/video/omap/rfbi.c
@@ -57,6 +57,7 @@
57 57
58#define DISPC_BASE 0x48050400 58#define DISPC_BASE 0x48050400
59#define DISPC_CONTROL 0x0040 59#define DISPC_CONTROL 0x0040
60#define DISPC_IRQ_FRAMEMASK 0x0001
60 61
61static struct { 62static struct {
62 void __iomem *base; 63 void __iomem *base;
@@ -553,7 +554,9 @@ static int rfbi_init(struct omapfb_device *fbdev)
553 l = (0x01 << 2); 554 l = (0x01 << 2);
554 rfbi_write_reg(RFBI_CONTROL, l); 555 rfbi_write_reg(RFBI_CONTROL, l);
555 556
556 if ((r = omap_dispc_request_irq(rfbi_dma_callback, NULL)) < 0) { 557 r = omap_dispc_request_irq(DISPC_IRQ_FRAMEMASK, rfbi_dma_callback,
558 NULL);
559 if (r < 0) {
557 dev_err(fbdev->dev, "can't get DISPC irq\n"); 560 dev_err(fbdev->dev, "can't get DISPC irq\n");
558 rfbi_enable_clocks(0); 561 rfbi_enable_clocks(0);
559 return r; 562 return r;
@@ -570,7 +573,7 @@ static int rfbi_init(struct omapfb_device *fbdev)
570 573
571static void rfbi_cleanup(void) 574static void rfbi_cleanup(void)
572{ 575{
573 omap_dispc_free_irq(); 576 omap_dispc_free_irq(DISPC_IRQ_FRAMEMASK, rfbi_dma_callback, NULL);
574 rfbi_put_clocks(); 577 rfbi_put_clocks();
575 iounmap(rfbi.base); 578 iounmap(rfbi.base);
576} 579}