drm/radeon/kms/evergreen: fix backend setup
This patch fixes rendering errors on some evergreen boards.
Hardcoding the backend map is not an optimal solution, but
a better fix is being worked on.
Similar to the fix for rv740
(6271901d82
).
Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=29986
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Родитель
7b334fcb45
Коммит
b741be82cf
|
@ -1160,14 +1160,25 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
|||
EVERGREEN_MAX_BACKENDS_MASK));
|
||||
break;
|
||||
}
|
||||
} else
|
||||
gb_backend_map =
|
||||
evergreen_get_tile_pipe_to_backend_map(rdev,
|
||||
rdev->config.evergreen.max_tile_pipes,
|
||||
rdev->config.evergreen.max_backends,
|
||||
((EVERGREEN_MAX_BACKENDS_MASK <<
|
||||
rdev->config.evergreen.max_backends) &
|
||||
EVERGREEN_MAX_BACKENDS_MASK));
|
||||
} else {
|
||||
switch (rdev->family) {
|
||||
case CHIP_CYPRESS:
|
||||
case CHIP_HEMLOCK:
|
||||
gb_backend_map = 0x66442200;
|
||||
break;
|
||||
case CHIP_JUNIPER:
|
||||
gb_backend_map = 0x00006420;
|
||||
break;
|
||||
default:
|
||||
gb_backend_map =
|
||||
evergreen_get_tile_pipe_to_backend_map(rdev,
|
||||
rdev->config.evergreen.max_tile_pipes,
|
||||
rdev->config.evergreen.max_backends,
|
||||
((EVERGREEN_MAX_BACKENDS_MASK <<
|
||||
rdev->config.evergreen.max_backends) &
|
||||
EVERGREEN_MAX_BACKENDS_MASK));
|
||||
}
|
||||
}
|
||||
|
||||
rdev->config.evergreen.tile_config = gb_addr_config;
|
||||
WREG32(GB_BACKEND_MAP, gb_backend_map);
|
||||
|
|
Загрузка…
Ссылка в новой задаче