diff options
author | Dave Airlie <airlied@redhat.com> | 2009-12-10 00:47:57 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-12-10 00:48:04 -0500 |
commit | 115a5c2ba0aac55e1bac390f271c818c3cbfa1fb (patch) | |
tree | bf3029a9a68e4d3dbe82553f8a88dc25072c7dc2 /drivers/gpu/drm/radeon/r600.c | |
parent | 0b5e8db639de032bd4febbb0a5b1cd2c19bac26d (diff) | |
parent | fb53f8621a3fab88776ae2450a1f3afc7920231b (diff) |
Merge remote branch 'korg/drm-radeon-next' of into drm-linus
This merges some TTM overhauls to allow us to do better object placement
for certain radeon GPUs that need scanout+cursor within range of each other,
along with an API change to not return ERESTART to userspace, but to use
ERESTARTSYS properly internally and have it convert to EINTR and catch that
correctly. Also lots of radeon fixes across the board.
Diffstat (limited to 'drivers/gpu/drm/radeon/r600.c')
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 250ec3fe1a16..f5cf874dc62a 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -1845,6 +1845,14 @@ int r600_startup(struct radeon_device *rdev) | |||
1845 | { | 1845 | { |
1846 | int r; | 1846 | int r; |
1847 | 1847 | ||
1848 | if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { | ||
1849 | r = r600_init_microcode(rdev); | ||
1850 | if (r) { | ||
1851 | DRM_ERROR("Failed to load firmware!\n"); | ||
1852 | return r; | ||
1853 | } | ||
1854 | } | ||
1855 | |||
1848 | r600_mc_program(rdev); | 1856 | r600_mc_program(rdev); |
1849 | if (rdev->flags & RADEON_IS_AGP) { | 1857 | if (rdev->flags & RADEON_IS_AGP) { |
1850 | r600_agp_enable(rdev); | 1858 | r600_agp_enable(rdev); |
@@ -2026,25 +2034,17 @@ int r600_init(struct radeon_device *rdev) | |||
2026 | rdev->ih.ring_obj = NULL; | 2034 | rdev->ih.ring_obj = NULL; |
2027 | r600_ih_ring_init(rdev, 64 * 1024); | 2035 | r600_ih_ring_init(rdev, 64 * 1024); |
2028 | 2036 | ||
2029 | if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { | ||
2030 | r = r600_init_microcode(rdev); | ||
2031 | if (r) { | ||
2032 | DRM_ERROR("Failed to load firmware!\n"); | ||
2033 | return r; | ||
2034 | } | ||
2035 | } | ||
2036 | |||
2037 | r = r600_pcie_gart_init(rdev); | 2037 | r = r600_pcie_gart_init(rdev); |
2038 | if (r) | 2038 | if (r) |
2039 | return r; | 2039 | return r; |
2040 | 2040 | ||
2041 | rdev->accel_working = true; | ||
2042 | r = r600_blit_init(rdev); | 2041 | r = r600_blit_init(rdev); |
2043 | if (r) { | 2042 | if (r) { |
2044 | DRM_ERROR("radeon: failled blitter (%d).\n", r); | 2043 | DRM_ERROR("radeon: failed blitter (%d).\n", r); |
2045 | return r; | 2044 | return r; |
2046 | } | 2045 | } |
2047 | 2046 | ||
2047 | rdev->accel_working = true; | ||
2048 | r = r600_startup(rdev); | 2048 | r = r600_startup(rdev); |
2049 | if (r) { | 2049 | if (r) { |
2050 | r600_suspend(rdev); | 2050 | r600_suspend(rdev); |
@@ -2056,12 +2056,12 @@ int r600_init(struct radeon_device *rdev) | |||
2056 | if (rdev->accel_working) { | 2056 | if (rdev->accel_working) { |
2057 | r = radeon_ib_pool_init(rdev); | 2057 | r = radeon_ib_pool_init(rdev); |
2058 | if (r) { | 2058 | if (r) { |
2059 | DRM_ERROR("radeon: failled initializing IB pool (%d).\n", r); | 2059 | DRM_ERROR("radeon: failed initializing IB pool (%d).\n", r); |
2060 | rdev->accel_working = false; | 2060 | rdev->accel_working = false; |
2061 | } | 2061 | } |
2062 | r = r600_ib_test(rdev); | 2062 | r = r600_ib_test(rdev); |
2063 | if (r) { | 2063 | if (r) { |
2064 | DRM_ERROR("radeon: failled testing IB (%d).\n", r); | 2064 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); |
2065 | rdev->accel_working = false; | 2065 | rdev->accel_working = false; |
2066 | } | 2066 | } |
2067 | } | 2067 | } |