diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0857-drm-amdgpu-Vega10-doorbell-index-initialization.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0857-drm-amdgpu-Vega10-doorbell-index-initialization.patch | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0857-drm-amdgpu-Vega10-doorbell-index-initialization.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0857-drm-amdgpu-Vega10-doorbell-index-initialization.patch new file mode 100644 index 00000000..ce295080 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0857-drm-amdgpu-Vega10-doorbell-index-initialization.patch @@ -0,0 +1,111 @@ +From 9c416ed20bf212d463d4a6b652b0ee6b59bd8464 Mon Sep 17 00:00:00 2001 +From: Oak Zeng <ozeng@amd.com> +Date: Mon, 19 Nov 2018 09:25:37 -0600 +Subject: [PATCH 0857/2940] drm/amdgpu: Vega10 doorbell index initialization + +v2: Use enum definition instead of hardcoded value +v3: Remove unused enum definition + +Signed-off-by: Oak Zeng <ozeng@amd.com> +Suggested-by: Felix Kuehling <Felix.Kuehling@amd.com> +Suggested-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 14 +++------- + drivers/gpu/drm/amd/amdgpu/soc15.c | 1 + + drivers/gpu/drm/amd/amdgpu/soc15.h | 1 + + drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c | 28 ++++++++++++++++++++ + 4 files changed, 34 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index c72e81348794..f7f98ccfa30a 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -439,20 +439,14 @@ typedef enum _AMDGPU_DOORBELL64_ASSIGNMENT + * default non-graphics QWORD index is 0xe0 - 0xFF inclusive + */ + +- /* sDMA engines reserved from 0xe0 -0xef */ +- AMDGPU_DOORBELL64_sDMA_ENGINE0 = 0xE0, +- AMDGPU_DOORBELL64_sDMA_HI_PRI_ENGINE0 = 0xE1, +- AMDGPU_DOORBELL64_sDMA_ENGINE1 = 0xE8, +- AMDGPU_DOORBELL64_sDMA_HI_PRI_ENGINE1 = 0xE9, +- + /* For vega10 sriov, the sdma doorbell must be fixed as follow + * to keep the same setting with host driver, or it will + * happen conflicts + */ +- AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE0 = 0xF0, +- AMDGPU_VEGA10_DOORBELL64_sDMA_HI_PRI_ENGINE0 = 0xF1, +- AMDGPU_VEGA10_DOORBELL64_sDMA_ENGINE1 = 0xF2, +- AMDGPU_VEGA10_DOORBELL64_sDMA_HI_PRI_ENGINE1 = 0xF3, ++ AMDGPU_DOORBELL64_sDMA_ENGINE0 = 0xF0, ++ AMDGPU_DOORBELL64_sDMA_HI_PRI_ENGINE0 = 0xF1, ++ AMDGPU_DOORBELL64_sDMA_ENGINE1 = 0xF2, ++ AMDGPU_DOORBELL64_sDMA_HI_PRI_ENGINE1 = 0xF3, + + /* Interrupt handler */ + AMDGPU_DOORBELL64_IH = 0xF4, /* For legacy interrupt ring buffer */ +diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c +index a8ec261ab250..d4f6808d01d1 100644 +--- a/drivers/gpu/drm/amd/amdgpu/soc15.c ++++ b/drivers/gpu/drm/amd/amdgpu/soc15.c +@@ -613,6 +613,7 @@ static const struct amdgpu_asic_funcs soc15_asic_funcs = + .flush_hdp = &soc15_flush_hdp, + .invalidate_hdp = &soc15_invalidate_hdp, + .need_full_reset = &soc15_need_full_reset, ++ .init_doorbell_index = &vega10_doorbell_index_init, + }; + + static int soc15_common_early_init(void *handle) +diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.h b/drivers/gpu/drm/amd/amdgpu/soc15.h +index f8ad7804dc40..d37c57d09976 100644 +--- a/drivers/gpu/drm/amd/amdgpu/soc15.h ++++ b/drivers/gpu/drm/amd/amdgpu/soc15.h +@@ -58,4 +58,5 @@ void soc15_program_register_sequence(struct amdgpu_device *adev, + int vega10_reg_base_init(struct amdgpu_device *adev); + int vega20_reg_base_init(struct amdgpu_device *adev); + ++void vega10_doorbell_index_init(struct amdgpu_device *adev); + #endif +diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c b/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c +index c5c9b2bc190d..422674bb3cdf 100644 +--- a/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c ++++ b/drivers/gpu/drm/amd/amdgpu/vega10_reg_init.c +@@ -56,4 +56,32 @@ int vega10_reg_base_init(struct amdgpu_device *adev) + return 0; + } + ++void vega10_doorbell_index_init(struct amdgpu_device *adev) ++{ ++ adev->doorbell_index.kiq = AMDGPU_DOORBELL64_KIQ; ++ adev->doorbell_index.mec_ring0 = AMDGPU_DOORBELL64_MEC_RING0; ++ adev->doorbell_index.mec_ring1 = AMDGPU_DOORBELL64_MEC_RING1; ++ adev->doorbell_index.mec_ring2 = AMDGPU_DOORBELL64_MEC_RING2; ++ adev->doorbell_index.mec_ring3 = AMDGPU_DOORBELL64_MEC_RING3; ++ adev->doorbell_index.mec_ring4 = AMDGPU_DOORBELL64_MEC_RING4; ++ adev->doorbell_index.mec_ring5 = AMDGPU_DOORBELL64_MEC_RING5; ++ adev->doorbell_index.mec_ring6 = AMDGPU_DOORBELL64_MEC_RING6; ++ adev->doorbell_index.mec_ring7 = AMDGPU_DOORBELL64_MEC_RING7; ++ adev->doorbell_index.userqueue_start = AMDGPU_DOORBELL64_USERQUEUE_START; ++ adev->doorbell_index.userqueue_end = AMDGPU_DOORBELL64_USERQUEUE_END; ++ adev->doorbell_index.gfx_ring0 = AMDGPU_DOORBELL64_GFX_RING0; ++ adev->doorbell_index.sdma_engine0 = AMDGPU_DOORBELL64_sDMA_ENGINE0; ++ adev->doorbell_index.sdma_engine1 = AMDGPU_DOORBELL64_sDMA_ENGINE1; ++ adev->doorbell_index.ih = AMDGPU_DOORBELL64_IH; ++ adev->doorbell_index.uvd_vce.uvd_ring0_1 = AMDGPU_DOORBELL64_UVD_RING0_1; ++ adev->doorbell_index.uvd_vce.uvd_ring2_3 = AMDGPU_DOORBELL64_UVD_RING2_3; ++ adev->doorbell_index.uvd_vce.uvd_ring4_5 = AMDGPU_DOORBELL64_UVD_RING4_5; ++ adev->doorbell_index.uvd_vce.uvd_ring6_7 = AMDGPU_DOORBELL64_UVD_RING6_7; ++ adev->doorbell_index.uvd_vce.vce_ring0_1 = AMDGPU_DOORBELL64_VCE_RING0_1; ++ adev->doorbell_index.uvd_vce.vce_ring2_3 = AMDGPU_DOORBELL64_VCE_RING2_3; ++ adev->doorbell_index.uvd_vce.vce_ring4_5 = AMDGPU_DOORBELL64_VCE_RING4_5; ++ adev->doorbell_index.uvd_vce.vce_ring6_7 = AMDGPU_DOORBELL64_VCE_RING6_7; ++ /* In unit of dword doorbell */ ++ adev->doorbell_index.max_assignment = AMDGPU_DOORBELL64_MAX_ASSIGNMENT << 1; ++} + +-- +2.17.1 + |