Annotation of sys/dev/sbus/cgtwelvereg.h, Revision 1.1
1.1 ! nbrk 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: };
CVSweb