void dec_kn300_cons_init() { struct ctb *ctb; struct mcpcia_config *ccp; extern struct mcpcia_config mcpcia_console_configuration; ccp = &mcpcia_console_configuration; /* It's already initialized. */ ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off); switch (ctb->ctb_term_type) { case CTB_PRINTERPORT: /* serial console ... */ /* * Delay to allow PROM putchars to complete. * FIFO depth * character time, * character time = (1000000 / (defaultrate / 10)) */ DELAY(160000000 / comcnrate); if (comcnattach(&ccp->cc_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(&ccp->cc_iot, IO_KBD, KBCMDP, PCKBC_KBD_SLOT); if (CTB_TURBOSLOT_TYPE(ctb->ctb_turboslot) == CTB_TURBOSLOT_TYPE_ISA) isa_display_console(&ccp->cc_iot, &ccp->cc_memt); else pci_display_console(&ccp->cc_iot, &ccp->cc_memt, &ccp->cc_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); } #ifdef KGDB /* Attach the KGDB device. */ alpha_kgdb_init(kgdb_devlist, &ccp->cc_iot); #endif /* KGDB */ }
static void dec_2100_a50_cons_init() { struct ctb *ctb; struct apecs_config *acp; extern struct apecs_config apecs_configuration; acp = &apecs_configuration; apecs_init(acp, 0); 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(&acp->ac_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(&acp->ac_iot, IO_KBD, KBCMDP, PCKBC_KBD_SLOT); if (CTB_TURBOSLOT_TYPE(ctb->ctb_turboslot) == CTB_TURBOSLOT_TYPE_ISA) isa_display_console(&acp->ac_iot, &acp->ac_memt); else pci_display_console(&acp->ac_iot, &acp->ac_memt, &acp->ac_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); } }
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_eb164_cons_init() { struct ctb *ctb; struct cia_config *ccp; extern struct cia_config cia_configuration; ccp = &cia_configuration; cia_init(ccp, 0); 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(&ccp->cc_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(&ccp->cc_iot, IO_KBD, KBCMDP, 0); /* * On at least LX164, SRM reports an isa video board * as a pci slot with 0xff as the bus and slot numbers. * Since these values are not plausible from a pci point * of view, it is safe to check for them. */ if (CTB_TURBOSLOT_TYPE(ctb->ctb_turboslot) == CTB_TURBOSLOT_TYPE_ISA || (CTB_TURBOSLOT_BUS(ctb->ctb_turboslot) == 0xff && CTB_TURBOSLOT_SLOT(ctb->ctb_turboslot) == 0xff)) isa_display_console(&ccp->cc_iot, &ccp->cc_memt); else pci_display_console(&ccp->cc_iot, &ccp->cc_memt, &ccp->cc_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); } }
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); } }
void dec_1000a_cons_init() { struct ctb *ctb; struct cia_config *ccp; struct apecs_config *acp; extern struct cia_config cia_configuration; extern struct apecs_config apecs_configuration; bus_space_tag_t iot, memt; struct alpha_pci_chipset *pcichipset; if(strcmp(platform.iobus, "cia") == 0) { ccp = &cia_configuration; cia_init(ccp, 0); iot = &ccp->cc_iot; memt = &ccp->cc_memt; pcichipset = &ccp->cc_pc; } else { acp = &apecs_configuration; apecs_init(acp, 0); iot = &acp->ac_iot; memt = &acp->ac_memt; pcichipset = &acp->ac_pc; } 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(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(iot, IO_KBD, KBCMDP, PCKBC_KBD_SLOT); /* * AlphaServer 1000s have a firmware bug whereby the * built-in ISA VGA is reported incorrectly -- ctb_turboslot * is mostly 0. */ switch (CTB_TURBOSLOT_TYPE(ctb->ctb_turboslot)) { case CTB_TURBOSLOT_TYPE_PCI: pci_display_console(iot, memt, pcichipset, CTB_TURBOSLOT_BUS(ctb->ctb_turboslot), CTB_TURBOSLOT_SLOT(ctb->ctb_turboslot), 0); break; default: isa_display_console(iot, memt); break; } #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, iot); #endif /* KGDB */ }