1 /*        $NetBSD: grf_gbreg.h,v 1.2 2011/02/08 20:20:14 rmind Exp $  */
2 
3 /*
4  * Copyright (c) 1988 University of Utah.
5  * Copyright (c) 1990, 1993
6  *        The Regents of the University of California.  All rights reserved.
7  *
8  * This code is derived from software contributed to Berkeley by
9  * the Systems Programming Group of the University of Utah Computer
10  * Science Department.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions and the following disclaimer.
17  * 2. Redistributions in binary form must reproduce the above copyright
18  *    notice, this list of conditions and the following disclaimer in the
19  *    documentation and/or other materials provided with the distribution.
20  * 3. Neither the name of the University nor the names of its contributors
21  *    may be used to endorse or promote products derived from this software
22  *    without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34  * SUCH DAMAGE.
35  *
36  * from: Utah $Hdr: grf_gbreg.h 1.11 92/01/21$
37  *
38  *        @(#)grf_gbreg.h     8.1 (Berkeley) 6/10/93
39  */
40 
41 #include <hp300/dev/iotypes.h>          /* XXX */
42 
43 /*
44  * Gatorbox driver regs
45  */
46 
47 #define TILER_ENABLE                    0x80
48 #define LINE_MOVER_ENABLE     0x80
49 #define UP_LEFT               0x00
50 #define DOWN_RIGHT            0x40
51 #define MOVE_UP_LEFT          TILER_ENABLE|UP_LEFT
52 #define MOVE_DOWN_RIGHT       TILER_ENABLE|DOWN_RIGHT
53 
54 #define tile_mover_waitbusy(regaddr) \
55           while (((struct gboxfb *)(regaddr))->sec_interrupt & 0x10)
56 
57 #define line_mover_waitbusy(regaddr) \
58           while ((((struct gboxfb *)(regaddr))->status & 0x80) == 0)
59 
60 #define gbcm_waitbusy(regaddr) \
61           while (((struct gboxfb *)(regaddr))->cmap_busy != 0xff)
62 
63 struct gboxfb {
64   u_char  :8;
65   vu_char           reset;                        /* reset register             0x01 */
66   vu_char sec_interrupt;                /* Secondary interrupt register 0x03 */
67   vu_char interrupt;                    /* interrupt register                   0x03 */
68   u_char  :8;
69   vu_char fbwmsb;                       /* frame buffer width MSB     0x05 */
70   u_char  :8;
71   vu_char fbwlsb;                       /* frame buffer width MSB     0x07 */
72   u_char  :8;
73   vu_char fbhmsb;                       /* frame buffer height MSB    0x09 */
74   u_char  :8;
75   vu_char fbhlsb;                       /* frame buffer height MSB    0x0b */
76   u_char  :8;
77   vu_char dwmsb;                        /* display width MSB                    0x0d */
78   u_char  :8;
79   vu_char dwlsb;                        /* display width MSB                    0x0f */
80   u_char  :8;
81   vu_char dhmsb;                        /* display height MSB                   0x11 */
82   u_char  :8;
83   vu_char dhlsb;                        /* display height MSB                   0x13 */
84   u_char  :8;
85   vu_char fbid;                         /* Scondary frame buffer id   0x15 */
86   u_char  f1[0x5d-0x15-1];
87   vu_char fbomsb;                       /* frame buffer offset MSB    0x5d */
88   u_char  :8;
89   vu_char fbolsb;                       /* frame buffer offset LSB    0x5f */
90   u_char  f2[0x4000-0x5f-1];
91   vu_char           crtc_address;                 /* CTR controller address reg 0x4000 */
92   vu_char status;                       /* Status register        0x4001 */
93   vu_char crtc_data;                    /* CTR controller data reg    0x4002 */
94   u_char  f3[6];
95   vu_char line_mover_rep_rule;    /* Line move rep rule                  */
96   u_char  :8, :8;
97   vu_char line_mover_width;   /* Line move width               */
98   u_char  f4[0xff3];
99   vu_char width;                        /* width in tiles         0x5001 */
100   u_char  :8;
101   vu_char           height;                       /* height in tiles        0x5003 */
102   u_char  f5[3];
103   vu_char rep_rule;           /* replacement rule       0x5007 */
104   u_char  f6[0x6001-0x5007-1];
105   vu_char           blink1;                       /* blink 1                          0x6001 */
106   u_char  f7[3];
107   vu_char blink2;                       /* blink 2                          0x6005 */
108   u_char  f8[3];
109   vu_char write_protect;                /* write protect          0x6009 */
110   u_char  f9[0x6803-0x6009-1];
111   vu_char cmap_busy;                    /* color map busy             0x6803 */
112   u_char  f10[0x68b9-0x6803-1];
113   vu_char creg_select;                  /* color map register select  0x68b8 */
114   u_char  f11[0x68f1-0x68b9-1];
115   vu_char           cmap_write;                   /* color map write trigger    0x68f1 */
116   u_char  f12[0x69b3-0x68f1-1];
117   vu_char cmap_red;           /* red value register         0x69b3 */
118   u_char  :8;
119   vu_char cmap_grn;           /* green value register       0x69b5 */
120   u_char  :8;
121   vu_char cmap_blu;           /* blue value register        0x69b6 */
122 };
123