Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 898e0d9d authored by Oak Zeng's avatar Oak Zeng Committed by Alex Deucher
Browse files

drm/amdgpu: Use sdma_engine array



Use sdma_engine[8] array instead of sdma_engine0~7 so it is easier
to program.

Signed-off-by: default avatarOak Zeng <Oak.Zeng@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a363553c
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -188,13 +188,13 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
			 * can use each doorbell assignment twice.
			 */
			gpu_resources.sdma_doorbell[0][i] =
				adev->doorbell_index.sdma_engine0 + (i >> 1);
				adev->doorbell_index.sdma_engine[0] + (i >> 1);
			gpu_resources.sdma_doorbell[0][i+1] =
				adev->doorbell_index.sdma_engine0 + 0x200 + (i >> 1);
				adev->doorbell_index.sdma_engine[0] + 0x200 + (i >> 1);
			gpu_resources.sdma_doorbell[1][i] =
				adev->doorbell_index.sdma_engine1 + (i >> 1);
				adev->doorbell_index.sdma_engine[1] + (i >> 1);
			gpu_resources.sdma_doorbell[1][i+1] =
				adev->doorbell_index.sdma_engine1 + 0x200 + (i >> 1);
				adev->doorbell_index.sdma_engine[1] + 0x200 + (i >> 1);
		}
		/* Doorbells 0x0e0-0ff and 0x2e0-2ff are reserved for
		 * SDMA, IH and VCN. So don't use them for the CP.
+1 −8
Original line number Diff line number Diff line
@@ -51,14 +51,7 @@ struct amdgpu_doorbell_index {
	uint32_t userqueue_start;
	uint32_t userqueue_end;
	uint32_t gfx_ring0;
	uint32_t sdma_engine0;
	uint32_t sdma_engine1;
	uint32_t sdma_engine2;
	uint32_t sdma_engine3;
	uint32_t sdma_engine4;
	uint32_t sdma_engine5;
	uint32_t sdma_engine6;
	uint32_t sdma_engine7;
	uint32_t sdma_engine[8];
	uint32_t ih;
	union {
		struct {
+1 −2
Original line number Diff line number Diff line
@@ -1145,8 +1145,7 @@ static int sdma_v3_0_sw_init(void *handle)
		ring->ring_obj = NULL;
		if (!amdgpu_sriov_vf(adev)) {
			ring->use_doorbell = true;
			ring->doorbell_index = (i == 0) ?
				adev->doorbell_index.sdma_engine0 : adev->doorbell_index.sdma_engine1;
			ring->doorbell_index = adev->doorbell_index.sdma_engine[i];
		} else {
			ring->use_pollmem = true;
		}
+2 −6
Original line number Diff line number Diff line
@@ -1522,9 +1522,7 @@ static int sdma_v4_0_sw_init(void *handle)
				ring->use_doorbell?"true":"false");

		/* doorbell size is 2 dwords, get DWORD offset */
		ring->doorbell_index = (i == 0) ?
			(adev->doorbell_index.sdma_engine0 << 1)
			: (adev->doorbell_index.sdma_engine1 << 1);
		ring->doorbell_index = adev->doorbell_index.sdma_engine[i] << 1;

		sprintf(ring->name, "sdma%d", i);
		r = amdgpu_ring_init(adev, ring, 1024,
@@ -1543,9 +1541,7 @@ static int sdma_v4_0_sw_init(void *handle)
			/* paging queue use same doorbell index/routing as gfx queue
			 * with 0x400 (4096 dwords) offset on second doorbell page
			 */
			ring->doorbell_index = (i == 0) ?
				(adev->doorbell_index.sdma_engine0 << 1)
				: (adev->doorbell_index.sdma_engine1 << 1);
			ring->doorbell_index = adev->doorbell_index.sdma_engine[i] << 1;
			ring->doorbell_index += 0x400;

			sprintf(ring->name, "page%d", i);
+2 −2
Original line number Diff line number Diff line
@@ -70,8 +70,8 @@ void vega10_doorbell_index_init(struct amdgpu_device *adev)
	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.sdma_engine[0] = AMDGPU_DOORBELL64_sDMA_ENGINE0;
	adev->doorbell_index.sdma_engine[1] = 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;
Loading