xref: /csrg-svn/sys/luna68k/dev/fb.c (revision 57219)
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