1 1.10 martin /* $NetBSD: grf_ulreg.h,v 1.10 2008/04/28 20:23:12 martin Exp $ */ 2 1.1 chopps 3 1.5 is /*- 4 1.6 is * Copyright (c) 1995 The NetBSD Foundation, Inc. 5 1.1 chopps * All rights reserved. 6 1.1 chopps * 7 1.5 is * This code is derived from software contributed to The NetBSD Foundation 8 1.5 is * by Ignatios Souvatzis. 9 1.5 is * 10 1.1 chopps * Redistribution and use in source and binary forms, with or without 11 1.1 chopps * modification, are permitted provided that the following conditions 12 1.1 chopps * are met: 13 1.1 chopps * 1. Redistributions of source code must retain the above copyright 14 1.1 chopps * notice, this list of conditions and the following disclaimer. 15 1.1 chopps * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 chopps * notice, this list of conditions and the following disclaimer in the 17 1.1 chopps * documentation and/or other materials provided with the distribution. 18 1.1 chopps * 19 1.5 is * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.5 is * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.5 is * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.5 is * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.5 is * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.5 is * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.5 is * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.5 is * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.5 is * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.5 is * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.5 is * POSSIBILITY OF SUCH DAMAGE. 30 1.1 chopps */ 31 1.5 is 32 1.1 chopps /* 33 1.1 chopps * Registers etc. for the University of Lowell graphics board. 34 1.1 chopps */ 35 1.1 chopps 36 1.1 chopps struct gspregs { 37 1.1 chopps /* 38 1.7 aymeric * alas, they didn't invert the A1 bit, so we have to write the 39 1.1 chopps * address pointer in two parts 40 1.1 chopps */ 41 1.8 perry volatile u_short hstadrl; 42 1.8 perry volatile u_short hstadrh; 43 1.8 perry volatile u_short data; 44 1.8 perry volatile u_short ctrl; 45 1.1 chopps }; 46 1.1 chopps 47 1.1 chopps /* Bits in ctrl */ 48 1.1 chopps #define HLT 0x8000 49 1.1 chopps #define CF 0x4000 50 1.1 chopps #define LBL 0x2000 51 1.1 chopps #define INCR 0x1000 52 1.1 chopps #define INCW 0x0800 53 1.1 chopps #define NMIM 0x0200 54 1.1 chopps #define NMI 0x0100 55 1.1 chopps 56 1.1 chopps #define INTOUT 0x0080 57 1.1 chopps #define MSGOUT 0x0070 58 1.1 chopps #define INTIN 0x0008 59 1.1 chopps #define MSGIN 0x0007 60 1.1 chopps 61 1.1 chopps /* address macros */ 62 1.1 chopps 63 1.3 chopps #define GSPSETHADRS(gsp,adrs) do { \ 64 1.3 chopps (gsp)->hstadrh = (adrs) >> 16; \ 65 1.3 chopps (gsp)->hstadrl = (adrs) & 0xFFFF; \ 66 1.3 chopps } while (0) 67 1.3 chopps #define GSPGETHADRS(gsp) ((gsp)->hstadrh << 16 | (gsp)->hstadrl) 68 1.1 chopps 69 1.1 chopps /* Standard addresses in GSP memory */ 70 1.1 chopps 71 1.1 chopps #define PUT_PTR_ADRS 0xFFA20000 /* put pointer in ring buffer */ 72 1.1 chopps #define PUT_HI_PTR_ADRS 0xFFA20010 /* put pointer high word */ 73 1.1 chopps #define GET_PTR_ADRS 0xFFA20020 /* get pointer (low word) */ 74 1.1 chopps #define GSP_MODE_ADRS 0xFFA20040 /* GSP mode word */ 75 1.1 chopps 76 1.1 chopps /* Bits in GSP mode word */ 77 1.1 chopps #define GMODE_HOLD 1 /* hold screen */ 78 1.1 chopps #define GMODE_FLUSH 2 /* flush GSP input queue */ 79 1.1 chopps #define GMODE_ALTSCRN 4 /* use alternate screen */ 80 1.1 chopps #define GMODE_DISPCTRL 8 /* display control chars */ 81 1.1 chopps 82 1.1 chopps /* command words */ 83 1.1 chopps #define GCMD_CMD_MSK 0x000F 84 1.1 chopps #define GCMD_PAR_MSK 0xFFF0 85 1.1 chopps 86 1.1 chopps #define GCMD_NOP 0 87 1.1 chopps #define GCMD_CHAR 1 /* char, fg, bg, x, y */ 88 1.1 chopps #define GCMD_FILL 2 /* fg, x, y, w, h, ppop */ 89 1.1 chopps #define GCMD_PIXBLT 3 /* x, y, w, h, dx, dy */ 90 1.1 chopps #define GCMD_FNTMIR 4 /* */ 91 1.1 chopps #define GCMD_CMAP 5 /* overlay==1, index, red, green, blue */ 92 1.1 chopps #define GCMD_MCHG 6 /* width, height, baseh, basel, pitch, depth */ 93 1.1 chopps 94 1.1 chopps struct grf_ul_softc { 95 1.1 chopps struct grf_softc gus_sc; 96 1.1 chopps u_int8_t gus_imcmap[768]; 97 1.1 chopps u_int8_t gus_ovcmap[12]; 98 1.1 chopps u_int8_t gus_ovslct; 99 1.1 chopps /* realconfig stuff assumes this is last, else it would get copied: */ 100 1.1 chopps struct isr gus_isr; 101 1.1 chopps }; 102 1.1 chopps 103 1.1 chopps #ifdef _KERNEL 104 1.9 he void gsp_write(volatile struct gspregs *gsp, u_int16_t *data, size_t size); 105 1.2 chopps int grful_cnprobe(void); 106 1.2 chopps void grful_iteinit(struct grf_softc *gp); 107 1.1 chopps #endif 108 1.1 chopps 109