OSDN Git Service

accel/ivpu: Extend get_param ioctl to identify capabilities
authorStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Mon, 31 Jul 2023 16:12:56 +0000 (18:12 +0200)
committerStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Wed, 9 Aug 2023 11:48:56 +0000 (13:48 +0200)
Add DRM_IVPU_PARAM_CAPABILITIES parameters to get_param ioctl to query
driver capabilities. For now use it for identify metric streamer and
new dma memory range features. Currently upstream version of intel_vpu
does not have those, they will be added it the future.

Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230731161258.2987564-5-stanislaw.gruszka@linux.intel.com
drivers/accel/ivpu/ivpu_drv.c
include/uapi/drm/ivpu_accel.h

index fad607d..d33eb17 100644 (file)
@@ -115,6 +115,22 @@ void ivpu_file_priv_put(struct ivpu_file_priv **link)
        kref_put(&file_priv->ref, file_priv_release);
 }
 
+static int ivpu_get_capabilities(struct ivpu_device *vdev, struct drm_ivpu_param *args)
+{
+       switch (args->index) {
+       case DRM_IVPU_CAP_METRIC_STREAMER:
+               args->value = 0;
+               break;
+       case DRM_IVPU_CAP_DMA_MEMORY_RANGE:
+               args->value = 0;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 static int ivpu_get_param_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 {
        struct ivpu_file_priv *file_priv = file->driver_priv;
@@ -174,6 +190,9 @@ static int ivpu_get_param_ioctl(struct drm_device *dev, void *data, struct drm_f
        case DRM_IVPU_PARAM_SKU:
                args->value = vdev->hw->sku;
                break;
+       case DRM_IVPU_PARAM_CAPABILITIES:
+               ret = ivpu_get_capabilities(vdev, args);
+               break;
        default:
                ret = -EINVAL;
                break;
index 839820a..3e99b74 100644 (file)
@@ -60,6 +60,7 @@ extern "C" {
 #define DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID  10
 #define DRM_IVPU_PARAM_TILE_CONFIG         11
 #define DRM_IVPU_PARAM_SKU                 12
+#define DRM_IVPU_PARAM_CAPABILITIES        13
 
 #define DRM_IVPU_PLATFORM_TYPE_SILICON     0
 
@@ -68,6 +69,9 @@ extern "C" {
 #define DRM_IVPU_CONTEXT_PRIORITY_FOCUS            2
 #define DRM_IVPU_CONTEXT_PRIORITY_REALTIME  3
 
+#define DRM_IVPU_CAP_METRIC_STREAMER       1
+#define DRM_IVPU_CAP_DMA_MEMORY_RANGE       2
+
 /**
  * struct drm_ivpu_param - Get/Set VPU parameters
  */