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 drm_device *dev = crtc->dev;
|
||||||
struct radeon_device *rdev = dev->dev_private;
|
struct radeon_device *rdev = dev->dev_private;
|
||||||
struct radeon_atom_ss ss;
|
struct radeon_atom_ss ss;
|
||||||
|
int i;
|
||||||
|
|
||||||
atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF);
|
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) {
|
switch (radeon_crtc->pll_id) {
|
||||||
case ATOM_PPLL1:
|
case ATOM_PPLL1:
|
||||||
case ATOM_PPLL2:
|
case ATOM_PPLL2:
|
||||||
|
@ -1701,6 +1714,7 @@ static void atombios_crtc_disable(struct drm_crtc *crtc)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
done:
|
||||||
radeon_crtc->pll_id = -1;
|
radeon_crtc->pll_id = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue