Beispiel #1
0
__s32 DRV_DISP_Init(void)
{
	__disp_bsp_init_para para;

	init_waitqueue_head(&g_fbi.wait[0]);
	init_waitqueue_head(&g_fbi.wait[1]);
	g_fbi.wait_count[0] = 0;
	g_fbi.wait_count[1] = 0;

	memset(&para, 0, sizeof(__disp_bsp_init_para));
	para.base_image0 = (__u32) g_fbi.base_image0;
	para.base_image1 = (__u32) g_fbi.base_image1;
	para.base_scaler0 = (__u32) g_fbi.base_scaler0;
	para.base_scaler1 = (__u32) g_fbi.base_scaler1;
	para.base_lcdc0 = (__u32) g_fbi.base_lcdc0;
	para.base_lcdc1 = (__u32) g_fbi.base_lcdc1;
	para.base_tvec0 = (__u32) g_fbi.base_tvec0;
	para.base_tvec1 = (__u32) g_fbi.base_tvec1;
#ifdef CONFIG_ARCH_SUN5I
	para.base_iep = (__u32) g_fbi.base_iep;
#endif
	para.base_ccmu = (__u32) g_fbi.base_ccmu;
	para.base_sdram = (__u32) g_fbi.base_sdram;
	para.base_pioc = (__u32) g_fbi.base_pioc;
	para.base_pwm = (__u32) g_fbi.base_pwm;
	para.disp_int_process = DRV_disp_int_process;

	memset(&g_disp_drv, 0, sizeof(__disp_drv_t));

	BSP_disp_init(&para);
	BSP_disp_open();

	return 0;
}
Beispiel #2
0
__s32 DRV_DISP_Init(void)
{
    __disp_bsp_init_para para;

    init_waitqueue_head(&g_fbi.wait[0]);
    init_waitqueue_head(&g_fbi.wait[1]);
    g_fbi.wait_count[0] = 0;
    g_fbi.wait_count[1] = 0;

    memset(&para, 0, sizeof(__disp_bsp_init_para));
    para.base_image0    = (__u32)g_fbi.base_image0;
    para.base_image1    = (__u32)g_fbi.base_image1;
    para.base_scaler0   = (__u32)g_fbi.base_scaler0;
    para.base_scaler1   = (__u32)g_fbi.base_scaler1;
    para.base_lcdc0     = (__u32)g_fbi.base_lcdc0;
    para.base_lcdc1     = (__u32)g_fbi.base_lcdc1;
    para.base_tvec0      = (__u32)g_fbi.base_tvec0;
    para.base_tvec1      = (__u32)g_fbi.base_tvec1;
    para.base_ccmu      = (__u32)g_fbi.base_ccmu;
    para.base_sdram     = (__u32)g_fbi.base_sdram;
    para.base_pioc      = (__u32)g_fbi.base_pioc;
    para.base_pwm       = (__u32)g_fbi.base_pwm;
	para.disp_int_process       = DRV_disp_int_process;

	memset(&g_disp_drv, 0, sizeof(__disp_drv_t));

    sys_put_wvalue(0xf1c20118, 1<<19);
    
    BSP_disp_init(&para);
    BSP_disp_open();


    return 0;
}
Beispiel #3
0
__s32 DRV_DISP_Init(void)
{
    __disp_bsp_init_para para;
    __u32 i = 0;

    para.base_image0    = (__u32)g_fbi.io[DISP_IO_IMAGE0];
    para.base_image1    = (__u32)g_fbi.io[DISP_IO_IMAGE1];
    para.base_scaler0   = (__u32)g_fbi.io[DISP_IO_SCALER0];
    para.base_scaler1   = (__u32)g_fbi.io[DISP_IO_SCALER1];
    para.base_lcdc0     = (__u32)g_fbi.io[DISP_IO_LCDC0];
    para.base_lcdc1     = (__u32)g_fbi.io[DISP_IO_LCDC1];
    para.base_tvec      = (__u32)g_fbi.io[DISP_IO_TVEC];
    para.base_ccmu      = (__u32)g_fbi.base_ccmu;
    para.base_sdram     = (__u32)g_fbi.base_sdram;
    para.base_pioc      = (__u32)g_fbi.base_pio;
    para.scaler_begin   		= DRV_scaler_begin;
    para.scaler_finish  		= DRV_scaler_finish;
    para.tve_interrup   		= DRV_tve_interrup;
	para.hdmi_set_mode  		= DRV_hdmi_set_mode;
	para.Hdmi_open  			= DRV_Hdmi_open;
	para.Hdmi_close  			= DRV_Hdmi_close;
	para.hdmi_mode_support		= DRV_hdmi_mode_support;
	para.hdmi_get_HPD_status	= DRV_hdmi_get_HPD_status;
	para.disp_int_process       = disp_int_process;

	memset(&g_disp_drv, 0, sizeof(__disp_drv_t));

	g_disp_drv.scaler_finished_sem[0] = kmalloc(sizeof(struct semaphore),GFP_KERNEL | __GFP_ZERO);
    if(!g_disp_drv.scaler_finished_sem[0])
    {
        __wrn("create scaler_finished_sem[0] fail!\n");
        return -1;
    }  
	sema_init(g_disp_drv.scaler_finished_sem[0],0);


	g_disp_drv.scaler_finished_sem[1] = kmalloc(sizeof(struct semaphore),GFP_KERNEL | __GFP_ZERO);
    if(!g_disp_drv.scaler_finished_sem[1])
    {
        __wrn("create scaler_finished_sem[1] fail!\n");
        return -1;
    }    
	sema_init(g_disp_drv.scaler_finished_sem[1],0);
    
    for(i = 0; i<MAX_EVENT_SEM; i++)
    {
    	g_disp_drv.event_sem[0][i] = NULL;
     	g_disp_drv.event_sem[1][i] = NULL;
    }

    BSP_disp_init(&para);
    BSP_disp_open();
    Fb_Init();

    return 0;        
}
/*
****************************************************************************************************
*
*             DRV_DE_INIT
*
*  Description: 初始化函数,通常把只会执行一次的操作放在这里
*               当驱动第一次安装的时候会调用这个函数
*               此函数没有参数,需要参数的时候需要从配置脚本去获取
*  Parameters:
*
*  Return value:
*       0
*       -1
****************************************************************************************************
*/
__s32 DRV_DE_INIT(void)
{
    __disp_bsp_init_para para;

    para.base_image0    = 0x01e60000;
    para.base_image1    = 0x01e40000;
    para.base_scaler0   = 0x01e00000;
    para.base_scaler1   = 0x01e20000;
    para.base_lcdc0     = 0x01c0c000;
    para.base_lcdc1     = 0x01c17000;
    para.base_tvec0     = 0x01c0a000;
    para.base_tvec1     = 0x01c1b000;
    para.base_ccmu      = 0x01c20000;
    para.base_sdram     = 0x01c01000;
    para.base_pioc      = 0x01c20800;
    para.base_pwm       = 0x01c20c00;
	para.disp_int_process = disp_int_process;

    BSP_disp_init(&para);
    BSP_disp_open();

    return 0;
}
Beispiel #5
0
__s32 DRV_DISP_MInit(void)
{
    __disp_bsp_init_para para;
    __hdle hReg;
    __u32 i = 0;
     user_gpio_set_t  gpio_set[1];
	__s32            ret;
   
    para.base_image0    = 0xf1e60000;
    para.base_scaler0   = 0xf1e00000;
    para.base_lcdc0     = 0xf1c0c000;
    para.base_tvec      = 0xf1c0a000;
    para.base_ccmu      = 0xf1c20000;
    para.base_sdram     = 0xf1c01000;
    para.base_pioc      = 0xf1c20800;
    para.base_timer		= 0xf1c21000;	/*	PWM module register base	*/

    para.power_on       = DRV_lcd_power_on;
    para.power_off      = DRV_lcd_power_off;
    para.scaler_begin   		= DRV_scaler_begin;
    para.scaler_finish  		= DRV_scaler_finish;
    para.tve_interrup   		= DRV_tve_interrup;
	para.hdmi_set_mode  		= DRV_hdmi_set_mode;
	para.Hdmi_open  			= DRV_Hdmi_open;
	para.Hdmi_close  			= DRV_Hdmi_close;
	para.hdmi_mode_support		= DRV_hdmi_mode_support;
	para.hdmi_get_HPD_status	= DRV_hdmi_get_HPD_status;
	para.disp_int_process       = disp_int_process;

	eLIBs_memset(&g_disp_drv, 0, sizeof(__disp_drv_t));
    g_disp_drv.scaler_finished_sem[0] = esKRNL_SemCreate(0);
    if(!g_disp_drv.scaler_finished_sem[0])
    {
        __wrn("create scaler_finished_sem[0] fail!\n");
        return EPDK_FAIL;
    }  
    g_disp_drv.scaler_finished_sem[1] = esKRNL_SemCreate(0);
    if(!g_disp_drv.scaler_finished_sem[1])
    {
        __wrn("create scaler_finished_sem[1] fail!\n");
        return EPDK_FAIL;
    }    

    for(i = 0; i<MAX_EVENT_SEM; i++)
    {
    	g_disp_drv.event_sem[0][i] = NULL;
     	g_disp_drv.event_sem[1][i] = NULL;
    }

    BSP_disp_init(&para);
    BSP_disp_open();

	g_disp_drv.reg_operate_vaild = 1;
	
   	hReg = esDEV_DevReg("DISP", "DISPLAY", &dispdev_ops, 0);
    if(!hReg)
    {
        __inf("esDEV_DevReg() fail!\n");
    	return EPDK_FAIL;
    }

	#if DRV_VCOM_TIMER

	//Soft Vcom Control;

	ret = esCFG_GetKeyValue("softvcom_para", "soft_vcom_en", &vcom_en, 1);
	if (!ret)
	{
		eLIBs_printf(" -- %s, %d, vcom_en = %d -- \n", __FILE__, __LINE__, vcom_en);
	
		if(vcom_en)
		{
			ret = esCFG_GetKeyValue("softvcom_para", "vcom_io", (int *)gpio_set, sizeof(user_gpio_set_t)/4);
			if (!ret)
			{
				vcom_io = esPINS_PinGrpReq(gpio_set, 1);
				if (!vcom_io)
				{
					__wrn("request output_col pin failed\n");
					return EPDK_FAIL;
				}
			}
			else
			{
				__wrn("fetch para from script failed\n");
				return EPDK_FAIL;
			}
		}
	}
	else
	{
		__wrn("fetch para from script failed\n");
		return EPDK_FAIL;
	}

	ret = esPINS_SetPinPull(vcom_io, PIN_PULL_DOWN, NULL);
	if (ret)
	{
		__wrn("pull output_col failed\n");
		return EPDK_FAIL;
	}

    //申请定时器
	vcom_timer_init();

    //让定时器开始跑
	vcom_timer_start();
#endif	

    return EPDK_OK;        
}