#include "rga_mmu_info.h"\r
#include "RGA_API.h"\r
\r
-#include "bug_320x240_swap0_ABGR8888.h"\r
+//#include "bug_320x240_swap0_ABGR8888.h"\r
\r
\r
-#define RGA_TEST 0\r\r
+#define RGA_TEST 0\r
#define RGA_TEST_TIME 0\r
\r
#define PRE_SCALE_BUF_SIZE 2048*1024*4\r
ERR("soft reset timeout.\n");\r
}\r
\r
-\r
static void rga_dump(void)\r
{\r
int running;\r
return NULL; \r
}\r
}\r
-\r
- #if RGA_TEST_TIME\r
- rga_end = ktime_get();\r
- rga_end = ktime_sub(rga_end, rga_start);\r
- printk("one cmd end time %d\n", (int)ktime_to_us(rga_end));\r
- #endif\r
- \r
+ \r
RGA_gen_reg_info(req, (uint8_t *)reg->cmd_reg);\r
\r
spin_lock_irqsave(&rga_service.lock, flag);\r
\r
RGA_gen_reg_info(req0, (uint8_t *)reg0->cmd_reg);\r
\r
+ \r
if(req1->mmu_info.mmu_en)\r
{\r
ret = rga_set_mmu_info(reg1, req1);\r
break; \r
}\r
}\r
- \r
+ \r
RGA_gen_reg_info(req1, (uint8_t *)reg1->cmd_reg);\r
-\r
- {\r
- uint32_t i;\r
- for(i=0; i<28; i++)\r
- {\r
- printk("reg1->cmd_reg[%d] is %.8x\n", i, reg1->cmd_reg[i]);\r
- }\r
- }\r
-\r
+ \r
spin_lock_irqsave(&rga_service.lock, flag);\r
list_add_tail(®0->status_link, &rga_service.waiting);\r
list_add_tail(®0->session_link, &session->waiting);\r
\r
/* All CMD finish int */\r
rga_write(0x1<<10, RGA_INT);\r
+\r
+ \r
+ #if RGA_TEST_TIME\r
+ rga_start = ktime_get();\r
+ #endif\r
\r
/* Start proc */\r
atomic_set(®->session->done, 0);\r
rga_write(0x1, RGA_CMD_CTRL); \r
\r
+\r
#if RGA_TEST\r
{\r
uint32_t i;\r
if(ret == -EINVAL) {\r
return -EINVAL;\r
}\r
-\r
+ \r
reg = rga_reg_init(session, req);\r
if(reg == NULL) {\r
return -EFAULT;\r
daw = req->dst.act_w;\r
dah = req->dst.act_h;\r
\r
+ printk("req->rotate_mode = %.8x, req->scale_mode = %.8x\n", req->rotate_mode, req->scale_mode);\r
+\r
if((req->render_mode == bitblt_mode) && (((saw>>1) >= daw) || ((sah>>1) >= dah))) \r
{\r
/* generate 2 cmd for pre scale */\r
{\r
return -EFAULT;\r
}\r
-\r
- //printk("rga_reg_int start \n"); \r
+ \r
reg = rga_reg_init(session, req);\r
if(reg == NULL) \r
{ \r
return -EFAULT;\r
}\r
- //printk("rga_reg_int end \n");\r
\r
atomic_set(®->int_enable, 1); \r
rga_try_set_reg(1);\r
} \r
-\r
- \r
- \r
+ \r
ret_timeout = wait_event_interruptible_timeout(session->wait, atomic_read(&session->done), RGA_TIMEOUT_DELAY);\r
if (unlikely(ret_timeout< 0)) \r
{\r
pr_err("pid %d wait task ret %d\n", session->pid, ret_timeout);\r
} \r
- else if (0 == ret_timeout) \r
+ else if (0 == ret_timeout)\r
{\r
pr_err("pid %d wait %d task done timeout\n", session->pid, atomic_read(&session->task_running));\r
ret = -ETIMEDOUT;\r
}\r
\r
- \r
-\r
- return ret;\r
- \r
- //printk("rga_blit_sync done******************\n");\r
+ #if RGA_TEST_TIME\r
+ rga_end = ktime_get();\r
+ rga_end = ktime_sub(rga_end, rga_start);\r
+ printk("one cmd end time %d\n", (int)ktime_to_us(rga_end));\r
+ #endif\r
+ \r
+ return ret; \r
}\r
\r
\r
int ret = 0;\r
rga_session *session = (rga_session *)file->private_data;\r
\r
- #if RGA_TEST_TIME\r
- rga_start = ktime_get();\r
- #endif\r
+ \r
\r
if (NULL == session) \r
{\r
if(req != NULL) {\r
kfree(req);\r
} \r
-\r
\r
return ret;\r
}\r
return ret;\r
}\r
\r
+ #if 0\r
+ {\r
+ uint32_t i;\r
+ for(i=0; i<10; i++)\r
+ rga_test_0();\r
+ }\r
+ #endif\r
+\r
//rga_test_0();\r
\r
INFO("Module initialized.\n"); \r
}\r
\r
\r
-#if 1\r
+#if 0\r
extern struct fb_info * rk_get_fb(int fb_id);\r
EXPORT_SYMBOL(rk_get_fb);\r
\r
EXPORT_SYMBOL(rk_direct_fb_show);\r
\r
extern uint32_t ABGR8888_320_240_swap0[240][320];\r
+//unsigned int src_buf[1280*800];\r
unsigned int dst_buf[1280*800];\r
\r
void rga_test_0(void)\r
req.src.vir_w = 320;\r
req.src.vir_h = 240;\r
req.src.yrgb_addr = (uint32_t)src;\r
+ req.src.uv_addr = ((uint32_t)src + 1920*1080);\r
+ req.src.format = 0;\r
\r
- req.dst.act_w = 100;\r
- req.dst.act_h = 80;\r
+ req.dst.act_w = 320;\r
+ req.dst.act_h = 240;\r
\r
req.dst.vir_w = 1280;\r
req.dst.vir_h = 800;\r
- req.dst.x_offset = 200;\r
- req.dst.y_offset = 200;\r
+ req.dst.x_offset = 0;\r
+ req.dst.y_offset = 000;\r
req.dst.yrgb_addr = (uint32_t)dst;\r
\r
req.clip.xmin = 0;\r
req.clip.ymin = 0;\r
req.clip.ymax = 799;\r
\r
- req.render_mode = 0;\r
+ req.render_mode = color_fill_mode ;\r
+ req.color_fill_mode = 0;\r
+ req.fg_color = 0xa0a0a0a0;\r
+ \r
req.rotate_mode = 1;\r
req.scale_mode = 2;\r
\r
+ req.alpha_rop_flag = 0;\r
+\r
req.sina = 0;\r
req.cosa = 0x10000;\r
\r
* change the buf address in req struct\r
* for the reason of lie to MMU \r
*/\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base); \r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base)>>2); \r
req->src.yrgb_addr = (req->src.yrgb_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT);\r
req->dst.yrgb_addr = (req->dst.yrgb_addr & (~PAGE_MASK)) | ((CMDMemSize + SrcMemSize) << PAGE_SHIFT);\r
\r
* change the buf address in req struct \r
*/\r
\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base); \r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base)>>2); \r
req->dst.yrgb_addr = (req->dst.yrgb_addr & (~PAGE_MASK)) | ((CMDMemSize) << PAGE_SHIFT);\r
\r
/*record the malloc buf for the cmd end to release*/\r
* change the buf address in req struct\r
* for the reason of lie to MMU \r
*/\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base); \r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base) >> 2); \r
req->dst.yrgb_addr = (req->dst.yrgb_addr & (~PAGE_MASK)) | ((CMDMemSize) << PAGE_SHIFT);\r
\r
\r
* change the buf address in req struct\r
* for the reason of lie to MMU \r
*/\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base);\r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base) >> 2);\r
\r
req->src.yrgb_addr = (req->src.yrgb_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT);\r
req->src.uv_addr = (req->src.uv_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT);\r
* for the reason of lie to MMU \r
*/\r
\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base)>>2;\r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base)>>2);\r
\r
req->src.yrgb_addr = (req->src.yrgb_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT);\r
req->src.uv_addr = (req->src.uv_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT);\r
* change the buf address in req struct\r
* for the reason of lie to MMU \r
*/\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base);\r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base) >> 2);\r
\r
req->src.yrgb_addr = (req->src.yrgb_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT); \r
\r
* change the buf address in req struct\r
* for the reason of lie to MMU \r
*/\r
- req->mmu_info.base_addr = virt_to_phys(MMU_Base);\r
+ req->mmu_info.base_addr = (virt_to_phys(MMU_Base) >> 2);\r
\r
req->src.yrgb_addr = (req->src.yrgb_addr & (~PAGE_MASK)) | (CMDMemSize << PAGE_SHIFT); \r
\r