Esempio n. 1
0
void __init
imx21_init_irq(void)
{
	unsigned int irq;

	DEBUG_IRQ("Initializing imx21 interrupts\n");

	/* Mask all interrupts initially */
	IMR(0) = 0;
	IMR(1) = 0;
	IMR(2) = 0;
	IMR(3) = 0;
	IMR(4) = 0;
	IMR(5) = 0;

	for (irq = 0; irq < IMX21_IRQS; irq++) {
		set_irq_chip(irq, &imx21_internal_chip);
		set_irq_handler(irq, do_level_IRQ);
		set_irq_flags(irq, IRQF_VALID);
	}

	for (irq = IRQ_GPIOA(0); irq < IRQ_GPIOF(32); irq++) {
		set_irq_chip(irq, &imx21_gpio_chip);
		set_irq_handler(irq, do_edge_IRQ);
		set_irq_flags(irq, IRQF_VALID);
	}

	set_irq_chained_handler(INT_GPIO, imx21_gpio_handler);

	/* Disable all interrupts initially. */
	/* In IMX21 this is done in the bootloader. */
}
static void mxt_td60_sdhc1_exit(struct device *dev, void *data)
{
	free_irq(IRQ_GPIOF(8), data);
}
static int mxt_td60_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
				void *data)
{
	return request_irq(IRQ_GPIOF(8), detect_irq, IRQF_TRIGGER_FALLING,
				"sdhc1-card-detect", data);
}