예제 #1
0
void ddb_local0_irqdispatch(struct pt_regs *regs)
{
    u32 mask;
    int nile4_irq;

    mask = nile4_get_irq_stat(0);

    /* Handle the timer interrupt first */
#if 0
    if (mask & (1 << NILE4_INT_GPT)) {
        do_IRQ(nile4_to_irq(NILE4_INT_GPT), regs);
        mask &= ~(1 << NILE4_INT_GPT);
    }
#endif
    for (nile4_irq = 0; mask; nile4_irq++, mask >>= 1)
        if (mask & 1) {
            if (nile4_irq == NILE4_INT_INTE) {
                int i8259_irq;

                nile4_clear_irq(NILE4_INT_INTE);
                i8259_irq = nile4_i8259_iack();
                do_IRQ(i8259_irq, regs);
            } else
                do_IRQ(nile4_to_irq(nile4_irq), regs);

        }
}
예제 #2
0
파일: irq.c 프로젝트: 12019/hg556a_source
static void nile4_irq_setup(void)
{
	int i;

	/* Map all interrupts to CPU int #0 (IP2) */
	nile4_map_irq_all(0);

	/* PCI INTA#-E# must be level triggered */
	nile4_set_pci_irq_level_or_edge(0, 1);
	nile4_set_pci_irq_level_or_edge(1, 1);
	nile4_set_pci_irq_level_or_edge(2, 1);
	nile4_set_pci_irq_level_or_edge(3, 1);

	/* PCI INTA#, B#, D# must be active low, INTC# must be active high */
	nile4_set_pci_irq_polarity(0, 0);
	nile4_set_pci_irq_polarity(1, 0);
	nile4_set_pci_irq_polarity(2, 1);
	nile4_set_pci_irq_polarity(3, 0);

	for (i = 0; i < 16; i++)
		nile4_clear_irq(i);

	/* Enable CPU int #0 */
	nile4_enable_irq_output(0);

	/* memory resource acquire in ddb_setup */
}
예제 #3
0
파일: irq.c 프로젝트: TitaniumBoy/lin
static void nile4_irq_setup(void)
{
	int i;

	/* Map all interrupts to CPU int #0 */
	nile4_map_irq_all(0);

	/* PCI INTA#-E# must be level triggered */
	nile4_set_pci_irq_level_or_edge(0, 1);
	nile4_set_pci_irq_level_or_edge(1, 1);
	nile4_set_pci_irq_level_or_edge(2, 1);
	nile4_set_pci_irq_level_or_edge(3, 1);
	nile4_set_pci_irq_level_or_edge(4, 1);

	/* PCI INTA#-D# must be active low, INTE# must be active high */
	nile4_set_pci_irq_polarity(0, 0);
	nile4_set_pci_irq_polarity(1, 0);
	nile4_set_pci_irq_polarity(2, 0);
	nile4_set_pci_irq_polarity(3, 0);
	nile4_set_pci_irq_polarity(4, 1);

	for (i = 0; i < 16; i++)
		nile4_clear_irq(i);

	/* Enable CPU int #0 */
	nile4_enable_irq_output(0);

	request_mem_region(NILE4_BASE, NILE4_SIZE, "Nile 4");
}
예제 #4
0
static void vrc5476_irq_ack(uint irq)
{
	nile4_clear_irq(irq - irq_base);
	nile4_disable_irq(irq - irq_base);
}