From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v3 1/5] drm/i915: Move DP modeset retry work into intel_dp Date: Fri, 9 Mar 2018 16:32:27 -0500 Message-ID: <20180309213232.19855-1-lyude@redhat.com> References: <20180308232421.14049-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180308232421.14049-1-lyude@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: David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org V2hpbGUgaGF2aW5nIHRoZSBtb2Rlc2V0X3JldHJ5X3dvcmsgaW4gaW50ZWxfY29ubmVjdG9yIG1h a2VzIHNlbnNlIHdpdGgKU1NULCB0aGlzIHBhcmFkaWdtIGRvZXNuJ3QgbWFrZSBhIHdob2xlIHRv biBvZiBzZW5zZSB3aGVuIGl0IGNvbWVzIHRvCk1TVCBzaW5jZSB3ZSBoYXZlIHRvIGRlYWwgd2l0 aCBtdWx0aXBsZSBjb25uZWN0b3JzLiBJbiBtb3N0IGNhc2VzLCBpdCdzCm1vcmUgdXNlZnVsIHRv IGp1c3QgdXNlIHRoZSBpbnRlbF9kcCBzdHJ1Y3Qgc2luY2UgaXQgaW5kaWNhdGVzIHdoZXRoZXIK b3Igbm90IHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBNU1QgZGV2aWNlLCBhbG9uZyB3aXRoIGJlaW5n IGFibGUgdG8gZWFzaWx5CnRyYWNlIHRoZSBpbnRlbF9kcCBzdHJ1Y3QgYmFjayB0byBpdCdzIHJl c3BlY3RpdmUgY29ubmVjdG9yIChpZiB0aGVyZSBpcwphbnkpLiBTbywgbW92ZSB0aGUgbW9kZXNl dF9yZXRyeV93b3JrIGZ1bmN0aW9uIG91dCBvZiB0aGUKaW50ZWxfY29ubmVjdG9yIHN0cnVjdCBh bmQgaW50byBpbnRlbF9kcC4KClNpZ25lZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhh dC5jb20+ClJldmlld2VkLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwu Y29tPgpDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KQ2M6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CgpWMjoKIC0gUmVt b3ZlIGFjY2lkZW50YWwgZHVwbGljYXRlIG1vZGVzZXRfcmV0cnlfd29yayBpbiBpbnRlbF9jb25u ZWN0b3IKVjM6CiAtIEFsc28gY2hlY2sgYWdhaW5zdCBlRFAgaW4gaW50ZWxfaHBkX3BvbGxfZmlu aSgpIC0gbWRuYXZhcmUKU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgfCAy NSArKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jICAgICAgICAgICAgICAgfCAxMCArKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDYgKysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDMxIGlu c2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCBmNDI0ZmZmNDc3ZjYuLjNiN2ZhNDMwYTg0YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTUzOTQsMTYgKzE1Mzk0LDM3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2hwZF9wb2xsX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7CiAJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVy IGNvbm5faXRlcjsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcms7CisJaW50IGNvbm5fdHlwZTsK IAogCS8qIEtpbGwgYWxsIHRoZSB3b3JrIHRoYXQgbWF5IGhhdmUgYmVlbiBxdWV1ZWQgYnkgaHBk LiAqLwogCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7CiAJ Zm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKSB7Ci0J CWlmIChjb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yay5mdW5jKQotCQkJY2FuY2VsX3dvcmtf c3luYygmY29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5X3dvcmspOwogCQlpZiAoY29ubmVjdG9yLT5o ZGNwX3NoaW0pIHsKIAkJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmY29ubmVjdG9yLT5oZGNw X2NoZWNrX3dvcmspOwogCQkJY2FuY2VsX3dvcmtfc3luYygmY29ubmVjdG9yLT5oZGNwX3Byb3Bf d29yayk7CiAJCX0KKworCQljb25uX3R5cGUgPSBjb25uZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5 cGU7CisJCWlmIChjb25uX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCAmJgorCQkgICAg Y29ubl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkKKwkJCWNvbnRpbnVl OworCisJCWlmIChjb25uZWN0b3ItPm1zdF9wb3J0KSB7CisJCQl3b3JrID0gJmNvbm5lY3Rvci0+ bXN0X3BvcnQtPm1vZGVzZXRfcmV0cnlfd29yazsKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0KKwkJCQljb25uZWN0b3ItPmVuY29kZXI7CisJCQlz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOworCisJCQlpZiAoIWludGVsX2VuY29kZXIpCisJCQkJ Y29udGludWU7CisKKwkJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9lbmNvZGVy LT5iYXNlKTsKKwkJCXdvcmsgPSAmaW50ZWxfZHAtPm1vZGVzZXRfcmV0cnlfd29yazsKKwkJfQor CisJCWNhbmNlbF93b3JrX3N5bmMod29yayk7CiAJfQogCWRybV9jb25uZWN0b3JfbGlzdF9pdGVy X2VuZCgmY29ubl9pdGVyKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IDRkZDFiMjI4 N2RkNi4uNWFiZjBjOTU3MjVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTYyNjEsMTIg KzYyNjEsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCiAKIHN0YXRpYyB2b2lkIGludGVsX2RwX21vZGVzZXRfcmV0cnlf d29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7Ci0Jc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqaW50ZWxfY29ubmVjdG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7 CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2Yo KmludGVsX2RwKSwKKwkJCQkJCSBtb2Rlc2V0X3JldHJ5X3dvcmspOworCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsK IAotCWludGVsX2Nvbm5lY3RvciA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVsX2Nv bm5lY3RvciksCi0JCQkJICAgICAgIG1vZGVzZXRfcmV0cnlfd29yayk7Ci0JY29ubmVjdG9yID0g JmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVz XVxuIiwgY29ubmVjdG9yLT5iYXNlLmlkLAogCQkgICAgICBjb25uZWN0b3ItPm5hbWUpOwogCkBA IC02Mjk1LDcgKzYyOTMsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAlpbnQgdHlwZTsKIAogCS8qIEluaXRpYWxp emUgdGhlIHdvcmsgZm9yIG1vZGVzZXQgaW4gY2FzZSBvZiBsaW5rIHRyYWluIGZhaWx1cmUgKi8K LQlJTklUX1dPUksoJmludGVsX2Nvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrLAorCUlOSVRf V09SSygmaW50ZWxfZHAtPm1vZGVzZXRfcmV0cnlfd29yaywKIAkJICBpbnRlbF9kcF9tb2Rlc2V0 X3JldHJ5X3dvcmtfZm4pOwogCiAJaWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA8 IDEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWlu aW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKaW5k ZXggZjU5YjU5YmIwYTIxLi4yY2ZhNThjZTFmOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKQEAgLTM0MCw3ICszNDAsNyBAQCBpbnRlbF9kcF9z dGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCQkJCQkJICAgICBp bnRlbF9kcC0+bGlua19yYXRlLAogCQkJCQkJCSAgICAgaW50ZWxfZHAtPmxhbmVfY291bnQpKQog CQkJLyogU2NoZWR1bGUgYSBIb3RwbHVnIFVldmVudCB0byB1c2Vyc3BhY2UgdG8gc3RhcnQgbW9k ZXNldCAqLwotCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfY29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5 X3dvcmspOworCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPm1vZGVzZXRfcmV0cnlfd29yayk7 CiAJfSBlbHNlIHsKIAkJRFJNX0VSUk9SKCJbQ09OTkVDVE9SOiVkOiVzXSBMaW5rIFRyYWluaW5n IGZhaWxlZCBhdCBsaW5rIHJhdGUgPSAlZCwgbGFuZSBjb3VudCA9ICVkIiwKIAkJCSAgaW50ZWxf Y29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDgz ZTVjYTg4OWQ5Yy4uM2YxOWRjODA5OTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAt NDA2LDkgKzQwNiw2IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgewogCiAJc3RydWN0IGludGVs X2RwICptc3RfcG9ydDsKIAotCS8qIFdvcmsgc3RydWN0IHRvIHNjaGVkdWxlIGEgdWV2ZW50IG9u IGxpbmsgdHJhaW4gZmFpbHVyZSAqLwotCXN0cnVjdCB3b3JrX3N0cnVjdCBtb2Rlc2V0X3JldHJ5 X3dvcms7Ci0KIAljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3NoaW07CiAJc3Ry dWN0IG11dGV4IGhkY3BfbXV0ZXg7CiAJdWludDY0X3QgaGRjcF92YWx1ZTsgLyogcHJvdGVjdGVk IGJ5IGhkY3BfbXV0ZXggKi8KQEAgLTExMzUsNiArMTEzMiw5IEBAIHN0cnVjdCBpbnRlbF9kcCB7 CiAKIAkvKiBEaXNwbGF5cG9ydCBjb21wbGlhbmNlIHRlc3RpbmcgKi8KIAlzdHJ1Y3QgaW50ZWxf ZHBfY29tcGxpYW5jZSBjb21wbGlhbmNlOworCisJLyogV29yayBzdHJ1Y3QgdG8gc2NoZWR1bGUg YSB1ZXZlbnQgb24gbGluayB0cmFpbiBmYWlsdXJlICovCisJc3RydWN0IHdvcmtfc3RydWN0IG1v ZGVzZXRfcmV0cnlfd29yazsKIH07CiAKIHN0cnVjdCBpbnRlbF9sc3Bjb24gewotLSAKMi4xNC4z CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932342AbeCIVdH (ORCPT ); Fri, 9 Mar 2018 16:33:07 -0500 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:36898 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751211AbeCIVdG (ORCPT ); Fri, 9 Mar 2018 16:33:06 -0500 From: Lyude Paul To: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, Manasi Navare , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , David Airlie , linux-kernel@vger.kernel.org Subject: [PATCH v3 1/5] drm/i915: Move DP modeset retry work into intel_dp Date: Fri, 9 Mar 2018 16:32:27 -0500 Message-Id: <20180309213232.19855-1-lyude@redhat.com> In-Reply-To: <20180308232421.14049-1-lyude@redhat.com> References: <20180308232421.14049-1-lyude@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While having the modeset_retry_work in intel_connector makes sense with SST, this paradigm doesn't make a whole ton of sense when it comes to MST since we have to deal with multiple connectors. In most cases, it's more useful to just use the intel_dp struct since it indicates whether or not we're dealing with an MST device, along with being able to easily trace the intel_dp struct back to it's respective connector (if there is any). So, move the modeset_retry_work function out of the intel_connector struct and into intel_dp. Signed-off-by: Lyude Paul Reviewed-by: Manasi Navare Cc: Manasi Navare Cc: Ville Syrjälä V2: - Remove accidental duplicate modeset_retry_work in intel_connector V3: - Also check against eDP in intel_hpd_poll_fini() - mdnavare Signed-off-by: Lyude Paul --- drivers/gpu/drm/i915/intel_display.c | 25 +++++++++++++++++++++++-- drivers/gpu/drm/i915/intel_dp.c | 10 ++++------ drivers/gpu/drm/i915/intel_dp_link_training.c | 2 +- drivers/gpu/drm/i915/intel_drv.h | 6 +++--- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f424fff477f6..3b7fa430a84a 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -15394,16 +15394,37 @@ static void intel_hpd_poll_fini(struct drm_device *dev) { struct intel_connector *connector; struct drm_connector_list_iter conn_iter; + struct work_struct *work; + int conn_type; /* Kill all the work that may have been queued by hpd. */ drm_connector_list_iter_begin(dev, &conn_iter); for_each_intel_connector_iter(connector, &conn_iter) { - if (connector->modeset_retry_work.func) - cancel_work_sync(&connector->modeset_retry_work); if (connector->hdcp_shim) { cancel_delayed_work_sync(&connector->hdcp_check_work); cancel_work_sync(&connector->hdcp_prop_work); } + + conn_type = connector->base.connector_type; + if (conn_type != DRM_MODE_CONNECTOR_eDP && + conn_type != DRM_MODE_CONNECTOR_DisplayPort) + continue; + + if (connector->mst_port) { + work = &connector->mst_port->modeset_retry_work; + } else { + struct intel_encoder *intel_encoder = + connector->encoder; + struct intel_dp *intel_dp; + + if (!intel_encoder) + continue; + + intel_dp = enc_to_intel_dp(&intel_encoder->base); + work = &intel_dp->modeset_retry_work; + } + + cancel_work_sync(work); } drm_connector_list_iter_end(&conn_iter); } diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 4dd1b2287dd6..5abf0c95725a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -6261,12 +6261,10 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, static void intel_dp_modeset_retry_work_fn(struct work_struct *work) { - struct intel_connector *intel_connector; - struct drm_connector *connector; + struct intel_dp *intel_dp = container_of(work, typeof(*intel_dp), + modeset_retry_work); + struct drm_connector *connector = &intel_dp->attached_connector->base; - intel_connector = container_of(work, typeof(*intel_connector), - modeset_retry_work); - connector = &intel_connector->base; DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); @@ -6295,7 +6293,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, int type; /* Initialize the work for modeset in case of link train failure */ - INIT_WORK(&intel_connector->modeset_retry_work, + INIT_WORK(&intel_dp->modeset_retry_work, intel_dp_modeset_retry_work_fn); if (WARN(intel_dig_port->max_lanes < 1, diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c index f59b59bb0a21..2cfa58ce1f95 100644 --- a/drivers/gpu/drm/i915/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c @@ -340,7 +340,7 @@ intel_dp_start_link_train(struct intel_dp *intel_dp) intel_dp->link_rate, intel_dp->lane_count)) /* Schedule a Hotplug Uevent to userspace to start modeset */ - schedule_work(&intel_connector->modeset_retry_work); + schedule_work(&intel_dp->modeset_retry_work); } else { DRM_ERROR("[CONNECTOR:%d:%s] Link Training failed at link rate = %d, lane count = %d", intel_connector->base.base.id, diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 83e5ca889d9c..3f19dc80997f 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -406,9 +406,6 @@ struct intel_connector { struct intel_dp *mst_port; - /* Work struct to schedule a uevent on link train failure */ - struct work_struct modeset_retry_work; - const struct intel_hdcp_shim *hdcp_shim; struct mutex hdcp_mutex; uint64_t hdcp_value; /* protected by hdcp_mutex */ @@ -1135,6 +1132,9 @@ struct intel_dp { /* Displayport compliance testing */ struct intel_dp_compliance compliance; + + /* Work struct to schedule a uevent on link train failure */ + struct work_struct modeset_retry_work; }; struct intel_lspcon { -- 2.14.3