Loading drivers/media/platform/msm/npu/npu_common.h +1 −24 Original line number Diff line number Diff line Loading @@ -35,30 +35,6 @@ * Defines * ------------------------------------------------------------------------- */ /* get npu info */ #define MSM_NPU_GET_INFO_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 1, compat_caddr_t) /* map buf */ #define MSM_NPU_MAP_BUF_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 2, compat_caddr_t) /* map buf */ #define MSM_NPU_UNMAP_BUF_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 3, compat_caddr_t) /* load network */ #define MSM_NPU_LOAD_NETWORK_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 4, compat_caddr_t) /* unload network */ #define MSM_NPU_UNLOAD_NETWORK_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 5, compat_caddr_t) /* exec network */ #define MSM_NPU_EXEC_NETWORK_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 6, compat_caddr_t) #define NPU_MAX_MBOX_NUM 2 #define NPU_MBOX_LOW_PRI 0 #define NPU_MBOX_HIGH_PRI 1 Loading Loading @@ -229,6 +205,7 @@ struct npu_device { struct npu_thermalctrl thermalctrl; struct llcc_slice_desc *sys_cache; uint32_t execute_v2_flag; }; Loading drivers/media/platform/msm/npu/npu_debugfs.c +8 −2 Original line number Diff line number Diff line Loading @@ -461,13 +461,19 @@ int npu_debugfs_init(struct npu_device *npu_dev) if (!debugfs_create_u32("fw_state", 0444, debugfs->root, &(host_ctx->fw_state))) { pr_err("debugfs_creat_bool fail for fw_state\n"); pr_err("debugfs_create_u32 fail for fw_state\n"); goto err; } if (!debugfs_create_u32("pwr_level", 0444, debugfs->root, &(pwr->active_pwrlevel))) { pr_err("debugfs_creat_bool fail for power level\n"); pr_err("debugfs_create_u32 fail for pwr_level\n"); goto err; } if (!debugfs_create_u32("exec_flags", 0644, debugfs->root, &(host_ctx->exec_flags_override))) { pr_err("debugfs_create_u32 fail for exec_flags\n"); goto err; } Loading drivers/media/platform/msm/npu/npu_dev.c +102 −0 Original line number Diff line number Diff line Loading @@ -77,8 +77,10 @@ static int npu_get_info(struct npu_device *npu_dev, unsigned long arg); static int npu_map_buf(struct npu_device *npu_dev, unsigned long arg); static int npu_unmap_buf(struct npu_device *npu_dev, unsigned long arg); static int npu_load_network(struct npu_device *npu_dev, unsigned long arg); static int npu_load_network_v2(struct npu_device *npu_dev, unsigned long arg); static int npu_unload_network(struct npu_device *npu_dev, unsigned long arg); static int npu_exec_network(struct npu_device *npu_dev, unsigned long arg); static int npu_exec_network_v2(struct npu_device *npu_dev, unsigned long arg); static long npu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); static int npu_parse_dt_clock(struct npu_device *npu_dev); Loading Loading @@ -900,6 +902,51 @@ static int npu_load_network(struct npu_device *npu_dev, unsigned long arg) return 0; } static int npu_load_network_v2(struct npu_device *npu_dev, unsigned long arg) { struct msm_npu_load_network_ioctl_v2 req; void __user *argp = (void __user *)arg; struct msm_npu_patch_info_v2 *patch_info = NULL; int ret; ret = copy_from_user(&req, argp, sizeof(req)); if (ret) { pr_err("fail to copy from user\n"); return -EFAULT; } if (req.patch_info_num > MSM_NPU_MAX_PATCH_LAYER_NUM) { pr_err("Invalid patch info num %d[max:%d]\n", req.patch_info_num, MSM_NPU_MAX_PATCH_LAYER_NUM); return -EINVAL; } if (req.patch_info_num) { patch_info = kmalloc_array(req.patch_info_num, sizeof(*patch_info), GFP_KERNEL); if (!patch_info) return -ENOMEM; copy_from_user(patch_info, (void __user *)req.patch_info, req.patch_info_num * sizeof(*patch_info)); } pr_debug("network load with perf request %d\n", req.perf_mode); ret = npu_host_load_network_v2(npu_dev, &req, patch_info); if (ret) { pr_err("network load failed: %d\n", ret); } else { ret = copy_to_user(argp, &req, sizeof(req)); if (ret) pr_err("fail to copy to user\n"); } kfree(patch_info); return ret; } static int npu_unload_network(struct npu_device *npu_dev, unsigned long arg) { struct msm_npu_unload_network_ioctl req; Loading Loading @@ -958,6 +1005,55 @@ static int npu_exec_network(struct npu_device *npu_dev, unsigned long arg) return 0; } static int npu_exec_network_v2(struct npu_device *npu_dev, unsigned long arg) { struct msm_npu_exec_network_ioctl_v2 req; void __user *argp = (void __user *)arg; struct msm_npu_patch_buf_info *patch_buf_info = NULL; int ret; ret = copy_from_user(&req, argp, sizeof(req)); if (ret) { pr_err("fail to copy from user\n"); return -EFAULT; } if (req.patch_buf_info_num > MSM_NPU_MAX_PATCH_LAYER_NUM) { pr_err("Invalid patch buf info num %d[max:%d]\n", req.patch_buf_info_num, MSM_NPU_MAX_PATCH_LAYER_NUM); return -EINVAL; } if (req.stats_buf_size > MSM_NPU_MAX_STATS_BUF_SIZE) { pr_err("Invalid stats buffer size %d max %d\n", req.stats_buf_size, MSM_NPU_MAX_STATS_BUF_SIZE); return -EINVAL; } if (req.patch_buf_info_num) { patch_buf_info = kmalloc_array(req.patch_buf_info_num, sizeof(*patch_buf_info), GFP_KERNEL); if (!patch_buf_info) return -ENOMEM; copy_from_user(patch_buf_info, (void __user *)req.patch_buf_info, req.patch_buf_info_num * sizeof(*patch_buf_info)); } ret = npu_host_exec_network_v2(npu_dev, &req, patch_buf_info); if (ret) { pr_err("npu_host_exec_network failed\n"); } else { ret = copy_to_user(argp, &req, sizeof(req)); if (ret) pr_err("fail to copy to user\n"); } kfree(patch_buf_info); return ret; } static long npu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { Loading @@ -977,12 +1073,18 @@ static long npu_ioctl(struct file *file, unsigned int cmd, case MSM_NPU_LOAD_NETWORK: ret = npu_load_network(npu_dev, arg); break; case MSM_NPU_LOAD_NETWORK_V2: ret = npu_load_network_v2(npu_dev, arg); break; case MSM_NPU_UNLOAD_NETWORK: ret = npu_unload_network(npu_dev, arg); break; case MSM_NPU_EXEC_NETWORK: ret = npu_exec_network(npu_dev, arg); break; case MSM_NPU_EXEC_NETWORK_V2: ret = npu_exec_network_v2(npu_dev, arg); break; default: pr_err("unexpected IOCTL %x\n", cmd); } Loading drivers/media/platform/msm/npu/npu_host_ipc.h +89 −12 Original line number Diff line number Diff line Loading @@ -32,8 +32,12 @@ #define NPU_IPC_CMD_CONFIG_PERFORMANCE 0x00000005 #define NPU_IPC_CMD_CONFIG_DEBUG 0x00000006 #define NPU_IPC_CMD_SHUTDOWN 0x00000007 /* npu_ipc_cmd_loopback_packet_t */ /* ipc_cmd_loopback_packet */ #define NPU_IPC_CMD_LOOPBACK 0x00000008 /* ipc_cmd_load_packet_v2_t */ #define NPU_IPC_CMD_LOAD_V2 0x00000009 /* ipc_cmd_execute_packet_v2 */ #define NPU_IPC_CMD_EXECUTE_V2 0x0000000A /* Messages sent **from** NPU */ /* IPC Message Response -- uint32_t */ Loading @@ -47,8 +51,10 @@ #define NPU_IPC_MSG_EXECUTE_DONE 0x00010003 /* ipc_msg_event_notify_pkt */ #define NPU_IPC_MSG_EVENT_NOTIFY 0x00010004 /* npu_ipc_msg_loopback_packet_t */ /* ipc_msg_loopback_pkt */ #define NPU_IPC_MSG_LOOPBACK_DONE 0x00010005 /* ipc_msg_execute_pkt_v2 */ #define NPU_IPC_MSG_EXECUTE_V2_DONE 0x00010006 /* Logging message size */ /* Number 32-bit elements for the maximum log message size */ Loading Loading @@ -153,6 +159,31 @@ struct npu_aco_buffer { uint64_t address; }; /* * ACO Buffer V2 definition */ struct npu_aco_buffer_v2 { /* * used to track if previous network is the same and already loaded, * we can save a dma */ uint32_t network_id; /* * size of header + first chunk ACO buffer - * this saves a dma by dmaing both header and first chunk */ uint32_t buf_size; /* * SMMU 32-bit mapped address that the DMA engine can read - * uses lower 32 bits */ uint32_t address; /* * number of layers in the network */ uint32_t num_layers; }; /* * ACO Patch Parameters */ Loading @@ -165,6 +196,18 @@ struct npu_patch_tuple { uint32_t loc_offset; }; /* * ACO Patch Tuple V2 */ struct npu_patch_tuple_v2 { uint32_t value; uint32_t chunk_id; uint32_t instruction_size_in_bytes; uint32_t variable_size_in_bits; uint32_t shift_value_in_bits; uint32_t loc_offset; }; struct npu_patch_params { uint32_t num_params; struct npu_patch_tuple param[2]; Loading @@ -178,12 +221,22 @@ struct ipc_cmd_load_pkt { struct npu_aco_buffer buf_pkt; }; /* * LOAD command packet V2 definition */ struct ipc_cmd_load_pkt_v2 { struct ipc_cmd_header_pkt header; struct npu_aco_buffer_v2 buf_pkt; uint32_t num_patch_params; struct npu_patch_tuple_v2 patch_params[0]; }; /* * UNLOAD command packet definition */ struct ipc_cmd_unload_pkt { struct ipc_cmd_header_pkt header; uint32_t aco_hdl; uint32_t network_hdl; }; /* Loading @@ -192,7 +245,22 @@ struct ipc_cmd_unload_pkt { struct ipc_cmd_execute_pkt { struct ipc_cmd_header_pkt header; struct npu_patch_params patch_params; uint32_t aco_hdl; uint32_t network_hdl; }; struct npu_patch_params_v2 { uint32_t value; uint32_t id; }; /* * Execute packet V2 definition */ struct ipc_cmd_execute_pkt_v2 { struct ipc_cmd_header_pkt header; uint32_t network_hdl; uint32_t num_patch_params; struct npu_patch_params_v2 patch_params[0]; }; /* Loading @@ -208,22 +276,21 @@ struct ipc_cmd_loopback_pkt { */ struct ipc_msg_load_pkt { struct ipc_msg_header_pkt header; uint32_t aco_hdl; uint32_t network_hdl; }; /* * UNLOAD response packet definition -- ipc_msg_header_pkt * UNLOAD response packet definition */ struct ipc_msg_unload_pkt { struct ipc_msg_header_pkt header; uint32_t network_hdl; }; /* * Layer Stats information returned back during EXECUTE_DONE response */ struct ipc_layer_stats { /* * layer id * 8 bits enough for the current networks supporting */ uint8_t layer_id; /* * hardware tick count per layer */ Loading @@ -234,7 +301,7 @@ struct ipc_execute_layer_stats { /* * total number of layers associated with the execution */ uint8_t total_num_layers; uint32_t total_num_layers; /* * pointer to each layer stats */ Loading Loading @@ -267,6 +334,16 @@ struct ipc_execute_stats { struct ipc_msg_execute_pkt { struct ipc_msg_header_pkt header; struct ipc_execute_stats stats; uint32_t network_hdl; }; /* * EXECUTE V2 response packet definition */ struct ipc_msg_execute_pkt_v2 { struct ipc_msg_header_pkt header; uint32_t network_hdl; uint32_t stats_data[0]; }; /* Loading drivers/media/platform/msm/npu/npu_mgr.c +351 −65 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
drivers/media/platform/msm/npu/npu_common.h +1 −24 Original line number Diff line number Diff line Loading @@ -35,30 +35,6 @@ * Defines * ------------------------------------------------------------------------- */ /* get npu info */ #define MSM_NPU_GET_INFO_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 1, compat_caddr_t) /* map buf */ #define MSM_NPU_MAP_BUF_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 2, compat_caddr_t) /* map buf */ #define MSM_NPU_UNMAP_BUF_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 3, compat_caddr_t) /* load network */ #define MSM_NPU_LOAD_NETWORK_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 4, compat_caddr_t) /* unload network */ #define MSM_NPU_UNLOAD_NETWORK_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 5, compat_caddr_t) /* exec network */ #define MSM_NPU_EXEC_NETWORK_32 \ _IOWR(MSM_NPU_IOCTL_MAGIC, 6, compat_caddr_t) #define NPU_MAX_MBOX_NUM 2 #define NPU_MBOX_LOW_PRI 0 #define NPU_MBOX_HIGH_PRI 1 Loading Loading @@ -229,6 +205,7 @@ struct npu_device { struct npu_thermalctrl thermalctrl; struct llcc_slice_desc *sys_cache; uint32_t execute_v2_flag; }; Loading
drivers/media/platform/msm/npu/npu_debugfs.c +8 −2 Original line number Diff line number Diff line Loading @@ -461,13 +461,19 @@ int npu_debugfs_init(struct npu_device *npu_dev) if (!debugfs_create_u32("fw_state", 0444, debugfs->root, &(host_ctx->fw_state))) { pr_err("debugfs_creat_bool fail for fw_state\n"); pr_err("debugfs_create_u32 fail for fw_state\n"); goto err; } if (!debugfs_create_u32("pwr_level", 0444, debugfs->root, &(pwr->active_pwrlevel))) { pr_err("debugfs_creat_bool fail for power level\n"); pr_err("debugfs_create_u32 fail for pwr_level\n"); goto err; } if (!debugfs_create_u32("exec_flags", 0644, debugfs->root, &(host_ctx->exec_flags_override))) { pr_err("debugfs_create_u32 fail for exec_flags\n"); goto err; } Loading
drivers/media/platform/msm/npu/npu_dev.c +102 −0 Original line number Diff line number Diff line Loading @@ -77,8 +77,10 @@ static int npu_get_info(struct npu_device *npu_dev, unsigned long arg); static int npu_map_buf(struct npu_device *npu_dev, unsigned long arg); static int npu_unmap_buf(struct npu_device *npu_dev, unsigned long arg); static int npu_load_network(struct npu_device *npu_dev, unsigned long arg); static int npu_load_network_v2(struct npu_device *npu_dev, unsigned long arg); static int npu_unload_network(struct npu_device *npu_dev, unsigned long arg); static int npu_exec_network(struct npu_device *npu_dev, unsigned long arg); static int npu_exec_network_v2(struct npu_device *npu_dev, unsigned long arg); static long npu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); static int npu_parse_dt_clock(struct npu_device *npu_dev); Loading Loading @@ -900,6 +902,51 @@ static int npu_load_network(struct npu_device *npu_dev, unsigned long arg) return 0; } static int npu_load_network_v2(struct npu_device *npu_dev, unsigned long arg) { struct msm_npu_load_network_ioctl_v2 req; void __user *argp = (void __user *)arg; struct msm_npu_patch_info_v2 *patch_info = NULL; int ret; ret = copy_from_user(&req, argp, sizeof(req)); if (ret) { pr_err("fail to copy from user\n"); return -EFAULT; } if (req.patch_info_num > MSM_NPU_MAX_PATCH_LAYER_NUM) { pr_err("Invalid patch info num %d[max:%d]\n", req.patch_info_num, MSM_NPU_MAX_PATCH_LAYER_NUM); return -EINVAL; } if (req.patch_info_num) { patch_info = kmalloc_array(req.patch_info_num, sizeof(*patch_info), GFP_KERNEL); if (!patch_info) return -ENOMEM; copy_from_user(patch_info, (void __user *)req.patch_info, req.patch_info_num * sizeof(*patch_info)); } pr_debug("network load with perf request %d\n", req.perf_mode); ret = npu_host_load_network_v2(npu_dev, &req, patch_info); if (ret) { pr_err("network load failed: %d\n", ret); } else { ret = copy_to_user(argp, &req, sizeof(req)); if (ret) pr_err("fail to copy to user\n"); } kfree(patch_info); return ret; } static int npu_unload_network(struct npu_device *npu_dev, unsigned long arg) { struct msm_npu_unload_network_ioctl req; Loading Loading @@ -958,6 +1005,55 @@ static int npu_exec_network(struct npu_device *npu_dev, unsigned long arg) return 0; } static int npu_exec_network_v2(struct npu_device *npu_dev, unsigned long arg) { struct msm_npu_exec_network_ioctl_v2 req; void __user *argp = (void __user *)arg; struct msm_npu_patch_buf_info *patch_buf_info = NULL; int ret; ret = copy_from_user(&req, argp, sizeof(req)); if (ret) { pr_err("fail to copy from user\n"); return -EFAULT; } if (req.patch_buf_info_num > MSM_NPU_MAX_PATCH_LAYER_NUM) { pr_err("Invalid patch buf info num %d[max:%d]\n", req.patch_buf_info_num, MSM_NPU_MAX_PATCH_LAYER_NUM); return -EINVAL; } if (req.stats_buf_size > MSM_NPU_MAX_STATS_BUF_SIZE) { pr_err("Invalid stats buffer size %d max %d\n", req.stats_buf_size, MSM_NPU_MAX_STATS_BUF_SIZE); return -EINVAL; } if (req.patch_buf_info_num) { patch_buf_info = kmalloc_array(req.patch_buf_info_num, sizeof(*patch_buf_info), GFP_KERNEL); if (!patch_buf_info) return -ENOMEM; copy_from_user(patch_buf_info, (void __user *)req.patch_buf_info, req.patch_buf_info_num * sizeof(*patch_buf_info)); } ret = npu_host_exec_network_v2(npu_dev, &req, patch_buf_info); if (ret) { pr_err("npu_host_exec_network failed\n"); } else { ret = copy_to_user(argp, &req, sizeof(req)); if (ret) pr_err("fail to copy to user\n"); } kfree(patch_buf_info); return ret; } static long npu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { Loading @@ -977,12 +1073,18 @@ static long npu_ioctl(struct file *file, unsigned int cmd, case MSM_NPU_LOAD_NETWORK: ret = npu_load_network(npu_dev, arg); break; case MSM_NPU_LOAD_NETWORK_V2: ret = npu_load_network_v2(npu_dev, arg); break; case MSM_NPU_UNLOAD_NETWORK: ret = npu_unload_network(npu_dev, arg); break; case MSM_NPU_EXEC_NETWORK: ret = npu_exec_network(npu_dev, arg); break; case MSM_NPU_EXEC_NETWORK_V2: ret = npu_exec_network_v2(npu_dev, arg); break; default: pr_err("unexpected IOCTL %x\n", cmd); } Loading
drivers/media/platform/msm/npu/npu_host_ipc.h +89 −12 Original line number Diff line number Diff line Loading @@ -32,8 +32,12 @@ #define NPU_IPC_CMD_CONFIG_PERFORMANCE 0x00000005 #define NPU_IPC_CMD_CONFIG_DEBUG 0x00000006 #define NPU_IPC_CMD_SHUTDOWN 0x00000007 /* npu_ipc_cmd_loopback_packet_t */ /* ipc_cmd_loopback_packet */ #define NPU_IPC_CMD_LOOPBACK 0x00000008 /* ipc_cmd_load_packet_v2_t */ #define NPU_IPC_CMD_LOAD_V2 0x00000009 /* ipc_cmd_execute_packet_v2 */ #define NPU_IPC_CMD_EXECUTE_V2 0x0000000A /* Messages sent **from** NPU */ /* IPC Message Response -- uint32_t */ Loading @@ -47,8 +51,10 @@ #define NPU_IPC_MSG_EXECUTE_DONE 0x00010003 /* ipc_msg_event_notify_pkt */ #define NPU_IPC_MSG_EVENT_NOTIFY 0x00010004 /* npu_ipc_msg_loopback_packet_t */ /* ipc_msg_loopback_pkt */ #define NPU_IPC_MSG_LOOPBACK_DONE 0x00010005 /* ipc_msg_execute_pkt_v2 */ #define NPU_IPC_MSG_EXECUTE_V2_DONE 0x00010006 /* Logging message size */ /* Number 32-bit elements for the maximum log message size */ Loading Loading @@ -153,6 +159,31 @@ struct npu_aco_buffer { uint64_t address; }; /* * ACO Buffer V2 definition */ struct npu_aco_buffer_v2 { /* * used to track if previous network is the same and already loaded, * we can save a dma */ uint32_t network_id; /* * size of header + first chunk ACO buffer - * this saves a dma by dmaing both header and first chunk */ uint32_t buf_size; /* * SMMU 32-bit mapped address that the DMA engine can read - * uses lower 32 bits */ uint32_t address; /* * number of layers in the network */ uint32_t num_layers; }; /* * ACO Patch Parameters */ Loading @@ -165,6 +196,18 @@ struct npu_patch_tuple { uint32_t loc_offset; }; /* * ACO Patch Tuple V2 */ struct npu_patch_tuple_v2 { uint32_t value; uint32_t chunk_id; uint32_t instruction_size_in_bytes; uint32_t variable_size_in_bits; uint32_t shift_value_in_bits; uint32_t loc_offset; }; struct npu_patch_params { uint32_t num_params; struct npu_patch_tuple param[2]; Loading @@ -178,12 +221,22 @@ struct ipc_cmd_load_pkt { struct npu_aco_buffer buf_pkt; }; /* * LOAD command packet V2 definition */ struct ipc_cmd_load_pkt_v2 { struct ipc_cmd_header_pkt header; struct npu_aco_buffer_v2 buf_pkt; uint32_t num_patch_params; struct npu_patch_tuple_v2 patch_params[0]; }; /* * UNLOAD command packet definition */ struct ipc_cmd_unload_pkt { struct ipc_cmd_header_pkt header; uint32_t aco_hdl; uint32_t network_hdl; }; /* Loading @@ -192,7 +245,22 @@ struct ipc_cmd_unload_pkt { struct ipc_cmd_execute_pkt { struct ipc_cmd_header_pkt header; struct npu_patch_params patch_params; uint32_t aco_hdl; uint32_t network_hdl; }; struct npu_patch_params_v2 { uint32_t value; uint32_t id; }; /* * Execute packet V2 definition */ struct ipc_cmd_execute_pkt_v2 { struct ipc_cmd_header_pkt header; uint32_t network_hdl; uint32_t num_patch_params; struct npu_patch_params_v2 patch_params[0]; }; /* Loading @@ -208,22 +276,21 @@ struct ipc_cmd_loopback_pkt { */ struct ipc_msg_load_pkt { struct ipc_msg_header_pkt header; uint32_t aco_hdl; uint32_t network_hdl; }; /* * UNLOAD response packet definition -- ipc_msg_header_pkt * UNLOAD response packet definition */ struct ipc_msg_unload_pkt { struct ipc_msg_header_pkt header; uint32_t network_hdl; }; /* * Layer Stats information returned back during EXECUTE_DONE response */ struct ipc_layer_stats { /* * layer id * 8 bits enough for the current networks supporting */ uint8_t layer_id; /* * hardware tick count per layer */ Loading @@ -234,7 +301,7 @@ struct ipc_execute_layer_stats { /* * total number of layers associated with the execution */ uint8_t total_num_layers; uint32_t total_num_layers; /* * pointer to each layer stats */ Loading Loading @@ -267,6 +334,16 @@ struct ipc_execute_stats { struct ipc_msg_execute_pkt { struct ipc_msg_header_pkt header; struct ipc_execute_stats stats; uint32_t network_hdl; }; /* * EXECUTE V2 response packet definition */ struct ipc_msg_execute_pkt_v2 { struct ipc_msg_header_pkt header; uint32_t network_hdl; uint32_t stats_data[0]; }; /* Loading
drivers/media/platform/msm/npu/npu_mgr.c +351 −65 File changed.Preview size limit exceeded, changes collapsed. Show changes