Loading msm/vidc/msm_cvp_external.c +37 −33 Original line number Diff line number Diff line Loading @@ -7,6 +7,9 @@ #include "msm_cvp_external.h" #include "msm_vidc_common.h" #define LOWER32(a) ((u32)((u64)a)) #define UPPER32(a) ((u32)((u64)a >> 32)) static void print_cvp_buffer(u32 tag, const char *str, struct msm_vidc_inst *inst, struct msm_cvp_buf *cbuf) { Loading @@ -22,6 +25,22 @@ static void print_cvp_buffer(u32 tag, const char *str, cbuf->offset, cbuf->dbuf, cbuf->kvaddr); } static int fill_cvp_buffer(struct msm_cvp_buffer_type *dst, struct msm_cvp_buf *src) { if (!dst || !src) { dprintk(VIDC_ERR, "%s: invalid params\n", __func__); return -EINVAL; } dst->buffer_addr = -1; dst->reserved1 = LOWER32(src->dbuf); dst->reserved2 = UPPER32(src->dbuf); dst->size = src->size; return 0; } static int msm_cvp_get_version_info(struct msm_vidc_inst *inst) { int rc; Loading Loading @@ -189,7 +208,6 @@ static int msm_cvp_allocate_buffer(struct msm_vidc_inst *inst, int ion_flags = 0; unsigned long heap_mask = 0; struct dma_buf *dbuf; int fd; if (!inst || !inst->cvp || !buffer) { dprintk(VIDC_ERR, "%s: invalid params\n", __func__); Loading @@ -212,14 +230,7 @@ static int msm_cvp_allocate_buffer(struct msm_vidc_inst *inst, goto error; } buffer->dbuf = dbuf; fd = dma_buf_fd(dbuf, O_CLOEXEC); if (fd < 0) { dprintk(VIDC_ERR, "%s: failed to get fd\n", __func__); rc = -ENOMEM; goto error; } buffer->fd = fd; buffer->fd = -1; if (kernel_map) { buffer->kvaddr = dma_buf_vmap(dbuf); Loading Loading @@ -539,10 +550,8 @@ static void msm_cvp_deinit_internal_buffers(struct msm_vidc_inst *inst) HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS; persist2_packet.session_id = cvp->session_id; persist2_packet.cvp_op = CVP_DME; persist2_packet.persist2_buffer.buffer_addr = cvp->persist2_buffer.fd; persist2_packet.persist2_buffer.size = cvp->persist2_buffer.size; fill_cvp_buffer(&persist2_packet.persist2_buffer, &cvp->persist2_buffer); arg = kzalloc(sizeof(struct cvp_kmd_arg), GFP_KERNEL); if (arg) { Loading Loading @@ -610,8 +619,8 @@ static int msm_cvp_init_internal_buffers(struct msm_vidc_inst *inst) persist2_packet.packet_type = HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS; persist2_packet.session_id = cvp->session_id; persist2_packet.cvp_op = CVP_DME; persist2_packet.persist2_buffer.buffer_addr = cvp->persist2_buffer.fd; persist2_packet.persist2_buffer.size = cvp->persist2_buffer.size; fill_cvp_buffer(&persist2_packet.persist2_buffer, &cvp->persist2_buffer); memset(arg, 0, sizeof(struct cvp_kmd_arg)); arg->type = CVP_KMD_HFI_PERSIST_CMD; Loading Loading @@ -831,6 +840,7 @@ static int msm_cvp_frame_process(struct msm_vidc_inst *inst, cvp->fullres_buffer.fd = vb->planes[0].m.fd; cvp->fullres_buffer.size = vb->planes[0].length; cvp->fullres_buffer.offset = vb->planes[0].data_offset; cvp->fullres_buffer.dbuf = mbuf->smem[0].dma_buf; /* frame skip logic */ fps = max(inst->clk_data.operating_rate, Loading Loading @@ -875,25 +885,19 @@ static int msm_cvp_frame_process(struct msm_vidc_inst *inst, frame->descmatch_threshold = 52; frame->ncc_robustness_threshold = 0; frame->fullres_srcbuffer.buffer_addr = cvp->fullres_buffer.fd; frame->fullres_srcbuffer.size = cvp->fullres_buffer.size; frame->videospatialtemporal_statsbuffer.buffer_addr = cvp->output_buffer.fd; frame->videospatialtemporal_statsbuffer.size = cvp->output_buffer.size; frame->src_buffer.buffer_addr = cvp->fullres_buffer.fd; frame->src_buffer.size = cvp->fullres_buffer.size; fill_cvp_buffer(&frame->fullres_srcbuffer, &cvp->fullres_buffer); fill_cvp_buffer(&frame->videospatialtemporal_statsbuffer, &cvp->output_buffer); fill_cvp_buffer(&frame->src_buffer, &cvp->fullres_buffer); if (cvp->downscale) { frame->src_buffer.buffer_addr = cvp->src_buffer.fd; frame->src_buffer.size = cvp->src_buffer.size; frame->ref_buffer.buffer_addr = cvp->ref_buffer.fd; frame->ref_buffer.size = cvp->ref_buffer.size; } frame->srcframe_contextbuffer.buffer_addr = cvp->context_buffer.fd; frame->srcframe_contextbuffer.size = cvp->context_buffer.size; frame->refframe_contextbuffer.buffer_addr = cvp->refcontext_buffer.fd; frame->refframe_contextbuffer.size = cvp->refcontext_buffer.size; fill_cvp_buffer(&frame->src_buffer, &cvp->src_buffer); fill_cvp_buffer(&frame->ref_buffer, &cvp->ref_buffer); } fill_cvp_buffer(&frame->srcframe_contextbuffer, &cvp->context_buffer); fill_cvp_buffer(&frame->refframe_contextbuffer, &cvp->refcontext_buffer); print_cvp_buffer(VIDC_LOW, "input frame", inst, &cvp->fullres_buffer); rc = msm_cvp_private(cvp->priv, CVP_KMD_SEND_CMD_PKT, arg); Loading Loading
msm/vidc/msm_cvp_external.c +37 −33 Original line number Diff line number Diff line Loading @@ -7,6 +7,9 @@ #include "msm_cvp_external.h" #include "msm_vidc_common.h" #define LOWER32(a) ((u32)((u64)a)) #define UPPER32(a) ((u32)((u64)a >> 32)) static void print_cvp_buffer(u32 tag, const char *str, struct msm_vidc_inst *inst, struct msm_cvp_buf *cbuf) { Loading @@ -22,6 +25,22 @@ static void print_cvp_buffer(u32 tag, const char *str, cbuf->offset, cbuf->dbuf, cbuf->kvaddr); } static int fill_cvp_buffer(struct msm_cvp_buffer_type *dst, struct msm_cvp_buf *src) { if (!dst || !src) { dprintk(VIDC_ERR, "%s: invalid params\n", __func__); return -EINVAL; } dst->buffer_addr = -1; dst->reserved1 = LOWER32(src->dbuf); dst->reserved2 = UPPER32(src->dbuf); dst->size = src->size; return 0; } static int msm_cvp_get_version_info(struct msm_vidc_inst *inst) { int rc; Loading Loading @@ -189,7 +208,6 @@ static int msm_cvp_allocate_buffer(struct msm_vidc_inst *inst, int ion_flags = 0; unsigned long heap_mask = 0; struct dma_buf *dbuf; int fd; if (!inst || !inst->cvp || !buffer) { dprintk(VIDC_ERR, "%s: invalid params\n", __func__); Loading @@ -212,14 +230,7 @@ static int msm_cvp_allocate_buffer(struct msm_vidc_inst *inst, goto error; } buffer->dbuf = dbuf; fd = dma_buf_fd(dbuf, O_CLOEXEC); if (fd < 0) { dprintk(VIDC_ERR, "%s: failed to get fd\n", __func__); rc = -ENOMEM; goto error; } buffer->fd = fd; buffer->fd = -1; if (kernel_map) { buffer->kvaddr = dma_buf_vmap(dbuf); Loading Loading @@ -539,10 +550,8 @@ static void msm_cvp_deinit_internal_buffers(struct msm_vidc_inst *inst) HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS; persist2_packet.session_id = cvp->session_id; persist2_packet.cvp_op = CVP_DME; persist2_packet.persist2_buffer.buffer_addr = cvp->persist2_buffer.fd; persist2_packet.persist2_buffer.size = cvp->persist2_buffer.size; fill_cvp_buffer(&persist2_packet.persist2_buffer, &cvp->persist2_buffer); arg = kzalloc(sizeof(struct cvp_kmd_arg), GFP_KERNEL); if (arg) { Loading Loading @@ -610,8 +619,8 @@ static int msm_cvp_init_internal_buffers(struct msm_vidc_inst *inst) persist2_packet.packet_type = HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS; persist2_packet.session_id = cvp->session_id; persist2_packet.cvp_op = CVP_DME; persist2_packet.persist2_buffer.buffer_addr = cvp->persist2_buffer.fd; persist2_packet.persist2_buffer.size = cvp->persist2_buffer.size; fill_cvp_buffer(&persist2_packet.persist2_buffer, &cvp->persist2_buffer); memset(arg, 0, sizeof(struct cvp_kmd_arg)); arg->type = CVP_KMD_HFI_PERSIST_CMD; Loading Loading @@ -831,6 +840,7 @@ static int msm_cvp_frame_process(struct msm_vidc_inst *inst, cvp->fullres_buffer.fd = vb->planes[0].m.fd; cvp->fullres_buffer.size = vb->planes[0].length; cvp->fullres_buffer.offset = vb->planes[0].data_offset; cvp->fullres_buffer.dbuf = mbuf->smem[0].dma_buf; /* frame skip logic */ fps = max(inst->clk_data.operating_rate, Loading Loading @@ -875,25 +885,19 @@ static int msm_cvp_frame_process(struct msm_vidc_inst *inst, frame->descmatch_threshold = 52; frame->ncc_robustness_threshold = 0; frame->fullres_srcbuffer.buffer_addr = cvp->fullres_buffer.fd; frame->fullres_srcbuffer.size = cvp->fullres_buffer.size; frame->videospatialtemporal_statsbuffer.buffer_addr = cvp->output_buffer.fd; frame->videospatialtemporal_statsbuffer.size = cvp->output_buffer.size; frame->src_buffer.buffer_addr = cvp->fullres_buffer.fd; frame->src_buffer.size = cvp->fullres_buffer.size; fill_cvp_buffer(&frame->fullres_srcbuffer, &cvp->fullres_buffer); fill_cvp_buffer(&frame->videospatialtemporal_statsbuffer, &cvp->output_buffer); fill_cvp_buffer(&frame->src_buffer, &cvp->fullres_buffer); if (cvp->downscale) { frame->src_buffer.buffer_addr = cvp->src_buffer.fd; frame->src_buffer.size = cvp->src_buffer.size; frame->ref_buffer.buffer_addr = cvp->ref_buffer.fd; frame->ref_buffer.size = cvp->ref_buffer.size; } frame->srcframe_contextbuffer.buffer_addr = cvp->context_buffer.fd; frame->srcframe_contextbuffer.size = cvp->context_buffer.size; frame->refframe_contextbuffer.buffer_addr = cvp->refcontext_buffer.fd; frame->refframe_contextbuffer.size = cvp->refcontext_buffer.size; fill_cvp_buffer(&frame->src_buffer, &cvp->src_buffer); fill_cvp_buffer(&frame->ref_buffer, &cvp->ref_buffer); } fill_cvp_buffer(&frame->srcframe_contextbuffer, &cvp->context_buffer); fill_cvp_buffer(&frame->refframe_contextbuffer, &cvp->refcontext_buffer); print_cvp_buffer(VIDC_LOW, "input frame", inst, &cvp->fullres_buffer); rc = msm_cvp_private(cvp->priv, CVP_KMD_SEND_CMD_PKT, arg); Loading