Ejemplo n.º 1
0
Archivo: irq.c Proyecto: 274914765/C
void __init omap_init_irq(void)
{
    unsigned long nr_irqs = 0;
    unsigned int nr_banks = 0;
    int i;

    for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
        struct omap_irq_bank *bank = irq_banks + i;

        /* XXX */
        if (!bank->base_reg)
            continue;

        omap_irq_bank_init_one(bank);

        nr_irqs += bank->nr_irqs;
        nr_banks++;
    }

    printk(KERN_INFO "Total of %ld interrupts on %d active controller%s\n",
           nr_irqs, nr_banks, nr_banks > 1 ? "s" : "");

    for (i = 0; i < nr_irqs; i++) {
        set_irq_chip(i, &omap_irq_chip);
        set_irq_handler(i, handle_level_irq);
        set_irq_flags(i, IRQF_VALID);
    }
}
Ejemplo n.º 2
0
void __init omap_init_irq(void)
{
	unsigned long nr_of_irqs = 0;
	unsigned int nr_banks = 0;
	int i;

	for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
		struct omap_irq_bank *bank = irq_banks + i;

		if (cpu_is_omap24xx())
			bank->base_reg = OMAP2_IO_ADDRESS(OMAP24XX_IC_BASE);
		else if (cpu_is_omap34xx())
			bank->base_reg = OMAP2_IO_ADDRESS(OMAP34XX_IC_BASE);

		omap_irq_bank_init_one(bank);

		nr_of_irqs += bank->nr_irqs;
		nr_banks++;
	}

	printk(KERN_INFO "Total of %ld interrupts on %d active controller%s\n",
	       nr_of_irqs, nr_banks, nr_banks > 1 ? "s" : "");

	for (i = 0; i < nr_of_irqs; i++) {
		set_irq_chip(i, &omap_irq_chip);
		set_irq_handler(i, handle_level_irq);
		set_irq_flags(i, IRQF_VALID);
	}
}
Ejemplo n.º 3
0
void __init omap_init_irq(void)
{
	unsigned long nr_of_irqs = 0;
	unsigned int nr_banks = 0;
	int i;

	for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
		struct omap_irq_bank *bank = irq_banks + i;

                if (cpu_is_omapw3g())
			bank->base_reg = OMAP2_IO_ADDRESS(OMAPW3G_IC_BASE);
		else if (cpu_is_omap24xx())
			bank->base_reg = OMAP2_IO_ADDRESS(OMAP24XX_IC_BASE);
		else if (cpu_is_omap34xx())
			bank->base_reg = OMAP2_IO_ADDRESS(OMAP34XX_IC_BASE);

		omap_irq_bank_init_one(bank);

		nr_of_irqs += bank->nr_irqs;
		nr_banks++;
	}

	printk(KERN_INFO "Total of %ld interrupts on %d active controller%s\n",
	       nr_of_irqs, nr_banks, nr_banks > 1 ? "s" : "");

	for (i = 0; i < nr_of_irqs; i++) {
		/* Regardless of reserved IRQ, the interrupt must be handled using kernel's main irq handler */
		omap_irq_set_cfg(i, 0, irq_priority[i]);
		set_irq_chip(i, &omap_irq_chip);
		set_irq_handler(i, handle_level_irq);
		set_irq_flags(i, IRQF_VALID);
	}
}