Lines Matching full:req

110 static int rga_blit_async(rga_session *session, struct rga_req *req);
299 static void print_debug_info(struct rga_req *req) in print_debug_info() argument
302 rga_get_render_mode_str(req->render_mode), in print_debug_info()
303 rga_get_rotate_mode_str(req), req->bsfilter_flag); in print_debug_info()
305 req->src.yrgb_addr, req->src.uv_addr, req->src.v_addr, in print_debug_info()
306 rga_get_format_name(req->src.format), in print_debug_info()
307 req->src.act_w, req->src.act_h, req->src.vir_w, req->src.vir_h, in print_debug_info()
308 req->src.x_offset, req->src.y_offset); in print_debug_info()
310 req->dst.yrgb_addr, req->dst.uv_addr, req->dst.v_addr, in print_debug_info()
311 rga_get_format_name(req->dst.format), in print_debug_info()
312 req->dst.act_w, req->dst.act_h, req->dst.vir_w, req->dst.vir_h, in print_debug_info()
313 req->dst.x_offset, req->dst.y_offset); in print_debug_info()
314 DBG("mmuflg = %.8x, mmuen is %d\n", req->mmu_info.mmu_flag, req->mmu_info.mmu_en); in print_debug_info()
316 req->clip.xmin, req->clip.xmax, req->clip.ymin, req->clip.ymax); in print_debug_info()
317 DBG("alpha: flag %.8x mode=%.8x\n", req->alpha_rop_flag, req->alpha_rop_mode); in print_debug_info()
318 DBG("blend mode:%s\n", rga_get_blend_mode_str(req->alpha_rop_flag)); in print_debug_info()
319 DBG("yuv2rgb mode:%x\n", req->yuv2rgb_mode); in print_debug_info()
322 static int rga_align_check(struct rga_req *req) in rga_align_check() argument
324 if (rga_is_yuv10bit_format(req->src.format)) { in rga_align_check()
325 if ((req->src.vir_w % 16) || (req->src.x_offset % 2) || in rga_align_check()
326 (req->src.act_w % 2) || (req->src.y_offset % 2) || in rga_align_check()
327 (req->src.act_h % 2) || (req->src.vir_h % 2)) in rga_align_check()
330 if (rga_is_yuv10bit_format(req->dst.format)) { in rga_align_check()
331 if ((req->dst.vir_w % 16) || (req->dst.x_offset % 2) || in rga_align_check()
332 (req->dst.act_w % 2) || (req->dst.y_offset % 2) || in rga_align_check()
333 (req->dst.act_h % 2) || (req->dst.vir_h % 2)) in rga_align_check()
336 if (rga_is_yuv8bit_format(req->src.format)) { in rga_align_check()
337 if ((req->src.vir_w % 8) || (req->src.x_offset % 2) || in rga_align_check()
338 (req->src.act_w % 2) || (req->src.y_offset % 2) || in rga_align_check()
339 (req->src.act_h % 2) || (req->src.vir_h % 2)) in rga_align_check()
342 if (rga_is_yuv8bit_format(req->dst.format)) { in rga_align_check()
343 if ((req->dst.vir_w % 8) || (req->dst.x_offset % 2) || in rga_align_check()
344 (req->dst.act_w % 2) || (req->dst.y_offset % 2) || in rga_align_check()
345 (req->dst.act_h % 2) || (req->dst.vir_h % 2)) in rga_align_check()
648 static int rga_check_param(const struct rga_req *req) in rga_check_param() argument
653 if(!((req->render_mode == color_fill_mode) || (req->render_mode == line_point_drawing_mode))) in rga_check_param()
655 …if (unlikely((req->src.act_w <= 0) || (req->src.act_w > 8191) || (req->src.act_h <= 0) || (req->sr… in rga_check_param()
657 printk("invalid source resolution act_w = %d, act_h = %d\n", req->src.act_w, req->src.act_h); in rga_check_param()
662 if(!((req->render_mode == color_fill_mode) || (req->render_mode == line_point_drawing_mode))) in rga_check_param()
664 …if (unlikely((req->src.vir_w <= 0) || (req->src.vir_w > 8191) || (req->src.vir_h <= 0) || (req->sr… in rga_check_param()
666 printk("invalid source resolution vir_w = %d, vir_h = %d\n", req->src.vir_w, req->src.vir_h); in rga_check_param()
672 …if (unlikely((req->dst.act_w <= 0) || (req->dst.act_w > 2048) || (req->dst.act_h <= 0) || (req->ds… in rga_check_param()
674 printk("invalid destination resolution act_w = %d, act_h = %d\n", req->dst.act_w, req->dst.act_h); in rga_check_param()
678 …if (unlikely((req->dst.vir_w <= 0) || (req->dst.vir_w > 4096) || (req->dst.vir_h <= 0) || (req->ds… in rga_check_param()
680 printk("invalid destination resolution vir_w = %d, vir_h = %d\n", req->dst.vir_w, req->dst.vir_h); in rga_check_param()
685 if(unlikely(req->src.vir_w < req->src.act_w)){ in rga_check_param()
686 printk("invalid src_vir_w act_w = %d, vir_w = %d\n", req->src.act_w, req->src.vir_w); in rga_check_param()
691 if(unlikely(req->dst.vir_w < req->dst.act_w)){ in rga_check_param()
692 if(req->rotate_mode != 1) in rga_check_param()
694 printk("invalid dst_vir_w act_h = %d, vir_h = %d\n", req->dst.act_w, req->dst.vir_w); in rga_check_param()
723 static struct rga_reg * rga_reg_init(rga_session *session, struct rga_req *req) in rga_reg_init() argument
738 if (req->mmu_info.mmu_en) in rga_reg_init()
740 ret = rga_set_mmu_info(reg, req); in rga_reg_init()
752 if(RGA_gen_reg_info(req, (uint8_t *)reg->cmd_reg) == -1) in rga_reg_init()
762 reg->sg_src = req->sg_src; in rga_reg_init()
763 reg->sg_dst = req->sg_dst; in rga_reg_init()
764 reg->attach_src = req->attach_src; in rga_reg_init()
765 reg->attach_dst = req->attach_dst; in rga_reg_init()
880 static int rga_put_dma_buf(struct rga_req *req, struct rga_reg *reg) in rga_put_dma_buf() argument
886 if (!req && !reg) in rga_put_dma_buf()
889 attach = (!reg) ? req->attach_src : reg->attach_src; in rga_put_dma_buf()
890 sgt = (!reg) ? req->sg_src : reg->sg_src; in rga_put_dma_buf()
899 attach = (!reg) ? req->attach_dst : reg->attach_dst; in rga_put_dma_buf()
900 sgt = (!reg) ? req->sg_dst : reg->sg_dst; in rga_put_dma_buf()
976 print_info(&reg->req); in rga_del_running_list_timeout()
998 static int rga_convert_dma_buf(struct rga_req *req) in rga_convert_dma_buf() argument
1007 req->sg_src = NULL; in rga_convert_dma_buf()
1008 req->sg_dst = NULL; in rga_convert_dma_buf()
1010 src_offset = req->line_draw_info.flag; in rga_convert_dma_buf()
1011 dst_offset = req->line_draw_info.line_width; in rga_convert_dma_buf()
1013 if (req->src.yrgb_addr) { in rga_convert_dma_buf()
1014 hdl = ion_import_dma_buf(rga_drvdata->ion_client, req->src.yrgb_addr); in rga_convert_dma_buf()
1021 if (req->src.uv_addr) { in rga_convert_dma_buf()
1024 req->src.uv_addr = 0; in rga_convert_dma_buf()
1031 rga_memory_check(vaddr, req->src.vir_h, req->src.vir_w, in rga_convert_dma_buf()
1032 req->src.format, req->src.yrgb_addr); in rga_convert_dma_buf()
1036 if ((req->mmu_info.mmu_flag >> 8) & 1) { in rga_convert_dma_buf()
1037 req->sg_src = ion_sg_table(rga_drvdata->ion_client, hdl); in rga_convert_dma_buf()
1038 req->src.yrgb_addr = req->src.uv_addr; in rga_convert_dma_buf()
1039 req->src.uv_addr = req->src.yrgb_addr + (req->src.vir_w * req->src.vir_h); in rga_convert_dma_buf()
1040 req->src.v_addr = req->src.uv_addr + (req->src.vir_w * req->src.vir_h)/4; in rga_convert_dma_buf()
1044 req->src.yrgb_addr = phy_addr + src_offset; in rga_convert_dma_buf()
1045 req->src.uv_addr = req->src.yrgb_addr + (req->src.vir_w * req->src.vir_h); in rga_convert_dma_buf()
1046 req->src.v_addr = req->src.uv_addr + (req->src.vir_w * req->src.vir_h)/4; in rga_convert_dma_buf()
1051 req->src.yrgb_addr = req->src.uv_addr; in rga_convert_dma_buf()
1052 req->src.uv_addr = req->src.yrgb_addr + (req->src.vir_w * req->src.vir_h); in rga_convert_dma_buf()
1053 req->src.v_addr = req->src.uv_addr + (req->src.vir_w * req->src.vir_h)/4; in rga_convert_dma_buf()
1056 if(req->dst.yrgb_addr) { in rga_convert_dma_buf()
1057 hdl = ion_import_dma_buf(rga_drvdata->ion_client, req->dst.yrgb_addr); in rga_convert_dma_buf()
1064 if (req->dst.uv_addr) { in rga_convert_dma_buf()
1067 req->dst.uv_addr = 0; in rga_convert_dma_buf()
1074 rga_memory_check(vaddr, req->src.vir_h, req->src.vir_w, in rga_convert_dma_buf()
1075 req->src.format, req->src.yrgb_addr); in rga_convert_dma_buf()
1079 if ((req->mmu_info.mmu_flag >> 10) & 1) { in rga_convert_dma_buf()
1080 req->sg_dst = ion_sg_table(rga_drvdata->ion_client, hdl); in rga_convert_dma_buf()
1081 req->dst.yrgb_addr = req->dst.uv_addr; in rga_convert_dma_buf()
1082 req->dst.uv_addr = req->dst.yrgb_addr + (req->dst.vir_w * req->dst.vir_h); in rga_convert_dma_buf()
1083 req->dst.v_addr = req->dst.uv_addr + (req->dst.vir_w * req->dst.vir_h)/4; in rga_convert_dma_buf()
1087 req->dst.yrgb_addr = phy_addr + dst_offset; in rga_convert_dma_buf()
1088 req->dst.uv_addr = req->dst.yrgb_addr + (req->dst.vir_w * req->dst.vir_h); in rga_convert_dma_buf()
1089 req->dst.v_addr = req->dst.uv_addr + (req->dst.vir_w * req->dst.vir_h)/4; in rga_convert_dma_buf()
1094 req->dst.yrgb_addr = req->dst.uv_addr; in rga_convert_dma_buf()
1095 req->dst.uv_addr = req->dst.yrgb_addr + (req->dst.vir_w * req->dst.vir_h); in rga_convert_dma_buf()
1096 req->dst.v_addr = req->dst.uv_addr + (req->dst.vir_w * req->dst.vir_h)/4; in rga_convert_dma_buf()
1186 static int rga_get_dma_buf(struct rga_req *req) in rga_get_dma_buf() argument
1192 req->sg_src = NULL; in rga_get_dma_buf()
1193 req->sg_dst = NULL; in rga_get_dma_buf()
1194 req->attach_src = NULL; in rga_get_dma_buf()
1195 req->attach_dst = NULL; in rga_get_dma_buf()
1196 mmu_flag = (req->mmu_info.mmu_flag >> 8) & 1; in rga_get_dma_buf()
1197 ret = rga_get_img_info(&req->src, mmu_flag, &req->sg_src, in rga_get_dma_buf()
1198 &req->attach_src); in rga_get_dma_buf()
1204 mmu_flag = (req->mmu_info.mmu_flag >> 10) & 1; in rga_get_dma_buf()
1205 ret = rga_get_img_info(&req->dst, mmu_flag, &req->sg_dst, in rga_get_dma_buf()
1206 &req->attach_dst); in rga_get_dma_buf()
1215 if (req->sg_src && req->attach_src) { in rga_get_dma_buf()
1216 dma_buf_unmap_attachment(req->attach_src, in rga_get_dma_buf()
1217 req->sg_src, DMA_BIDIRECTIONAL); in rga_get_dma_buf()
1218 dma_buf = req->attach_src->dmabuf; in rga_get_dma_buf()
1219 dma_buf_detach(dma_buf, req->attach_src); in rga_get_dma_buf()
1306 static void rga_mem_addr_sel(struct rga_req *req) in rga_mem_addr_sel() argument
1308 switch (req->src.format) { in rga_mem_addr_sel()
1314 if ((req->src.yrgb_addr > 0xc0000000) && (req->src.uv_addr > 0xc0000000) && in rga_mem_addr_sel()
1315 (req->dst.yrgb_addr > 0xc0000000)) { in rga_mem_addr_sel()
1316 req->src.yrgb_addr = req->src.yrgb_addr - 0x60000000; in rga_mem_addr_sel()
1317 req->src.uv_addr = req->src.uv_addr - 0x60000000; in rga_mem_addr_sel()
1318 req->dst.yrgb_addr = req->dst.yrgb_addr - 0x60000000; in rga_mem_addr_sel()
1319 req->mmu_info.mmu_en = 0; in rga_mem_addr_sel()
1320 req->mmu_info.mmu_flag &= 0xfffe; in rga_mem_addr_sel()
1339 static int rga_blit(rga_session *session, struct rga_req *req) in rga_blit() argument
1348 saw = req->src.act_w; in rga_blit()
1349 sah = req->src.act_h; in rga_blit()
1350 daw = req->dst.act_w; in rga_blit()
1351 dah = req->dst.act_h; in rga_blit()
1355 print_debug_info(req); in rga_blit()
1357 rga_align_check(req); in rga_blit()
1358 /*rga_scale_check(req);*/ in rga_blit()
1361 if (rga_get_dma_buf(req)) { in rga_blit()
1365 req->render_mode &= (~RGA_BUF_GEM_TYPE_MASK); in rga_blit()
1367 if ((req->render_mode == bitblt_mode) && (((saw >> 1) >= daw) || ((sah >> 1) >= dah))) { in rga_blit()
1377 ret = rga_check_param(req); in rga_blit()
1379 pr_err("req 0 argument is inval\n"); in rga_blit()
1383 ret = RGA_gen_two_pro(req, &req2); in rga_blit()
1389 ret = rga_check_param(req); in rga_blit()
1391 pr_err("req 1 argument is inval\n"); in rga_blit()
1397 pr_err("req 2 argument is inval\n"); in rga_blit()
1401 reg = rga_reg_init_2(session, req, &req2); in rga_blit()
1409 ret = rga_check_param(req); in rga_blit()
1411 pr_err("req argument is inval\n"); in rga_blit()
1415 reg = rga_reg_init(session, req); in rga_blit()
1433 rga_put_dma_buf(req, NULL); in rga_blit()
1438 static int rga_blit(rga_session *session, struct rga_req *req) in rga_blit() argument
1446 saw = req->src.act_w; in rga_blit()
1447 sah = req->src.act_h; in rga_blit()
1448 daw = req->dst.act_w; in rga_blit()
1449 dah = req->dst.act_h; in rga_blit()
1453 print_debug_info(req); in rga_blit()
1455 rga_align_check(req); in rga_blit()
1456 /*rga_scale_check(req);*/ in rga_blit()
1459 if (rga_convert_dma_buf(req)) { in rga_blit()
1464 if ((req->render_mode == bitblt_mode) && (((saw >> 1) >= daw) || ((sah >> 1) >= dah))) { in rga_blit()
1466 ret = rga_check_param(req); in rga_blit()
1468 pr_err("req 0 argument is inval\n"); in rga_blit()
1472 ret = RGA_gen_two_pro(req, &req2); in rga_blit()
1476 ret = rga_check_param(req); in rga_blit()
1478 pr_err("req 1 argument is inval\n"); in rga_blit()
1484 pr_err("req 2 argument is inval\n"); in rga_blit()
1488 reg = rga_reg_init_2(session, req, &req2); in rga_blit()
1495 ret = rga_check_param(req); in rga_blit()
1497 pr_err("req argument is inval\n"); in rga_blit()
1501 if (req->render_mode == bitblt_mode) in rga_blit()
1502 rga_mem_addr_sel(req); in rga_blit()
1504 reg = rga_reg_init(session, req); in rga_blit()
1522 static int rga_blit_async(rga_session *session, struct rga_req *req) in rga_blit_async() argument
1531 ret = rga_blit(session, req); in rga_blit_async()
1535 static int rga_blit_sync(rga_session *session, struct rga_req *req) in rga_blit_sync() argument
1546 ret = rga_blit(session, req); in rga_blit_sync()
1580 struct rga_req req; in rga_ioctl() local
1584 memset(&req, 0x0, sizeof(req)); in rga_ioctl()
1595 memset(&req, 0x0, sizeof(req)); in rga_ioctl()
1606 if (unlikely(copy_from_user(&req, (struct rga_req*)arg, sizeof(struct rga_req)))) in rga_ioctl()
1612 ret = rga_blit_sync(session, &req); in rga_ioctl()
1615 if (unlikely(copy_from_user(&req, (struct rga_req*)arg, sizeof(struct rga_req)))) in rga_ioctl()
1624 ret = rga_blit_sync(session, &req); in rga_ioctl()
1628 ret = rga_blit_async(session, &req); in rga_ioctl()
1665 long rga_ioctl_kernel(struct rga_req *req) in rga_ioctl_kernel() argument
1673 ret = (*rga_ioctl_kernel_p)(req); in rga_ioctl_kernel()
1679 long rga_ioctl_kernel_imp(struct rga_req *req) in rga_ioctl_kernel_imp() argument
1694 ret = rga_blit_sync(session, req); in rga_ioctl_kernel_imp()
2055 struct rga_req req; in rga_slt() local
2099 memset(&req, 0, sizeof(struct rga_req)); in rga_slt()
2109 req.src.act_w = srcW; in rga_slt()
2110 req.src.act_h = srcH; in rga_slt()
2112 req.src.vir_w = srcW; in rga_slt()
2113 req.src.vir_h = srcW; in rga_slt()
2114 req.src.yrgb_addr = 0; in rga_slt()
2115 req.src.uv_addr = src_phy; in rga_slt()
2116 req.src.v_addr = src_phy + srcH * srcW; in rga_slt()
2117 req.src.format = RK_FORMAT_RGBA_8888; in rga_slt()
2119 req.dst.act_w = dstW; in rga_slt()
2120 req.dst.act_h = dstH; in rga_slt()
2122 req.dst.vir_w = dstW; in rga_slt()
2123 req.dst.vir_h = dstH; in rga_slt()
2124 req.dst.x_offset = 0; in rga_slt()
2125 req.dst.y_offset = 0; in rga_slt()
2127 req.dst.yrgb_addr = 0; in rga_slt()
2128 req.dst.uv_addr = dst_phy; in rga_slt()
2129 req.dst.v_addr = dst_phy + dstH * dstW; in rga_slt()
2131 req.dst.format = RK_FORMAT_RGBA_8888; in rga_slt()
2133 req.clip.xmin = 0; in rga_slt()
2134 req.clip.xmax = dstW - 1; in rga_slt()
2135 req.clip.ymin = 0; in rga_slt()
2136 req.clip.ymax = dstH - 1; in rga_slt()
2138 rga_blit_sync(&session, &req); in rga_slt()
2180 struct rga_req req; in rga_slt() local
2206 memset(&req, 0, sizeof(struct rga_req)); in rga_slt()
2219 req.src.act_w = srcW; in rga_slt()
2220 req.src.act_h = srcH; in rga_slt()
2222 req.src.vir_w = srcW; in rga_slt()
2223 req.src.vir_h = srcW; in rga_slt()
2224 req.src.yrgb_addr = 0; in rga_slt()
2225 req.src.uv_addr = (unsigned long)virt_to_phys(src_vir); in rga_slt()
2226 req.src.v_addr = req.src.uv_addr + srcH * srcW; in rga_slt()
2227 req.src.format = RK_FORMAT_RGBA_8888; in rga_slt()
2229 req.dst.act_w = dstW; in rga_slt()
2230 req.dst.act_h = dstH; in rga_slt()
2232 req.dst.vir_w = dstW; in rga_slt()
2233 req.dst.vir_h = dstH; in rga_slt()
2234 req.dst.x_offset = 0; in rga_slt()
2235 req.dst.y_offset = 0; in rga_slt()
2237 req.dst.yrgb_addr = 0; in rga_slt()
2238 req.dst.uv_addr = (unsigned long)virt_to_phys(dst_vir); in rga_slt()
2239 req.dst.v_addr = req.dst.uv_addr + dstH * dstW; in rga_slt()
2241 req.dst.format = RK_FORMAT_RGBA_8888; in rga_slt()
2242 rga_blit_sync(&session, &req); in rga_slt()
2415 struct rga_req req; in rga_test_0() local
2438 memset(&req, 0, sizeof(struct rga_req)); in rga_test_0()
2466 req.src.act_w = 1024; in rga_test_0()
2467 req.src.act_h = 600; in rga_test_0()
2469 req.src.vir_w = 1024; in rga_test_0()
2470 req.src.vir_h = 600; in rga_test_0()
2471 req.src.yrgb_addr = (uint32_t)virt_to_phys(src); in rga_test_0()
2472 req.src.uv_addr = (uint32_t)(req.src.yrgb_addr + 1080*1920); in rga_test_0()
2473 req.src.v_addr = (uint32_t)virt_to_phys(src); in rga_test_0()
2474 req.src.format = RK_FORMAT_RGBA_8888; in rga_test_0()
2476 req.dst.act_w = 600; in rga_test_0()
2477 req.dst.act_h = 352; in rga_test_0()
2479 req.dst.vir_w = 1280; in rga_test_0()
2480 req.dst.vir_h = 800; in rga_test_0()
2481 req.dst.x_offset = 600; in rga_test_0()
2482 req.dst.y_offset = 0; in rga_test_0()
2486 req.dst.yrgb_addr = ((uint32_t)virt_to_phys(dst)); in rga_test_0()
2488 //req.dst.format = RK_FORMAT_RGB_565; in rga_test_0()
2490 req.clip.xmin = 0; in rga_test_0()
2491 req.clip.xmax = 1279; in rga_test_0()
2492 req.clip.ymin = 0; in rga_test_0()
2493 req.clip.ymax = 799; in rga_test_0()
2495 //req.render_mode = color_fill_mode; in rga_test_0()
2496 //req.fg_color = 0x80ffffff; in rga_test_0()
2498 req.rotate_mode = 1; in rga_test_0()
2499 //req.scale_mode = 2; in rga_test_0()
2501 //req.alpha_rop_flag = 0; in rga_test_0()
2502 //req.alpha_rop_mode = 0x19; in rga_test_0()
2503 //req.PD_mode = 3; in rga_test_0()
2505 req.sina = 65536; in rga_test_0()
2506 req.cosa = 0; in rga_test_0()
2508 //req.mmu_info.mmu_flag = 0x21; in rga_test_0()
2509 //req.mmu_info.mmu_en = 1; in rga_test_0()
2511 //printk("src = %.8x\n", req.src.yrgb_addr); in rga_test_0()
2512 //printk("src = %.8x\n", req.src.uv_addr); in rga_test_0()
2513 //printk("dst = %.8x\n", req.dst.yrgb_addr); in rga_test_0()
2516 rga_blit_sync(&session, &req); in rga_test_0()