static IMG_VOID SGXResetSleep(PVRSRV_SGXDEV_INFO *psDevInfo, IMG_UINT32 ui32PDUMPFlags, IMG_BOOL bPDump) { #if defined(PDUMP) || defined(EMULATOR) IMG_UINT32 ui32ReadRegister; #if defined(SGX_FEATURE_MP) ui32ReadRegister = EUR_CR_MASTER_SOFT_RESET; #else ui32ReadRegister = EUR_CR_SOFT_RESET; #endif #endif #if !defined(PDUMP) PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); #endif OSWaitus(100 * 1000000 / psDevInfo->ui32CoreClockSpeed); if (bPDump) { PDUMPIDLWITHFLAGS(30, ui32PDUMPFlags); #if defined(PDUMP) PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Read back to flush the register writes\r\n"); PDumpRegRead(SGX_PDUMPREG_NAME, ui32ReadRegister, ui32PDUMPFlags); #endif } #if defined(EMULATOR) OSReadHWReg(psDevInfo->pvRegsBaseKM, ui32ReadRegister); #endif }
static void SGXResetSleep(struct PVRSRV_SGXDEV_INFO *psDevInfo, u32 ui32PDUMPFlags, IMG_BOOL bPDump) { #if !defined(PDUMP) PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); #endif OSWaitus(1000 * 1000000 / psDevInfo->ui32CoreClockSpeed); if (bPDump) { PDUMPIDLWITHFLAGS(30, ui32PDUMPFlags); #if defined(PDUMP) PDumpRegRead(EUR_CR_SOFT_RESET, ui32PDUMPFlags); #endif } }
/*! ******************************************************************************* @Function SGXResetSleep @Description Sleep for a short time to allow reset register writes to complete. Required because no status registers are available to poll on. @Input psDevInfo - SGX Device Info @Input ui32PDUMPFlags - flags to control PDUMP output @Input bPDump - Pdump the sleep @Return Nothing ******************************************************************************/ static IMG_VOID SGXResetSleep(PVRSRV_SGXDEV_INFO *psDevInfo, IMG_UINT32 ui32PDUMPFlags, IMG_BOOL bPDump) { #if defined(PDUMP) || defined(EMULATOR) IMG_UINT32 ui32ReadRegister; #if defined(SGX_FEATURE_MP) ui32ReadRegister = EUR_CR_MASTER_SOFT_RESET; #else ui32ReadRegister = EUR_CR_SOFT_RESET; #endif /* SGX_FEATURE_MP */ #endif #if !defined(PDUMP) PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); #endif /* PDUMP */ /* Sleep for 100 SGX clocks */ SGXWaitClocks(psDevInfo, 100); if (bPDump) { PDUMPIDLWITHFLAGS(30, ui32PDUMPFlags); #if defined(PDUMP) PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Read back to flush the register writes\r\n"); PDumpRegRead(SGX_PDUMPREG_NAME, ui32ReadRegister, ui32PDUMPFlags); #endif } #if defined(EMULATOR) /* Read a register to make sure we wait long enough on the emulator... */ OSReadHWReg(psDevInfo->pvRegsBaseKM, ui32ReadRegister); #endif }