1ab47cfaaSmrg 2aa9e3350Smrg#ifndef S3BCI_H 3aa9e3350Smrg#define S3BCI_H 4ab47cfaaSmrg 5ab47cfaaSmrg 6ab47cfaaSmrg/* BCI Control Register */ 7ab47cfaaSmrg#define S3_BCI_CONTROL 0x816C 8ab47cfaaSmrg 9ab47cfaaSmrg/* 10ab47cfaaSmrg * High 8 bit of primary bitmap descriptor 2 register. 11ab47cfaaSmrg * Bits 25-24: Tile Format 00 = Linear ; 10 = 16 bits; 11 = 32 bits (Savage4) 12ab47cfaaSmrg * 00 = Linear ; 01 = Tile; 10 = Texture tiling format/ Destination Tiling format 13ab47cfaaSmrg * 11 = Reserved/Destination tiling format. 14ab47cfaaSmrg */ 15ab47cfaaSmrg 16ab47cfaaSmrg 17ab47cfaaSmrg#define TILE_LINEAR 0 18ab47cfaaSmrg#define TILE_FORMAT_LINEAR 0 19ab47cfaaSmrg#define TILE_TEXTURE 2 20ab47cfaaSmrg#define TILE_DESTINATION 1 21ab47cfaaSmrg#define TILE_FORMAT_16BPP 2 22ab47cfaaSmrg#define TILE_FORMAT_32BPP 3 23ab47cfaaSmrg 24ab47cfaaSmrg/* BD - BCI enable */ 25ab47cfaaSmrg/* savage4, MX, IX, 3D */ 26ab47cfaaSmrg#define BCI_ENABLE 8 27ab47cfaaSmrg/* twister, prosavage, DDR, supersavage, 2000 */ 28ab47cfaaSmrg#define BCI_ENABLE_TWISTER 0 29ab47cfaaSmrg 30ab47cfaaSmrg#define S3_BIG_ENDIAN 4 31ab47cfaaSmrg#define S3_LITTLE_ENDIAN 0 32ab47cfaaSmrg#define S3_BD64 1 33ab47cfaaSmrg 34ab47cfaaSmrg 35ab47cfaaSmrg 36ab47cfaaSmrg/* Global Bitmap Descriptor */ 37ab47cfaaSmrg#define S3_BCI_GLB_BD_LOW 0x8168 38ab47cfaaSmrg#define S3_BCI_GLB_BD_HIGH 0x816C 39ab47cfaaSmrg 40ab47cfaaSmrg#define REVERSE_BYTE_ORDER32(dword) {\ 41ab47cfaaSmrg unsigned int temp; \ 42ab47cfaaSmrg dword = (temp & 0xFF) << 24; \ 43ab47cfaaSmrg dword |= (temp & 0xFF00) << 8; \ 44ab47cfaaSmrg dword |= (temp & 0xFF0000) >> 8; \ 45ab47cfaaSmrg dword |= (temp & 0xFF000000) >> 24; } 46ab47cfaaSmrg 47ab47cfaaSmrg#define BCI_GET_PTR volatile CARD32 * bci_ptr = (CARD32 *) psav->BciMem 48ab47cfaaSmrg#define BCI_RESET bci_ptr = (CARD32 *) psav->BciMem 49ab47cfaaSmrg 50ab47cfaaSmrg#define BCI_SEND(dw) (*bci_ptr++ = (CARD32)(dw)) 51ab47cfaaSmrg 52ab47cfaaSmrg#define BCI_CMD_NOP 0x40000000 53ab47cfaaSmrg#define BCI_CMD_RECT 0x48000000 54ab47cfaaSmrg#define BCI_CMD_RECT_XP 0x01000000 55ab47cfaaSmrg#define BCI_CMD_RECT_YP 0x02000000 56ab47cfaaSmrg#define BCI_CMD_SCANLINE 0x50000000 57ab47cfaaSmrg#define BCI_CMD_LINE 0x5C000000 58ab47cfaaSmrg#define BCI_CMD_LINE_LAST_PIXEL 0x58000000 59ab47cfaaSmrg#define BCI_CMD_BYTE_TEXT 0x63000000 60ab47cfaaSmrg#define BCI_CMD_NT_BYTE_TEXT 0x67000000 61ab47cfaaSmrg#define BCI_CMD_BIT_TEXT 0x6C000000 62ab47cfaaSmrg#define BCI_CMD_GET_ROP(cmd) (((cmd) >> 16) & 0xFF) 63ab47cfaaSmrg#define BCI_CMD_SET_ROP(cmd, rop) ((cmd) |= ((rop & 0xFF) << 16)) 64ab47cfaaSmrg#define BCI_CMD_SEND_COLOR 0x00008000 65ab47cfaaSmrg 66ab47cfaaSmrg#define BCI_CMD_CLIP_NONE 0x00000000 67ab47cfaaSmrg#define BCI_CMD_CLIP_CURRENT 0x00002000 68ab47cfaaSmrg#define BCI_CMD_CLIP_LR 0x00004000 69ab47cfaaSmrg#define BCI_CMD_CLIP_NEW 0x00006000 70ab47cfaaSmrg 71ab47cfaaSmrg#define BCI_CMD_DEST_GBD 0x00000000 72ab47cfaaSmrg#define BCI_CMD_DEST_PBD 0x00000800 73ab47cfaaSmrg#define BCI_CMD_DEST_PBD_NEW 0x00000C00 74ab47cfaaSmrg#define BCI_CMD_DEST_SBD 0x00001000 75ab47cfaaSmrg#define BCI_CMD_DEST_SBD_NEW 0x00001400 76ab47cfaaSmrg 77ab47cfaaSmrg#define BCI_CMD_SRC_TRANSPARENT 0x00000200 78ab47cfaaSmrg#define BCI_CMD_SRC_SOLID 0x00000000 79ab47cfaaSmrg#define BCI_CMD_SRC_GBD 0x00000020 80ab47cfaaSmrg#define BCI_CMD_SRC_COLOR 0x00000040 81ab47cfaaSmrg#define BCI_CMD_SRC_MONO 0x00000060 82ab47cfaaSmrg#define BCI_CMD_SRC_PBD_COLOR 0x00000080 83ab47cfaaSmrg#define BCI_CMD_SRC_PBD_MONO 0x000000A0 84ab47cfaaSmrg#define BCI_CMD_SRC_PBD_COLOR_NEW 0x000000C0 85ab47cfaaSmrg#define BCI_CMD_SRC_PBD_MONO_NEW 0x000000E0 86ab47cfaaSmrg#define BCI_CMD_SRC_SBD_COLOR 0x00000100 87ab47cfaaSmrg#define BCI_CMD_SRC_SBD_MONO 0x00000120 88ab47cfaaSmrg#define BCI_CMD_SRC_SBD_COLOR_NEW 0x00000140 89ab47cfaaSmrg#define BCI_CMD_SRC_SBD_MONO_NEW 0x00000160 90ab47cfaaSmrg 91ab47cfaaSmrg#define BCI_CMD_PAT_TRANSPARENT 0x00000010 92ab47cfaaSmrg#define BCI_CMD_PAT_NONE 0x00000000 93ab47cfaaSmrg#define BCI_CMD_PAT_COLOR 0x00000002 94ab47cfaaSmrg#define BCI_CMD_PAT_MONO 0x00000003 95ab47cfaaSmrg#define BCI_CMD_PAT_PBD_COLOR 0x00000004 96ab47cfaaSmrg#define BCI_CMD_PAT_PBD_MONO 0x00000005 97ab47cfaaSmrg#define BCI_CMD_PAT_PBD_COLOR_NEW 0x00000006 98ab47cfaaSmrg#define BCI_CMD_PAT_PBD_MONO_NEW 0x00000007 99ab47cfaaSmrg#define BCI_CMD_PAT_SBD_COLOR 0x00000008 100ab47cfaaSmrg#define BCI_CMD_PAT_SBD_MONO 0x00000009 101ab47cfaaSmrg#define BCI_CMD_PAT_SBD_COLOR_NEW 0x0000000A 102ab47cfaaSmrg#define BCI_CMD_PAT_SBD_MONO_NEW 0x0000000B 103ab47cfaaSmrg 104ab47cfaaSmrg#define BCI_BD_BW_DISABLE 0x10000000 105ab47cfaaSmrg#define BCI_BD_TILE_MASK 0x03000000 106ab47cfaaSmrg#define BCI_BD_TILE_NONE 0x00000000 107ab47cfaaSmrg#define BCI_BD_TILE_16 0x02000000 108ab47cfaaSmrg#define BCI_BD_TILE_32 0x03000000 109ab47cfaaSmrg#define BCI_BD_TILE_DESTINATION 0x01000000 110ab47cfaaSmrg 111ab47cfaaSmrg#define BCI_BD_GET_BPP(bd) (((bd) >> 16) & 0xFF) 112ab47cfaaSmrg#define BCI_BD_SET_BPP(bd, bpp) ((bd) |= (((bpp) & 0xFF) << 16)) 113ab47cfaaSmrg#define BCI_BD_GET_STRIDE(bd) ((bd) & 0xFFFF) 114ab47cfaaSmrg#define BCI_BD_SET_STRIDE(bd, st) ((bd) |= ((st) & 0xFFFF)) 115ab47cfaaSmrg 116ab47cfaaSmrg#define BCI_SET_REGISTER 0x96000000 117ab47cfaaSmrg#define BCI_SET_REGISTER_COUNT(count) ((count) << 16) 118ab47cfaaSmrg#define BCI_BITPLANE_WRITE_MASK 0xD7 119ab47cfaaSmrg#define BCI_BITPLANE_READ_MASK 0xD8 120ab47cfaaSmrg#define BCI_GBD_1 0xE0 121ab47cfaaSmrg#define BCI_GBD_2 0xE1 122ab47cfaaSmrg#define BCI_PBD_1 0xE2 123ab47cfaaSmrg#define BCI_PBD_2 0xE3 124ab47cfaaSmrg#define BCI_SBD_1 0xE4 125ab47cfaaSmrg#define BCI_SBD_2 0xE5 126ab47cfaaSmrg 127ab47cfaaSmrg#define BCI_W_H(w, h) ((((h) << 16) | (w)) & 0x0FFF0FFF) 128ab47cfaaSmrg#define BCI_X_Y(x, y) ((((y) << 16) | (x)) & 0x0FFF0FFF) 129ab47cfaaSmrg#define BCI_X_W(x, y) ((((w) << 16) | (x)) & 0x0FFF0FFF) 130ab47cfaaSmrg#define BCI_CLIP_LR(l, r) ((((r) << 16) | (l)) & 0x0FFF0FFF) 131ab47cfaaSmrg#define BCI_CLIP_TL(t, l) ((((t) << 16) | (l)) & 0x0FFF0FFF) 132ab47cfaaSmrg#define BCI_CLIP_BR(b, r) ((((b) << 16) | (r)) & 0x0FFF0FFF) 133ab47cfaaSmrg 134ab47cfaaSmrg#define BCI_LINE_X_Y(x, y) (((y) << 16) | ((x) & 0xFFFF)) 135ab47cfaaSmrg#define BCI_LINE_STEPS(diag, axi) (((axi) << 16) | ((diag) & 0xFFFF)) 136ab47cfaaSmrg#define BCI_LINE_MISC(maj, ym, xp, yp, err) \ 137ab47cfaaSmrg (((maj) & 0x1FFF) | \ 138ab47cfaaSmrg ((ym) ? 1<<13 : 0) | \ 139ab47cfaaSmrg ((xp) ? 1<<14 : 0) | \ 140ab47cfaaSmrg ((yp) ? 1<<15 : 0) | \ 141ab47cfaaSmrg ((err) << 16)) 142ab47cfaaSmrg 143aa9e3350Smrg#endif /* S3BCI_H */ 144