From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] i915: Set ddi_pll_sel in DP MST path Date: Mon, 31 Aug 2015 14:06:02 +0300 Message-ID: <20150831110602.GA29811@intel.com> References: <1441009408-27410-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 447776E2DC for ; Mon, 31 Aug 2015 04:06:21 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1441009408-27410-1-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org, Luciano Coelho , stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBBdWcgMzEsIDIwMTUgYXQgMTE6MjM6MjhBTSArMDMwMCwgQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIHdyb3RlOgo+IFRoZSBEUCBNU1QgZW5jb2RlciBjb25maWcgZnVuY3Rpb24g bmV2ZXIgc2V0cyBkZGlfcGxsX3NlbCwgZXZlbiB0aG91Z2gKPiBpdHMgdmFsdWUgaXMgcHJvZ3Jh bW1lZCBpbiBpdHMgLT5wcmVfZW5hYmxlKCkgaG9vay4gVGhhdCB1c2VkIHRvIHdvcmsKPiBiZWNh dXNlIGEgbmV3IHBpcGVfY29uZmlnIHdhcyBremFsbG9jJ2VkIGF0IGV2ZXJ5IG1vZGVzZXQsIGFu ZCB0aGUgdmFsdWUKPiBvZiB6ZXJvIHNlbGVjdHMgdGhlIGhpZ2hlc3QgY2xvY2sgZm9yIHRoZSBQ TEwuIFN0YXJ0aW5nIHdpdGggdGhlIGNvbW1pdAo+IGJlbG93LCB0aGUgdmFsdWUgb2YgZGRpX3Bs bF9zZWwgaXMgcHJlc2VydmVkIHRocm91Z2ggbW9kZXNldHMsIGFuZCBzaW5jZQo+IHRoZSBjb3Jy ZWN0IHZhbHVlIHdhc24ndCBwcm9wZXJseSBzZXR1cCBieSB0aGUgTVNUIGNvZGUsIGl0IGNvdWxk IGxlYWQKPiB0byB3YXJuaW5ncyBhbmQgYmxhbmsgc2NyZWVucy4KClRoZSBkZGkgcGxsIGhhbmRs aW5nIGlzIHN0aWxsIHF1aXRlIGEgbWVzcy4gRXZlcnkgcGxhdGZvcm0gZG9lcyB0aGluZ3MKanVz dCBhIGJpdCBkaWZmZXJlbnQgdG8gdGhlIG5leHQgZ3V5LgoKQnV0IHllYWgsIGxvb2tzIGxpa2Ug SFNXL0JEVyBoYW5kbGUgdGhlIFBMTCBzZWxlY3Rpb24gZm9yIERQIGZyb20KdGhlIGVuY29kZXIg LmNvbXB1dGVfY29uZmlnKCkgc28gTVNUIHNob3VsZCBkbyB0aGUgc2FtZSBzaW5jZSBpdAoocmUp Y29tcHV0ZXMgdGhlIG1haW4gbGluayBjb25maWcgZm9yIGVhY2ggc3RyZWFtLiBBbmQgU0tMIGFu ZCBCWFQKaGFuZGxlIERQIHZpYSB0aGUgLmNydGNfY29tcHV0ZV9jbG9jaygpIHBhdGgsIHNvIG5v dGhpbmcgbmVlZGVkIGZvcgp0aGVtIEkgc3VwcG9zZS4KClJldmlld2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKPiAKPiBjb21taXQgODUwNGM3 NGM3YWU0OGI0YjhlZDFmMWMwYWNmNjc0ODJhN2Y0NWM5Mwo+IEF1dGhvcjogQW5kZXIgQ29uc2Vs dmFuIGRlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+ IERhdGU6ICAgRnJpIE1heSAxNSAxMTo1MTo1MCAyMDE1ICswMzAwCj4gCj4gICAgIGRybS9pOTE1 OiBQcmVzZXJ2ZSBkZGlfcGxsX3NlbCB3aGVuIGFsbG9jYXRpbmcgbmV3IHBpcGVfY29uZmlnCj4g Cj4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk PTkxNjI4Cj4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiBDYzogVGltbyBBYWx0b25lbiA8 dGphYWx0b25AdWJ1bnR1LmNvbT4KPiBDYzogTHVjaWFubyBDb2VsaG8gPGx1Y2lhbm8uY29lbGhv QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEg PGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgIHwgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYyB8IDUgKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgfCAxICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA5ZTkwYTJiLi4zOTNh ZWQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTExOTAsNyArMTE5MCw3IEBA IHNrbF9lZHBfc2V0X3BsbF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnKQo+ICAJcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuY3RybDEgPSBjdHJsMTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQKPiArdm9pZAo+ICBoc3dfZHBfc2V0X2RkaV9wbGxfc2VsKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJbWVtc2V0KCZwaXBlX2Nv bmZpZy0+ZHBsbF9od19zdGF0ZSwgMCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ IGluZGV4IGViZjIwNTQuLjY3N2Q3MGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfbXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9t c3QuYwo+IEBAIC0zMyw2ICszMyw3IEBACj4gIHN0YXRpYyBib29sIGludGVsX2RwX21zdF9jb21w dXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2Rl ciAqaW50ZWxfbXN0ID0gZW5jX3RvX21zdCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGludGVsX21zdC0+cHJpbWFyeTsKPiAg CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+IEBAIC04 OCw2ICs4OSwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWctPmRw X21fbik7Cj4gIAo+ICAJcGlwZV9jb25maWctPmRwX21fbi50dSA9IHNsb3RzOwo+ICsKPiArCWlm IChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4gKwkJaHN3X2RwX3NldF9k ZGlfcGxsX3NlbChwaXBlX2NvbmZpZyk7Cj4gKwo+ICAJcmV0dXJuIHRydWU7Cj4gIAo+ICB9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBjNjFiYTQ3Li40NThmNTZjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTIwOSw2ICsxMjA5LDcgQEAgdm9pZCBpbnRl bF9lZHBfZHJyc19kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ICB2b2lkIGlu dGVsX2VkcF9kcnJzX2ludmFsaWRhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl1bnNp Z25lZCBmcm9udGJ1ZmZlcl9iaXRzKTsKPiAgdm9pZCBpbnRlbF9lZHBfZHJyc19mbHVzaChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzKTsKPiArdm9pZCBo c3dfZHBfc2V0X2RkaV9wbGxfc2VsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp Zyk7Cj4gIAo+ICAvKiBpbnRlbF9kcF9tc3QuYyAqLwo+ICBpbnQgaW50ZWxfZHBfbXN0X2VuY29k ZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgaW50IGNv bm5faWQpOwo+IC0tIAo+IDIuNC4zCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com ([192.55.52.88]:7540 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752895AbbHaLGV (ORCPT ); Mon, 31 Aug 2015 07:06:21 -0400 Date: Mon, 31 Aug 2015 14:06:02 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org, Luciano Coelho , stable@vger.kernel.org Subject: Re: [Intel-gfx] [PATCH] i915: Set ddi_pll_sel in DP MST path Message-ID: <20150831110602.GA29811@intel.com> References: <1441009408-27410-1-git-send-email-ander.conselvan.de.oliveira@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1441009408-27410-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Sender: stable-owner@vger.kernel.org List-ID: On Mon, Aug 31, 2015 at 11:23:28AM +0300, Ander Conselvan de Oliveira wrote: > The DP MST encoder config function never sets ddi_pll_sel, even though > its value is programmed in its ->pre_enable() hook. That used to work > because a new pipe_config was kzalloc'ed at every modeset, and the value > of zero selects the highest clock for the PLL. Starting with the commit > below, the value of ddi_pll_sel is preserved through modesets, and since > the correct value wasn't properly setup by the MST code, it could lead > to warnings and blank screens. The ddi pll handling is still quite a mess. Every platform does things just a bit different to the next guy. But yeah, looks like HSW/BDW handle the PLL selection for DP from the encoder .compute_config() so MST should do the same since it (re)computes the main link config for each stream. And SKL and BXT handle DP via the .crtc_compute_clock() path, so nothing needed for them I suppose. Reviewed-by: Ville Syrj�l� > > commit 8504c74c7ae48b4b8ed1f1c0acf67482a7f45c93 > Author: Ander Conselvan de Oliveira > Date: Fri May 15 11:51:50 2015 +0300 > > drm/i915: Preserve ddi_pll_sel when allocating new pipe_config > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91628 > Cc: stable@vger.kernel.org > Cc: Timo Aaltonen > Cc: Luciano Coelho > Signed-off-by: Ander Conselvan de Oliveira > --- > drivers/gpu/drm/i915/intel_dp.c | 2 +- > drivers/gpu/drm/i915/intel_dp_mst.c | 5 +++++ > drivers/gpu/drm/i915/intel_drv.h | 1 + > 3 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 9e90a2b..393aed0 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -1190,7 +1190,7 @@ skl_edp_set_pll_config(struct intel_crtc_state *pipe_config) > pipe_config->dpll_hw_state.ctrl1 = ctrl1; > } > > -static void > +void > hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config) > { > memset(&pipe_config->dpll_hw_state, 0, > diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c > index ebf2054..677d70e 100644 > --- a/drivers/gpu/drm/i915/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/intel_dp_mst.c > @@ -33,6 +33,7 @@ > static bool intel_dp_mst_compute_config(struct intel_encoder *encoder, > struct intel_crtc_state *pipe_config) > { > + struct drm_device *dev = encoder->base.dev; > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); > struct intel_digital_port *intel_dig_port = intel_mst->primary; > struct intel_dp *intel_dp = &intel_dig_port->dp; > @@ -88,6 +89,10 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder, > &pipe_config->dp_m_n); > > pipe_config->dp_m_n.tu = slots; > + > + if (IS_HASWELL(dev) || IS_BROADWELL(dev)) > + hsw_dp_set_ddi_pll_sel(pipe_config); > + > return true; > > } > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index c61ba47..458f56c 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1209,6 +1209,7 @@ void intel_edp_drrs_disable(struct intel_dp *intel_dp); > void intel_edp_drrs_invalidate(struct drm_device *dev, > unsigned frontbuffer_bits); > void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits); > +void hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config); > > /* intel_dp_mst.c */ > int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id); > -- > 2.4.3 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrj�l� Intel OTC