From: Shengqin.Zhang Date: Mon, 21 Mar 2016 10:16:46 +0000 (+0800) Subject: rockchip/rga: add src1 mmu table config when ABB mode X-Git-Tag: firefly_0821_release~1648 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=849db440c50957eb59510e9d2e3fdf932e12545c;p=firefly-linux-kernel-4.4.55.git rockchip/rga: add src1 mmu table config when ABB mode when rga2 use alpha under mmu, it must config src1 mmu addr for src1 channel will read mmu table Change-Id: I6131a546421a5195bf3ae183f6fc7cb50fb09cfc Signed-off-by: Shengqin.Zhang Signed-off-by: Zhiqin Wei --- diff --git a/drivers/video/rockchip/rga2/rga2_mmu_info.c b/drivers/video/rockchip/rga2/rga2_mmu_info.c index 1b88c067ebfe..21c9a8695d55 100644 --- a/drivers/video/rockchip/rga2/rga2_mmu_info.c +++ b/drivers/video/rockchip/rga2/rga2_mmu_info.c @@ -535,6 +535,11 @@ static int rga2_mmu_info_BitBlt_mode(struct rga2_reg *reg, struct rga2_req *req) v_size = (req->dst.v_addr - (DstStart << PAGE_SHIFT)) >> PAGE_SHIFT; req->dst.uv_addr = (req->dst.uv_addr & (~PAGE_MASK)) | ((uv_size) << PAGE_SHIFT); req->dst.v_addr = (req->dst.v_addr & (~PAGE_MASK)) | ((v_size) << PAGE_SHIFT); + + if (((req->alpha_rop_flag & 1) == 1) && (req->bitblt_mode == 0)) { + req->mmu_info.src1_base_addr = req->mmu_info.dst_base_addr; + req->mmu_info.src1_mmu_flag = req->mmu_info.dst_mmu_flag; + } } /* flush data to DDR */ diff --git a/drivers/video/rockchip/rga2/rga2_reg_info.c b/drivers/video/rockchip/rga2/rga2_reg_info.c index 7d8a4d676f7f..d1a9db5dffb9 100755 --- a/drivers/video/rockchip/rga2/rga2_reg_info.c +++ b/drivers/video/rockchip/rga2/rga2_reg_info.c @@ -1049,7 +1049,7 @@ void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req) req->bitblt_mode = req_rga->bsfilter_flag; req->src_a_global_val = req_rga->alpha_global_value; - req->dst_a_global_val = 0; + req->dst_a_global_val = req_rga->alpha_global_value; req->rop_code = req_rga->rop_code; req->rop_mode = 0; @@ -1080,10 +1080,10 @@ void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req) req->alpha_rop_flag |= (((req_rga->alpha_rop_flag >> 5) & 1) << 6); // dst_dither_down req->alpha_rop_flag |= (((req_rga->alpha_rop_flag >> 6) & 1) << 7); // gradient fill mode sel - if(((req_rga->alpha_rop_flag) & 1)) { - if((req_rga->alpha_rop_flag >> 3) & 1) { + if (((req_rga->alpha_rop_flag) & 1)) { + if ((req_rga->alpha_rop_flag >> 3) & 1) { /* porter duff alpha enable */ - switch(req_rga->PD_mode) + switch (req_rga->PD_mode) { case 0: //dst = 0 break; @@ -1129,6 +1129,10 @@ void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req) break; case 11://dst = ((256-da)*sc + (256-sa)*dc) >> 8; break; + case 12: + req->alpha_mode_0 = 0x0010; + req->alpha_mode_1 = 0x0820; + break; default: break; } @@ -1248,7 +1252,7 @@ void RGA_MSG_2_RGA2_MSG_32(struct rga_req_32 *req_rga, struct rga2_req *req) req->rop_mask_addr = req_rga->rop_mask_addr; req->bitblt_mode = req_rga->bsfilter_flag; req->src_a_global_val = req_rga->alpha_global_value; - req->dst_a_global_val = 0; + req->dst_a_global_val = req_rga->alpha_global_value; req->rop_code = req_rga->rop_code; req->rop_mode = 0; req->color_fill_mode = req_rga->color_fill_mode; @@ -1320,6 +1324,10 @@ void RGA_MSG_2_RGA2_MSG_32(struct rga_req_32 *req_rga, struct rga2_req *req) break; case 11://dst = ((256-da)*sc + (256-sa)*dc) >> 8; break; + case 12: + req->alpha_mode_0 = 0x0010; + req->alpha_mode_1 = 0x0820; + break; default: break; }