コード例 #1
0
ファイル: irq.c プロジェクト: mesosexy/linux-2.6
int show_interrupts(struct seq_file *p, void *v)
{
	struct irqaction *ap;
	int irq = *((loff_t *) v);

	if (irq == 0)
		seq_puts(p, "           CPU0\n");

	if (irq < NR_IRQS) {
		struct irq_desc *desc = irq_to_desc(irq);

		ap = desc->action;
		if (ap) {
			seq_printf(p, "%3d: ", irq);
			seq_printf(p, "%10u ", kstat_irqs(irq));
			seq_printf(p, "%14s  ", get_irq_desc_chip(desc)->name);

			seq_printf(p, "%s", ap->name);
			for (ap = ap->next; ap; ap = ap->next)
				seq_printf(p, ", %s", ap->name);
			seq_putc(p, '\n');
		}
	}

	return 0;
}
コード例 #2
0
static void ambarella_nt11001_clear_penirq(void)
{
	struct irq_desc		*touch_desc;
	struct irq_chip		*touch_chip = NULL;

	touch_desc = irq_to_desc(ambarella_board_generic.touch_panel_irq.irq_line);
	if (touch_desc)
		touch_chip = get_irq_desc_chip(touch_desc);
	if (touch_chip && touch_chip->irq_ack)
		touch_chip->irq_ack(&touch_desc->irq_data);
}
コード例 #3
0
irq_flow_handler_t
__fixup_irq_handler(struct irq_desc *desc, irq_flow_handler_t handle, int is_chained)
{
    if (unlikely(handle == NULL)) {
        desc->ipipe_ack = &__ipipe_ack_bad_irq;
        desc->ipipe_end = &__ipipe_noend_irq;
    } else {
        if (is_chained) {
            desc->ipipe_ack = handle;
            desc->ipipe_end = &__ipipe_noend_irq;
            handle = __ipipe_noack_irq;
        } else if (handle == &handle_simple_irq) {
            desc->ipipe_ack = &__ipipe_ack_simple_irq;
            desc->ipipe_end = &__ipipe_end_simple_irq;
        } else if (handle == &handle_level_irq) {
            desc->ipipe_ack = &__ipipe_ack_level_irq;
            desc->ipipe_end = &__ipipe_end_level_irq;
        } else if (handle == &handle_edge_irq) {
            desc->ipipe_ack = &__ipipe_ack_edge_irq;
            desc->ipipe_end = &__ipipe_end_edge_irq;
        } else if (handle == &handle_fasteoi_irq) {
            desc->ipipe_ack = &__ipipe_ack_fasteoi_irq;
            desc->ipipe_end = &__ipipe_end_fasteoi_irq;
        } else if (handle == &handle_percpu_irq) {
            desc->ipipe_ack = &__ipipe_ack_percpu_irq;
            desc->ipipe_end = &__ipipe_end_percpu_irq;
        } else if (get_irq_desc_chip(desc) == &no_irq_chip) {
            desc->ipipe_ack = &__ipipe_noack_irq;
            desc->ipipe_end = &__ipipe_noend_irq;
        } else {
            desc->ipipe_ack = &__ipipe_ack_bad_irq;
            desc->ipipe_end = &__ipipe_noend_irq;
        }
    }

    /* Suppress intermediate trampoline routine. */
    ipipe_root_domain->irqs[desc->irq_data.irq].acknowledge = desc->ipipe_ack;

    return handle;
}