Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21602286 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: cvp: Enhance CVP debugability"

parents 3571dd55 4bf9c554
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+2 −0
Original line number Diff line number Diff line
@@ -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");
+36 −5
Original line number Diff line number Diff line
@@ -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)
@@ -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);
}

@@ -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;
@@ -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);
+1 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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",
+18 −10
Original line number Diff line number Diff line
@@ -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;
@@ -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");
@@ -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