Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6

* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
drm/nv50: fix regression on IGPs
drm/radeon/kms: re-emit full context state for evergreen blits
drm/radeon/kms: release CMASK access in preclose_kms
drm/radeon/kms: fix r6xx+ scanout on BE systems
drm/radeon/kms: clean up some magic numbers
drm/radeon/kms: only enable HDMI mode if radeon audio is enabled
radeon/kms: fix dp displayport mode validation
drm/nvc0/grctx: correct an off-by-one
drm/nv50: Fix race with PFIFO during PGRAPH context destruction.
drm/nouveau: Workaround incorrect DCB entry on a GeForce3 Ti 200.
drm/nvc0: implement irq handler for whatever's at 0x14xxxx
drm/nvc0: fix incorrect TPC register setup
drm/nouveau: probe for adt7473 before f75375
drm/nouveau: remove dead function definition

+132 -45
+15
drivers/gpu/drm/nouveau/nouveau_bios.c
··· 6310 6310 static bool 6311 6311 apply_dcb_encoder_quirks(struct drm_device *dev, int idx, u32 *conn, u32 *conf) 6312 6312 { 6313 + struct drm_nouveau_private *dev_priv = dev->dev_private; 6314 + struct dcb_table *dcb = &dev_priv->vbios.dcb; 6315 + 6313 6316 /* Dell Precision M6300 6314 6317 * DCB entry 2: 02025312 00000010 6315 6318 * DCB entry 3: 02026312 00000020 ··· 6328 6325 if (nv_match_device(dev, 0x040d, 0x1028, 0x019b)) { 6329 6326 if (*conn == 0x02026312 && *conf == 0x00000020) 6330 6327 return false; 6328 + } 6329 + 6330 + /* GeForce3 Ti 200 6331 + * 6332 + * DCB reports an LVDS output that should be TMDS: 6333 + * DCB entry 1: f2005014 ffffffff 6334 + */ 6335 + if (nv_match_device(dev, 0x0201, 0x1462, 0x8851)) { 6336 + if (*conn == 0xf2005014 && *conf == 0xffffffff) { 6337 + fabricate_dcb_output(dcb, OUTPUT_TMDS, 1, 1, 1); 6338 + return false; 6339 + } 6331 6340 } 6332 6341 6333 6342 return true;
-3
drivers/gpu/drm/nouveau/nouveau_drv.h
··· 848 848 struct nouveau_fence *fence); 849 849 extern const struct ttm_mem_type_manager_func nouveau_vram_manager; 850 850 851 - /* nvc0_vram.c */ 852 - extern const struct ttm_mem_type_manager_func nvc0_vram_manager; 853 - 854 851 /* nouveau_notifier.c */ 855 852 extern int nouveau_notifier_init_channel(struct nouveau_channel *); 856 853 extern void nouveau_notifier_takedown_channel(struct nouveau_channel *);
+1 -1
drivers/gpu/drm/nouveau/nouveau_temp.c
··· 265 265 struct i2c_board_info info[] = { 266 266 { I2C_BOARD_INFO("w83l785ts", 0x2d) }, 267 267 { I2C_BOARD_INFO("w83781d", 0x2d) }, 268 - { I2C_BOARD_INFO("f75375", 0x2e) }, 269 268 { I2C_BOARD_INFO("adt7473", 0x2e) }, 269 + { I2C_BOARD_INFO("f75375", 0x2e) }, 270 270 { I2C_BOARD_INFO("lm99", 0x4c) }, 271 271 { } 272 272 };
+3
drivers/gpu/drm/nouveau/nv50_graph.c
··· 256 256 struct drm_device *dev = chan->dev; 257 257 struct drm_nouveau_private *dev_priv = dev->dev_private; 258 258 struct nouveau_pgraph_engine *pgraph = &dev_priv->engine.graph; 259 + struct nouveau_fifo_engine *pfifo = &dev_priv->engine.fifo; 259 260 int i, hdr = (dev_priv->chipset == 0x50) ? 0x200 : 0x20; 260 261 unsigned long flags; 261 262 ··· 266 265 return; 267 266 268 267 spin_lock_irqsave(&dev_priv->context_switch_lock, flags); 268 + pfifo->reassign(dev, false); 269 269 pgraph->fifo_access(dev, false); 270 270 271 271 if (pgraph->channel(dev) == chan) ··· 277 275 dev_priv->engine.instmem.flush(dev); 278 276 279 277 pgraph->fifo_access(dev, true); 278 + pfifo->reassign(dev, true); 280 279 spin_unlock_irqrestore(&dev_priv->context_switch_lock, flags); 281 280 282 281 nouveau_gpuobj_ref(NULL, &chan->ramin_grctx);
-5
drivers/gpu/drm/nouveau/nv50_vm.c
··· 45 45 } 46 46 47 47 if (phys & 1) { 48 - if (dev_priv->vram_sys_base) { 49 - phys += dev_priv->vram_sys_base; 50 - phys |= 0x30; 51 - } 52 - 53 48 if (coverage <= 32 * 1024 * 1024) 54 49 phys |= 0x60; 55 50 else if (coverage <= 64 * 1024 * 1024)
+21 -2
drivers/gpu/drm/nouveau/nvc0_graph.c
··· 31 31 #include "nvc0_graph.h" 32 32 33 33 static void nvc0_graph_isr(struct drm_device *); 34 + static void nvc0_runk140_isr(struct drm_device *); 34 35 static int nvc0_graph_unload_context_to(struct drm_device *dev, u64 chan); 35 36 36 37 void ··· 282 281 return; 283 282 284 283 nouveau_irq_unregister(dev, 12); 284 + nouveau_irq_unregister(dev, 25); 285 285 286 286 nouveau_gpuobj_ref(NULL, &priv->unk4188b8); 287 287 nouveau_gpuobj_ref(NULL, &priv->unk4188b4); ··· 392 390 } 393 391 394 392 nouveau_irq_register(dev, 12, nvc0_graph_isr); 393 + nouveau_irq_register(dev, 25, nvc0_runk140_isr); 395 394 NVOBJ_CLASS(dev, 0x902d, GR); /* 2D */ 396 395 NVOBJ_CLASS(dev, 0x9039, GR); /* M2MF */ 397 396 NVOBJ_CLASS(dev, 0x9097, GR); /* 3D */ ··· 515 512 nv_wr32(dev, TP_UNIT(gpc, tp, 0x224), 0xc0000000); 516 513 nv_wr32(dev, TP_UNIT(gpc, tp, 0x48c), 0xc0000000); 517 514 nv_wr32(dev, TP_UNIT(gpc, tp, 0x084), 0xc0000000); 518 - nv_wr32(dev, TP_UNIT(gpc, tp, 0xe44), 0x001ffffe); 519 - nv_wr32(dev, TP_UNIT(gpc, tp, 0xe4c), 0x0000000f); 515 + nv_wr32(dev, TP_UNIT(gpc, tp, 0x644), 0x001ffffe); 516 + nv_wr32(dev, TP_UNIT(gpc, tp, 0x64c), 0x0000000f); 520 517 } 521 518 nv_wr32(dev, GPC_UNIT(gpc, 0x2c90), 0xffffffff); 522 519 nv_wr32(dev, GPC_UNIT(gpc, 0x2c94), 0xffffffff); ··· 779 776 } 780 777 781 778 nv_wr32(dev, 0x400500, 0x00010001); 779 + } 780 + 781 + static void 782 + nvc0_runk140_isr(struct drm_device *dev) 783 + { 784 + u32 units = nv_rd32(dev, 0x00017c) & 0x1f; 785 + 786 + while (units) { 787 + u32 unit = ffs(units) - 1; 788 + u32 reg = 0x140000 + unit * 0x2000; 789 + u32 st0 = nv_mask(dev, reg + 0x1020, 0, 0); 790 + u32 st1 = nv_mask(dev, reg + 0x1420, 0, 0); 791 + 792 + NV_INFO(dev, "PRUNK140: %d 0x%08x 0x%08x\n", unit, st0, st1); 793 + units &= ~(1 << unit); 794 + } 782 795 }
+1 -1
drivers/gpu/drm/nouveau/nvc0_grctx.c
··· 1830 1830 1831 1831 for (tp = 0, id = 0; tp < 4; tp++) { 1832 1832 for (gpc = 0; gpc < priv->gpc_nr; gpc++) { 1833 - if (tp <= priv->tp_nr[gpc]) { 1833 + if (tp < priv->tp_nr[gpc]) { 1834 1834 nv_wr32(dev, TP_UNIT(gpc, tp, 0x698), id); 1835 1835 nv_wr32(dev, TP_UNIT(gpc, tp, 0x4e8), id); 1836 1836 nv_wr32(dev, GPC_UNIT(gpc, 0x0c10 + tp * 4), id);
+17
drivers/gpu/drm/radeon/atombios_crtc.c
··· 994 994 struct radeon_bo *rbo; 995 995 uint64_t fb_location; 996 996 uint32_t fb_format, fb_pitch_pixels, tiling_flags; 997 + u32 fb_swap = EVERGREEN_GRPH_ENDIAN_SWAP(EVERGREEN_GRPH_ENDIAN_NONE); 997 998 int r; 998 999 999 1000 /* no fb bound */ ··· 1046 1045 case 16: 1047 1046 fb_format = (EVERGREEN_GRPH_DEPTH(EVERGREEN_GRPH_DEPTH_16BPP) | 1048 1047 EVERGREEN_GRPH_FORMAT(EVERGREEN_GRPH_FORMAT_ARGB565)); 1048 + #ifdef __BIG_ENDIAN 1049 + fb_swap = EVERGREEN_GRPH_ENDIAN_SWAP(EVERGREEN_GRPH_ENDIAN_8IN16); 1050 + #endif 1049 1051 break; 1050 1052 case 24: 1051 1053 case 32: 1052 1054 fb_format = (EVERGREEN_GRPH_DEPTH(EVERGREEN_GRPH_DEPTH_32BPP) | 1053 1055 EVERGREEN_GRPH_FORMAT(EVERGREEN_GRPH_FORMAT_ARGB8888)); 1056 + #ifdef __BIG_ENDIAN 1057 + fb_swap = EVERGREEN_GRPH_ENDIAN_SWAP(EVERGREEN_GRPH_ENDIAN_8IN32); 1058 + #endif 1054 1059 break; 1055 1060 default: 1056 1061 DRM_ERROR("Unsupported screen depth %d\n", ··· 1101 1094 WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, 1102 1095 (u32) fb_location & EVERGREEN_GRPH_SURFACE_ADDRESS_MASK); 1103 1096 WREG32(EVERGREEN_GRPH_CONTROL + radeon_crtc->crtc_offset, fb_format); 1097 + WREG32(EVERGREEN_GRPH_SWAP_CONTROL + radeon_crtc->crtc_offset, fb_swap); 1104 1098 1105 1099 WREG32(EVERGREEN_GRPH_SURFACE_OFFSET_X + radeon_crtc->crtc_offset, 0); 1106 1100 WREG32(EVERGREEN_GRPH_SURFACE_OFFSET_Y + radeon_crtc->crtc_offset, 0); ··· 1158 1150 struct drm_framebuffer *target_fb; 1159 1151 uint64_t fb_location; 1160 1152 uint32_t fb_format, fb_pitch_pixels, tiling_flags; 1153 + u32 fb_swap = R600_D1GRPH_SWAP_ENDIAN_NONE; 1161 1154 int r; 1162 1155 1163 1156 /* no fb bound */ ··· 1212 1203 fb_format = 1213 1204 AVIVO_D1GRPH_CONTROL_DEPTH_16BPP | 1214 1205 AVIVO_D1GRPH_CONTROL_16BPP_RGB565; 1206 + #ifdef __BIG_ENDIAN 1207 + fb_swap = R600_D1GRPH_SWAP_ENDIAN_16BIT; 1208 + #endif 1215 1209 break; 1216 1210 case 24: 1217 1211 case 32: 1218 1212 fb_format = 1219 1213 AVIVO_D1GRPH_CONTROL_DEPTH_32BPP | 1220 1214 AVIVO_D1GRPH_CONTROL_32BPP_ARGB8888; 1215 + #ifdef __BIG_ENDIAN 1216 + fb_swap = R600_D1GRPH_SWAP_ENDIAN_32BIT; 1217 + #endif 1221 1218 break; 1222 1219 default: 1223 1220 DRM_ERROR("Unsupported screen depth %d\n", ··· 1263 1248 WREG32(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + 1264 1249 radeon_crtc->crtc_offset, (u32) fb_location); 1265 1250 WREG32(AVIVO_D1GRPH_CONTROL + radeon_crtc->crtc_offset, fb_format); 1251 + if (rdev->family >= CHIP_R600) 1252 + WREG32(R600_D1GRPH_SWAP_CONTROL + radeon_crtc->crtc_offset, fb_swap); 1266 1253 1267 1254 WREG32(AVIVO_D1GRPH_SURFACE_OFFSET_X + radeon_crtc->crtc_offset, 0); 1268 1255 WREG32(AVIVO_D1GRPH_SURFACE_OFFSET_Y + radeon_crtc->crtc_offset, 0);
+2 -2
drivers/gpu/drm/radeon/atombios_dp.c
··· 187 187 int dp_mode_valid(u8 dpcd[DP_DPCD_SIZE], int mode_clock) 188 188 { 189 189 int lanes = dp_lanes_for_mode_clock(dpcd, mode_clock); 190 - int bw = dp_lanes_for_mode_clock(dpcd, mode_clock); 190 + int dp_clock = dp_link_clock_for_mode_clock(dpcd, mode_clock); 191 191 192 - if ((lanes == 0) || (bw == 0)) 192 + if ((lanes == 0) || (dp_clock == 0)) 193 193 return MODE_CLOCK_HIGH; 194 194 195 195 return MODE_OK;
+33 -6
drivers/gpu/drm/radeon/evergreen_blit_kms.c
··· 232 232 233 233 } 234 234 235 - /* emits 30 */ 235 + /* emits 34 */ 236 236 static void 237 237 set_default_state(struct radeon_device *rdev) 238 238 { ··· 245 245 int num_hs_threads, num_ls_threads; 246 246 int num_ps_stack_entries, num_vs_stack_entries, num_gs_stack_entries, num_es_stack_entries; 247 247 int num_hs_stack_entries, num_ls_stack_entries; 248 + u64 gpu_addr; 249 + int dwords; 248 250 249 251 switch (rdev->family) { 250 252 case CHIP_CEDAR: ··· 499 497 radeon_ring_write(rdev, 0x00000000); 500 498 radeon_ring_write(rdev, 0x00000000); 501 499 500 + /* emit an IB pointing at default state */ 501 + dwords = ALIGN(rdev->r600_blit.state_len, 0x10); 502 + gpu_addr = rdev->r600_blit.shader_gpu_addr + rdev->r600_blit.state_offset; 503 + radeon_ring_write(rdev, PACKET3(PACKET3_INDIRECT_BUFFER, 2)); 504 + radeon_ring_write(rdev, gpu_addr & 0xFFFFFFFC); 505 + radeon_ring_write(rdev, upper_32_bits(gpu_addr) & 0xFF); 506 + radeon_ring_write(rdev, dwords); 507 + 502 508 } 503 509 504 510 static inline uint32_t i2f(uint32_t input) ··· 537 527 int evergreen_blit_init(struct radeon_device *rdev) 538 528 { 539 529 u32 obj_size; 540 - int r; 530 + int r, dwords; 541 531 void *ptr; 532 + u32 packet2s[16]; 533 + int num_packet2s = 0; 542 534 543 535 /* pin copy shader into vram if already initialized */ 544 536 if (rdev->r600_blit.shader_obj) ··· 548 536 549 537 mutex_init(&rdev->r600_blit.mutex); 550 538 rdev->r600_blit.state_offset = 0; 551 - rdev->r600_blit.state_len = 0; 552 - obj_size = 0; 539 + 540 + rdev->r600_blit.state_len = evergreen_default_size; 541 + 542 + dwords = rdev->r600_blit.state_len; 543 + while (dwords & 0xf) { 544 + packet2s[num_packet2s++] = PACKET2(0); 545 + dwords++; 546 + } 547 + 548 + obj_size = dwords * 4; 549 + obj_size = ALIGN(obj_size, 256); 553 550 554 551 rdev->r600_blit.vs_offset = obj_size; 555 552 obj_size += evergreen_vs_size * 4; ··· 588 567 return r; 589 568 } 590 569 570 + memcpy_toio(ptr + rdev->r600_blit.state_offset, 571 + evergreen_default_state, rdev->r600_blit.state_len * 4); 572 + 573 + if (num_packet2s) 574 + memcpy_toio(ptr + rdev->r600_blit.state_offset + (rdev->r600_blit.state_len * 4), 575 + packet2s, num_packet2s * 4); 591 576 memcpy(ptr + rdev->r600_blit.vs_offset, evergreen_vs, evergreen_vs_size * 4); 592 577 memcpy(ptr + rdev->r600_blit.ps_offset, evergreen_ps, evergreen_ps_size * 4); 593 578 radeon_bo_kunmap(rdev->r600_blit.shader_obj); ··· 679 652 /* calculate number of loops correctly */ 680 653 ring_size = num_loops * dwords_per_loop; 681 654 /* set default + shaders */ 682 - ring_size += 46; /* shaders + def state */ 655 + ring_size += 50; /* shaders + def state */ 683 656 ring_size += 10; /* fence emit for VB IB */ 684 657 ring_size += 5; /* done copy */ 685 658 ring_size += 10; /* fence emit for done copy */ ··· 687 660 if (r) 688 661 return r; 689 662 690 - set_default_state(rdev); /* 30 */ 663 + set_default_state(rdev); /* 34 */ 691 664 set_shaders(rdev); /* 16 */ 692 665 return 0; 693 666 }
+5 -5
drivers/gpu/drm/radeon/r100.c
··· 1031 1031 WREG32(RADEON_CP_CSQ_MODE, 1032 1032 REG_SET(RADEON_INDIRECT2_START, indirect2_start) | 1033 1033 REG_SET(RADEON_INDIRECT1_START, indirect1_start)); 1034 - WREG32(0x718, 0); 1035 - WREG32(0x744, 0x00004D4D); 1034 + WREG32(RADEON_CP_RB_WPTR_DELAY, 0); 1035 + WREG32(RADEON_CP_CSQ_MODE, 0x00004D4D); 1036 1036 WREG32(RADEON_CP_CSQ_CNTL, RADEON_CSQ_PRIBM_INDBM); 1037 1037 radeon_ring_start(rdev); 1038 1038 r = radeon_ring_test(rdev); ··· 2347 2347 2348 2348 temp = RREG32(RADEON_CONFIG_CNTL); 2349 2349 if (state == false) { 2350 - temp &= ~(1<<8); 2351 - temp |= (1<<9); 2350 + temp &= ~RADEON_CFG_VGA_RAM_EN; 2351 + temp |= RADEON_CFG_VGA_IO_DIS; 2352 2352 } else { 2353 - temp &= ~(1<<9); 2353 + temp &= ~RADEON_CFG_VGA_IO_DIS; 2354 2354 } 2355 2355 WREG32(RADEON_CONFIG_CNTL, temp); 2356 2356 }
+5 -2
drivers/gpu/drm/radeon/r300.c
··· 69 69 mb(); 70 70 } 71 71 72 + #define R300_PTE_WRITEABLE (1 << 2) 73 + #define R300_PTE_READABLE (1 << 3) 74 + 72 75 int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr) 73 76 { 74 77 void __iomem *ptr = (void *)rdev->gart.table.vram.ptr; ··· 81 78 } 82 79 addr = (lower_32_bits(addr) >> 8) | 83 80 ((upper_32_bits(addr) & 0xff) << 24) | 84 - 0xc; 81 + R300_PTE_WRITEABLE | R300_PTE_READABLE; 85 82 /* on x86 we want this to be CPU endian, on powerpc 86 83 * on powerpc without HW swappers, it'll get swapped on way 87 84 * into VRAM - so no need for cpu_to_le32 on VRAM tables */ ··· 138 135 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_LO, rdev->mc.vram_start); 139 136 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_HI, 0); 140 137 /* Clear error */ 141 - WREG32_PCIE(0x18, 0); 138 + WREG32_PCIE(RADEON_PCIE_TX_GART_ERROR, 0); 142 139 tmp = RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 143 140 tmp |= RADEON_PCIE_TX_GART_EN; 144 141 tmp |= RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD;
+1 -1
drivers/gpu/drm/radeon/r420.c
··· 96 96 "programming pipes. Bad things might happen.\n"); 97 97 } 98 98 /* get max number of pipes */ 99 - gb_pipe_select = RREG32(0x402C); 99 + gb_pipe_select = RREG32(R400_GB_PIPE_SELECT); 100 100 num_pipes = ((gb_pipe_select >> 12) & 3) + 1; 101 101 102 102 /* SE chips have 1 pipe */
+2 -2
drivers/gpu/drm/radeon/r520.c
··· 79 79 WREG32(0x4128, 0xFF); 80 80 } 81 81 r420_pipes_init(rdev); 82 - gb_pipe_select = RREG32(0x402C); 83 - tmp = RREG32(0x170C); 82 + gb_pipe_select = RREG32(R400_GB_PIPE_SELECT); 83 + tmp = RREG32(R300_DST_PIPE_CONFIG); 84 84 pipe_select_current = (tmp >> 2) & 3; 85 85 tmp = (1 << pipe_select_current) | 86 86 (((gb_pipe_select >> 8) & 0xF) << 4);
+5 -1
drivers/gpu/drm/radeon/r600_reg.h
··· 81 81 #define R600_MEDIUM_VID_LOWER_GPIO_CNTL 0x720 82 82 #define R600_LOW_VID_LOWER_GPIO_CNTL 0x724 83 83 84 - 84 + #define R600_D1GRPH_SWAP_CONTROL 0x610C 85 + # define R600_D1GRPH_SWAP_ENDIAN_NONE (0 << 0) 86 + # define R600_D1GRPH_SWAP_ENDIAN_16BIT (1 << 0) 87 + # define R600_D1GRPH_SWAP_ENDIAN_32BIT (2 << 0) 88 + # define R600_D1GRPH_SWAP_ENDIAN_64BIT (3 << 0) 85 89 86 90 #define R600_HDP_NONSURFACE_BASE 0x2c04 87 91
+3 -3
drivers/gpu/drm/radeon/radeon_encoders.c
··· 641 641 switch (connector->connector_type) { 642 642 case DRM_MODE_CONNECTOR_DVII: 643 643 case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */ 644 - if (drm_detect_monitor_audio(radeon_connector->edid)) { 644 + if (drm_detect_monitor_audio(radeon_connector->edid) && radeon_audio) { 645 645 /* fix me */ 646 646 if (ASIC_IS_DCE4(rdev)) 647 647 return ATOM_ENCODER_MODE_DVI; ··· 655 655 case DRM_MODE_CONNECTOR_DVID: 656 656 case DRM_MODE_CONNECTOR_HDMIA: 657 657 default: 658 - if (drm_detect_monitor_audio(radeon_connector->edid)) { 658 + if (drm_detect_monitor_audio(radeon_connector->edid) && radeon_audio) { 659 659 /* fix me */ 660 660 if (ASIC_IS_DCE4(rdev)) 661 661 return ATOM_ENCODER_MODE_DVI; ··· 673 673 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || 674 674 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) 675 675 return ATOM_ENCODER_MODE_DP; 676 - else if (drm_detect_monitor_audio(radeon_connector->edid)) { 676 + else if (drm_detect_monitor_audio(radeon_connector->edid) && radeon_audio) { 677 677 /* fix me */ 678 678 if (ASIC_IS_DCE4(rdev)) 679 679 return ATOM_ENCODER_MODE_DVI;
+2
drivers/gpu/drm/radeon/radeon_kms.c
··· 247 247 struct radeon_device *rdev = dev->dev_private; 248 248 if (rdev->hyperz_filp == file_priv) 249 249 rdev->hyperz_filp = NULL; 250 + if (rdev->cmask_filp == file_priv) 251 + rdev->cmask_filp = NULL; 250 252 } 251 253 252 254 /*
+2
drivers/gpu/drm/radeon/radeon_reg.h
··· 375 375 #define RADEON_CONFIG_APER_SIZE 0x0108 376 376 #define RADEON_CONFIG_BONDS 0x00e8 377 377 #define RADEON_CONFIG_CNTL 0x00e0 378 + # define RADEON_CFG_VGA_RAM_EN (1 << 8) 379 + # define RADEON_CFG_VGA_IO_DIS (1 << 9) 378 380 # define RADEON_CFG_ATI_REV_A11 (0 << 16) 379 381 # define RADEON_CFG_ATI_REV_A12 (1 << 16) 380 382 # define RADEON_CFG_ATI_REV_A13 (2 << 16)
+9 -6
drivers/gpu/drm/radeon/rs400.c
··· 203 203 radeon_gart_table_ram_free(rdev); 204 204 } 205 205 206 + #define RS400_PTE_WRITEABLE (1 << 2) 207 + #define RS400_PTE_READABLE (1 << 3) 208 + 206 209 int rs400_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr) 207 210 { 208 211 uint32_t entry; ··· 216 213 217 214 entry = (lower_32_bits(addr) & PAGE_MASK) | 218 215 ((upper_32_bits(addr) & 0xff) << 4) | 219 - 0xc; 216 + RS400_PTE_WRITEABLE | RS400_PTE_READABLE; 220 217 entry = cpu_to_le32(entry); 221 218 rdev->gart.table.ram.ptr[i] = entry; 222 219 return 0; ··· 229 226 230 227 for (i = 0; i < rdev->usec_timeout; i++) { 231 228 /* read MC_STATUS */ 232 - tmp = RREG32(0x0150); 233 - if (tmp & (1 << 2)) { 229 + tmp = RREG32(RADEON_MC_STATUS); 230 + if (tmp & RADEON_MC_IDLE) { 234 231 return 0; 235 232 } 236 233 DRM_UDELAY(1); ··· 244 241 r420_pipes_init(rdev); 245 242 if (rs400_mc_wait_for_idle(rdev)) { 246 243 printk(KERN_WARNING "rs400: Failed to wait MC idle while " 247 - "programming pipes. Bad things might happen. %08x\n", RREG32(0x150)); 244 + "programming pipes. Bad things might happen. %08x\n", RREG32(RADEON_MC_STATUS)); 248 245 } 249 246 } 250 247 ··· 303 300 seq_printf(m, "MCCFG_AGP_BASE_2 0x%08x\n", tmp); 304 301 tmp = RREG32_MC(RS690_MCCFG_AGP_LOCATION); 305 302 seq_printf(m, "MCCFG_AGP_LOCATION 0x%08x\n", tmp); 306 - tmp = RREG32_MC(0x100); 303 + tmp = RREG32_MC(RS690_MCCFG_FB_LOCATION); 307 304 seq_printf(m, "MCCFG_FB_LOCATION 0x%08x\n", tmp); 308 - tmp = RREG32(0x134); 305 + tmp = RREG32(RS690_HDP_FB_LOCATION); 309 306 seq_printf(m, "HDP_FB_LOCATION 0x%08x\n", tmp); 310 307 } else { 311 308 tmp = RREG32(RADEON_AGP_BASE);
+5 -5
drivers/gpu/drm/radeon/rv515.c
··· 69 69 ISYNC_CPSCRATCH_IDLEGUI); 70 70 radeon_ring_write(rdev, PACKET0(WAIT_UNTIL, 0)); 71 71 radeon_ring_write(rdev, WAIT_2D_IDLECLEAN | WAIT_3D_IDLECLEAN); 72 - radeon_ring_write(rdev, PACKET0(0x170C, 0)); 73 - radeon_ring_write(rdev, 1 << 31); 72 + radeon_ring_write(rdev, PACKET0(R300_DST_PIPE_CONFIG, 0)); 73 + radeon_ring_write(rdev, R300_PIPE_AUTO_CONFIG); 74 74 radeon_ring_write(rdev, PACKET0(GB_SELECT, 0)); 75 75 radeon_ring_write(rdev, 0); 76 76 radeon_ring_write(rdev, PACKET0(GB_ENABLE, 0)); 77 77 radeon_ring_write(rdev, 0); 78 - radeon_ring_write(rdev, PACKET0(0x42C8, 0)); 78 + radeon_ring_write(rdev, PACKET0(R500_SU_REG_DEST, 0)); 79 79 radeon_ring_write(rdev, (1 << rdev->num_gb_pipes) - 1); 80 80 radeon_ring_write(rdev, PACKET0(VAP_INDEX_OFFSET, 0)); 81 81 radeon_ring_write(rdev, 0); ··· 153 153 } 154 154 rv515_vga_render_disable(rdev); 155 155 r420_pipes_init(rdev); 156 - gb_pipe_select = RREG32(0x402C); 157 - tmp = RREG32(0x170C); 156 + gb_pipe_select = RREG32(R400_GB_PIPE_SELECT); 157 + tmp = RREG32(R300_DST_PIPE_CONFIG); 158 158 pipe_select_current = (tmp >> 2) & 3; 159 159 tmp = (1 << pipe_select_current) | 160 160 (((gb_pipe_select >> 8) & 0xF) << 4);