aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4605-drm-amdgpu-initialize-vcn-jpeg-ring.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4605-drm-amdgpu-initialize-vcn-jpeg-ring.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4605-drm-amdgpu-initialize-vcn-jpeg-ring.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4605-drm-amdgpu-initialize-vcn-jpeg-ring.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4605-drm-amdgpu-initialize-vcn-jpeg-ring.patch
new file mode 100644
index 00000000..40e70996
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4605-drm-amdgpu-initialize-vcn-jpeg-ring.patch
@@ -0,0 +1,67 @@
+From d8cafcaa0e23ee60b242edbd2e75a2f77d0ba35b Mon Sep 17 00:00:00 2001
+From: Boyuan Zhang <boyuan.zhang@amd.com>
+Date: Wed, 30 May 2018 14:47:39 -0400
+Subject: [PATCH 4605/5725] drm/amdgpu: initialize vcn jpeg ring
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add implementations for vcn jpeg ring initialization
+
+Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
+index 4426393..9ded8ef 100644
+--- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
+@@ -125,6 +125,12 @@ static int vcn_v1_0_sw_init(void *handle)
+ return r;
+ }
+
++ ring = &adev->vcn.ring_jpeg;
++ sprintf(ring->name, "vcn_jpeg");
++ r = amdgpu_ring_init(adev, ring, 512, &adev->vcn.irq, 0);
++ if (r)
++ return r;
++
+ return r;
+ }
+
+@@ -179,6 +185,14 @@ static int vcn_v1_0_hw_init(void *handle)
+ }
+ }
+
++ ring = &adev->vcn.ring_jpeg;
++ ring->ready = true;
++ r = amdgpu_ring_test_ring(ring);
++ if (r) {
++ ring->ready = false;
++ goto done;
++ }
++
+ done:
+ if (!r)
+ DRM_INFO("VCN decode and encode initialized successfully.\n");
+@@ -758,6 +772,15 @@ static int vcn_v1_0_start(struct amdgpu_device *adev)
+ WREG32_SOC15(UVD, 0, mmUVD_RB_BASE_HI2, upper_32_bits(ring->gpu_addr));
+ WREG32_SOC15(UVD, 0, mmUVD_RB_SIZE2, ring->ring_size / 4);
+
++ ring = &adev->vcn.ring_jpeg;
++ WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_VMID, 0);
++ WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, (0x00000001L | 0x00000002L));
++ WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_LOW, lower_32_bits(ring->gpu_addr));
++ WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_HIGH, upper_32_bits(ring->gpu_addr));
++ WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_RPTR, 0);
++ WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_WPTR, 0);
++ WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, 0x00000002L);
++
+ return 0;
+ }
+
+--
+2.7.4
+