From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCHv4 3/3] drm/i915: add DisplayPort CEC-Tunneling-over-AUX support Date: Mon, 18 Sep 2017 16:05:31 +0300 Message-ID: <20170918130531.GW4914@intel.com> References: <20170916141726.4921-1-hverkuil@xs4all.nl> <20170916141726.4921-4-hverkuil@xs4all.nl> 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 ESMTPS id B68C46E0BC for ; Mon, 18 Sep 2017 13:05:44 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170916141726.4921-4-hverkuil@xs4all.nl> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans Verkuil Cc: Daniel Vetter , Hans Verkuil , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBTZXAgMTYsIDIwMTcgYXQgMDQ6MTc6MjZQTSArMDIwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IEZyb206IEhhbnMgVmVya3VpbCA8aGFucy52ZXJrdWlsQGNpc2NvLmNvbT4KPiAKPiBJ bXBsZW1lbnQgc3VwcG9ydCBmb3IgdGhpcyBEaXNwbGF5UG9ydCBmZWF0dXJlLgo+IAo+IFRoZSBj ZWMgZGV2aWNlIGlzIGNyZWF0ZWQgd2hlbmV2ZXIgaXQgZGV0ZWN0cyBhbiBhZGFwdGVyIHRoYXQK PiBoYXMgdGhpcyBmZWF0dXJlLiBJdCBpcyBvbmx5IHJlbW92ZWQgd2hlbiBhIG5ldyBhZGFwdGVy IGlzIGNvbm5lY3RlZAo+IHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzLiBJZiBhIG5ldyBhZGFw dGVyIGlzIGNvbm5lY3RlZCB0aGF0IGhhcwo+IGRpZmZlcmVudCBwcm9wZXJ0aWVzIHRoYW4gdGhl IHByZXZpb3VzIG9uZSwgdGhlbiB0aGUgb2xkIGNlYyBkZXZpY2UgaXMKPiB1bnJlZ2lzdGVyZWQg YW5kIGEgbmV3IG9uZSBpcyByZWdpc3RlcmVkIHRvIHJlcGxhY2UgdGhlIG9sZCBvbmUuCj4gCj4g U2lnbmVkLW9mZi1ieTogSGFucyBWZXJrdWlsIDxoYW5zLnZlcmt1aWxAY2lzY28uY29tPgo+IFRl c3RlZC1ieTogQ2FybG9zIFNhbnRhIDxjYXJsb3Muc2FudGFAaW50ZWwuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIHwgMTggKysrKysrKysrKysrKystLS0tCj4g IDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDY0ZmE3NzRjODU1Yi4uZmRiODUzZDJjNDU4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTMyLDYgKzMyLDcgQEAKPiAgI2luY2x1 ZGUgPGxpbnV4L25vdGlmaWVyLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KPiAgI2lu Y2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KPiArI2luY2x1ZGUgPG1lZGlhL2NlYy5oPgo+ICAjaW5j bHVkZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gQEAgLTE0NDksNiArMTQ1MCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2F1eF9yZWdfaW5pdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICBz dGF0aWMgdm9pZAo+ICBpbnRlbF9kcF9hdXhfZmluaShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICB7Cj4gKwljZWNfdW5yZWdpc3Rlcl9hZGFwdGVyKGludGVsX2RwLT5hdXguY2VjX2FkYXAp Owo+ICAJa2ZyZWUoaW50ZWxfZHAtPmF1eC5uYW1lKTsKPiAgfQo+ICAKPiBAQCAtNDU4Nyw2ICs0 NTg5LDcgQEAgaW50ZWxfZHBfc2V0X2VkaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAg CWludGVsX2Nvbm5lY3Rvci0+ZGV0ZWN0X2VkaWQgPSBlZGlkOwo+ICAKPiAgCWludGVsX2RwLT5o YXNfYXVkaW8gPSBkcm1fZGV0ZWN0X21vbml0b3JfYXVkaW8oZWRpZCk7Cj4gKwljZWNfc19waHlz X2FkZHJfZnJvbV9lZGlkKGludGVsX2RwLT5hdXguY2VjX2FkYXAsIGVkaWQpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZAo+IEBAIC00NTk2LDYgKzQ1OTksNyBAQCBpbnRlbF9kcF91bnNldF9lZGlk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAo+ICAJa2ZyZWUoaW50ZWxfY29ubmVjdG9y LT5kZXRlY3RfZWRpZCk7Cj4gIAlpbnRlbF9jb25uZWN0b3ItPmRldGVjdF9lZGlkID0gTlVMTDsK PiArCWNlY19waHlzX2FkZHJfaW52YWxpZGF0ZShpbnRlbF9kcC0+YXV4LmNlY19hZGFwKTsKPiAg Cj4gIAlpbnRlbF9kcC0+aGFzX2F1ZGlvID0gZmFsc2U7Cj4gIH0KPiBAQCAtNDYxNiwxMyArNDYy MCwxNyBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVs X2Nvbm5lY3RvcikKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHRvX2k5MTUoZGV2KSwgaW50 ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ICAKPiAgCS8qIENhbid0IGRpc2Nvbm5lY3QgZURQ LCBidXQgeW91IGNhbiBjbG9zZSB0aGUgbGlkLi4uICovCj4gLQlpZiAoaXNfZWRwKGludGVsX2Rw KSkKPiArCWlmIChpc19lZHAoaW50ZWxfZHApKSB7Cj4gIAkJc3RhdHVzID0gZWRwX2RldGVjdChp bnRlbF9kcCk7Cj4gLQllbHNlIGlmIChpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHRvX2k5 MTUoZGV2KSwKPiAtCQkJCQkgICAgICBkcF90b19kaWdfcG9ydChpbnRlbF9kcCkpKQo+ICsJfSBl bHNlIGlmIChpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHRvX2k5MTUoZGV2KSwKPiArCQkJ CQkJZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApKSkgewo+ICAJCXN0YXR1cyA9IGludGVsX2RwX2Rl dGVjdF9kcGNkKGludGVsX2RwKTsKPiAtCWVsc2UKPiArCQlpZiAoc3RhdHVzID09IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkKQo+ICsJCQlkcm1fZHBfY2VjX2NvbmZpZ3VyZV9hZGFwdGVyKCZp bnRlbF9kcC0+YXV4LAo+ICsJCQkJICAgICBpbnRlbF9kcC0+YXV4Lm5hbWUsIGRldi0+ZGV2KTsK ClRoaXMgaXMgY2x1dHRlcmluZyB1cCB0aGUgY29kZSBhIGJpdC4gTWF5YmUgZG8gdGhpcyBjYWxs IHNvbWV3aGVyZQphcm91bmQgdGhlIGludGVsX2RwX2NvbmZpZ3VyZV9tc3QoKSBjYWxsIGluc3Rl YWQgc2luY2UgdGhhdCBzZWVtcyB0byBiZQp0aGUgcGxhY2Ugd2hlcmUgd2Ugc3RhcnQgdG8gZG8g Y2hhbmdlcyB0byBleHRlcm5hbGx5IHZpc2libGUgc3RhdGUuCgpBY3R1YWxseSwgZG8gd2Ugd2Fu dCB0byByZWdpc3RlciBjZWMgYWRhcHRlcnMgZm9yIE1TVCBkZXZpY2VzPwoKQW5kIHNob3VsZG4n dCB3ZSBjYWxsIHRoaXMgcmVnYXJkbGVzcyBvZiB0aGUgY29ubmVjdG9yIHN0YXRlIHNvIHRoYXQK dGhlIGNlYyBhZGFwdGVyIGdldHMgdW5yZWdpc3RlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBkaXNj b25uZWN0ZWQ/Cgo+ICsJfSBlbHNlIHsKPiAgCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rp c2Nvbm5lY3RlZDsKPiArCX0KPiAgCj4gIAlpZiAoc3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNf ZGlzY29ubmVjdGVkKSB7Cj4gIAkJbWVtc2V0KCZpbnRlbF9kcC0+Y29tcGxpYW5jZSwgMCwgc2l6 ZW9mKGludGVsX2RwLT5jb21wbGlhbmNlKSk7Cj4gQEAgLTUwMTEsNiArNTAxOSw4IEBAIGludGVs X2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwg Ym9vbCBsb25nX2hwZCkKPiAgCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwg aW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ICAKPiArCWRybV9kcF9jZWNfaXJxKCZpbnRl bF9kcC0+YXV4KTsKPiArCj4gIAlpZiAoaW50ZWxfZHAtPmlzX21zdCkgewo+ICAJCWlmIChpbnRl bF9kcF9jaGVja19tc3Rfc3RhdHVzKGludGVsX2RwKSA9PSAtRUlOVkFMKSB7Cj4gIAkJCS8qCj4g LS0gCj4gMi4xNC4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mga02.intel.com ([134.134.136.20]:36173 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751492AbdIRNFt (ORCPT ); Mon, 18 Sep 2017 09:05:49 -0400 Date: Mon, 18 Sep 2017 16:05:31 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Hans Verkuil Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter , Sean Paul , Hans Verkuil Subject: Re: [PATCHv4 3/3] drm/i915: add DisplayPort CEC-Tunneling-over-AUX support Message-ID: <20170918130531.GW4914@intel.com> References: <20170916141726.4921-1-hverkuil@xs4all.nl> <20170916141726.4921-4-hverkuil@xs4all.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170916141726.4921-4-hverkuil@xs4all.nl> Sender: linux-media-owner@vger.kernel.org List-ID: On Sat, Sep 16, 2017 at 04:17:26PM +0200, Hans Verkuil wrote: > From: Hans Verkuil > > Implement support for this DisplayPort feature. > > The cec device is created whenever it detects an adapter that > has this feature. It is only removed when a new adapter is connected > that does not support this. If a new adapter is connected that has > different properties than the previous one, then the old cec device is > unregistered and a new one is registered to replace the old one. > > Signed-off-by: Hans Verkuil > Tested-by: Carlos Santa > --- > drivers/gpu/drm/i915/intel_dp.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 64fa774c855b..fdb853d2c458 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -32,6 +32,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -1449,6 +1450,7 @@ static void intel_aux_reg_init(struct intel_dp *intel_dp) > static void > intel_dp_aux_fini(struct intel_dp *intel_dp) > { > + cec_unregister_adapter(intel_dp->aux.cec_adap); > kfree(intel_dp->aux.name); > } > > @@ -4587,6 +4589,7 @@ intel_dp_set_edid(struct intel_dp *intel_dp) > intel_connector->detect_edid = edid; > > intel_dp->has_audio = drm_detect_monitor_audio(edid); > + cec_s_phys_addr_from_edid(intel_dp->aux.cec_adap, edid); > } > > static void > @@ -4596,6 +4599,7 @@ intel_dp_unset_edid(struct intel_dp *intel_dp) > > kfree(intel_connector->detect_edid); > intel_connector->detect_edid = NULL; > + cec_phys_addr_invalidate(intel_dp->aux.cec_adap); > > intel_dp->has_audio = false; > } > @@ -4616,13 +4620,17 @@ intel_dp_long_pulse(struct intel_connector *intel_connector) > intel_display_power_get(to_i915(dev), intel_dp->aux_power_domain); > > /* Can't disconnect eDP, but you can close the lid... */ > - if (is_edp(intel_dp)) > + if (is_edp(intel_dp)) { > status = edp_detect(intel_dp); > - else if (intel_digital_port_connected(to_i915(dev), > - dp_to_dig_port(intel_dp))) > + } else if (intel_digital_port_connected(to_i915(dev), > + dp_to_dig_port(intel_dp))) { > status = intel_dp_detect_dpcd(intel_dp); > - else > + if (status == connector_status_connected) > + drm_dp_cec_configure_adapter(&intel_dp->aux, > + intel_dp->aux.name, dev->dev); This is cluttering up the code a bit. Maybe do this call somewhere around the intel_dp_configure_mst() call instead since that seems to be the place where we start to do changes to externally visible state. Actually, do we want to register cec adapters for MST devices? And shouldn't we call this regardless of the connector state so that the cec adapter gets unregistered when the device is disconnected? > + } else { > status = connector_status_disconnected; > + } > > if (status == connector_status_disconnected) { > memset(&intel_dp->compliance, 0, sizeof(intel_dp->compliance)); > @@ -5011,6 +5019,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) > > intel_display_power_get(dev_priv, intel_dp->aux_power_domain); > > + drm_dp_cec_irq(&intel_dp->aux); > + > if (intel_dp->is_mst) { > if (intel_dp_check_mst_status(intel_dp) == -EINVAL) { > /* > -- > 2.14.1 -- Ville Syrjälä Intel OTC