int gbox_reset(struct diofb *fb, int scode, struct diofbreg *fbr) { int rc; u_int i; /* XXX don't trust hardware, force defaults */ fb->fbwidth = 1024; fb->fbheight = 1024; fb->dwidth = 1024; fb->dheight = 768; if ((rc = diofb_fbinquire(fb, scode, fbr)) != 0) return (rc); fb->bmv = gbox_windowmove; gbox_restore(fb); /* * Find out how many colors are available by determining * which planes are installed. That is, write all ones to * a frame buffer location, see how many ones are read back. */ if (1 /* fb->planes == 0 */) { volatile u_int8_t *fbp; u_int8_t save; fbp = (u_int8_t *)fb->fbkva; save = *fbp; *fbp = 0xff; fb->planemask = *fbp; *fbp = save; for (fb->planes = 1; fb->planemask >= (1 << fb->planes); fb->planes++); if (fb->planes > 8) fb->planes = 8; fb->planemask = (1 << fb->planes) - 1; } diofb_fbsetup(fb); for (i = 0; i <= fb->planemask; i++) gbox_setcolor(fb, i); return (0); }
/* * Initialize hardware and display routines. */ int topcat_reset(struct diofb *fb, int scode, struct diofbreg *fbr) { volatile struct tcboxfb *tc = (struct tcboxfb *)fbr; int rc; u_int i; if ((rc = diofb_fbinquire(fb, scode, fbr)) != 0) return (rc); /* * If we could not get a valid number of planes, determine it * by writing to the first frame buffer display location, * then reading it back. */ if (fb->planes == 0) { volatile u_int8_t *fbp; u_int8_t save; fbp = (u_int8_t *)fb->fbkva; tc->fben = ~0; tc->wen = ~0; tc->ren = ~0; tc->prr = RR_COPY; save = *fbp; *fbp = 0xff; fb->planemask = *fbp; *fbp = save; for (fb->planes = 1; fb->planemask >= (1 << fb->planes); fb->planes++); if (fb->planes > 8) fb->planes = 8; fb->planemask = (1 << fb->planes) - 1; } fb->bmv = topcat_windowmove; topcat_restore(fb); diofb_fbsetup(fb); for (i = 0; i <= fb->planemask; i++) topcat_setcolor(fb, i); return (0); }
/* * Initialize hardware and display routines. */ int hyper_reset(struct diofb *fb, int scode, struct diofbreg *fbr) { volatile struct hyboxfb *hy = (struct hyboxfb *)fbr; int rc; if ((rc = diofb_fbinquire(fb, scode, fbr)) != 0) return (rc); fb->bmv = diofb_mono_windowmove; fb->ri.ri_depth = 1; /* do not fake a 8bpp frame buffer */ diofb_fbsetup(fb); /* enable display */ hy->nblank = DISP_VIDEO_ENABLE | DISP_SYNC_ENABLE; return (0); }
/* * Initialize hardware and display routines. */ int rbox_reset(struct diofb *fb, int scode, struct diofbreg *fbr) { int rc; if ((rc = diofb_fbinquire(fb, scode, fbr)) != 0) return (rc); /* * Restrict the framebuffer to a monochrome view for now, until * I know better how to detect and frob overlay planes, and * setup a proper colormap. -- miod */ fb->planes = fb->planemask = 1; fb->bmv = rbox_windowmove; rbox_restore(fb); diofb_fbsetup(fb); return (0); }