Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'drm-fixes-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-fixes

Two some radeon display fixes.

* 'drm-fixes-4.6' of git://people.freedesktop.org/~agd5f/linux:
drm/radeon: fix PLL sharing on DCE6.1 (v2)
drm/radeon: fix DP link training issue with second 4K monitor

+11 -1
+10
drivers/gpu/drm/radeon/atombios_crtc.c
··· 1742 1742 static int radeon_get_shared_dp_ppll(struct drm_crtc *crtc) 1743 1743 { 1744 1744 struct drm_device *dev = crtc->dev; 1745 + struct radeon_device *rdev = dev->dev_private; 1745 1746 struct drm_crtc *test_crtc; 1746 1747 struct radeon_crtc *test_radeon_crtc; 1747 1748 ··· 1752 1751 test_radeon_crtc = to_radeon_crtc(test_crtc); 1753 1752 if (test_radeon_crtc->encoder && 1754 1753 ENCODER_MODE_IS_DP(atombios_get_encoder_mode(test_radeon_crtc->encoder))) { 1754 + /* PPLL2 is exclusive to UNIPHYA on DCE61 */ 1755 + if (ASIC_IS_DCE61(rdev) && !ASIC_IS_DCE8(rdev) && 1756 + test_radeon_crtc->pll_id == ATOM_PPLL2) 1757 + continue; 1755 1758 /* for DP use the same PLL for all */ 1756 1759 if (test_radeon_crtc->pll_id != ATOM_PPLL_INVALID) 1757 1760 return test_radeon_crtc->pll_id; ··· 1777 1772 { 1778 1773 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); 1779 1774 struct drm_device *dev = crtc->dev; 1775 + struct radeon_device *rdev = dev->dev_private; 1780 1776 struct drm_crtc *test_crtc; 1781 1777 struct radeon_crtc *test_radeon_crtc; 1782 1778 u32 adjusted_clock, test_adjusted_clock; ··· 1793 1787 test_radeon_crtc = to_radeon_crtc(test_crtc); 1794 1788 if (test_radeon_crtc->encoder && 1795 1789 !ENCODER_MODE_IS_DP(atombios_get_encoder_mode(test_radeon_crtc->encoder))) { 1790 + /* PPLL2 is exclusive to UNIPHYA on DCE61 */ 1791 + if (ASIC_IS_DCE61(rdev) && !ASIC_IS_DCE8(rdev) && 1792 + test_radeon_crtc->pll_id == ATOM_PPLL2) 1793 + continue; 1796 1794 /* check if we are already driving this connector with another crtc */ 1797 1795 if (test_radeon_crtc->connector == radeon_crtc->connector) { 1798 1796 /* if we are, return that pll */
+1 -1
drivers/gpu/drm/radeon/radeon_dp_auxch.c
··· 105 105 106 106 tmp &= AUX_HPD_SEL(0x7); 107 107 tmp |= AUX_HPD_SEL(chan->rec.hpd); 108 - tmp |= AUX_EN | AUX_LS_READ_EN; 108 + tmp |= AUX_EN | AUX_LS_READ_EN | AUX_HPD_DISCON(0x1); 109 109 110 110 WREG32(AUX_CONTROL + aux_offset[instance], tmp); 111 111