Rev 1125 | Rev 1129 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1125 | Rev 1128 | ||
---|---|---|---|
Line 237... | Line 237... | ||
237 | 237 | ||
238 | rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); |
238 | rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); |
239 | rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0); |
239 | rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0); |
Line 240... | Line -... | ||
240 | } |
- | |
241 | - | ||
242 | /* |
- | |
243 | * Global GPU functions |
- | |
244 | */ |
- | |
245 | void rs600_disable_vga(struct radeon_device *rdev) |
- | |
246 | { |
- | |
247 | unsigned tmp; |
- | |
248 | dbgprintf("%s\n",__FUNCTION__); |
- | |
249 | - | ||
250 | WREG32(0x330, 0); |
- | |
251 | WREG32(0x338, 0); |
- | |
252 | tmp = RREG32(0x300); |
- | |
253 | tmp &= ~(3 << 16); |
- | |
254 | WREG32(0x300, tmp); |
- | |
255 | WREG32(0x308, (1 << 8)); |
- | |
256 | WREG32(0x310, rdev->mc.vram_location); |
- | |
257 | WREG32(0x594, 0); |
- | |
258 | } |
- | |
259 | - | ||
260 | - | ||
261 | void r420_pipes_init(struct radeon_device *rdev) |
- | |
262 | { |
- | |
263 | unsigned tmp; |
- | |
264 | unsigned gb_pipe_select; |
- | |
265 | unsigned num_pipes; |
- | |
266 | - | ||
267 | dbgprintf("%s\n",__FUNCTION__); |
- | |
268 | - | ||
269 | /* GA_ENHANCE workaround TCL deadlock issue */ |
- | |
270 | WREG32(0x4274, (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)); |
- | |
271 | /* get max number of pipes */ |
- | |
272 | gb_pipe_select = RREG32(0x402C); |
- | |
273 | num_pipes = ((gb_pipe_select >> 12) & 3) + 1; |
- | |
274 | rdev->num_gb_pipes = num_pipes; |
- | |
275 | tmp = 0; |
- | |
276 | switch (num_pipes) { |
- | |
277 | default: |
- | |
278 | /* force to 1 pipe */ |
- | |
279 | num_pipes = 1; |
- | |
280 | case 1: |
- | |
281 | tmp = (0 << 1); |
- | |
282 | break; |
- | |
283 | case 2: |
- | |
284 | tmp = (3 << 1); |
- | |
285 | break; |
- | |
286 | case 3: |
- | |
287 | tmp = (6 << 1); |
- | |
288 | break; |
- | |
289 | case 4: |
- | |
290 | tmp = (7 << 1); |
- | |
291 | break; |
- | |
292 | } |
- | |
293 | WREG32(0x42C8, (1 << num_pipes) - 1); |
- | |
294 | /* Sub pixel 1/12 so we can have 4K rendering according to doc */ |
- | |
295 | tmp |= (1 << 4) | (1 << 0); |
- | |
296 | WREG32(0x4018, tmp); |
- | |
297 | if (r100_gui_wait_for_idle(rdev)) { |
- | |
298 | printk(KERN_WARNING "Failed to wait GUI idle while " |
- | |
299 | "programming pipes. Bad things might happen.\n"); |
- | |
300 | } |
- | |
301 | - | ||
302 | tmp = RREG32(0x170C); |
- | |
303 | WREG32(0x170C, tmp | (1 << 31)); |
- | |
304 | - | ||
305 | WREG32(R300_RB2D_DSTCACHE_MODE, |
- | |
306 | RREG32(R300_RB2D_DSTCACHE_MODE) | |
- | |
307 | R300_DC_AUTOFLUSH_ENABLE | |
- | |
308 | R300_DC_DC_DISABLE_IGNORE_PE); |
- | |
309 | - | ||
310 | if (r100_gui_wait_for_idle(rdev)) { |
- | |
311 | printk(KERN_WARNING "Failed to wait GUI idle while " |
- | |
312 | "programming pipes. Bad things might happen.\n"); |
- | |
313 | } |
- | |
314 | DRM_INFO("radeon: %d pipes initialized.\n", rdev->num_gb_pipes); |
- | |
Line 315... | Line 240... | ||
315 | } |
240 | } |
316 | 241 | ||
Line 317... | Line 242... | ||
317 | 242 | ||
Line 432... | Line 357... | ||
432 | return 0; |
357 | return 0; |
433 | #endif |
358 | #endif |
434 | } |
359 | } |
Line 435... | Line -... | ||
435 | - | ||
436 | - | ||
437 | void rs600_mc_disable_clients(struct radeon_device *rdev) |
- | |
438 | { |
- | |
439 | unsigned tmp; |
- | |
440 | dbgprintf("%s\n",__FUNCTION__); |
- | |
441 | - | ||
442 | if (r100_gui_wait_for_idle(rdev)) { |
- | |
443 | printk(KERN_WARNING "Failed to wait GUI idle while " |
- | |
444 | "programming pipes. Bad things might happen.\n"); |
- | |
445 | } |
- | |
446 | - | ||
447 | tmp = RREG32(AVIVO_D1VGA_CONTROL); |
- | |
448 | WREG32(AVIVO_D1VGA_CONTROL, tmp & ~AVIVO_DVGA_CONTROL_MODE_ENABLE); |
- | |
449 | tmp = RREG32(AVIVO_D2VGA_CONTROL); |
- | |
450 | WREG32(AVIVO_D2VGA_CONTROL, tmp & ~AVIVO_DVGA_CONTROL_MODE_ENABLE); |
- | |
451 | - | ||
452 | tmp = RREG32(AVIVO_D1CRTC_CONTROL); |
- | |
453 | WREG32(AVIVO_D1CRTC_CONTROL, tmp & ~AVIVO_CRTC_EN); |
- | |
454 | tmp = RREG32(AVIVO_D2CRTC_CONTROL); |
- | |
455 | WREG32(AVIVO_D2CRTC_CONTROL, tmp & ~AVIVO_CRTC_EN); |
- | |
456 | - | ||
457 | /* make sure all previous write got through */ |
- | |
458 | tmp = RREG32(AVIVO_D2CRTC_CONTROL); |
- | |
459 | - | ||
460 | mdelay(1); |
- | |
461 | - | ||
462 | dbgprintf("done\n"); |
- | |
463 | - | ||
464 | } |
- | |
Line 465... | Line 360... | ||
465 | 360 |