accel/amdxdna: Add query firmware version
authorLizhi Hou <lizhi.hou@amd.com>
Fri, 6 Dec 2024 21:59:58 +0000 (13:59 -0800)
committerJeffrey Hugo <quic_jhugo@quicinc.com>
Fri, 13 Dec 2024 16:49:20 +0000 (09:49 -0700)
Enhance GET_INFO ioctl to support retrieving firmware version.

Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241206220001.164049-6-lizhi.hou@amd.com
drivers/accel/amdxdna/aie2_pci.c
include/uapi/drm/amdxdna_accel.h

index 19c76b2..ebf68e3 100644 (file)
@@ -640,6 +640,23 @@ static int aie2_get_aie_version(struct amdxdna_client *client,
        return 0;
 }
 
+static int aie2_get_firmware_version(struct amdxdna_client *client,
+                                    struct amdxdna_drm_get_info *args)
+{
+       struct amdxdna_drm_query_firmware_version version;
+       struct amdxdna_dev *xdna = client->xdna;
+
+       version.major = xdna->fw_ver.major;
+       version.minor = xdna->fw_ver.minor;
+       version.patch = xdna->fw_ver.sub;
+       version.build = xdna->fw_ver.build;
+
+       if (copy_to_user(u64_to_user_ptr(args->buffer), &version, sizeof(version)))
+               return -EFAULT;
+
+       return 0;
+}
+
 static int aie2_get_clock_metadata(struct amdxdna_client *client,
                                   struct amdxdna_drm_get_info *args)
 {
@@ -753,6 +770,9 @@ static int aie2_get_info(struct amdxdna_client *client, struct amdxdna_drm_get_i
        case DRM_AMDXDNA_QUERY_HW_CONTEXTS:
                ret = aie2_get_hwctx_status(client, args);
                break;
+       case DRM_AMDXDNA_QUERY_FIRMWARE_VERSION:
+               ret = aie2_get_firmware_version(client, args);
+               break;
        default:
                XDNA_ERR(xdna, "Not supported request parameter %u", args->param);
                ret = -EOPNOTSUPP;
index af12af8..4f15e53 100644 (file)
@@ -375,6 +375,20 @@ struct amdxdna_drm_query_hwctx {
        __u64 errors;
 };
 
+/**
+ * struct amdxdna_drm_query_firmware_version - Query the firmware version
+ * @major: The major version number
+ * @minor: The minor version number
+ * @patch: The patch level version number
+ * @build: The build ID
+ */
+struct amdxdna_drm_query_firmware_version {
+       __u32 major; /* out */
+       __u32 minor; /* out */
+       __u32 patch; /* out */
+       __u32 build; /* out */
+};
+
 enum amdxdna_drm_get_param {
        DRM_AMDXDNA_QUERY_AIE_STATUS,
        DRM_AMDXDNA_QUERY_AIE_METADATA,
@@ -382,7 +396,7 @@ enum amdxdna_drm_get_param {
        DRM_AMDXDNA_QUERY_CLOCK_METADATA,
        DRM_AMDXDNA_QUERY_SENSORS,
        DRM_AMDXDNA_QUERY_HW_CONTEXTS,
-       DRM_AMDXDNA_NUM_GET_PARAM,
+       DRM_AMDXDNA_QUERY_FIRMWARE_VERSION = 8,
 };
 
 /**