It is just update of autogenerated FW API header file provided by the
firmware team. I have sent v1 version of the patch with updated commit
message to better reflect that.

Karol

On 9/15/2025 10:39 PM, Lizhi Hou wrote:
>
> On 9/15/25 03:35, Karol Wachowski wrote:
>> Update firmware JSM API header to version 3.32.5
>
> The changes seem more than updating header version?
>
>
> Lizhi
>
>>
>> Signed-off-by: Karol Wachowski <karol.wachow...@linux.intel.com>
>> ---
>>   drivers/accel/ivpu/vpu_jsm_api.h | 513 ++++++++++++++++++++-----------
>>   1 file changed, 326 insertions(+), 187 deletions(-)
>>
>> diff --git a/drivers/accel/ivpu/vpu_jsm_api.h
>> b/drivers/accel/ivpu/vpu_jsm_api.h
>> index 4b6b2b3d2583..de1b37ea1251 100644
>> --- a/drivers/accel/ivpu/vpu_jsm_api.h
>> +++ b/drivers/accel/ivpu/vpu_jsm_api.h
>> @@ -1,15 +1,16 @@
>>   /* SPDX-License-Identifier: MIT */
>>   /*
>> - * Copyright (c) 2020-2024, Intel Corporation.
>> + * Copyright (c) 2020-2025, Intel Corporation.
>> + */
>> +
>> +/**
>> + * @addtogroup Jsm
>> + * @{
>>    */
>>     /**
>>    * @file
>>    * @brief JSM shared definitions
>> - *
>> - * @ingroup Jsm
>> - * @brief JSM shared definitions
>> - * @{
>>    */
>>   #ifndef VPU_JSM_API_H
>>   #define VPU_JSM_API_H
>> @@ -22,12 +23,12 @@
>>   /*
>>    * Minor version changes when API backward compatibility is preserved.
>>    */
>> -#define VPU_JSM_API_VER_MINOR 29
>> +#define VPU_JSM_API_VER_MINOR 32
>>     /*
>>    * API header changed (field names, documentation, formatting) but
>> API itself has not been changed
>>    */
>> -#define VPU_JSM_API_VER_PATCH 0
>> +#define VPU_JSM_API_VER_PATCH 5
>>     /*
>>    * Index in the API version table
>> @@ -71,9 +72,12 @@
>>   #define VPU_JSM_STATUS_MVNCI_OUT_OF_RESOURCES         0xAU
>>   #define VPU_JSM_STATUS_MVNCI_NOT_IMPLEMENTED         0xBU
>>   #define VPU_JSM_STATUS_MVNCI_INTERNAL_ERROR         0xCU
>> -/* Job status returned when the job was preempted mid-inference */
>> +/* @deprecated (use VPU_JSM_STATUS_PREEMPTED_MID_COMMAND instead) */
>>   #define VPU_JSM_STATUS_PREEMPTED_MID_INFERENCE         0xDU
>> +/* Job status returned when the job was preempted mid-command */
>> +#define VPU_JSM_STATUS_PREEMPTED_MID_COMMAND         0xDU
>>   #define VPU_JSM_STATUS_MVNCI_CONTEXT_VIOLATION_HW     0xEU
>> +#define VPU_JSM_STATUS_MVNCI_PREEMPTION_TIMED_OUT     0xFU
>>     /*
>>    * Host <-> VPU IPC channels.
>> @@ -134,11 +138,21 @@ enum {
>>        *  2. Native fence queues are only supported on VPU 40xx onwards.
>>        */
>>       VPU_JOB_QUEUE_FLAGS_USE_NATIVE_FENCE_MASK = (1 << 1U),
>> -
>>       /*
>>        * Enable turbo mode for testing NPU performance; not
>> recommended for regular usage.
>>        */
>> -    VPU_JOB_QUEUE_FLAGS_TURBO_MODE = (1 << 2U)
>> +    VPU_JOB_QUEUE_FLAGS_TURBO_MODE = (1 << 2U),
>> +    /*
>> +     * Queue error detection mode flag
>> +     * For 'interactive' queues (this bit not set), the FW will
>> identify queues that have not
>> +     * completed a job inside the TDR timeout as in error as part of
>> engine reset sequence.
>> +     * For 'non-interactive' queues (this bit set), the FW will
>> identify queues that have not
>> +     * progressed the heartbeat inside the non-interactive
>> no-progress timeout as in error as
>> +     * part of engine reset sequence. Additionally, there is an
>> upper limit applied to these
>> +     * queues: even if they progress the heartbeat, if they run
>> longer than non-interactive
>> +     * timeout, then the FW will also identify them as in error.
>> +     */
>> +    VPU_JOB_QUEUE_FLAGS_NON_INTERACTIVE = (1 << 3U)
>>   };
>>     /*
>> @@ -209,7 +223,7 @@ enum {
>>    */
>>   #define VPU_INLINE_CMD_TYPE_FENCE_SIGNAL 0x2
>>   -/*
>> +/**
>>    * Job scheduling priority bands for both hardware scheduling and
>> OS scheduling.
>>    */
>>   enum vpu_job_scheduling_priority_band {
>> @@ -220,16 +234,16 @@ enum vpu_job_scheduling_priority_band {
>>       VPU_JOB_SCHEDULING_PRIORITY_BAND_COUNT = 4,
>>   };
>>   -/*
>> +/**
>>    * Job format.
>>    * Jobs defines the actual workloads to be executed by a given engine.
>>    */
>>   struct vpu_job_queue_entry {
>> -    /**< Address of VPU commands batch buffer */
>> +    /** Address of VPU commands batch buffer */
>>       u64 batch_buf_addr;
>> -    /**< Job ID */
>> +    /** Job ID */
>>       u32 job_id;
>> -    /**< Flags bit field, see VPU_JOB_FLAGS_* above */
>> +    /** Flags bit field, see VPU_JOB_FLAGS_* above */
>>       u32 flags;
>>       /**
>>        * Doorbell ring timestamp taken by KMD from SoC's global
>> system clock, in
>> @@ -237,20 +251,20 @@ struct vpu_job_queue_entry {
>>        * to match other profiling timestamps.
>>        */
>>       u64 doorbell_timestamp;
>> -    /**< Extra id for job tracking, used only in the firmware perf
>> traces */
>> +    /** Extra id for job tracking, used only in the firmware perf
>> traces */
>>       u64 host_tracking_id;
>> -    /**< Address of the primary preemption buffer to use for this
>> job */
>> +    /** Address of the primary preemption buffer to use for this job */
>>       u64 primary_preempt_buf_addr;
>> -    /**< Size of the primary preemption buffer to use for this job */
>> +    /** Size of the primary preemption buffer to use for this job */
>>       u32 primary_preempt_buf_size;
>> -    /**< Size of secondary preemption buffer to use for this job */
>> +    /** Size of secondary preemption buffer to use for this job */
>>       u32 secondary_preempt_buf_size;
>> -    /**< Address of secondary preemption buffer to use for this job */
>> +    /** Address of secondary preemption buffer to use for this job */
>>       u64 secondary_preempt_buf_addr;
>>       u64 reserved_0;
>>   };
>>   -/*
>> +/**
>>    * Inline command format.
>>    * Inline commands are the commands executed at scheduler level
>> (typically,
>>    * synchronization directives). Inline command and job objects must
>> be of
>> @@ -258,34 +272,36 @@ struct vpu_job_queue_entry {
>>    */
>>   struct vpu_inline_cmd {
>>       u64 reserved_0;
>> -    /* Inline command type, see VPU_INLINE_CMD_TYPE_* defines. */
>> +    /** Inline command type, see VPU_INLINE_CMD_TYPE_* defines. */
>>       u32 type;
>> -    /* Flags bit field, see VPU_JOB_FLAGS_* above. */
>> +    /** Flags bit field, see VPU_JOB_FLAGS_* above. */
>>       u32 flags;
>> -    /* Inline command payload. Depends on inline command type. */
>> -    union {
>> -        /* Fence (wait and signal) commands' payload. */
>> -        struct {
>> -            /* Fence object handle. */
>> +    /** Inline command payload. Depends on inline command type. */
>> +    union payload {
>> +        /** Fence (wait and signal) commands' payload. */
>> +        struct fence {
>> +            /** Fence object handle. */
>>               u64 fence_handle;
>> -            /* User VA of the current fence value. */
>> +            /** User VA of the current fence value. */
>>               u64 current_value_va;
>> -            /* User VA of the monitored fence value (read-only). */
>> +            /** User VA of the monitored fence value (read-only). */
>>               u64 monitored_value_va;
>> -            /* Value to wait for or write in fence location. */
>> +            /** Value to wait for or write in fence location. */
>>               u64 value;
>> -            /* User VA of the log buffer in which to add log entry
>> on completion. */
>> +            /** User VA of the log buffer in which to add log entry
>> on completion. */
>>               u64 log_buffer_va;
>> -            /* NPU private data. */
>> +            /** NPU private data. */
>>               u64 npu_private_data;
>>           } fence;
>> -        /* Other commands do not have a payload. */
>> -        /* Payload definition for future inline commands can be
>> inserted here. */
>> +        /**
>> +         * Other commands do not have a payload:
>> +         * Payload definition for future inline commands can be
>> inserted here.
>> +         */
>>           u64 reserved_1[6];
>>       } payload;
>>   };
>>   -/*
>> +/**
>>    * Job queue slots can be populated either with job objects or
>> inline command objects.
>>    */
>>   union vpu_jobq_slot {
>> @@ -293,7 +309,7 @@ union vpu_jobq_slot {
>>       struct vpu_inline_cmd inline_cmd;
>>   };
>>   -/*
>> +/**
>>    * Job queue control registers.
>>    */
>>   struct vpu_job_queue_header {
>> @@ -301,18 +317,18 @@ struct vpu_job_queue_header {
>>       u32 head;
>>       u32 tail;
>>       u32 flags;
>> -    /* Set to 1 to indicate priority_band field is valid */
>> +    /** Set to 1 to indicate priority_band field is valid */
>>       u32 priority_band_valid;
>> -    /*
>> +    /**
>>        * Priority for the work of this job queue, valid only if the
>> HWS is NOT used
>> -     * and the `priority_band_valid` is set to 1. It is applied only
>> during
>> -     * the VPU_JSM_MSG_REGISTER_DB message processing.
>> -     * The device firmware might use the `priority_band` to optimize
>> the power
>> +     * and the @ref priority_band_valid is set to 1. It is applied
>> only during
>> +     * the @ref VPU_JSM_MSG_REGISTER_DB message processing.
>> +     * The device firmware might use the priority_band to optimize
>> the power
>>        * management logic, but it will not affect the order of jobs.
>>        * Available priority bands: @see enum
>> vpu_job_scheduling_priority_band
>>        */
>>       u32 priority_band;
>> -    /* Inside realtime band assigns a further priority, limited to
>> 0..31 range */
>> +    /** Inside realtime band assigns a further priority, limited to
>> 0..31 range */
>>       u32 realtime_priority_level;
>>       u32 reserved_0[9];
>>   };
>> @@ -337,16 +353,16 @@ enum vpu_trace_entity_type {
>>       VPU_TRACE_ENTITY_TYPE_HW_COMPONENT = 2,
>>   };
>>   -/*
>> +/**
>>    * HWS specific log buffer header details.
>>    * Total size is 32 bytes.
>>    */
>>   struct vpu_hws_log_buffer_header {
>> -    /* Written by VPU after adding a log entry. Initialised by host
>> to 0. */
>> +    /** Written by VPU after adding a log entry. Initialised by host
>> to 0. */
>>       u32 first_free_entry_index;
>> -    /* Incremented by VPU every time the VPU writes the 0th entry;
>> initialised by host to 0. */
>> +    /** Incremented by VPU every time the VPU writes the 0th entry;
>> initialised by host to 0. */
>>       u32 wraparound_count;
>> -    /*
>> +    /**
>>        * This is the number of buffers that can be stored in the log
>> buffer provided by the host.
>>        * It is written by host before passing buffer to VPU. VPU
>> should consider it read-only.
>>        */
>> @@ -354,14 +370,14 @@ struct vpu_hws_log_buffer_header {
>>       u64 reserved[2];
>>   };
>>   -/*
>> +/**
>>    * HWS specific log buffer entry details.
>>    * Total size is 32 bytes.
>>    */
>>   struct vpu_hws_log_buffer_entry {
>> -    /* VPU timestamp must be an invariant timer tick (not impacted
>> by DVFS) */
>> +    /** VPU timestamp must be an invariant timer tick (not impacted
>> by DVFS) */
>>       u64 vpu_timestamp;
>> -    /*
>> +    /**
>>        * Operation type:
>>        *     0 - context state change
>>        *     1 - queue new work
>> @@ -371,7 +387,7 @@ struct vpu_hws_log_buffer_entry {
>>        */
>>       u32 operation_type;
>>       u32 reserved;
>> -    /* Operation data depends on operation type */
>> +    /** Operation data depends on operation type */
>>       u64 operation_data[2];
>>   };
>>   @@ -381,51 +397,54 @@ enum vpu_hws_native_fence_log_type {
>>       VPU_HWS_NATIVE_FENCE_LOG_TYPE_SIGNALS = 2
>>   };
>>   -/* HWS native fence log buffer header. */
>> +/** HWS native fence log buffer header. */
>>   struct vpu_hws_native_fence_log_header {
>>       union {
>>           struct {
>> -            /* Index of the first free entry in buffer. */
>> +            /** Index of the first free entry in buffer. */
>>               u32 first_free_entry_idx;
>> -            /* Incremented each time NPU wraps around the buffer to
>> write next entry. */
>> +            /**
>> +             * Incremented each time NPU wraps around
>> +             * the buffer to write next entry.
>> +             */
>>               u32 wraparound_count;
>>           };
>> -        /* Field allowing atomic update of both fields above. */
>> +        /** Field allowing atomic update of both fields above. */
>>           u64 atomic_wraparound_and_entry_idx;
>>       };
>> -    /* Log buffer type, see enum vpu_hws_native_fence_log_type. */
>> +    /** Log buffer type, see enum vpu_hws_native_fence_log_type. */
>>       u64 type;
>> -    /* Allocated number of entries in the log buffer. */
>> +    /** Allocated number of entries in the log buffer. */
>>       u64 entry_nb;
>>       u64 reserved[2];
>>   };
>>   -/* Native fence log operation types. */
>> +/** Native fence log operation types. */
>>   enum vpu_hws_native_fence_log_op {
>>       VPU_HWS_NATIVE_FENCE_LOG_OP_SIGNAL_EXECUTED = 0,
>>       VPU_HWS_NATIVE_FENCE_LOG_OP_WAIT_UNBLOCKED = 1
>>   };
>>   -/* HWS native fence log entry. */
>> +/** HWS native fence log entry. */
>>   struct vpu_hws_native_fence_log_entry {
>> -    /* Newly signaled/unblocked fence value. */
>> +    /** Newly signaled/unblocked fence value. */
>>       u64 fence_value;
>> -    /* Native fence object handle to which this operation belongs. */
>> +    /** Native fence object handle to which this operation belongs. */
>>       u64 fence_handle;
>> -    /* Operation type, see enum vpu_hws_native_fence_log_op. */
>> +    /** Operation type, see enum vpu_hws_native_fence_log_op. */
>>       u64 op_type;
>>       u64 reserved_0;
>> -    /*
>> +    /**
>>        * VPU_HWS_NATIVE_FENCE_LOG_OP_WAIT_UNBLOCKED only: Timestamp
>> at which fence
>>        * wait was started (in NPU SysTime).
>>        */
>>       u64 fence_wait_start_ts;
>>       u64 reserved_1;
>> -    /* Timestamp at which fence operation was completed (in NPU
>> SysTime). */
>> +    /** Timestamp at which fence operation was completed (in NPU
>> SysTime). */
>>       u64 fence_end_ts;
>>   };
>>   -/* Native fence log buffer. */
>> +/** Native fence log buffer. */
>>   struct vpu_hws_native_fence_log_buffer {
>>       struct vpu_hws_native_fence_log_header header;
>>       struct vpu_hws_native_fence_log_entry entry[];
>> @@ -450,8 +469,21 @@ enum vpu_ipc_msg_type {
>>        * after preemption or when resubmitting jobs to the queue.
>>        */
>>       VPU_JSM_MSG_ENGINE_PREEMPT = 0x1101,
>> +    /**
>> +     * OS scheduling doorbell register command
>> +     * @see vpu_ipc_msg_payload_register_db
>> +     */
>>       VPU_JSM_MSG_REGISTER_DB = 0x1102,
>> +    /**
>> +     * OS scheduling doorbell unregister command
>> +     * @see vpu_ipc_msg_payload_unregister_db
>> +     */
>>       VPU_JSM_MSG_UNREGISTER_DB = 0x1103,
>> +    /**
>> +     * Query engine heartbeat. Heartbeat is expected to increase
>> monotonically
>> +     * and increase while work is being progressed by NPU.
>> +     * @see vpu_ipc_msg_payload_query_engine_hb
>> +     */
>>       VPU_JSM_MSG_QUERY_ENGINE_HB = 0x1104,
>>       VPU_JSM_MSG_GET_POWER_LEVEL_COUNT = 0x1105,
>>       VPU_JSM_MSG_GET_POWER_LEVEL = 0x1106,
>> @@ -477,6 +509,7 @@ enum vpu_ipc_msg_type {
>>        * aborted and removed from internal scheduling queues. All
>> doorbells assigned
>>        * to the host_ssid are unregistered and any internal FW
>> resources belonging to
>>        * the host_ssid are released.
>> +     * @see vpu_ipc_msg_payload_ssid_release
>>        */
>>       VPU_JSM_MSG_SSID_RELEASE = 0x110e,
>>       /**
>> @@ -504,26 +537,51 @@ enum vpu_ipc_msg_type {
>>        * @see vpu_jsm_metric_streamer_start
>>        */
>>       VPU_JSM_MSG_METRIC_STREAMER_INFO = 0x1112,
>> -    /** Control command: Priority band setup */
>> +    /**
>> +     * Control command: Priority band setup
>> +     * @see vpu_ipc_msg_payload_hws_priority_band_setup
>> +     */
>>       VPU_JSM_MSG_SET_PRIORITY_BAND_SETUP = 0x1113,
>> -    /** Control command: Create command queue */
>> +    /**
>> +     * Control command: Create command queue
>> +     * @see vpu_ipc_msg_payload_hws_create_cmdq
>> +     */
>>       VPU_JSM_MSG_CREATE_CMD_QUEUE = 0x1114,
>> -    /** Control command: Destroy command queue */
>> +    /**
>> +     * Control command: Destroy command queue
>> +     * @see vpu_ipc_msg_payload_hws_destroy_cmdq
>> +     */
>>       VPU_JSM_MSG_DESTROY_CMD_QUEUE = 0x1115,
>> -    /** Control command: Set context scheduling properties */
>> +    /**
>> +     * Control command: Set context scheduling properties
>> +     * @see vpu_ipc_msg_payload_hws_set_context_sched_properties
>> +     */
>>       VPU_JSM_MSG_SET_CONTEXT_SCHED_PROPERTIES = 0x1116,
>> -    /*
>> +    /**
>>        * Register a doorbell to notify VPU of new work. The doorbell
>> may later be
>>        * deallocated or reassigned to another context.
>> +     * @see vpu_jsm_hws_register_db
>>        */
>>       VPU_JSM_MSG_HWS_REGISTER_DB = 0x1117,
>> -    /** Control command: Log buffer setting */
>> +    /**
>> +     * Control command: Log buffer setting
>> +     * @see vpu_ipc_msg_payload_hws_set_scheduling_log
>> +     */
>>       VPU_JSM_MSG_HWS_SET_SCHEDULING_LOG = 0x1118,
>> -    /* Control command: Suspend command queue. */
>> +    /**
>> +     * Control command: Suspend command queue.
>> +     * @see vpu_ipc_msg_payload_hws_suspend_cmdq
>> +     */
>>       VPU_JSM_MSG_HWS_SUSPEND_CMDQ = 0x1119,
>> -    /* Control command: Resume command queue */
>> +    /**
>> +     * Control command: Resume command queue
>> +     * @see vpu_ipc_msg_payload_hws_resume_cmdq
>> +     */
>>       VPU_JSM_MSG_HWS_RESUME_CMDQ = 0x111a,
>> -    /* Control command: Resume engine after reset */
>> +    /**
>> +     * Control command: Resume engine after reset
>> +     * @see vpu_ipc_msg_payload_hws_resume_engine
>> +     */
>>       VPU_JSM_MSG_HWS_ENGINE_RESUME = 0x111b,
>>       /* Control command: Enable survivability/DCT mode */
>>       VPU_JSM_MSG_DCT_ENABLE = 0x111c,
>> @@ -540,7 +598,8 @@ enum vpu_ipc_msg_type {
>>       VPU_JSM_MSG_BLOB_DEINIT_DEPRECATED = VPU_JSM_MSG_GENERAL_CMD,
>>       /**
>>        * Control dyndbg behavior by executing a dyndbg command;
>> equivalent to
>> -     * Linux command: `echo '<dyndbg_cmd>' >
>> <debugfs>/dynamic_debug/control`.
>> +     * Linux command:
>> +     * @verbatim echo '<dyndbg_cmd>' >
>> <debugfs>/dynamic_debug/control @endverbatim
>>        */
>>       VPU_JSM_MSG_DYNDBG_CONTROL = 0x1201,
>>       /**
>> @@ -550,15 +609,26 @@ enum vpu_ipc_msg_type {
>>         /* IPC Device -> Host, Job completion */
>>       VPU_JSM_MSG_JOB_DONE = 0x2100,
>> -    /* IPC Device -> Host, Fence signalled */
>> +    /**
>> +     * IPC Device -> Host, Fence signalled
>> +     * @see vpu_ipc_msg_payload_native_fence_signalled
>> +     */
>>       VPU_JSM_MSG_NATIVE_FENCE_SIGNALLED = 0x2101,
>>         /* IPC Device -> Host, Async command completion */
>>       VPU_JSM_MSG_ASYNC_CMD_DONE = 0x2200,
>> +    /**
>> +     * IPC Device -> Host, engine reset complete
>> +     * @see vpu_ipc_msg_payload_engine_reset_done
>> +     */
>>       VPU_JSM_MSG_ENGINE_RESET_DONE = VPU_JSM_MSG_ASYNC_CMD_DONE,
>>       VPU_JSM_MSG_ENGINE_PREEMPT_DONE = 0x2201,
>>       VPU_JSM_MSG_REGISTER_DB_DONE = 0x2202,
>>       VPU_JSM_MSG_UNREGISTER_DB_DONE = 0x2203,
>> +    /**
>> +     * Response to query engine heartbeat.
>> +     * @see vpu_ipc_msg_payload_query_engine_hb_done
>> +     */
>>       VPU_JSM_MSG_QUERY_ENGINE_HB_DONE = 0x2204,
>>       VPU_JSM_MSG_GET_POWER_LEVEL_COUNT_DONE = 0x2205,
>>       VPU_JSM_MSG_GET_POWER_LEVEL_DONE = 0x2206,
>> @@ -575,7 +645,10 @@ enum vpu_ipc_msg_type {
>>       VPU_JSM_MSG_TRACE_GET_CAPABILITY_RSP = 0x220c,
>>       /** Response to VPU_JSM_MSG_TRACE_GET_NAME. */
>>       VPU_JSM_MSG_TRACE_GET_NAME_RSP = 0x220d,
>> -    /** Response to VPU_JSM_MSG_SSID_RELEASE. */
>> +    /**
>> +     * Response to VPU_JSM_MSG_SSID_RELEASE.
>> +     * @see vpu_ipc_msg_payload_ssid_release
>> +     */
>>       VPU_JSM_MSG_SSID_RELEASE_DONE = 0x220e,
>>       /**
>>        * Response to VPU_JSM_MSG_METRIC_STREAMER_START.
>> @@ -605,29 +678,56 @@ enum vpu_ipc_msg_type {
>>       /**
>>        * Asynchronous event sent from the VPU to the host either when
>> the current
>>        * metric buffer is full or when the VPU has collected a
>> multiple of
>> -     * @notify_sample_count samples as indicated through the start
>> command
>> -     * (VPU_JSM_MSG_METRIC_STREAMER_START). Returns information
>> about collected
>> -     * metric data.
>> +     * @ref vpu_jsm_metric_streamer_start::notify_sample_count
>> samples as indicated
>> +     * through the start command
>> (VPU_JSM_MSG_METRIC_STREAMER_START). Returns
>> +     * information about collected metric data.
>>        * @see vpu_jsm_metric_streamer_done
>>        */
>>       VPU_JSM_MSG_METRIC_STREAMER_NOTIFICATION = 0x2213,
>> -    /** Response to control command: Priority band setup */
>> +    /**
>> +     * Response to control command: Priority band setup
>> +     * @see vpu_ipc_msg_payload_hws_priority_band_setup
>> +     */
>>       VPU_JSM_MSG_SET_PRIORITY_BAND_SETUP_RSP = 0x2214,
>> -    /** Response to control command: Create command queue */
>> +    /**
>> +     * Response to control command: Create command queue
>> +     * @see vpu_ipc_msg_payload_hws_create_cmdq_rsp
>> +     */
>>       VPU_JSM_MSG_CREATE_CMD_QUEUE_RSP = 0x2215,
>> -    /** Response to control command: Destroy command queue */
>> +    /**
>> +     * Response to control command: Destroy command queue
>> +     * @see vpu_ipc_msg_payload_hws_destroy_cmdq
>> +     */
>>       VPU_JSM_MSG_DESTROY_CMD_QUEUE_RSP = 0x2216,
>> -    /** Response to control command: Set context scheduling
>> properties */
>> +    /**
>> +     * Response to control command: Set context scheduling properties
>> +     * @see vpu_ipc_msg_payload_hws_set_context_sched_properties
>> +     */
>>       VPU_JSM_MSG_SET_CONTEXT_SCHED_PROPERTIES_RSP = 0x2217,
>> -    /** Response to control command: Log buffer setting */
>> +    /**
>> +     * Response to control command: Log buffer setting
>> +     * @see vpu_ipc_msg_payload_hws_set_scheduling_log
>> +     */
>>       VPU_JSM_MSG_HWS_SET_SCHEDULING_LOG_RSP = 0x2218,
>> -    /* IPC Device -> Host, HWS notify index entry of log buffer
>> written */
>> +    /**
>> +     * IPC Device -> Host, HWS notify index entry of log buffer written
>> +     * @see vpu_ipc_msg_payload_hws_scheduling_log_notification
>> +     */
>>       VPU_JSM_MSG_HWS_SCHEDULING_LOG_NOTIFICATION = 0x2219,
>> -    /* IPC Device -> Host, HWS completion of a context suspend
>> request */
>> +    /**
>> +     * IPC Device -> Host, HWS completion of a context suspend request
>> +     * @see vpu_ipc_msg_payload_hws_suspend_cmdq
>> +     */
>>       VPU_JSM_MSG_HWS_SUSPEND_CMDQ_DONE = 0x221a,
>> -    /* Response to control command: Resume command queue */
>> +    /**
>> +     * Response to control command: Resume command queue
>> +     * @see vpu_ipc_msg_payload_hws_resume_cmdq
>> +     */
>>       VPU_JSM_MSG_HWS_RESUME_CMDQ_RSP = 0x221b,
>> -    /* Response to control command: Resume engine command response */
>> +    /**
>> +     * Response to control command: Resume engine command response
>> +     * @see vpu_ipc_msg_payload_hws_resume_engine
>> +     */
>>       VPU_JSM_MSG_HWS_RESUME_ENGINE_DONE = 0x221c,
>>       /* Response to control command: Enable survivability/DCT mode */
>>       VPU_JSM_MSG_DCT_ENABLE_DONE = 0x221d,
>> @@ -670,40 +770,44 @@ struct vpu_ipc_msg_payload_engine_preempt {
>>       u32 preempt_id;
>>   };
>>   -/*
>> - * @brief Register doorbell command structure.
>> +/**
>> + * Register doorbell command structure.
>>    * This structure supports doorbell registration for only OS
>> scheduling.
>>    * @see VPU_JSM_MSG_REGISTER_DB
>>    */
>>   struct vpu_ipc_msg_payload_register_db {
>> -    /* Index of the doorbell to register. */
>> +    /** Index of the doorbell to register. */
>>       u32 db_idx;
>> -    /* Reserved */
>> +    /** Reserved */
>>       u32 reserved_0;
>> -    /* Virtual address in Global GTT pointing to the start of job
>> queue. */
>> +    /** Virtual address in Global GTT pointing to the start of job
>> queue. */
>>       u64 jobq_base;
>> -    /* Size of the job queue in bytes. */
>> +    /** Size of the job queue in bytes. */
>>       u32 jobq_size;
>> -    /* Host sub-stream ID for the context assigned to the doorbell. */
>> +    /** Host sub-stream ID for the context assigned to the doorbell. */
>>       u32 host_ssid;
>>   };
>>     /**
>> - * @brief Unregister doorbell command structure.
>> + * Unregister doorbell command structure.
>>    * Request structure to unregister a doorbell for both HW and OS
>> scheduling.
>>    * @see VPU_JSM_MSG_UNREGISTER_DB
>>    */
>>   struct vpu_ipc_msg_payload_unregister_db {
>> -    /* Index of the doorbell to unregister. */
>> +    /** Index of the doorbell to unregister. */
>>       u32 db_idx;
>> -    /* Reserved */
>> +    /** Reserved */
>>       u32 reserved_0;
>>   };
>>   +/**
>> + * Heartbeat request structure
>> + * @see VPU_JSM_MSG_QUERY_ENGINE_HB
>> + */
>>   struct vpu_ipc_msg_payload_query_engine_hb {
>> -    /* Engine to return heartbeat value. */
>> +    /** Engine to return heartbeat value. */
>>       u32 engine_idx;
>> -    /* Reserved */
>> +    /** Reserved */
>>       u32 reserved_0;
>>   };
>>   @@ -723,10 +827,14 @@ struct vpu_ipc_msg_payload_power_level {
>>       u32 reserved_0;
>>   };
>>   +/**
>> + * Structure for requesting ssid release
>> + * @see VPU_JSM_MSG_SSID_RELEASE
>> + */
>>   struct vpu_ipc_msg_payload_ssid_release {
>> -    /* Host sub-stream ID for the context to be released. */
>> +    /** Host sub-stream ID for the context to be released. */
>>       u32 host_ssid;
>> -    /* Reserved */
>> +    /** Reserved */
>>       u32 reserved_0;
>>   };
>>   @@ -752,7 +860,7 @@ struct vpu_jsm_metric_streamer_start {
>>       u64 sampling_rate;
>>       /**
>>        * If > 0 the VPU will send a
>> VPU_JSM_MSG_METRIC_STREAMER_NOTIFICATION message
>> -     * after every @notify_sample_count samples is collected or
>> dropped by the VPU.
>> +     * after every @ref notify_sample_count samples is collected or
>> dropped by the VPU.
>>        * If set to UINT_MAX the VPU will only generate a notification
>> when the metric
>>        * buffer is full. If set to 0 the VPU will never generate a
>> notification.
>>        */
>> @@ -762,9 +870,9 @@ struct vpu_jsm_metric_streamer_start {
>>        * Address and size of the buffer where the VPU will write
>> metric data. The
>>        * VPU writes all counters from enabled metric groups one after
>> another. If
>>        * there is no space left to write data at the next sample
>> period the VPU
>> -     * will switch to the next buffer (@see next_buffer_addr) and
>> will optionally
>> -     * send a notification to the host driver if
>> @notify_sample_count is non-zero.
>> -     * If @next_buffer_addr is NULL the VPU will stop collecting
>> metric data.
>> +     * will switch to the next buffer (@ref next_buffer_addr) and
>> will optionally
>> +     * send a notification to the host driver if @ref
>> notify_sample_count is non-zero.
>> +     * If @ref next_buffer_addr is NULL the VPU will stop collecting
>> metric data.
>>        */
>>       u64 buffer_addr;
>>       u64 buffer_size;
>> @@ -844,38 +952,47 @@ struct vpu_ipc_msg_payload_job_done {
>>       u64 cmdq_id;
>>   };
>>   -/*
>> +/**
>>    * Notification message upon native fence signalling.
>>    * @see VPU_JSM_MSG_NATIVE_FENCE_SIGNALLED
>>    */
>>   struct vpu_ipc_msg_payload_native_fence_signalled {
>> -    /* Engine ID. */
>> +    /** Engine ID. */
>>       u32 engine_idx;
>> -    /* Host SSID. */
>> +    /** Host SSID. */
>>       u32 host_ssid;
>> -    /* CMDQ ID */
>> +    /** CMDQ ID */
>>       u64 cmdq_id;
>> -    /* Fence object handle. */
>> +    /** Fence object handle. */
>>       u64 fence_handle;
>>   };
>>   +/**
>> + * vpu_ipc_msg_payload_engine_reset_done will contain an array of
>> this structure
>> + * which contains which queues caused reset if FW was able to detect
>> any error.
>> + * @see vpu_ipc_msg_payload_engine_reset_done
>> + */
>>   struct vpu_jsm_engine_reset_context {
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved_0;
>> -    /* Command queue id */
>> +    /** Command queue id */
>>       u64 cmdq_id;
>> -    /* See VPU_ENGINE_RESET_CONTEXT_* defines */
>> +    /** See VPU_ENGINE_RESET_CONTEXT_* defines */
>>       u64 flags;
>>   };
>>   +/**
>> + * Engine reset response.
>> + * @see VPU_JSM_MSG_ENGINE_RESET_DONE
>> + */
>>   struct vpu_ipc_msg_payload_engine_reset_done {
>> -    /* Engine ordinal */
>> +    /** Engine ordinal */
>>       u32 engine_idx;
>> -    /* Number of impacted contexts */
>> +    /** Number of impacted contexts */
>>       u32 num_impacted_contexts;
>> -    /* Array of impacted command queue ids and their flags */
>> +    /** Array of impacted command queue ids and their flags */
>>       struct vpu_jsm_engine_reset_context
>>           impacted_contexts[VPU_MAX_ENGINE_RESET_IMPACTED_CONTEXTS];
>>   };
>> @@ -912,12 +1029,16 @@ struct vpu_ipc_msg_payload_unregister_db_done {
>>       u32 reserved_0;
>>   };
>>   +/**
>> + * Structure for heartbeat response
>> + * @see VPU_JSM_MSG_QUERY_ENGINE_HB_DONE
>> + */
>>   struct vpu_ipc_msg_payload_query_engine_hb_done {
>> -    /* Engine returning heartbeat value. */
>> +    /** Engine returning heartbeat value. */
>>       u32 engine_idx;
>> -    /* Reserved */
>> +    /** Reserved */
>>       u32 reserved_0;
>> -    /* Heartbeat value. */
>> +    /** Heartbeat value. */
>>       u64 heartbeat;
>>   };
>>   @@ -937,7 +1058,10 @@ struct
>> vpu_ipc_msg_payload_get_power_level_count_done {
>>       u8 power_limit[16];
>>   };
>>   -/* HWS priority band setup request / response */
>> +/**
>> + * HWS priority band setup request / response
>> + * @see VPU_JSM_MSG_SET_PRIORITY_BAND_SETUP
>> + */
>>   struct vpu_ipc_msg_payload_hws_priority_band_setup {
>>       /*
>>        * Grace period in 100ns units when preempting another priority
>> band for
>> @@ -964,15 +1088,23 @@ struct
>> vpu_ipc_msg_payload_hws_priority_band_setup {
>>        * TDR timeout value in milliseconds. Default value of 0
>> meaning no timeout.
>>        */
>>       u32 tdr_timeout;
>> +    /* Non-interactive queue timeout for no progress of heartbeat in
>> milliseconds.
>> +     * Default value of 0 meaning no timeout.
>> +     */
>> +    u32 non_interactive_no_progress_timeout;
>> +    /*
>> +     * Non-interactive queue upper limit timeout value in
>> milliseconds. Default
>> +     * value of 0 meaning no timeout.
>> +     */
>> +    u32 non_interactive_timeout;
>>   };
>>   -/*
>> +/**
>>    * @brief HWS create command queue request.
>>    * Host will create a command queue via this command.
>>    * Note: Cmdq group is a handle of an object which
>>    * may contain one or more command queues.
>>    * @see VPU_JSM_MSG_CREATE_CMD_QUEUE
>> - * @see VPU_JSM_MSG_CREATE_CMD_QUEUE_RSP
>>    */
>>   struct vpu_ipc_msg_payload_hws_create_cmdq {
>>       /* Process id */
>> @@ -993,66 +1125,73 @@ struct vpu_ipc_msg_payload_hws_create_cmdq {
>>       u32 reserved_0;
>>   };
>>   -/*
>> - * @brief HWS create command queue response.
>> - * @see VPU_JSM_MSG_CREATE_CMD_QUEUE
>> +/**
>> + * HWS create command queue response.
>>    * @see VPU_JSM_MSG_CREATE_CMD_QUEUE_RSP
>>    */
>>   struct vpu_ipc_msg_payload_hws_create_cmdq_rsp {
>> -    /* Process id */
>> +    /** Process id */
>>       u64 process_id;
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /* Engine for which queue is being created */
>> +    /** Engine for which queue is being created */
>>       u32 engine_idx;
>> -    /* Command queue group */
>> +    /** Command queue group */
>>       u64 cmdq_group;
>> -    /* Command queue id */
>> +    /** Command queue id */
>>       u64 cmdq_id;
>>   };
>>   -/* HWS destroy command queue request / response */
>> +/**
>> + * HWS destroy command queue request / response
>> + * @see VPU_JSM_MSG_DESTROY_CMD_QUEUE
>> + * @see VPU_JSM_MSG_DESTROY_CMD_QUEUE_RSP
>> + */
>>   struct vpu_ipc_msg_payload_hws_destroy_cmdq {
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved;
>> -    /* Command queue id */
>> +    /** Command queue id */
>>       u64 cmdq_id;
>>   };
>>   -/* HWS set context scheduling properties request / response */
>> +/**
>> + * HWS set context scheduling properties request / response
>> + * @see VPU_JSM_MSG_SET_CONTEXT_SCHED_PROPERTIES
>> + * @see VPU_JSM_MSG_SET_CONTEXT_SCHED_PROPERTIES_RSP
>> + */
>>   struct vpu_ipc_msg_payload_hws_set_context_sched_properties {
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved_0;
>> -    /* Command queue id */
>> +    /** Command queue id */
>>       u64 cmdq_id;
>> -    /*
>> +    /**
>>        * Priority band to assign to work of this context.
>>        * Available priority bands: @see enum
>> vpu_job_scheduling_priority_band
>>        */
>>       u32 priority_band;
>> -    /* Inside realtime band assigns a further priority */
>> +    /** Inside realtime band assigns a further priority */
>>       u32 realtime_priority_level;
>> -    /* Priority relative to other contexts in the same process */
>> +    /** Priority relative to other contexts in the same process */
>>       s32 in_process_priority;
>> -    /* Zero padding / Reserved */
>> +    /** Zero padding / Reserved */
>>       u32 reserved_1;
>> -    /*
>> +    /**
>>        * Context quantum relative to other contexts of same priority
>> in the same process
>>        * Minimum value supported by NPU is 1ms (10000 in 100ns units).
>>        */
>>       u64 context_quantum;
>> -    /* Grace period when preempting context of the same priority
>> within the same process */
>> +    /** Grace period when preempting context of the same priority
>> within the same process */
>>       u64 grace_period_same_priority;
>> -    /* Grace period when preempting context of a lower priority
>> within the same process */
>> +    /** Grace period when preempting context of a lower priority
>> within the same process */
>>       u64 grace_period_lower_priority;
>>   };
>>   -/*
>> - * @brief Register doorbell command structure.
>> +/**
>> + * Register doorbell command structure.
>>    * This structure supports doorbell registration for both HW and OS
>> scheduling.
>>    * Note: Queue base and size are added here so that the same
>> structure can be used for
>>    * OS scheduling and HW scheduling. For OS scheduling, cmdq_id will
>> be ignored
>> @@ -1061,27 +1200,27 @@ struct
>> vpu_ipc_msg_payload_hws_set_context_sched_properties {
>>    * @see VPU_JSM_MSG_HWS_REGISTER_DB
>>    */
>>   struct vpu_jsm_hws_register_db {
>> -    /* Index of the doorbell to register. */
>> +    /** Index of the doorbell to register. */
>>       u32 db_id;
>> -    /* Host sub-stream ID for the context assigned to the doorbell. */
>> +    /** Host sub-stream ID for the context assigned to the doorbell. */
>>       u32 host_ssid;
>> -    /* ID of the command queue associated with the doorbell. */
>> +    /** ID of the command queue associated with the doorbell. */
>>       u64 cmdq_id;
>> -    /* Virtual address pointing to the start of command queue. */
>> +    /** Virtual address pointing to the start of command queue. */
>>       u64 cmdq_base;
>> -    /* Size of the command queue in bytes. */
>> +    /** Size of the command queue in bytes. */
>>       u64 cmdq_size;
>>   };
>>   -/*
>> - * @brief Structure to set another buffer to be used for
>> scheduling-related logging.
>> +/**
>> + * Structure to set another buffer to be used for scheduling-related
>> logging.
>>    * The size of the logging buffer and the number of entries is
>> defined as part of the
>>    * buffer itself as described next.
>>    * The log buffer received from the host is made up of;
>> - *   - header:     32 bytes in size, as shown in 'struct
>> vpu_hws_log_buffer_header'.
>> + *   - header:     32 bytes in size, as shown in @ref
>> vpu_hws_log_buffer_header.
>>    *                 The header contains the number of log entries in
>> the buffer.
>>    *   - log entry:  0 to n-1, each log entry is 32 bytes in size, as
>> shown in
>> - *                 'struct vpu_hws_log_buffer_entry'.
>> + *                 @ref vpu_hws_log_buffer_entry.
>>    *                 The entry contains the VPU timestamp, operation
>> type and data.
>>    * The host should provide the notify index value of log buffer to
>> VPU. This is a
>>    * value defined within the log buffer and when written to will
>> generate the
>> @@ -1095,30 +1234,30 @@ struct vpu_jsm_hws_register_db {
>>    * @see VPU_JSM_MSG_HWS_SCHEDULING_LOG_NOTIFICATION
>>    */
>>   struct vpu_ipc_msg_payload_hws_set_scheduling_log {
>> -    /* Engine ordinal */
>> +    /** Engine ordinal */
>>       u32 engine_idx;
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /*
>> +    /**
>>        * VPU log buffer virtual address.
>>        * Set to 0 to disable logging for this engine.
>>        */
>>       u64 vpu_log_buffer_va;
>> -    /*
>> +    /**
>>        * Notify index of log buffer.
>> VPU_JSM_MSG_HWS_SCHEDULING_LOG_NOTIFICATION
>>        * is generated when an event log is written to this index.
>>        */
>>       u64 notify_index;
>> -    /*
>> +    /**
>>        * Field is now deprecated, will be removed when KMD is updated
>> to support removal
>>        */
>>       u32 enable_extra_events;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved_0;
>>   };
>>   -/*
>> - * @brief The scheduling log notification is generated by VPU when
>> it writes
>> +/**
>> + * The scheduling log notification is generated by VPU when it writes
>>    * an event into the log buffer at the notify_index. VPU notifies
>> host with
>>    * VPU_JSM_MSG_HWS_SCHEDULING_LOG_NOTIFICATION. This is an
>> asynchronous
>>    * message from VPU to host.
>> @@ -1126,14 +1265,14 @@ struct
>> vpu_ipc_msg_payload_hws_set_scheduling_log {
>>    * @see VPU_JSM_MSG_HWS_SET_SCHEDULING_LOG
>>    */
>>   struct vpu_ipc_msg_payload_hws_scheduling_log_notification {
>> -    /* Engine ordinal */
>> +    /** Engine ordinal */
>>       u32 engine_idx;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved_0;
>>   };
>>   -/*
>> - * @brief HWS suspend command queue request and done structure.
>> +/**
>> + * HWS suspend command queue request and done structure.
>>    * Host will request the suspend of contexts and VPU will;
>>    *   - Suspend all work on this context
>>    *   - Preempt any running work
>> @@ -1152,21 +1291,21 @@ struct
>> vpu_ipc_msg_payload_hws_scheduling_log_notification {
>>    * @see VPU_JSM_MSG_HWS_SUSPEND_CMDQ_DONE
>>    */
>>   struct vpu_ipc_msg_payload_hws_suspend_cmdq {
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved_0;
>> -    /* Command queue id */
>> +    /** Command queue id */
>>       u64 cmdq_id;
>> -    /*
>> +    /**
>>        * Suspend fence value - reported by the VPU suspend context
>>        * completed once suspend is complete.
>>        */
>>       u64 suspend_fence_value;
>>   };
>>   -/*
>> - * @brief HWS Resume command queue request / response structure.
>> +/**
>> + * HWS Resume command queue request / response structure.
>>    * Host will request the resume of a context;
>>    *  - VPU will resume all work on this context
>>    *  - Scheduler will allow this context to be scheduled
>> @@ -1174,25 +1313,25 @@ struct vpu_ipc_msg_payload_hws_suspend_cmdq {
>>    * @see VPU_JSM_MSG_HWS_RESUME_CMDQ_RSP
>>    */
>>   struct vpu_ipc_msg_payload_hws_resume_cmdq {
>> -    /* Host SSID */
>> +    /** Host SSID */
>>       u32 host_ssid;
>> -    /* Zero Padding */
>> +    /** Zero Padding */
>>       u32 reserved_0;
>> -    /* Command queue id */
>> +    /** Command queue id */
>>       u64 cmdq_id;
>>   };
>>   -/*
>> - * @brief HWS Resume engine request / response structure.
>> - * After a HWS engine reset, all scheduling is stopped on VPU until
>> a engine resume.
>> +/**
>> + * HWS Resume engine request / response structure.
>> + * After a HWS engine reset, all scheduling is stopped on VPU until
>> an engine resume.
>>    * Host shall send this command to resume scheduling of any valid
>> queue.
>> - * @see VPU_JSM_MSG_HWS_RESUME_ENGINE
>> + * @see VPU_JSM_MSG_HWS_ENGINE_RESUME
>>    * @see VPU_JSM_MSG_HWS_RESUME_ENGINE_DONE
>>    */
>>   struct vpu_ipc_msg_payload_hws_resume_engine {
>> -    /* Engine to be resumed */
>> +    /** Engine to be resumed */
>>       u32 engine_idx;
>> -    /* Reserved */
>> +    /** Reserved */
>>       u32 reserved_0;
>>   };
>>   @@ -1326,7 +1465,7 @@ struct vpu_jsm_metric_streamer_done {
>>   /**
>>    * Metric group description placed in the metric buffer after
>> successful completion
>>    * of the VPU_JSM_MSG_METRIC_STREAMER_INFO command. This is
>> followed by one or more
>> - * @vpu_jsm_metric_counter_descriptor records.
>> + * @ref vpu_jsm_metric_counter_descriptor records.
>>    * @see VPU_JSM_MSG_METRIC_STREAMER_INFO
>>    */
>>   struct vpu_jsm_metric_group_descriptor {

Reply via email to