\r
static inline void rga_queue_power_off_work(void)\r
{\r
- queue_delayed_work(system_nrt_wq, &drvdata->power_off_work, RGA_POWER_OFF_DELAY);\r
+ queue_delayed_work(system_wq, &drvdata->power_off_work, RGA_POWER_OFF_DELAY);\r
}\r
\r
/* Caller must hold rga_service.lock */\r
rga_reg_from_wait_to_run(reg);
\r
#ifdef CONFIG_ARM\r
- dmac_flush_range(&rga_service.cmd_buff[0], &rga_service.cmd_buff[28]);
- outer_flush_range(virt_to_phys(&rga_service.cmd_buff[0]),virt_to_phys(&rga_service.cmd_buff[28]));\r
+ dmac_flush_range(&rga_service.cmd_buff[0], &rga_service.cmd_buff[32]);
+ outer_flush_range(virt_to_phys(&rga_service.cmd_buff[0]),virt_to_phys(&rga_service.cmd_buff[32]));\r
#elif defined(CONFIG_ARM64)\r
- __dma_flush_range(&rga_service.cmd_buff[0], &rga_service.cmd_buff[28]);\r
+ __dma_flush_range(&rga_service.cmd_buff[0], &rga_service.cmd_buff[32]);\r
#endif\r
- #if 1
rga_soft_reset();
- #endif
rga_write(0x0, RGA_SYS_CTRL);
rga_write(0, RGA_MMU_CTRL);
while(!list_empty(&rga_service.running))
{
reg = list_entry(rga_service.running.next, struct rga_reg, status_link);
-
- if(reg->MMU_base != NULL)
+
+ if(reg->MMU_len != 0)
{
- kfree(reg->MMU_base);
+ if (rga_mmu_buf.back + reg->MMU_len > 2*rga_mmu_buf.size)
+ rga_mmu_buf.back = reg->MMU_len + rga_mmu_buf.size;
+ else
+ rga_mmu_buf.back += reg->MMU_len;
}
atomic_sub(1, ®->session->task_running);
unsigned long *mmu_buf_virtual;\r
uint32_t i;\r
uint32_t *buf_p;\r
-\r
+ uint32_t *buf;
+
/* malloc pre scale mid buf mmu table */\r
mmu_buf = kzalloc(1024*8, GFP_KERNEL);\r
mmu_buf_virtual = kzalloc(1024*2*sizeof(unsigned long), GFP_KERNEL);\r
\r
buf_p = kmalloc(1024*256, GFP_KERNEL);\r
rga_mmu_buf.buf_virtual = buf_p;\r
- rga_mmu_buf.buf = (uint32_t *)virt_to_phys((void *)((unsigned long)buf_p));\r
+#if (defined(CONFIG_ARM) && defined(CONFIG_ARM_LPAE))
+ buf = (uint32_t *)(uint32_t)virt_to_phys((void *)((unsigned long)buf_p));
+#else
+ buf = (uint32_t *)virt_to_phys((void *)((unsigned long)buf_p));
+#endif
+ rga_mmu_buf.buf = buf;
rga_mmu_buf.front = 0;\r
rga_mmu_buf.back = 64*1024;\r
rga_mmu_buf.size = 64*1024;\r
}\r
\r
#endif\r
-module_init(rga_init);\r
+fs_initcall(rga_init);\r
module_exit(rga_exit);\r
\r
/* Module information */\r