annotate vidix/s3_regs.h @ 26779:666a63d00be2

Separate install-mencoder and install-mencoder-man targets.
author diego
date Sun, 18 May 2008 16:04:51 +0000
parents 74106358c073
children 5b162ba7cee8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26097
74106358c073 Use MPlayer consistent define naming convention for newly introduce
ben
parents: 26096
diff changeset
1 #ifndef MPLAYER_SAVAGE_REGS_H
74106358c073 Use MPlayer consistent define naming convention for newly introduce
ben
parents: 26096
diff changeset
2 #define MPLAYER_SAVAGE_REGS_H
26096
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
3
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
4 #define S3_SAVAGE3D_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE_MX))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
5 #define S3_SAVAGE4_SERIES(chip) ((chip==S3_SAVAGE4) || (chip==S3_PROSAVAGE))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
6 #define S3_SAVAGE_MOBILE_SERIES(chip) ((chip==S3_SAVAGE_MX) || (chip==S3_SUPERSAVAGE))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
7 #define S3_SAVAGE_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE2000))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
9 /*
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
10 * Chip tags. These are used to group the adapters into
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
11 * related families.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
12 */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
13 enum S3CHIPTAGS {
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
14 S3_UNKNOWN = 0,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
15 S3_TRIO64V,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
16 S3_VIRGE,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
17 S3_SAVAGE3D,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
18 S3_SAVAGE_MX,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
19 S3_SAVAGE4,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
20 S3_PROSAVAGE,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
21 S3_SUPERSAVAGE,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
22 S3_SAVAGE2000,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
23 S3_LAST
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
24 };
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
25
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
26 #define BIOS_BSIZE 1024
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
27 #define BIOS_BASE 0xc0000
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
28
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
29 #define S3_NEWMMIO_REGBASE 0x1000000 /* 16MB */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
30 #define S3_NEWMMIO_REGSIZE 0x0010000 /* 64KB */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
31 #define S3_NEWMMIO_REGSIZE_SAVAGE 0x0080000 /* 512KB */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
32
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
33 #define BASE_FREQ 14.31818
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
34
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
35 /*
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
36 * There are two different streams engines used in the S3 line.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
37 * The old engine is in the Trio64, Virge,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
38 * Savage3D, Savage4, SavagePro, and SavageTwister.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
39 * The new engine is in the Savage2000, SavageMX,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
40 * SavageIX, and SuperSavage.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
41 */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
42
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
43 /* Old engine registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
44 #define PSTREAM_CONTROL_REG 0x8180
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
45 #define COL_CHROMA_KEY_CONTROL_REG 0x8184
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
46 #define SSTREAM_CONTROL_REG 0x8190
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
47 #define CHROMA_KEY_UPPER_BOUND_REG 0x8194
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
48 #define SSTREAM_STRETCH_REG 0x8198
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
49 #define COLOR_ADJUSTMENT_REG 0x819C
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
50 #define BLEND_CONTROL_REG 0x81A0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
51 #define PSTREAM_FBADDR0_REG 0x81C0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
52 #define PSTREAM_FBADDR1_REG 0x81C4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
53 #define PSTREAM_STRIDE_REG 0x81C8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
54 #define DOUBLE_BUFFER_REG 0x81CC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
55 #define SSTREAM_FBADDR0_REG 0x81D0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
56 #define SSTREAM_FBADDR1_REG 0x81D4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
57 #define SSTREAM_STRIDE_REG 0x81D8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
58 #define OPAQUE_OVERLAY_CONTROL_REG 0x81DC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
59 #define K1_VSCALE_REG 0x81E0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
60 #define SSTREAM_VSCALE_REG 0x81E0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
61 #define K2_VSCALE_REG 0x81E4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
62 #define SSTREAM_VINITIAL_REG 0x81E4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
63 #define DDA_VERT_REG 0x81E8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
64 #define SSTREAM_LINES_REG 0x81E8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
65 #define STREAMS_FIFO_REG 0x81EC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
66 #define PSTREAM_WINDOW_START_REG 0x81F0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
67 #define PSTREAM_WINDOW_SIZE_REG 0x81F4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
68 #define SSTREAM_WINDOW_START_REG 0x81F8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
69 #define SSTREAM_WINDOW_SIZE_REG 0x81FC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
70 #define FIFO_CONTROL 0x8200
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
71 #define PSTREAM_FBSIZE_REG 0x8300
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
72 #define SSTREAM_FBSIZE_REG 0x8304
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
73 #define SSTREAM_FBADDR2_REG 0x8308
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
74
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
75 /* New engine registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
76 #define PRI_STREAM_FBUF_ADDR0 0x81c0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
77 #define PRI_STREAM_FBUF_ADDR1 0x81c4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
78 #define PRI_STREAM_STRIDE 0x81c8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
79 #define PRI_STREAM_BUFFERSIZE 0x8214
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
80 #define SEC_STREAM_CKEY_LOW 0x8184
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
81 #define SEC_STREAM_CKEY_UPPER 0x8194
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
82 #define BLEND_CONTROL 0x8190
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
83 #define SEC_STREAM_COLOR_CONVERT1 0x8198
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
84 #define SEC_STREAM_COLOR_CONVERT2 0x819c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
85 #define SEC_STREAM_COLOR_CONVERT3 0x81e4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
86 #define SEC_STREAM_HSCALING 0x81a0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
87 #define SEC_STREAM_BUFFERSIZE 0x81a8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
88 #define SEC_STREAM_HSCALE_NORMALIZE 0x81ac
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
89 #define SEC_STREAM_VSCALING 0x81e8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
90 #define SEC_STREAM_FBUF_ADDR0 0x81d0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
91 #define SEC_STREAM_FBUF_ADDR1 0x81d4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
92 #define SEC_STREAM_FBUF_ADDR2 0x81ec
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
93 #define SEC_STREAM_STRIDE 0x81d8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
94 #define SEC_STREAM_WINDOW_START 0x81f8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
95 #define SEC_STREAM_WINDOW_SZ 0x81fc
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
96 #define SEC_STREAM_TILE_OFF 0x821c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
97 #define SEC_STREAM_OPAQUE_OVERLAY 0x81dc
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
98
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
99 /* Savage 2000 registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
100 #define SEC_STREAM_COLOR_CONVERT0_2000 0x8198
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
101 #define SEC_STREAM_COLOR_CONVERT1_2000 0x819c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
102 #define SEC_STREAM_COLOR_CONVERT2_2000 0x81e0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
103 #define SEC_STREAM_COLOR_CONVERT3_2000 0x81e4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
104
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
105 /* Virge+ registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
106 #define FIFO_CONTROL_REG 0x8200
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
107 #define MIU_CONTROL_REG 0x8204
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
108 #define STREAMS_TIMEOUT_REG 0x8208
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
109 #define MISC_TIMEOUT_REG 0x820c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
110
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
111 /* VGA stuff */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
112 #define vgaCRIndex 0x3d4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
113 #define vgaCRReg 0x3d5
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
114
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
115 /* CRT Control registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
116 #define EXT_MEM_CTRL1 0x53
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
117 #define LIN_ADDR_CTRL 0x58
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
118 #define EXT_MISC_CTRL2 0x67
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
119
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
120 /* Old engine constants */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
121 #define ENABLE_NEWMMIO 0x08
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
122 #define ENABLE_LFB 0x10
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
123 #define ENABLE_STREAMS_OLD 0x0c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
124 #define NO_STREAMS_OLD 0xf3
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
125
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
126 /* New engine constants */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
127 #define ENABLE_STREAM1 0x04
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
128 #define NO_STREAMS 0xF9
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
129
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
130 #define VerticalRetraceWait() \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
131 do { \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
132 VGAIN8(0x3d4); \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
133 VGAOUT8(0x3d4, 0x17); \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
134 if (VGAIN8(0x3d5) & 0x80) { \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
135 int i = 0x10000; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
136 while ((VGAIN8(0x3da) & 0x08) == 0x08 && i--) ; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
137 i = 0x10000; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
138 while ((VGAIN8(0x3da) & 0x08) == 0x00 && i--) ; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
139 } \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
140 } while (0)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
141
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
142 /* Scaling operations */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
143 #define HSCALING_Shift 0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
144 #define HSCALING_Mask (((1L << 16)-1) << HSCALING_Shift)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
145 #define HSCALING(w0,w1) ((((unsigned int)(((double)w0/(double)w1) * (1 << 15))) << HSCALING_Shift) & HSCALING_Mask)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
146
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
147 #define VSCALING_Shift 0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
148 #define VSCALING_Mask (((1L << 20)-1) << VSCALING_Shift)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
149 #define VSCALING(h0,h1) ((((unsigned int) (((double)h0/(double)h1) * (1 << 15))) << VSCALING_Shift) & VSCALING_Mask)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
150
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
151 /* Scaling factors */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
152 #define HDM_SHIFT 16
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
153 #define HDSCALE_4 (2 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
154 #define HDSCALE_8 (3 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
155 #define HDSCALE_16 (4 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
156 #define HDSCALE_32 (5 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
157 #define HDSCALE_64 (6 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
158
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
159 /* Window parameters */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
160 #define OS_XY(x,y) (((x+1)<<16)|(y+1))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
161 #define OS_WH(x,y) (((x-1)<<16)|(y))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
162
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
163 /* PCI stuff */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
164
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
165 /* PCI-Memory IO access macros. */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
166 #define VID_WR08(p,i,val) (((uint8_t *)(p))[(i)]=(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
167 #define VID_RD08(p,i) (((uint8_t *)(p))[(i)])
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
168
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
169 #define VID_WR32(p,i,val) (((uint32_t *)(p))[(i)/4]=(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
170 #define VID_RD32(p,i) (((uint32_t *)(p))[(i)/4])
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
171
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
172 #ifndef USE_RMW_CYCLES
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
173
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
174 /* Can be used to inhibit READ-MODIFY-WRITE cycles. On by default. */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
175 #define MEM_BARRIER() __asm__ __volatile__ ("" : : : "memory")
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
176
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
177 #undef VID_WR08
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
178 #define VID_WR08(p,i,val) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]=(val); })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
179 #undef VID_RD08
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
180 #define VID_RD08(p,i) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]; })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
181
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
182 #undef VID_WR16
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
183 #define VID_WR16(p,i,val) ({ MEM_BARRIER(); ((uint16_t *)(p))[(i)/2]=(val); })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
184 #undef VID_RD16
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
185 #define VID_RD16(p,i) ({ MEM_BARRIER(); ((uint16_t *)(p))[(i)/2]; })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
186
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
187 #undef VID_WR32
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
188 #define VID_WR32(p,i,val) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]=(val); })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
189 #undef VID_RD32
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
190 #define VID_RD32(p,i) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]; })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
191 #endif /* USE_RMW_CYCLES */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
192
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
193 #define VID_AND32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)&(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
194 #define VID_OR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)|(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
195 #define VID_XOR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)^(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
196
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
197 #define VGAIN8(addr) VID_RD08(info->control_base+0x8000, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
198 #define VGAIN16(addr) VID_RD16(info->control_base+0x8000, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
199 #define VGAIN(addr) VID_RD32(info->control_base+0x8000, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
200
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
201 #define VGAOUT8(addr,val) VID_WR08(info->control_base+0x8000, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
202 #define VGAOUT16(addr,val) VID_WR16(info->control_base+0x8000, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
203 #define VGAOUT(addr,val) VID_WR32(info->control_base+0x8000, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
204
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
205 #define INREG(addr) VID_RD32(info->control_base, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
206 #define OUTREG(addr,val) VID_WR32(info->control_base, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
207 #define INREG8(addr) VID_RD08(info->control_base, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
208 #define OUTREG8(addr,val) VID_WR08(info->control_base, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
209 #define INREG16(addr) VID_RD16(info->control_base, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
210 #define OUTREG16(addr,val) VID_WR16(info->control_base, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
211
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
212 #define ALIGN_TO(v, n) (((v) + (n-1)) & ~(n-1))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
213
26097
74106358c073 Use MPlayer consistent define naming convention for newly introduce
ben
parents: 26096
diff changeset
214 #endif /* MPLAYER_S3_REGS_H */