static void dec_axppci_33_cons_init() { struct ctb *ctb; struct lca_config *lcp; lcp = lca_preinit(); ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off); switch (ctb->ctb_term_type) { case CTB_PRINTERPORT: /* serial console ... */ /* XXX */ { /* * Delay to allow PROM putchars to complete. * FIFO depth * character time, * character time = (1000000 / (defaultrate / 10)) */ DELAY(160000000 / comcnrate); if(comcnattach(&lcp->lc_iot, 0x3f8, comcnrate, COM_FREQ, (TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8)) panic("can't init serial console"); break; } case CTB_GRAPHICS: #if NPCKBD > 0 /* display console ... */ /* XXX */ (void) pckbc_cnattach(&lcp->lc_iot, IO_KBD, KBCMDP, PCKBC_KBD_SLOT, 0); if (CTB_TURBOSLOT_TYPE(ctb->ctb_turboslot) == CTB_TURBOSLOT_TYPE_ISA) isa_display_console(&lcp->lc_iot, &lcp->lc_memt); else pci_display_console(&lcp->lc_iot, &lcp->lc_memt, &lcp->lc_pc, CTB_TURBOSLOT_BUS(ctb->ctb_turboslot), CTB_TURBOSLOT_SLOT(ctb->ctb_turboslot), 0); #else panic("not configured to use display && keyboard console"); #endif break; default: printf("ctb->ctb_term_type = 0x%lx\n", ctb->ctb_term_type); printf("ctb->ctb_turboslot = 0x%lx\n", ctb->ctb_turboslot); panic("consinit: unknown console type %ld", ctb->ctb_term_type); } }
void dec_axppci_33_init() { int cfg0val; u_int64_t variation; bus_space_tag_t iot; struct lca_config *lcp; bus_space_handle_t nsio; #define A33_NSIOBARRIER(type) bus_space_barrier(iot, nsio,\ NSIO_BASE, NSIO_SIZE, (type)) platform.family = "DEC AXPpci"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_axppci_33_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "lca"; platform.cons_init = dec_axppci_33_cons_init; platform.device_register = dec_axppci_33_device_register; lcp = lca_preinit(); iot = &lcp->lc_iot; if (bus_space_map(iot, NSIO_PORT, NSIO_SIZE, 0, &nsio)) return; bus_space_write_1(iot, nsio, NSIO_INDEX, NSIO_CFG0); A33_NSIOBARRIER(BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); cfg0val = bus_space_read_1(iot, nsio, NSIO_DATA); cfg0val |= NSIO_IDE_ENABLE; bus_space_write_1(iot, nsio, NSIO_INDEX, NSIO_CFG0); A33_NSIOBARRIER(BUS_SPACE_BARRIER_WRITE); bus_space_write_1(iot, nsio, NSIO_DATA, cfg0val); A33_NSIOBARRIER(BUS_SPACE_BARRIER_WRITE); bus_space_write_1(iot, nsio, NSIO_DATA, cfg0val); /* Leave nsio mapped to catch any accidental port space collisions */ }