diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-amd/0023-drm-radeon-set-correct-number-of-banks-for-CIK-chips.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-amd/0023-drm-radeon-set-correct-number-of-banks-for-CIK-chips.patch | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/common/recipes-kernel/linux/linux-amd/0023-drm-radeon-set-correct-number-of-banks-for-CIK-chips.patch b/common/recipes-kernel/linux/linux-amd/0023-drm-radeon-set-correct-number-of-banks-for-CIK-chips.patch deleted file mode 100644 index 95399ce1..00000000 --- a/common/recipes-kernel/linux/linux-amd/0023-drm-radeon-set-correct-number-of-banks-for-CIK-chips.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 755e61a59b4a354e3b58909408f1510f2a3705d0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.olsak@amd.com> -Date: Mon, 23 Dec 2013 17:11:36 +0100 -Subject: [PATCH 23/60] drm/radeon: set correct number of banks for CIK chips - in DCE -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We don't have the NUM_BANKS parameter, so we have to calculate it -from the other parameters. NUM_BANKS is not constant on CIK. - -This fixes 2D tiling for the display engine on CIK. - -Signed-off-by: Marek Olšák <marek.olsak@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/radeon/atombios_crtc.c | 64 +++++++++++++++++++++++----------- - 1 file changed, 43 insertions(+), 21 deletions(-) - -diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c -index ba8742a..4be69b5 100644 ---- a/drivers/gpu/drm/radeon/atombios_crtc.c -+++ b/drivers/gpu/drm/radeon/atombios_crtc.c -@@ -1170,31 +1170,53 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, - } - - if (tiling_flags & RADEON_TILING_MACRO) { -- if (rdev->family >= CHIP_BONAIRE) -- tmp = rdev->config.cik.tile_config; -- else if (rdev->family >= CHIP_TAHITI) -- tmp = rdev->config.si.tile_config; -- else if (rdev->family >= CHIP_CAYMAN) -- tmp = rdev->config.cayman.tile_config; -- else -- tmp = rdev->config.evergreen.tile_config; -+ evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, &tile_split); - -- switch ((tmp & 0xf0) >> 4) { -- case 0: /* 4 banks */ -- fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_4_BANK); -- break; -- case 1: /* 8 banks */ -- default: -- fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_8_BANK); -- break; -- case 2: /* 16 banks */ -- fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_16_BANK); -- break; -+ /* Set NUM_BANKS. */ -+ if (rdev->family >= CHIP_BONAIRE) { -+ unsigned tileb, index, num_banks, tile_split_bytes; -+ -+ /* Calculate the macrotile mode index. */ -+ tile_split_bytes = 64 << tile_split; -+ tileb = 8 * 8 * target_fb->bits_per_pixel / 8; -+ tileb = min(tile_split_bytes, tileb); -+ -+ for (index = 0; tileb > 64; index++) { -+ tileb >>= 1; -+ } -+ -+ if (index >= 16) { -+ DRM_ERROR("Wrong screen bpp (%u) or tile split (%u)\n", -+ target_fb->bits_per_pixel, tile_split); -+ return -EINVAL; -+ } -+ -+ num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 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) -+ tmp = rdev->config.cayman.tile_config; -+ else -+ tmp = rdev->config.evergreen.tile_config; -+ -+ switch ((tmp & 0xf0) >> 4) { -+ case 0: /* 4 banks */ -+ fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_4_BANK); -+ break; -+ case 1: /* 8 banks */ -+ default: -+ fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_8_BANK); -+ break; -+ case 2: /* 16 banks */ -+ fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_16_BANK); -+ break; -+ } - } - - fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_2D_TILED_THIN1); -- -- evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, &tile_split); - fb_format |= EVERGREEN_GRPH_TILE_SPLIT(tile_split); - fb_format |= EVERGREEN_GRPH_BANK_WIDTH(bankw); - fb_format |= EVERGREEN_GRPH_BANK_HEIGHT(bankh); --- -1.9.1 - |