fix wake up interrupt error/flag error
authorzsq <zsq@rock-chips.com>
Mon, 6 May 2013 00:18:58 +0000 (08:18 +0800)
committerzsq <zsq@rock-chips.com>
Mon, 6 May 2013 00:18:58 +0000 (08:18 +0800)
drivers/video/rockchip/rga/rga_drv.c

index fe5eec29d0f9ed721276dc72114ee9d097b832f5..9c744e32eb9bf140aade8f02931805cf7037d168 100755 (executable)
@@ -49,7 +49,7 @@
 #include "RGA_API.h"\r
 \r
 #define RGA_TEST_CASE 0\r
-    \r
+\r
 #define RGA_TEST 0\r
 #define RGA_TEST_TIME 0\r
 #define RGA_TEST_FLUSH_TIME 0\r
@@ -308,14 +308,14 @@ static int rga_flush(rga_session *session, unsigned long arg)
     start = ktime_get();\r
     #endif\r
 \r
-    ret_timeout = wait_event_interruptible_timeout(session->wait, atomic_read(&session->done), RGA_TIMEOUT_DELAY);\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
         mutex_lock(&rga_service.lock);\r
         rga_del_running_list();\r
         mutex_unlock(&rga_service.lock);\r
-        ret = -ETIMEDOUT;\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
@@ -446,7 +446,7 @@ static struct rga_reg * rga_reg_init(rga_session *session, struct rga_req *req)
     reg->session = session;\r
        INIT_LIST_HEAD(&reg->session_link);\r
        INIT_LIST_HEAD(&reg->status_link);\r
-   \r
+\r
     reg->MMU_base = NULL;\r
 \r
     if (req->mmu_info.mmu_en)\r
@@ -615,7 +615,7 @@ static void rga_try_set_reg(void)
             rga_soft_reset();\r
             #endif\r
 \r
-            rga_write(0x0, RGA_SYS_CTRL);                        \r
+            rga_write(0x0, RGA_SYS_CTRL);\r
             rga_write(0, RGA_MMU_CTRL);\r
 \r
             /* CMD buff */\r
@@ -671,7 +671,7 @@ static void rga_del_running_list(void)
     while(!list_empty(&rga_service.running))\r
     {\r
         reg = list_entry(rga_service.running.next, struct rga_reg, status_link);\r
-        \r
+\r
         if(reg->MMU_base != NULL)\r
         {\r
             kfree(reg->MMU_base);\r
@@ -683,7 +683,7 @@ static void rga_del_running_list(void)
         if(list_empty(&reg->session->waiting))\r
         {\r
             atomic_set(&reg->session->done, 1);\r
-            wake_up_interruptible_sync(&reg->session->wait);\r
+            wake_up(&reg->session->wait);\r
         }\r
 \r
         rga_reg_deinit(reg);\r
@@ -709,7 +709,7 @@ static void rga_del_running_list_timeout(void)
 \r
         printk("RGA soft reset for timeout process\n");\r
         rga_soft_reset();\r
-        \r
+\r
 \r
         #if 0\r
         printk("RGA_INT is %.8x\n", rga_read(RGA_INT));\r
@@ -730,7 +730,7 @@ static void rga_del_running_list_timeout(void)
         if(list_empty(&reg->session->waiting))\r
         {\r
             atomic_set(&reg->session->done, 1);\r
-            wake_up_interruptible_sync(&reg->session->wait);\r
+            wake_up(&reg->session->wait);\r
         }\r
 \r
         rga_reg_deinit(reg);\r
@@ -787,12 +787,12 @@ 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
         {\r
-            /* generate 2 cmd for pre scale */            \r
+            /* generate 2 cmd for pre scale */\r
 \r
             ret = rga_check_param(req);\r
                if(ret == -EINVAL) {\r
@@ -822,7 +822,7 @@ static int rga_blit(rga_session *session, struct rga_req *req)
                 break;\r
             }\r
             num = 2;\r
-            \r
+\r
         }\r
         else\r
         {\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
@@ -882,14 +882,14 @@ static int rga_blit_sync(rga_session *session, struct rga_req *req)
     #endif\r
 \r
     atomic_set(&session->done, 0);\r
-    \r
+\r
     ret = rga_blit(session, req);\r
     if(ret < 0)\r
     {\r
         return ret;\r
     }\r
 \r
-    ret_timeout = wait_event_interruptible_timeout(session->wait, atomic_read(&session->done), RGA_TIMEOUT_DELAY);\r
+    ret_timeout = wait_event_timeout(session->wait, atomic_read(&session->done), RGA_TIMEOUT_DELAY);\r
 \r
     if (unlikely(ret_timeout< 0))\r
     {\r
@@ -897,7 +897,7 @@ static int rga_blit_sync(rga_session *session, struct rga_req *req)
         mutex_lock(&rga_service.lock);\r
         rga_del_running_list();\r
         mutex_unlock(&rga_service.lock);\r
-        ret = -ETIMEDOUT;\r
+        ret = ret_timeout;\r
        }\r
     else if (0 == ret_timeout)\r
     {\r
@@ -926,7 +926,7 @@ static long rga_ioctl(struct file *file, uint32_t cmd, unsigned long arg)
     rga_session *session;\r
 \r
     mutex_lock(&rga_service.mutex);\r
-    \r
+\r
     session = (rga_session *)file->private_data;\r
 \r
        if (NULL == session)\r
@@ -936,8 +936,8 @@ static long rga_ioctl(struct file *file, uint32_t cmd, unsigned long arg)
                return -EINVAL;\r
        }\r
 \r
-    memset(&req, 0x0, sizeof(req));    \r
-       \r
+    memset(&req, 0x0, sizeof(req));\r
+\r
        switch (cmd)\r
        {\r
                case RGA_BLIT_SYNC:\r
@@ -983,7 +983,7 @@ static long rga_ioctl(struct file *file, uint32_t cmd, unsigned long arg)
        }\r
 \r
        mutex_unlock(&rga_service.mutex);\r
-    \r
+\r
        return ret;\r
 }\r
 \r
@@ -994,7 +994,7 @@ long rga_ioctl_kernel(struct rga_req *req)
     rga_session *session;\r
 \r
     mutex_lock(&rga_service.mutex);\r
-    \r
+\r
     session = &rga_session_global;\r
 \r
        if (NULL == session)\r
@@ -1003,7 +1003,7 @@ long rga_ioctl_kernel(struct rga_req *req)
         mutex_unlock(&rga_service.mutex);\r
                return -EINVAL;\r
        }\r
-       \r
+\r
        switch (RGA_BLIT_SYNC)\r
        {\r
                case RGA_BLIT_SYNC:\r
@@ -1025,7 +1025,7 @@ long rga_ioctl_kernel(struct rga_req *req)
        }\r
 \r
        mutex_unlock(&rga_service.mutex);\r
-    \r
+\r
        return ret;\r
 }\r
 \r
@@ -1074,7 +1074,7 @@ static int rga_release(struct inode *inode, struct file *file)
         /*ͬ²½*/\r
        }\r
 \r
-       wake_up_interruptible_sync(&session->wait);\r
+       wake_up(&session->wait);\r
        mutex_lock(&rga_service.lock);\r
        list_del(&session->list_session);\r
        rga_service_session_clear(session);\r
@@ -1154,7 +1154,7 @@ static int __devinit rga_drv_probe(struct platform_device *pdev)
                pr_info("failed to reserve rga HW regs\n");\r
                return -EBUSY;\r
        }\r
-    \r
+\r
        data->rga_base = (void*)ioremap_nocache(RK30_RGA_PHYS, RK30_RGA_SIZE);\r
        if (data->rga_base == NULL)\r
        {\r
@@ -1335,7 +1335,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
+    uint32_t *dst0, *dst1, *dst2;\r
 \r
     struct fb_info *fb;\r
 \r
@@ -1351,7 +1351,7 @@ void rga_test_0(void)
        //file->private_data = (void *)session;\r
 \r
     fb = rk_get_fb(0);\r
-    \r
+\r
     memset(&req, 0, sizeof(struct rga_req));\r
     src = src_buf;\r
     dst = dst_buf;\r
@@ -1361,7 +1361,7 @@ void rga_test_0(void)
     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
+\r
     #if 0\r
     memset(src_buf, 0x80, 800*480*4);\r
     memset(dst_buf, 0xcc, 800*480*4);\r
@@ -1400,8 +1400,8 @@ void rga_test_0(void)
         req.dst.x_offset = 0;\r
         req.dst.y_offset = 0;\r
 \r
-        if((i&3) == 0)            \r
-            dst = dst0;            \r
+        if((i&3) == 0)\r
+            dst = dst0;\r
         else if ((i&3) == 1)\r
             dst = dst1;\r
         else\r
@@ -1437,10 +1437,10 @@ void rga_test_0(void)
         printk("dst = %.8x\n", req.dst.yrgb_addr);\r
 \r
         rga_blit_sync(&session, &req);\r
-        \r
+\r
         #if 1\r
         fb->var.bits_per_pixel = 32;\r
-        \r
+\r
         fb->var.xres = 800;\r
         fb->var.yres = 600;\r
 \r