1*57219Sakito /*- 2*57219Sakito * Copyright (c) 1988 University of Utah. 3*57219Sakito * Copyright (c) 1992 OMRON Corporation. 4*57219Sakito * Copyright (c) 1990,1992 The Regents of the University of California. 5*57219Sakito * All rights reserved. 6*57219Sakito * 7*57219Sakito * %sccs.include.redist.c% 8*57219Sakito * 9*57219Sakito * from: hp/dev/grf.c 7.13 (Berkeley) 7/12/92 10*57219Sakito * 11*57219Sakito * @(#)fb.c 7.1 (Berkeley) 12/19/92 12*57219Sakito */ 13*57219Sakito 14*57219Sakito /* 15*57219Sakito * fb.c -- frame-buffer device driver 16*57219Sakito * by A.Fujita, Dec-16-1992 17*57219Sakito */ 18*57219Sakito 19*57219Sakito #include <sys/param.h> 20*57219Sakito #include <sys/proc.h> 21*57219Sakito #include <sys/ioctl.h> 22*57219Sakito #include <luna68k/dev/fbio.h> 23*57219Sakito 24*57219Sakito volatile struct fb_rfc *rfcPtr = (struct fb_rfc *) 0xB1000000; 25*57219Sakito static struct fb_rfc rfcVal; 26*57219Sakito 27*57219Sakito int 28*57219Sakito fbopen(dev, flags, mode, p) 29*57219Sakito dev_t dev; 30*57219Sakito int flags, mode; 31*57219Sakito struct proc *p; 32*57219Sakito { 33*57219Sakito return(0); 34*57219Sakito } 35*57219Sakito 36*57219Sakito int 37*57219Sakito fbclose(dev, flags, mode, p) 38*57219Sakito dev_t dev; 39*57219Sakito int flags, mode; 40*57219Sakito struct proc *p; 41*57219Sakito { 42*57219Sakito return(0); 43*57219Sakito } 44*57219Sakito 45*57219Sakito int 46*57219Sakito fbioctl(dev, cmd, data, flags, p) 47*57219Sakito dev_t dev; 48*57219Sakito int cmd; 49*57219Sakito caddr_t data; 50*57219Sakito int flags; 51*57219Sakito struct proc *p; 52*57219Sakito { 53*57219Sakito struct fb_rfc *rfcp; 54*57219Sakito int error; 55*57219Sakito 56*57219Sakito error = 0; 57*57219Sakito switch (cmd) { 58*57219Sakito 59*57219Sakito case FBIOPUTRFCT: 60*57219Sakito 61*57219Sakito *rfcPtr = rfcVal = *((struct fb_rfc *) data); 62*57219Sakito break; 63*57219Sakito 64*57219Sakito case FBIOGETRFCT: 65*57219Sakito *(struct fb_rfc *)data = rfcVal; 66*57219Sakito break; 67*57219Sakito 68*57219Sakito /* 69*57219Sakito case GRFIOCON: 70*57219Sakito error = grfon(dev); 71*57219Sakito break; 72*57219Sakito 73*57219Sakito case GRFIOCOFF: 74*57219Sakito error = grfoff(dev); 75*57219Sakito break; 76*57219Sakito 77*57219Sakito case GRFIOCMAP: 78*57219Sakito error = grfmmap(dev, (caddr_t *)data, p); 79*57219Sakito break; 80*57219Sakito 81*57219Sakito case GRFIOCUNMAP: 82*57219Sakito error = grfunmmap(dev, *(caddr_t *)data, p); 83*57219Sakito break; 84*57219Sakito */ 85*57219Sakito default: 86*57219Sakito error = EINVAL; 87*57219Sakito break; 88*57219Sakito 89*57219Sakito } 90*57219Sakito return(error); 91*57219Sakito } 92*57219Sakito 93*57219Sakito fb_adjust(hcnt, vcnt) 94*57219Sakito int hcnt, vcnt; 95*57219Sakito { 96*57219Sakito rfcVal.rfc_hcnt = hcnt; /* shift left 16 dot */ 97*57219Sakito rfcVal.rfc_vcnt = vcnt; /* shift down 1 dot */ 98*57219Sakito 99*57219Sakito *rfcPtr = rfcVal; 100*57219Sakito } 101*57219Sakito 102*57219Sakito int 103*57219Sakito fbselect(dev, rw) 104*57219Sakito dev_t dev; 105*57219Sakito int rw; 106*57219Sakito { 107*57219Sakito return(0); 108*57219Sakito } 109*57219Sakito 110*57219Sakito int 111*57219Sakito fbmap(dev, off, prot) 112*57219Sakito dev_t dev; 113*57219Sakito int off, prot; 114*57219Sakito { 115*57219Sakito return(((u_int) 0xB10C0000 + off) >> PGSHIFT); 116*57219Sakito } 117