From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933082AbcJHAN1 (ORCPT ); Fri, 7 Oct 2016 20:13:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:60274 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751425AbcJHAMa (ORCPT ); Fri, 7 Oct 2016 20:12:30 -0400 From: Lyude To: intel-gfx@lists.freedesktop.org Cc: Lyude , Maarten Lankhorst , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Paulo Zanoni , Daniel Vetter , Jani Nikula , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/10] drm/i915/gen9: Make skl_pipe_wm_get_hw_state() reusable Date: Fri, 7 Oct 2016 20:11:31 -0400 Message-Id: <1475885497-6094-8-git-send-email-cpaul@redhat.com> In-Reply-To: <1475885497-6094-1-git-send-email-cpaul@redhat.com> References: <1475885497-6094-1-git-send-email-cpaul@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Sat, 08 Oct 2016 00:12:30 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There's not much of a reason this should have the locations to read out the hardware state hardcoded, so allow the caller to specify the location and add this function to intel_drv.h. As well, we're going to need this function to be reusable for the next patch. Signed-off-by: Lyude Cc: Maarten Lankhorst Cc: Ville Syrjälä Cc: Paulo Zanoni --- drivers/gpu/drm/i915/intel_drv.h | 2 ++ drivers/gpu/drm/i915/intel_pm.c | 27 +++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 958dc72..73a2d16d 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1756,6 +1756,8 @@ void ilk_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, struct skl_ddb_allocation *ddb /* out */); +void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc, + struct skl_pipe_wm *out); bool intel_can_enable_sagv(struct drm_atomic_state *state); int intel_enable_sagv(struct drm_i915_private *dev_priv); int intel_disable_sagv(struct drm_i915_private *dev_priv); diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 9e53ff7..27a520ce 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -4287,15 +4287,13 @@ static inline void skl_wm_level_from_reg_val(uint32_t val, PLANE_WM_LINES_MASK; } -static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc) +void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc, + struct skl_pipe_wm *out) { struct drm_device *dev = crtc->dev; struct drm_i915_private *dev_priv = to_i915(dev); - struct skl_wm_values *hw = &dev_priv->wm.skl_hw; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); - struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state); struct intel_plane *intel_plane; - struct skl_pipe_wm *active = &cstate->wm.skl.optimal; struct skl_plane_wm *wm; enum pipe pipe = intel_crtc->pipe; int level, id, max_level = ilk_wm_max_level(dev); @@ -4303,7 +4301,7 @@ static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc) for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { id = skl_wm_plane_id(intel_plane); - wm = &cstate->wm.skl.optimal.planes[id]; + wm = &out->planes[id]; for (level = 0; level <= max_level; level++) { if (id != PLANE_CURSOR) @@ -4325,20 +4323,29 @@ static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc) if (!intel_crtc->active) return; - hw->dirty_pipes |= drm_crtc_mask(crtc); - active->linetime = I915_READ(PIPE_WM_LINETIME(pipe)); - intel_crtc->wm.active.skl = *active; + out->linetime = I915_READ(PIPE_WM_LINETIME(pipe)); } void skl_wm_get_hw_state(struct drm_device *dev) { struct drm_i915_private *dev_priv = to_i915(dev); + struct skl_wm_values *hw = &dev_priv->wm.skl_hw; struct skl_ddb_allocation *ddb = &dev_priv->wm.skl_hw.ddb; struct drm_crtc *crtc; + struct intel_crtc *intel_crtc; + struct intel_crtc_state *cstate; skl_ddb_get_hw_state(dev_priv, ddb); - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) - skl_pipe_wm_get_hw_state(crtc); + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + intel_crtc = to_intel_crtc(crtc); + cstate = to_intel_crtc_state(crtc->state); + + skl_pipe_wm_get_hw_state(crtc, &cstate->wm.skl.optimal); + intel_crtc->wm.active.skl = cstate->wm.skl.optimal; + + if (!intel_crtc->active) + hw->dirty_pipes |= drm_crtc_mask(crtc); + } if (dev_priv->active_crtcs) { /* Fully recompute DDB on first atomic commit */ -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH 07/10] drm/i915/gen9: Make skl_pipe_wm_get_hw_state() reusable Date: Fri, 7 Oct 2016 20:11:31 -0400 Message-ID: <1475885497-6094-8-git-send-email-cpaul@redhat.com> References: <1475885497-6094-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1475885497-6094-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org VGhlcmUncyBub3QgbXVjaCBvZiBhIHJlYXNvbiB0aGlzIHNob3VsZCBoYXZlIHRoZSBsb2NhdGlv bnMgdG8gcmVhZCBvdXQKdGhlIGhhcmR3YXJlIHN0YXRlIGhhcmRjb2RlZCwgc28gYWxsb3cgdGhl IGNhbGxlciB0byBzcGVjaWZ5IHRoZQpsb2NhdGlvbiBhbmQgYWRkIHRoaXMgZnVuY3Rpb24gdG8g aW50ZWxfZHJ2LmguIEFzIHdlbGwsIHdlJ3JlIGdvaW5nIHRvCm5lZWQgdGhpcyBmdW5jdGlvbiB0 byBiZSByZXVzYWJsZSBmb3IgdGhlIG5leHQgcGF0Y2guCgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8 Y3BhdWxAcmVkaGF0LmNvbT4KQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgpDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgMiArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgfCAyNyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA5NThkYzcyLi43M2EyZDE2ZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKQEAgLTE3NTYsNiArMTc1Niw4IEBAIHZvaWQgaWxrX3dtX2dldF9od19z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0 aW9uICpkZGIgLyogb3V0ICovKTsKK3ZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKKwkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqb3V0KTsKIGJv b2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7 CiBpbnQgaW50ZWxfZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKIGludCBpbnRlbF9kaXNhYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDllNTNmZjcuLjI3YTUyMGNlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTQyODcsMTUgKzQyODcsMTMgQEAgc3RhdGljIGlubGlu ZSB2b2lkIHNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodWludDMyX3QgdmFsLAogCQlQTEFORV9X TV9MSU5FU19NQVNLOwogfQogCi1zdGF0aWMgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQordm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAorCQkJICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpvdXQpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IHNrbF93bV92YWx1ZXMg Kmh3ID0gJmRldl9wcml2LT53bS5za2xfaHc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAlzdHJ1Y3QgaW50ZWxfcGxh bmUgKmludGVsX3BsYW5lOwotCXN0cnVjdCBza2xfcGlwZV93bSAqYWN0aXZlID0gJmNzdGF0ZS0+ d20uc2tsLm9wdGltYWw7CiAJc3RydWN0IHNrbF9wbGFuZV93bSAqd207CiAJZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCWludCBsZXZlbCwgaWQsIG1heF9sZXZlbCA9IGlsa193 bV9tYXhfbGV2ZWwoZGV2KTsKQEAgLTQzMDMsNyArNDMwMSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9w aXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAlmb3JfZWFjaF9p bnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKIAkJaWQg PSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwotCQl3bSA9ICZjc3RhdGUtPndtLnNrbC5v cHRpbWFsLnBsYW5lc1tpZF07CisJCXdtID0gJm91dC0+cGxhbmVzW2lkXTsKIAogCQlmb3IgKGxl dmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CiAJCQlpZiAoaWQgIT0gUExB TkVfQ1VSU09SKQpAQCAtNDMyNSwyMCArNDMyMywyOSBAQCBzdGF0aWMgdm9pZCBza2xfcGlwZV93 bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWlmICghaW50ZWxfY3J0Yy0+ YWN0aXZlKQogCQlyZXR1cm47CiAKLQlody0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzayhj cnRjKTsKLQlhY3RpdmUtPmxpbmV0aW1lID0gSTkxNV9SRUFEKFBJUEVfV01fTElORVRJTUUocGlw ZSkpOwotCWludGVsX2NydGMtPndtLmFjdGl2ZS5za2wgPSAqYWN0aXZlOworCW91dC0+bGluZXRp bWUgPSBJOTE1X1JFQUQoUElQRV9XTV9MSU5FVElNRShwaXBlKSk7CiB9CiAKIHZvaWQgc2tsX3dt X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3Qgc2tsX3dtX3ZhbHVl cyAqaHcgPSAmZGV2X3ByaXYtPndtLnNrbF9odzsKIAlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9u ICpkZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7CiAJc3RydWN0IGRybV9jcnRjICpjcnRj OworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGU7CiAKIAlza2xfZGRiX2dldF9od19zdGF0ZShkZXZfcHJpdiwgZGRiKTsKLQls aXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVh ZCkKLQkJc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKGNydGMpOworCWxpc3RfZm9yX2VhY2hfZW50 cnkoY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7CisJCWludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKTsKKworCQlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoY3J0YywgJmNzdGF0 ZS0+d20uc2tsLm9wdGltYWwpOworCQlpbnRlbF9jcnRjLT53bS5hY3RpdmUuc2tsID0gY3N0YXRl LT53bS5za2wub3B0aW1hbDsKKworCQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkKKwkJCWh3LT5k aXJ0eV9waXBlcyB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOworCX0KIAogCWlmIChkZXZfcHJpdi0+ YWN0aXZlX2NydGNzKSB7CiAJCS8qIEZ1bGx5IHJlY29tcHV0ZSBEREIgb24gZmlyc3QgYXRvbWlj IGNvbW1pdCAqLwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=