平台是S3C2451,
故障现象为未连接USB,系统suspend,wakeup后会马上闪一下ActiveSync USB同步连接窗口。
首先认为是USB DP DN这2个脚 唤醒后电位引起的,wakeup后立马强制Pull-Up或者Pull-Down现象还是一样,无意中把把serial Driver屏蔽掉,发现现象没了,没有用到DSR,索性屏蔽掉CPdd2450Serial0::GetModemStatus()函数,原因未知,也没有兴趣追查。
virtual ULONG GetModemStatus() {
ULONG ulReturn = CPdd2450Uart::GetModemStatus();
ULONG ulEvent = 0;
m_HardwareLock.Lock();
BOOL fIsDSRSet = (((*m_pDSRPort) & (1<<m_dwDSRPortNum))==0);
// RETAILMSG(TRUE, (TEXT("DEBUG: DSRPort Register 0x%lx, Value 0x%lx, fIsDSRSet(%d)./r/n"), m_pDSRPort, *m_pDSRPort, fIsDSRSet));
if (fIsDSRSet != m_fIsDSRSet) {
ulEvent |= EV_DSR | EV_RLSD;
}
ulReturn |= (fIsDSRSet?(MS_DSR_ON|MS_RLSD_ON):0);
m_fIsDSRSet = fIsDSRSet;
m_HardwareLock.Unlock();
if (ulEvent!=0)
EventCallback(ulEvent,ulReturn);
return ulReturn;
}