diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0662-amdgpu-dce8-Update-IP-tables-to-enable-DAL-on-bonair.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0662-amdgpu-dce8-Update-IP-tables-to-enable-DAL-on-bonair.patch | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0662-amdgpu-dce8-Update-IP-tables-to-enable-DAL-on-bonair.patch b/common/recipes-kernel/linux/files/0662-amdgpu-dce8-Update-IP-tables-to-enable-DAL-on-bonair.patch new file mode 100644 index 00000000..15b39a50 --- /dev/null +++ b/common/recipes-kernel/linux/files/0662-amdgpu-dce8-Update-IP-tables-to-enable-DAL-on-bonair.patch @@ -0,0 +1,237 @@ +From 7f26858f4a6c4bfca0f6b2ec08db493c270825a4 Mon Sep 17 00:00:00 2001 +From: Chris Park <Chris.Park@amd.com> +Date: Tue, 5 Jan 2016 16:37:46 -0500 +Subject: [PATCH 0662/1110] amdgpu/dce8: Update IP tables to enable DAL on + bonaire and hawaii + +Update IP tables for bonaire and hawaii to enable DAL rather than the legacy dce8 code. + +Signed-off-by: Chris Park <Chris.Park@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 +- + drivers/gpu/drm/amd/amdgpu/cik.c | 161 +++++++++++++++++++++++++++++ + 2 files changed, 167 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index 7e24cdb..a38ac17 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -1388,10 +1388,14 @@ static int amdgpu_resume(struct amdgpu_device *adev) + */ + bool amdgpu_device_has_dal_support(struct amdgpu_device *adev) + { +- + switch(adev->asic_type) { +- case CHIP_CARRIZO: ++#if defined(CONFIG_DRM_AMD_DAL) && defined(CONFIG_DRM_AMD_DAL_DCE8_0) ++ case CHIP_BONAIRE: ++ case CHIP_HAWAII: ++ return true; ++#endif + #if defined(CONFIG_DRM_AMD_DAL) && defined(CONFIG_DRM_AMD_DAL_DCE11_0) ++ case CHIP_CARRIZO: + return true; + #endif + default: +diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c +index 009598b..7efe693 100644 +--- a/drivers/gpu/drm/amd/amdgpu/cik.c ++++ b/drivers/gpu/drm/amd/amdgpu/cik.c +@@ -65,6 +65,7 @@ + #include "oss/oss_2_0_d.h" + #include "oss/oss_2_0_sh_mask.h" + ++#include "amdgpu_dm.h" + #include "amdgpu_amdkfd.h" + #include "amdgpu_powerplay.h" + +@@ -1626,6 +1627,76 @@ static uint32_t cik_get_rev_id(struct amdgpu_device *adev) + >> CC_DRM_ID_STRAPS__ATI_REV_ID__SHIFT; + } + ++#if defined(CONFIG_DRM_AMD_DAL_DCE8_0) ++static const struct amdgpu_ip_block_version bonaire_ip_blocks_dal[] = ++{ ++ /* ORDER MATTERS! */ ++ { ++ .type = AMD_IP_BLOCK_TYPE_COMMON, ++ .major = 1, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &cik_common_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_GMC, ++ .major = 7, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &gmc_v7_0_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_IH, ++ .major = 2, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &cik_ih_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_SMC, ++ .major = 7, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &amdgpu_pp_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_DCE, ++ .major = 8, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &amdgpu_dm_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_GFX, ++ .major = 7, ++ .minor = 2, ++ .rev = 0, ++ .funcs = &gfx_v7_0_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_SDMA, ++ .major = 2, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &cik_sdma_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_UVD, ++ .major = 4, ++ .minor = 2, ++ .rev = 0, ++ .funcs = &uvd_v4_2_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_VCE, ++ .major = 2, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &vce_v2_0_ip_funcs, ++ }, ++}; ++#endif ++ + static const struct amdgpu_ip_block_version bonaire_ip_blocks[] = + { + /* ORDER MATTERS! */ +@@ -1694,6 +1765,76 @@ static const struct amdgpu_ip_block_version bonaire_ip_blocks[] = + }, + }; + ++#if defined(CONFIG_DRM_AMD_DAL_DCE8_0) ++static const struct amdgpu_ip_block_version hawaii_ip_blocks_dal[] = ++{ ++ /* ORDER MATTERS! */ ++ { ++ .type = AMD_IP_BLOCK_TYPE_COMMON, ++ .major = 1, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &cik_common_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_GMC, ++ .major = 7, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &gmc_v7_0_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_IH, ++ .major = 2, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &cik_ih_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_SMC, ++ .major = 7, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &amdgpu_pp_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_DCE, ++ .major = 8, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &amdgpu_dm_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_GFX, ++ .major = 7, ++ .minor = 3, ++ .rev = 0, ++ .funcs = &gfx_v7_0_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_SDMA, ++ .major = 2, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &cik_sdma_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_UVD, ++ .major = 4, ++ .minor = 2, ++ .rev = 0, ++ .funcs = &uvd_v4_2_ip_funcs, ++ }, ++ { ++ .type = AMD_IP_BLOCK_TYPE_VCE, ++ .major = 2, ++ .minor = 0, ++ .rev = 0, ++ .funcs = &vce_v2_0_ip_funcs, ++ }, ++}; ++#endif ++ + static const struct amdgpu_ip_block_version hawaii_ip_blocks[] = + { + /* ORDER MATTERS! */ +@@ -1970,12 +2111,32 @@ int cik_set_ip_blocks(struct amdgpu_device *adev) + { + switch (adev->asic_type) { + case CHIP_BONAIRE: ++#if defined(CONFIG_DRM_AMD_DAL_DCE8_0) ++ if (amdgpu_dal && amdgpu_device_has_dal_support(adev)) { ++ adev->ip_blocks = bonaire_ip_blocks_dal; ++ adev->num_ip_blocks = ARRAY_SIZE(bonaire_ip_blocks_dal); ++ } else { ++ adev->ip_blocks = bonaire_ip_blocks; ++ adev->num_ip_blocks = ARRAY_SIZE(bonaire_ip_blocks); ++ } ++#else + adev->ip_blocks = bonaire_ip_blocks; + adev->num_ip_blocks = ARRAY_SIZE(bonaire_ip_blocks); ++#endif + break; + case CHIP_HAWAII: ++#if defined(CONFIG_DRM_AMD_DAL_DCE8_0) ++ if (amdgpu_dal && amdgpu_device_has_dal_support(adev)) { ++ adev->ip_blocks = hawaii_ip_blocks_dal; ++ adev->num_ip_blocks = ARRAY_SIZE(hawaii_ip_blocks_dal); ++ } else { ++ adev->ip_blocks = hawaii_ip_blocks; ++ adev->num_ip_blocks = ARRAY_SIZE(hawaii_ip_blocks); ++ } ++#else + adev->ip_blocks = hawaii_ip_blocks; + adev->num_ip_blocks = ARRAY_SIZE(hawaii_ip_blocks); ++#endif + break; + case CHIP_KAVERI: + adev->ip_blocks = kaveri_ip_blocks; +-- +2.7.4 + |