drm/amdgpu: Doorbell index initialization for ASICs before vega10
authorOak Zeng <ozeng@amd.com>
Mon, 19 Nov 2018 15:51:20 +0000 (09:51 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 28 Nov 2018 20:55:32 +0000 (15:55 -0500)
Initialize doorbell index for asics vi and cik

v2: Use enum definition instead of hardcoded number

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/cik.c
drivers/gpu/drm/amd/amdgpu/cik.h
drivers/gpu/drm/amd/amdgpu/vi.c
drivers/gpu/drm/amd/amdgpu/vi.h

index f41f5f57e9f3606d0f26c0fb134133daf7509198..71c50d8900e39137f7749c6a94f41426da32e711 100644 (file)
@@ -1755,6 +1755,7 @@ static const struct amdgpu_asic_funcs cik_asic_funcs =
        .flush_hdp = &cik_flush_hdp,
        .invalidate_hdp = &cik_invalidate_hdp,
        .need_full_reset = &cik_need_full_reset,
+       .init_doorbell_index = &legacy_doorbell_index_init,
 };
 
 static int cik_common_early_init(void *handle)
index e49c6f15a0a00f58891856dfd6e56a851268034e..54c625a2e57054568f3498236186822cc55ed2d3 100644 (file)
@@ -30,4 +30,5 @@ void cik_srbm_select(struct amdgpu_device *adev,
                     u32 me, u32 pipe, u32 queue, u32 vmid);
 int cik_set_ip_blocks(struct amdgpu_device *adev);
 
+void legacy_doorbell_index_init(struct amdgpu_device *adev);
 #endif
index 07880d35e9de8600d1ea23f9f539790177e91cda..ff2906c215fa8be32dd53e6e6899b3c780c850f4 100644 (file)
@@ -955,6 +955,7 @@ static const struct amdgpu_asic_funcs vi_asic_funcs =
        .flush_hdp = &vi_flush_hdp,
        .invalidate_hdp = &vi_invalidate_hdp,
        .need_full_reset = &vi_need_full_reset,
+       .init_doorbell_index = &legacy_doorbell_index_init,
 };
 
 #define CZ_REV_BRISTOL(rev)     \
@@ -1712,3 +1713,21 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
 
        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;
+}
index 0429fe33226940d1c52cfb556ee6b78ef94f2728..8de0772f986c53ea469d2cffe5c4ddb098f9f302 100644 (file)
@@ -30,4 +30,5 @@ void vi_srbm_select(struct amdgpu_device *adev,
                    u32 me, u32 pipe, u32 queue, u32 vmid);
 int vi_set_ip_blocks(struct amdgpu_device *adev);
 
+void legacy_doorbell_index_init(struct amdgpu_device *adev);
 #endif