xgi_regs.h revision dfe64dd3
1/* 2 * Copyright 1998,1999 by Alan Hourihane, Wigan, England. 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of Alan Hourihane not be used in 9 * advertising or publicity pertaining to distribution of the software without 10 * specific, written prior permission. Alan Hourihane makes no representations 11 * about the suitability of this software for any purpose. It is provided 12 * "as is" without express or implied warranty. 13 * 14 * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * PERFORMANCE OF THIS SOFTWARE. 21 * 22 * Authors: Alan Hourihane, alanh@fairlite.demon.co.uk 23 * Mike Chapman <mike@paranoia.com>, 24 * Juanjo Santamarta <santamarta@ctv.es>, 25 * Mitani Hiroshi <hmitani@drl.mei.co.jp> 26 * David Thomas <davtom@dream.org.uk>. 27 */ 28 29#ifndef _XGI_REGS_H_ 30#define _XGI_REGS_H_ 31 32/* Jong 02/11/2009; replace inb/outb */ 33#if defined(__arm__) 34#ifndef minb 35#define minb(p) MMIO_IN8(0, (p)) 36#endif 37#ifndef moutb 38#define moutb(p,v) MMIO_OUT8(0, (p),(v)) 39#endif 40#ifndef minw 41#define minw(p) MMIO_IN16(0, (p)) 42#endif 43#ifndef moutw 44#define moutw(p,v) MMIO_OUT16(0, (p)) 45#endif 46#ifndef minl 47#define minl(p) MMIO_IN32(0, (p)) 48#endif 49#ifndef moutl 50#define moutl(p,v) MMIO_OUT32(0, (p), (v)) 51#endif 52 53/* Jong 02/11/2009; replace inb/outb */ 54#define inb(p) minb(p) 55#define outb(p, v) moutb(p, v) 56#endif 57 58#include "vgaHW.h" 59 60#define inXGIREG(base) inb(base) 61#define outXGIREG(base,val) outb(base,val) 62#define orXGIREG(base,val) do { \ 63 unsigned char temp = inb(base); \ 64 outXGIREG(base, temp | (val)); \ 65 } while (0) 66 67#define andXGIREG(base,val) do { \ 68 unsigned char temp = inb(base); \ 69 outXGIREG(base, temp & (val)); \ 70 } while (0) 71 72#define inXGIIDXREG(base,idx,var)\ 73 do { \ 74 outb(base,idx); var=inb((base)+1); \ 75 } while (0) 76 77#define outXGIIDXREG(base,idx,val)\ 78 do { \ 79 outb(base,idx); outb((base)+1,val); \ 80 } while (0) 81 82#define orXGIIDXREG(base,idx,val)\ 83 do { \ 84 unsigned char temp; \ 85 outb(base,idx); \ 86 temp = inb((base)+1)|(val); \ 87 outXGIIDXREG(base,idx,temp); \ 88 } while (0) 89#define andXGIIDXREG(base,idx,and)\ 90 do { \ 91 unsigned char temp; \ 92 outb(base,idx); \ 93 temp = inb((base)+1)&(and); \ 94 outXGIIDXREG(base,idx,temp); \ 95 } while (0) 96#define setXGIIDXREG(base,idx,and,or)\ 97 do { \ 98 unsigned char temp; \ 99 outb(base,idx); \ 100 temp = (inb((base)+1)&(and))|(or); \ 101 outXGIIDXREG(base,idx,temp); \ 102 } while (0) 103 104#define BITMASK(h,l) (((unsigned)(1U << ((h)-(l)+1))-1)<<(l)) 105#define GENMASK(mask) BITMASK(1?mask,0?mask) 106 107#define GETBITS(var,mask) (((var) & GENMASK(mask)) >> (0?mask)) 108/* #define SETBITS(val,mask) ((val) << (0?mask)) */ /* Jong@08032009 */ 109#define SETBIT(n) (1<<(n)) 110 111#define GETBITSTR(val,from,to) ((GETBITS(val,from)) << (0?to)) 112#define SETVARBITS(var,val,from,to)\ 113 (((var)&(~(GENMASK(to)))) | GETBITSTR(val,from,to)) 114 115#define GETVAR8(var) ((var)&0xFF) 116#define SETVAR8(var,val) (var) = GETVAR8(val) 117 118#define VGA_RELIO_BASE 0x380 119 120#define AROFFSET VGA_ATTR_INDEX - VGA_RELIO_BASE 121#define ARROFFSET VGA_ATTR_DATA_R - VGA_RELIO_BASE 122#define GROFFSET VGA_GRAPH_INDEX - VGA_RELIO_BASE 123#define SROFFSET VGA_SEQ_INDEX - VGA_RELIO_BASE 124#define CROFFSET VGA_CRTC_INDEX_OFFSET + VGA_IOBASE_COLOR-VGA_RELIO_BASE 125#define MISCROFFSET VGA_MISC_OUT_R - VGA_RELIO_BASE 126#define MISCWOFFSET VGA_MISC_OUT_W - VGA_RELIO_BASE 127#define COLREGOFFSET 0x48 128#define INPUTSTATOFFSET 0x5A 129#define DACROFFSET VGA_DAC_READ_ADDR - VGA_RELIO_BASE 130#define DACWOFFSET VGA_DAC_WRITE_ADDR - VGA_RELIO_BASE 131#define DACDOFFSET VGA_DAC_DATA - VGA_RELIO_BASE 132#define IS1OFFSET VGA_IOBASE_COLOR - VGA_RELIO_BASE + VGA_IN_STAT_1_OFFSET 133 134#define XGI_IS1 (pXGI->RelIO+IS1OFFSET) 135 136/**********************************************************************/ 137#define IS_BIT_DIAGNOSTIC_RB (3<<4) 138#define IS_BIT_VERT_ACTIVE (1<<3) 139#define IS_BIT_HORZ_NACTIVE (1) 140/**********************************************************************/ 141 142#define XGIARR (pXGI->RelIO+ARROFFSET) 143#define XGIGR (pXGI->RelIO+GROFFSET) 144#define XGISR (pXGI->RelIO+SROFFSET) 145#define XGICR (pXGI->RelIO+CROFFSET) 146#define XGIMISCR (pXGI->RelIO+MISCROFFSET) 147#define XGIMISCW (pXGI->RelIO+MISCWOFFSET) 148#define XGIDACREAD (pXGI->RelIO+DACROFFSET) 149#define XGIDACWRITE (pXGI->RelIO+DACWOFFSET) 150#define XGIDACDATA (pXGI->RelIO+DACDOFFSET) 151#define XGIVIDEO (pXGI->RelIO+0x02) 152#define XGICOLIDX (pXGI->RelIO+COLREGOFFSET) 153#define XGICOLDATA (pXGI->RelIO+COLREGOFFSET+1) 154#define XGIINPSTAT (pXGI->RelIO+INPUTSTATOFFSET) 155#define XGIPART1 (pXGI->RelIO+0x04) 156#define XGIPART2 (pXGI->RelIO+0x10) 157#define XGIPART3 (pXGI->RelIO+0x12) 158#define XGIPART4 (pXGI->RelIO+0x14) 159#define XGIPART5 (pXGI->RelIO+0x16) 160 161 162/* PART1 */ 163#define xgiPART1_FUNCTION 0x00 164#define xgiPART1_THRESHOLD_HIGH 0x01 165#define xgiPART1_THRESHOLD_LOW 0x02 166#define xgiPART1_FIFO_STOP 0x03 167#define xgiPART1_MEM_ADDR_HIGH 0x04 168#define xgiPART1_MEM_ADDR_MID 0x05 169#define xgiPART1_MEM_ADDR_LOW 0x06 170#define xgiPART1_SCR_PITCH_LOW 0x07 171#define xgiPART1_HORZ_TOTAL_LOW 0x08 172#define xgiPART1_SCR_HTOTAL_OVERFLOW 0x09 173#define xgiPART1_HORZ_DISP_END 0x0A 174#define xgiPART1_HORZ_RETRACE_START 0x0B 175#define xgiPART1_HORZ_OVERFLOW 0x0C 176#define xgiPART1_HORZ_RETRACE_END 0x0D 177 178#define xgiPART1_VERT_TOTAL_LOW 0x0E 179#define xgiPART1_VERT_DISP_END 0x0F 180#define xgiPART1_VERT_RETRACE_START 0x10 181#define xgiPART1_VERT_RETRACE_END 0x11 182#define xgiPART1_VERT_OVERFLOW 0x12 183 184/* 2000/04/10 added by jjtseng */ 185/* [VBCTL_000410] */ 186#define xgiPART1_CRT2_FLIP 0x24 187#define xgiPART1_LOWRES_DUALVB_MODE 0x2c 188/* ~jjtseng 2000/04/10 */ 189 190#define xgiPART1_ENABLEWRITE 0x2f 191#define xgiPART1_VERTRETRACE 0x30 192#define xgiPART1_HORZRETRACE 0x33 193 194/* 2005/11/08 added by jjtseng */ 195#define Index_CR_GPIO_Reg1 0x48 196#define Index_CR_GPIO_Reg2 0x49 197#define Index_CR_GPIO_Reg3 0x4a 198 199#define GPIOA_EN (1<<0) 200#define GPIOA_WRITE (1<<0) 201#define GPIOA_READ (1<<7) 202 203#define GPIOA_EN (1<<0) 204#define GPIOA_WRITE (1<<0) 205#define GPIOA_READ (1<<7) 206 207#define GPIOB_EN (1<<1) 208#define GPIOB_WRITE (1<<1) 209#define GPIOB_READ (1<<6) 210 211#define GPIOC_EN (1<<2) 212#define GPIOC_WRITE (1<<2) 213#define GPIOC_READ (1<<5) 214 215#define GPIOD_EN (1<<3) 216#define GPIOD_WRITE (1<<3) 217#define GPIOD_READ (1<<4) 218 219#define GPIOE_EN (1<<4) 220#define GPIOE_WRITE (1<<4) 221#define GPIOE_READ (1<<3) 222 223#define GPIOF_EN (1<<5) 224#define GPIOF_WRITE (1<<5) 225#define GPIOF_READ (1<<2) 226 227#define GPIOG_EN (1<<6) 228#define GPIOG_WRITE (1<<6) 229#define GPIOG_READ (1<<1) 230 231#define GPIOH_EN (1<<7) 232#define GPIOH_WRITE (1<<7) 233#define GPIOH_READ (1<<0) 234 235#define XGIMMIOLONG(offset) *(volatile unsigned long *)(pXGI->IOBase+(offset)) 236#define XGIMMIOSHORT(offset) *(volatile unsigned short *)(pXGI->IOBase+(offset)) 237#define XGIMMIOBYTE(offset) *(volatile unsigned char *)(pXGI->IOBase+(offset)) 238 239#endif /* _XGI_REGS_H_ */ 240