diff options
Diffstat (limited to 'meta-baldeagle/recipes-kernel/linux/linux-yocto/0029-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VCE-version-parsing-and-checking.patch')
-rw-r--r-- | meta-baldeagle/recipes-kernel/linux/linux-yocto/0029-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VCE-version-parsing-and-checking.patch | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/meta-baldeagle/recipes-kernel/linux/linux-yocto/0029-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VCE-version-parsing-and-checking.patch b/meta-baldeagle/recipes-kernel/linux/linux-yocto/0029-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VCE-version-parsing-and-checking.patch deleted file mode 100644 index 1f11b462..00000000 --- a/meta-baldeagle/recipes-kernel/linux/linux-yocto/0029-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VCE-version-parsing-and-checking.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 511a68ce32e94aa20be2ed70b3eccb059aef87bb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Thu, 23 Jan 2014 09:50:49 -0700 -Subject: [PATCH 29/44] drm/radeon: add VCE version parsing and checking -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Also make the result available to userspace. - -Signed-off-by: Christian König <christian.koenig@amd.com> ---- - drivers/gpu/drm/radeon/radeon.h | 2 ++ - drivers/gpu/drm/radeon/radeon_kms.c | 6 ++++ - drivers/gpu/drm/radeon/radeon_vce.c | 56 +++++++++++++++++++++++++++++++---- - include/uapi/drm/radeon_drm.h | 4 +++ - 4 files changed, 62 insertions(+), 6 deletions(-) - -diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h -index 094e5f5..6abe303 100644 ---- a/drivers/gpu/drm/radeon/radeon.h -+++ b/drivers/gpu/drm/radeon/radeon.h -@@ -1601,6 +1601,8 @@ struct radeon_vce { - struct radeon_bo *vcpu_bo; - void *cpu_addr; - uint64_t gpu_addr; -+ unsigned fw_version; -+ unsigned fb_version; - atomic_t handles[RADEON_MAX_VCE_HANDLES]; - struct drm_file *filp[RADEON_MAX_VCE_HANDLES]; - }; -diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c -index c9dd7ef..cc2d29d 100644 ---- a/drivers/gpu/drm/radeon/radeon_kms.c -+++ b/drivers/gpu/drm/radeon/radeon_kms.c -@@ -457,6 +457,12 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) - DRM_DEBUG_KMS("BACKEND_ENABLED_MASK is si+ only!\n"); - } - break; -+ case RADEON_INFO_VCE_FW_VERSION: -+ *value = rdev->vce.fw_version; -+ break; -+ case RADEON_INFO_VCE_FB_VERSION: -+ *value = rdev->vce.fb_version; -+ break; - default: - DRM_DEBUG_KMS("Invalid request %d\n", info->request); - return -EINVAL; -diff --git a/drivers/gpu/drm/radeon/radeon_vce.c b/drivers/gpu/drm/radeon/radeon_vce.c -index 2547d8e..f46563b 100644 ---- a/drivers/gpu/drm/radeon/radeon_vce.c -+++ b/drivers/gpu/drm/radeon/radeon_vce.c -@@ -48,8 +48,11 @@ MODULE_FIRMWARE(FIRMWARE_BONAIRE); - */ - int radeon_vce_init(struct radeon_device *rdev) - { -- unsigned long bo_size; -- const char *fw_name; -+ static const char *fw_version = "[ATI LIB=VCEFW,"; -+ static const char *fb_version = "[ATI LIB=VCEFWSTATS,"; -+ unsigned long size; -+ const char *fw_name, *c; -+ uint8_t start, mid, end; - int i, r; - - switch (rdev->family) { -@@ -70,9 +73,50 @@ int radeon_vce_init(struct radeon_device *rdev) - return r; - } - -- bo_size = RADEON_GPU_PAGE_ALIGN(rdev->vce_fw->size) + -- RADEON_VCE_STACK_SIZE + RADEON_VCE_HEAP_SIZE; -- r = radeon_bo_create(rdev, bo_size, PAGE_SIZE, true, -+ /* search for firmware version */ -+ -+ size = rdev->vce_fw->size - strlen(fw_version) - 9; -+ c = rdev->vce_fw->data; -+ for (;size > 0; --size, ++c) -+ if (strncmp(c, fw_version, strlen(fw_version)) == 0) -+ break; -+ -+ if (size == 0) -+ return -EINVAL; -+ -+ c += strlen(fw_version); -+ if (sscanf(c, "%2hhd.%2hhd.%2hhd]", &start, &mid, &end) != 3) -+ return -EINVAL; -+ -+ /* search for feedback version */ -+ -+ size = rdev->vce_fw->size - strlen(fb_version) - 3; -+ c = rdev->vce_fw->data; -+ for (;size > 0; --size, ++c) -+ if (strncmp(c, fb_version, strlen(fb_version)) == 0) -+ break; -+ -+ if (size == 0) -+ return -EINVAL; -+ -+ c += strlen(fb_version); -+ if (sscanf(c, "%2u]", &rdev->vce.fb_version) != 1) -+ return -EINVAL; -+ -+ DRM_INFO("Found VCE firmware/feedback version %hhd.%hhd.%hhd / %d!\n", -+ start, mid, end, rdev->vce.fb_version); -+ -+ rdev->vce.fw_version = (start << 24) | (mid << 16) | (end << 8); -+ -+ /* we can only work with this fw version for now */ -+ if (rdev->vce.fw_version != ((40 << 24) | (2 << 16) | (2 << 8))) -+ return -EINVAL; -+ -+ /* load firmware into VRAM */ -+ -+ size = RADEON_GPU_PAGE_ALIGN(rdev->vce_fw->size) + -+ RADEON_VCE_STACK_SIZE + RADEON_VCE_HEAP_SIZE; -+ r = radeon_bo_create(rdev, size, PAGE_SIZE, true, - RADEON_GEM_DOMAIN_VRAM, NULL, &rdev->vce.vcpu_bo); - if (r) { - dev_err(rdev->dev, "(%d) failed to allocate VCE bo\n", r); -@@ -83,7 +127,7 @@ int radeon_vce_init(struct radeon_device *rdev) - if (r) - return r; - -- memset(rdev->vce.cpu_addr, 0, bo_size); -+ memset(rdev->vce.cpu_addr, 0, size); - memcpy(rdev->vce.cpu_addr, rdev->vce_fw->data, rdev->vce_fw->size); - - r = radeon_vce_suspend(rdev); -diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h -index b93c92a..2ff6e71 100644 ---- a/include/uapi/drm/radeon_drm.h -+++ b/include/uapi/drm/radeon_drm.h -@@ -986,6 +986,10 @@ struct drm_radeon_cs { - #define RADEON_INFO_CIK_MACROTILE_MODE_ARRAY 0x18 - /* query the number of render backends */ - #define RADEON_INFO_SI_BACKEND_ENABLED_MASK 0x19 -+/* version of VCE firmware */ -+#define RADEON_INFO_VCE_FW_VERSION 0x1b -+/* version of VCE feedback */ -+#define RADEON_INFO_VCE_FB_VERSION 0x1c - - - struct drm_radeon_info { --- -1.7.9.5 - |