/** * cik_sdma_resume - setup and start the async dma engines * * @rdev: radeon_device pointer * * Set up the DMA engines and enable them (CIK). * Returns 0 for success, error for failure. */ int cik_sdma_resume(struct radeon_device *rdev) { int r; /* Reset dma */ WREG32(SRBM_SOFT_RESET, SOFT_RESET_SDMA | SOFT_RESET_SDMA1); RREG32(SRBM_SOFT_RESET); udelay(50); WREG32(SRBM_SOFT_RESET, 0); RREG32(SRBM_SOFT_RESET); r = cik_sdma_load_microcode(rdev); if (r) return r; /* unhalt the MEs */ cik_sdma_enable(rdev, true); /* start the gfx rings and rlc compute queues */ r = cik_sdma_gfx_resume(rdev); if (r) return r; r = cik_sdma_rlc_resume(rdev); if (r) return r; return 0; }
/** * cik_sdma_resume - setup and start the async dma engines * * @rdev: radeon_device pointer * * Set up the DMA engines and enable them (CIK). * Returns 0 for success, error for failure. */ int cik_sdma_resume(struct radeon_device *rdev) { int r; r = cik_sdma_load_microcode(rdev); if (r) return r; /* unhalt the MEs */ cik_sdma_enable(rdev, true); /* start the gfx rings and rlc compute queues */ r = cik_sdma_gfx_resume(rdev); if (r) return r; r = cik_sdma_rlc_resume(rdev); if (r) return r; return 0; }
/** * cik_sdma_start - setup and start the async dma engines * * @adev: amdgpu_device pointer * * Set up the DMA engines and enable them (CIK). * Returns 0 for success, error for failure. */ static int cik_sdma_start(struct amdgpu_device *adev) { int r; r = cik_sdma_load_microcode(adev); if (r) return r; /* halt the engine before programing */ cik_sdma_enable(adev, false); /* start the gfx rings and rlc compute queues */ r = cik_sdma_gfx_resume(adev); if (r) return r; r = cik_sdma_rlc_resume(adev); if (r) return r; return 0; }