Ejemplo n.º 1
0
static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
{
	unsigned long pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;

	do {
		desc->chip->ack(irq);	/* clear our parent IRQ */
		if (likely(pending)) {
			irq = PCM027_IRQ(0) + __ffs(pending);
			ipipe_handle_chained_irq(irq);
		}
		pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;
	} while (pending);
}
Ejemplo n.º 2
0
static void s3c_irq_demux_cam(unsigned int irq,
			      struct irq_desc *desc)
{
	unsigned int subsrc, submsk;

	/* read the current pending interrupts, and the mask
	 * for what it is available */

	subsrc = __raw_readl(S3C2410_SUBSRCPND);
	submsk = __raw_readl(S3C2410_INTSUBMSK);

	subsrc &= ~submsk;
	subsrc >>= 11;
	subsrc &= 3;

	if (subsrc != 0) {
		if (subsrc & 1) {
			ipipe_handle_chained_irq(IRQ_S3C2440_CAM_C);
		}
		if (subsrc & 2) {
			ipipe_handle_chained_irq(IRQ_S3C2440_CAM_P);
		}
	}
}
Ejemplo n.º 3
0
static void s3c_irq_demux_vic_timer(unsigned int irq, struct irq_desc *desc)
{
	ipipe_handle_chained_irq((int)desc->handler_data);
}