add param check print / fix param check error
authorzsq <zsq@rock-chips.com>
Mon, 25 Mar 2013 03:00:40 +0000 (11:00 +0800)
committerzsq <zsq@rock-chips.com>
Mon, 25 Mar 2013 03:00:40 +0000 (11:00 +0800)
drivers/video/rockchip/rga/rga_drv.c

index f04e77fd262a67ab30278cf5baa8e53c528e581b..9c61d838cd1368038d63dda9d9efc73eaba9d9f9 100755 (executable)
@@ -77,8 +77,6 @@
 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
@@ -126,11 +124,11 @@ static void print_info(struct rga_req *req)
             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
@@ -350,7 +348,6 @@ static int rga_get_result(rga_session *session, unsigned long arg)
 \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
@@ -366,7 +363,7 @@ static int rga_check_param(const struct rga_req *req)
     {\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
@@ -375,7 +372,7 @@ static int rga_check_param(const struct rga_req *req)
     {\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
@@ -383,26 +380,29 @@ static int rga_check_param(const struct rga_req *req)
        //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
@@ -787,7 +787,7 @@ static int rga_blit(rga_session *session, struct rga_req *req)
     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
@@ -849,7 +849,7 @@ static int rga_blit(rga_session *session, struct rga_req *req)
         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
@@ -1333,6 +1333,7 @@ void rga_test_0(void)
     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
@@ -1353,10 +1354,10 @@ void rga_test_0(void)
     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
@@ -1367,88 +1368,108 @@ void rga_test_0(void)
     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