コード例 #1
0
ファイル: iodi.c プロジェクト: JabirTech/Source
static int
iodi_setup_intr(device_t dev, device_t child,
    struct resource *ires, int flags, driver_filter_t *filt,
    driver_intr_t *intr, void *arg, void **cookiep)
{
	const char *name = device_get_name(child);

	if (strcmp(name, "uart") == 0) {
		/* FIXME uart 1? */
		cpu_establish_hardintr("uart", filt, intr, arg,
		    PIC_UART_0_IRQ, flags, cookiep);
		pic_setup_intr(PIC_IRT_UART_0_INDEX, PIC_UART_0_IRQ, 0x1, 1);
	} else if (strcmp(name, "rge") == 0 || strcmp(name, "nlge") == 0) {
		int irq;

		/* This is a hack to pass in the irq */
		irq = (intptr_t)ires->__r_i;
		cpu_establish_hardintr("rge", filt, intr, arg, irq, flags,
		    cookiep);
		pic_setup_intr(irq - PIC_IRQ_BASE, irq, 0x1, 1);
	} else if (strcmp(name, "ehci") == 0) {
		cpu_establish_hardintr("ehci", filt, intr, arg, PIC_USB_IRQ, flags,
		    cookiep);
		pic_setup_intr(PIC_USB_IRQ - PIC_IRQ_BASE, PIC_USB_IRQ, 0x1, 1);
	} else if (strcmp(name, "ata") == 0) {
		xlr_establish_intr("ata", filt, intr, arg, PIC_PCMCIA_IRQ, flags,
		    cookiep, bridge_pcmcia_ack);
		pic_setup_intr(PIC_PCMCIA_IRQ - PIC_IRQ_BASE, PIC_PCMCIA_IRQ, 0x1, 1);
	}
	return (0);
}
コード例 #2
0
ファイル: intr_machdep.c プロジェクト: hmatyschok/MeshBSD
void
cpu_establish_hardintr(const char *name, driver_filter_t * filt,
    void (*handler) (void *), void *arg, int irq, int flags,
    void **cookiep)
{

	xlr_establish_intr(name, filt, handler, arg, irq, flags,
	    cookiep, NULL);
}