//执行LFS_INF_IDC_STATUS int CMFPI::N_GetStatus() { LPLFSRESULT lpResult = NULL; int ret = m_apiCtrl.LFSGetInfo(LFS_INF_IDC_STATUS, NULL, HM_MIDDLE_TIMEOUT, &lpResult); if(LFS_SUCCESS == ret) { LPLFSIDCSTATUS lpStatus = (LPLFSIDCSTATUS)((LPLFSRESULT)lpResult); if(lpStatus) { memcpy(&m_Status, lpStatus, sizeof(LFSIDCSTATUS)); SetDeviceStatus(m_Status.device); } else { ret = -1; LOGERROR("%s, SP数据为空。", __FUNCTION__); Alarm("07000002"); } } else { LOGERROR("%s, 获取状态失败错误码为:ret = %d", __FUNCTION__,ret); Alarm("07000001"); } ::LFSFreeResult(lpResult); return ret; }
// 收到系统事件后调用该函数 void CMFPI::WR_SystemEvent(DWORD dwEventID, HRESULT hResult, LPVOID lpBuffer) { switch(dwEventID) { case LFS_SYSE_DEVICE_STATUS://设备状态改变 { LPLFSDEVSTATUS lpDevStatus=(LPLFSDEVSTATUS)((LPLFSRESULT)lpBuffer); if(lpDevStatus == NULL) { LOGERROR("%s,SP数据为空。",__FUNCTION__); Alarm("07000002"); return; } SetDeviceStatus(lpDevStatus->state); if(m_CurrDevStatus!=m_PreDevStatus) { emit this->StatusChanged(m_szLogicalName,m_PreDevStatus,m_CurrDevStatus); LOGINFO("%s,事件:StatusChanged(\"StDeviceStatus\",\"%s\",\"%s\")",__FUNCTION__,m_PreDevStatus.toStdString().c_str(),m_CurrDevStatus.toStdString().c_str()); } } break; } }
void CMFPI::N_InitStatus() { m_Status.device=LFS_IDC_DEVNODEVICE; m_Status.media=LFS_IDC_MEDIANOTPRESENT; m_Status.cards=0; m_Status.retain_bin=LFS_IDC_RETAINNOTSUPP; m_Status.security=LFS_IDC_SECNOTREADY; m_Status.chip_power=LFS_IDC_CHIPUNKNOWN; SetDeviceStatus(m_Status.device); }
STATIC VOID SetXgbeStatus ( IN VOID *Fdt ) { #if DO_XGBE SetDeviceStatus (Fdt, "xgmac@e0700000", TRUE); SetDeviceStatus (Fdt, "phy@e1240800", TRUE); SetDeviceStatus (Fdt, "xgmac@e0900000", TRUE); SetDeviceStatus (Fdt, "phy@e1240c00", TRUE); SetMacAddress (Fdt, "xgmac@e0700000", PcdGet64 (PcdEthMacA)); SetMacAddress (Fdt, "xgmac@e0900000", PcdGet64 (PcdEthMacB)); #else SetDeviceStatus (Fdt, "xgmac@e0700000", FALSE); SetDeviceStatus (Fdt, "phy@e1240800", FALSE); SetDeviceStatus (Fdt, "xgmac@e0900000", FALSE); SetDeviceStatus (Fdt, "phy@e1240c00", FALSE); #endif }
STATIC VOID SetSocIdStatus ( IN VOID *Fdt ) { UINT32 SocId; BOOLEAN IsRevB1; BOOLEAN DisableXgbeSmmus; SocId = PcdGet32 (PcdSocCpuId); IsRevB1 = (SocId & STYX_SOC_VERSION_MASK) >= STYX_SOC_VERSION_B1; SetDeviceStatus (Fdt, "sata@e0d00000", IsRevB1 && FixedPcdGet8 (PcdSata1PortCount) > 0); SetDeviceStatus (Fdt, "gpio@e0020000", IsRevB1); SetDeviceStatus (Fdt, "gpio@e0030000", IsRevB1); SetDeviceStatus (Fdt, "gwdt@e0bb0000", IsRevB1); #if DO_KCS SetDeviceStatus (Fdt, "kcs@e0010000", IsRevB1); #else SetDeviceStatus (Fdt, "kcs@e0010000", FALSE); #endif if (!PcdGetBool (PcdEnableSmmus)) { DisableSmmu (Fdt, "iommu-map", "/smb/smmu@e0a00000", "/smb/pcie@f0000000"); DisableSmmu (Fdt, "iommus", "/smb/smmu@e0200000", "/smb/sata@e0300000"); } if (!PcdGetBool (PcdEnableSmmus) || !IsRevB1 || FixedPcdGet8 (PcdSata1PortCount) == 0) { DisableSmmu (Fdt, "iommus", "/smb/smmu@e0c00000", "/smb/sata@e0d00000"); } #if DO_XGBE DisableXgbeSmmus = !PcdGetBool (PcdEnableSmmus); #else DisableXgbeSmmus = TRUE; #endif if (DisableXgbeSmmus) { DisableSmmu (Fdt, "iommus", "/smb/smmu@e0600000", "/smb/xgmac@e0700000"); DisableSmmu (Fdt, "iommus", "/smb/smmu@e0800000", "/smb/xgmac@e0900000"); } }