#define DRIVER_DESC "RGA Device Driver"\r
#define DRIVER_NAME "rga"\r
\r
-#define RGA_VERSION "1.002"\r
+#define RGA_VERSION "1.003"\r
\r
ktime_t rga_start;\r
ktime_t rga_end;\r
/* Dump waiting list info */\r
if (!list_empty(&rga_service.waiting))\r
{\r
+ list_head *next;\r
+\r
next = &rga_service.waiting;\r
\r
printk("rga_service dump waiting list\n");\r
{\r
printk("rga_service dump running list\n");\r
\r
+ list_head *next;\r
+\r
next = &rga_service.running;\r
do\r
{\r
ret_timeout = wait_event_timeout(session->wait, atomic_read(&session->done), RGA_TIMEOUT_DELAY);\r
\r
if (unlikely(ret_timeout < 0)) {\r
- pr_err("flush pid %d wait task ret %d\n", session->pid, ret);\r
+ //pr_err("flush pid %d wait task ret %d\n", session->pid, ret);\r
mutex_lock(&rga_service.lock);\r
rga_del_running_list();\r
mutex_unlock(&rga_service.lock);\r
ret = ret_timeout;\r
} else if (0 == ret_timeout) {\r
- pr_err("flush pid %d wait %d task done timeout\n", session->pid, atomic_read(&session->task_running));\r
- printk("bus = %.8x\n", rga_read(RGA_INT));\r
+ //pr_err("flush pid %d wait %d task done timeout\n", session->pid, atomic_read(&session->task_running));\r
+ //printk("bus = %.8x\n", rga_read(RGA_INT));\r
mutex_lock(&rga_service.lock);\r
rga_del_running_list_timeout();\r
rga_try_set_reg();\r
atomic_sub(1, ®->session->task_running);\r
atomic_sub(1, &rga_service.total_running);\r
\r
- printk("RGA soft reset for timeout process\n");\r
+ //printk("RGA soft reset for timeout process\n");\r
rga_soft_reset();\r
\r
\r
printk("*** rga_blit_async proc ***\n");\r
print_info(req);\r
#endif\r
-\r
+ atomic_set(&session->done, 0);\r
ret = rga_blit(session, req);\r
\r
return ret;\r
\r
if (unlikely(ret_timeout< 0))\r
{\r
- pr_err("sync pid %d wait task ret %d\n", session->pid, ret_timeout);\r
+ //pr_err("sync pid %d wait task ret %d\n", session->pid, ret_timeout);\r
mutex_lock(&rga_service.lock);\r
rga_del_running_list();\r
mutex_unlock(&rga_service.lock);\r
}\r
else if (0 == ret_timeout)\r
{\r
- pr_err("sync pid %d wait %d task done timeout\n", session->pid, atomic_read(&session->task_running));\r
+ //pr_err("sync pid %d wait %d task done timeout\n", session->pid, atomic_read(&session->task_running));\r
mutex_lock(&rga_service.lock);\r
rga_del_running_list_timeout();\r
rga_try_set_reg();\r
extern void rk_direct_fb_show(struct fb_info * fbi);\r
EXPORT_SYMBOL(rk_direct_fb_show);\r
\r
-unsigned int src_buf[1920*1080 * 2];\r
-unsigned int dst_buf[1920*1080 * 2];\r
+unsigned int src_buf[1920*1080];\r
+unsigned int dst_buf[1920*1080];\r
+//unsigned int tmp_buf[1920*1080 * 2];\r
\r
void rga_test_0(void)\r
{\r
src = src_buf;\r
dst = dst_buf;\r
\r
- memset(src_buf, 0x55, 800*4*300);\r
+ memset(src_buf, 0x80, 1024*600*4);\r
\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
+ dmac_flush_range(&src_buf[0], &src_buf[1024*600]);\r
+ outer_flush_range(virt_to_phys(&src_buf[0]),virt_to_phys(&src_buf[1024*600]));\r
\r
\r
#if 0\r
#endif\r
\r
dst0 = &dst_buf[0];\r
- dst1 = &dst_buf[800*600*4];\r
- dst2 = &dst_buf[800*600*4*2];\r
+ //dst1 = &dst_buf[1280*800*4];\r
+ //dst2 = &dst_buf[1280*800*4*2];\r
\r
i = j = 0;\r
\r
printk("************ RGA_TEST ************\n");\r
printk("********************************\n\n");\r
\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
+ req.src.act_w = 1024;\r
+ req.src.act_h = 600;\r
\r
- req.dst.yrgb_addr = ((uint32_t)virt_to_phys(dst));\r
+ req.src.vir_w = 1024;\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.format = RK_FORMAT_RGB_565;\r
+ req.dst.act_w = 600;\r
+ req.dst.act_h = 352;\r
\r
- req.clip.xmin = 0;\r
- req.clip.xmax = 799;\r
- req.clip.ymin = 0;\r
- req.clip.ymax = 599;\r
+ req.dst.vir_w = 1280;\r
+ req.dst.vir_h = 800;\r
+ req.dst.x_offset = 600;\r
+ req.dst.y_offset = 0;\r
\r
- //req.render_mode = color_fill_mode;\r
- //req.fg_color = 0x80ffffff;\r
+ dst = dst0;\r
\r
- //req.rotate_mode = 1;\r
- //req.scale_mode = 2;\r
+ req.dst.yrgb_addr = ((uint32_t)virt_to_phys(dst));\r
\r
- //req.alpha_rop_flag = 0;\r
- //req.alpha_rop_mode = 0x19;\r
- //req.PD_mode = 3;\r
+ //req.dst.format = RK_FORMAT_RGB_565;\r
\r
- //req.sina = 0;\r
- //req.cosa = 65536;\r
+ req.clip.xmin = 0;\r
+ req.clip.xmax = 1279;\r
+ req.clip.ymin = 0;\r
+ req.clip.ymax = 799;\r
\r
- //req.mmu_info.mmu_flag = 0x21;\r
- //req.mmu_info.mmu_en = 1;\r
+ //req.render_mode = color_fill_mode;\r
+ //req.fg_color = 0x80ffffff;\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
+ req.rotate_mode = 1;\r
+ //req.scale_mode = 2;\r
\r
- rga_blit_sync(&session, &req);\r
+ //req.alpha_rop_flag = 0;\r
+ //req.alpha_rop_mode = 0x19;\r
+ //req.PD_mode = 3;\r
\r
- #if 1\r
- fb->var.bits_per_pixel = 32;\r
+ req.sina = 65536;\r
+ req.cosa = 0;\r
\r
- fb->var.xres = 800;\r
- fb->var.yres = 600;\r
+ //req.mmu_info.mmu_flag = 0x21;\r
+ //req.mmu_info.mmu_en = 1;\r
\r
- fb->var.red.length = 8;\r
- fb->var.red.offset = 0;\r
- fb->var.red.msb_right = 0;\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
- fb->var.green.length = 8;\r
- fb->var.green.offset = 8;\r
- fb->var.green.msb_right = 0;\r
\r
- fb->var.blue.length = 8;\r
+ rga_blit_sync(&session, &req);\r
\r
- fb->var.blue.offset = 16;\r
- fb->var.blue.msb_right = 0;\r
+ #if 1\r
+ fb->var.bits_per_pixel = 32;\r
\r
- fb->var.transp.length = 8;\r
- fb->var.transp.offset = 24;\r
- fb->var.transp.msb_right = 0;\r
+ fb->var.xres = 1280;\r
+ fb->var.yres = 800;\r
\r
- fb->var.nonstd &= (~0xff);\r
- fb->var.nonstd |= 1;\r
+ fb->var.red.length = 8;\r
+ fb->var.red.offset = 0;\r
+ fb->var.red.msb_right = 0;\r
\r
- fb->fix.smem_start = virt_to_phys(dst);\r
+ fb->var.green.length = 8;\r
+ fb->var.green.offset = 8;\r
+ fb->var.green.msb_right = 0;\r
\r
- rk_direct_fb_show(fb);\r
+ fb->var.blue.length = 8;\r
\r
- i++;\r
- j++;\r
- #endif\r
- }\r
+ fb->var.blue.offset = 16;\r
+ fb->var.blue.msb_right = 0;\r
+\r
+ fb->var.transp.length = 8;\r
+ fb->var.transp.offset = 24;\r
+ fb->var.transp.msb_right = 0;\r
+\r
+ fb->var.nonstd &= (~0xff);\r
+ fb->var.nonstd |= 1;\r
+\r
+ fb->fix.smem_start = virt_to_phys(dst);\r
+\r
+ rk_direct_fb_show(fb);\r
+ #endif\r
\r
}\r
\r