radeon_hd: Disable spread spectrum

* SS requires complex pll adjustments that we don't do atm
This commit is contained in:
Alexander von Gluck IV
2012-02-22 06:31:53 -06:00
parent 962eb31b1c
commit 4ee41b26a0
3 changed files with 37 additions and 0 deletions
@@ -263,6 +263,9 @@ radeon_init_accelerant(int device)
radeon_init_bios(gInfo->rom);
// disable spread spectrum as it requires lots of extra calculations
radeon_gpu_ss_disable();
// find GPIO pins from AtomBIOS
gpio_probe();
+33
View File
@@ -524,3 +524,36 @@ radeon_gpu_irq_setup()
return B_ERROR;
}
status_t
radeon_gpu_ss_disable()
{
TRACE("%s called\n", __func__);
radeon_shared_info &info = *gInfo->shared_info;
uint32 ssControl;
if (info.chipsetID >= RADEON_CEDAR) {
// PLL1
ssControl = Read32(OUT, EVERGREEN_P1PLL_SS_CNTL);
ssControl &= ~EVERGREEN_PxPLL_SS_EN;
Write32(OUT, EVERGREEN_P1PLL_SS_CNTL, ssControl);
// PLL2
ssControl = Read32(OUT, EVERGREEN_P2PLL_SS_CNTL);
ssControl &= ~EVERGREEN_PxPLL_SS_EN;
Write32(OUT, EVERGREEN_P2PLL_SS_CNTL, ssControl);
} else if (info.chipsetID >= RADEON_RS600) {
// PLL1
ssControl = Read32(OUT, AVIVO_P1PLL_INT_SS_CNTL);
ssControl &= ~1;
Write32(OUT, AVIVO_P1PLL_INT_SS_CNTL, ssControl);
// PLL2
ssControl = Read32(OUT, AVIVO_P2PLL_INT_SS_CNTL);
ssControl &= ~1;
Write32(OUT, AVIVO_P2PLL_INT_SS_CNTL, ssControl);
} else
return B_ERROR;
return B_OK;
}
+1
View File
@@ -176,6 +176,7 @@ void radeon_gpu_mc_resume(struct gpu_state *gpuState);
uint32 radeon_gpu_mc_idlecheck();
status_t radeon_gpu_mc_setup();
status_t radeon_gpu_irq_setup();
status_t radeon_gpu_ss_disable();
#endif