static void newport_attach(struct device *parent, struct device *self, void *aux) { struct gio_attach_args *ga = aux; struct newport_softc *sc = (void *)self; struct wsemuldisplaydev_attach_args wa; if (newport_is_console && ga->ga_addr == newport_console_dc.dc_addr) { wa.console = 1; sc->sc_dc = &newport_console_dc; } else { wa.console = 0; sc->sc_dc = malloc(sizeof(struct newport_devconfig), M_DEVBUF, M_WAITOK | M_ZERO); if (sc->sc_dc == NULL) panic("newport_attach: out of memory"); newport_attach_common(sc->sc_dc, ga); } aprint_naive(": Display adapter\n"); aprint_normal(": SGI NG1 (board revision %d, cmap revision %d, xmap revision %d, vc2 revision %d), depth %d\n", sc->sc_dc->dc_boardrev, sc->sc_dc->dc_cmaprev, sc->sc_dc->dc_xmaprev, sc->sc_dc->dc_vc2rev, sc->sc_dc->dc_depth); wa.scrdata = &newport_screenlist; wa.accessops = &newport_accessops; wa.accesscookie = sc->sc_dc; config_found(&sc->sc_dev, &wa, wsemuldisplaydevprint); }
static void newport_attach(device_t parent, device_t self, void *aux) { struct gio_attach_args *ga = aux; struct newport_softc *sc = device_private(self); struct wsemuldisplaydev_attach_args wa; unsigned long defattr; sc->sc_dev = self; if (newport_is_console && ga->ga_addr == newport_console_dc.dc_addr) { wa.console = 1; sc->sc_dc = &newport_console_dc; } else { wa.console = 0; sc->sc_dc = malloc(sizeof(struct newport_devconfig), M_DEVBUF, M_WAITOK | M_ZERO); if (sc->sc_dc == NULL) panic("newport_attach: out of memory"); newport_attach_common(sc->sc_dc, ga); } aprint_naive(": Display adapter\n"); aprint_normal(": SGI NG1 (board revision %d, cmap revision %d, xmap revision %d, vc2 revision %d), depth %d\n", sc->sc_dc->dc_boardrev, sc->sc_dc->dc_cmaprev, sc->sc_dc->dc_xmaprev, sc->sc_dc->dc_vc2rev, sc->sc_dc->dc_depth); vcons_init(&sc->sc_dc->dc_vd, sc->sc_dc, sc->sc_dc->dc_screen, &newport_accessops); sc->sc_dc->dc_vd.init_screen = newport_init_screen; if (newport_is_console) { newport_console_screen.scr_flags |= VCONS_SCREEN_IS_STATIC; vcons_init_screen(&sc->sc_dc->dc_vd, &newport_console_screen, 1, &defattr); sc->sc_dc->dc_screen->textops = &newport_console_screen.scr_ri.ri_ops; memcpy(&newport_textops, &newport_console_screen.scr_ri.ri_ops, sizeof(struct wsdisplay_emulops)); vcons_replay_msgbuf(&newport_console_screen); } wa.scrdata = &newport_screenlist; wa.accessops = &newport_accessops; wa.accesscookie = &sc->sc_dc->dc_vd; config_found(sc->sc_dev, &wa, wsemuldisplaydevprint); }
int newport_cnattach(struct gio_attach_args *ga) { struct rasops_info *ri = &newport_console_screen.scr_ri; long defattr = NEWPORT_ATTR_ENCODE(WSCOL_WHITE, WSCOL_BLACK); if (!newport_match(NULL, NULL, ga)) { return ENXIO; } newport_attach_common(&newport_console_dc, ga); newport_screen.ncols = newport_console_dc.dc_xres / 8; newport_screen.nrows = newport_console_dc.dc_yres / 16; ri->ri_hw = &newport_console_screen; ri->ri_depth = newport_console_dc.dc_depth; ri->ri_width = newport_console_dc.dc_xres; ri->ri_height = newport_console_dc.dc_yres; ri->ri_stride = newport_console_dc.dc_xres; /* XXX */ ri->ri_flg = RI_CENTER | RI_FULLCLEAR; ri->ri_ops.copyrows = newport_copyrows; ri->ri_ops.eraserows = newport_eraserows; ri->ri_ops.copycols = newport_copycols; ri->ri_ops.erasecols = newport_erasecols; ri->ri_ops.cursor = newport_cursor_dummy; ri->ri_ops.mapchar = newport_mapchar; ri->ri_ops.putchar = newport_putchar; ri->ri_ops.allocattr = newport_allocattr; ri->ri_font = newport_console_dc.dc_fontdata; newport_console_screen.scr_cookie = &newport_console_dc; wsdisplay_cnattach(&newport_screen, ri, 0, 0, defattr); newport_is_console = 1; return 0; }
int newport_cnattach(struct gio_attach_args *ga) { long defattr = NEWPORT_ATTR_ENCODE(WSCOL_WHITE, WSCOL_BLACK); const struct wsscreen_descr *screen; if (!newport_match(NULL, NULL, ga)) { return ENXIO; } newport_attach_common(&newport_console_dc, ga); if (newport_console_dc.dc_xres >= 1280 && newport_console_dc.dc_yres >= 1024) screen = &newport_screen_1280x1024; else screen = &newport_screen_1024x768; wsdisplay_cnattach(screen, &newport_console_dc, 0, 0, defattr); newport_is_console = 1; return 0; }