diff --git a/msm/eva/cvp.c b/msm/eva/cvp.c index 10deb4e7d3..bf1cd9340a 100644 --- a/msm/eva/cvp.c +++ b/msm/eva/cvp.c @@ -448,7 +448,7 @@ static int msm_probe_cvp_device(struct platform_device *pdev) goto err_fail_sub_device_probe; } - atomic64_set(&core->kernel_trans_id, get_pkt_array_size()); + atomic64_set(&core->kernel_trans_id, ARRAY_SIZE(cvp_hfi_defs)); if (core->resources.dsp_enabled) { rc = cvp_dsp_device_init(); diff --git a/msm/eva/cvp_hfi.h b/msm/eva/cvp_hfi.h index 0f1e943dfc..e7fd8a6cfa 100644 --- a/msm/eva/cvp_hfi.h +++ b/msm/eva/cvp_hfi.h @@ -130,6 +130,24 @@ (HFI_CMD_SESSION_CVP_START + 0x064) #define HFI_CMD_SESSION_CVP_WARP_DS_PARAMS\ (HFI_CMD_SESSION_CVP_START + 0x065) +#define HFI_CMD_SESSION_CVP_XRA_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x066) +#define HFI_CMD_SESSION_CVP_XRA_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x067) +#define HFI_CMD_SESSION_CVP_XRA_BLOB_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x069) +#define HFI_CMD_SESSION_CVP_XRA_BLOB_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x06A) +#define HFI_CMD_SESSION_CVP_XRA_PATCH_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x06B) +#define HFI_CMD_SESSION_CVP_XRA_PATCH_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x06C) +#define HFI_CMD_SESSION_CVP_XRA_MATCH_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x06D) +#define HFI_CMD_SESSION_CVP_XRA_MATCH_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x06E) + + #define HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x070) #define HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS\ @@ -138,6 +156,22 @@ (HFI_CMD_SESSION_CVP_START + 0x072) #define HFI_CMD_SESSION_CVP_SET_SNAPSHOT_MODE\ (HFI_CMD_SESSION_CVP_START + 0x073) +#define HFI_CMD_SESSION_CVP_RGE_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x076) +#define HFI_CMD_SESSION_CVP_RGE_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x077) +#define HFI_CMD_SESSION_EVA_ITOF_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x078) +#define HFI_CMD_SESSION_EVA_ITOF_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x079) +#define HFI_CMD_SESSION_EVA_DLFD_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x07C) +#define HFI_CMD_SESSION_EVA_DLFD_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x07D) +#define HFI_CMD_SESSION_EVA_DLFL_FRAME\ + (HFI_CMD_SESSION_CVP_START + 0x080) +#define HFI_CMD_SESSION_EVA_DLFL_CONFIG\ + (HFI_CMD_SESSION_CVP_START + 0x081) #define HFI_CMD_SESSION_CVP_ICA_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x100) #define HFI_CMD_SESSION_CVP_ICA_CONFIG\ @@ -312,7 +346,8 @@ static inline enum buf_map_type cvp_find_map_type(int pkt_type) pkt_type == HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS || pkt_type == HFI_CMD_SESSION_CVP_DMM_PARAMS || pkt_type == HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS || - pkt_type == HFI_CMD_SESSION_CVP_WARP_DS_PARAMS) + pkt_type == HFI_CMD_SESSION_CVP_WARP_DS_PARAMS || + pkt_type == HFI_CMD_SESSION_EVA_DLFL_CONFIG) return MAP_PERSIST; else if (pkt_type == HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS || pkt_type == diff --git a/msm/eva/cvp_hfi_api.h b/msm/eva/cvp_hfi_api.h index e759e18db4..e3dea9a61d 100644 --- a/msm/eva/cvp_hfi_api.h +++ b/msm/eva/cvp_hfi_api.h @@ -234,7 +234,8 @@ struct cvp_hal_cmd_sys_get_property_packet { #define call_hfi_op(q, op, args...) \ (((q) && (q)->op) ? ((q)->op(args)) : 0) -#define PKT_NAME_LEN 32 +#define PKT_NAME_LEN 24 +#define MAX_PKT_IDX 0x200 struct msm_cvp_hfi_defs { unsigned int size; @@ -297,13 +298,13 @@ void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type, struct cvp_hfi_device *hdev); int get_pkt_index(struct cvp_hal_session_cmd_pkt *hdr); -int get_pkt_array_size(void); +int get_pkt_index_from_type(u32 pkt_type); int get_hfi_version(void); unsigned int get_msg_size(struct cvp_hfi_msg_session_hdr *hdr); unsigned int get_msg_session_id(void *msg); unsigned int get_msg_errorcode(void *msg); int get_msg_opconfigs(void *msg, unsigned int *session_id, unsigned int *error_type, unsigned int *config_id); -extern const struct msm_cvp_hfi_defs cvp_hfi_defs[]; +extern const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX]; #endif /*__CVP_HFI_API_H__ */ diff --git a/msm/eva/cvp_smem.c b/msm/eva/cvp_smem.c index 34ff43ee6b..6e722b3bb2 100644 --- a/msm/eva/cvp_smem.c +++ b/msm/eva/cvp_smem.c @@ -204,12 +204,13 @@ int msm_cvp_map_smem(struct msm_cvp_inst *inst, int *vmid_list; int *perms_list; int nelems = 0; - int rc = 0; + int i, rc = 0; dma_addr_t iova = 0; u32 temp = 0; u32 align = SZ_4K; struct dma_buf *dma_buf; + bool is_config_pkt = false; if (!inst || !smem) { dprintk(CVP_ERR, "%s: Invalid params: %pK %pK\n", @@ -250,7 +251,33 @@ int msm_cvp_map_smem(struct msm_cvp_inst *inst, smem->size = dma_buf->size; smem->device_addr = (u32)iova; + i = get_pkt_index_from_type(smem->pkt_type); + if (i > 0 && smem->pkt_type != HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS + && smem->pkt_type != HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS + && smem->pkt_type != HFI_CMD_SESSION_EVA_DLFL_CONFIG) + /* User persist buffer has no feature config info */ + is_config_pkt = cvp_hfi_defs[i].is_config_pkt; + /* if (!(smem->flags & SMEM_SECURE) && + is_config_pkt && + (msm_cvp_debug & CVP_MEM)) { + dma_buf_begin_cpu_access(dma_buf, DMA_BIDIRECTIONAL); + smem->kvaddr = __cvp_dma_buf_vmap(dma_buf); + if (!smem->kvaddr) { + dprintk(CVP_WARN, + "Failed to map config buf in kernel\n"); + dma_buf_end_cpu_access(dma_buf, DMA_BIDIRECTIONAL); + goto checksum_done; + } + for (i = 0; i < (dma_buf->size); i++) { + smem->checksum += *(u8 *)(smem->kvaddr + i); + } + __cvp_dma_buf_vunmap(dma_buf, smem->kvaddr); + smem->kvaddr = 0; + dma_buf_end_cpu_access(dma_buf, DMA_BIDIRECTIONAL); + } + +checksum_done:*/ print_smem(CVP_MEM, str, inst, smem); goto success; exit: diff --git a/msm/eva/msm_cvp.c b/msm/eva/msm_cvp.c index 0631e061f5..0d4a33b581 100644 --- a/msm/eva/msm_cvp.c +++ b/msm/eva/msm_cvp.c @@ -116,7 +116,7 @@ static int cvp_wait_process_message(struct msm_cvp_inst *inst, hdr = (struct cvp_hfi_msg_session_hdr *)&msg->pkt; memcpy(out, &msg->pkt, get_msg_size(hdr)); - if (hdr->client_data.kdata >= get_pkt_array_size()) + if (hdr->client_data.kdata >= ARRAY_SIZE(cvp_hfi_defs)) msm_cvp_unmap_frame(inst, hdr->client_data.kdata); kmem_cache_free(cvp_driver->msg_cache, msg); diff --git a/msm/eva/msm_cvp_buf.c b/msm/eva/msm_cvp_buf.c index 2d659edb49..a0ccd09613 100644 --- a/msm/eva/msm_cvp_buf.c +++ b/msm/eva/msm_cvp_buf.c @@ -56,18 +56,16 @@ int print_smem(u32 tag, const char *str, struct msm_cvp_inst *inst, if (!atomic_read(&smem->refcount)) return 0; - for (i = 0; i < get_pkt_array_size(); i++) - if (cvp_hfi_defs[i].type == smem->pkt_type) { - strlcpy(name, cvp_hfi_defs[i].name, PKT_NAME_LEN); - break; - } + i = get_pkt_index_from_type(smem->pkt_type); + if (i > 0) + strlcpy(name, cvp_hfi_defs[i].name, PKT_NAME_LEN); dprintk(tag, - "%s: %x : %pK size %d flags %#x iova %#x idx %d ref %d pkt_type %s buf_idx %#x", + "%s: %x : %pK size %d flags %#x iova %#x idx %d ref %d pkt_type %s buf_idx %#x chksum %#x", str, hash32_ptr(inst->session), smem->dma_buf, smem->size, smem->flags, smem->device_addr, smem->bitmap_index, atomic_read(&smem->refcount), - name, smem->buf_idx); + name, smem->buf_idx, smem->checksum); } return 0; } @@ -1144,7 +1142,8 @@ static int msm_cvp_session_add_smem(struct msm_cvp_inst *inst, static struct msm_cvp_smem *msm_cvp_session_get_smem(struct msm_cvp_inst *inst, struct cvp_buf_type *buf, - bool is_persist) + bool is_persist, + u32 pkt_type) { int rc = 0, found = 1; struct msm_cvp_smem *smem = NULL; @@ -1168,6 +1167,9 @@ static struct msm_cvp_smem *msm_cvp_session_get_smem(struct msm_cvp_inst *inst, smem->dma_buf = dma_buf; smem->bitmap_index = MAX_DMABUF_NUMS; + smem->pkt_type = pkt_type; + smem->flags |= SMEM_PERSIST; + atomic_inc(&smem->refcount); rc = msm_cvp_map_smem(inst, smem, "map cpu"); if (rc) goto exit; @@ -1189,6 +1191,7 @@ static struct msm_cvp_smem *msm_cvp_session_get_smem(struct msm_cvp_inst *inst, smem->dma_buf = dma_buf; smem->bitmap_index = MAX_DMABUF_NUMS; + smem->pkt_type = pkt_type; rc = msm_cvp_map_smem(inst, smem, "map cpu"); if (rc) goto exit; @@ -1274,14 +1277,12 @@ static u32 msm_cvp_map_user_persist_buf(struct msm_cvp_inst *inst, return 0; } - smem = msm_cvp_session_get_smem(inst, buf, true); + smem = msm_cvp_session_get_smem(inst, buf, true, pkt_type); if (!smem) goto exit; - smem->flags |= SMEM_PERSIST; smem->pkt_type = pkt_type; smem->buf_idx = buf_idx; - atomic_inc(&smem->refcount); pbuf->smem = smem; pbuf->fd = buf->fd; pbuf->size = buf->size; @@ -1303,7 +1304,7 @@ exit: return 0; } -u32 msm_cvp_map_frame_buf(struct msm_cvp_inst *inst, +static u32 msm_cvp_map_frame_buf(struct msm_cvp_inst *inst, struct cvp_buf_type *buf, struct msm_cvp_frame *frame, u32 pkt_type, u32 buf_idx) @@ -1324,11 +1325,10 @@ u32 msm_cvp_map_frame_buf(struct msm_cvp_inst *inst, return 0; } - smem = msm_cvp_session_get_smem(inst, buf, false); + smem = msm_cvp_session_get_smem(inst, buf, false, pkt_type); if (!smem) return 0; - smem->pkt_type = pkt_type; smem->buf_idx = buf_idx; frame->bufs[nr].fd = buf->fd; @@ -1444,7 +1444,8 @@ int msm_cvp_map_user_persist(struct msm_cvp_inst *inst, if (buf->fd < 0 || !buf->size) continue; - iova = msm_cvp_map_user_persist_buf(inst, buf, cmd_hdr->packet_type, i); + iova = msm_cvp_map_user_persist_buf(inst, buf, + cmd_hdr->packet_type, i); if (!iova) { dprintk(CVP_ERR, "%s: buf %d register failed.\n", diff --git a/msm/eva/msm_cvp_buf.h b/msm/eva/msm_cvp_buf.h index 6bd64b5482..c9ccb28fbc 100644 --- a/msm/eva/msm_cvp_buf.h +++ b/msm/eva/msm_cvp_buf.h @@ -77,6 +77,7 @@ struct msm_cvp_smem { u32 flags; u32 pkt_type; u32 buf_idx; + u32 checksum; struct cvp_dma_mapping_info mapping_info; }; @@ -205,10 +206,6 @@ int msm_cvp_proc_oob(struct msm_cvp_inst* inst, struct eva_kmd_hfi_packet* in_pkt); void msm_cvp_cache_operations(struct msm_cvp_smem *smem, u32 type, u32 offset, u32 size); -u32 msm_cvp_map_frame_buf(struct msm_cvp_inst *inst, - struct cvp_buf_type *buf, - struct msm_cvp_frame *frame, - u32 pkt_type, u32 buf_idx); int msm_cvp_mark_user_persist(struct msm_cvp_inst *inst, struct eva_kmd_hfi_packet *in_pkt, unsigned int offset, unsigned int buf_num); diff --git a/msm/eva/msm_cvp_platform.c b/msm/eva/msm_cvp_platform.c index 9d23978a4f..99112caaef 100644 --- a/msm/eva/msm_cvp_platform.c +++ b/msm/eva/msm_cvp_platform.c @@ -271,308 +271,486 @@ static const struct of_device_id msm_cvp_dt_match[] = { }; /* - * WARN: name field can not hold more than 31 chars + * WARN: name field CAN NOT hold more than 23 chars + * excluding the ending '\0' * + * NOTE: the def entry index for the command packet is + * "the packet type - HFI_CMD_SESSION_CVP_START" */ -const struct msm_cvp_hfi_defs cvp_hfi_defs[] = { - { - .size = HFI_DFS_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DFS_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "DFS", - }, - { - .size = HFI_DFS_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DFS_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "DFS_FRAME", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_SGM_OF_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "SGM_OF", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_SGM_OF_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "SGM_OF_FRAME", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "WARP_NCC", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_WARP_NCC_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "WARP_NCC_FRAME", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_WARP_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "WARP", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_WARP_DS_PARAMS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "WARP_DS_PARAMS", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_WARP_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "WARP_FRAME", - }, - { - .size = HFI_DMM_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DMM_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "DMM", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_DMM_PARAMS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "DMM_PARAMS", - }, - { - .size = HFI_DMM_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DMM_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "DMM_FRAME", - }, - { - .size = HFI_PERSIST_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "SET_PERSIST", - }, - { - .size = 0xffffffff, - .type = HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "REL_PERSIST", - }, - { - .size = HFI_DS_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DS, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "DS", - }, - { - .size = HFI_OF_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_CV_TME_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "TME", - }, - { - .size = HFI_OF_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_CV_TME_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "TME_FRAME", - }, - { - .size = HFI_ODT_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_CV_ODT_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "ODT", - }, - { - .size = HFI_ODT_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_CV_ODT_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "ODT_FRAME", - }, - { - .size = HFI_OD_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_CV_OD_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "OD", - }, - { - .size = HFI_OD_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_CV_OD_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "OD_FRAME", - }, - { - .size = HFI_NCC_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_NCC_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "NCC", - }, - { - .size = HFI_NCC_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_NCC_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "NCC_FRAME", - }, - { - .size = HFI_ICA_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_ICA_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "ICA", - }, - { - .size = HFI_ICA_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_ICA_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "ICA_FRAME", - }, - { - .size = HFI_HCD_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_HCD_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "HCD", - }, - { - .size = HFI_HCD_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_HCD_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "HCD_FRAME", - }, - { - .size = HFI_DCM_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DC_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "DC", - }, - { - .size = HFI_DCM_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DC_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "DC_FRAME", - }, - { - .size = HFI_DCM_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DCM_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "DCM", - }, - { - .size = HFI_DCM_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_DCM_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "DCM_FRAME", - }, - { - .size = HFI_PYS_HCD_CONFIG_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "PYS_HCD", - }, - { - .size = HFI_PYS_HCD_FRAME_CMD_SIZE, - .type = HFI_CMD_SESSION_CVP_PYS_HCD_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "PYS_HCD_FRAME", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "SET_MODEL", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "SET_SNAPSHOT", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "REL_SNAPSHOT", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_SET_SNAPSHOT_MODE, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "SNAPSHOT_MODE", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_SNAPSHOT_WRITE_DONE, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "SNAPSHOT_DONE", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_FD_CONFIG, - .is_config_pkt = true, - .resp = HAL_NO_RESP, - .name = "FD", - }, - { - .size = 0xFFFFFFFF, - .type = HFI_CMD_SESSION_CVP_FD_FRAME, - .is_config_pkt = false, - .resp = HAL_NO_RESP, - .name = "FD_FRAME", - }, +const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX] = { + [HFI_CMD_SESSION_CVP_DFS_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DFS_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DFS_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DFS", + }, + [HFI_CMD_SESSION_CVP_DFS_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DFS_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DFS_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DFS_FRAME", + }, + [HFI_CMD_SESSION_CVP_SGM_OF_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_SGM_OF_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "SGM_OF", + }, + [HFI_CMD_SESSION_CVP_SGM_OF_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_SGM_OF_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "SGM_OF_FRAME", + }, + [HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "WARP_NCC", + }, + [HFI_CMD_SESSION_CVP_WARP_NCC_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_WARP_NCC_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "WARP_NCC_FRAME", + }, + [HFI_CMD_SESSION_CVP_WARP_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_WARP_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "WARP", + }, + [HFI_CMD_SESSION_CVP_WARP_DS_PARAMS - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_WARP_DS_PARAMS, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "WARP_DS_PARAMS", + }, + [HFI_CMD_SESSION_CVP_WARP_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_WARP_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "WARP_FRAME", + }, + [HFI_CMD_SESSION_CVP_DMM_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DMM_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DMM_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DMM", + }, + [HFI_CMD_SESSION_CVP_DMM_PARAMS - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_DMM_PARAMS, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DMM_PARAMS", + }, + [HFI_CMD_SESSION_CVP_DMM_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DMM_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DMM_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DMM_FRAME", + }, + [HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_PERSIST_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "SET_PERSIST", + }, + [HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xffffffff, + .type =HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "REL_PERSIST", + }, + [HFI_CMD_SESSION_CVP_DS - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DS_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_DS, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DS", + }, + [HFI_CMD_SESSION_CVP_CV_TME_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_OF_CONFIG_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_CV_TME_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "TME", + }, + [HFI_CMD_SESSION_CVP_CV_TME_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_OF_FRAME_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_CV_TME_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "TME_FRAME", + }, + [HFI_CMD_SESSION_CVP_CV_ODT_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_ODT_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_CV_ODT_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "ODT", + }, + [HFI_CMD_SESSION_CVP_CV_ODT_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_ODT_FRAME_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_CV_ODT_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "ODT_FRAME", + }, + [HFI_CMD_SESSION_CVP_CV_OD_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_OD_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_CV_OD_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "OD", + }, + [HFI_CMD_SESSION_CVP_CV_OD_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_OD_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_CV_OD_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "OD_FRAME", + }, + [HFI_CMD_SESSION_CVP_NCC_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_NCC_CONFIG_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_NCC_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "NCC", + }, + [HFI_CMD_SESSION_CVP_NCC_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_NCC_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_NCC_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "NCC_FRAME", + }, + [HFI_CMD_SESSION_CVP_ICA_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_ICA_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_ICA_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "ICA", + }, + [HFI_CMD_SESSION_CVP_ICA_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_ICA_FRAME_CMD_SIZE, + .type =HFI_CMD_SESSION_CVP_ICA_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "ICA_FRAME", + }, + [HFI_CMD_SESSION_CVP_HCD_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_HCD_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_HCD_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "HCD", + }, + [HFI_CMD_SESSION_CVP_HCD_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_HCD_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_HCD_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "HCD_FRAME", + }, + [HFI_CMD_SESSION_CVP_DC_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DCM_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DC_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DC", + }, + [HFI_CMD_SESSION_CVP_DC_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DCM_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DC_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DC_FRAME", + }, + [HFI_CMD_SESSION_CVP_DCM_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DCM_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DCM_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DCM", + }, + [HFI_CMD_SESSION_CVP_DCM_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_DCM_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_DCM_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DCM_FRAME", + }, + [HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_PYS_HCD_CONFIG_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "PYS_HCD", + }, + [HFI_CMD_SESSION_CVP_PYS_HCD_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = HFI_PYS_HCD_FRAME_CMD_SIZE, + .type = HFI_CMD_SESSION_CVP_PYS_HCD_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "PYS_HCD_FRAME", + }, + [HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "SET_MODEL", + }, + [HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "SET_SNAPSHOT", + }, + [HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "REL_SNAPSHOT", + }, + [HFI_CMD_SESSION_CVP_SET_SNAPSHOT_MODE - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_SET_SNAPSHOT_MODE, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "SNAPSHOT_MODE", + }, + [HFI_CMD_SESSION_CVP_SNAPSHOT_WRITE_DONE - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_SNAPSHOT_WRITE_DONE, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "SNAPSHOT_DONE", + }, + [HFI_CMD_SESSION_CVP_FD_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_FD_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "FD", + }, + [HFI_CMD_SESSION_CVP_FD_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_FD_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "FD_FRAME", + }, + [HFI_CMD_SESSION_CVP_XRA_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "XRA_FRAME", + }, + [HFI_CMD_SESSION_CVP_XRA_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "XRA_CONFIG", + }, + [HFI_CMD_SESSION_CVP_XRA_BLOB_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_BLOB_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "XRA_BLOB_FRAME", + }, + [HFI_CMD_SESSION_CVP_XRA_BLOB_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_BLOB_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "XRA_BLOB_CONFIG", + }, + [HFI_CMD_SESSION_CVP_XRA_PATCH_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_PATCH_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "XRA_PATCH_FRAME", + }, + [HFI_CMD_SESSION_CVP_XRA_PATCH_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_PATCH_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "XRA_PATCH_CONFIG", + }, + [HFI_CMD_SESSION_CVP_XRA_MATCH_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_MATCH_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "XRA_MATCH_FRAME", + }, + [HFI_CMD_SESSION_CVP_XRA_MATCH_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_XRA_MATCH_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "XRA_MATCH_CONFIG", + }, + [HFI_CMD_SESSION_CVP_RGE_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_RGE_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "RGE_FRAME", + }, + [HFI_CMD_SESSION_CVP_RGE_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_CVP_RGE_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "RGE_CONFIG", + }, + [HFI_CMD_SESSION_EVA_ITOF_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_EVA_ITOF_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "ITOF_FRAME", + }, + [HFI_CMD_SESSION_EVA_ITOF_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_EVA_ITOF_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "ITOF_CONFIG", + }, + [HFI_CMD_SESSION_EVA_DLFD_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_EVA_DLFD_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DLFD_FRAME", + }, + [HFI_CMD_SESSION_EVA_DLFD_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_EVA_DLFD_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DLFD_CONFIG", + }, + [HFI_CMD_SESSION_EVA_DLFL_FRAME - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_EVA_DLFL_FRAME, + .is_config_pkt = false, + .resp = HAL_NO_RESP, + .name = "DLFL_FRAME", + }, + [HFI_CMD_SESSION_EVA_DLFL_CONFIG - HFI_CMD_SESSION_CVP_START] = + { + .size = 0xFFFFFFFF, + .type = HFI_CMD_SESSION_EVA_DLFL_CONFIG, + .is_config_pkt = true, + .resp = HAL_NO_RESP, + .name = "DLFL_CONFIG", + }, }; -int get_pkt_array_size(void) -{ - return ARRAY_SIZE(cvp_hfi_defs); -} - int get_pkt_index(struct cvp_hal_session_cmd_pkt *hdr) { - int i; + if (!hdr || (hdr->packet_type < HFI_CMD_SESSION_CVP_START) + || hdr->packet_type >= (HFI_CMD_SESSION_CVP_START + MAX_PKT_IDX)) + return -EINVAL; - for (i = 0; i < get_pkt_array_size(); i++) - if (cvp_hfi_defs[i].type == hdr->packet_type) - return i; + if (cvp_hfi_defs[hdr->packet_type - HFI_CMD_SESSION_CVP_START].size) + return (hdr->packet_type - HFI_CMD_SESSION_CVP_START); return -EINVAL; } +int get_pkt_index_from_type(u32 pkt_type) +{ + if ((pkt_type < HFI_CMD_SESSION_CVP_START) || + pkt_type >= (HFI_CMD_SESSION_CVP_START + MAX_PKT_IDX)) + return -EINVAL; + + if (cvp_hfi_defs[pkt_type - HFI_CMD_SESSION_CVP_START].size) + return (pkt_type - HFI_CMD_SESSION_CVP_START); + + return -EINVAL; +} MODULE_DEVICE_TABLE(of, msm_cvp_dt_match); int cvp_of_fdt_get_ddrtype(void)