annotate vidix/s3_regs.h @ 34809:ea97bcb28df1

Allow direct rendering for non-reference frames in H.264. This might work for other codecs that currently have DR disabled, but H.264 is the only one tested so far.
author reimar
date Mon, 14 May 2012 18:11:24 +0000
parents 0f1b5b68af32
children b11dc6175323
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26972
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
1 /*
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
2 * S3 chipsets registers definition.
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
3 *
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
4 * Copyright (C) 2004 Reza Jelveh
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
5 * Thanks to Alex Deucher for Support
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
6 * Trio/Virge support by Michael Kostylev
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
7 *
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
8 * This file is part of MPlayer.
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
9 *
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
10 * MPlayer is free software; you can redistribute it and/or modify
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
11 * it under the terms of the GNU General Public License as published by
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
13 * (at your option) any later version.
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
14 *
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
15 * MPlayer is distributed in the hope that it will be useful,
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
18 * GNU General Public License for more details.
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
19 *
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
20 * You should have received a copy of the GNU General Public License along
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
21 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
23 */
5b162ba7cee8 vidix s3 headers was missing proper header
ben
parents: 26097
diff changeset
24
26097
74106358c073 Use MPlayer consistent define naming convention for newly introduce
ben
parents: 26096
diff changeset
25 #ifndef MPLAYER_SAVAGE_REGS_H
74106358c073 Use MPlayer consistent define naming convention for newly introduce
ben
parents: 26096
diff changeset
26 #define MPLAYER_SAVAGE_REGS_H
26096
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
27
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
28 #define S3_SAVAGE3D_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE_MX))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
29 #define S3_SAVAGE4_SERIES(chip) ((chip==S3_SAVAGE4) || (chip==S3_PROSAVAGE))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
30 #define S3_SAVAGE_MOBILE_SERIES(chip) ((chip==S3_SAVAGE_MX) || (chip==S3_SUPERSAVAGE))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
31 #define S3_SAVAGE_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE2000))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
32
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27757
diff changeset
33 /*
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27757
diff changeset
34 * Chip tags. These are used to group the adapters into
26096
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
35 * related families.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
36 */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
37 enum S3CHIPTAGS {
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
38 S3_UNKNOWN = 0,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
39 S3_TRIO64V,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
40 S3_VIRGE,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
41 S3_SAVAGE3D,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
42 S3_SAVAGE_MX,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
43 S3_SAVAGE4,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
44 S3_PROSAVAGE,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
45 S3_SUPERSAVAGE,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
46 S3_SAVAGE2000,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
47 S3_LAST
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
48 };
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
49
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
50 #define BIOS_BSIZE 1024
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
51 #define BIOS_BASE 0xc0000
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
52
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
53 #define S3_NEWMMIO_REGBASE 0x1000000 /* 16MB */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
54 #define S3_NEWMMIO_REGSIZE 0x0010000 /* 64KB */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
55 #define S3_NEWMMIO_REGSIZE_SAVAGE 0x0080000 /* 512KB */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
56
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27757
diff changeset
57 #define BASE_FREQ 14.31818
26096
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
58
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
59 /*
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
60 * There are two different streams engines used in the S3 line.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
61 * The old engine is in the Trio64, Virge,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
62 * Savage3D, Savage4, SavagePro, and SavageTwister.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
63 * The new engine is in the Savage2000, SavageMX,
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
64 * SavageIX, and SuperSavage.
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
65 */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
66
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
67 /* Old engine registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
68 #define PSTREAM_CONTROL_REG 0x8180
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
69 #define COL_CHROMA_KEY_CONTROL_REG 0x8184
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
70 #define SSTREAM_CONTROL_REG 0x8190
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
71 #define CHROMA_KEY_UPPER_BOUND_REG 0x8194
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
72 #define SSTREAM_STRETCH_REG 0x8198
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
73 #define COLOR_ADJUSTMENT_REG 0x819C
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
74 #define BLEND_CONTROL_REG 0x81A0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
75 #define PSTREAM_FBADDR0_REG 0x81C0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
76 #define PSTREAM_FBADDR1_REG 0x81C4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
77 #define PSTREAM_STRIDE_REG 0x81C8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
78 #define DOUBLE_BUFFER_REG 0x81CC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
79 #define SSTREAM_FBADDR0_REG 0x81D0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
80 #define SSTREAM_FBADDR1_REG 0x81D4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
81 #define SSTREAM_STRIDE_REG 0x81D8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
82 #define OPAQUE_OVERLAY_CONTROL_REG 0x81DC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
83 #define K1_VSCALE_REG 0x81E0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
84 #define SSTREAM_VSCALE_REG 0x81E0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
85 #define K2_VSCALE_REG 0x81E4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
86 #define SSTREAM_VINITIAL_REG 0x81E4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
87 #define DDA_VERT_REG 0x81E8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
88 #define SSTREAM_LINES_REG 0x81E8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
89 #define STREAMS_FIFO_REG 0x81EC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
90 #define PSTREAM_WINDOW_START_REG 0x81F0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
91 #define PSTREAM_WINDOW_SIZE_REG 0x81F4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
92 #define SSTREAM_WINDOW_START_REG 0x81F8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
93 #define SSTREAM_WINDOW_SIZE_REG 0x81FC
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
94 #define FIFO_CONTROL 0x8200
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
95 #define PSTREAM_FBSIZE_REG 0x8300
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
96 #define SSTREAM_FBSIZE_REG 0x8304
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
97 #define SSTREAM_FBADDR2_REG 0x8308
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
98
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
99 /* New engine registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
100 #define PRI_STREAM_FBUF_ADDR0 0x81c0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
101 #define PRI_STREAM_FBUF_ADDR1 0x81c4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
102 #define PRI_STREAM_STRIDE 0x81c8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
103 #define PRI_STREAM_BUFFERSIZE 0x8214
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
104 #define SEC_STREAM_CKEY_LOW 0x8184
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
105 #define SEC_STREAM_CKEY_UPPER 0x8194
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
106 #define BLEND_CONTROL 0x8190
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
107 #define SEC_STREAM_COLOR_CONVERT1 0x8198
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
108 #define SEC_STREAM_COLOR_CONVERT2 0x819c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
109 #define SEC_STREAM_COLOR_CONVERT3 0x81e4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
110 #define SEC_STREAM_HSCALING 0x81a0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
111 #define SEC_STREAM_BUFFERSIZE 0x81a8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
112 #define SEC_STREAM_HSCALE_NORMALIZE 0x81ac
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
113 #define SEC_STREAM_VSCALING 0x81e8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
114 #define SEC_STREAM_FBUF_ADDR0 0x81d0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
115 #define SEC_STREAM_FBUF_ADDR1 0x81d4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
116 #define SEC_STREAM_FBUF_ADDR2 0x81ec
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
117 #define SEC_STREAM_STRIDE 0x81d8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
118 #define SEC_STREAM_WINDOW_START 0x81f8
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
119 #define SEC_STREAM_WINDOW_SZ 0x81fc
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
120 #define SEC_STREAM_TILE_OFF 0x821c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
121 #define SEC_STREAM_OPAQUE_OVERLAY 0x81dc
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
122
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
123 /* Savage 2000 registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
124 #define SEC_STREAM_COLOR_CONVERT0_2000 0x8198
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
125 #define SEC_STREAM_COLOR_CONVERT1_2000 0x819c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
126 #define SEC_STREAM_COLOR_CONVERT2_2000 0x81e0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
127 #define SEC_STREAM_COLOR_CONVERT3_2000 0x81e4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
128
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
129 /* Virge+ registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
130 #define FIFO_CONTROL_REG 0x8200
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
131 #define MIU_CONTROL_REG 0x8204
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
132 #define STREAMS_TIMEOUT_REG 0x8208
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
133 #define MISC_TIMEOUT_REG 0x820c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
134
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
135 /* VGA stuff */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
136 #define vgaCRIndex 0x3d4
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
137 #define vgaCRReg 0x3d5
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
138
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
139 /* CRT Control registers */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
140 #define EXT_MEM_CTRL1 0x53
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
141 #define LIN_ADDR_CTRL 0x58
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
142 #define EXT_MISC_CTRL2 0x67
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
143
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
144 /* Old engine constants */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
145 #define ENABLE_NEWMMIO 0x08
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
146 #define ENABLE_LFB 0x10
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
147 #define ENABLE_STREAMS_OLD 0x0c
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
148 #define NO_STREAMS_OLD 0xf3
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
149
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
150 /* New engine constants */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
151 #define ENABLE_STREAM1 0x04
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
152 #define NO_STREAMS 0xF9
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
153
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
154 #define VerticalRetraceWait() \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
155 do { \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
156 VGAIN8(0x3d4); \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
157 VGAOUT8(0x3d4, 0x17); \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
158 if (VGAIN8(0x3d5) & 0x80) { \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
159 int i = 0x10000; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
160 while ((VGAIN8(0x3da) & 0x08) == 0x08 && i--) ; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
161 i = 0x10000; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
162 while ((VGAIN8(0x3da) & 0x08) == 0x00 && i--) ; \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
163 } \
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
164 } while (0)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
165
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
166 /* Scaling operations */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
167 #define HSCALING_Shift 0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
168 #define HSCALING_Mask (((1L << 16)-1) << HSCALING_Shift)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
169 #define HSCALING(w0,w1) ((((unsigned int)(((double)w0/(double)w1) * (1 << 15))) << HSCALING_Shift) & HSCALING_Mask)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27757
diff changeset
170
26096
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
171 #define VSCALING_Shift 0
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
172 #define VSCALING_Mask (((1L << 20)-1) << VSCALING_Shift)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
173 #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
174
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
175 /* Scaling factors */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
176 #define HDM_SHIFT 16
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
177 #define HDSCALE_4 (2 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
178 #define HDSCALE_8 (3 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
179 #define HDSCALE_16 (4 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
180 #define HDSCALE_32 (5 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
181 #define HDSCALE_64 (6 << HDM_SHIFT)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
182
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
183 /* Window parameters */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
184 #define OS_XY(x,y) (((x+1)<<16)|(y+1))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
185 #define OS_WH(x,y) (((x-1)<<16)|(y))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
186
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
187 /* PCI stuff */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
188
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
189 /* PCI-Memory IO access macros. */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
190 #define VID_WR08(p,i,val) (((uint8_t *)(p))[(i)]=(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
191 #define VID_RD08(p,i) (((uint8_t *)(p))[(i)])
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
192
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
193 #define VID_WR32(p,i,val) (((uint32_t *)(p))[(i)/4]=(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
194 #define VID_RD32(p,i) (((uint32_t *)(p))[(i)/4])
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
195
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
196 #ifndef USE_RMW_CYCLES
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
197
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
198 /* Can be used to inhibit READ-MODIFY-WRITE cycles. On by default. */
27757
b5a46071062a Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
diego
parents: 26972
diff changeset
199 #define MEM_BARRIER() __asm__ volatile ("" : : : "memory")
26096
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
200
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
201 #undef VID_WR08
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
202 #define VID_WR08(p,i,val) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]=(val); })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
203 #undef VID_RD08
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
204 #define VID_RD08(p,i) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]; })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
205
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
206 #undef VID_WR16
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
207 #define VID_WR16(p,i,val) ({ MEM_BARRIER(); ((uint16_t *)(p))[(i)/2]=(val); })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
208 #undef VID_RD16
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
209 #define VID_RD16(p,i) ({ MEM_BARRIER(); ((uint16_t *)(p))[(i)/2]; })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
210
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
211 #undef VID_WR32
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
212 #define VID_WR32(p,i,val) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]=(val); })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
213 #undef VID_RD32
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
214 #define VID_RD32(p,i) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]; })
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
215 #endif /* USE_RMW_CYCLES */
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
216
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
217 #define VID_AND32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)&(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
218 #define VID_OR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)|(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
219 #define VID_XOR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)^(val))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
220
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
221 #define VGAIN8(addr) VID_RD08(info->control_base+0x8000, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
222 #define VGAIN16(addr) VID_RD16(info->control_base+0x8000, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
223 #define VGAIN(addr) VID_RD32(info->control_base+0x8000, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
224
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
225 #define VGAOUT8(addr,val) VID_WR08(info->control_base+0x8000, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
226 #define VGAOUT16(addr,val) VID_WR16(info->control_base+0x8000, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
227 #define VGAOUT(addr,val) VID_WR32(info->control_base+0x8000, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
228
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
229 #define INREG(addr) VID_RD32(info->control_base, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
230 #define OUTREG(addr,val) VID_WR32(info->control_base, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
231 #define INREG8(addr) VID_RD08(info->control_base, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
232 #define OUTREG8(addr,val) VID_WR08(info->control_base, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
233 #define INREG16(addr) VID_RD16(info->control_base, addr)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
234 #define OUTREG16(addr,val) VID_WR16(info->control_base, addr, val)
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
235
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
236 #define ALIGN_TO(v, n) (((v) + (n-1)) & ~(n-1))
e6a565ec1a3b New S3 VIDIX driver.
ben
parents:
diff changeset
237
26097
74106358c073 Use MPlayer consistent define naming convention for newly introduce
ben
parents: 26096
diff changeset
238 #endif /* MPLAYER_S3_REGS_H */