Пример #1
0
asmlinkage void plat_irq_dispatch(void)
{
    u32 cause;

#if defined(CONFIG_BCM_PWRMNGT)	|| defined(CONFIG_BCM_PWRMNGT_MODULE)
//    BcmPwrMngtResumeFullSpeed();
#endif

    while((cause = (read_c0_cause() & read_c0_status() & CAUSEF_IP))) {
        if (cause & CAUSEF_IP7)
        {
            do_IRQ(MIPS_TIMER_INT);
        }
        else if (cause & CAUSEF_IP0)
            do_IRQ(INTERRUPT_ID_SOFTWARE_0);
        else if (cause & CAUSEF_IP1)
            do_IRQ(INTERRUPT_ID_SOFTWARE_1);
#if defined(CONFIG_BCM93380)
#if defined(CONFIG_BCM_LOT1)
	    else if (cause & CAUSEF_IP4)
            irq_dispatch_int(3);
        else if (cause & CAUSEF_IP6)
            irq_dispatch_int(4);
#endif
	    else if (cause & CAUSEF_IP3)
            irq_dispatch_int(0);
        else if (cause & CAUSEF_IP5)
            irq_dispatch_int(1);
#elif defined(CONFIG_BCMKILAUEA) || defined(CONFIG_BCM93383)
#if defined(CONFIG_BCM_LOT1)
	else if (cause & CAUSEF_IP4)
            irq_dispatch_int(3);
        else if (cause & CAUSEF_IP6)
            irq_dispatch_int(4);
#else
        else if (cause & CAUSEF_IP5)
            irq_dispatch_int(0);
	else if (cause & CAUSEF_IP2)
	    irq_dispatch_int(1);
#endif	
#else
#if defined (CONFIG_SMP)
        else if (cause & (CAUSEF_IP2 | CAUSEF_IP3))
#else 
        else if (cause & CAUSEF_IP2)
#endif
            irq_dispatch_int();
#endif
    }
}
Пример #2
0
asmlinkage void plat_irq_dispatch(void)
{
	u32 cause;

	while((cause = (read_c0_cause() & read_c0_status() & CAUSEF_IP))) {
		if (cause & CAUSEF_IP0)
		{
			do_IRQ(INTERRUPT_ID_SOFTWARE_0);
		}
		if (cause & CAUSEF_IP1)
		{
			do_IRQ(INTERRUPT_ID_SOFTWARE_1);
		}
		if (cause & CAUSEF_IP2)
		{
			irq_dispatch_int(CAUSEF_IP2);
		}
		if (cause & CAUSEF_IP3)
		{
			irq_dispatch_int(CAUSEF_IP3);
		}
		if (cause & CAUSEF_IP4)
		{
			irq_dispatch_int(CAUSEF_IP4);
		}
		if (cause & CAUSEF_IP5)
		{
			irq_dispatch_int(CAUSEF_IP5);
		}
		if (cause & CAUSEF_IP6)
		{
			irq_dispatch_int(CAUSEF_IP6);
		}
		if (cause & CAUSEF_IP7)
		{
			do_IRQ(MIPS_TIMER_INT);
		}
	}
}
Пример #3
0
asmlinkage void plat_irq_dispatch(void)
{
	unsigned long cause;

	cause = read_c0_status() & read_c0_cause() & ST0_IM;
	if (cause & CAUSEF_IP7)
		do_IRQ(7);
	else if (cause & CAUSEF_IP2)
		irq_dispatch_int();
	else if (cause & CAUSEF_IP3)
		irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_0);
	else if (cause & CAUSEF_IP4)
		irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_1);
	else if (cause & CAUSEF_IP5)
		irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_2);
	else if (cause & CAUSEF_IP6) {
		irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_3);
		local_irq_disable();
	}
}
Пример #4
0
asmlinkage void plat_irq_dispatch(void)
{
    u32 cause;

#ifdef CONFIG_BCM_HOSTMIPS_PWRSAVE
    BcmPwrMngtResumeFullSpeed();
#endif

    while((cause = (read_c0_cause() & read_c0_status() & CAUSEF_IP))) {
        if (cause & CAUSEF_IP7)
            do_IRQ(MIPS_TIMER_INT);
        else if (cause & CAUSEF_IP0)
            do_IRQ(INTERRUPT_ID_SOFTWARE_0);
        else if (cause & CAUSEF_IP1)
            do_IRQ(INTERRUPT_ID_SOFTWARE_1);
#if defined (CONFIG_SMP)
        else if (cause & (CAUSEF_IP2 | CAUSEF_IP3))
#else 
        else if (cause & CAUSEF_IP2)
#endif
            irq_dispatch_int();
    }
}