diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/rv770.c')
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index dd4f02096a80..2d124bb57762 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -874,6 +874,14 @@ static int rv770_startup(struct radeon_device *rdev) | |||
874 | { | 874 | { |
875 | int r; | 875 | int r; |
876 | 876 | ||
877 | if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { | ||
878 | r = r600_init_microcode(rdev); | ||
879 | if (r) { | ||
880 | DRM_ERROR("Failed to load firmware!\n"); | ||
881 | return r; | ||
882 | } | ||
883 | } | ||
884 | |||
877 | rv770_mc_program(rdev); | 885 | rv770_mc_program(rdev); |
878 | if (rdev->flags & RADEON_IS_AGP) { | 886 | if (rdev->flags & RADEON_IS_AGP) { |
879 | rv770_agp_enable(rdev); | 887 | rv770_agp_enable(rdev); |
@@ -1039,25 +1047,17 @@ int rv770_init(struct radeon_device *rdev) | |||
1039 | rdev->ih.ring_obj = NULL; | 1047 | rdev->ih.ring_obj = NULL; |
1040 | r600_ih_ring_init(rdev, 64 * 1024); | 1048 | r600_ih_ring_init(rdev, 64 * 1024); |
1041 | 1049 | ||
1042 | if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { | ||
1043 | r = r600_init_microcode(rdev); | ||
1044 | if (r) { | ||
1045 | DRM_ERROR("Failed to load firmware!\n"); | ||
1046 | return r; | ||
1047 | } | ||
1048 | } | ||
1049 | |||
1050 | r = r600_pcie_gart_init(rdev); | 1050 | r = r600_pcie_gart_init(rdev); |
1051 | if (r) | 1051 | if (r) |
1052 | return r; | 1052 | return r; |
1053 | 1053 | ||
1054 | rdev->accel_working = true; | ||
1055 | r = r600_blit_init(rdev); | 1054 | r = r600_blit_init(rdev); |
1056 | if (r) { | 1055 | if (r) { |
1057 | DRM_ERROR("radeon: failled blitter (%d).\n", r); | 1056 | DRM_ERROR("radeon: failed blitter (%d).\n", r); |
1058 | rdev->accel_working = false; | 1057 | return r; |
1059 | } | 1058 | } |
1060 | 1059 | ||
1060 | rdev->accel_working = true; | ||
1061 | r = rv770_startup(rdev); | 1061 | r = rv770_startup(rdev); |
1062 | if (r) { | 1062 | if (r) { |
1063 | rv770_suspend(rdev); | 1063 | rv770_suspend(rdev); |
@@ -1069,12 +1069,12 @@ int rv770_init(struct radeon_device *rdev) | |||
1069 | if (rdev->accel_working) { | 1069 | if (rdev->accel_working) { |
1070 | r = radeon_ib_pool_init(rdev); | 1070 | r = radeon_ib_pool_init(rdev); |
1071 | if (r) { | 1071 | if (r) { |
1072 | DRM_ERROR("radeon: failled initializing IB pool (%d).\n", r); | 1072 | DRM_ERROR("radeon: failed initializing IB pool (%d).\n", r); |
1073 | rdev->accel_working = false; | 1073 | rdev->accel_working = false; |
1074 | } | 1074 | } |
1075 | r = r600_ib_test(rdev); | 1075 | r = r600_ib_test(rdev); |
1076 | if (r) { | 1076 | if (r) { |
1077 | DRM_ERROR("radeon: failled testing IB (%d).\n", r); | 1077 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); |
1078 | rdev->accel_working = false; | 1078 | rdev->accel_working = false; |
1079 | } | 1079 | } |
1080 | } | 1080 | } |