int toshiba_rbtx4927_irq_nested(int sw_irq) { u32 level3; u32 level4; u32 level5; level3 = reg_rd08(TOSHIBA_RBTX4927_IOC_INTR_STAT) & 0x1f; if (level3) { sw_irq = TOSHIBA_RBTX4927_IRQ_IOC_BEG + bit2num(level3); if (sw_irq != TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_IOC) { goto RETURN; } } #ifdef CONFIG_TOSHIBA_FPCIB0 { if (tx4927_using_backplane) { outb(0x0A, 0x20); level4 = inb(0x20) & 0xff; if (level4) { sw_irq = TOSHIBA_RBTX4927_IRQ_ISA_BEG + bit2num(level4); if (sw_irq != TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_ISA) { goto RETURN; } } outb(0x0A, 0xA0); level5 = inb(0xA0) & 0xff; if (level5) { sw_irq = TOSHIBA_RBTX4927_IRQ_ISA_MID + bit2num(level5); goto RETURN; } } } #endif RETURN: return (sw_irq); }
int toshiba_rbtx4927_irq_nested(int sw_irq) { u32 level3; level3 = readb(TOSHIBA_RBTX4927_IOC_INTR_STAT) & 0x1f; if (level3) { sw_irq = TOSHIBA_RBTX4927_IRQ_IOC_BEG + bit2num(level3); if (sw_irq != TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_IOC) { goto RETURN; } } #ifdef CONFIG_TOSHIBA_FPCIB0 if (tx4927_using_backplane) { int irq = i8259_irq(); if (irq >= 0) sw_irq = irq; } #endif RETURN: return (sw_irq); }