void __init arch_init_irq(void) { /* assume we'll be using vectored interrupt mode except in UP mode*/ #ifdef CONFIG_MIPS_MT BUG_ON(!cpu_has_vint); #endif /* initialize the 1st-level CPU based interrupt controller */ mips_cpu_irq_init(); #ifdef CONFIG_IRQ_MSP_CIC msp_cic_irq_init(); #ifdef CONFIG_MIPS_MT set_vi_handler(MSP_INT_CIC, msp_cic_irq_dispatch); set_vi_handler(MSP_INT_MAC0, mac0_int_dispatch); set_vi_handler(MSP_INT_MAC1, mac1_int_dispatch); set_vi_handler(MSP_INT_SAR, mac2_int_dispatch); set_vi_handler(MSP_INT_USB, usb_int_dispatch); set_vi_handler(MSP_INT_SEC, sec_int_dispatch); #ifdef CONFIG_MIPS_MT_SMP msp_vsmp_int_init(); #elif defined CONFIG_MIPS_MT_SMTC /*Set hwmask for all platform devices */ irq_hwmask[MSP_INT_MAC0] = C_IRQ0; irq_hwmask[MSP_INT_MAC1] = C_IRQ1; irq_hwmask[MSP_INT_USB] = C_IRQ2; irq_hwmask[MSP_INT_SAR] = C_IRQ3; irq_hwmask[MSP_INT_SEC] = C_IRQ5; #endif /* CONFIG_MIPS_MT_SMP */ #endif /* CONFIG_MIPS_MT */ /* setup the cascaded interrupts */ setup_irq(MSP_INT_CIC, &cic_cascade_msp); setup_irq(MSP_INT_PER, &per_cascade_msp); #else /* setup the 2nd-level SLP register based interrupt controller */ /* VSMP /SMTC support support is not enabled for SLP */ msp_slp_irq_init(); /* setup the cascaded SLP/PER interrupts */ setup_irq(MSP_INT_SLP, &cic_cascade_msp); setup_irq(MSP_INT_PER, &per_cascade_msp); #endif }
void __init arch_init_irq(void) { /* initialize the 1st-level CPU based interrupt controller */ mips_cpu_irq_init(); #ifdef CONFIG_IRQ_MSP_CIC msp_cic_irq_init(); /* setup the cascaded interrupts */ setup_irq(MSP_INT_CIC, &cascade_msp); setup_irq(MSP_INT_PER, &cascade_msp); #else /* setup the 2nd-level SLP register based interrupt controller */ msp_slp_irq_init(); /* setup the cascaded SLP/PER interrupts */ setup_irq(MSP_INT_SLP, &cascade_msp); setup_irq(MSP_INT_PER, &cascade_msp); #endif }