1 /* $NetBSD: tcxreg.h,v 1.1 2000/08/20 22:27:07 pk Exp $ */ 2 /* 3 * Copyright (c) 1996 The NetBSD Foundation, Inc. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to The NetBSD Foundation 7 * by Paul Kranenburg. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by the NetBSD 20 * Foundation, Inc. and its contributors. 21 * 4. Neither the name of The NetBSD Foundation nor the names of its 22 * contributors may be used to endorse or promote products derived 23 * from this software without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 26 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 29 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 * POSSIBILITY OF SUCH DAMAGE. 36 */ 37 38 /* 39 * A TCX is composed of numerous groups of control registers, all with TLAs: 40 * DHC - ??? 41 * TEC - transform engine control? 42 * THC - TEC Hardware Configuration 43 * ROM - a 128Kbyte ROM with who knows what in it. 44 * STIP - ??? 45 * RSTIP - Raw ??? 46 * BLIT - ??? 47 * RBLIT - Raw ??? 48 * ALT - ??? 49 * colormap - see below 50 * frame buffer memory (video RAM) 51 * possible other stuff 52 * 53 */ 54 #define TCX_REG_DFB8 0 55 #define TCX_REG_DFB24 1 56 #define TCX_REG_STIP 2 57 #define TCX_REG_BLIT 3 58 #define TCX_REG_RDFB32 4 59 #define TCX_REG_RSTIP 5 60 #define TCX_REG_RBLIT 6 61 #define TCX_REG_TEC 7 62 #define TCX_REG_CMAP 8 63 #define TCX_REG_THC 9 64 #define TCX_REG_ROM 10 65 #define TCX_REG_DHC 11 66 #define TCX_REG_ALT 12 67 68 #define TCX_NREG 13 69 70 71 /* 72 * The layout of the THC. 73 */ 74 struct tcx_thc { 75 u_int thc_config; 76 u_int thc_xxx1[31]; 77 u_int thc_sensebus; 78 u_int thc_xxx2[3]; 79 u_int thc_delay; 80 u_int thc_strapping; 81 u_int thc_xxx3[1]; 82 u_int thc_linecount; 83 u_int thc_xxx4[478]; 84 u_int thc_hcmisc; 85 u_int thc_xxx5[56]; 86 u_int thc_cursoraddr; 87 u_int thc_cursorAdata[32]; 88 u_int thc_cursorBdata[32]; 89 90 }; 91 /* bits in thc_config ??? */ 92 #define THC_CFG_FBID 0xf0000000 /* id mask */ 93 #define THC_CFG_FBID_SHIFT 28 94 #define THC_CFG_SENSE 0x07000000 /* sense mask */ 95 #define THC_CFG_SENSE_SHIFT 24 96 #define THC_CFG_REV 0x00f00000 /* revision mask */ 97 #define THC_CFG_REV_SHIFT 20 98 #define THC_CFG_RST 0x00008000 /* reset */ 99 100 /* bits in thc_hcmisc */ 101 #define THC_MISC_OPENFLG 0x80000000 /* open flag (what's that?) */ 102 #define THC_MISC_SWERR_EN 0x20000000 /* enable SW error interrupt */ 103 #define THC_MISC_VSYNC_LEVEL 0x08000000 /* vsync level when disabled */ 104 #define THC_MISC_HSYNC_LEVEL 0x04000000 /* hsync level when disabled */ 105 #define THC_MISC_VSYNC_DISABLE 0x02000000 /* vsync disable */ 106 #define THC_MISC_HSYNC_DISABLE 0x01000000 /* hsync disable */ 107 #define THC_MISC_XXX1 0x00ffe000 /* unused */ 108 #define THC_MISC_RESET 0x00001000 /* ??? */ 109 #define THC_MISC_XXX2 0x00000800 /* unused */ 110 #define THC_MISC_VIDEN 0x00000400 /* video enable */ 111 #define THC_MISC_SYNC 0x00000200 /* not sure what ... */ 112 #define THC_MISC_VSYNC 0x00000100 /* ... these really are */ 113 #define THC_MISC_SYNCEN 0x00000080 /* sync enable */ 114 #define THC_MISC_CURSRES 0x00000040 /* cursor resolution */ 115 #define THC_MISC_INTEN 0x00000020 /* v.retrace intr enable */ 116 #define THC_MISC_INTR 0x00000010 /* intr pending / ack bit */ 117 #define THC_MISC_DACWAIT 0x0000000f /* ??? */ 118 119 /* 120 * Partial description of TEC. 121 */ 122 struct tcx_tec { 123 u_int tec_config; /* what's in it? */ 124 u_int tec_xxx0[35]; 125 u_int tec_delay; /* */ 126 #define TEC_DELAY_SYNC 0x00000f00 127 #define TEC_DELAY_WR_F 0x000000c0 128 #define TEC_DELAY_WR_R 0x00000030 129 #define TEC_DELAY_SOE_F 0x0000000c 130 #define TEC_DELAY_SOE_S 0x00000003 131 u_int tec_strapping; /* */ 132 #define TEC_STRAP_FIFO_LIMIT 0x00f00000 133 #define TEC_STRAP_CACHE_EN 0x00010000 134 #define TEC_STRAP_ZERO_OFFSET 0x00008000 135 #define TEC_STRAP_REFRSH_DIS 0x00004000 136 #define TEC_STRAP_REF_LOAD 0x00001000 137 #define TEC_STRAP_REFRSH_PERIOD 0x000003ff 138 u_int tec_hcmisc; /* */ 139 u_int tec_linecount; /* */ 140 u_int tec_hss; /* */ 141 u_int tec_hse; /* */ 142 u_int tec_hds; /* */ 143 u_int tec_hsedvs; /* */ 144 u_int tec_hde; /* */ 145 u_int tec_vss; /* */ 146 u_int tec_vse; /* */ 147 u_int tec_vds; /* */ 148 u_int tec_vde; /* */ 149 }; 150 151