radeon_hd: ss_probe reads the pixel clock; set before calling.
* CID 743876
This commit is contained in:
committed by
Alexander von Gluck IV
parent
310cd0e731
commit
0de3a59590
@@ -60,7 +60,7 @@ extern "C" void _sPrintf(const char* format, ...);
|
|||||||
* Allowed ranges are given in the pll_info min/max values.
|
* Allowed ranges are given in the pll_info min/max values.
|
||||||
*
|
*
|
||||||
* The resulting output pixel clock frequency is then:
|
* The resulting output pixel clock frequency is then:
|
||||||
*
|
*
|
||||||
* feedbackDiv + (feedbackDivFrac/10)
|
* feedbackDiv + (feedbackDivFrac/10)
|
||||||
* f_out = referenceFreq * ------------------------------------
|
* f_out = referenceFreq * ------------------------------------
|
||||||
* referenceDiv * postDiv
|
* referenceDiv * postDiv
|
||||||
@@ -424,7 +424,7 @@ pll_compute(pll_info* pll)
|
|||||||
// Put first 2 digits after the decimal point into feedbackDivFrac
|
// Put first 2 digits after the decimal point into feedbackDivFrac
|
||||||
pll->feedbackDivFrac
|
pll->feedbackDivFrac
|
||||||
= (100 * pll->feedbackDivFrac) / pll->referenceFreq;
|
= (100 * pll->feedbackDivFrac) / pll->referenceFreq;
|
||||||
|
|
||||||
// Now round it to one digit
|
// Now round it to one digit
|
||||||
if (pll->feedbackDivFrac >= 5) {
|
if (pll->feedbackDivFrac >= 5) {
|
||||||
pll->feedbackDivFrac -= 5;
|
pll->feedbackDivFrac -= 5;
|
||||||
@@ -1002,6 +1002,12 @@ pll_external_set(uint32 clock)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pll_external_init - Sets external default pll to sane value
|
||||||
|
*
|
||||||
|
* Takes the AtomBIOS ulDefaultDispEngineClkFreq and applies it
|
||||||
|
* back to the card's external PLL clock via SetPixelClock
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
pll_external_init()
|
pll_external_init()
|
||||||
{
|
{
|
||||||
@@ -1012,15 +1018,18 @@ pll_external_init()
|
|||||||
} else if (info.dceMajor >= 4) {
|
} else if (info.dceMajor >= 4) {
|
||||||
// Create our own pseudo pll
|
// Create our own pseudo pll
|
||||||
pll_info pll;
|
pll_info pll;
|
||||||
|
pll.pixelClock = gInfo->displayClockFrequency;
|
||||||
|
|
||||||
pll_asic_ss_probe(&pll, ASIC_INTERNAL_SS_ON_DCPLL);
|
pll_asic_ss_probe(&pll, ASIC_INTERNAL_SS_ON_DCPLL);
|
||||||
if (pll.ssEnabled)
|
if (pll.ssEnabled)
|
||||||
display_crtc_ss(&pll, ATOM_DISABLE);
|
display_crtc_ss(&pll, ATOM_DISABLE);
|
||||||
pll_external_set(gInfo->displayClockFrequency);
|
pll_external_set(pll.pixelClock);
|
||||||
if (pll.ssEnabled)
|
if (pll.ssEnabled)
|
||||||
display_crtc_ss(&pll, ATOM_ENABLE);
|
display_crtc_ss(&pll, ATOM_ENABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pll_usage_mask - Calculate which PLL's are in use
|
* pll_usage_mask - Calculate which PLL's are in use
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user