\r
static int rga_blit_async(rga_session *session, struct rga_req *req);\r
static void rga_del_running_list(void);\r
+static void rga_try_set_reg(uint32_t num);\r
+\r
\r
\r
/* Logging */\r
if (unlikely(ret_timeout < 0)) {\r
pr_err("flush pid %d wait task ret %d\n", session->pid, ret); \r
rga_soft_reset();\r
+ rga_del_running_list();\r
ret = -ETIMEDOUT;\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
rga_soft_reset();\r
+ rga_del_running_list();\r
+ rga_try_set_reg(1);\r
ret = -ETIMEDOUT;\r
}\r
\r
\r
atomic_add(1, &rga_service.cmd_num);\r
atomic_add(1, ®->session->task_running);\r
+ atomic_add(1, &rga_service.total_running);\r
\r
cmd_buf = (uint32_t *)rga_service.cmd_buff + offset*28;\r
reg_p = (uint32_t *)reg->cmd_reg;\r
/* Start proc */\r
atomic_set(®->session->done, 0); \r
rga_write(0x1, RGA_CMD_CTRL);\r
-\r
- atomic_add(1, &rga_service.total_running);\r
- atomic_add(1, ®->session->task_running);\r
-\r
+ \r
#if RGA_TEST\r
{\r
uint32_t i;\r
{\r
pr_err("sync pid %d wait task ret %d\n", session->pid, ret_timeout); \r
rga_soft_reset();\r
+ rga_del_running_list();\r
ret = -ETIMEDOUT;\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
rga_soft_reset();\r
+ rga_del_running_list();\r
+ rga_try_set_reg(1);\r
ret = -ETIMEDOUT;\r
}\r
\r
}\r
\r
//rga_test_0();\r
- //rga_test_1();\r
\r
INFO("Module initialized.\n"); \r
\r
uint32_t i;\r
uint32_t status;\r
uint32_t Address;\r
- uint32_t t_mem;\r
status = 0;\r
Address = 0;\r
\r
struct vm_area_struct *vma;\r
\r
for(i=0; i<pageCount; i++)\r
- {\r
- t_mem = (Memory + i) << PAGE_SHIFT;\r
- \r
- vma = find_vma(current->mm, t_mem);\r
+ { \r
+ vma = find_vma(current->mm, (Memory + i) << PAGE_SHIFT);\r
\r
if (vma && (vma->vm_flags & VM_PFNMAP) )\r
{\r
pte_t * pte;\r
spinlock_t * ptl;\r
unsigned long pfn; \r
+ pgd_t * pgd;\r
+ pud_t * pud;\r
+ \r
+ pgd = pgd_offset(current->mm, (Memory + i) << PAGE_SHIFT);\r
\r
- pgd_t * pgd = pgd_offset(current->mm, t_mem);\r
- pud_t * pud = pud_offset(pgd, t_mem);\r
+ if(pgd_val(*pgd) == 0)\r
+ {\r
+ printk("pgd value is zero \n");\r
+ break;\r
+ }\r
+ \r
+ pud = pud_offset(pgd, (Memory + i) << PAGE_SHIFT);\r
if (pud)\r
{\r
- pmd_t * pmd = pmd_offset(pud, t_mem);\r
+ pmd_t * pmd = pmd_offset(pud, (Memory + i) << PAGE_SHIFT);\r
if (pmd)\r
{\r
- pte = pte_offset_map_lock(current->mm, pmd, t_mem, &ptl);\r
+ pte = pte_offset_map_lock(current->mm, pmd, (Memory + i) << PAGE_SHIFT, &ptl);\r
if (!pte)\r
{\r
break;\r
}\r
\r
pfn = pte_pfn(*pte);\r
- Address = ((pfn << PAGE_SHIFT) | (((unsigned long)t_mem) & ~PAGE_MASK)); \r
+ Address = ((pfn << PAGE_SHIFT) | (((unsigned long)((Memory + i) << PAGE_SHIFT)) & ~PAGE_MASK)); \r
pte_unmap_unlock(pte, ptl); \r
}\r
while (0);\r