153e90a53Smrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/imstt/imstt_reg.h,v 1.5 2002/08/06 19:57:30 herrb Exp $ */ 253e90a53Smrg 353e90a53Smrg#ifndef _IMSTT_REG_H 453e90a53Smrg#define _IMSTT_REG_H 553e90a53Smrg 653e90a53Smrg 753e90a53Smrg 853e90a53Smrg#if defined(__powerpc__) 953e90a53Smrg 1053e90a53Smrgstatic __inline__ void regw(unsigned long base_addr, unsigned long regindex, unsigned long regdata) 1153e90a53Smrg{ 1253e90a53Smrg __asm__ __volatile__ ("stwbrx %1,%2,%3; eieio" 1353e90a53Smrg : "=m" (*(volatile unsigned *)(base_addr+regindex)) 1453e90a53Smrg : "r" (regdata), "b" (regindex), "r" (base_addr)); 1553e90a53Smrg} 1653e90a53Smrg 1753e90a53Smrg 1853e90a53Smrgstatic __inline__ unsigned long regr(unsigned long base_addr, unsigned long regindex) 1953e90a53Smrg{ 2053e90a53Smrg register unsigned long val; 2153e90a53Smrg 2253e90a53Smrg __asm__ __volatile__ ("lwbrx %0,%1,%2; eieio" 2353e90a53Smrg : "=r" (val) 2453e90a53Smrg : "b" (regindex), "r" (base_addr), 2553e90a53Smrg "m" (*(volatile unsigned *)(base_addr+regindex))); 2653e90a53Smrg 2753e90a53Smrg return (val); 2853e90a53Smrg} 2953e90a53Smrg 3053e90a53Smrg 3153e90a53Smrg#define INREG(addr) regr(((unsigned long)(iptr->MMIOBase)), (addr)) 3253e90a53Smrg#define OUTREG(addr, val) regw(((unsigned long)(iptr->MMIOBase)), (addr), (val)) 3353e90a53Smrg 3453e90a53Smrg#else 3553e90a53Smrg 3653e90a53Smrg#define INREG(addr) MMIO_IN32(iptr->MMIOBase, addr) 3753e90a53Smrg#define OUTREG(addr, val) MMIO_OUT32(iptr->MMIOBase, addr, val) 3853e90a53Smrg 3953e90a53Smrg#endif 4053e90a53Smrg 4153e90a53Smrg#define OUTREGPI(addr, val) iptr->CMAPBase[IBM624_PIDXLO] = addr; eieio(); \ 4253e90a53Smrg iptr->CMAPBase[IBM624_PIDXDATA] = val; eieio() 4353e90a53Smrg#define OUTREGPT(addr, val) iptr->CMAPBase[TVP_ADDRW] = addr; eieio(); \ 4453e90a53Smrg iptr->CMAPBase[TVP_IDATA] = val; eieio() 4553e90a53Smrg 4653e90a53Smrg#define IMSTTMMIO_VARS() \ 4753e90a53Smrg unsigned long *IMSTTMMIO = IMSTTPTR(pScrn)->MMIOBase 4853e90a53Smrg 4953e90a53Smrg 5053e90a53Smrg/* TwinTurbo (Cosmo) registers */ 5153e90a53Smrg 5253e90a53Smrg#define IMSTT_S1SA 0x00 5353e90a53Smrg#define IMSTT_S2SA 0x04 5453e90a53Smrg#define IMSTT_SP 0x08 5553e90a53Smrg#define IMSTT_DSA 0x0c 5653e90a53Smrg#define IMSTT_CNT 0x10 5753e90a53Smrg#define IMSTT_DP_OCTL 0x14 5853e90a53Smrg#define IMSTT_CLR 0x18 5953e90a53Smrg#define IMSTT_BI 0x20 6053e90a53Smrg#define IMSTT_MBC 0x24 6153e90a53Smrg#define IMSTT_BLTCTL 0x28 6253e90a53Smrg 6353e90a53Smrg/* scan timing generator registers */ 6453e90a53Smrg 6553e90a53Smrg#define IMSTT_HES 0x30 6653e90a53Smrg#define IMSTT_HEB 0x34 6753e90a53Smrg#define IMSTT_HSB 0x38 6853e90a53Smrg#define IMSTT_HT 0x3c 6953e90a53Smrg#define IMSTT_VES 0x40 7053e90a53Smrg#define IMSTT_VEB 0x44 7153e90a53Smrg#define IMSTT_VSB 0x48 7253e90a53Smrg#define IMSTT_VT 0x4c 7353e90a53Smrg#define IMSTT_HCIV 0x50 7453e90a53Smrg#define IMSTT_VCIV 0x54 7553e90a53Smrg#define IMSTT_TCDR 0x58 7653e90a53Smrg#define IMSTT_VIL 0x5c 7753e90a53Smrg#define IMSTT_STGCTL 0x60 7853e90a53Smrg 7953e90a53Smrg/* screen refresh generator registers */ 8053e90a53Smrg 8153e90a53Smrg#define IMSTT_SSR 0x64 8253e90a53Smrg#define IMSTT_HRIR 0x68 8353e90a53Smrg#define IMSTT_SPR 0x6c 8453e90a53Smrg#define IMSTT_CMR 0x70 8553e90a53Smrg#define IMSTT_SRGCTL 0x74 8653e90a53Smrg 8753e90a53Smrg/* RAM refresh generator registers */ 8853e90a53Smrg 8953e90a53Smrg#define IMSTT_RRCIV 0x78 9053e90a53Smrg#define IMSTT_RRSC 0x7c 9153e90a53Smrg#define IMSTT_RRCR 0x88 9253e90a53Smrg 9353e90a53Smrg/* system registers */ 9453e90a53Smrg 9553e90a53Smrg#define IMSTT_GIOE 0x80 9653e90a53Smrg#define IMSTT_GIO 0x84 9753e90a53Smrg#define IMSTT_SCR 0x8c 9853e90a53Smrg#define IMSTT_SSTATUS 0x90 9953e90a53Smrg#define IMSTT_PRC 0x94 10053e90a53Smrg 10153e90a53Smrg 10253e90a53Smrg/* IBM 624 RAMDAC direct registers */ 10353e90a53Smrg 10453e90a53Smrg#define IBM624_PADDRW 0x00 10553e90a53Smrg#define IBM624_PDATA 0x04 10653e90a53Smrg#define IBM624_PPMASK 0x08 10753e90a53Smrg#define IBM624_PADDRR 0x0c 10853e90a53Smrg#define IBM624_PIDXLO 0x10 10953e90a53Smrg#define IBM624_PIDXHI 0x14 11053e90a53Smrg#define IBM624_PIDXDATA 0x18 11153e90a53Smrg#define IBM624_PIDXCTL 0x1c 11253e90a53Smrg 11353e90a53Smrg/* IBM 624 RAMDAC indirect registers */ 11453e90a53Smrg 11553e90a53Smrg#define IBM624_CLKCTL 0x02 /* Misc Clock Control */ 11653e90a53Smrg#define IBM624_SYNCCTL 0x03 /* Sync Control */ 11753e90a53Smrg#define IBM624_HSYNCPOS 0x04 /* Horiz Sync Position */ 11853e90a53Smrg#define IBM624_PWRMNGMT 0x05 /* Power Management */ 11953e90a53Smrg#define IBM624_DACOP 0x06 /* DAC Operation */ 12053e90a53Smrg#define IBM624_PALETCTL 0x07 /* Palette Control */ 12153e90a53Smrg#define IBM624_SYSCLKCTL 0x08 /* System Clock Control */ 12253e90a53Smrg#define IBM624_PIXFMT 0x0a /* Pixel Format [bpp >> 3 + 2] */ 12353e90a53Smrg#define IBM624_BPP8 0x0b /* 8bpp */ 12453e90a53Smrg#define IBM624_BPP16 0x0c /* 16bpp */ 12553e90a53Smrg#define IBM624_BPP24 0x0d /* 24bpp */ 12653e90a53Smrg#define IBM624_BPP32 0x0e /* 32bpp */ 12753e90a53Smrg#define IBM624_PIXCTL1 0x10 /* Pixel PLL Control 1 */ 12853e90a53Smrg#define IBM624_PIXCTL2 0x11 /* Pixel PLL Control 2 */ 12953e90a53Smrg#define IBM624_SYSCLKN 0x15 /* System Clock N */ 13053e90a53Smrg#define IBM624_SYSCLKM 0x16 /* System Clock M */ 13153e90a53Smrg#define IBM624_SYSCLKP 0x17 /* System Clock P */ 13253e90a53Smrg#define IBM624_SYSCLKC 0x18 /* System Clock C */ 13353e90a53Smrg#define IBM624_PIXM0 0x20 /* Pixel M 0 */ 13453e90a53Smrg#define IBM624_PIXN0 0x21 /* Pixel N 0 */ 13553e90a53Smrg#define IBM624_PIXP0 0x22 /* Pixel P 0 */ 13653e90a53Smrg#define IBM624_PIXC0 0x23 /* Pixel C 0 */ 13753e90a53Smrg#define IBM624_CURSCTL 0x30 /* Cursor Control */ 13853e90a53Smrg#define IBM624_CURSXLO 0x31 /* Cursor X position, low 8 bits */ 13953e90a53Smrg#define IBM624_CURSXHI 0x32 /* Cursor X position, high 8 bits */ 14053e90a53Smrg#define IBM624_CURSYLO 0x33 /* Cursor Y position, low 8 bits */ 14153e90a53Smrg#define IBM624_CURSYHI 0x34 /* Cursor Y postition, high 8 bits */ 14253e90a53Smrg#define IBM624_CURSHOTX 0x35 /* Cursor Hot Spot X */ 14353e90a53Smrg#define IBM624_CURSHOTY 0x36 /* Cursor Hot Spot Y */ 14453e90a53Smrg#define IBM624_CURSACCTL 0x37 /* Advanced Cursor Control Enable */ 14553e90a53Smrg#define IBM624_CURSACATTR 0x38 /* Advanced Cursor Attribute */ 14653e90a53Smrg#define IBM624_CURS1R 0x40 /* Cursor 1 red */ 14753e90a53Smrg#define IBM624_CURS1G 0x41 /* Cursor 1 green */ 14853e90a53Smrg#define IBM624_CURS1B 0x42 /* Cursor 1 blue */ 14953e90a53Smrg#define IBM624_CURS2R 0x43 /* Cursor 2 red */ 15053e90a53Smrg#define IBM624_CURS2G 0x44 /* Cursor 2 green */ 15153e90a53Smrg#define IBM624_CURS2B 0x45 /* Cursor 2 blue */ 15253e90a53Smrg#define IBM624_CURS3R 0x46 /* Cursor 3 red */ 15353e90a53Smrg#define IBM624_CURS3G 0x47 /* Cursor 3 green */ 15453e90a53Smrg#define IBM624_CURS3B 0x48 /* Cursor 3 blue */ 15553e90a53Smrg#define IBM624_BORDR 0x60 /* Border color red */ 15653e90a53Smrg#define IBM624_BORDG 0x61 /* Border color green */ 15753e90a53Smrg#define IBM624_BORDB 0x62 /* Border color blue */ 15853e90a53Smrg#define IBM624_MISCTL1 0x70 /* Misc control 1 */ 15953e90a53Smrg#define IBM624_MISCTL2 0x71 /* Misc control 2 */ 16053e90a53Smrg#define IBM624_MISCTL3 0x72 /* Misc control 3 */ 16153e90a53Smrg#define IBM624_KEYCTL 0x78 /* Key Control/DB operation */ 16253e90a53Smrg 16353e90a53Smrg/* TI TVP 3030 RAMDAC direct registers */ 16453e90a53Smrg 16553e90a53Smrg#define TVP_ADDRW 0x00 16653e90a53Smrg#define TVP_PDATA 0x04 16753e90a53Smrg#define TVP_PMASK 0x08 16853e90a53Smrg#define TVP_PADRR 0x0c 16953e90a53Smrg#define TVP_CADRW 0x10 17053e90a53Smrg#define TVP_CDATA 0x14 17153e90a53Smrg#define TVP_CADRR 0x1c 17253e90a53Smrg#define TVP_DCCTL 0x24 17353e90a53Smrg#define TVP_IDATA 0x28 17453e90a53Smrg#define TVP_CRDAT 0x2c 17553e90a53Smrg#define TVP_CXPOL 0x30 17653e90a53Smrg#define TVP_CXPOH 0x34 17753e90a53Smrg#define TVP_CYPOL 0x38 17853e90a53Smrg#define TVP_CYPOH 0x3c 17953e90a53Smrg 18053e90a53Smrg/* TI TVP 3030 RAMDAC indirect registers */ 18153e90a53Smrg 18253e90a53Smrg 18353e90a53Smrg#define TVP_IRREV 0x01 18453e90a53Smrg#define TVP_IRICC 0x06 18553e90a53Smrg#define TVP_IRBRC 0x07 18653e90a53Smrg#define TVP_IRLAC 0x0f 18753e90a53Smrg#define TVP_IRTCC 0x18 18853e90a53Smrg#define TVP_IRMXC 0x19 18953e90a53Smrg#define TVP_IRCLS 0x1a 19053e90a53Smrg#define TVP_IRPPG 0x1c 19153e90a53Smrg#define TVP_IRGEC 0x1d 19253e90a53Smrg#define TVP_IRMIC 0x1e 19353e90a53Smrg#define TVP_IRPLA 0x2c 19453e90a53Smrg#define TVP_IRPPD 0x2d 19553e90a53Smrg#define TVP_IRMPD 0x2e 19653e90a53Smrg#define TVP_IRLPD 0x2f 19753e90a53Smrg#define TVP_IRCKL 0x30 19853e90a53Smrg#define TVP_IRCKH 0x31 19953e90a53Smrg#define TVP_IRCRL 0x32 20053e90a53Smrg#define TVP_IRCRH 0x33 20153e90a53Smrg#define TVP_IRCGL 0x34 20253e90a53Smrg#define TVP_IRCGH 0x35 20353e90a53Smrg#define TVP_IRCBL 0x36 20453e90a53Smrg#define TVP_IRCBH 0x37 20553e90a53Smrg#define TVP_IRCKC 0x38 20653e90a53Smrg#define TVP_IRMLC 0x39 20753e90a53Smrg#define TVP_IRSEN 0x3a 20853e90a53Smrg#define TVP_IRTMD 0x3b 20953e90a53Smrg#define TVP_IRRML 0x3c 21053e90a53Smrg#define TVP_IRRMM 0x3d 21153e90a53Smrg#define TVP_IRRMS 0x3e 21253e90a53Smrg#define TVP_IRDID 0x3f 21353e90a53Smrg#define TVP_IRRES 0xff 21453e90a53Smrg 21553e90a53Smrg#endif /* _IMSTT_REG_H */ 216