From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 3/4] drm/i915: Enable/disable TMDS output buffers in DP++ adaptor as needed Date: Wed, 4 May 2016 14:49:59 +0300 Message-ID: <20160504114959.GP4329@intel.com> References: <1462216105-20881-1-git-send-email-ville.syrjala@linux.intel.com> <1462216105-20881-4-git-send-email-ville.syrjala@linux.intel.com> <5729CB4A.90607@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <5729CB4A.90607@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Shashank" Cc: Paulo Zanoni , Daniel Vetter , intel-gfx@lists.freedesktop.org, Tore Anderson , stable@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXkgMDQsIDIwMTYgYXQgMDM6NDM6MzBQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiAKPiBPbiA1LzMvMjAxNiAxMjozOCBBTSwgdmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20gd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+ID4KPiA+IFRvIHNhdmUgYSBiaXQgb2YgcG93ZXIsIGxldCdzIHRy eSB0byB0dXJuIG9mZiB0aGUgVE1EUyBvdXRwdXQgYnVmZmVycwo+ID4gaW4gRFArKyBhZGFwdG9y cyB3aGVuIHdlJ3JlIG5vdCBkcml2aW5nIHRoZSBwb3J0Lgo+ID4KPiA+IHYyOiBMZXQncyBub3Qg Zm9yZ2V0IERESSwgdG9zcyBpbiBhIGRlYnVnIG1lc3NhZ2Ugd2hpbGUgYXQgaXQKPiA+IHYzOiBK dXN0IGRvIHRoZSBUTURTIG91dHB1dCBjb250cm9sIGJhc2VkIG9uIGFkYXB0b3IgdHlwZS4gV2l0 aCB0aGUKPiA+ICAgICAgaGVscGVyIGdldHRpbmcgcGFzc2VkIHRoZSB0eXBlLCB3ZSB3b3VsZG4n dCBhY3R1YWxseSBoYXZlIHRvCj4gPiAgICAgIGNoZWNrIGF0IGFsbCBpbiB0aGUgZHJpdmVyLCBi dXQgdGhlIGNoZWNrIGVsaW1pbmF0ZXMgdGhlIGRlYnVnCj4gPiAgICAgIG91dHB1dCBtb3JlIGhv bmVzdAo+ID4KPiA+IENjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCj4gPiBDYzogVG9yZSBBbmRl cnNvbiA8dG9yZUBmdWQubm8+Cj4gPiBDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBp bnRlbC5jb20+Cj4gPiBDYzogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwu Y29tPgo+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiBT aWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+ID4gLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICB8IDEy ICsrKysrKysrKysrKwo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAg MSArCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyB8IDIwICsrKysrKysr KysrKysrKysrKysrCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQo+ID4K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBpbmRleCA0MjJlYzgxZWY1OWIuLmEzNjAw NzA0ZTZkNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gQEAgLTE2MDEs NiArMTYwMSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiA+ICAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxf ZGRpX2dldF9lbmNvZGVyX3BvcnQoaW50ZWxfZW5jb2Rlcik7Cj4gPiAgIAlpbnQgdHlwZSA9IGlu dGVsX2VuY29kZXItPnR5cGU7Cj4gPgo+ID4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERN SSkgewo+IGhvdyB0byBoYW5kbGUgdHlwZTIgYWN0aXZlIGFkYXB0ZXJzIGhlcmUsIHdoaWNoIGNh biBzaG93IHR5cGUgPSBEUCA/CgpUaGUgZHVhbCBtb2RlIGNvbmNlcHQgc2hvdWxkbid0IGFwcGx5 IHRvIGFjdGl2ZSBhZGFwdGVycy4gVGhvc2UsIGFzIHlvdQpzYXksIGFwcGVhciBhcyBEUCBhbmQg c28gd2lsbCBiZSBoYW5kbGVkIGFzIGlmIHRoZXkgd2VyZSBuYXRpdmUgRFAgc2lua3MKbW9yZSBv ciBsZXNzLgoKT3IgYXJlIHlvdSBhd2FyZSBvZiBhY3RpdmUgRFAgZG9uZ2xlcyB0aGF0IGFsc28g aW1wbGVtZW50IHRoZSBkdWFsIG1vZGUKc3RhbmRhdGQ/IEFwYXJ0IGZyb20gTFNQQ09OIG9mIGNv dXJzZS4gQWN0dWFsbHkgSSdtIG5vdCBzdXJlIGhvdyBMU1BDT04Kd2lsbCBoYW5kbGUgdGhpcy4g SWYgd2UgZHJpdmUgaXQgaW4gUENPTiBtb2RlLCB3b3VsZCBpdCBzdGlsbCByZXNwZWN0CnRoZSBk dWFsIG1vZGUgcmVnaXN0ZXIgc2V0dGluZ3MsIGluY2x1ZGluZyB0aGUgVE1EUyBPRSMgc3RhdGU/ Cgo+ID4gKwkJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRt aShlbmNvZGVyKTsKPiA+ICsKPiA+ICsJCWludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRw dXQoaW50ZWxfaGRtaSwgdHJ1ZSk7Cj4gPiArCX0KPiA+ICsKPiA+ICAgCWludGVsX3ByZXBhcmVf ZGRpX2J1ZmZlcihpbnRlbF9lbmNvZGVyKTsKPiA+Cj4gPiAgIAlpZiAodHlwZSA9PSBJTlRFTF9P VVRQVVRfRURQKSB7Cj4gPiBAQCAtMTY2Nyw2ICsxNjczLDEyIEBAIHN0YXRpYyB2b2lkIGludGVs X2RkaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4g PiAgIAkJCQkJRFBMTF9DVFJMMl9ERElfQ0xLX09GRihwb3J0KSkpOwo+ID4gICAJZWxzZSBpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KQo+ID4gICAJCUk5MTVfV1JJVEUoUE9SVF9DTEtfU0VM KHBvcnQpLCBQT1JUX0NMS19TRUxfTk9ORSk7Cj4gPiArCj4gPiArCWlmICh0eXBlID09IElOVEVM X09VVFBVVF9IRE1JKSB7Cj4gU2FtZSBhcyBhYm92ZS4KPiAKPiBSZWdhcmRzCj4gU2hhc2hhbmsK PiA+ICsJCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWko ZW5jb2Rlcik7Cj4gPiArCj4gPiArCQlpbnRlbF9kcF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0 KGludGVsX2hkbWksIGZhbHNlKTsKPiA+ICsJfQo+ID4gICB9Cj4gPgo+ID4gICBzdGF0aWMgdm9p ZCBpbnRlbF9lbmFibGVfZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGluZGV4IGU5NGQxOGZiMmZmMS4uZGJjYjgw YzcwZTJlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMTQxOSw2 ICsxNDE5LDcgQEAgdm9pZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gICBzdHJ1Y3QgaW50ZWxfaGRtaSAqZW5j X3RvX2ludGVsX2hkbWkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+ICAgYm9vbCBp bnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ID4gICAJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiA+ ICt2b2lkIGludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoc3RydWN0IGludGVsX2hk bWkgKmhkbWksIGJvb2wgZW5hYmxlKTsKPiA+Cj4gPgo+ID4gICAvKiBpbnRlbF9sdmRzLmMgKi8K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+IGluZGV4IDMxY2ExMTEzNDI5NC4uYzRk OTNlNmI0YmVkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRt aS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+IEBAIC04 MzYsNiArODM2LDIyIEBAIHN0YXRpYyB2b2lkIGhzd19zZXRfaW5mb2ZyYW1lcyhzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIsCj4gPiAgIAlpbnRlbF9oZG1pX3NldF9oZG1pX2luZm9mcmFtZShl bmNvZGVyLCBhZGp1c3RlZF9tb2RlKTsKPiA+ICAgfQo+ID4KPiA+ICt2b2lkIGludGVsX2RwX2R1 YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoc3RydWN0IGludGVsX2hkbWkgKmhkbWksIGJvb2wgZW5h YmxlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShpbnRlbF9oZG1pX3RvX2RldihoZG1pKSk7Cj4gPiArCXN0cnVjdCBpMmNfYWRhcHRlciAq YWRhcHRlciA9Cj4gPiArCQlpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihkZXZfcHJpdiwgaGRtaS0+ ZGRjX2J1cyk7Cj4gPiArCj4gPiArCWlmIChoZG1pLT5kcF9kdWFsX21vZGUudHlwZSA8IERSTV9E UF9EVUFMX01PREVfVFlQRTJfRFZJKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlEUk1fREVC VUdfS01TKCIlcyBEUCBkdWFsIG1vZGUgYWRhcHRvciBUTURTIG91dHB1dFxuIiwKPiA+ICsJCSAg ICAgIGVuYWJsZSA/ICJFbmFibGluZyIgOiAiRGlzYWJsaW5nIik7Cj4gPiArCj4gPiArCWRybV9k cF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0KGhkbWktPmRwX2R1YWxfbW9kZS50eXBlLAo+ID4g KwkJCQkJIGFkYXB0ZXIsIGVuYWJsZSk7Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgdm9pZCBp bnRlbF9oZG1pX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPiAgIHsK PiA+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiA+IEBA IC04NDUsNiArODYxLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9wcmVwYXJlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g PiAgIAl1MzIgaGRtaV92YWw7Cj4gPgo+ID4gKwlpbnRlbF9kcF9kdWFsX21vZGVfc2V0X3RtZHNf b3V0cHV0KGludGVsX2hkbWksIHRydWUpOwo+ID4gKwo+ID4gICAJaGRtaV92YWwgPSBTRFZPX0VO Q09ESU5HX0hETUk7Cj4gPiAgIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2KSAmJiBjcnRjLT5jb25m aWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gPiAgIAkJaGRtaV92YWwgfD0gSERNSV9DT0xPUl9S QU5HRV8xNl8yMzU7Cj4gPiBAQCAtMTE0Miw2ICsxMTYwLDggQEAgc3RhdGljIHZvaWQgaW50ZWxf ZGlzYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gICAJfQo+ID4K PiA+ICAgCWludGVsX2hkbWktPnNldF9pbmZvZnJhbWVzKCZlbmNvZGVyLT5iYXNlLCBmYWxzZSwg TlVMTCk7Cj4gPiArCj4gPiArCWludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoaW50 ZWxfaGRtaSwgZmFsc2UpOwo+ID4gICB9Cj4gPgo+ID4gICBzdGF0aWMgdm9pZCBnNHhfZGlzYWJs ZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4KCi0tIApWaWxsZSBTeXJq w6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com ([134.134.136.65]:63116 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750714AbcEDLuG (ORCPT ); Wed, 4 May 2016 07:50:06 -0400 Date: Wed, 4 May 2016 14:49:59 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: "Sharma, Shashank" Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, stable@vger.kernel.org, Tore Anderson , Paulo Zanoni , Daniel Vetter Subject: Re: [PATCH v3 3/4] drm/i915: Enable/disable TMDS output buffers in DP++ adaptor as needed Message-ID: <20160504114959.GP4329@intel.com> References: <1462216105-20881-1-git-send-email-ville.syrjala@linux.intel.com> <1462216105-20881-4-git-send-email-ville.syrjala@linux.intel.com> <5729CB4A.90607@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <5729CB4A.90607@intel.com> Sender: stable-owner@vger.kernel.org List-ID: On Wed, May 04, 2016 at 03:43:30PM +0530, Sharma, Shashank wrote: > > On 5/3/2016 12:38 AM, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrj�l� > > > > To save a bit of power, let's try to turn off the TMDS output buffers > > in DP++ adaptors when we're not driving the port. > > > > v2: Let's not forget DDI, toss in a debug message while at it > > v3: Just do the TMDS output control based on adaptor type. With the > > helper getting passed the type, we wouldn't actually have to > > check at all in the driver, but the check eliminates the debug > > output more honest > > > > Cc: stable@vger.kernel.org > > Cc: Tore Anderson > > Cc: Paulo Zanoni > > Cc: Shashank Sharma > > Cc: Daniel Vetter > > Signed-off-by: Ville Syrj�l� > > --- > > drivers/gpu/drm/i915/intel_ddi.c | 12 ++++++++++++ > > drivers/gpu/drm/i915/intel_drv.h | 1 + > > drivers/gpu/drm/i915/intel_hdmi.c | 20 ++++++++++++++++++++ > > 3 files changed, 33 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > > index 422ec81ef59b..a3600704e6d4 100644 > > --- a/drivers/gpu/drm/i915/intel_ddi.c > > +++ b/drivers/gpu/drm/i915/intel_ddi.c > > @@ -1601,6 +1601,12 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) > > enum port port = intel_ddi_get_encoder_port(intel_encoder); > > int type = intel_encoder->type; > > > > + if (type == INTEL_OUTPUT_HDMI) { > how to handle type2 active adapters here, which can show type = DP ? The dual mode concept shouldn't apply to active adapters. Those, as you say, appear as DP and so will be handled as if they were native DP sinks more or less. Or are you aware of active DP dongles that also implement the dual mode standatd? Apart from LSPCON of course. Actually I'm not sure how LSPCON will handle this. If we drive it in PCON mode, would it still respect the dual mode register settings, including the TMDS OE# state? > > + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); > > + > > + intel_dp_dual_mode_set_tmds_output(intel_hdmi, true); > > + } > > + > > intel_prepare_ddi_buffer(intel_encoder); > > > > if (type == INTEL_OUTPUT_EDP) { > > @@ -1667,6 +1673,12 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder) > > DPLL_CTRL2_DDI_CLK_OFF(port))); > > else if (INTEL_INFO(dev)->gen < 9) > > I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE); > > + > > + if (type == INTEL_OUTPUT_HDMI) { > Same as above. > > Regards > Shashank > > + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); > > + > > + intel_dp_dual_mode_set_tmds_output(intel_hdmi, false); > > + } > > } > > > > static void intel_enable_ddi(struct intel_encoder *intel_encoder) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > > index e94d18fb2ff1..dbcb80c70e2e 100644 > > --- a/drivers/gpu/drm/i915/intel_drv.h > > +++ b/drivers/gpu/drm/i915/intel_drv.h > > @@ -1419,6 +1419,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, > > struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); > > bool intel_hdmi_compute_config(struct intel_encoder *encoder, > > struct intel_crtc_state *pipe_config); > > +void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable); > > > > > > /* intel_lvds.c */ > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > > index 31ca11134294..c4d93e6b4bed 100644 > > --- a/drivers/gpu/drm/i915/intel_hdmi.c > > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > > @@ -836,6 +836,22 @@ static void hsw_set_infoframes(struct drm_encoder *encoder, > > intel_hdmi_set_hdmi_infoframe(encoder, adjusted_mode); > > } > > > > +void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable) > > +{ > > + struct drm_i915_private *dev_priv = to_i915(intel_hdmi_to_dev(hdmi)); > > + struct i2c_adapter *adapter = > > + intel_gmbus_get_adapter(dev_priv, hdmi->ddc_bus); > > + > > + if (hdmi->dp_dual_mode.type < DRM_DP_DUAL_MODE_TYPE2_DVI) > > + return; > > + > > + DRM_DEBUG_KMS("%s DP dual mode adaptor TMDS output\n", > > + enable ? "Enabling" : "Disabling"); > > + > > + drm_dp_dual_mode_set_tmds_output(hdmi->dp_dual_mode.type, > > + adapter, enable); > > +} > > + > > static void intel_hdmi_prepare(struct intel_encoder *encoder) > > { > > struct drm_device *dev = encoder->base.dev; > > @@ -845,6 +861,8 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder) > > const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode; > > u32 hdmi_val; > > > > + intel_dp_dual_mode_set_tmds_output(intel_hdmi, true); > > + > > hdmi_val = SDVO_ENCODING_HDMI; > > if (!HAS_PCH_SPLIT(dev) && crtc->config->limited_color_range) > > hdmi_val |= HDMI_COLOR_RANGE_16_235; > > @@ -1142,6 +1160,8 @@ static void intel_disable_hdmi(struct intel_encoder *encoder) > > } > > > > intel_hdmi->set_infoframes(&encoder->base, false, NULL); > > + > > + intel_dp_dual_mode_set_tmds_output(intel_hdmi, false); > > } > > > > static void g4x_disable_hdmi(struct intel_encoder *encoder) > > -- Ville Syrj�l� Intel OTC