Rev 881 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 881 | Rev 883 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | 5 | ||
Line 6... | Line 6... | ||
6 | typedef struct { float hi, lo; } range; |
6 | typedef struct { float hi, lo; } range; |
Line 7... | Line -... | ||
7 | - | ||
Line 8... | Line 7... | ||
8 | 7 | ||
Line 9... | Line 8... | ||
9 | #define R300_PIO 1 |
8 | |
10 | 9 | ||
Line 121... | Line 120... | ||
121 | int singledac; |
120 | int singledac; |
122 | } RADEONCardInfo; |
121 | } RADEONCardInfo; |
123 | 122 | ||
Line 124... | Line -... | ||
124 | - | ||
125 | 123 | ||
126 | #define RHD_FB_BAR 0 |
124 | #define RHD_FB_BAR 0 |
Line 127... | Line 125... | ||
127 | #define RHD_MMIO_BAR 2 |
125 | #define RHD_MMIO_BAR 2 |
128 | 126 | ||
Line -... | Line 127... | ||
- | 127 | #define RHD_MEM_GART 1 |
|
- | 128 | #define RHD_MEM_FB 2 |
|
- | 129 | ||
- | 130 | #define RADEON_DEFAULT_GART_SIZE 8 /* MB (must be 2^n and > 4MB) */ |
|
- | 131 | #define R300_DEFAULT_GART_SIZE 32 /* MB (for R300 and above) */ |
|
- | 132 | #define RADEON_DEFAULT_RING_SIZE 1 /* MB (must be page aligned) */ |
|
- | 133 | #define RADEON_DEFAULT_BUFFER_SIZE 2 /* MB (must be page aligned) */ |
|
- | 134 | #define RADEON_DEFAULT_GART_TEX_SIZE 1 /* MB (must be page aligned) */ |
|
- | 135 | ||
- | 136 | #define RADEON_DEFAULT_CP_TIMEOUT 100000 /* usecs */ |
|
- | 137 | ||
129 | #define RHD_MEM_GART 1 |
138 | #define RADEON_DEFAULT_PCI_APER_SIZE 32 /* in MB */ |
130 | #define RHD_MEM_FB 2 |
139 | |
131 | 140 | ||
132 | typedef struct RHDRec |
141 | typedef struct RHDRec |
Line 166... | Line 175... | ||
166 | RADEONErrata ChipErrata; |
175 | RADEONErrata ChipErrata; |
167 | 176 | ||
Line 168... | Line 177... | ||
168 | char *chipset; |
177 | char *chipset; |
Line 169... | Line 178... | ||
169 | 178 | ||
170 | int IsIGP; |
179 | Bool IsIGP; |
- | 180 | Bool IsMobility; |
|
Line 171... | Line 181... | ||
171 | int IsMobility; |
181 | Bool HasCRTC2; |
172 | 182 | ||
Line 173... | Line 183... | ||
173 | u32_t bus; |
183 | u32_t bus; |
Line 191... | Line 201... | ||
191 | 201 | ||
Line 192... | Line 202... | ||
192 | u32_t displayWidth; |
202 | u32_t displayWidth; |
193 | u32_t displayHeight; |
203 | u32_t displayHeight; |
Line -... | Line 204... | ||
- | 204 | ||
- | 205 | u32_t gartSize; |
|
- | 206 | ||
- | 207 | u32_t* ringBase; |
|
- | 208 | u32_t ring_rp; |
|
- | 209 | u32_t ring_wp; |
|
- | 210 | u32_t ringSize; |
|
- | 211 | u32_t ring_avail; |
|
- | 212 | ||
- | 213 | u32_t bufSize; |
|
- | 214 | u32_t gartTexSize; |
|
- | 215 | u32_t pciAperSize; |
|
- | 216 | u32_t CPusecTimeout; |
|
194 | 217 | ||
195 | int __xmin; |
218 | int __xmin; |
196 | int __ymin; |
219 | int __ymin; |
197 | int __xmax; |
220 | int __xmax; |
Line 198... | Line 221... | ||
198 | int __ymax; |
221 | int __ymax; |
199 | 222 | ||
200 | u32_t gui_control; |
223 | u32_t gui_control; |
Line 201... | Line -... | ||
201 | u32_t dst_pitch_offset; |
- | |
202 | u32_t surface_cntl; |
- | |
203 | - | ||
Line -... | Line 224... | ||
- | 224 | u32_t dst_pitch_offset; |
|
- | 225 | u32_t surface_cntl; |
|
- | 226 | ||
- | 227 | ||
204 | u32_t *ring_base; |
228 | volatile u32_t host_rp __attribute__ ((aligned (128))); |
- | 229 | ||
- | 230 | volatile u32_t scratch0 __attribute__ ((aligned (128))); |
|
- | 231 | volatile u32_t scratch1; |
|
- | 232 | volatile u32_t scratch2; |
|
- | 233 | volatile u32_t scratch3; |
|
- | 234 | volatile u32_t scratch4; |
|
- | 235 | volatile u32_t scratch5; |
|
205 | u32_t ring_rp; |
236 | volatile u32_t scratch6; |
Line 206... | Line 237... | ||
206 | u32_t ring_wp; |
237 | volatile u32_t scratch7; |
207 | 238 | ||
- | 239 | int RamWidth __attribute__ ((aligned (128))); |
|
208 | int RamWidth; |
240 | Bool IsDDR; |
Line 209... | Line 241... | ||
209 | Bool IsDDR; |
241 | |
Line 249... | Line 281... | ||
249 | # define RADEON_CNTL_PAINT_POLYLINE 0x00009500 |
281 | # define RADEON_CNTL_PAINT_POLYLINE 0x00009500 |
250 | # define RADEON_CNTL_PAINT_MULTI 0x00009A00 |
282 | # define RADEON_CNTL_PAINT_MULTI 0x00009A00 |
Line 251... | Line 283... | ||
251 | 283 | ||
252 | #define CP_PACKET0(reg, n) \ |
284 | #define CP_PACKET0(reg, n) \ |
Line 253... | Line 285... | ||
253 | (RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2)) |
285 | (RADEON_CP_PACKET0 | ((n - 1 ) << 16) | ((reg) >> 2)) |
254 | 286 | ||
Line 255... | Line 287... | ||
255 | #define CP_PACKET1(reg0, reg1) \ |
287 | #define CP_PACKET1(reg0, reg1) \ |
256 | (RADEON_CP_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2)) |
288 | (RADEON_CP_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2)) |
Line 257... | Line 289... | ||
257 | 289 | ||
258 | #define CP_PACKET2() \ |
290 | #define CP_PACKET2() \ |
Line -... | Line 291... | ||
- | 291 | (RADEON_CP_PACKET2) |
|
259 | (RADEON_CP_PACKET2) |
292 | |
260 | 293 | #define CP_PACKET3( pkt, n ) \ |
|
- | 294 | (RADEON_CP_PACKET3 | (pkt) | ((n) << 16)) |
|
- | 295 | ||
- | 296 | ||
- | 297 | #define BEGIN_RING( req ) do { \ |
|
- | 298 | int avail = rhd.ring_rp-rhd.ring_wp; \ |
|
- | 299 | if (avail <=0 ) avail+= 0x4000; \ |
|
- | 300 | if( (req)+128 > avail) \ |
|
- | 301 | { \ |
|
- | 302 | rhd.ring_rp = INREG(RADEON_CP_RB_RPTR); \ |
|
- | 303 | avail = rhd.ring_rp-rhd.ring_wp; \ |
|
- | 304 | if (avail <= 0) avail+= 0x4000; \ |
|
261 | #define CP_PACKET3( pkt, n ) \ |
305 | if( (req)+128 > avail){ \ |
262 | (RADEON_CP_PACKET3 | (pkt) | ((n) << 16)) |
306 | safe_sti(ifl); \ |
Line 263... | Line 307... | ||
263 | 307 | return 0; \ |
|
Line 264... | Line 308... | ||
264 | #define BEGIN_RING( n ) do { \ |
308 | }; \ |
265 | ring = rhd.ring_base; \ |
- | |
266 | write = rhd.ring_wp; \ |
- | |
Line 267... | Line 309... | ||
267 | } while (0) |
309 | } \ |
268 | 310 | ring = &rhd.ringBase[rhd.ring_wp]; \ |
|
269 | #define ADVANCE_RING() |
311 | }while(0); |
270 | 312 | ||
- | 313 | #define ADVANCE_RING() |
|
271 | #define OUT_RING( x ) do { \ |
314 | |
Line 272... | Line 315... | ||
272 | ring[write++] = (x); \ |
315 | #define OUT_RING( x ) *ring++ = (x) |
Line 273... | Line 316... | ||
273 | } while (0) |
316 | |
274 | 317 | #define CP_REG(reg, val) \ |
|
275 | #define OUT_RING_REG(reg, val) \ |
318 | do { \ |
276 | do { \ |
319 | ring[0] = CP_PACKET0((reg), 1); \ |
277 | OUT_RING(CP_PACKET0(reg, 0)); \ |
320 | ring[1] = (val); \ |
278 | OUT_RING(val); \ |
321 | ring+= 2; \ |
279 | } while (0) |
322 | } while (0) |
280 | 323 | ||
281 | #define DRM_MEMORYBARRIER() __asm volatile("lock; addl $0,0(%%esp)" : : : "memory"); |
324 | #define DRM_MEMORYBARRIER() __asm volatile("lock; addl $0,0(%%esp)" : : : "memory"); |
Line 282... | Line 325... | ||
282 | 325 | ||
Line 316... | Line 359... | ||
316 | { |
359 | { |
317 | *(volatile u32_t *)((u8_t *)(rhd.MMIOBase + offset)) = value; |
360 | *(volatile u32_t *)((u8_t *)(rhd.MMIOBase + offset)) = value; |
318 | } |
361 | } |
319 | 362 | ||
Line -... | Line 363... | ||
- | 363 | //#define OUTREG( offset, value) \ |
|
- | 364 | // *(volatile u32_t *)((u8_t *)(rhd.MMIOBase + (u32_t)(offset))) = (u32_t)value |
|
- | 365 | ||
Line 320... | Line 366... | ||
320 | 366 | ||
321 | extern inline u32_t _RHDRegRead(RHDPtr rhdPtr, u16_t offset) |
367 | extern inline u32_t _RHDRegRead(RHDPtr rhdPtr, u16_t offset) |
322 | { |
368 | { |
323 | return *(volatile u32_t *)((u8_t*)(rhdPtr->MMIOBase + offset)); |
369 | return *(volatile u32_t *)((u8_t*)(rhdPtr->MMIOBase + offset)); |
Line 333... | Line 379... | ||
333 | tmp |= (value & mask); |
379 | tmp |= (value & mask); |
334 | OUTREG(offset, tmp); |
380 | OUTREG(offset, tmp); |
335 | }; |
381 | }; |
336 | 382 | ||
Line -... | Line 383... | ||
- | 383 | ||
- | 384 | #define INPLL( addr) RADEONINPLL( addr) |
|
- | 385 | ||
- | 386 | #define OUTPLL( addr, val) RADEONOUTPLL( addr, val) |
|
- | 387 | ||
- | 388 | ||
337 | extern inline void |
389 | extern inline void |
338 | _RHDRegWrite(RHDPtr rhdPtr, u16_t offset, u32_t value) |
390 | _RHDRegWrite(RHDPtr rhdPtr, u16_t offset, u32_t value) |
339 | { |
391 | { |
340 | *(volatile u32_t *)((u8_t *)(rhdPtr->MMIOBase + offset)) = value; |
392 | *(volatile u32_t *)((u8_t *)(rhdPtr->MMIOBase + offset)) = value; |
341 | } |
393 | } |