ast_vgatool.h revision b534f209
115fb4814Smrg/* 215fb4814Smrg * Copyright (c) 2005 ASPEED Technology Inc. 315fb4814Smrg * 415fb4814Smrg * Permission to use, copy, modify, distribute, and sell this software and its 515fb4814Smrg * documentation for any purpose is hereby granted without fee, provided that 615fb4814Smrg * the above copyright notice appear in all copies and that both that 715fb4814Smrg * copyright notice and this permission notice appear in supporting 815fb4814Smrg * documentation, and that the name of the authors not be used in 915fb4814Smrg * advertising or publicity pertaining to distribution of the software without 1015fb4814Smrg * specific, written prior permission. The authors makes no representations 1115fb4814Smrg * about the suitability of this software for any purpose. It is provided 1215fb4814Smrg * "as is" without express or implied warranty. 1315fb4814Smrg * 1415fb4814Smrg * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1515fb4814Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1615fb4814Smrg * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1715fb4814Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1815fb4814Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 1915fb4814Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2015fb4814Smrg * PERFORMANCE OF THIS SOFTWARE. 2115fb4814Smrg */ 2215fb4814Smrg 2315fb4814Smrg/* VRAM Size Definition */ 2415fb4814Smrg#define VIDEOMEM_SIZE_08M 0x00800000 2515fb4814Smrg#define VIDEOMEM_SIZE_16M 0x01000000 2615fb4814Smrg#define VIDEOMEM_SIZE_32M 0x02000000 2715fb4814Smrg#define VIDEOMEM_SIZE_64M 0x04000000 28de78e416Smrg#define VIDEOMEM_SIZE_128M 0x08000000 29de78e416Smrg 30b534f209Smrg#define DRAM_SIZE_016M 0x01000000 31b534f209Smrg#define DRAM_SIZE_032M 0x02000000 32b534f209Smrg#define DRAM_SIZE_064M 0x04000000 33b534f209Smrg#define DRAM_SIZE_128M 0x08000000 34b534f209Smrg#define DRAM_SIZE_256M 0x10000000 35b534f209Smrg 36de78e416Smrg#define DRAMTYPE_512Mx16 0 37de78e416Smrg#define DRAMTYPE_1Gx16 1 38de78e416Smrg#define DRAMTYPE_512Mx32 2 39de78e416Smrg#define DRAMTYPE_1Gx32 3 40b534f209Smrg#define DRAMTYPE_2Gx16 6 41b534f209Smrg#define DRAMTYPE_4Gx16 7 4215fb4814Smrg 4315fb4814Smrg#define AR_PORT_WRITE (pAST->RelocateIO + 0x40) 4415fb4814Smrg#define MISC_PORT_WRITE (pAST->RelocateIO + 0x42) 4515fb4814Smrg#define SEQ_PORT (pAST->RelocateIO + 0x44) 46b534f209Smrg#define DAC_INDEX_READ (pAST->MMIOVirtualAddr + 0x3c7) 4715fb4814Smrg#define DAC_INDEX_WRITE (pAST->RelocateIO + 0x48) 4815fb4814Smrg#define DAC_DATA (pAST->RelocateIO + 0x49) 4915fb4814Smrg#define GR_PORT (pAST->RelocateIO + 0x4E) 5015fb4814Smrg#define CRTC_PORT (pAST->RelocateIO + 0x54) 5115fb4814Smrg#define INPUT_STATUS1_READ (pAST->RelocateIO + 0x5A) 52de78e416Smrg#define MISC_PORT_READ (pAST->RelocateIO + 0x4C) 5315fb4814Smrg 5415fb4814Smrg#define GetReg(base) inb(base) 5515fb4814Smrg#define SetReg(base,val) outb(base,val) 5615fb4814Smrg#define GetIndexReg(base,index,val) do { \ 5715fb4814Smrg outb(base,index); \ 5815fb4814Smrg val = inb(base+1); \ 5915fb4814Smrg } while (0) 6015fb4814Smrg#define SetIndexReg(base,index, val) do { \ 61de78e416Smrg outw(base, ((USHORT)(val) << 8) | index); \ 62de78e416Smrg } while (0) 6315fb4814Smrg#define GetIndexRegMask(base,index, and, val) do { \ 6415fb4814Smrg outb(base,index); \ 6515fb4814Smrg val = (inb(base+1) & and); \ 6615fb4814Smrg } while (0) 6715fb4814Smrg#define SetIndexRegMask(base,index, and, val) do { \ 6815fb4814Smrg UCHAR __Temp; \ 6915fb4814Smrg outb(base,index); \ 7015fb4814Smrg __Temp = (inb((base)+1)&(and))|(val); \ 7115fb4814Smrg SetIndexReg(base,index,__Temp); \ 7215fb4814Smrg } while (0) 7315fb4814Smrg 74b534f209Smrg#define VGA_GET_PALETTE_INDEX(index, red, green, blue) \ 75b534f209Smrg{ \ 76b534f209Smrg UCHAR __junk; \ 77b534f209Smrg SetReg(DAC_INDEX_READ,(UCHAR)(index)); \ 78b534f209Smrg __junk = GetReg(SEQ_PORT); \ 79b534f209Smrg red = GetReg(DAC_DATA); \ 80b534f209Smrg __junk = GetReg(SEQ_PORT); \ 81b534f209Smrg green = GetReg(DAC_DATA); \ 82b534f209Smrg __junk = GetReg(SEQ_PORT); \ 83b534f209Smrg blue = GetReg(DAC_DATA); \ 84b534f209Smrg __junk = GetReg(SEQ_PORT); \ 85b534f209Smrg} 86b534f209Smrg 8715fb4814Smrg#define VGA_LOAD_PALETTE_INDEX(index, red, green, blue) \ 8815fb4814Smrg{ \ 8915fb4814Smrg UCHAR __junk; \ 9015fb4814Smrg SetReg(DAC_INDEX_WRITE,(UCHAR)(index)); \ 9115fb4814Smrg __junk = GetReg(SEQ_PORT); \ 9215fb4814Smrg SetReg(DAC_DATA,(UCHAR)(red)); \ 9315fb4814Smrg __junk = GetReg(SEQ_PORT); \ 9415fb4814Smrg SetReg(DAC_DATA,(UCHAR)(green)); \ 9515fb4814Smrg __junk = GetReg(SEQ_PORT); \ 9615fb4814Smrg SetReg(DAC_DATA,(UCHAR)(blue)); \ 9715fb4814Smrg __junk = GetReg(SEQ_PORT); \ 9815fb4814Smrg} 99b534f209Smrg 100b534f209Smrg/* Reg. Definition */ 101b534f209Smrg#define AST1180_MEM_BASE 0x40000000 102b534f209Smrg#define AST1180_MMC_BASE 0x80FC8000 103b534f209Smrg#define AST1180_SCU_BASE 0x80FC8200 104b534f209Smrg#define AST1180_GFX_BASE 0x80FC9000 105b534f209Smrg#define AST1180_VIDEO_BASE 0x80FCD000 106b534f209Smrg 107b534f209Smrg/* AST1180 GFX */ 108b534f209Smrg#define AST1180_VGA1_CTRL 0x60 109b534f209Smrg#define AST1180_VGA1_CTRL2 0x64 110b534f209Smrg#define AST1180_VGA1_STATUS 0x68 111b534f209Smrg#define AST1180_VGA1_PLL 0x6C 112b534f209Smrg#define AST1180_VGA1_HTREG 0x70 113b534f209Smrg#define AST1180_VGA1_HRREG 0x74 114b534f209Smrg#define AST1180_VGA1_VTREG 0x78 115b534f209Smrg#define AST1180_VGA1_VRREG 0x7C 116b534f209Smrg#define AST1180_VGA1_STARTADDR 0x80 117b534f209Smrg#define AST1180_VGA1_OFFSET 0x84 118b534f209Smrg#define AST1180_VGA1_THRESHOLD 0x88 119b534f209Smrg 120b534f209Smrg#define AST1180_HWC1_OFFSET 0x90 121b534f209Smrg#define AST1180_HWC1_POSITION 0x94 122b534f209Smrg#define AST1180_HWC1_PATTERNADDR 0x98 123b534f209Smrg 124b534f209Smrg#define CRT_LOW_THRESHOLD_VALUE 0x40 125b534f209Smrg#define CRT_HIGH_THRESHOLD_VALUE 0x7E 126b534f209Smrg 127b534f209Smrg/* GFX Ctrl Reg */ 128b534f209Smrg#define AST1180_ENABLECRT 0x00000001 129b534f209Smrg#define AST1180_ENABLEHWC 0x00000002 130b534f209Smrg#define AST1180_MONOHWC 0x00000000 131b534f209Smrg#define AST1180_ALPHAHWC 0x00000400 132b534f209Smrg#define AST1180_HSYNCOFF 0x00040000 133b534f209Smrg#define AST1180_VSYNCOFF 0x00080000 134b534f209Smrg#define AST1180_VGAOFF 0x00100000 135b534f209Smrg 136b534f209Smrg#define ReadAST1180SOC(addr, data) \ 137b534f209Smrg{ \ 138b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = (addr) & 0xFFFF0000; \ 139b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; \ 140b534f209Smrg data = (*(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF))); \ 141b534f209Smrg} 142b534f209Smrg 143b534f209Smrg#define WriteAST1180SOC(addr, data) \ 144b534f209Smrg{ \ 145b534f209Smrg ULONG temp; \ 146b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = (addr) & 0xFFFF0000; \ 147b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; \ 148b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF)) = (data); \ 149b534f209Smrg temp = *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF)); \ 150b534f209Smrg} 151b534f209Smrg 152b534f209Smrg#define ReadAST1180MEM(addr, data) \ 153b534f209Smrg{ \ 154b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = (addr) & 0xFFFF0000; \ 155b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; \ 156b534f209Smrg data = (*(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF))); \ 157b534f209Smrg} 158b534f209Smrg 159b534f209Smrg#define WriteAST1180MEM(addr, data) \ 160b534f209Smrg{ \ 161b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = (addr) & 0xFFFF0000; \ 162b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; \ 163b534f209Smrg *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF)) = (data); \ 164b534f209Smrg} 165