Changeset 20280


Ignore:
Timestamp:
2010-03-18T20:18:50+01:00 (8 years ago)
Author:
juhosg
Message:

ar71xx: use set_irq_chained_handler for the PCI IRQs

File:
1 edited

Legend:

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

    r20279 r20280  
    22 *  Atheros AR71xx SoC specific interrupt handling 
    33 * 
    4  *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> 
     4 *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> 
    55 *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 
    66 * 
     
    2222#include <asm/mach-ar71xx/ar71xx.h> 
    2323 
    24 static void (* ar71xx_ip2_irq_handler)(void) = spurious_interrupt; 
    25  
    2624#ifdef CONFIG_PCI 
    27 static void ar71xx_pci_irq_dispatch(void) 
     25static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc) 
    2826{ 
    2927        u32 pending; 
     
    3331 
    3432        if (pending & PCI_INT_DEV0) 
    35                 do_IRQ(AR71XX_PCI_IRQ_DEV0); 
     33                generic_handle_irq(AR71XX_PCI_IRQ_DEV0); 
    3634 
    3735        else if (pending & PCI_INT_DEV1) 
    38                 do_IRQ(AR71XX_PCI_IRQ_DEV1); 
     36                generic_handle_irq(AR71XX_PCI_IRQ_DEV1); 
    3937 
    4038        else if (pending & PCI_INT_DEV2) 
    41                 do_IRQ(AR71XX_PCI_IRQ_DEV2); 
     39                generic_handle_irq(AR71XX_PCI_IRQ_DEV2); 
    4240 
    4341        else if (pending & PCI_INT_CORE) 
    44                 do_IRQ(AR71XX_PCI_IRQ_CORE); 
     42                generic_handle_irq(AR71XX_PCI_IRQ_CORE); 
    4543 
    4644        else 
     
    7573}; 
    7674 
    77 static struct irqaction ar71xx_pci_irqaction = { 
    78         .handler        = no_action, 
    79         .name           = "cascade [AR71XX PCI]", 
    80 }; 
    81  
    8275static void __init ar71xx_pci_irq_init(void) 
    8376{ 
    8477        int i; 
    85  
    86         ar71xx_ip2_irq_handler = ar71xx_pci_irq_dispatch; 
    8778 
    8879        ar71xx_reset_wr(AR71XX_RESET_REG_PCI_INT_ENABLE, 0); 
     
    9687        } 
    9788 
    98         setup_irq(AR71XX_CPU_IRQ_IP2, &ar71xx_pci_irqaction); 
    99 } 
    100  
    101 static void ar724x_pci_irq_dispatch(void) 
     89        set_irq_chained_handler(AR71XX_CPU_IRQ_IP2, ar71xx_pci_irq_handler); 
     90} 
     91 
     92static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc) 
    10293{ 
    10394        u32 pending; 
     
    10798 
    10899        if (pending & AR724X_PCI_INT_DEV0) 
    109                 do_IRQ(AR71XX_PCI_IRQ_DEV0); 
     100                generic_handle_irq(AR71XX_PCI_IRQ_DEV0); 
    110101 
    111102        else 
     
    152143}; 
    153144 
    154 static struct irqaction ar724x_pci_irqaction = { 
    155         .handler        = no_action, 
    156         .name           = "cascade [AR724X PCI]", 
    157 }; 
    158  
    159145static void __init ar724x_pci_irq_init(void) 
    160146{ 
     
    167153                return; 
    168154        } 
    169  
    170         ar71xx_ip2_irq_handler = ar724x_pci_irq_dispatch; 
    171155 
    172156        ar724x_pci_wr(AR724X_PCI_REG_INT_MASK, 0); 
     
    180164        } 
    181165 
    182         setup_irq(AR71XX_CPU_IRQ_IP2, &ar724x_pci_irqaction); 
     166        set_irq_chained_handler(AR71XX_CPU_IRQ_IP2, ar724x_pci_irq_handler); 
    183167} 
    184168#else 
     
    367351} 
    368352 
    369 static void ar913x_wmac_irq_dispatch(void) 
    370 { 
    371         do_IRQ(AR71XX_CPU_IRQ_IP2); 
    372 } 
    373  
    374353asmlinkage void plat_irq_dispatch(void) 
    375354{ 
     
    382361 
    383362        else if (pending & STATUSF_IP2) 
    384                 ar71xx_ip2_irq_handler(); 
     363                do_IRQ(AR71XX_CPU_IRQ_IP2); 
    385364 
    386365        else if (pending & STATUSF_IP4) 
     
    417396                ar724x_pci_irq_init(); 
    418397                break; 
    419         case AR71XX_SOC_AR9130: 
    420         case AR71XX_SOC_AR9132: 
    421                 ar71xx_ip2_irq_handler = ar913x_wmac_irq_dispatch; 
     398        default: 
    422399                break; 
    423         default: 
    424                 BUG(); 
    425400        } 
    426401 
Note: See TracChangeset for help on using the changeset viewer.