| 已经摸索出来了,如果是要HDMI2唤醒,那在sboot里面就不能配置PM_WAKEUP_BY_DVI作为唤醒事件,因为在判断里面有个互斥判断,如下 
 复制代码void MDrv_DVI_ManualSwitchPort(void)
{
    //#define DELAY_TIME_MS   500 //>=500 :OK, <500:with risk of failure
    if(wPM_WakeUpDevice & PM_WAKEUP_BY_DVI)
    {
        //switch to port 0
        if( 25 == u8HDMIWakeUpDelayCount )
        {
            MDrv_WriteRegBit(REG_PM_GCR_SWCK, 0, BIT3);
        }
        if( u8HDMIWakeUpDelayCount > 0 )
        {
            u8HDMIWakeUpDelayCount--;
            msDelayTime(20);
        }
        if(0 == u8HDMIWakeUpDelayCount )
        {
            u8HDMIWakeUpDelayCount = 25;
            msDelayTime(20);
            MDrv_WriteRegBit(REG_PM_GCR_SWCK, 1, BIT3);
        }
    }
    else if(wPM_WakeUpDevice & PM_WAKEUP_BY_DVI1)
    {
        //switch to port 1
        if( 25 == u8HDMIWakeUpDelayCount )
        {
            MDrv_WriteRegBit(REG_PM_GCR_SWCK, 0, BIT4);
        }
        if( u8HDMIWakeUpDelayCount > 0 )
        {
            u8HDMIWakeUpDelayCount--;
            msDelayTime(20);
        }
        if( 0 == u8HDMIWakeUpDelayCount )
        {
            u8HDMIWakeUpDelayCount = 25;
            msDelayTime(20);
            MDrv_WriteRegBit(REG_PM_GCR_SWCK, 1, BIT4);
        }
    }
    else if(wPM_WakeUpDevice & PM_WAKEUP_BY_DVI2)
    {
        ;
    }
    else if(wPM_WakeUpDevice & PM_WAKEUP_BY_DVI3)
    {
        //switch to port 2
        if( 25 == u8HDMIWakeUpDelayCount )
        {
            MDrv_WriteRegBit(REG_PM_GCR_SWCK, 0, BIT5);
        }
        if( u8HDMIWakeUpDelayCount > 0 )
        {
            u8HDMIWakeUpDelayCount--;
            msDelayTime(20);
        }
        if( 0 == u8HDMIWakeUpDelayCount )
        {
            u8HDMIWakeUpDelayCount = 25;
            msDelayTime(20);
            MDrv_WriteRegBit(REG_PM_GCR_SWCK, 1, BIT5);
        }
    }
}
不知道理解的对不对
 |