Ignore:
Timestamp:
2011-11-14T12:49:51+01:00 (4 years ago)
Author:
juhosg
Message:

ar71xx: use a dummy irq chip for WMAC and PCIe irq hadling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/irq.c

    r28182 r29107  
    232232} 
    233233 
     234static void ar934x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc) 
     235{ 
     236        u32 status; 
     237 
     238        disable_irq_nosync(irq); 
     239 
     240        status = ar71xx_reset_rr(AR934X_RESET_REG_PCIE_WMAC_INT_STATUS); 
     241 
     242        if (status & AR934X_PCIE_WMAC_INT_PCIE_ALL) 
     243                generic_handle_irq(AR934X_IP2_IRQ_PCIE); 
     244 
     245        else if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) 
     246                generic_handle_irq(AR934X_IP2_IRQ_WMAC); 
     247 
     248        else 
     249                spurious_interrupt(); 
     250 
     251        enable_irq(irq); 
     252} 
     253 
     254static void ar934x_ip2_irq_init(void) 
     255{ 
     256        int i; 
     257 
     258        for (i = AR934X_IP2_IRQ_BASE; 
     259             i < AR934X_IP2_IRQ_BASE + AR934X_IP2_IRQ_COUNT; i++) 
     260                irq_set_chip_and_handler(i, &dummy_irq_chip, 
     261                                         handle_level_irq); 
     262 
     263        irq_set_chained_handler(AR71XX_CPU_IRQ_IP2, ar934x_ip2_irq_dispatch); 
     264} 
     265 
     266 
    234267/* 
    235268 * The IP2/IP3 lines are tied to a PCI/WMAC/USB device. Drivers for 
     
    373406        ar71xx_misc_irq_init(); 
    374407 
     408        if (ar71xx_soc == AR71XX_SOC_AR9341 || 
     409            ar71xx_soc == AR71XX_SOC_AR9342 || 
     410            ar71xx_soc == AR71XX_SOC_AR9344) 
     411                ar934x_ip2_irq_init(); 
     412 
    375413        cp0_perfcount_irq = AR71XX_MISC_IRQ_PERFC; 
    376414 
Note: See TracChangeset for help on using the changeset viewer.