aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/rv770.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-03-24 13:36:43 -0400
committerDave Airlie <airlied@redhat.com>2010-04-08 20:16:04 -0400
commitfe251e2fffa1ebc17c8e6e895b0374ae4e732fa5 (patch)
tree995060a10005d4a284bebcd0412fabfd0805de89 /drivers/gpu/drm/radeon/rv770.c
parent32fcdbf4084544c3d8fa413004d57e5dc6f2eefe (diff)
drm/radeon/kms/evergreen: setup and enable the CP
The command processor (CP) fetches command buffers and feeds the GPU. This patch requires the evergreen family me and pfp ucode files. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/rv770.c')
-rw-r--r--drivers/gpu/drm/radeon/rv770.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 2b8a4e17065..2642d264264 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -236,7 +236,6 @@ void r700_cp_stop(struct radeon_device *rdev)
236 WREG32(CP_ME_CNTL, (CP_ME_HALT | CP_PFP_HALT)); 236 WREG32(CP_ME_CNTL, (CP_ME_HALT | CP_PFP_HALT));
237} 237}
238 238
239
240static int rv770_cp_load_microcode(struct radeon_device *rdev) 239static int rv770_cp_load_microcode(struct radeon_device *rdev)
241{ 240{
242 const __be32 *fw_data; 241 const __be32 *fw_data;
@@ -271,6 +270,11 @@ static int rv770_cp_load_microcode(struct radeon_device *rdev)
271 return 0; 270 return 0;
272} 271}
273 272
273void r700_cp_fini(struct radeon_device *rdev)
274{
275 r700_cp_stop(rdev);
276 radeon_ring_fini(rdev);
277}
274 278
275/* 279/*
276 * Core functions 280 * Core functions
@@ -1125,7 +1129,7 @@ int rv770_init(struct radeon_device *rdev)
1125 r = rv770_startup(rdev); 1129 r = rv770_startup(rdev);
1126 if (r) { 1130 if (r) {
1127 dev_err(rdev->dev, "disabling GPU acceleration\n"); 1131 dev_err(rdev->dev, "disabling GPU acceleration\n");
1128 r600_cp_fini(rdev); 1132 r700_cp_fini(rdev);
1129 r600_wb_fini(rdev); 1133 r600_wb_fini(rdev);
1130 r600_irq_fini(rdev); 1134 r600_irq_fini(rdev);
1131 radeon_irq_kms_fini(rdev); 1135 radeon_irq_kms_fini(rdev);
@@ -1159,7 +1163,7 @@ void rv770_fini(struct radeon_device *rdev)
1159{ 1163{
1160 radeon_pm_fini(rdev); 1164 radeon_pm_fini(rdev);
1161 r600_blit_fini(rdev); 1165 r600_blit_fini(rdev);
1162 r600_cp_fini(rdev); 1166 r700_cp_fini(rdev);
1163 r600_wb_fini(rdev); 1167 r600_wb_fini(rdev);
1164 r600_irq_fini(rdev); 1168 r600_irq_fini(rdev);
1165 radeon_irq_kms_fini(rdev); 1169 radeon_irq_kms_fini(rdev);