Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58a6e2e5 authored by Dave Airlie's avatar Dave Airlie
Browse files

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
parents a81a3606 e3c00d87
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1742,6 +1742,7 @@ static u32 radeon_get_pll_use_mask(struct drm_crtc *crtc)
static int radeon_get_shared_dp_ppll(struct drm_crtc *crtc)
{
	struct drm_device *dev = crtc->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct drm_crtc *test_crtc;
	struct radeon_crtc *test_radeon_crtc;

@@ -1751,6 +1752,10 @@ static int radeon_get_shared_dp_ppll(struct drm_crtc *crtc)
		test_radeon_crtc = to_radeon_crtc(test_crtc);
		if (test_radeon_crtc->encoder &&
		    ENCODER_MODE_IS_DP(atombios_get_encoder_mode(test_radeon_crtc->encoder))) {
			/* PPLL2 is exclusive to UNIPHYA on DCE61 */
			if (ASIC_IS_DCE61(rdev) && !ASIC_IS_DCE8(rdev) &&
			    test_radeon_crtc->pll_id == ATOM_PPLL2)
				continue;
			/* for DP use the same PLL for all */
			if (test_radeon_crtc->pll_id != ATOM_PPLL_INVALID)
				return test_radeon_crtc->pll_id;
@@ -1772,6 +1777,7 @@ static int radeon_get_shared_nondp_ppll(struct drm_crtc *crtc)
{
	struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
	struct drm_device *dev = crtc->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct drm_crtc *test_crtc;
	struct radeon_crtc *test_radeon_crtc;
	u32 adjusted_clock, test_adjusted_clock;
@@ -1787,6 +1793,10 @@ static int radeon_get_shared_nondp_ppll(struct drm_crtc *crtc)
		test_radeon_crtc = to_radeon_crtc(test_crtc);
		if (test_radeon_crtc->encoder &&
		    !ENCODER_MODE_IS_DP(atombios_get_encoder_mode(test_radeon_crtc->encoder))) {
			/* PPLL2 is exclusive to UNIPHYA on DCE61 */
			if (ASIC_IS_DCE61(rdev) && !ASIC_IS_DCE8(rdev) &&
			    test_radeon_crtc->pll_id == ATOM_PPLL2)
				continue;
			/* check if we are already driving this connector with another crtc */
			if (test_radeon_crtc->connector == radeon_crtc->connector) {
				/* if we are, return that pll */
+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ radeon_dp_aux_transfer_native(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg

	tmp &= AUX_HPD_SEL(0x7);
	tmp |= AUX_HPD_SEL(chan->rec.hpd);
	tmp |= AUX_EN | AUX_LS_READ_EN;
	tmp |= AUX_EN | AUX_LS_READ_EN | AUX_HPD_DISCON(0x1);

	WREG32(AUX_CONTROL + aux_offset[instance], tmp);