void TVDVT_update_src(void)
{
    static char data = 0x10;
    memset(src_buf_va, data++, BUFFER_SIZE);
    __cpuc_flush_user_all();
	outer_clean_all();

}
void TVDVT_prepare_source(unsigned int src_pa)
{
    //static char data = 0x10;
    //memset(src_buf_va, data++, BUFFER_SIZE);


    __cpuc_flush_user_all();
	outer_clean_all();
    LCD_CHECK_RET(LCD_LayerSetAddress(LCD_LAYER_0, src_pa));
}
void g2d_drv_run(g2d_context_t *g2d_ctx)
{
#ifdef G2D_PROFILE
    struct timeval t1, t2;
    do_gettimeofday(&t1);
#endif

    HARD_RESET_G2D_ENGINE;
    REG_G2D_MODE_CON = 0;
    REG_G2D_ROI_CON = 0;
    REG_G2D_SLOW_DOWN = 0x00400000;
    REG_G2D_IRQ |= G2D_IRQ_ENABLE_BIT;

    _g2d_drv_set_dst_info(g2d_ctx);

    if (g2d_ctx->flag & G2D_FLAG_MIRROR_FRONT_FB)
        _g2d_drv_set_mirror_fb(g2d_ctx);
    else if (g2d_ctx->flag & G2D_FLAG_AFFINE_TRANSFORM)
        _g2d_drv_set_affine_info(g2d_ctx);
    else
        _g2d_drv_set_bitblt_info(g2d_ctx);

    _g2d_drv_set_roi_info(g2d_ctx);
    
#ifdef G2D_PROFILE
    do_gettimeofday(&t2);
    G2D_DBG("register config time (%u)\n", (t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec));
#endif
            
    if (g2d_ctx->cache_clean)
    {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
        on_each_cpu(per_cpu_cache_flush, NULL, 1);
#else
        on_each_cpu(per_cpu_cache_flush, NULL, 0, 1);
#endif

#ifdef CONFIG_OUTER_CACHE
        outer_clean_all();
#endif
    }
            
    START_G2D_ENGINE;
}
Beispiel #4
0
static void exynos_mem_paddr_cache_clean(dma_addr_t start, size_t length)
{
	if (length > (size_t) L2_FLUSH_ALL) {
		flush_cache_all();		/* L1 */
		smp_call_function((smp_call_func_t)__cpuc_flush_kern_all, NULL, 1);
		outer_clean_all();		/* L2 */
	} else if (length > (size_t) L1_FLUSH_ALL) {
		dma_addr_t end = start + length - 1;

		flush_cache_all();		/* L1 */
		smp_call_function((smp_call_func_t)__cpuc_flush_kern_all, NULL, 1);
		outer_clean_range(start, end);  /* L2 */
	} else {
		dma_addr_t end = start + length - 1;

		dmac_flush_range(phys_to_virt(start), phys_to_virt(end));
		outer_clean_range(start, end);	/* L2 */
	}
}