Lines Matching refs:regs
92 static void rotate_dst_addr_x(struct mdp_blit_req *req, struct mdp_regs *regs) in rotate_dst_addr_x() argument
94 regs->dst0 += (req->dst_rect.w - in rotate_dst_addr_x()
95 min((uint32_t)16, req->dst_rect.w)) * regs->dst_bpp; in rotate_dst_addr_x()
96 regs->dst1 += (req->dst_rect.w - in rotate_dst_addr_x()
97 min((uint32_t)16, req->dst_rect.w)) * regs->dst_bpp; in rotate_dst_addr_x()
100 static void rotate_dst_addr_y(struct mdp_blit_req *req, struct mdp_regs *regs) in rotate_dst_addr_y() argument
102 regs->dst0 += (req->dst_rect.h - in rotate_dst_addr_y()
104 regs->dst_ystride; in rotate_dst_addr_y()
105 regs->dst1 += (req->dst_rect.h - in rotate_dst_addr_y()
107 regs->dst_ystride; in rotate_dst_addr_y()
111 struct mdp_regs *regs) in blit_rotate() argument
116 regs->op |= PPP_OP_ROT_ON; in blit_rotate()
119 rotate_dst_addr_x(req, regs); in blit_rotate()
121 regs->op |= PPP_OP_ROT_90; in blit_rotate()
123 regs->op |= PPP_OP_FLIP_UD; in blit_rotate()
124 rotate_dst_addr_y(req, regs); in blit_rotate()
127 regs->op |= PPP_OP_FLIP_LR; in blit_rotate()
130 static void blit_convert(struct mdp_blit_req *req, struct mdp_regs *regs) in blit_convert() argument
135 regs->op |= PPP_OP_CONVERT_RGB2YCBCR | PPP_OP_CONVERT_ON; in blit_convert()
137 regs->op |= PPP_OP_CONVERT_YCBCR2RGB | PPP_OP_CONVERT_ON; in blit_convert()
139 regs->op |= PPP_OP_CONVERT_MATRIX_SECONDARY; in blit_convert()
169 static void blit_blend(struct mdp_blit_req *req, struct mdp_regs *regs) in blit_blend() argument
179 regs->op |= PPP_OP_ROT_ON | PPP_OP_BLEND_ON | in blit_blend()
186 regs->op |= PPP_OP_ROT_ON | PPP_OP_BLEND_ON | in blit_blend()
194 regs->op |= PPP_OP_ROT_ON | PPP_OP_BLEND_ON | in blit_blend()
198 regs->op |= PPP_OP_ROT_ON | PPP_OP_BLEND_ON | in blit_blend()
203 regs->op |= bg_op_chroma[req->dst.format]; in blit_blend()
336 static int get_edge_cond(struct mdp_blit_req *req, struct mdp_regs *regs) in get_edge_cond() argument
350 regs->edge = 0; in get_edge_cond()
360 if (regs->op & (PPP_OP_SCALE_Y_ON | PPP_OP_SCALE_X_ON)) { in get_edge_cond()
424 regs->edge |= (chroma_repeat[IMG_LEFT] & 3) << MDP_LEFT_CHROMA; in get_edge_cond()
425 regs->edge |= (chroma_repeat[IMG_RIGHT] & 3) << MDP_RIGHT_CHROMA; in get_edge_cond()
426 regs->edge |= (chroma_repeat[IMG_TOP] & 3) << MDP_TOP_CHROMA; in get_edge_cond()
427 regs->edge |= (chroma_repeat[IMG_BOTTOM] & 3) << MDP_BOTTOM_CHROMA; in get_edge_cond()
428 regs->edge |= (luma_repeat[IMG_LEFT] & 3) << MDP_LEFT_LUMA; in get_edge_cond()
429 regs->edge |= (luma_repeat[IMG_RIGHT] & 3) << MDP_RIGHT_LUMA; in get_edge_cond()
430 regs->edge |= (luma_repeat[IMG_TOP] & 3) << MDP_TOP_LUMA; in get_edge_cond()
431 regs->edge |= (luma_repeat[IMG_BOTTOM] & 3) << MDP_BOTTOM_LUMA; in get_edge_cond()
436 struct mdp_regs *regs) in blit_scale() argument
452 regs->phasex_init = 0; in blit_scale()
453 regs->phasey_init = 0; in blit_scale()
454 regs->phasex_step = 0; in blit_scale()
455 regs->phasey_step = 0; in blit_scale()
494 regs->phasex_init = phase_init_x; in blit_scale()
495 regs->phasey_init = phase_init_y; in blit_scale()
496 regs->phasex_step = phase_step_x; in blit_scale()
497 regs->phasey_step = phase_step_y; in blit_scale()
498 regs->op |= (PPP_OP_SCALE_Y_ON | PPP_OP_SCALE_X_ON); in blit_scale()
504 struct mdp_regs *regs) in blit_blur() argument
516 regs->op |= (PPP_OP_SCALE_Y_ON | PPP_OP_SCALE_X_ON); in blit_blur()
538 struct mdp_blit_req *req, struct mdp_regs *regs) in valid_src_dst() argument
545 get_len(&req->src, &req->src_rect, regs->src_bpp, &src0_len, in valid_src_dst()
547 get_len(&req->dst, &req->dst_rect, regs->dst_bpp, &dst0_len, in valid_src_dst()
550 if (regs->src0 < src_min_ok || regs->src0 > src_max_ok || in valid_src_dst()
551 regs->src0 + src0_len > src_max_ok) { in valid_src_dst()
552 DLOG("invalid_src %x %x %lx %lx\n", regs->src0, in valid_src_dst()
556 if (regs->src_cfg & PPP_SRC_PLANE_PSEUDOPLNR) { in valid_src_dst()
557 if (regs->src1 < src_min_ok || regs->src1 > src_max_ok || in valid_src_dst()
558 regs->src1 + src1_len > src_max_ok) { in valid_src_dst()
563 if (regs->dst0 < dst_min_ok || regs->dst0 > dst_max_ok || in valid_src_dst()
564 regs->dst0 + dst0_len > dst_max_ok) { in valid_src_dst()
568 if (regs->dst_cfg & PPP_SRC_PLANE_PSEUDOPLNR) { in valid_src_dst()
569 if (regs->dst1 < dst_min_ok || regs->dst1 > dst_max_ok || in valid_src_dst()
570 regs->dst1 + dst1_len > dst_max_ok) { in valid_src_dst()
579 static void flush_imgs(struct mdp_blit_req *req, struct mdp_regs *regs, in flush_imgs() argument
605 struct mdp_regs *regs, struct file *src_file, in send_blit() argument
609 mdp_writel(mdp, regs->src_rect, PPP_ADDR_SRC_ROI); in send_blit()
610 mdp_writel(mdp, regs->src0, PPP_ADDR_SRC0); in send_blit()
611 mdp_writel(mdp, regs->src1, PPP_ADDR_SRC1); in send_blit()
612 mdp_writel(mdp, regs->src_ystride, PPP_ADDR_SRC_YSTRIDE); in send_blit()
613 mdp_writel(mdp, regs->src_cfg, PPP_ADDR_SRC_CFG); in send_blit()
614 mdp_writel(mdp, regs->src_pack, PPP_ADDR_SRC_PACK_PATTERN); in send_blit()
616 mdp_writel(mdp, regs->op, PPP_ADDR_OPERATION); in send_blit()
617 mdp_writel(mdp, regs->phasex_init, PPP_ADDR_PHASEX_INIT); in send_blit()
618 mdp_writel(mdp, regs->phasey_init, PPP_ADDR_PHASEY_INIT); in send_blit()
619 mdp_writel(mdp, regs->phasex_step, PPP_ADDR_PHASEX_STEP); in send_blit()
620 mdp_writel(mdp, regs->phasey_step, PPP_ADDR_PHASEY_STEP); in send_blit()
625 mdp_writel(mdp, regs->dst_cfg, PPP_ADDR_DST_CFG); in send_blit()
626 mdp_writel(mdp, regs->dst_pack, PPP_ADDR_DST_PACK_PATTERN); in send_blit()
627 mdp_writel(mdp, regs->dst_rect, PPP_ADDR_DST_ROI); in send_blit()
628 mdp_writel(mdp, regs->dst0, PPP_ADDR_DST0); in send_blit()
629 mdp_writel(mdp, regs->dst1, PPP_ADDR_DST1); in send_blit()
630 mdp_writel(mdp, regs->dst_ystride, PPP_ADDR_DST_YSTRIDE); in send_blit()
632 mdp_writel(mdp, regs->edge, PPP_ADDR_EDGE); in send_blit()
633 if (regs->op & PPP_OP_BLEND_ON) { in send_blit()
634 mdp_writel(mdp, regs->dst0, PPP_ADDR_BG0); in send_blit()
635 mdp_writel(mdp, regs->dst1, PPP_ADDR_BG1); in send_blit()
636 mdp_writel(mdp, regs->dst_ystride, PPP_ADDR_BG_YSTRIDE); in send_blit()
641 flush_imgs(req, regs, src_file, dst_file); in send_blit()
650 struct mdp_regs regs = {0}; in mdp_ppp_blit() local
667 regs.src_cfg = src_img_cfg[req->src.format]; in mdp_ppp_blit()
668 regs.src_cfg |= (req->src_rect.x & 0x1) ? PPP_SRC_BPP_ROI_ODD_X : 0; in mdp_ppp_blit()
669 regs.src_cfg |= (req->src_rect.y & 0x1) ? PPP_SRC_BPP_ROI_ODD_Y : 0; in mdp_ppp_blit()
670 regs.src_rect = (req->src_rect.h << 16) | req->src_rect.w; in mdp_ppp_blit()
671 regs.src_pack = pack_pattern[req->src.format]; in mdp_ppp_blit()
674 regs.dst_cfg = dst_img_cfg[req->dst.format] | PPP_DST_OUT_SEL_AXI; in mdp_ppp_blit()
675 regs.dst_rect = (req->dst_rect.h << 16) | req->dst_rect.w; in mdp_ppp_blit()
676 regs.dst_pack = pack_pattern[req->dst.format]; in mdp_ppp_blit()
679 regs.src_bpp = bytes_per_pixel[req->src.format]; in mdp_ppp_blit()
680 regs.src0 = src_start + req->src.offset; in mdp_ppp_blit()
681 regs.src_ystride = req->src.width * regs.src_bpp; in mdp_ppp_blit()
682 get_chroma_addr(&req->src, &req->src_rect, regs.src0, regs.src_bpp, in mdp_ppp_blit()
683 regs.src_cfg, ®s.src1, ®s.src_ystride); in mdp_ppp_blit()
684 regs.src0 += (req->src_rect.x + (req->src_rect.y * req->src.width)) * in mdp_ppp_blit()
685 regs.src_bpp; in mdp_ppp_blit()
688 regs.dst_bpp = bytes_per_pixel[req->dst.format]; in mdp_ppp_blit()
689 regs.dst0 = dst_start + req->dst.offset; in mdp_ppp_blit()
690 regs.dst_ystride = req->dst.width * regs.dst_bpp; in mdp_ppp_blit()
691 get_chroma_addr(&req->dst, &req->dst_rect, regs.dst0, regs.dst_bpp, in mdp_ppp_blit()
692 regs.dst_cfg, ®s.dst1, ®s.dst_ystride); in mdp_ppp_blit()
693 regs.dst0 += (req->dst_rect.x + (req->dst_rect.y * req->dst.width)) * in mdp_ppp_blit()
694 regs.dst_bpp; in mdp_ppp_blit()
697 ®s)) { in mdp_ppp_blit()
705 regs.op = 0; in mdp_ppp_blit()
706 blit_rotate(req, ®s); in mdp_ppp_blit()
707 blit_convert(req, ®s); in mdp_ppp_blit()
709 regs.op |= PPP_OP_DITHER_EN; in mdp_ppp_blit()
710 blit_blend(req, ®s); in mdp_ppp_blit()
711 if (blit_scale(mdp, req, ®s)) { in mdp_ppp_blit()
715 blit_blur(mdp, req, ®s); in mdp_ppp_blit()
716 regs.op |= dst_op_chroma[req->dst.format] | in mdp_ppp_blit()
726 if (get_edge_cond(req, ®s)) in mdp_ppp_blit()
729 send_blit(mdp, req, ®s, src_file, dst_file); in mdp_ppp_blit()