Changeset 36060


Ignore:
Timestamp:
2013-03-16T23:25:47+01:00 (5 years ago)
Author:
florian
Message:

mcs814x: implement MULTI_IRQ_HANDLER

Allows us to get rid of the IRQ entry point assembly

Signed-off-by: Florian Fainelli <florian@…>

Location:
trunk/target/linux/mcs814x
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/mcs814x/files-3.3/arch/arm/mach-mcs814x/board-mcs8140-dt.c

    r34393 r36060  
    4141        .restart        = mcs814x_restart, 
    4242        .dt_compat      = mcs8140_dt_board_compat, 
     43        .handle_irq     = mcs814x_handle_irq, 
    4344MACHINE_END 
    4445 
  • trunk/target/linux/mcs814x/files-3.3/arch/arm/mach-mcs814x/include/mach/entry-macro.S

    r32487 r36060  
    55                .macro arch_ret_to_user, tmp1, tmp2 
    66                .endm 
    7  
    8                 .macro  get_irqnr_preamble, base, tmp 
    9                 ldr     \base, =mcs814x_intc_base       @ base virtual address of AIC peripheral 
    10                 ldr     \base, [\base] 
    11                 .endm 
    12  
    13                 .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp 
    14                 mov     \tmp, #MCS814X_IRQ_STS0  @ load tmp with STS0 register offset 
    15                 ldr     \irqstat, [\base, \tmp]  @ load value at base + tmp 
    16                 tst     \irqstat, \irqstat       @ test if no active IRQ's 
    17                 beq     1002f                    @ if no active irqs return with status 0 
    18                 mov     \irqnr, #0               @ start from irq zero 
    19                 mov     \tmp,   #1               @ the mask initially 1 
    20 1001: 
    21                 tst     \irqstat, \tmp           @ and with mask 
    22                 addeq   \irqnr, \irqnr, #1       @ if  zero then add one to nr 
    23                 moveq   \tmp,   \tmp, lsl #1     @ shift mask one to left 
    24                 beq     1001b                    @ if  zero then loop again 
    25                 mov     \irqstat, \tmp           @ save the return mask 
    26                 mov     \tmp, #MCS814X_IRQ_STS0  @ load tmp with ICR offset 
    27                 str     \irqstat,  [\base, \tmp] @ clear irq with selected mask 
    28 1002: 
    29                 .endm 
  • trunk/target/linux/mcs814x/files-3.3/arch/arm/mach-mcs814x/irq.c

    r33330 r36060  
    1717#include <mach/mcs814x.h> 
    1818 
    19 void __iomem *mcs814x_intc_base; 
     19static void __iomem *mcs814x_intc_base; 
    2020 
    2121static void __init mcs814x_alloc_gc(void __iomem *base, unsigned int irq_start, 
     
    4444} 
    4545 
     46asmlinkage void __exception_irq_entry mcs814x_handle_irq(struct pt_regs *regs) 
     47{ 
     48        u32 status, irq; 
     49 
     50        do { 
     51                /* read the status register */ 
     52                status = __raw_readl(mcs814x_intc_base + MCS814X_IRQ_STS0); 
     53                if (!status) 
     54                        break; 
     55 
     56                irq = ffs(status) - 1; 
     57                status |= (1 << irq); 
     58                /* clear the interrupt */ 
     59                __raw_writel(status, mcs814x_intc_base + MCS814X_IRQ_STS0); 
     60                /* call the generic handler */ 
     61                handle_IRQ(irq, regs); 
     62 
     63        } while (1); 
     64} 
     65 
    4666static const struct of_device_id mcs814x_intc_ids[] = { 
    4767        { .compatible = "moschip,mcs814x-intc" }, 
  • trunk/target/linux/mcs814x/patches-3.3/001-platform.patch

    r33188 r36060  
    11--- a/arch/arm/Kconfig 
    22+++ b/arch/arm/Kconfig 
    3 @@ -869,6 +869,21 @@ config ARCH_EXYNOS 
     3@@ -869,6 +869,22 @@ config ARCH_EXYNOS 
    44        help 
    55          Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5) 
     
    1717+       select USB_ARCH_HAS_OHCI 
    1818+       select USB_ARCH_HAS_EHCI 
     19+       select MULTI_IRQ_HANDLER 
    1920+       help 
    2021+         Support for Moschip MCS814x SoCs (MCS8140). 
Note: See TracChangeset for help on using the changeset viewer.