Commit 4e2c1ac2 authored by Oak Zeng's avatar Oak Zeng Committed by Alex Deucher

drm/amdgpu: Doorbell index initialization for ASICs before vega10

Initialize doorbell index for asics vi and cik

v2: Use enum definition instead of hardcoded number
Signed-off-by: default avatarOak Zeng <ozeng@amd.com>
Suggested-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Suggested-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 062f3807
...@@ -1755,6 +1755,7 @@ static const struct amdgpu_asic_funcs cik_asic_funcs = ...@@ -1755,6 +1755,7 @@ static const struct amdgpu_asic_funcs cik_asic_funcs =
.flush_hdp = &cik_flush_hdp, .flush_hdp = &cik_flush_hdp,
.invalidate_hdp = &cik_invalidate_hdp, .invalidate_hdp = &cik_invalidate_hdp,
.need_full_reset = &cik_need_full_reset, .need_full_reset = &cik_need_full_reset,
.init_doorbell_index = &legacy_doorbell_index_init,
}; };
static int cik_common_early_init(void *handle) static int cik_common_early_init(void *handle)
......
...@@ -30,4 +30,5 @@ void cik_srbm_select(struct amdgpu_device *adev, ...@@ -30,4 +30,5 @@ void cik_srbm_select(struct amdgpu_device *adev,
u32 me, u32 pipe, u32 queue, u32 vmid); u32 me, u32 pipe, u32 queue, u32 vmid);
int cik_set_ip_blocks(struct amdgpu_device *adev); int cik_set_ip_blocks(struct amdgpu_device *adev);
void legacy_doorbell_index_init(struct amdgpu_device *adev);
#endif #endif
...@@ -955,6 +955,7 @@ static const struct amdgpu_asic_funcs vi_asic_funcs = ...@@ -955,6 +955,7 @@ static const struct amdgpu_asic_funcs vi_asic_funcs =
.flush_hdp = &vi_flush_hdp, .flush_hdp = &vi_flush_hdp,
.invalidate_hdp = &vi_invalidate_hdp, .invalidate_hdp = &vi_invalidate_hdp,
.need_full_reset = &vi_need_full_reset, .need_full_reset = &vi_need_full_reset,
.init_doorbell_index = &legacy_doorbell_index_init,
}; };
#define CZ_REV_BRISTOL(rev) \ #define CZ_REV_BRISTOL(rev) \
...@@ -1712,3 +1713,21 @@ int vi_set_ip_blocks(struct amdgpu_device *adev) ...@@ -1712,3 +1713,21 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
return 0; return 0;
} }
void legacy_doorbell_index_init(struct amdgpu_device *adev)
{
adev->doorbell_index.kiq = AMDGPU_DOORBELL_KIQ;
adev->doorbell_index.mec_ring0 = AMDGPU_DOORBELL_MEC_RING0;
adev->doorbell_index.mec_ring1 = AMDGPU_DOORBELL_MEC_RING1;
adev->doorbell_index.mec_ring2 = AMDGPU_DOORBELL_MEC_RING2;
adev->doorbell_index.mec_ring3 = AMDGPU_DOORBELL_MEC_RING3;
adev->doorbell_index.mec_ring4 = AMDGPU_DOORBELL_MEC_RING4;
adev->doorbell_index.mec_ring5 = AMDGPU_DOORBELL_MEC_RING5;
adev->doorbell_index.mec_ring6 = AMDGPU_DOORBELL_MEC_RING6;
adev->doorbell_index.mec_ring7 = AMDGPU_DOORBELL_MEC_RING7;
adev->doorbell_index.gfx_ring0 = AMDGPU_DOORBELL_GFX_RING0;
adev->doorbell_index.sdma_engine0 = AMDGPU_DOORBELL_sDMA_ENGINE0;
adev->doorbell_index.sdma_engine1 = AMDGPU_DOORBELL_sDMA_ENGINE1;
adev->doorbell_index.ih = AMDGPU_DOORBELL_IH;
adev->doorbell_index.max_assignment = AMDGPU_DOORBELL_MAX_ASSIGNMENT;
}
...@@ -30,4 +30,5 @@ void vi_srbm_select(struct amdgpu_device *adev, ...@@ -30,4 +30,5 @@ void vi_srbm_select(struct amdgpu_device *adev,
u32 me, u32 pipe, u32 queue, u32 vmid); u32 me, u32 pipe, u32 queue, u32 vmid);
int vi_set_ip_blocks(struct amdgpu_device *adev); int vi_set_ip_blocks(struct amdgpu_device *adev);
void legacy_doorbell_index_init(struct amdgpu_device *adev);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment