drm/radeon: don't disable plls that are in use by other crtcs
Some plls are shared for DP. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
parent
523885dec1
commit
4e58591c89
|
@ -1682,9 +1682,22 @@ static void atombios_crtc_disable(struct drm_crtc *crtc)
|
|||
struct drm_device *dev = crtc->dev;
|
||||
struct radeon_device *rdev = dev->dev_private;
|
||||
struct radeon_atom_ss ss;
|
||||
int i;
|
||||
|
||||
atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF);
|
||||
|
||||
for (i = 0; i < rdev->num_crtc; i++) {
|
||||
if (rdev->mode_info.crtcs[i] &&
|
||||
rdev->mode_info.crtcs[i]->enabled &&
|
||||
i != radeon_crtc->crtc_id &&
|
||||
radeon_crtc->pll_id == rdev->mode_info.crtcs[i]->pll_id) {
|
||||
/* one other crtc is using this pll don't turn
|
||||
* off the pll
|
||||
*/
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
switch (radeon_crtc->pll_id) {
|
||||
case ATOM_PPLL1:
|
||||
case ATOM_PPLL2:
|
||||
|
@ -1701,6 +1714,7 @@ static void atombios_crtc_disable(struct drm_crtc *crtc)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
done:
|
||||
radeon_crtc->pll_id = -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue