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

Commit 674f823b authored by Paulo Zanoni's avatar Paulo Zanoni Committed by Jani Nikula
Browse files

drm/i915: SAGV is not SKL-only, so rename a few things



The plan is to introduce intel_has_sagv() and then use it to discover
which platforms actually support it.

I thought about keeping the functions with their current skl names,
but found two problems: (i) skl_has_sagv() would become a very
confusing name, and (ii) intel_atomic_commit_tail() doesn't seem to be
calling any functions whose name start with a platform name, so the
"intel_" naming scheme seems make more sense than the "firstplatorm_"
naming scheme here.

Cc: stable@vger.kernel.org
Reviewed-by: default avatarLyude <cpaul@redhat.com>
Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1474578035-424-2-git-send-email-paulo.r.zanoni@intel.com


(cherry picked from commit 16dcdc4e)
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 9700f8b2
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -1984,11 +1984,11 @@ struct drm_i915_private {
	struct vlv_s0ix_state vlv_s0ix_state;
	struct vlv_s0ix_state vlv_s0ix_state;


	enum {
	enum {
		I915_SKL_SAGV_UNKNOWN = 0,
		I915_SAGV_UNKNOWN = 0,
		I915_SKL_SAGV_DISABLED,
		I915_SAGV_DISABLED,
		I915_SKL_SAGV_ENABLED,
		I915_SAGV_ENABLED,
		I915_SKL_SAGV_NOT_CONTROLLED
		I915_SAGV_NOT_CONTROLLED
	} skl_sagv_status;
	} sagv_status;


	struct {
	struct {
		/*
		/*
+4 −4
Original line number Original line Diff line number Diff line
@@ -14367,8 +14367,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
		 * SKL workaround: bspec recommends we disable the SAGV when we
		 * SKL workaround: bspec recommends we disable the SAGV when we
		 * have more then one pipe enabled
		 * have more then one pipe enabled
		 */
		 */
		if (IS_SKYLAKE(dev_priv) && !skl_can_enable_sagv(state))
		if (IS_SKYLAKE(dev_priv) && !intel_can_enable_sagv(state))
			skl_disable_sagv(dev_priv);
			intel_disable_sagv(dev_priv);


		intel_modeset_verify_disabled(dev);
		intel_modeset_verify_disabled(dev);
	}
	}
@@ -14426,8 +14426,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
	}
	}


	if (IS_SKYLAKE(dev_priv) && intel_state->modeset &&
	if (IS_SKYLAKE(dev_priv) && intel_state->modeset &&
	    skl_can_enable_sagv(state))
	    intel_can_enable_sagv(state))
		skl_enable_sagv(dev_priv);
		intel_enable_sagv(dev_priv);


	drm_atomic_helper_commit_hw_done(state);
	drm_atomic_helper_commit_hw_done(state);


+3 −3
Original line number Original line Diff line number Diff line
@@ -1742,9 +1742,9 @@ void ilk_wm_get_hw_state(struct drm_device *dev);
void skl_wm_get_hw_state(struct drm_device *dev);
void skl_wm_get_hw_state(struct drm_device *dev);
void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
			  struct skl_ddb_allocation *ddb /* out */);
			  struct skl_ddb_allocation *ddb /* out */);
bool skl_can_enable_sagv(struct drm_atomic_state *state);
bool intel_can_enable_sagv(struct drm_atomic_state *state);
int skl_enable_sagv(struct drm_i915_private *dev_priv);
int intel_enable_sagv(struct drm_i915_private *dev_priv);
int skl_disable_sagv(struct drm_i915_private *dev_priv);
int intel_disable_sagv(struct drm_i915_private *dev_priv);
bool skl_ddb_allocation_equals(const struct skl_ddb_allocation *old,
bool skl_ddb_allocation_equals(const struct skl_ddb_allocation *old,
			       const struct skl_ddb_allocation *new,
			       const struct skl_ddb_allocation *new,
			       enum pipe pipe);
			       enum pipe pipe);
+13 −13
Original line number Original line Diff line number Diff line
@@ -2889,12 +2889,12 @@ skl_wm_plane_id(const struct intel_plane *plane)
 *  - We're not using an interlaced display configuration
 *  - We're not using an interlaced display configuration
 */
 */
int
int
skl_enable_sagv(struct drm_i915_private *dev_priv)
intel_enable_sagv(struct drm_i915_private *dev_priv)
{
{
	int ret;
	int ret;


	if (dev_priv->skl_sagv_status == I915_SKL_SAGV_NOT_CONTROLLED ||
	if (dev_priv->sagv_status == I915_SAGV_NOT_CONTROLLED ||
	    dev_priv->skl_sagv_status == I915_SKL_SAGV_ENABLED)
	    dev_priv->sagv_status == I915_SAGV_ENABLED)
		return 0;
		return 0;


	DRM_DEBUG_KMS("Enabling the SAGV\n");
	DRM_DEBUG_KMS("Enabling the SAGV\n");
@@ -2912,19 +2912,19 @@ skl_enable_sagv(struct drm_i915_private *dev_priv)
	 */
	 */
	if (ret == -ENXIO) {
	if (ret == -ENXIO) {
		DRM_DEBUG_DRIVER("No SAGV found on system, ignoring\n");
		DRM_DEBUG_DRIVER("No SAGV found on system, ignoring\n");
		dev_priv->skl_sagv_status = I915_SKL_SAGV_NOT_CONTROLLED;
		dev_priv->sagv_status = I915_SAGV_NOT_CONTROLLED;
		return 0;
		return 0;
	} else if (ret < 0) {
	} else if (ret < 0) {
		DRM_ERROR("Failed to enable the SAGV\n");
		DRM_ERROR("Failed to enable the SAGV\n");
		return ret;
		return ret;
	}
	}


	dev_priv->skl_sagv_status = I915_SKL_SAGV_ENABLED;
	dev_priv->sagv_status = I915_SAGV_ENABLED;
	return 0;
	return 0;
}
}


static int
static int
skl_do_sagv_disable(struct drm_i915_private *dev_priv)
intel_do_sagv_disable(struct drm_i915_private *dev_priv)
{
{
	int ret;
	int ret;
	uint32_t temp = GEN9_SAGV_DISABLE;
	uint32_t temp = GEN9_SAGV_DISABLE;
@@ -2938,19 +2938,19 @@ skl_do_sagv_disable(struct drm_i915_private *dev_priv)
}
}


int
int
skl_disable_sagv(struct drm_i915_private *dev_priv)
intel_disable_sagv(struct drm_i915_private *dev_priv)
{
{
	int ret, result;
	int ret, result;


	if (dev_priv->skl_sagv_status == I915_SKL_SAGV_NOT_CONTROLLED ||
	if (dev_priv->sagv_status == I915_SAGV_NOT_CONTROLLED ||
	    dev_priv->skl_sagv_status == I915_SKL_SAGV_DISABLED)
	    dev_priv->sagv_status == I915_SAGV_DISABLED)
		return 0;
		return 0;


	DRM_DEBUG_KMS("Disabling the SAGV\n");
	DRM_DEBUG_KMS("Disabling the SAGV\n");
	mutex_lock(&dev_priv->rps.hw_lock);
	mutex_lock(&dev_priv->rps.hw_lock);


	/* bspec says to keep retrying for at least 1 ms */
	/* bspec says to keep retrying for at least 1 ms */
	ret = wait_for(result = skl_do_sagv_disable(dev_priv), 1);
	ret = wait_for(result = intel_do_sagv_disable(dev_priv), 1);
	mutex_unlock(&dev_priv->rps.hw_lock);
	mutex_unlock(&dev_priv->rps.hw_lock);


	if (ret == -ETIMEDOUT) {
	if (ret == -ETIMEDOUT) {
@@ -2964,18 +2964,18 @@ skl_disable_sagv(struct drm_i915_private *dev_priv)
	 */
	 */
	if (result == -ENXIO) {
	if (result == -ENXIO) {
		DRM_DEBUG_DRIVER("No SAGV found on system, ignoring\n");
		DRM_DEBUG_DRIVER("No SAGV found on system, ignoring\n");
		dev_priv->skl_sagv_status = I915_SKL_SAGV_NOT_CONTROLLED;
		dev_priv->sagv_status = I915_SAGV_NOT_CONTROLLED;
		return 0;
		return 0;
	} else if (result < 0) {
	} else if (result < 0) {
		DRM_ERROR("Failed to disable the SAGV\n");
		DRM_ERROR("Failed to disable the SAGV\n");
		return result;
		return result;
	}
	}


	dev_priv->skl_sagv_status = I915_SKL_SAGV_DISABLED;
	dev_priv->sagv_status = I915_SAGV_DISABLED;
	return 0;
	return 0;
}
}


bool skl_can_enable_sagv(struct drm_atomic_state *state)
bool intel_can_enable_sagv(struct drm_atomic_state *state)
{
{
	struct drm_device *dev = state->dev;
	struct drm_device *dev = state->dev;
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_i915_private *dev_priv = to_i915(dev);