1 /* $OpenBSD: cgtwelvereg.h,v 1.2 2006/07/20 11:23:49 martin Exp $ */ 2 3 /* 4 * Copyright (c) 2002 Miodrag Vallat. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 19 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 /* 29 * cgtwelve (GS) accelerated 24-bit framebuffer driver. 30 * 31 * Memory layout and scarce register information from SMI's cg12reg.h 32 */ 33 34 #define CG12_HEIGHT 900 35 #define CG12_WIDTH 1152 36 37 #define CG12_HEIGHT_HR 1024 38 #define CG12_WIDTH_HR 1280 39 40 /* offsets from the card mapping */ 41 #define CG12_OFF_DPU 0x040100 42 #define CG12_OFF_APU 0x040200 43 #define CG12_OFF_DAC 0x040300 44 #define CG12_OFF_OVERLAY0 0x700000 45 #define CG12_OFF_OVERLAY1 0x780000 46 #define CG12_OFF_INTEN 0xc00000 47 48 #define CG12_OFF_OVERLAY0_HR 0xe00000 49 #define CG12_OFF_OVERLAY1_HR 0xf00000 50 #define CG12_OFF_INTEN_HR 0x800000 51 52 /* sizes of various parts */ 53 #define CG12_SIZE_DPU 0x000100 54 #define CG12_SIZE_APU 0x000100 55 #define CG12_SIZE_DAC 0x000400 56 #define CG12_SIZE_OVERLAY 0x020000 57 #define CG12_SIZE_ENABLE 0x020000 58 #define CG12_SIZE_COLOR8 0x100000 59 #define CG12_SIZE_COLOR24 0x400000 60 61 #define CG12_SIZE_OVERLAY_HR 0x030000 62 #define CG12_SIZE_ENABLE_HR 0x030000 63 #define CG12_SIZE_COLOR8_HR 0x180000 64 #define CG12_SIZE_COLOR24_HR 0x600000 65 66 /* 67 * The "direct port access" register constants. 68 * All HACCESS values include noHSTXY, noHCLIP, and SWAP. 69 */ 70 71 #define CG12_HPAGE_OVERLAY 0x00000700 /* overlay page */ 72 #define CG12_HPAGE_OVERLAY_HR 0x00000e00 73 #define CG12_HACCESS_OVERLAY 0x00000020 /* 1bit/pixel */ 74 #define CG12_PLN_SL_OVERLAY 0x00000017 /* plane 23 */ 75 #define CG12_PLN_WR_OVERLAY 0x00800000 /* write mask */ 76 #define CG12_PLN_RD_OVERLAY 0xffffffff /* read mask */ 77 78 #define CG12_HPAGE_ENABLE 0x00000700 /* overlay page */ 79 #define CG12_HPAGE_ENABLE_HR 0x00000e00 80 #define CG12_HACCESS_ENABLE 0x00000020 /* 1bit/pixel */ 81 #define CG12_PLN_SL_ENABLE 0x00000016 /* plane 22 */ 82 #define CG12_PLN_WR_ENABLE 0x00400000 83 #define CG12_PLN_RD_ENABLE 0xffffffff 84 85 #define CG12_HPAGE_24BIT 0x00000500 /* intensity page */ 86 #define CG12_HPAGE_24BIT_HR 0x00000a00 87 #define CG12_HACCESS_24BIT 0x00000025 /* 32bits/pixel */ 88 #define CG12_PLN_SL_24BIT 0x00000000 /* planes 0-31 */ 89 #define CG12_PLN_WR_24BIT 0x00ffffff 90 #define CG12_PLN_RD_24BIT 0x00ffffff 91 92 #define CG12_HPAGE_8BIT 0x00000500 /* intensity page */ 93 #define CG12_HPAGE_8BIT_HR 0x00000a00 94 #define CG12_HACCESS_8BIT 0x00000023 /* 8bits/pixel */ 95 #define CG12_PLN_SL_8BIT 0x00000000 /* planes 0-7 */ 96 #define CG12_PLN_WR_8BIT 0x00ffffff 97 #define CG12_PLN_RD_8BIT 0x000000ff 98 99 #define CG12_HPAGE_WID 0x00000700 /* overlay page */ 100 #define CG12_HPAGE_WID_HR 0x00000e00 101 #define CG12_HACCESS_WID 0x00000023 /* 8bits/pixel */ 102 #define CG12_PLN_SL_WID 0x00000010 /* planes 16-23 */ 103 #define CG12_PLN_WR_WID 0x003f0000 104 #define CG12_PLN_RD_WID 0x003f0000 105 106 #define CG12_HPAGE_ZBUF 0x00000000 /* depth page */ 107 #define CG12_HPAGE_ZBUF_HR 0x00000000 108 #define CG12_HACCESS_ZBUF 0x00000024 /* 16bits/pixel */ 109 #define CG12_PLN_SL_ZBUF 0x00000060 110 #define CG12_PLN_WR_ZBUF 0xffffffff 111 #define CG12_PLN_RD_ZBUF 0xffffffff 112 113 /* Direct Port Unit */ 114 struct cgtwelve_dpu { 115 u_int32_t r[8]; 116 u_int32_t reload_ctl; 117 u_int32_t reload_stb; 118 u_int32_t alu_ctl; 119 u_int32_t blu_ctl; 120 u_int32_t control; 121 u_int32_t xleft; 122 u_int32_t shift0; 123 u_int32_t shift1; 124 u_int32_t zoom; 125 u_int32_t bsr; 126 u_int32_t color0; 127 u_int32_t color1; 128 u_int32_t compout; 129 u_int32_t pln_rd_msk_host; 130 u_int32_t pln_wr_msk_host; 131 u_int32_t pln_rd_msk_local; 132 u_int32_t pln_wr_msk_local; 133 u_int32_t scis_ctl; 134 u_int32_t csr; 135 u_int32_t pln_reg_sl; 136 u_int32_t pln_sl_host; 137 u_int32_t pln_sl_local0; 138 u_int32_t pln_sl_local1; 139 u_int32_t broadcast; 140 }; 141 142 /* APU */ 143 struct cgtwelve_apu { 144 u_int32_t imsg0; 145 u_int32_t msg0; 146 u_int32_t imsg1; 147 u_int32_t msg1; 148 u_int32_t ien0; 149 u_int32_t ien1; 150 u_int32_t iclear; 151 u_int32_t istatus; 152 u_int32_t cfcnt; 153 u_int32_t cfwptr; 154 u_int32_t cfrptr; 155 u_int32_t cfilev0; 156 u_int32_t cfilev1; 157 u_int32_t rfcnt; 158 u_int32_t rfwptr; 159 u_int32_t rfrptr; 160 u_int32_t rfilev0; 161 u_int32_t rfilev1; 162 u_int32_t size; 163 u_int32_t res0; 164 u_int32_t res1; 165 u_int32_t res2; 166 u_int32_t haccess; 167 u_int32_t hpage; 168 u_int32_t laccess; 169 u_int32_t lpage; 170 u_int32_t maccess; 171 u_int32_t ppage; 172 u_int32_t dwg_ctl; 173 u_int32_t sam; 174 u_int32_t sgn; 175 u_int32_t length; 176 u_int32_t dwg[8]; 177 u_int32_t reload_ctl; 178 u_int32_t reload_stb; 179 u_int32_t c_xleft; 180 u_int32_t c_ytop; 181 u_int32_t c_xright; 182 u_int32_t c_ybot; 183 u_int32_t f_xleft; 184 u_int32_t f_xright; 185 u_int32_t x_dst; 186 u_int32_t y_dst; 187 u_int32_t dst_ctl; 188 u_int32_t morigin; 189 u_int32_t vsg_ctl; 190 u_int32_t h_sync; 191 u_int32_t hblank; 192 u_int32_t v_sync; 193 u_int32_t vblank; 194 u_int32_t vdpyint; 195 u_int32_t vssyncs; 196 u_int32_t hdelays; 197 u_int32_t stdaddr; 198 u_int32_t hpitches; 199 u_int32_t zoom; 200 u_int32_t test; 201 }; 202 203 struct cgtwelve_dac 204 { 205 u_int32_t addr_lo; 206 u_int8_t pad1[0x100 - 4]; 207 u_int32_t addr_hi; 208 u_int8_t pad2[0x100 - 4]; 209 u_int32_t control; 210 u_int8_t pad3[0x100 - 4]; 211 u_int32_t color; 212 u_int8_t pad4[0x100 - 4]; 213 }; 214