ktime_t rga_start;\r
ktime_t rga_end;\r
\r
-int rga_num = 0;\r
-\r
rga_session rga_session_global;\r
\r
struct rga_drvdata {\r
req->src.yrgb_addr, req->src.uv_addr, req->src.v_addr, req->src.format);\r
printk("src : act_w = %d, act_h = %d, vir_w = %d, vir_h = %d\n",\r
req->src.act_w, req->src.act_h, req->src.vir_w, req->src.vir_h);\r
- printk("src : x_offset = %.8x y_offset = %.8x\n", req->src.x_offset, req->src.y_offset);\r
+ printk("src : x_off = %.8x y_off = %.8x\n", req->src.x_offset, req->src.y_offset);\r
\r
printk("dst : yrgb_addr = %.8x, dst.uv_addr = %.8x, dst.v_addr = %.8x\n",\r
req->dst.yrgb_addr, req->dst.uv_addr, req->dst.v_addr);\r
- printk("dst : x_offset = %.8x y_offset = %.8x\n", req->dst.x_offset, req->dst.y_offset);\r
+ printk("dst : x_off = %.8x y_off = %.8x\n", req->dst.x_offset, req->dst.y_offset);\r
printk("dst : act_w = %d, act_h = %d, vir_w = %d, vir_h = %d\n",\r
req->dst.act_w, req->dst.act_h, req->dst.vir_w, req->dst.vir_h);\r
\r
\r
if (unlikely(copy_to_user((void __user *)arg, &num_done, sizeof(int)))) {\r
printk("copy_to_user failed\n");\r
- ERR("copy_to_user failed\n");\r
ret = -EFAULT;\r
}\r
return ret;\r
{\r
if (unlikely((req->src.act_w <= 0) || (req->src.act_w > 8191) || (req->src.act_h <= 0) || (req->src.act_h > 8191)))\r
{\r
- ERR("invalid source resolution act_w = %d, act_h = %d\n", req->src.act_w, req->src.act_h);\r
+ printk("invalid source resolution act_w = %d, act_h = %d\n", req->src.act_w, req->src.act_h);\r
return -EINVAL;\r
}\r
}\r
{\r
if (unlikely((req->src.vir_w <= 0) || (req->src.vir_w > 8191) || (req->src.vir_h <= 0) || (req->src.vir_h > 8191)))\r
{\r
- ERR("invalid source resolution vir_w = %d, vir_h = %d\n", req->src.vir_w, req->src.vir_h);\r
+ printk("invalid source resolution vir_w = %d, vir_h = %d\n", req->src.vir_w, req->src.vir_h);\r
return -EINVAL;\r
}\r
}\r
//check dst width and height\r
if (unlikely((req->dst.act_w <= 0) || (req->dst.act_w > 2048) || (req->dst.act_h <= 0) || (req->dst.act_h > 2048)))\r
{\r
- ERR("invalid destination resolution act_w = %d, act_h = %d\n", req->dst.act_w, req->dst.act_h);\r
+ printk("invalid destination resolution act_w = %d, act_h = %d\n", req->dst.act_w, req->dst.act_h);\r
return -EINVAL;\r
}\r
\r
if (unlikely((req->dst.vir_w <= 0) || (req->dst.vir_w > 4096) || (req->dst.vir_h <= 0) || (req->dst.vir_h > 2048)))\r
{\r
- ERR("invalid destination resolution vir_w = %d, vir_h = %d\n", req->dst.vir_w, req->dst.vir_h);\r
+ printk("invalid destination resolution vir_w = %d, vir_h = %d\n", req->dst.vir_w, req->dst.vir_h);\r
return -EINVAL;\r
}\r
\r
//check src_vir_w\r
if(unlikely(req->src.vir_w < req->src.act_w)){\r
- ERR("invalid src_vir_w act_w = %d, vir_w = %d\n", req->src.act_w, req->src.vir_w);\r
+ printk("invalid src_vir_w act_w = %d, vir_w = %d\n", req->src.act_w, req->src.vir_w);\r
return -EINVAL;\r
}\r
\r
//check dst_vir_w\r
if(unlikely(req->dst.vir_w < req->dst.act_w)){\r
- ERR("invalid dst_vir_w act_h = %d, vir_h = %d\n", req->dst.act_w, req->dst.vir_w);\r
- return -EINVAL;\r
+ if(req->rotate_mode != 1)\r
+ {\r
+ printk("invalid dst_vir_w act_h = %d, vir_h = %d\n", req->dst.act_w, req->dst.vir_w);\r
+ return -EINVAL;\r
+ }\r
}\r
\r
return 0;\r
sah = req->src.act_h;\r
daw = req->dst.act_w;\r
dah = req->dst.act_h;\r
- \r
+ \r
do\r
{\r
if((req->render_mode == bitblt_mode) && (((saw>>1) >= daw) || ((sah>>1) >= dah)))\r
atomic_add(num, &rga_service.total_running);\r
rga_try_set_reg();\r
mutex_unlock(&rga_service.lock);\r
-\r
+ \r
return 0;\r
}\r
while(0);\r
uint32_t i, j;\r
uint8_t *p;\r
uint8_t t;\r
+ uint32_t *dst0, *dst1, *dst2; \r
\r
struct fb_info *fb;\r
\r
src = src_buf;\r
dst = dst_buf;\r
\r
- memset(src_buf, 0x80, 1280*480*4);\r
+ memset(src_buf, 0x55, 800*4*300);\r
\r
- dmac_flush_range(&src_buf[0], &src_buf[1280*480]);\r
- outer_flush_range(virt_to_phys(&src_buf[0]),virt_to_phys(&src_buf[1280*480]));\r
+ dmac_flush_range(&src_buf[0], &src_buf[800*600]);\r
+ outer_flush_range(virt_to_phys(&src_buf[0]),virt_to_phys(&src_buf[800*600]));\r
\r
\r
#if 0\r
outer_flush_range(virt_to_phys(&dst_buf[0]),virt_to_phys(&dst_buf[800*480]));\r
#endif\r
\r
+ dst0 = &dst_buf[0];\r
+ dst1 = &dst_buf[800*600*4];\r
+ dst2 = &dst_buf[800*600*4*2];\r
+\r
+ i = j = 0;\r
+\r
printk("\n********************************\n");\r
printk("************ RGA_TEST ************\n");\r
printk("********************************\n\n");\r
\r
- req.src.act_w = 1920;\r
- req.src.act_h = 1080;\r
-\r
- req.src.vir_w = 1920;\r
- req.src.vir_h = 1080;\r
- req.src.yrgb_addr = ((uint32_t)(virt_to_phys(src + 1024)) & 0xfffff000);// & 0xffffffc0;\r
- req.src.uv_addr = (uint32_t)(req.src.yrgb_addr + 1080*1920);\r
- req.src.v_addr = (uint32_t)virt_to_phys(src);\r
- req.src.format = RK_FORMAT_YCbCr_420_SP;\r
+ while( j < 1000)\r
+ {\r
+ req.src.act_w = 800;\r
+ req.src.act_h = 600;\r
+\r
+ req.src.vir_w = 800;\r
+ req.src.vir_h = 600;\r
+ req.src.yrgb_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.uv_addr = (uint32_t)(req.src.yrgb_addr + 1080*1920);\r
+ req.src.v_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.format = RK_FORMAT_RGBA_8888;\r
+\r
+ req.dst.act_w = 800;\r
+ req.dst.act_h = 600;\r
+\r
+ req.dst.vir_w = 800;\r
+ req.dst.vir_h = 600;\r
+ req.dst.x_offset = 0;\r
+ req.dst.y_offset = 0;\r
+\r
+ if((i&3) == 0) \r
+ dst = dst0; \r
+ else if ((i&3) == 1)\r
+ dst = dst1;\r
+ else\r
+ dst = dst2;\r
\r
- req.dst.act_w = 1920;\r
- req.dst.act_h = 1080;\r
+ req.dst.yrgb_addr = ((uint32_t)virt_to_phys(dst));\r
\r
- req.dst.vir_w = 1920;\r
- req.dst.vir_h = 1080;\r
- req.dst.x_offset = 0;\r
- req.dst.y_offset = 0;\r
- req.dst.yrgb_addr = ((uint32_t)virt_to_phys(dst + 256)) & 0xfffff000;\r
+ //req.dst.format = RK_FORMAT_RGB_565;\r
\r
- //req.dst.format = RK_FORMAT_RGB_565;\r
+ req.clip.xmin = 0;\r
+ req.clip.xmax = 799;\r
+ req.clip.ymin = 0;\r
+ req.clip.ymax = 599;\r
\r
- req.clip.xmin = 0;\r
- req.clip.xmax = 1919;\r
- req.clip.ymin = 0;\r
- req.clip.ymax = 1079;\r
+ //req.render_mode = color_fill_mode;\r
+ //req.fg_color = 0x80ffffff;\r
\r
- //req.render_mode = color_fill_mode;\r
- //req.fg_color = 0x80ffffff;\r
+ //req.rotate_mode = 1;\r
+ //req.scale_mode = 2;\r
\r
- //req.rotate_mode = 1;\r
- //req.scale_mode = 2;\r
+ //req.alpha_rop_flag = 0;\r
+ //req.alpha_rop_mode = 0x19;\r
+ //req.PD_mode = 3;\r
\r
- //req.alpha_rop_flag = 1;\r
- //req.alpha_rop_mode = 0x19;\r
- req.PD_mode = 3;\r
+ //req.sina = 0;\r
+ //req.cosa = 65536;\r
\r
- req.sina = 0;\r
- req.cosa = 65536;\r
+ //req.mmu_info.mmu_flag = 0x21;\r
+ //req.mmu_info.mmu_en = 1;\r
\r
- //req.mmu_info.mmu_flag = 0x21;\r
- //req.mmu_info.mmu_en = 1;\r
+ printk("src = %.8x\n", req.src.yrgb_addr);\r
+ printk("src = %.8x\n", req.src.uv_addr);\r
+ printk("dst = %.8x\n", req.dst.yrgb_addr);\r
\r
- printk("src = %.8x\n", req.src.yrgb_addr);\r
- printk("src = %.8x\n", req.src.uv_addr);\r
- printk("dst = %.8x\n", req.dst.yrgb_addr);\r
+ rga_blit_sync(&session, &req);\r
+ \r
+ #if 1\r
+ fb->var.bits_per_pixel = 32;\r
+ \r
+ fb->var.xres = 800;\r
+ fb->var.yres = 600;\r
\r
- rga_blit_sync(&session, &req);\r
- \r
- #if 0\r
- fb->var.bits_per_pixel = 32;\r
- \r
- fb->var.xres = 1280;\r
- fb->var.yres = 800;\r
+ fb->var.red.length = 8;\r
+ fb->var.red.offset = 0;\r
+ fb->var.red.msb_right = 0;\r
\r
- fb->var.red.length = 8;\r
- fb->var.red.offset = 0;\r
- fb->var.red.msb_right = 0;\r
+ fb->var.green.length = 8;\r
+ fb->var.green.offset = 8;\r
+ fb->var.green.msb_right = 0;\r
\r
- fb->var.green.length = 8;\r
- fb->var.green.offset = 8;\r
- fb->var.green.msb_right = 0;\r
+ fb->var.blue.length = 8;\r
\r
- fb->var.blue.length = 8;\r
+ fb->var.blue.offset = 16;\r
+ fb->var.blue.msb_right = 0;\r
\r
- fb->var.blue.offset = 16;\r
- fb->var.blue.msb_right = 0;\r
+ fb->var.transp.length = 8;\r
+ fb->var.transp.offset = 24;\r
+ fb->var.transp.msb_right = 0;\r
\r
- fb->var.transp.length = 8;\r
- fb->var.transp.offset = 24;\r
- fb->var.transp.msb_right = 0;\r
+ fb->var.nonstd &= (~0xff);\r
+ fb->var.nonstd |= 1;\r
\r
- fb->var.nonstd &= (~0xff);\r
- fb->var.nonstd |= 1;\r
+ fb->fix.smem_start = virt_to_phys(dst);\r
\r
- fb->fix.smem_start = virt_to_phys(dst);\r
+ rk_direct_fb_show(fb);\r
\r
- rk_direct_fb_show(fb);\r
- #endif\r
+ i++;\r
+ j++;\r
+ #endif\r
+ }\r
\r
}\r
\r