[PATCH] VIC: add the Software priority masking code for PL192

김현웅 khw0178.kim at samsung.com
Tue Nov 24 23:52:29 EST 2009


This patch provide software priority masking 
for PL192 feature regarding S/W priority mask.

Signed-off-by: Hyunwoong Kim khw0178.kim at samsung.com
---
    arch/arm/common/vic.c                        |    15++-
    arch/arm/include/asm/hardware/vic.h    |    2+

diff -Nur --exclude=.git linux-2.6.29-samsung/arch/arm/common/vic.c 
pre-linux-2.6.29-samsung/arch/arm/common/vic.c
--- linux-2.6.29-samsung/arch/arm/common/vic.c  2009-11-25 13:36:04.672713977 +0900
+++ pre-linux-2.6.29-samsung/arch/arm/common/vic.c      2009-11-25 13:23:24.666816598 +0900
@@ -27,8 +27,21 @@

 static void vic_mask_irq(unsigned int irq)
 {
+       unsigned int prio_value;
+       unsigned int sw_prio;
        void __iomem *base = get_irq_chip_data(irq);
-       irq &= 31;
+       if(irq > 63){
+               irq &= 31;
+               prio_value = readl(base + VIC_PL192_DAISY_PRIO);
+               sw_prio = readl(base + VIC_PL192_SWPRIO_MASK);
+               writel(sw_prio >> (16-prio_value), base + VIC_PL192_SWPRIO_MASK);
+       }
+       else if(irq <= 63){
+               irq &= 31;
+               prio_value = readl(base + VIC_VECT_CNTL0 + (0x4 * irq));
+               sw_prio = readl(base + VIC_PL192_SWPRIO_MASK);
+               writel(sw_prio >> (16-prio_value), base + VIC_PL192_SWPRIO_MASK);
+       }
        writel(1 << irq, base + VIC_INT_ENABLE_CLEAR);
 }

@@ -36,6 +49,7 @@
 {
        void __iomem *base = get_irq_chip_data(irq);
        irq &= 31;
+       writel(0xFFFF, base + VIC_PL192_SWPRIO_MASK);
        writel(1 << irq, base + VIC_INT_ENABLE);
 }

diff -Nur --exclude=.git linux-2.6.29-samsung/arch/arm/include/asm/hardware/vic.h
 pre-linux-2.6.29-samsung/arch/arm/include/asm/hardware/vic.h
--- linux-2.6.29-samsung/arch/arm/include/asm/hardware/vic.h    2009-11-25 13:36:04.703713854 +0900
+++ pre-linux-2.6.29-samsung/arch/arm/include/asm/hardware/vic.h        2009-11-25 13:23:24.666816598 +0900
@@ -31,6 +31,8 @@
 #define VIC_PROTECT                    0x20
 #define VIC_PL190_VECT_ADDR            0x30    /* PL190 only */
 #define VIC_PL190_DEF_VECT_ADDR                0x34    /* PL190 only */
+#define VIC_PL192_SWPRIO_MASK          0x24
+#define VIC_PL192_DAISY_PRIO           0x28

 #define VIC_VECT_ADDR0                 0x100   /* 0 to 15 (0..31 PL192) */
 #define VIC_VECT_CNTL0                 0x200   /* 0 to 15 (0..31 PL192) */
~
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20091125/91373478/attachment-0001.htm>


More information about the linux-arm-kernel mailing list