diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreend.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/rv770d.h | 1 |
4 files changed, 8 insertions, 13 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 522d29b37007..f7d7477daffb 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
| @@ -1134,6 +1134,12 @@ static void evergreen_mc_program(struct radeon_device *rdev) | |||
| 1134 | rdev->mc.vram_end >> 12); | 1134 | rdev->mc.vram_end >> 12); |
| 1135 | } | 1135 | } |
| 1136 | WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0); | 1136 | WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0); |
| 1137 | if (rdev->flags & RADEON_IS_IGP) { | ||
| 1138 | tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF; | ||
| 1139 | tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24; | ||
| 1140 | tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20; | ||
| 1141 | WREG32(MC_FUS_VM_FB_OFFSET, tmp); | ||
| 1142 | } | ||
| 1137 | tmp = ((rdev->mc.vram_end >> 24) & 0xFFFF) << 16; | 1143 | tmp = ((rdev->mc.vram_end >> 24) & 0xFFFF) << 16; |
| 1138 | tmp |= ((rdev->mc.vram_start >> 24) & 0xFFFF); | 1144 | tmp |= ((rdev->mc.vram_start >> 24) & 0xFFFF); |
| 1139 | WREG32(MC_VM_FB_LOCATION, tmp); | 1145 | WREG32(MC_VM_FB_LOCATION, tmp); |
diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h index 87fcaba76695..5b869ce86917 100644 --- a/drivers/gpu/drm/radeon/evergreend.h +++ b/drivers/gpu/drm/radeon/evergreend.h | |||
| @@ -202,6 +202,7 @@ | |||
| 202 | #define MC_VM_AGP_BOT 0x202C | 202 | #define MC_VM_AGP_BOT 0x202C |
| 203 | #define MC_VM_AGP_BASE 0x2030 | 203 | #define MC_VM_AGP_BASE 0x2030 |
| 204 | #define MC_VM_FB_LOCATION 0x2024 | 204 | #define MC_VM_FB_LOCATION 0x2024 |
| 205 | #define MC_FUS_VM_FB_OFFSET 0x2898 | ||
| 205 | #define MC_VM_MB_L1_TLB0_CNTL 0x2234 | 206 | #define MC_VM_MB_L1_TLB0_CNTL 0x2234 |
| 206 | #define MC_VM_MB_L1_TLB1_CNTL 0x2238 | 207 | #define MC_VM_MB_L1_TLB1_CNTL 0x2238 |
| 207 | #define MC_VM_MB_L1_TLB2_CNTL 0x223C | 208 | #define MC_VM_MB_L1_TLB2_CNTL 0x223C |
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index 7c2e0b19a558..645aa1fd7611 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
| @@ -271,12 +271,6 @@ static void rv770_mc_program(struct radeon_device *rdev) | |||
| 271 | rdev->mc.vram_end >> 12); | 271 | rdev->mc.vram_end >> 12); |
| 272 | } | 272 | } |
| 273 | WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0); | 273 | WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0); |
| 274 | if (rdev->flags & RADEON_IS_IGP) { | ||
| 275 | tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF; | ||
| 276 | tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24; | ||
| 277 | tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20; | ||
| 278 | WREG32(MC_FUS_VM_FB_OFFSET, tmp); | ||
| 279 | } | ||
| 280 | tmp = ((rdev->mc.vram_end >> 24) & 0xFFFF) << 16; | 274 | tmp = ((rdev->mc.vram_end >> 24) & 0xFFFF) << 16; |
| 281 | tmp |= ((rdev->mc.vram_start >> 24) & 0xFFFF); | 275 | tmp |= ((rdev->mc.vram_start >> 24) & 0xFFFF); |
| 282 | WREG32(MC_VM_FB_LOCATION, tmp); | 276 | WREG32(MC_VM_FB_LOCATION, tmp); |
| @@ -1074,12 +1068,7 @@ void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc) | |||
| 1074 | mc->mc_vram_size >> 20, mc->vram_start, | 1068 | mc->mc_vram_size >> 20, mc->vram_start, |
| 1075 | mc->vram_end, mc->real_vram_size >> 20); | 1069 | mc->vram_end, mc->real_vram_size >> 20); |
| 1076 | } else { | 1070 | } else { |
| 1077 | u64 base = 0; | 1071 | radeon_vram_location(rdev, &rdev->mc, 0); |
| 1078 | if (rdev->flags & RADEON_IS_IGP) { | ||
| 1079 | base = (RREG32(MC_VM_FB_LOCATION) & 0xFFFF) << 24; | ||
| 1080 | base |= RREG32(MC_FUS_VM_FB_OFFSET) & 0x00F00000; | ||
| 1081 | } | ||
| 1082 | radeon_vram_location(rdev, &rdev->mc, base); | ||
| 1083 | rdev->mc.gtt_base_align = 0; | 1072 | rdev->mc.gtt_base_align = 0; |
| 1084 | radeon_gtt_location(rdev, mc); | 1073 | radeon_gtt_location(rdev, mc); |
| 1085 | } | 1074 | } |
diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h index 98f9ad256d3d..fc77e1e1a179 100644 --- a/drivers/gpu/drm/radeon/rv770d.h +++ b/drivers/gpu/drm/radeon/rv770d.h | |||
| @@ -158,7 +158,6 @@ | |||
| 158 | #define MC_VM_AGP_BOT 0x202C | 158 | #define MC_VM_AGP_BOT 0x202C |
| 159 | #define MC_VM_AGP_BASE 0x2030 | 159 | #define MC_VM_AGP_BASE 0x2030 |
| 160 | #define MC_VM_FB_LOCATION 0x2024 | 160 | #define MC_VM_FB_LOCATION 0x2024 |
| 161 | #define MC_FUS_VM_FB_OFFSET 0x2898 | ||
| 162 | #define MC_VM_MB_L1_TLB0_CNTL 0x2234 | 161 | #define MC_VM_MB_L1_TLB0_CNTL 0x2234 |
| 163 | #define MC_VM_MB_L1_TLB1_CNTL 0x2238 | 162 | #define MC_VM_MB_L1_TLB1_CNTL 0x2238 |
| 164 | #define MC_VM_MB_L1_TLB2_CNTL 0x223C | 163 | #define MC_VM_MB_L1_TLB2_CNTL 0x223C |
