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

Commit e27f299e authored by Ville Syrjälä's avatar Ville Syrjälä Committed by Daniel Vetter
Browse files

drm/i915: Move DPIO port init earlier



To implement DPIO lane power gating on CHV we're going to need to access
DPIO registers from the cmn power well enable hook. That gets called
rather early, so we need to move the DPIO port IOSF sideband port
assignment earlier as well.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarDeepak S <deepak.s@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent d6db995f
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -799,6 +799,24 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
			 info->has_eu_pg ? "y" : "n");
			 info->has_eu_pg ? "y" : "n");
}
}


static void intel_init_dpio(struct drm_i915_private *dev_priv)
{
	if (!IS_VALLEYVIEW(dev_priv))
		return;

	/*
	 * IOSF_PORT_DPIO is used for VLV x2 PHY (DP/HDMI B and C),
	 * CHV x1 PHY (DP/HDMI D)
	 * IOSF_PORT_DPIO_2 is used for CHV x2 PHY (DP/HDMI B and C)
	 */
	if (IS_CHERRYVIEW(dev_priv)) {
		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO_2;
		DPIO_PHY_IOSF_PORT(DPIO_PHY1) = IOSF_PORT_DPIO;
	} else {
		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO;
	}
}

/**
/**
 * i915_driver_load - setup chip and create an initial config
 * i915_driver_load - setup chip and create an initial config
 * @dev: DRM device
 * @dev: DRM device
@@ -999,6 +1017,8 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)


	intel_device_info_runtime_init(dev);
	intel_device_info_runtime_init(dev);


	intel_init_dpio(dev_priv);

	if (INTEL_INFO(dev)->num_pipes) {
	if (INTEL_INFO(dev)->num_pipes) {
		ret = drm_vblank_init(dev, INTEL_INFO(dev)->num_pipes);
		ret = drm_vblank_init(dev, INTEL_INFO(dev)->num_pipes);
		if (ret)
		if (ret)
+0 −22
Original line number Original line Diff line number Diff line
@@ -1582,26 +1582,6 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
	assert_pch_hdmi_disabled(dev_priv, pipe, PCH_HDMID);
	assert_pch_hdmi_disabled(dev_priv, pipe, PCH_HDMID);
}
}


static void intel_init_dpio(struct drm_device *dev)
{
	struct drm_i915_private *dev_priv = dev->dev_private;

	if (!IS_VALLEYVIEW(dev))
		return;

	/*
	 * IOSF_PORT_DPIO is used for VLV x2 PHY (DP/HDMI B and C),
	 * CHV x1 PHY (DP/HDMI D)
	 * IOSF_PORT_DPIO_2 is used for CHV x2 PHY (DP/HDMI B and C)
	 */
	if (IS_CHERRYVIEW(dev)) {
		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO_2;
		DPIO_PHY_IOSF_PORT(DPIO_PHY1) = IOSF_PORT_DPIO;
	} else {
		DPIO_PHY_IOSF_PORT(DPIO_PHY0) = IOSF_PORT_DPIO;
	}
}

static void vlv_enable_pll(struct intel_crtc *crtc,
static void vlv_enable_pll(struct intel_crtc *crtc,
			   const struct intel_crtc_state *pipe_config)
			   const struct intel_crtc_state *pipe_config)
{
{
@@ -14767,8 +14747,6 @@ void intel_modeset_init(struct drm_device *dev)
		}
		}
	}
	}


	intel_init_dpio(dev);

	intel_shared_dpll_init(dev);
	intel_shared_dpll_init(dev);


	/* Just disable it once at startup */
	/* Just disable it once at startup */