/* * Basic EISA bus support for the SGI Indigo-2. * * (C) 2002 Pascal Dameme <netinet@freesurf.fr> * and Marc Zyngier <mzyngier@freesurf.fr> * * This code is released under both the GPL version 2 and BSD * licenses. Either license may be used. * * This code offers a very basic support for this EISA bus present in * the SGI Indigo-2. It currently only supports PIO (forget about DMA * for the time being). This is enough for a low-end ethernet card, * but forget about your favorite SCSI card... * * TODO : * - Fix bugs... * - Add ISA support * - Add DMA (yeah, right...). * - Fix more bugs.
*/
int __init ip22_eisa_init(void)
{ int i, c; char *str;
if (!(sgimc->systemid & SGIMC_SYSID_EPRESENT)) {
printk(KERN_INFO "EISA: bus not present.\n"); return 1;
}
printk(KERN_INFO "EISA: Probing bus...\n"); for (c = 0, i = 1; i <= IP22_EISA_MAX_SLOTS; i++) { if ((str = decode_eisa_sig(0x1000 * i + EISA_VENDOR_ID_OFFSET))) {
printk(KERN_INFO "EISA: slot %d : %s detected.\n",
i, str);
c++;
}
}
printk(KERN_INFO "EISA: Detected %d card%s.\n", c, c < 2 ? "" : "s"); #ifdef CONFIG_ISA
printk(KERN_INFO "ISA support compiled in.\n"); #endif
/* Warning : BlackMagicAhead(tm).
Please wave your favorite dead chicken over the busses */
/* First say hello to the EIU */
outl(0x0000FFFF, EIU_PREMPT_REG);
outl(1, EIU_QUIET_REG);
outl(0x40f3c07F, EIU_MODE_REG);
/* Now be nice to the EISA chipset */
outb(1, EISA_EXT_NMI_RESET_CTRL);
udelay(50); /* Wait long enough for the dust to settle */
outb(0, EISA_EXT_NMI_RESET_CTRL);
outb(0, EISA_DMA2_WRITE_SINGLE);
init_i8259_irqs();
if (request_irq(SGI_EISA_IRQ, ip22_eisa_intr, 0, "EISA", NULL))
pr_err("Failed to request irq %d (EISA)\n", SGI_EISA_IRQ);
EISA_bus = 1; return 0;
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.