Loading drivers/media/platform/msm/cvp/cvp_core_hfi.h +1 −0 Original line number Diff line number Diff line Loading @@ -247,6 +247,7 @@ struct iris_hfi_vpu_ops { struct iris_hfi_device { struct list_head list; struct list_head sess_head; u32 version; u32 intr_status; u32 device_id; u32 clk_freq; Loading drivers/media/platform/msm/cvp/cvp_hfi.c +2 −0 Original line number Diff line number Diff line Loading @@ -2130,6 +2130,8 @@ static int venus_hfi_core_init(void *device) goto err_core_init; } dev->version = __read_register(dev, CVP_VERSION_INFO); rc = call_hfi_pkt_op(dev, sys_init, &pkt, HFI_VIDEO_ARCH_OX); if (rc) { dprintk(CVP_ERR, "Failed to create sys init pkt\n"); Loading drivers/media/platform/msm/cvp/msm_cvp.c +36 −5 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ #include "msm_cvp.h" #include "cvp_hfi.h" #include <synx_api.h> #include "cvp_core_hfi.h" #define MSM_CVP_NOMINAL_CYCLES (444 * 1000 * 1000) #define MSM_CVP_UHD60E_VPSS_CYCLES (111 * 1000 * 1000) Loading Loading @@ -984,12 +985,9 @@ static int msm_cvp_register_buffer(struct msm_cvp_inst *inst, hdev = inst->core->device; print_client_buffer(CVP_DBG, "register", inst, buf); if (!buf->index) { dprintk(CVP_INFO, "%s: CPU path register buffer is deprecated!", __func__); if (!buf->index) return 0; } return msm_cvp_map_buf_dsp(inst, buf); } Loading Loading @@ -1087,6 +1085,36 @@ static int msm_cvp_session_ctrl(struct msm_cvp_inst *inst, return rc; } static int msm_cvp_get_sysprop(struct msm_cvp_inst *inst, struct cvp_kmd_arg *arg) { struct cvp_kmd_sys_properties *props = &arg->data.sys_properties; struct cvp_hfi_device *hdev; struct iris_hfi_device *hfi; int rc = 0; if (!inst || !inst->core || !inst->core->device) { dprintk(CVP_ERR, "%s: invalid params\n", __func__); return -EINVAL; } hdev = inst->core->device; hfi = hdev->hfi_device_data; switch (props->prop_data.prop_type) { case CVP_HFI_VERSION: { props->prop_data.data = hfi->version; break; } default: dprintk(CVP_ERR, "unrecognized sys property %d\n", props->prop_data.prop_type); rc = -EFAULT; } return rc; } int msm_cvp_handle_syscall(struct msm_cvp_inst *inst, struct cvp_kmd_arg *arg) { int rc = 0; Loading Loading @@ -1192,6 +1220,9 @@ int msm_cvp_handle_syscall(struct msm_cvp_inst *inst, struct cvp_kmd_arg *arg) case CVP_KMD_SESSION_CONTROL: rc = msm_cvp_session_ctrl(inst, arg); break; case CVP_KMD_GET_SYS_PROPERTY: rc = msm_cvp_get_sysprop(inst, arg); break; default: dprintk(CVP_DBG, "%s: unknown arg type %#x\n", __func__, arg->type); Loading drivers/media/platform/msm/cvp/msm_cvp_clocks.c +1 −4 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ int msm_cvp_comm_vote_bus(struct msm_cvp_core *core) } if (!core->resources.bus_devfreq_on) dprintk(CVP_WARN, "%s is not enabled for CVP!\n", __func__); return 0; return 0; Loading Loading @@ -330,10 +329,8 @@ int msm_cvp_comm_scale_clocks(struct msm_cvp_inst *inst) return -EINVAL; } if (!inst->core->resources.bus_devfreq_on) { dprintk(CVP_WARN, "%s is not enabled for CVP!\n", __func__); if (!inst->core->resources.bus_devfreq_on) return 0; } if (!filled_len || !device_addr) { dprintk(CVP_DBG, "%s no input for session %x\n", Loading drivers/media/platform/msm/cvp/msm_cvp_common.c +18 −10 Original line number Diff line number Diff line Loading @@ -1509,6 +1509,13 @@ void msm_cvp_fw_unload_handler(struct work_struct *work) mutex_unlock(&core->lock); } void print_cvp_buffer(u32 tag, const char *str, struct msm_cvp_inst *inst, struct msm_cvp_internal_buffer *cbuf) { dprintk(tag, "%s addr: %x size %u\n", str, cbuf->smem.device_addr, cbuf->smem.size); } void msm_cvp_comm_print_inst_info(struct msm_cvp_inst *inst) { struct msm_cvp_internal_buffer *cbuf; Loading @@ -1525,11 +1532,17 @@ void msm_cvp_comm_print_inst_info(struct msm_cvp_inst *inst) dprintk(CVP_ERR, "---Buffer details for inst: %pK of type: %d---\n", inst, inst->session_type); mutex_lock(&inst->registeredbufs.lock); dprintk(CVP_ERR, "registered buffer list:\n"); list_for_each_entry(cbuf, &inst->registeredbufs.list, list) print_cvp_buffer(CVP_ERR, "buf", inst, cbuf); mutex_unlock(&inst->registeredbufs.lock); mutex_lock(&inst->cvpcpubufs.lock); dprintk(CVP_ERR, "cpu buffer list:\n"); list_for_each_entry(cbuf, &inst->cvpcpubufs.list, list) print_cvp_buffer(CVP_ERR, "bufdump", inst, cbuf); mutex_unlock(&inst->cvpcpubufs.lock); mutex_lock(&inst->cvpdspbufs.lock); dprintk(CVP_ERR, "dsp buffer list:\n"); list_for_each_entry(cbuf, &inst->cvpdspbufs.list, list) print_cvp_buffer(CVP_ERR, "bufdump", inst, cbuf); mutex_unlock(&inst->cvpdspbufs.lock); mutex_lock(&inst->persistbufs.lock); dprintk(CVP_ERR, "persist buffer list:\n"); Loading @@ -1540,11 +1553,6 @@ void msm_cvp_comm_print_inst_info(struct msm_cvp_inst *inst) mutex_unlock(&inst->persistbufs.lock); } void print_cvp_buffer(u32 tag, const char *str, struct msm_cvp_inst *inst, struct msm_cvp_internal_buffer *cbuf) { } int msm_cvp_comm_unmap_cvp_buffer(struct msm_cvp_inst *inst, struct msm_cvp_internal_buffer *cbuf) { Loading Loading
drivers/media/platform/msm/cvp/cvp_core_hfi.h +1 −0 Original line number Diff line number Diff line Loading @@ -247,6 +247,7 @@ struct iris_hfi_vpu_ops { struct iris_hfi_device { struct list_head list; struct list_head sess_head; u32 version; u32 intr_status; u32 device_id; u32 clk_freq; Loading
drivers/media/platform/msm/cvp/cvp_hfi.c +2 −0 Original line number Diff line number Diff line Loading @@ -2130,6 +2130,8 @@ static int venus_hfi_core_init(void *device) goto err_core_init; } dev->version = __read_register(dev, CVP_VERSION_INFO); rc = call_hfi_pkt_op(dev, sys_init, &pkt, HFI_VIDEO_ARCH_OX); if (rc) { dprintk(CVP_ERR, "Failed to create sys init pkt\n"); Loading
drivers/media/platform/msm/cvp/msm_cvp.c +36 −5 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ #include "msm_cvp.h" #include "cvp_hfi.h" #include <synx_api.h> #include "cvp_core_hfi.h" #define MSM_CVP_NOMINAL_CYCLES (444 * 1000 * 1000) #define MSM_CVP_UHD60E_VPSS_CYCLES (111 * 1000 * 1000) Loading Loading @@ -984,12 +985,9 @@ static int msm_cvp_register_buffer(struct msm_cvp_inst *inst, hdev = inst->core->device; print_client_buffer(CVP_DBG, "register", inst, buf); if (!buf->index) { dprintk(CVP_INFO, "%s: CPU path register buffer is deprecated!", __func__); if (!buf->index) return 0; } return msm_cvp_map_buf_dsp(inst, buf); } Loading Loading @@ -1087,6 +1085,36 @@ static int msm_cvp_session_ctrl(struct msm_cvp_inst *inst, return rc; } static int msm_cvp_get_sysprop(struct msm_cvp_inst *inst, struct cvp_kmd_arg *arg) { struct cvp_kmd_sys_properties *props = &arg->data.sys_properties; struct cvp_hfi_device *hdev; struct iris_hfi_device *hfi; int rc = 0; if (!inst || !inst->core || !inst->core->device) { dprintk(CVP_ERR, "%s: invalid params\n", __func__); return -EINVAL; } hdev = inst->core->device; hfi = hdev->hfi_device_data; switch (props->prop_data.prop_type) { case CVP_HFI_VERSION: { props->prop_data.data = hfi->version; break; } default: dprintk(CVP_ERR, "unrecognized sys property %d\n", props->prop_data.prop_type); rc = -EFAULT; } return rc; } int msm_cvp_handle_syscall(struct msm_cvp_inst *inst, struct cvp_kmd_arg *arg) { int rc = 0; Loading Loading @@ -1192,6 +1220,9 @@ int msm_cvp_handle_syscall(struct msm_cvp_inst *inst, struct cvp_kmd_arg *arg) case CVP_KMD_SESSION_CONTROL: rc = msm_cvp_session_ctrl(inst, arg); break; case CVP_KMD_GET_SYS_PROPERTY: rc = msm_cvp_get_sysprop(inst, arg); break; default: dprintk(CVP_DBG, "%s: unknown arg type %#x\n", __func__, arg->type); Loading
drivers/media/platform/msm/cvp/msm_cvp_clocks.c +1 −4 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ int msm_cvp_comm_vote_bus(struct msm_cvp_core *core) } if (!core->resources.bus_devfreq_on) dprintk(CVP_WARN, "%s is not enabled for CVP!\n", __func__); return 0; return 0; Loading Loading @@ -330,10 +329,8 @@ int msm_cvp_comm_scale_clocks(struct msm_cvp_inst *inst) return -EINVAL; } if (!inst->core->resources.bus_devfreq_on) { dprintk(CVP_WARN, "%s is not enabled for CVP!\n", __func__); if (!inst->core->resources.bus_devfreq_on) return 0; } if (!filled_len || !device_addr) { dprintk(CVP_DBG, "%s no input for session %x\n", Loading
drivers/media/platform/msm/cvp/msm_cvp_common.c +18 −10 Original line number Diff line number Diff line Loading @@ -1509,6 +1509,13 @@ void msm_cvp_fw_unload_handler(struct work_struct *work) mutex_unlock(&core->lock); } void print_cvp_buffer(u32 tag, const char *str, struct msm_cvp_inst *inst, struct msm_cvp_internal_buffer *cbuf) { dprintk(tag, "%s addr: %x size %u\n", str, cbuf->smem.device_addr, cbuf->smem.size); } void msm_cvp_comm_print_inst_info(struct msm_cvp_inst *inst) { struct msm_cvp_internal_buffer *cbuf; Loading @@ -1525,11 +1532,17 @@ void msm_cvp_comm_print_inst_info(struct msm_cvp_inst *inst) dprintk(CVP_ERR, "---Buffer details for inst: %pK of type: %d---\n", inst, inst->session_type); mutex_lock(&inst->registeredbufs.lock); dprintk(CVP_ERR, "registered buffer list:\n"); list_for_each_entry(cbuf, &inst->registeredbufs.list, list) print_cvp_buffer(CVP_ERR, "buf", inst, cbuf); mutex_unlock(&inst->registeredbufs.lock); mutex_lock(&inst->cvpcpubufs.lock); dprintk(CVP_ERR, "cpu buffer list:\n"); list_for_each_entry(cbuf, &inst->cvpcpubufs.list, list) print_cvp_buffer(CVP_ERR, "bufdump", inst, cbuf); mutex_unlock(&inst->cvpcpubufs.lock); mutex_lock(&inst->cvpdspbufs.lock); dprintk(CVP_ERR, "dsp buffer list:\n"); list_for_each_entry(cbuf, &inst->cvpdspbufs.list, list) print_cvp_buffer(CVP_ERR, "bufdump", inst, cbuf); mutex_unlock(&inst->cvpdspbufs.lock); mutex_lock(&inst->persistbufs.lock); dprintk(CVP_ERR, "persist buffer list:\n"); Loading @@ -1540,11 +1553,6 @@ void msm_cvp_comm_print_inst_info(struct msm_cvp_inst *inst) mutex_unlock(&inst->persistbufs.lock); } void print_cvp_buffer(u32 tag, const char *str, struct msm_cvp_inst *inst, struct msm_cvp_internal_buffer *cbuf) { } int msm_cvp_comm_unmap_cvp_buffer(struct msm_cvp_inst *inst, struct msm_cvp_internal_buffer *cbuf) { Loading