Lines Matching refs:ctx

65     HalJpegeCtx *ctx = (HalJpegeCtx *)hal;  in hal_jpege_vepu2_init()  local
82 ctx->dev = cfg->dev; in hal_jpege_vepu2_init()
83 ctx->type = cfg->type; in hal_jpege_vepu2_init()
84 ctx->task_cnt = cfg->task_cnt; in hal_jpege_vepu2_init()
86 jpege_bits_init(&ctx->bits); in hal_jpege_vepu2_init()
87 mpp_assert(ctx->bits); in hal_jpege_vepu2_init()
89 ctx->cfg = cfg->cfg; in hal_jpege_vepu2_init()
90 ctx->reg_size = sizeof(RK_U32) * VEPU_JPEGE_VEPU2_NUM_REGS; in hal_jpege_vepu2_init()
91 ctx->regs = mpp_calloc_size(void, (ctx->reg_size + EXTRA_INFO_SIZE) * ctx->task_cnt); in hal_jpege_vepu2_init()
92 if (NULL == ctx->regs) { in hal_jpege_vepu2_init()
97 ctx->regs_out = mpp_calloc_size(void, (ctx->reg_size + EXTRA_INFO_SIZE) * ctx->task_cnt); in hal_jpege_vepu2_init()
98 if (NULL == ctx->regs_out) { in hal_jpege_vepu2_init()
103 hal_jpege_rc_init(&ctx->hal_rc); in hal_jpege_vepu2_init()
111 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_deinit() local
115 if (ctx->bits) { in hal_jpege_vepu2_deinit()
116 jpege_bits_deinit(ctx->bits); in hal_jpege_vepu2_deinit()
117 ctx->bits = NULL; in hal_jpege_vepu2_deinit()
120 if (ctx->dev) { in hal_jpege_vepu2_deinit()
121 mpp_dev_deinit(ctx->dev); in hal_jpege_vepu2_deinit()
122 ctx->dev = NULL; in hal_jpege_vepu2_deinit()
125 if (ctx->ctx_ext) { in hal_jpege_vepu2_deinit()
126 JpegeMultiCoreCtx *ctx_ext = ctx->ctx_ext; in hal_jpege_vepu2_deinit()
144 MPP_FREE(ctx->ctx_ext); in hal_jpege_vepu2_deinit()
147 MPP_FREE(ctx->regs); in hal_jpege_vepu2_deinit()
148 MPP_FREE(ctx->regs_out); in hal_jpege_vepu2_deinit()
156 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_get_task() local
158 JpegeMultiCoreCtx *ctx_ext = (JpegeMultiCoreCtx *)ctx->ctx_ext; in hal_jpege_vepu2_get_task()
163 memcpy(&ctx->syntax, syntax, sizeof(ctx->syntax)); in hal_jpege_vepu2_get_task()
165 ctx->hal_start_pos = mpp_packet_get_length(task->packet); in hal_jpege_vepu2_get_task()
168 ctx->mcu_y = 0; in hal_jpege_vepu2_get_task()
169 ctx->mcu_h = syntax->mcu_ver_cnt; in hal_jpege_vepu2_get_task()
170 ctx->sw_bit = 0; in hal_jpege_vepu2_get_task()
171 ctx->part_bytepos = 0; in hal_jpege_vepu2_get_task()
172 ctx->part_x_fill = 0; in hal_jpege_vepu2_get_task()
173 ctx->part_y_fill = 0; in hal_jpege_vepu2_get_task()
174 ctx->rst_marker_idx = 0; in hal_jpege_vepu2_get_task()
180 if (ctx->task_cnt > 1) { in hal_jpege_vepu2_get_task()
181 task->flags.reg_idx = ctx->task_idx++; in hal_jpege_vepu2_get_task()
182 if (ctx->task_idx >= ctx->task_cnt) in hal_jpege_vepu2_get_task()
183 ctx->task_idx = 0; in hal_jpege_vepu2_get_task()
191 if (ctx->type == VPU_CLIENT_VEPU2_JPEG) { in hal_jpege_vepu2_get_task()
192 RK_U32 width = ctx->cfg->prep.width; in hal_jpege_vepu2_get_task()
193 RK_U32 height = ctx->cfg->prep.height; in hal_jpege_vepu2_get_task()
202 ctx->ctx_ext = ctx_ext; in hal_jpege_vepu2_get_task()
236 void *regs_base = mpp_calloc_size(void, ctx->reg_size * MAX_CORE_NUM * 2); in hal_jpege_vepu2_get_task()
237 size_t reg_size = ctx->reg_size; in hal_jpege_vepu2_get_task()
256 if (ctx->cfg->split.split_mode == MPP_ENC_SPLIT_BY_CTU) { in hal_jpege_vepu2_get_task()
310 if (i == 0 && !ctx->syntax.restart_ri) in hal_jpege_vepu2_get_task()
311 ctx->syntax.restart_ri = mb_w * part_rows; in hal_jpege_vepu2_get_task()
325 if (ctx->cfg->jpeg.update) { in hal_jpege_vepu2_get_task()
326 hal_jpege_rc_update(&ctx->hal_rc, syntax); in hal_jpege_vepu2_get_task()
327 ctx->cfg->jpeg.update = 0; in hal_jpege_vepu2_get_task()
368 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_gen_regs() local
371 JpegeSyntax *syntax = &ctx->syntax; in hal_jpege_vepu2_gen_regs()
378 JpegeBits bits = ctx->bits; in hal_jpege_vepu2_gen_regs()
380 RK_U32 *regs = (RK_U32 *)((RK_U8 *)ctx->regs + ctx->reg_size * reg_idx); in hal_jpege_vepu2_gen_regs()
407 hor_stride = get_vepu_pixel_stride(&ctx->stride_cfg, width, in hal_jpege_vepu2_gen_regs()
421 ctx->part_x_fill = x_fill; in hal_jpege_vepu2_gen_regs()
422 ctx->part_y_fill = y_fill; in hal_jpege_vepu2_gen_regs()
428 hal_jpege_rc_update(&ctx->hal_rc, syntax); in hal_jpege_vepu2_gen_regs()
436 write_jpeg_header(bits, syntax, &ctx->hal_rc); in hal_jpege_vepu2_gen_regs()
447 ctx->base = buf; in hal_jpege_vepu2_gen_regs()
448 ctx->size = size; in hal_jpege_vepu2_gen_regs()
449 ctx->sw_bit = bitpos; in hal_jpege_vepu2_gen_regs()
450 ctx->part_bytepos = bytepos; in hal_jpege_vepu2_gen_regs()
468 mpp_dev_set_reg_offset(ctx->dev, 77, bytepos); in hal_jpege_vepu2_gen_regs()
543 jpege_restart_marker[ctx->rst_marker_idx & 7]; in hal_jpege_vepu2_gen_regs()
562 regs[i] = ctx->hal_rc.qtables[0][qp_reorder_table[i * 4 + 0]] << 24 | in hal_jpege_vepu2_gen_regs()
563 ctx->hal_rc.qtables[0][qp_reorder_table[i * 4 + 1]] << 16 | in hal_jpege_vepu2_gen_regs()
564 ctx->hal_rc.qtables[0][qp_reorder_table[i * 4 + 2]] << 8 | in hal_jpege_vepu2_gen_regs()
565 ctx->hal_rc.qtables[0][qp_reorder_table[i * 4 + 3]]; in hal_jpege_vepu2_gen_regs()
569 regs[i + 16] = ctx->hal_rc.qtables[1][qp_reorder_table[i * 4 + 0]] << 24 | in hal_jpege_vepu2_gen_regs()
570 ctx->hal_rc.qtables[1][qp_reorder_table[i * 4 + 1]] << 16 | in hal_jpege_vepu2_gen_regs()
571 ctx->hal_rc.qtables[1][qp_reorder_table[i * 4 + 2]] << 8 | in hal_jpege_vepu2_gen_regs()
572 ctx->hal_rc.qtables[1][qp_reorder_table[i * 4 + 3]]; in hal_jpege_vepu2_gen_regs()
580 static MPP_RET multi_core_start(HalJpegeCtx *ctx, HalEncTask *task) in multi_core_start() argument
582 JpegeMultiCoreCtx *ctx_ext = ctx->ctx_ext; in multi_core_start()
583 JpegeSyntax *syntax = &ctx->syntax; in multi_core_start()
585 MppDev dev = ctx->dev; in multi_core_start()
587 RK_U32 *src = (RK_U32 *)((RK_U8 *)ctx->regs + ctx->reg_size * reg_idx); in multi_core_start()
588 RK_U32 reg_size = ctx->reg_size; in multi_core_start()
601 RK_U32 part_x_fill = ctx->part_x_fill; in multi_core_start()
602 RK_U32 part_y_fill = ctx->part_y_fill; in multi_core_start()
603 RK_U32 part_bytepos = ctx->part_bytepos; in multi_core_start()
623 get_msb_lsb_at_pos(&regs[51], &regs[52], ctx->base, part_bytepos); in multi_core_start()
647 i, part_not_end, ctx->rst_marker_idx); in multi_core_start()
649 jpege_restart_marker[ctx->rst_marker_idx & 7]; in multi_core_start()
650 ctx->rst_marker_idx += ctx_ext->ecs_cnt[i]; in multi_core_start()
709 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_REG_RD, &rd_cfg); in multi_core_start()
715 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_REG_OFFS, reg_cfg); in multi_core_start()
722 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_DELIMIT, NULL); in multi_core_start()
731 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_CMD_SEND, NULL); in multi_core_start()
738 static MPP_RET multi_core_wait(HalJpegeCtx *ctx, HalEncTask *task) in multi_core_wait() argument
740 JpegeMultiCoreCtx *ctx_ext = (JpegeMultiCoreCtx *)ctx->ctx_ext; in multi_core_wait()
741 JpegeFeedback *feedback = &ctx->feedback; in multi_core_wait()
755 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_CMD_POLL, NULL); in multi_core_wait()
766 sw_bit = jpege_bits_get_bitpos(ctx->bits); in multi_core_wait()
771 task->hw_length = task->length - ctx->hal_start_pos; in multi_core_wait()
804 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_start() local
805 JpegeMultiCoreCtx *ctx_ext = (JpegeMultiCoreCtx *)ctx->ctx_ext; in hal_jpege_vepu2_start()
810 multi_core_start(ctx, task); in hal_jpege_vepu2_start()
812 hal_jpege_vepu2_set_extra_info(ctx->dev, &ctx->syntax, 0); in hal_jpege_vepu2_start()
816 RK_U32 reg_size = ctx->reg_size; in hal_jpege_vepu2_start()
818 RK_U32 *regs = (RK_U32 *)((RK_U8 *)ctx->regs + reg_size * reg_idx); in hal_jpege_vepu2_start()
824 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_REG_WR, &wr_cfg); in hal_jpege_vepu2_start()
834 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_REG_RD, &rd_cfg); in hal_jpege_vepu2_start()
840 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_CMD_SEND, NULL); in hal_jpege_vepu2_start()
854 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_wait() local
855 JpegeMultiCoreCtx *ctx_ext = (JpegeMultiCoreCtx *)ctx->ctx_ext; in hal_jpege_vepu2_wait()
861 multi_core_wait(ctx, task); in hal_jpege_vepu2_wait()
863 JpegeFeedback *feedback = &ctx->feedback; in hal_jpege_vepu2_wait()
864 JpegeBits bits = ctx->bits; in hal_jpege_vepu2_wait()
866 RK_U32 *regs = (RK_U32 *)((RK_U8 *)ctx->regs + ctx->reg_size * reg_idx); in hal_jpege_vepu2_wait()
871 if (ctx->dev) { in hal_jpege_vepu2_wait()
872 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_CMD_POLL, NULL); in hal_jpege_vepu2_wait()
888 task->hw_length = task->length - ctx->hal_start_pos; in hal_jpege_vepu2_wait()
901 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_part_start() local
905 RK_U32 mcu_y = ctx->mcu_y; in hal_jpege_vepu2_part_start()
908 RK_U32 *regs = (RK_U32 *)((RK_U8 *)ctx->regs + ctx->reg_size * reg_idx); in hal_jpege_vepu2_part_start()
927 part_y_fill = ctx->part_y_fill; in hal_jpege_vepu2_part_start()
934 get_msb_lsb_at_pos(&regs[51], &regs[52], ctx->base, ctx->part_bytepos); in hal_jpege_vepu2_part_start()
936 regs[53] = ctx->size - ctx->part_bytepos; in hal_jpege_vepu2_part_start()
938 regs[60] = (((ctx->part_bytepos & 7) * 8) << 16) | in hal_jpege_vepu2_part_start()
939 (ctx->part_x_fill << 4) | in hal_jpege_vepu2_part_start()
943 if (ctx->part_bytepos) in hal_jpege_vepu2_part_start()
944 mpp_dev_set_reg_offset(ctx->dev, 77, ctx->part_bytepos); in hal_jpege_vepu2_part_start()
953 part_not_end, ctx->rst_marker_idx); in hal_jpege_vepu2_part_start()
954 regs[107] = part_not_end << 24 | jpege_restart_marker[ctx->rst_marker_idx & 7]; in hal_jpege_vepu2_part_start()
955 ctx->rst_marker_idx++; in hal_jpege_vepu2_part_start()
957 hal_jpege_vepu2_set_extra_info(ctx->dev, syntax, mcu_y); in hal_jpege_vepu2_part_start()
958 ctx->mcu_y += part_enc_mcu_h; in hal_jpege_vepu2_part_start()
963 RK_U32 reg_size = ctx->reg_size; in hal_jpege_vepu2_part_start()
965 wr_cfg.reg = ctx->regs; in hal_jpege_vepu2_part_start()
969 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_REG_WR, &wr_cfg); in hal_jpege_vepu2_part_start()
975 rd_cfg.reg = ctx->regs_out; in hal_jpege_vepu2_part_start()
979 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_REG_RD, &rd_cfg); in hal_jpege_vepu2_part_start()
985 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_CMD_SEND, NULL); in hal_jpege_vepu2_part_start()
1000 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_part_wait() local
1002 RK_U32 *regs = (RK_U32 *)((RK_U8 *)ctx->regs_out + ctx->reg_size * reg_idx); in hal_jpege_vepu2_part_wait()
1003 JpegeFeedback *feedback = &ctx->feedback; in hal_jpege_vepu2_part_wait()
1008 if (ctx->dev) { in hal_jpege_vepu2_part_wait()
1009 ret = mpp_dev_ioctl(ctx->dev, MPP_DEV_CMD_POLL, NULL); in hal_jpege_vepu2_part_wait()
1018 hal_jpege_dbg_detail("byte pos %d -> %d\n", ctx->part_bytepos, in hal_jpege_vepu2_part_wait()
1019 (ctx->part_bytepos & (~7)) + (hw_bit / 8)); in hal_jpege_vepu2_part_wait()
1020 ctx->part_bytepos = (ctx->part_bytepos & (~7)) + (hw_bit / 8); in hal_jpege_vepu2_part_wait()
1022 feedback->stream_length = ctx->part_bytepos; in hal_jpege_vepu2_part_wait()
1023 task->length = ctx->part_bytepos; in hal_jpege_vepu2_part_wait()
1024 task->hw_length = task->length - ctx->hal_start_pos; in hal_jpege_vepu2_part_wait()
1030 ctx->sw_bit, hw_bit, feedback->stream_length, task->hw_length); in hal_jpege_vepu2_part_wait()
1038 HalJpegeCtx *ctx = (HalJpegeCtx *)hal; in hal_jpege_vepu2_ret_task() local
1041 task->rc_task->info.bit_real = ctx->feedback.stream_length * 8; in hal_jpege_vepu2_ret_task()
1042 task->hal_ret.data = &ctx->feedback; in hal_jpege_vepu2_ret_task()