diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index a322d4f647bd..4d7a2e1bdb90 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c @@ -878,12 +878,15 @@ void r600_pcie_gart_tlb_flush(struct radeon_device *rdev)  	u32 tmp;  	/* flush hdp cache so updates hit vram */ -	if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740)) { +	if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) && +	    !(rdev->flags & RADEON_IS_AGP)) {  		void __iomem *ptr = (void *)rdev->gart.table.vram.ptr;  		u32 tmp;  		/* r7xx hw bug.  write to HDP_DEBUG1 followed by fb read  		 * rather than write to HDP_REG_COHERENCY_FLUSH_CNTL +		 * This seems to cause problems on some AGP cards. Just use the old +		 * method for them.  		 */  		WREG32(HDP_DEBUG1, 0);  		tmp = readl((void __iomem *)ptr); @@ -3485,10 +3488,12 @@ int r600_debugfs_mc_info_init(struct radeon_device *rdev)  void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo)  {  	/* r7xx hw bug.  write to HDP_DEBUG1 followed by fb read -	 * rather than write to HDP_REG_COHERENCY_FLUSH_CNTL +	 * rather than write to HDP_REG_COHERENCY_FLUSH_CNTL. +	 * This seems to cause problems on some AGP cards. Just use the old +	 * method for them.  	 */  	if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) && -	    rdev->vram_scratch.ptr) { +	    rdev->vram_scratch.ptr && !(rdev->flags & RADEON_IS_AGP)) {  		void __iomem *ptr = (void *)rdev->vram_scratch.ptr;  		u32 tmp;  | 
