Esempio n. 1
0
int BoardInit_Display(int displayDevice, int displayMode)
{
    int var6;
    int var7;
    int var8;

    L428126B4[3] = displayDevice;
    if(displayDevice < 0 || displayMode < 0) {
        L428126B4[3] = -1;
        return 0;
    }
    var6 = svc_50("c:\\drv_de.drv");
    if(var6 != 0) {
        wlibc_uprintf("ERR: wBoot_driver_install display driver failed\n");
        return -1;
    }
    if( (L428126B4[1] = svc_52(3, 0)) == 0 ) {
        wlibc_uprintf("ERR: open display driver failed\n");
        return -1;
    }
    var7 = 0;
    var8 = 0;
    switch( displayDevice ) {
    case 1:
        var7 = 2;
        var8 = 1;
        break;
    case 2:
        var7 = 2;
        var8 = 2;
        break;
    case 3:
        var7 = 4;
        break;
    case 4:
        var7 = 8;
        break;
    default:
        var7 = 1;
    }
    var6 = De_OpenDevice(var7 << 16 | var8 << 8 | displayMode);
    if(var6 != 0) {
        wlibc_uprintf("ERR: De Open LCD or TV failed\n");
        return -1;
    }
    *L428126B4 = De_RequestLayer(0);
    if(*L428126B4 == 0) {
        wlibc_uprintf("ERR: De_RequestLayer failed\n");
        return -1;
    }
    return 0;
}
/*
*******************************************************************************
*                     BoardInit_Display
*
* Description:
*    加载 display 驱动
*
* Parameters:
*    void
*
* Return value:
*    0 : 成功
*   !0 : 失败
*
* note:
*    void
*
*******************************************************************************
*/
__s32 BoardInit_Display(__s32 source, __s32 mode)
{
    __s32 ret = 0;
    __s32 source_type, tv_mode, dislpay_device;

    board_res.display_source = source;
    if((source < 0) || (mode < 0))
    {
        board_res.display_source = -1;
        return 0;
    }
    ret = wBoot_driver_install("c:\\drv_de.drv");
    if(ret != 0)
    {
        DMSG_PANIC("ERR: wBoot_driver_install display driver failed\n");
        return -1;
    }
	//提前打开显示设备
	board_res.disp_hd = wBoot_driver_open(EGON2_EMOD_TYPE_DRV_DISP, NULL);
    if(board_res.disp_hd == NULL)
    {
        DMSG_PANIC("ERR: open display driver failed\n");
        return -1;
    }
    source_type = 0;
    tv_mode     = 0;
    switch(source)
    {
        case 1:                                 //CVBS
            source_type = DISP_OUTPUT_TYPE_TV;
            tv_mode = DISP_TV_CVBS;
            break;
        case 2:                                 //YPBPR
            source_type = DISP_OUTPUT_TYPE_TV;
            tv_mode = DISP_TV_YPBPR;
            break;
//        case 3:                                 //SVIDEO
//            source_type = DISP_OUTPUT_TYPE_TV;
//            tv_mode = DISP_TV_SVIDEO;
//            break;
        case 3:                                 //HDMI
            source_type = DISP_OUTPUT_TYPE_HDMI;
            break;
        case 4:                                 //VGA
            source_type = DISP_OUTPUT_TYPE_VGA;
            break;
        default:
            source_type = DISP_OUTPUT_TYPE_LCD;
            break;
    }
    dislpay_device = (source_type << 16) | (tv_mode << 8) | ((mode << 0));
    //打开显示屏幕
    ret = De_OpenDevice(dislpay_device);
    if(ret != 0)
    {
        DMSG_PANIC("ERR: De Open LCD or TV failed\n");
        return -1;
    }
	board_res.layer_hd = De_RequestLayer(DISP_LAYER_WORK_MODE_NORMAL);
	if(board_res.layer_hd == NULL)
	{
        DMSG_PANIC("ERR: De_RequestLayer failed\n");
        return -1;
	}

	//wBoot_block_init();
	LCD_DisplayInit();

    return 0;
}