aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/coldfire/patches/050-mcfv4e_irq_magic_bit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/coldfire/patches/050-mcfv4e_irq_magic_bit.patch')
-rw-r--r--target/linux/coldfire/patches/050-mcfv4e_irq_magic_bit.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/target/linux/coldfire/patches/050-mcfv4e_irq_magic_bit.patch b/target/linux/coldfire/patches/050-mcfv4e_irq_magic_bit.patch
new file mode 100644
index 0000000000..61d746b701
--- /dev/null
+++ b/target/linux/coldfire/patches/050-mcfv4e_irq_magic_bit.patch
@@ -0,0 +1,31 @@
+From 3487b77acbb12f4174f46237f942918651b23aa7 Mon Sep 17 00:00:00 2001
+From: Kurt Mahan <kmahan@freescale.com>
+Date: Tue, 15 Apr 2008 17:14:55 -0600
+Subject: [PATCH] Fix setting low 31 interrupts to deal with magic bit 0
+ of the IMRL register.
+
+LTIBName: mcfv4e-irq-magic-bit
+Signed-off-by: Kurt Mahan <kmahan@freescale.com>
+---
+ arch/m68k/coldfire/ints.c | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+--- a/arch/m68k/coldfire/ints.c
++++ b/arch/m68k/coldfire/ints.c
+@@ -420,10 +420,13 @@ void m547x_8x_irq_enable(unsigned int ir
+ }
+ #endif
+
+- if (irq < 32)
+- MCF_IMRL &= ~(1 << irq);
+- else
++ if (irq < 32) {
++ /* *grumble* don't set low bit of IMRL */
++ MCF_IMRL &= (~(1 << irq) & 0xfffffffe);
++ }
++ else {
+ MCF_IMRH &= ~(1 << (irq - 32));
++ }
+ }
+
+ void m547x_8x_irq_disable(unsigned int irq)