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

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

Merge "msm: cvp: DSP secure path support"

parents 032a8ee6 2e10309f
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -190,8 +190,8 @@ static int msm_cvp_map_buf_dsp(struct msm_cvp_inst *inst,

	if (buf->index) {
		rc = cvp_dsp_register_buffer(hash32_ptr(session), buf->fd,
			 buf->size, buf->offset, buf->index,
			(uint32_t)cbuf->smem.device_addr);
			cbuf->smem.dma_buf->size, buf->size, buf->offset,
			buf->index, (uint32_t)cbuf->smem.device_addr);
		if (rc) {
			dprintk(CVP_ERR,
				"%s: failed dsp registration for fd=%d rc=%d",
@@ -254,8 +254,9 @@ static int msm_cvp_unmap_buf_dsp(struct msm_cvp_inst *inst,
	}

	if (buf->index) {
		rc = cvp_dsp_deregister_buffer((uint32_t)cbuf->smem.device_addr,
			buf->index, buf->size, hash32_ptr(session));
		rc = cvp_dsp_deregister_buffer(hash32_ptr(session), buf->fd,
			cbuf->smem.dma_buf->size, buf->size, buf->offset,
			buf->index, (uint32_t)cbuf->smem.device_addr);
		if (rc) {
			dprintk(CVP_ERR,
				"%s: failed dsp deregistration fd=%d rc=%d",
@@ -1796,10 +1797,10 @@ int msm_cvp_session_deinit(struct msm_cvp_inst *inst)
			list) {
		print_internal_buffer(CVP_DBG, "remove from cvpdspbufs", inst,
									cbuf);
		rc = cvp_dsp_deregister_buffer(
			(uint32_t)cbuf->smem.device_addr,
			cbuf->buf.index, cbuf->buf.size,
			hash32_ptr(session));
		rc = cvp_dsp_deregister_buffer(hash32_ptr(session),
			cbuf->buf.fd, cbuf->smem.dma_buf->size, cbuf->buf.size,
			cbuf->buf.offset, cbuf->buf.index,
			(uint32_t)cbuf->smem.device_addr);
		if (rc)
			dprintk(CVP_ERR,
				"%s: failed dsp deregistration fd=%d rc=%d",
+22 −15
Original line number Diff line number Diff line
@@ -29,14 +29,14 @@ struct cvp_dsp_cmd_msg {
	int32_t ret_val;
	uint64_t msg_ptr;
	uint32_t msg_ptr_len;
	uint32_t iova_buff_addr;
	uint32_t buff_fd_iova;
	uint32_t buff_index;
	uint32_t buff_size;
	uint32_t session_id;
	int32_t ddr_type;
	uint32_t buff_fd;
	uint32_t buff_offset;
	uint32_t reserved0;
	uint32_t buff_fd_size;
	uint32_t reserved1;
	uint32_t reserved2;
};
@@ -361,8 +361,9 @@ int cvp_dsp_shutdown(uint32_t session_flag)
}

int cvp_dsp_register_buffer(uint32_t session_id, uint32_t buff_fd,
			uint32_t buff_size, uint32_t buff_offset,
			uint32_t buff_index, uint32_t iova_buff_addr)
			uint32_t buff_fd_size, uint32_t buff_size,
			uint32_t buff_offset, uint32_t buff_index,
			uint32_t buff_fd_iova)
{
	struct cvp_dsp_cmd_msg local_cmd_msg;
	int err;
@@ -371,14 +372,15 @@ int cvp_dsp_register_buffer(uint32_t session_id, uint32_t buff_fd,
	local_cmd_msg.cmd_msg_type = CVP_DSP_REGISTER_BUFFER;
	local_cmd_msg.session_id = session_id;
	local_cmd_msg.buff_fd = buff_fd;
	local_cmd_msg.buff_fd_size = buff_fd_size;
	local_cmd_msg.buff_size = buff_size;
	local_cmd_msg.buff_offset = buff_offset;
	local_cmd_msg.buff_index = buff_index;
	local_cmd_msg.iova_buff_addr = iova_buff_addr;
	local_cmd_msg.buff_fd_iova = buff_fd_iova;

	dprintk(CVP_DBG,
		"%s: cmd_msg_type=0x%x, iova_buff_addr=0x%x buff_index=0x%x\n",
		__func__, local_cmd_msg.cmd_msg_type, iova_buff_addr,
		"%s: cmd_msg_type=0x%x, buff_fd_iova=0x%x buff_index=0x%x\n",
		__func__, local_cmd_msg.cmd_msg_type, buff_fd_iova,
		local_cmd_msg.buff_index);
	dprintk(CVP_DBG,
		"%s: buff_size=0x%x session_id=0x%x\n",
@@ -406,22 +408,27 @@ int cvp_dsp_register_buffer(uint32_t session_id, uint32_t buff_fd,
	return err;
}

int cvp_dsp_deregister_buffer(uint32_t iova_buff_addr,
	uint32_t buff_index, uint32_t buff_size,
	uint32_t session_id)
int cvp_dsp_deregister_buffer(uint32_t session_id, uint32_t buff_fd,
			uint32_t buff_fd_size, uint32_t buff_size,
			uint32_t buff_offset, uint32_t buff_index,
			uint32_t buff_fd_iova)
{
	struct cvp_dsp_cmd_msg local_cmd_msg;
	int err;
	struct cvp_dsp_apps *me = &gfa_cv;

	local_cmd_msg.cmd_msg_type = CVP_DSP_DEREGISTER_BUFFER;
	local_cmd_msg.iova_buff_addr = iova_buff_addr;
	local_cmd_msg.buff_index = buff_index;
	local_cmd_msg.buff_size = buff_size;
	local_cmd_msg.session_id = session_id;
	local_cmd_msg.buff_fd = buff_fd;
	local_cmd_msg.buff_fd_size = buff_fd_size;
	local_cmd_msg.buff_size = buff_size;
	local_cmd_msg.buff_offset = buff_offset;
	local_cmd_msg.buff_index = buff_index;
	local_cmd_msg.buff_fd_iova = buff_fd_iova;

	dprintk(CVP_DBG,
		"%s: cmd_msg_type=0x%x, iova_buff_addr=0x%x buff_index=0x%x\n",
		__func__, local_cmd_msg.cmd_msg_type, iova_buff_addr,
		"%s: cmd_msg_type=0x%x, buff_fd_iova=0x%x buff_index=0x%x\n",
		__func__, local_cmd_msg.cmd_msg_type, buff_fd_iova,
		local_cmd_msg.buff_index);
	dprintk(CVP_DBG,
			"%s: buff_size=0x%x session_id=0x%x\n",
+14 −8
Original line number Diff line number Diff line
@@ -57,26 +57,32 @@ int cvp_dsp_shutdown(uint32_t session_flag);
 *
 * @session_id:     cvp session id
 * @buff_fd:        buffer fd
 * @buff_fd_size:   total size of fd in bytes
 * @buff_size:      size in bytes of cvp buffer
 * @buff_offset:    buffer offset
 * @buff_index:     buffer index
 * @iova_buff_addr: IOVA buffer address
 */
int cvp_dsp_register_buffer(uint32_t session_id, uint32_t buff_fd,
			uint32_t buff_size, uint32_t buff_offset,
			uint32_t buff_index, uint32_t iova_buff_addr);
			uint32_t buff_fd_size, uint32_t buff_size,
			uint32_t buff_offset, uint32_t buff_index,
			uint32_t buff_fd_iova);

/*
 * API to de-register iova buffer address from CDSP
 *
 * @iova_buff_addr: IOVA buffer address
 * @buff_index:     buffer index
 * @buff_size:      size in bytes of cvp buffer
 * @session_id:     cvp session id
 * @buff_fd:        buffer fd
 * @buff_fd_size:   total size of fd in bytes
 * @buff_size:      size in bytes of cvp buffer
 * @buff_offset:    buffer offset
 * @buff_index:     buffer index
 * @iova_buff_addr: IOVA buffer address
 */
int cvp_dsp_deregister_buffer(uint32_t iova_buff_addr,
	uint32_t buff_index, uint32_t buff_size,
	uint32_t session_id);
int cvp_dsp_deregister_buffer(uint32_t session_id, uint32_t buff_fd,
			uint32_t buff_fd_size, uint32_t buff_size,
			uint32_t buff_offset, uint32_t buff_index,
			uint32_t buff_fd_iova);

#endif // MSM_CVP_DSP_H
+1 −1
Original line number Diff line number Diff line
@@ -248,7 +248,7 @@ int msm_cvp_smem_map_dma_buf(struct msm_cvp_inst *inst,
		goto exit;
	}

	smem->device_addr = (u32)iova + smem->offset;
	smem->device_addr = (u32)iova;

	smem->refcount++;
exit: