diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-02-03 15:22:22 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2010-02-03 15:22:22 -0500 |
commit | 8d63d70f7ebaf9d250f0449d3720ef47516c05df (patch) | |
tree | 19735472a3d360a3c9ff3332dd429432f4375d5b /src | |
parent | ecbc26431914216a8b207e81451282ea07c8b92f (diff) |
evergreen: use external clock source for DP PHY
DP CRTC clock always comes from DCPLL. This frees
up PPll1/2 for non-DP-mode PHYs and CRTCs
Diffstat (limited to 'src')
-rw-r--r-- | src/atombios_crtc.c | 6 | ||||
-rw-r--r-- | src/atombios_output.c | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index 5a88bad2..07fa8075 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -324,9 +324,11 @@ atombios_pick_pll(xf86CrtcPtr crtc) } } } - /* All DP ports need to use the same PPLL */ + /* DP clock comes from DCPLL, DP PHY CLK comes from ext source + * setting ATOM_PPLL_INVALID skips the PPLL programming for DP + */ if (is_dp) - radeon_crtc->pll_id = ATOM_PPLL2; + radeon_crtc->pll_id = ATOM_PPLL_INVALID; else if (!(pll_use_mask & 1)) radeon_crtc->pll_id = ATOM_PPLL1; else diff --git a/src/atombios_output.c b/src/atombios_output.c index 547cd139..61f5373d 100644 --- a/src/atombios_output.c +++ b/src/atombios_output.c @@ -762,11 +762,14 @@ atombios_output_dig_transmitter_setup(xf86OutputPtr output, int action, uint8_t if (radeon_output->linkb) disp_data.v3.acConfig.ucLinkSel = 1; - //if (radeon_output->dig_encoder) - // disp_data.v2.acConfig.ucEncoderSel = 1; + if (radeon_output->dig_encoder & 1) + disp_data.v2.acConfig.ucEncoderSel = 1; - // select the PLL - disp_data.v3.acConfig.ucRefClkSource = radeon_output->pll_id; + // select the PLL for the UNIPHY + if (radeon_output->MonType == MT_DP) + disp_data.v3.acConfig.ucRefClkSource = 2; /* ext clk */ + else + disp_data.v3.acConfig.ucRefClkSource = radeon_output->pll_id; switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: |