\r
#define RGA_MAJOR 255\r
\r
-#define RK30_RGA_PHYS 0x10114000\r
+#define RK30_RGA_PHYS 0x1010C000\r
#define RK30_RGA_SIZE SZ_8K\r
#define RGA_RESET_TIMEOUT 1000\r
\r
\r
\r
/* Logging */\r
-#define RGA_DEBUG 0\r
+#define RGA_DEBUG 1\r
#if RGA_DEBUG\r
#define DBG(format, args...) printk(KERN_DEBUG "%s: " format, DRIVER_NAME, ## args)\r
#define ERR(format, args...) printk(KERN_ERR "%s: " format, DRIVER_NAME, ## args)\r
return __raw_readl(drvdata->rga_base + r);\r
}\r
\r
+#if 0\r
static void rga_soft_reset(void)\r
{\r
u32 i;\r
if(i == RGA_RESET_TIMEOUT)\r
ERR("soft reset timeout.\n");\r
}\r
+#endif\r
\r
static void rga_dump(void)\r
{\r
dmac_flush_range(&rga_service.cmd_buff[0], &rga_service.cmd_buff[28]);\r
outer_flush_range(virt_to_phys(&rga_service.cmd_buff[0]),virt_to_phys(&rga_service.cmd_buff[28]));\r
\r
- rga_soft_reset();\r
+ //rga_soft_reset();\r
rga_write(0, RGA_MMU_CTRL);\r
\r
/* CMD buff */\r
printk("%.8x %.8x %.8x %.8x\n", p[0 + i*4], p[1+i*4], p[2 + i*4], p[3 + i*4]);\r
}\r
#endif\r
-\r
/* master mode */\r
rga_write((0x1<<2)|(0x1<<3), RGA_SYS_CTRL);\r
\r
}\r
#endif\r
}\r
- else\r
- {\r
+// else\r
+// {\r
// rga_power_off();\r
- }\r
+// }\r
}\r
}\r
\r
rga_del_running_list();\r
rga_try_set_reg();\r
}\r
+ printk("****** rga irq prc avil ******\n");\r
mutex_unlock(&rga_service.lock);\r
\r
return IRQ_HANDLED;\r
rga_service.last_prc_src_format = 1; /* default is yuv first*/\r
rga_service.enable = false;\r
\r
+ printk("rga_drv_probe\n");\r
+\r
data = kzalloc(sizeof(struct rga_drvdata), GFP_KERNEL);\r
if(NULL == data)\r
{\r
\r
#if 0\r
\r
+#if 1\r
extern struct fb_info * rk_get_fb(int fb_id);\r
EXPORT_SYMBOL(rk_get_fb);\r
\r
extern void rk_direct_fb_show(struct fb_info * fbi);\r
EXPORT_SYMBOL(rk_direct_fb_show);\r
\r
+#endif\r
+\r
unsigned int src_buf[1920*1080];\r
unsigned int dst_buf[1920*1080];\r
\r
//file->private_data = (void *)session;\r
\r
fb = rk_get_fb(0);\r
-\r
+ \r
memset(&req, 0, sizeof(struct rga_req));\r
- src = Y4200_320_240_swap0;\r
+ src = src_buf;\r
dst = dst_buf;\r
\r
//memset(src_buf, 0x80, 1920*1080*4);\r
outer_flush_range(virt_to_phys(&dst_buf[0]),virt_to_phys(&dst_buf[800*480]));\r
#endif\r
\r
- req.src.act_w = 320;\r
- req.src.act_h = 240;\r
+ req.src.act_w = 1280;\r
+ req.src.act_h = 800;\r
\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)UV4200_320_240_swap0;\r
- req.src.v_addr = (uint32_t)V4200_320_240_swap0;\r
- req.src.format = RK_FORMAT_YCbCr_420_SP;\r
+ req.src.vir_w = 1280;\r
+ req.src.vir_h = 800;\r
+ req.src.yrgb_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.uv_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.v_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.format = 0;\r
\r
req.dst.act_w = 1280;\r
req.dst.act_h = 800;\r
req.dst.vir_h = 800;\r
req.dst.x_offset = 0;\r
req.dst.y_offset = 0;\r
- req.dst.yrgb_addr = (uint32_t)dst;\r
+ req.dst.yrgb_addr = (uint32_t)virt_to_phys(dst);\r
\r
//req.dst.format = RK_FORMAT_RGB_565;\r
\r
\r
rga_blit_sync(&session, &req);\r
\r
- fb->var.bits_per_pixel = 32;\r
+ req.src.act_w = 1280;\r
+ req.src.act_h = 800;\r
+\r
+ req.src.vir_w = 1280;\r
+ req.src.vir_h = 800;\r
+ req.src.yrgb_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.uv_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.v_addr = (uint32_t)virt_to_phys(src);\r
+ req.src.format = RK_FORMAT_YCbCr_420_SP;\r
+\r
+ req.dst.act_w = 1280;\r
+ req.dst.act_h = 800;\r
+\r
+ req.dst.vir_w = 1280;\r
+ req.dst.vir_h = 800;\r
+ req.dst.x_offset = 0;\r
+ req.dst.y_offset = 0;\r
+ req.dst.yrgb_addr = (uint32_t)virt_to_phys(dst);\r
+\r
+ //req.dst.format = RK_FORMAT_RGB_565;\r
\r
+ req.clip.xmin = 0;\r
+ req.clip.xmax = 1279;\r
+ req.clip.ymin = 0;\r
+ req.clip.ymax = 799;\r
+\r
+ //req.render_mode = color_fill_mode;\r
+ //req.fg_color = 0x80ffffff;\r
+\r
+ req.rotate_mode = 1;\r
+ req.scale_mode = 2;\r
+\r
+ //req.alpha_rop_flag = 0;\r
+ //req.alpha_rop_mode = 0x1;\r
+\r
+ req.sina = 0;\r
+ req.cosa = 65536;\r
+\r
+ //req.mmu_info.mmu_flag = 0x21;\r
+ //req.mmu_info.mmu_en = 1;\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
\r
fb->fix.smem_start = virt_to_phys(dst);\r
\r
rk_direct_fb_show(fb);\r
+ #endif\r
\r
}\r
\r