157219Sakito /*- 257219Sakito * Copyright (c) 1988 University of Utah. 357219Sakito * Copyright (c) 1992 OMRON Corporation. 457219Sakito * Copyright (c) 1990,1992 The Regents of the University of California. 557219Sakito * All rights reserved. 657219Sakito * 757219Sakito * %sccs.include.redist.c% 857219Sakito * 957219Sakito * from: hp/dev/grf.c 7.13 (Berkeley) 7/12/92 1057219Sakito * 11*57240Sakito * @(#)fb.c 7.2 (Berkeley) 12/20/92 1257219Sakito */ 1357219Sakito 1457219Sakito /* 1557219Sakito * fb.c -- frame-buffer device driver 1657219Sakito * by A.Fujita, Dec-16-1992 1757219Sakito */ 1857219Sakito 1957219Sakito #include <sys/param.h> 2057219Sakito #include <sys/proc.h> 2157219Sakito #include <sys/ioctl.h> 2257219Sakito #include <luna68k/dev/fbio.h> 2357219Sakito 24*57240Sakito #include "bmc.h" 25*57240Sakito 2657219Sakito volatile struct fb_rfc *rfcPtr = (struct fb_rfc *) 0xB1000000; 2757219Sakito static struct fb_rfc rfcVal; 2857219Sakito 2957219Sakito int 3057219Sakito fbopen(dev, flags, mode, p) 3157219Sakito dev_t dev; 3257219Sakito int flags, mode; 3357219Sakito struct proc *p; 3457219Sakito { 3557219Sakito return(0); 3657219Sakito } 3757219Sakito 3857219Sakito int 3957219Sakito fbclose(dev, flags, mode, p) 4057219Sakito dev_t dev; 4157219Sakito int flags, mode; 4257219Sakito struct proc *p; 4357219Sakito { 4457219Sakito return(0); 4557219Sakito } 4657219Sakito 4757219Sakito int 4857219Sakito fbioctl(dev, cmd, data, flags, p) 4957219Sakito dev_t dev; 5057219Sakito int cmd; 5157219Sakito caddr_t data; 5257219Sakito int flags; 5357219Sakito struct proc *p; 5457219Sakito { 5557219Sakito struct fb_rfc *rfcp; 5657219Sakito int error; 5757219Sakito 5857219Sakito error = 0; 5957219Sakito switch (cmd) { 6057219Sakito 61*57240Sakito case FBIO_ON: 62*57240Sakito #if NBMC > 0 63*57240Sakito bmd_off(); 64*57240Sakito #endif 65*57240Sakito break; 6657219Sakito 67*57240Sakito case FBIO_OFF: 68*57240Sakito #if NBMC > 0 69*57240Sakito bmd_on(); 70*57240Sakito #endif 71*57240Sakito break; 72*57240Sakito 73*57240Sakito case FBIOSETRFCT: 7457219Sakito *rfcPtr = rfcVal = *((struct fb_rfc *) data); 7557219Sakito break; 7657219Sakito 7757219Sakito case FBIOGETRFCT: 7857219Sakito *(struct fb_rfc *)data = rfcVal; 7957219Sakito break; 8057219Sakito 8157219Sakito default: 8257219Sakito error = EINVAL; 8357219Sakito break; 8457219Sakito 8557219Sakito } 8657219Sakito return(error); 8757219Sakito } 8857219Sakito 8957219Sakito fb_adjust(hcnt, vcnt) 9057219Sakito int hcnt, vcnt; 9157219Sakito { 9257219Sakito rfcVal.rfc_hcnt = hcnt; /* shift left 16 dot */ 9357219Sakito rfcVal.rfc_vcnt = vcnt; /* shift down 1 dot */ 9457219Sakito 9557219Sakito *rfcPtr = rfcVal; 9657219Sakito } 9757219Sakito 9857219Sakito int 9957219Sakito fbselect(dev, rw) 10057219Sakito dev_t dev; 10157219Sakito int rw; 10257219Sakito { 10357219Sakito return(0); 10457219Sakito } 10557219Sakito 10657219Sakito int 10757219Sakito fbmap(dev, off, prot) 10857219Sakito dev_t dev; 10957219Sakito int off, prot; 11057219Sakito { 11157219Sakito return(((u_int) 0xB10C0000 + off) >> PGSHIFT); 11257219Sakito } 113