static void dec_2100_a500_cons_init(void) { struct ctb *ctb; uint64_t ctbslot; struct ttwoga_config *tcp; ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off); ctbslot = ctb->ctb_turboslot; tcp = ttwoga_init(0, 0); switch (ctb->ctb_term_type) { case CTB_PRINTERPORT: /* serial console ... */ assert(CTB_TURBOSLOT_HOSE(ctbslot) == 0); /* XXX */ { /* * Delay to allow PROM putchars to complete. * FIFO depth * character time, * character time = (1000000 / (defaultrate / 10)) */ DELAY(160000000 / comcnrate); if(comcnattach(&tcp->tc_iot, 0x3f8, comcnrate, COM_FREQ, COM_TYPE_NORMAL, (TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8)) panic("can't init serial console"); break; } case CTB_GRAPHICS: #if NPCKBD > 0 /* display console ... */ /* XXX */ (void) pckbc_cnattach(&tcp->tc_iot, IO_KBD, KBCMDP, PCKBC_KBD_SLOT, 0); switch (CTB_TURBOSLOT_TYPE(ctbslot)) { case CTB_TURBOSLOT_TYPE_ISA: /* * XXX The following is apparently necessary for an * XXX ISA VGA card, but what happens with real EISA * XXX VGA cards? */ case CTB_TURBOSLOT_TYPE_EISA: isa_display_console(&tcp->tc_iot, &tcp->tc_memt); break; case CTB_TURBOSLOT_TYPE_PCI: /* The display PCI might be different */ tcp = ttwoga_init(0, CTB_TURBOSLOT_HOSE(ctbslot)); pci_display_console(&tcp->tc_iot, &tcp->tc_memt, &tcp->tc_pc, CTB_TURBOSLOT_BUS(ctbslot), CTB_TURBOSLOT_SLOT(ctbslot), 0); break; default: printf("type = 0x%lx, hose = 0x%lx, bus = 0x%lx, " "slot = 0x%lx\n", CTB_TURBOSLOT_TYPE(ctbslot), CTB_TURBOSLOT_HOSE(ctbslot), CTB_TURBOSLOT_BUS(ctbslot), CTB_TURBOSLOT_SLOT(ctbslot)); panic("unknown display console type"); } #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); } #ifdef KGDB /* Attach the KGDB device. */ alpha_kgdb_init(kgdb_devlist, &tcp->tc_iot); #endif /* KGDB */ }
static void dec_6600_cons_init() { struct ctb *ctb; u_int64_t ctbslot; struct tsp_config *tsp; ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off); ctbslot = ctb->ctb_turboslot; /* Console hose defaults to hose 0. */ tsp_console_hose = 0; tsp = tsp_init(0, tsp_console_hose); 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(&tsp->pc_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(&tsp->pc_iot, IO_KBD, KBCMDP, 0); if (CTB_TURBOSLOT_TYPE(ctbslot) == CTB_TURBOSLOT_TYPE_ISA) isa_display_console(&tsp->pc_iot, &tsp->pc_memt); else { /* The display PCI might be different */ tsp_console_hose = CTB_TURBOSLOT_HOSE(ctbslot); tsp = tsp_init(0, tsp_console_hose); pci_display_console(&tsp->pc_iot, &tsp->pc_memt, &tsp->pc_pc, CTB_TURBOSLOT_BUS(ctbslot), CTB_TURBOSLOT_SLOT(ctbslot), 0); } #else panic("not configured to use display && keyboard console"); #endif break; default: printf("ctb_term_type = 0x%lx ctb_turboslot = 0x%lx" " hose = %ld\n", (unsigned long)ctb->ctb_term_type, (unsigned long)ctbslot, (unsigned long)CTB_TURBOSLOT_HOSE(ctbslot)); panic("consinit: unknown console type %lu", (unsigned long)ctb->ctb_term_type); } }