| From 6d8ea7de3f5035610f3bfacbe35e7b71ad1e4663 Mon Sep 17 00:00:00 2001 |
| From: Alex Deucher <alexander.deucher@amd.com> |
| Date: Mon, 17 Feb 2014 14:16:31 -0500 |
| Subject: drm/radeon: fix display tiling setup on SI |
| |
| From: Alex Deucher <alexander.deucher@amd.com> |
| |
| commit 6d8ea7de3f5035610f3bfacbe35e7b71ad1e4663 upstream. |
| |
| Apply the same logic as CI to SI for setting up the |
| display tiling parameters. The num banks may vary |
| per tiling index just like CI. |
| |
| Bugs: |
| https://bugs.freedesktop.org/show_bug.cgi?id=71488 |
| https://bugs.freedesktop.org/show_bug.cgi?id=73946 |
| https://bugs.freedesktop.org/show_bug.cgi?id=74927 |
| |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/radeon/atombios_crtc.c | 13 +++++++------ |
| 1 file changed, 7 insertions(+), 6 deletions(-) |
| |
| --- a/drivers/gpu/drm/radeon/atombios_crtc.c |
| +++ b/drivers/gpu/drm/radeon/atombios_crtc.c |
| @@ -1169,7 +1169,7 @@ static int dce4_crtc_do_set_base(struct |
| evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, &tile_split); |
| |
| /* Set NUM_BANKS. */ |
| - if (rdev->family >= CHIP_BONAIRE) { |
| + if (rdev->family >= CHIP_TAHITI) { |
| unsigned tileb, index, num_banks, tile_split_bytes; |
| |
| /* Calculate the macrotile mode index. */ |
| @@ -1187,13 +1187,14 @@ static int dce4_crtc_do_set_base(struct |
| return -EINVAL; |
| } |
| |
| - num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; |
| + if (rdev->family >= CHIP_BONAIRE) |
| + num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; |
| + else |
| + num_banks = (rdev->config.si.tile_mode_array[index] >> 20) & 0x3; |
| fb_format |= EVERGREEN_GRPH_NUM_BANKS(num_banks); |
| } else { |
| - /* SI and older. */ |
| - if (rdev->family >= CHIP_TAHITI) |
| - tmp = rdev->config.si.tile_config; |
| - else if (rdev->family >= CHIP_CAYMAN) |
| + /* NI and older. */ |
| + if (rdev->family >= CHIP_CAYMAN) |
| tmp = rdev->config.cayman.tile_config; |
| else |
| tmp = rdev->config.evergreen.tile_config; |