diff options
Diffstat (limited to 'recipes/linux/linux-omap-pm/dss2/0071-DSS2-fix-irq2.diff')
-rw-r--r-- | recipes/linux/linux-omap-pm/dss2/0071-DSS2-fix-irq2.diff | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/recipes/linux/linux-omap-pm/dss2/0071-DSS2-fix-irq2.diff b/recipes/linux/linux-omap-pm/dss2/0071-DSS2-fix-irq2.diff new file mode 100644 index 0000000000..cb8aaf1a28 --- /dev/null +++ b/recipes/linux/linux-omap-pm/dss2/0071-DSS2-fix-irq2.diff @@ -0,0 +1,35 @@ +From 8af2f6550d6971875e4c5d3f93982f86f4bcf216 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen <tomi.valkeinen@nokia.com> +Date: Sat, 23 May 2009 15:00:00 +0000 +Subject: DSS2: DISPC: clear irqstatus for newly enabled irqs + +This fixes the problem that when requesting a new irq +we could get the isr called too early in case irqstatus +already had that irq flag on. +--- +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index b3685b2..2471cfe 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -2515,6 +2515,7 @@ int dispc_get_clock_div(struct dispc_clock_info *cinfo) + static void _omap_dispc_set_irqs(void) + { + u32 mask; ++ u32 old_mask; + int i; + struct omap_dispc_isr_data *isr_data; + +@@ -2530,6 +2531,11 @@ static void _omap_dispc_set_irqs(void) + } + + enable_clocks(1); ++ ++ old_mask = dispc_read_reg(DISPC_IRQENABLE); ++ /* clear the irqstatus for newly enabled irqs */ ++ dispc_write_reg(DISPC_IRQSTATUS, (mask ^ old_mask) & mask); ++ + dispc_write_reg(DISPC_IRQENABLE, mask); + + enable_clocks(0); +-- +cgit v0.8.2.1-10-g45e7 |