[PATCH 2/3] drm/radeon: Add implementation of get_fw_version

Oded Gabbay oded.gabbay at amd.com
Wed Dec 10 05:13:46 PST 2014


From: Alexey Skidanov <Alexey.Skidanov at amd.com>

This patch implements a new interface that was added to the kfd-->kgd interface.
The new interface function retrieves the firmware version that is currently
in use by the MEC engine. The firmware was uploaded to the MEC engine by the
radeon driver.

Signed-off-by: Alexey Skidanov <Alexey.Skidanov at amd.com>
Reviewed-by: Oded Gabbay <oded.gabbay at amd.com>
---
 drivers/gpu/drm/radeon/radeon_kfd.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/gpu/drm/radeon/radeon_kfd.c b/drivers/gpu/drm/radeon/radeon_kfd.c
index 065d020..223c831 100644
--- a/drivers/gpu/drm/radeon/radeon_kfd.c
+++ b/drivers/gpu/drm/radeon/radeon_kfd.c
@@ -28,6 +28,8 @@
 #include "cikd.h"
 #include "cik_reg.h"
 #include "radeon_kfd.h"
+#include "radeon_ucode.h"
+#include <linux/firmware.h>
 
 #define CIK_PIPE_PER_MEC	(4)
 
@@ -49,6 +51,7 @@ static uint64_t get_vmem_size(struct kgd_dev *kgd);
 static uint64_t get_gpu_clock_counter(struct kgd_dev *kgd);
 
 static uint32_t get_max_engine_clock_in_mhz(struct kgd_dev *kgd);
+static uint16_t get_fw_version(struct kgd_dev *kgd);
 
 /*
  * Register access functions
@@ -91,6 +94,7 @@ static const struct kfd2kgd_calls kfd2kgd = {
 	.hqd_load = kgd_hqd_load,
 	.hqd_is_occupies = kgd_hqd_is_occupies,
 	.hqd_destroy = kgd_hqd_destroy,
+	.get_fw_version = get_fw_version
 };
 
 static const struct kgd2kfd_calls *kgd2kfd;
@@ -561,3 +565,22 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd, uint32_t reset_type,
 	release_queue(kgd);
 	return 0;
 }
+
+static uint16_t get_fw_version(struct kgd_dev *kgd)
+{
+	struct radeon_device *rdev;
+	const struct gfx_firmware_header_v1_0 *hdr;
+
+	BUG_ON(kgd == NULL);
+
+	rdev = (struct radeon_device *) kgd;
+
+	BUG_ON(rdev->mec_fw == NULL);
+
+	hdr = (const struct gfx_firmware_header_v1_0 *)rdev->mec_fw->data;
+
+	BUG_ON(hdr == NULL);
+
+	/* Only 12 bit in use*/
+	return hdr->header.ucode_version;
+}
-- 
1.9.1



More information about the dri-devel mailing list