已经摸索出来了,如果是要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);
- }
- }
- }
复制代码
不知道理解的对不对 |