From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko =?ISO-8859-1?Q?St=FCbner?= Subject: Re: [PATCH v10 0/17] Add Analogix Core Display Port Driver Date: Tue, 08 Dec 2015 16:33:39 +0100 Message-ID: <1982691.ZDuzTFTUUe@diego> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Yakir Yang , Thierry Reding Cc: Krzysztof Kozlowski , Seung-Woo Kim , dri-devel@lists.freedesktop.org, Andrzej Hajda , Gustavo Padovan , linux-samsung-soc@vger.kernel.org, Russell King , linux-rockchip@lists.infradead.org, Kishon Vijay Abraham I , javier@osg.samsung.com, devicetree@vger.kernel.org, Rob Herring , linux-arm-kernel@lists.infradead.org, Jingoo Han , emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Kyungmin Park , ajaynumb@gmail.com, Andy Yan List-Id: linux-rockchip.vger.kernel.org SGkgWWFraXIsCgpBbSBNb250YWcsIDcuIERlemVtYmVyIDIwMTUsIDE0OjM3OjE5IHNjaHJpZWIg WWFraXIgWWFuZzoKPiAgICBUaGUgU2Ftc3VuZyBFeHlub3MgZURQIGNvbnRyb2xsZXIgYW5kIFJv Y2tjaGlwIFJLMzI4OCBlRFAgY29udHJvbGxlcgo+IHNoYXJlIHRoZSBzYW1lIElQLCBzbyBhIGxv dCBvZiBwYXJ0cyBjYW4gYmUgcmUtdXNlZC4gSSBzcGxpdCB0aGUgY29tbW9uCj4gY29kZSBpbnRv IGJyaWRnZSBkaXJlY3RvcnksIHRoZW4gcmszMjg4IGFuZCBleHlub3Mgb25seSBuZWVkIHRvIGtl ZXAKPiBzb21lIHBsYXRmb3JtIGNvZGUuIENhdXNlIEkgY2FuJ3QgZmluZCB0aGUgZXhhY3QgSVAg bmFtZSBvZiBleHlub3MgZHAKPiBjb250cm9sbGVyLCBzbyBJIGRlY2lkZSB0byBuYW1lIGRwIGNv cmUgZHJpdmVyIHdpdGggImFuYWxvZ2l4IiB3aGljaCBJCj4gZmluZCBpbiByazMyODggZURQIFRS TQoKWy4uLl0KCj4gQ2hhbmdlcyBpbiB2MTA6Cj4gLSBDb3JyZWN0IHRoZSBST0NLQ0hJUF9BTkFM T0dJWF9EUCBpbmRlbnRhdGlvbiBpbiBLY29uZmlnIHRvIHRhYnMgaGVyZQo+IChIZWlrbykgLSBG aXggdGhlIHdyb25nIG1hY3JvIHZhbHVlIG9mCj4gR1JGX0VEUF9SRUZfQ0xLX1NFTF9JTlRFUl9I SVdPUkRfTUFTSyBCSVQoNCkgLT4gQklUKDIwKQo+IC0gUmVtb3ZlIHRoZSBzdXJwbHVzICJwbGF0 X2RhdGEiIGNoZWNrLiAoSGVpa28pCj4gLSAgICAgICBzd2l0Y2ggKGRwLT5wbGF0X2RhdGEgJiYg ZHAtPnBsYXRfZGF0YS0+ZGV2X3R5cGUpIHsKPiArICAgICAgIHN3aXRjaCAoZHAtPnBsYXRfZGF0 YS0+ZGV2X3R5cGUpIHsKPiAtIFJldmVydCBwYXJ0cyBvZiBHdXN0YXZvIFBhZG92YW4ncyBjaGFu Z2VzIGluIGNvbW1pdDoKPiAJZHJtL2V4eW5vczogZG8gbm90IHN0YXJ0IGVuYWJsaW5nIERQIGF0 IGJpbmQoKSBwaGFzZQo+ICAgQWRkIGRwIHBoeSBwb3dlcm9uIGZ1bmN0aW9uIGluIGJpbmQgdGlt ZS4KClRoZSBob3RwbHVnIGlzc3VlIGlzIHN0aWxsIHByZXNlbnQsIGJ1dCBJIHRoaW5rIEkgZm91 bmQgdGhlIGNhdXNlLiBXaGVuCnRoZSBmaXJzdCBkZXRlY3QgY2FsbCBoYXBwZW5zLCB0aGUgZGlz cGxheSBzaW1wbHkgaXMgc3RpbGwgb2ZmLiBJIGp1c3QgZGlkCnNvbWUgdmVyeSBiYXNpYyB0cmFj aW5nIFswXSBhbmQgaXQgc2VlbXMgdGhlIGRpc3BsYXkgc2ltcGx5IGlzIG5vdCBlbmFibGVkCndo ZW4gaXQgaXMgc3VwcG9zZWQgdG8gZ2V0IGRldGVjdGVkLgoKQW5kIGl0IHNlZW1zIGluamVjdGlu ZyBhIGRybV9wYW5lbF9wcmVwYXJlIGVhcmx5IGZvciBfdGVzdGluZ18gWzFdIHJlYWxseQpkaWQg bWFrZSB0aGUgaG90cGx1ZyB3b3JrIG9uIGJvdGggbXkgamVycnkgYW5kIG1pbm5pZS4KClNvIEkg Z3Vlc3Mgd2Ugc2hvdWxkIHNvbWVob3cgbWFrZSBzdXJlIHRoZSBwYW5lbCBpcyBhY3R1YWxseSBw b3dlcmVkIHdoZW4KZGV0ZWN0aW9uIGlzIHJ1bm5pbmcuIEFsdGhvdWdoIEknbSBub3Qgc3VyZSB5 ZXQsIGhvdyB0aGF0IHNob3VsZCBsb29rIGxpa2UuCgoKSW50dWl0aW9uIHN1Z2dlc3RzLCBtYWtp bmcgZHJtX3BhbmVsIGNhbGxzIG5lc3RhYmxlIChzaW1pbGFyIHRvCmNsa19wcmVwYXJlL3VucHJl cGFyZSwgZXRjKSBhbmQgc2ltcGx5IHdyYXBwaW5nIHRoZSBkZXRlY3Rpb24gY29kZQppbiBhIHBy ZXBhcmUtdW5wcmVwYXJlIGNhbGxzLCBidXQgSSdtIG5vdCBzdXJlIGlmIFRoaWVycnkgbWlnaHQg aGF2ZSBvdGhlcgppZGVhcyA7LSkKCgpBbHNvIG15ICJsb2ciIGJlbG93IHN1Z2dlc3RzIHNvbWUg c29ydCBvZiBtaXNtYXRjaCBiZXR3ZWVuCnByZXBhcmUvdW5wcmVwYXJlIGNhbGxzLCBhcyB0aGVy ZSBhcmUgYSBsb3QgbW9yZSBvZiB0aGUgcHJlcGFyZS1zaWRlLgoKCkFuZCB0aGUgbG9ja2luZyBp c3N1ZSBhbHNvIHNlZW1zIHRvIGJlIHN0aWxsIHRoZXJlIFsyXS4KCgpIZWlrbwoKClswXQpbICAg IDIuNzk3MzgzXSBhbmFsb2dpeF9kcF9yZXNldApbICAgIDIuODAwNzA5XSBhbmFsb2dpeF9kcF9p bml0X2hwZApbICAgIDIuODAzOTYwXSBhbmFsb2dpeF9kcF9pbml0X3ZpZGVvClsgICAgMi44MDc2 NTNdIHJvY2tjaGlwLWRybSBkaXNwbGF5LXN1YnN5c3RlbTogYm91bmQgZmY5NzAwMDAuZHAgKG9w cyByb2NrY2hpcF9kcF9jb21wb25lbnRfb3BzKQpbICAgIDIuODE3MTc2XSBbZHJtXSBTdXBwb3J0 cyB2YmxhbmsgdGltZXN0YW1wIGNhY2hpbmcgUmV2IDIgKDIxLjEwLjIwMTMpLgpbICAgIDIuODIz Nzk5XSBbZHJtXSBObyBkcml2ZXIgc3VwcG9ydCBmb3IgdmJsYW5rIHRpbWVzdGFtcCBxdWVyeS4K WyAgICAyLjgyOTk0N10gYW5hbG9naXhfZHBfZGV0ZWN0ClsgICAgMi44MzMwMTVdIGFuYWxvZ2l4 X2RwX2dldF9wbHVnX2luX3N0YXR1czogaHBkIHN0YXR1cyAwCi4uLgpbICAgIDIuODkzNDI1XSBh bmFsb2dpeF9kcF9nZXRfcGx1Z19pbl9zdGF0dXM6IGhwZCBzdGF0dXMgMApbICAgIDIuODkzNDU2 XSByb2NrY2hpcC1kcCBmZjk3MDAwMC5kcDogZmFpbGVkIHRvIGdldCBocGQgcGx1ZyBzdGF0dXMs IHRyeSB0byBmb3JjZSBocGQKWyAgICAyLjg5MzQ1OF0gYW5hbG9naXhfZHBfZm9yY2VfaHBkClsg ICAgMi44OTM0NjRdIGFuYWxvZ2l4X2RwX2dldF9wbHVnX2luX3N0YXR1czogaHBkIHN0YXR1cyAx MTIKWyAgICAyLjg5MzQ3MF0gcGFuZWxfc2ltcGxlX3ByZXBhcmUKWyAgICAyLjk1MjE4M10gcm9j a2NoaXAtZHAgZmY5NzAwMDAuZHA6IEVESUQgZGF0YSBkb2VzIG5vdCBpbmNsdWRlIGFueSBleHRl bnNpb25zLgpbICAgIDIuOTYxNzI3XSBwYW5lbF9zaW1wbGVfZ2V0X21vZGVzClsgICAgMy40MzIx NTRdIGFuYWxvZ2l4X2RwX2RldGVjdApbICAgIDMuNDMyMTU4XSBhbmFsb2dpeF9kcF9nZXRfcGx1 Z19pbl9zdGF0dXM6IGhwZCBzdGF0dXMgMTIwClsgICAgMy40MzIxNjBdIHBhbmVsX3NpbXBsZV9w cmVwYXJlClsgICAgMy40MzM3MzFdIHJvY2tjaGlwLWRwIGZmOTcwMDAwLmRwOiBFRElEIGRhdGEg ZG9lcyBub3QgaW5jbHVkZSBhbnkgZXh0ZW5zaW9ucy4KWyAgICAzLjQ0MzI2OF0gcGFuZWxfc2lt cGxlX2dldF9tb2RlcwpbICAgIDMuNDQ0NjY4XSBwYW5lbF9zaW1wbGVfcHJlcGFyZQpbICAgIDMu NDQ0NzU1XSBhbmFsb2dpeF9kcF9yZXNldApbICAgIDMuNDQ1MDc4XSBhbmFsb2dpeF9kcF9pbml0 X2hwZApbICAgIDMuNDQ1MDk2XSBwYW5lbF9zaW1wbGVfZGlzYWJsZQpbICAgIDMuNDU1MzQ5XSBh bmFsb2dpeF9kcF9pbml0X3ZpZGVvClsgICAgMy41NTgzMjNdIHJvY2tjaGlwLWRwIGZmOTcwMDAw LmRwOiBUaW1lb3V0IG9mIHZpZGVvIHN0cmVhbWNsayBvawpbICAgIDMuNTU4MzI2XSByb2NrY2hp cC1kcCBmZjk3MDAwMC5kcDogdW5hYmxlIHRvIGNvbmZpZyB2aWRlbwpbICAgIDMuNTU4MzI4XSBw YW5lbF9zaW1wbGVfZW5hYmxlClsgICAgMy41NzM5MTVdIGFuYWxvZ2l4X2RwX2RldGVjdApbICAg IDMuNTczOTE5XSBhbmFsb2dpeF9kcF9nZXRfcGx1Z19pbl9zdGF0dXM6IGhwZCBzdGF0dXMgNzIK WyAgICAzLjU3MzkyMV0gcGFuZWxfc2ltcGxlX3ByZXBhcmUKCgpbMV0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLmMKaW5kZXggMzk5MDk1MS4uMGMy ZGNhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJv Y2tjaGlwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tj aGlwLmMKQEAgLTM5OSw2ICszOTksOCBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKICAgICAgICBkcC0+cGxhdF9kYXRhLnBhbmVs ID0gcGFuZWw7CiAKK2RybV9wYW5lbF9wcmVwYXJlKGRwLT5wbGF0X2RhdGEucGFuZWwpOworCiAg ICAgICAgLyoKICAgICAgICAgKiBXZSBqdXN0IHVzZSB0aGUgZHJ2ZGF0YSB1bnRpbCBkcml2ZXIg cnVuIGludG8gY29tcG9uZW50CiAgICAgICAgICogYWRkIGZ1bmN0aW9uLCBhbmQgdGhlbiB3ZSB3 b3VsZCBzZXQgZHJ2ZGF0YSB0byBudWxsLCBzbwoKClsyXQpbICAgMTEuOTcxMjc3XSBwYW5lbF9z aW1wbGVfZ2V0X21vZGVzClsgIE9LICBdIFN0YXJ0ZWQgTFNCOiBYIGRpc3BsYXkgbWFuYWdlciBm b3IgS0RFLgpbICBPSyAgXSBTdGFydGVkIExTQjogU3BlZWNoIERpc3BhdGNoZXIuClsgICAxMi4w MDcxMjBdIHBhbmVsX3NpbXBsZV9kaXNhYmxlClsgICAxMi4wMTIzMjNdIApbICAgMTIuMDEzODIw XSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K WyAgIDEyLjAxOTk5M10gWyBJTkZPOiBwb3NzaWJsZSBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVu Y3kgZGV0ZWN0ZWQgXQpbICAgMTIuMDI2MjUwXSA0LjQuMC1yYzMrICMyNzU1IE5vdCB0YWludGVk ClsgICAxMi4wMzAxNjVdIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KWyAgMTIuMDM2NDE3XSBYb3JnLzc5MyBpcyB0cnlpbmcgdG8gYWNxdWly ZSBsb2NrOgpbICAgMTIuMDQwODU1XSAgKCgmZHAtPmhvdHBsdWdfd29yaykpeysuKy4uLn1bICAg MTIuMDQwODcwXSAKWyAgIDEyLjA0MDg3MF0gYnV0IHRhc2sgaXMgYWxyZWFkeSBob2xkaW5nIGxv Y2s6ClsgICAxMi4wNDA4NzFdICAoY3J0Y193d19jbGFzc19tdXRleCl7Ky4rLisufSwgYXQ6IFs8 YzAzODM2MDA+XSBkcm1fbW9kZXNldF9sb2NrKzB4ODQvMHgxMDQKWyAgIDEyLjA0MDg4MV0gClsg ICAxMi4wNDA4ODFdIHdoaWNoIGxvY2sgYWxyZWFkeSBkZXBlbmRzIG9uIHRoZSBuZXcgbG9jay4K WyAgIDEyLjA0MDg4MV0gClsgICAxMi4wNDA4ODJdIApbICAgMTIuMDQwODgyXSB0aGUgZXhpc3Rp bmcgZGVwZW5kZW5jeSBjaGFpbiAoaW4gcmV2ZXJzZSBvcmRlcikgaXM6ClsgICAxMi4wNDA4ODNd IApbICAgMTIuMDQwODgzXSAtPiAjMiAoY3J0Y193d19jbGFzc19tdXRleCl7Ky4rLisufToKWyAg IDEyLjA0MDg4N10gICAgICAgIFs8YzA3NTYzNzQ+XSBtdXRleF9sb2NrX25lc3RlZCsweDc4LzB4 NDFjClsgICAxMi4wNDA4OTNdICAgICAgICBbPGMwMzgzNjVjPl0gZHJtX21vZGVzZXRfbG9jaysw eGUwLzB4MTA0ClsgICAxMi4wNDA4OTZdICAgICAgICBbPGMwMzc3ODg4Pl0gZHJtX21vZGVfZ2V0 Y29ubmVjdG9yKzB4MTY4LzB4MzhjClsgICAxMi4wNDA5MDJdICAgICAgICBbPGMwMzZhZTU4Pl0g ZHJtX2lvY3RsKzB4Mjc0LzB4NDA4ClsgICAxMi4wNDA5MDddICAgICAgICBbPGMwMTdjYmM4Pl0g ZG9fdmZzX2lvY3RsKzB4NjcwLzB4NzUwClsgICAxMi4wNDA5MTFdICAgICAgICBbPGMwMTdjZDA0 Pl0gU3lTX2lvY3RsKzB4NWMvMHg4NApbICAgMTIuMDQwOTE0XSAgICAgICAgWzxjMDAwZmY4MD5d IHJldF9mYXN0X3N5c2NhbGwrMHgwLzB4MWMKWyAgIDEyLjA0MDkyMF0gClsgICAxMi4wNDA5MjBd IC0+ICMxICgmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCl7Ky4rLisufToKWyAgIDEyLjA0MDkyNF0g ICAgICAgIFs8YzA3NTYzNzQ+XSBtdXRleF9sb2NrX25lc3RlZCsweDc4LzB4NDFjClsgICAxMi4w NDA5MjhdICAgICAgICBbPGMwMzViM2I0Pl0gZHJtX2hlbHBlcl9ocGRfaXJxX2V2ZW50KzB4NDAv MHgxNTAKWyAgIDEyLjA0MDkzNF0gICAgICAgIFs8YzAzOGUwYjA+XSBhbmFsb2dpeF9kcF9ob3Rw bHVnKzB4MjQvMHgyOApbICAgMTIuMDQwOTM4XSAgICAgICAgWzxjMDA0NTBjND5dIHByb2Nlc3Nf b25lX3dvcmsrMHgzMjgvMHg2NjgKWyAgIDEyLjA0MDk0Ml0gICAgICAgIFs8YzAwNDYzMzQ+XSB3 b3JrZXJfdGhyZWFkKzB4MmNjLzB4NDFjClsgICAxMi4wNDA5NDVdICAgICAgICBbPGMwMDRiYmU4 Pl0ga3RocmVhZCsweGY0LzB4MTBjClsgICAxMi4wNDA5NTBdICAgICAgICBbPGMwMDEwMDEwPl0g cmV0X2Zyb21fZm9yaysweDE0LzB4MjQKWyAgIDEyLjA0MDk1NF0gClsgICAxMi4wNDA5NTRdIC0+ ICMwICgoJmRwLT5ob3RwbHVnX3dvcmspKXsrLisuLi59OgpbICAgMTIuMDQwOTU4XSAgICAgICAg WzxjMDA3ZjRhYz5dIGxvY2tfYWNxdWlyZSsweDE3OC8weDIxOApbICAgMTIuMDQwOTYzXSAgICAg ICAgWzxjMDA0MzdkMD5dIGZsdXNoX3dvcmsrMHg0Yy8weDIyYwpbICAgMTIuMDQwOTY2XSAgICAg ICAgWzxjMDM4ZTQ1Yz5dIGFuYWxvZ2l4X2RwX2JyaWRnZV9kaXNhYmxlKzB4NzQvMHhmMApbICAg MTIuMDQwOTcwXSAgICAgICAgWzxjMDM4NWVmND5dIGRybV9icmlkZ2VfZGlzYWJsZSsweDM0LzB4 MzgKWyAgIDEyLjA0MDk3M10gICAgICAgIFs8YzAzNTkwNDQ+XSBkcm1fY3J0Y19oZWxwZXJfc2V0 X21vZGUrMHgyMDAvMHg0MjQKWyAgIDEyLjA0MDk3N10gICAgICAgIFs8YzAzNTlhMzg+XSBkcm1f Y3J0Y19oZWxwZXJfc2V0X2NvbmZpZysweDZjMC8weDk4OApbICAgMTIuMDQwOTgxXSAgICAgICAg WzxjMDM3M2JhOD5dIGRybV9tb2RlX3NldF9jb25maWdfaW50ZXJuYWwrMHg2MC8weGRjClsgICAx Mi4wNDA5ODRdICAgICAgICBbPGMwMzc4OTM4Pl0gZHJtX21vZGVfc2V0Y3J0YysweDNjYy8weDQ3 NApbICAgMTIuMDQwOTg4XSAgICAgICAgWzxjMDM2YWU1OD5dIGRybV9pb2N0bCsweDI3NC8weDQw OApbICAgMTIuMDQwOTkxXSAgICAgICAgWzxjMDE3Y2JjOD5dIGRvX3Zmc19pb2N0bCsweDY3MC8w eDc1MApbICAgMTIuMDQwOTk0XSAgICAgICAgWzxjMDE3Y2QwND5dIFN5U19pb2N0bCsweDVjLzB4 ODQKWyAgIDEyLjA0MDk5N10gICAgICAgIFs8YzAwMGZmODA+XSByZXRfZmFzdF9zeXNjYWxsKzB4 MC8weDFjClsgICAxMi4wNDEwMDFdIApbICAgMTIuMDQxMDAxXSBvdGhlciBpbmZvIHRoYXQgbWln aHQgaGVscCB1cyBkZWJ1ZyB0aGlzOgpbICAgMTIuMDQxMDAxXSAKWyAgIDEyLjA0MTAwMl0gQ2hh aW4gZXhpc3RzIG9mOgpbICAgMTIuMDQxMDAyXSAgICgmZHAtPmhvdHBsdWdfd29yaykgLS0+ICZk ZXYtPm1vZGVfY29uZmlnLm11dGV4IC0tPiBjcnRjX3d3X2NsYXNzX211dGV4ClsgICAxMi4wNDEw MDddIApbICAgMTIuMDQxMDA4XSAgUG9zc2libGUgdW5zYWZlIGxvY2tpbmcgc2NlbmFyaW86Clsg ICAxMi4wNDEwMDhdIApbICAgMTIuMDQxMDA5XSAgICAgICAgQ1BVMCAgICAgICAgICAgICAgICAg ICAgQ1BVMQpbICAgMTIuMDQxMDEwXSAgICAgICAgLS0tLSAgICAgICAgICAgICAgICAgICAgLS0t LQpbICAgMTIuMDQxMDExXSAgIGxvY2soY3J0Y193d19jbGFzc19tdXRleCk7ClsgICAxMi4wNDEw MTNdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrKCZkZXYtPm1vZGVfY29uZmln Lm11dGV4KTsKWyAgIDEyLjA0MTAxNl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv Y2soY3J0Y193d19jbGFzc19tdXRleCk7ClsgICAxMi4wNDEwMThdICAgbG9jaygoJmRwLT5ob3Rw bHVnX3dvcmspKTsKWyAgIDEyLjA0MTAyMF0gClsgICAxMi4wNDEwMjBdICAqKiogREVBRExPQ0sg KioqClsgICAxMi4wNDEwMjBdIApbICAgMTIuMDQxMDIzXSAzIGxvY2tzIGhlbGQgYnkgWG9yZy83 OTM6ClsgICAxMi4wNDEwMjNdICAjMDogICgmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCl7Ky4rLisu fSwgYXQ6IFs8YzAzODNkNDg+XSBkcm1fbW9kZXNldF9sb2NrX2FsbCsweDUwLzB4ZDgKWyAgIDEy LjA0MTAzMF0gICMxOiAgKGNydGNfd3dfY2xhc3NfYWNxdWlyZSl7Ky4rLisufSwgYXQ6IFs8YzAz ODNkNTg+XSBkcm1fbW9kZXNldF9sb2NrX2FsbCsweDYwLzB4ZDgKWyAgIDEyLjA0MTAzN10gICMy OiAgKGNydGNfd3dfY2xhc3NfbXV0ZXgpeysuKy4rLn0sIGF0OiBbPGMwMzgzNjAwPl0gZHJtX21v ZGVzZXRfbG9jaysweDg0LzB4MTA0ClsgICAxMi4wNDEwNDRdIApbICAgMTIuMDQxMDQ0XSBzdGFj ayBiYWNrdHJhY2U6ClsgICAxMi4wNDEwNDhdIENQVTogMyBQSUQ6IDc5MyBDb21tOiBYb3JnIE5v dCB0YWludGVkIDQuNC4wLXJjMysgIzI3NTUKWyAgIDEyLjA0MTA0OV0gSGFyZHdhcmUgbmFtZTog Um9ja2NoaXAgKERldmljZSBUcmVlKQpbICAgMTIuMDQxMDU5XSBbPGMwMDE5OTE0Pl0gKHVud2lu ZF9iYWNrdHJhY2UpIGZyb20gWzxjMDAxNGJjYz5dIChzaG93X3N0YWNrKzB4MjAvMHgyNCkKWyAg IDEyLjA0MTA2Nl0gWzxjMDAxNGJjYz5dIChzaG93X3N0YWNrKSBmcm9tIFs8YzAyYzQ0ODQ+XSAo ZHVtcF9zdGFjaysweDg0LzB4YjgpClsgICAxMi4wNDEwNzJdIFs8YzAyYzQ0ODQ+XSAoZHVtcF9z dGFjaykgZnJvbSBbPGMwMDdhMmI4Pl0gKHByaW50X2NpcmN1bGFyX2J1ZysweDI3OC8weDJjYykK WyAgIDEyLjA0MTA3OF0gWzxjMDA3YTJiOD5dIChwcmludF9jaXJjdWxhcl9idWcpIGZyb20gWzxj MDA3ZTg1MD5dIChfX2xvY2tfYWNxdWlyZSsweDE0YTAvMHgxYWVjKQpbICAgMTIuMDQxMDgyXSBb PGMwMDdlODUwPl0gKF9fbG9ja19hY3F1aXJlKSBmcm9tIFs8YzAwN2Y0YWM+XSAobG9ja19hY3F1 aXJlKzB4MTc4LzB4MjE4KQpbICAgMTIuMDQxMDg2XSBbPGMwMDdmNGFjPl0gKGxvY2tfYWNxdWly ZSkgZnJvbSBbPGMwMDQzN2QwPl0gKGZsdXNoX3dvcmsrMHg0Yy8weDIyYykKWyAgIDEyLjA0MTA5 MV0gWzxjMDA0MzdkMD5dIChmbHVzaF93b3JrKSBmcm9tIFs8YzAzOGU0NWM+XSAoYW5hbG9naXhf ZHBfYnJpZGdlX2Rpc2FibGUrMHg3NC8weGYwKQpbICAgMTIuMDQxMDk3XSBbPGMwMzhlNDVjPl0g KGFuYWxvZ2l4X2RwX2JyaWRnZV9kaXNhYmxlKSBmcm9tIFs8YzAzODVlZjQ+XSAoZHJtX2JyaWRn ZV9kaXNhYmxlKzB4MzQvMHgzOCkKWyAgIDEyLjA0MTEwMl0gWzxjMDM4NWVmND5dIChkcm1fYnJp ZGdlX2Rpc2FibGUpIGZyb20gWzxjMDM1OTA0ND5dIChkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUr MHgyMDAvMHg0MjQpClsgICAxMi4wNDExMDhdIFs8YzAzNTkwNDQ+XSAoZHJtX2NydGNfaGVscGVy X3NldF9tb2RlKSBmcm9tIFs8YzAzNTlhMzg+XSAoZHJtX2NydGNfaGVscGVyX3NldF9jb25maWcr MHg2YzAvMHg5ODgpClsgICAxMi4wNDExMTRdIFs8YzAzNTlhMzg+XSAoZHJtX2NydGNfaGVscGVy X3NldF9jb25maWcpIGZyb20gWzxjMDM3M2JhOD5dIChkcm1fbW9kZV9zZXRfY29uZmlnX2ludGVy bmFsKzB4NjAvMHhkYykKWyAgIDEyLjA0MTExOV0gWzxjMDM3M2JhOD5dIChkcm1fbW9kZV9zZXRf Y29uZmlnX2ludGVybmFsKSBmcm9tIFs8YzAzNzg5Mzg+XSAoZHJtX21vZGVfc2V0Y3J0YysweDNj Yy8weDQ3NCkKWyAgIDEyLjA0MTEyNF0gWzxjMDM3ODkzOD5dIChkcm1fbW9kZV9zZXRjcnRjKSBm cm9tIFs8YzAzNmFlNTg+XSAoZHJtX2lvY3RsKzB4Mjc0LzB4NDA4KQpbICAgMTIuMDQxMTI5XSBb PGMwMzZhZTU4Pl0gKGRybV9pb2N0bCkgZnJvbSBbPGMwMTdjYmM4Pl0gKGRvX3Zmc19pb2N0bCsw eDY3MC8weDc1MCkKWyAgIDEyLjA0MTEzNF0gWzxjMDE3Y2JjOD5dIChkb192ZnNfaW9jdGwpIGZy b20gWzxjMDE3Y2QwND5dIChTeVNfaW9jdGwrMHg1Yy8weDg0KQpbICAgMTIuMDQxMTM4XSBbPGMw MTdjZDA0Pl0gKFN5U19pb2N0bCkgZnJvbSBbPGMwMDBmZjgwPl0gKHJldF9mYXN0X3N5c2NhbGwr MHgwLzB4MWMpClsgICAxMi4wNDEyMTBdIHBhbmVsX3NpbXBsZV91bnByZXBhcmUKWyAgIDEyLjA0 MTM1OV0gcGFuZWxfc2ltcGxlX3ByZXBhcmUKWyAgIDEyLjEwMTYzOF0gYW5hbG9naXhfZHBfcmVz ZXQKWyAgIDEyLjEwMTg3OV0gYW5hbG9naXhfZHBfaW5pdF9ocGQKWyAgIDEyLjEwMTg5N10gcGFu ZWxfc2ltcGxlX2Rpc2FibGUKWyAgIDEyLjEwODU0M10gYW5hbG9naXhfZHBfaXJxX2hhbmRsZXI6 IGlycS10eXBlIDAKWyAgIDEyLjExMDQ1Ml0gcm9ja2NoaXAtZHAgZmY5NzAwMDAuZHA6IExpbmsg VHJhaW5pbmcgQ2xvY2sgUmVjb3Zlcnkgc3VjY2VzcwpbICAgMTIuMTExOTAwXSByb2NrY2hpcC1k cCBmZjk3MDAwMC5kcDogTGluayBUcmFpbmluZyBzdWNjZXNzIQpbICAgMTIuMTEzMzg0XSBhbmFs b2dpeF9kcF9pbml0X3ZpZGVvClsgICAxMi4yMTU4MjVdIHJvY2tjaGlwLWRwIGZmOTcwMDAwLmRw OiBUaW1lb3V0IG9mIHZpZGVvIHN0cmVhbWNsayBvawpbICAgMTIuMjE1ODI5XSByb2NrY2hpcC1k cCBmZjk3MDAwMC5kcDogdW5hYmxlIHRvIGNvbmZpZyB2aWRlbwpbICAgMTIuMjE1ODMyXSBwYW5l bF9zaW1wbGVfZW5hYmxlCixhdDogWzxjMDA0Mzc4ND5dIGZsdXNoX3dvcmsrMHgwLzB4MjJjCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: heiko@sntech.de (Heiko =?ISO-8859-1?Q?St=FCbner?=) Date: Tue, 08 Dec 2015 16:33:39 +0100 Subject: [PATCH v10 0/17] Add Analogix Core Display Port Driver In-Reply-To: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> Message-ID: <1982691.ZDuzTFTUUe@diego> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Yakir, Am Montag, 7. Dezember 2015, 14:37:19 schrieb Yakir Yang: > The Samsung Exynos eDP controller and Rockchip RK3288 eDP controller > share the same IP, so a lot of parts can be re-used. I split the common > code into bridge directory, then rk3288 and exynos only need to keep > some platform code. Cause I can't find the exact IP name of exynos dp > controller, so I decide to name dp core driver with "analogix" which I > find in rk3288 eDP TRM [...] > Changes in v10: > - Correct the ROCKCHIP_ANALOGIX_DP indentation in Kconfig to tabs here > (Heiko) - Fix the wrong macro value of > GRF_EDP_REF_CLK_SEL_INTER_HIWORD_MASK BIT(4) -> BIT(20) > - Remove the surplus "plat_data" check. (Heiko) > - switch (dp->plat_data && dp->plat_data->dev_type) { > + switch (dp->plat_data->dev_type) { > - Revert parts of Gustavo Padovan's changes in commit: > drm/exynos: do not start enabling DP at bind() phase > Add dp phy poweron function in bind time. The hotplug issue is still present, but I think I found the cause. When the first detect call happens, the display simply is still off. I just did some very basic tracing [0] and it seems the display simply is not enabled when it is supposed to get detected. And it seems injecting a drm_panel_prepare early for _testing_ [1] really did make the hotplug work on both my jerry and minnie. So I guess we should somehow make sure the panel is actually powered when detection is running. Although I'm not sure yet, how that should look like. Intuition suggests, making drm_panel calls nestable (similar to clk_prepare/unprepare, etc) and simply wrapping the detection code in a prepare-unprepare calls, but I'm not sure if Thierry might have other ideas ;-) Also my "log" below suggests some sort of mismatch between prepare/unprepare calls, as there are a lot more of the prepare-side. And the locking issue also seems to be still there [2]. Heiko [0] [ 2.797383] analogix_dp_reset [ 2.800709] analogix_dp_init_hpd [ 2.803960] analogix_dp_init_video [ 2.807653] rockchip-drm display-subsystem: bound ff970000.dp (ops rockchip_dp_component_ops) [ 2.817176] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.823799] [drm] No driver support for vblank timestamp query. [ 2.829947] analogix_dp_detect [ 2.833015] analogix_dp_get_plug_in_status: hpd status 0 ... [ 2.893425] analogix_dp_get_plug_in_status: hpd status 0 [ 2.893456] rockchip-dp ff970000.dp: failed to get hpd plug status, try to force hpd [ 2.893458] analogix_dp_force_hpd [ 2.893464] analogix_dp_get_plug_in_status: hpd status 112 [ 2.893470] panel_simple_prepare [ 2.952183] rockchip-dp ff970000.dp: EDID data does not include any extensions. [ 2.961727] panel_simple_get_modes [ 3.432154] analogix_dp_detect [ 3.432158] analogix_dp_get_plug_in_status: hpd status 120 [ 3.432160] panel_simple_prepare [ 3.433731] rockchip-dp ff970000.dp: EDID data does not include any extensions. [ 3.443268] panel_simple_get_modes [ 3.444668] panel_simple_prepare [ 3.444755] analogix_dp_reset [ 3.445078] analogix_dp_init_hpd [ 3.445096] panel_simple_disable [ 3.455349] analogix_dp_init_video [ 3.558323] rockchip-dp ff970000.dp: Timeout of video streamclk ok [ 3.558326] rockchip-dp ff970000.dp: unable to config video [ 3.558328] panel_simple_enable [ 3.573915] analogix_dp_detect [ 3.573919] analogix_dp_get_plug_in_status: hpd status 72 [ 3.573921] panel_simple_prepare [1] diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 3990951..0c2dca5 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -399,6 +399,8 @@ static int rockchip_dp_probe(struct platform_device *pdev) dp->plat_data.panel = panel; +drm_panel_prepare(dp->plat_data.panel); + /* * We just use the drvdata until driver run into component * add function, and then we would set drvdata to null, so [2] [ 11.971277] panel_simple_get_modes [ OK ] Started LSB: X display manager for KDE. [ OK ] Started LSB: Speech Dispatcher. [ 12.007120] panel_simple_disable [ 12.012323] [ 12.013820] ====================================================== [ 12.019993] [ INFO: possible circular locking dependency detected ] [ 12.026250] 4.4.0-rc3+ #2755 Not tainted [ 12.030165] ------------------------------------------------------- [ 12.036417] Xorg/793 is trying to acquire lock: [ 12.040855] ((&dp->hotplug_work)){+.+...}[ 12.040870] [ 12.040870] but task is already holding lock: [ 12.040871] (crtc_ww_class_mutex){+.+.+.}, at: [] drm_modeset_lock+0x84/0x104 [ 12.040881] [ 12.040881] which lock already depends on the new lock. [ 12.040881] [ 12.040882] [ 12.040882] the existing dependency chain (in reverse order) is: [ 12.040883] [ 12.040883] -> #2 (crtc_ww_class_mutex){+.+.+.}: [ 12.040887] [] mutex_lock_nested+0x78/0x41c [ 12.040893] [] drm_modeset_lock+0xe0/0x104 [ 12.040896] [] drm_mode_getconnector+0x168/0x38c [ 12.040902] [] drm_ioctl+0x274/0x408 [ 12.040907] [] do_vfs_ioctl+0x670/0x750 [ 12.040911] [] SyS_ioctl+0x5c/0x84 [ 12.040914] [] ret_fast_syscall+0x0/0x1c [ 12.040920] [ 12.040920] -> #1 (&dev->mode_config.mutex){+.+.+.}: [ 12.040924] [] mutex_lock_nested+0x78/0x41c [ 12.040928] [] drm_helper_hpd_irq_event+0x40/0x150 [ 12.040934] [] analogix_dp_hotplug+0x24/0x28 [ 12.040938] [] process_one_work+0x328/0x668 [ 12.040942] [] worker_thread+0x2cc/0x41c [ 12.040945] [] kthread+0xf4/0x10c [ 12.040950] [] ret_from_fork+0x14/0x24 [ 12.040954] [ 12.040954] -> #0 ((&dp->hotplug_work)){+.+...}: [ 12.040958] [] lock_acquire+0x178/0x218 [ 12.040963] [] flush_work+0x4c/0x22c [ 12.040966] [] analogix_dp_bridge_disable+0x74/0xf0 [ 12.040970] [] drm_bridge_disable+0x34/0x38 [ 12.040973] [] drm_crtc_helper_set_mode+0x200/0x424 [ 12.040977] [] drm_crtc_helper_set_config+0x6c0/0x988 [ 12.040981] [] drm_mode_set_config_internal+0x60/0xdc [ 12.040984] [] drm_mode_setcrtc+0x3cc/0x474 [ 12.040988] [] drm_ioctl+0x274/0x408 [ 12.040991] [] do_vfs_ioctl+0x670/0x750 [ 12.040994] [] SyS_ioctl+0x5c/0x84 [ 12.040997] [] ret_fast_syscall+0x0/0x1c [ 12.041001] [ 12.041001] other info that might help us debug this: [ 12.041001] [ 12.041002] Chain exists of: [ 12.041002] (&dp->hotplug_work) --> &dev->mode_config.mutex --> crtc_ww_class_mutex [ 12.041007] [ 12.041008] Possible unsafe locking scenario: [ 12.041008] [ 12.041009] CPU0 CPU1 [ 12.041010] ---- ---- [ 12.041011] lock(crtc_ww_class_mutex); [ 12.041013] lock(&dev->mode_config.mutex); [ 12.041016] lock(crtc_ww_class_mutex); [ 12.041018] lock((&dp->hotplug_work)); [ 12.041020] [ 12.041020] *** DEADLOCK *** [ 12.041020] [ 12.041023] 3 locks held by Xorg/793: [ 12.041023] #0: (&dev->mode_config.mutex){+.+.+.}, at: [] drm_modeset_lock_all+0x50/0xd8 [ 12.041030] #1: (crtc_ww_class_acquire){+.+.+.}, at: [] drm_modeset_lock_all+0x60/0xd8 [ 12.041037] #2: (crtc_ww_class_mutex){+.+.+.}, at: [] drm_modeset_lock+0x84/0x104 [ 12.041044] [ 12.041044] stack backtrace: [ 12.041048] CPU: 3 PID: 793 Comm: Xorg Not tainted 4.4.0-rc3+ #2755 [ 12.041049] Hardware name: Rockchip (Device Tree) [ 12.041059] [] (unwind_backtrace) from [] (show_stack+0x20/0x24) [ 12.041066] [] (show_stack) from [] (dump_stack+0x84/0xb8) [ 12.041072] [] (dump_stack) from [] (print_circular_bug+0x278/0x2cc) [ 12.041078] [] (print_circular_bug) from [] (__lock_acquire+0x14a0/0x1aec) [ 12.041082] [] (__lock_acquire) from [] (lock_acquire+0x178/0x218) [ 12.041086] [] (lock_acquire) from [] (flush_work+0x4c/0x22c) [ 12.041091] [] (flush_work) from [] (analogix_dp_bridge_disable+0x74/0xf0) [ 12.041097] [] (analogix_dp_bridge_disable) from [] (drm_bridge_disable+0x34/0x38) [ 12.041102] [] (drm_bridge_disable) from [] (drm_crtc_helper_set_mode+0x200/0x424) [ 12.041108] [] (drm_crtc_helper_set_mode) from [] (drm_crtc_helper_set_config+0x6c0/0x988) [ 12.041114] [] (drm_crtc_helper_set_config) from [] (drm_mode_set_config_internal+0x60/0xdc) [ 12.041119] [] (drm_mode_set_config_internal) from [] (drm_mode_setcrtc+0x3cc/0x474) [ 12.041124] [] (drm_mode_setcrtc) from [] (drm_ioctl+0x274/0x408) [ 12.041129] [] (drm_ioctl) from [] (do_vfs_ioctl+0x670/0x750) [ 12.041134] [] (do_vfs_ioctl) from [] (SyS_ioctl+0x5c/0x84) [ 12.041138] [] (SyS_ioctl) from [] (ret_fast_syscall+0x0/0x1c) [ 12.041210] panel_simple_unprepare [ 12.041359] panel_simple_prepare [ 12.101638] analogix_dp_reset [ 12.101879] analogix_dp_init_hpd [ 12.101897] panel_simple_disable [ 12.108543] analogix_dp_irq_handler: irq-type 0 [ 12.110452] rockchip-dp ff970000.dp: Link Training Clock Recovery success [ 12.111900] rockchip-dp ff970000.dp: Link Training success! [ 12.113384] analogix_dp_init_video [ 12.215825] rockchip-dp ff970000.dp: Timeout of video streamclk ok [ 12.215829] rockchip-dp ff970000.dp: unable to config video [ 12.215832] panel_simple_enable ,at: [] flush_work+0x0/0x22c From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965410AbbLHPeZ (ORCPT ); Tue, 8 Dec 2015 10:34:25 -0500 Received: from gloria.sntech.de ([95.129.55.99]:56853 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965314AbbLHPeJ (ORCPT ); Tue, 8 Dec 2015 10:34:09 -0500 From: Heiko =?ISO-8859-1?Q?St=FCbner?= To: Yakir Yang , Thierry Reding Cc: Inki Dae , Mark Yao , Jingoo Han , Krzysztof Kozlowski , Rob Herring , Andrzej Hajda , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Russell King , emil.l.velikov@gmail.com, Gustavo Padovan , Kishon Vijay Abraham I , ajaynumb@gmail.com, javier@osg.samsung.com, Andy Yan , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v10 0/17] Add Analogix Core Display Port Driver Date: Tue, 08 Dec 2015 16:33:39 +0100 Message-ID: <1982691.ZDuzTFTUUe@diego> User-Agent: KMail/4.14.10 (Linux/4.2.0-1-amd64; KDE/4.14.13; x86_64; ; ) In-Reply-To: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Yakir, Am Montag, 7. Dezember 2015, 14:37:19 schrieb Yakir Yang: > The Samsung Exynos eDP controller and Rockchip RK3288 eDP controller > share the same IP, so a lot of parts can be re-used. I split the common > code into bridge directory, then rk3288 and exynos only need to keep > some platform code. Cause I can't find the exact IP name of exynos dp > controller, so I decide to name dp core driver with "analogix" which I > find in rk3288 eDP TRM [...] > Changes in v10: > - Correct the ROCKCHIP_ANALOGIX_DP indentation in Kconfig to tabs here > (Heiko) - Fix the wrong macro value of > GRF_EDP_REF_CLK_SEL_INTER_HIWORD_MASK BIT(4) -> BIT(20) > - Remove the surplus "plat_data" check. (Heiko) > - switch (dp->plat_data && dp->plat_data->dev_type) { > + switch (dp->plat_data->dev_type) { > - Revert parts of Gustavo Padovan's changes in commit: > drm/exynos: do not start enabling DP at bind() phase > Add dp phy poweron function in bind time. The hotplug issue is still present, but I think I found the cause. When the first detect call happens, the display simply is still off. I just did some very basic tracing [0] and it seems the display simply is not enabled when it is supposed to get detected. And it seems injecting a drm_panel_prepare early for _testing_ [1] really did make the hotplug work on both my jerry and minnie. So I guess we should somehow make sure the panel is actually powered when detection is running. Although I'm not sure yet, how that should look like. Intuition suggests, making drm_panel calls nestable (similar to clk_prepare/unprepare, etc) and simply wrapping the detection code in a prepare-unprepare calls, but I'm not sure if Thierry might have other ideas ;-) Also my "log" below suggests some sort of mismatch between prepare/unprepare calls, as there are a lot more of the prepare-side. And the locking issue also seems to be still there [2]. Heiko [0] [ 2.797383] analogix_dp_reset [ 2.800709] analogix_dp_init_hpd [ 2.803960] analogix_dp_init_video [ 2.807653] rockchip-drm display-subsystem: bound ff970000.dp (ops rockchip_dp_component_ops) [ 2.817176] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.823799] [drm] No driver support for vblank timestamp query. [ 2.829947] analogix_dp_detect [ 2.833015] analogix_dp_get_plug_in_status: hpd status 0 ... [ 2.893425] analogix_dp_get_plug_in_status: hpd status 0 [ 2.893456] rockchip-dp ff970000.dp: failed to get hpd plug status, try to force hpd [ 2.893458] analogix_dp_force_hpd [ 2.893464] analogix_dp_get_plug_in_status: hpd status 112 [ 2.893470] panel_simple_prepare [ 2.952183] rockchip-dp ff970000.dp: EDID data does not include any extensions. [ 2.961727] panel_simple_get_modes [ 3.432154] analogix_dp_detect [ 3.432158] analogix_dp_get_plug_in_status: hpd status 120 [ 3.432160] panel_simple_prepare [ 3.433731] rockchip-dp ff970000.dp: EDID data does not include any extensions. [ 3.443268] panel_simple_get_modes [ 3.444668] panel_simple_prepare [ 3.444755] analogix_dp_reset [ 3.445078] analogix_dp_init_hpd [ 3.445096] panel_simple_disable [ 3.455349] analogix_dp_init_video [ 3.558323] rockchip-dp ff970000.dp: Timeout of video streamclk ok [ 3.558326] rockchip-dp ff970000.dp: unable to config video [ 3.558328] panel_simple_enable [ 3.573915] analogix_dp_detect [ 3.573919] analogix_dp_get_plug_in_status: hpd status 72 [ 3.573921] panel_simple_prepare [1] diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 3990951..0c2dca5 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -399,6 +399,8 @@ static int rockchip_dp_probe(struct platform_device *pdev) dp->plat_data.panel = panel; +drm_panel_prepare(dp->plat_data.panel); + /* * We just use the drvdata until driver run into component * add function, and then we would set drvdata to null, so [2] [ 11.971277] panel_simple_get_modes [ OK ] Started LSB: X display manager for KDE. [ OK ] Started LSB: Speech Dispatcher. [ 12.007120] panel_simple_disable [ 12.012323] [ 12.013820] ====================================================== [ 12.019993] [ INFO: possible circular locking dependency detected ] [ 12.026250] 4.4.0-rc3+ #2755 Not tainted [ 12.030165] ------------------------------------------------------- [ 12.036417] Xorg/793 is trying to acquire lock: [ 12.040855] ((&dp->hotplug_work)){+.+...}[ 12.040870] [ 12.040870] but task is already holding lock: [ 12.040871] (crtc_ww_class_mutex){+.+.+.}, at: [] drm_modeset_lock+0x84/0x104 [ 12.040881] [ 12.040881] which lock already depends on the new lock. [ 12.040881] [ 12.040882] [ 12.040882] the existing dependency chain (in reverse order) is: [ 12.040883] [ 12.040883] -> #2 (crtc_ww_class_mutex){+.+.+.}: [ 12.040887] [] mutex_lock_nested+0x78/0x41c [ 12.040893] [] drm_modeset_lock+0xe0/0x104 [ 12.040896] [] drm_mode_getconnector+0x168/0x38c [ 12.040902] [] drm_ioctl+0x274/0x408 [ 12.040907] [] do_vfs_ioctl+0x670/0x750 [ 12.040911] [] SyS_ioctl+0x5c/0x84 [ 12.040914] [] ret_fast_syscall+0x0/0x1c [ 12.040920] [ 12.040920] -> #1 (&dev->mode_config.mutex){+.+.+.}: [ 12.040924] [] mutex_lock_nested+0x78/0x41c [ 12.040928] [] drm_helper_hpd_irq_event+0x40/0x150 [ 12.040934] [] analogix_dp_hotplug+0x24/0x28 [ 12.040938] [] process_one_work+0x328/0x668 [ 12.040942] [] worker_thread+0x2cc/0x41c [ 12.040945] [] kthread+0xf4/0x10c [ 12.040950] [] ret_from_fork+0x14/0x24 [ 12.040954] [ 12.040954] -> #0 ((&dp->hotplug_work)){+.+...}: [ 12.040958] [] lock_acquire+0x178/0x218 [ 12.040963] [] flush_work+0x4c/0x22c [ 12.040966] [] analogix_dp_bridge_disable+0x74/0xf0 [ 12.040970] [] drm_bridge_disable+0x34/0x38 [ 12.040973] [] drm_crtc_helper_set_mode+0x200/0x424 [ 12.040977] [] drm_crtc_helper_set_config+0x6c0/0x988 [ 12.040981] [] drm_mode_set_config_internal+0x60/0xdc [ 12.040984] [] drm_mode_setcrtc+0x3cc/0x474 [ 12.040988] [] drm_ioctl+0x274/0x408 [ 12.040991] [] do_vfs_ioctl+0x670/0x750 [ 12.040994] [] SyS_ioctl+0x5c/0x84 [ 12.040997] [] ret_fast_syscall+0x0/0x1c [ 12.041001] [ 12.041001] other info that might help us debug this: [ 12.041001] [ 12.041002] Chain exists of: [ 12.041002] (&dp->hotplug_work) --> &dev->mode_config.mutex --> crtc_ww_class_mutex [ 12.041007] [ 12.041008] Possible unsafe locking scenario: [ 12.041008] [ 12.041009] CPU0 CPU1 [ 12.041010] ---- ---- [ 12.041011] lock(crtc_ww_class_mutex); [ 12.041013] lock(&dev->mode_config.mutex); [ 12.041016] lock(crtc_ww_class_mutex); [ 12.041018] lock((&dp->hotplug_work)); [ 12.041020] [ 12.041020] *** DEADLOCK *** [ 12.041020] [ 12.041023] 3 locks held by Xorg/793: [ 12.041023] #0: (&dev->mode_config.mutex){+.+.+.}, at: [] drm_modeset_lock_all+0x50/0xd8 [ 12.041030] #1: (crtc_ww_class_acquire){+.+.+.}, at: [] drm_modeset_lock_all+0x60/0xd8 [ 12.041037] #2: (crtc_ww_class_mutex){+.+.+.}, at: [] drm_modeset_lock+0x84/0x104 [ 12.041044] [ 12.041044] stack backtrace: [ 12.041048] CPU: 3 PID: 793 Comm: Xorg Not tainted 4.4.0-rc3+ #2755 [ 12.041049] Hardware name: Rockchip (Device Tree) [ 12.041059] [] (unwind_backtrace) from [] (show_stack+0x20/0x24) [ 12.041066] [] (show_stack) from [] (dump_stack+0x84/0xb8) [ 12.041072] [] (dump_stack) from [] (print_circular_bug+0x278/0x2cc) [ 12.041078] [] (print_circular_bug) from [] (__lock_acquire+0x14a0/0x1aec) [ 12.041082] [] (__lock_acquire) from [] (lock_acquire+0x178/0x218) [ 12.041086] [] (lock_acquire) from [] (flush_work+0x4c/0x22c) [ 12.041091] [] (flush_work) from [] (analogix_dp_bridge_disable+0x74/0xf0) [ 12.041097] [] (analogix_dp_bridge_disable) from [] (drm_bridge_disable+0x34/0x38) [ 12.041102] [] (drm_bridge_disable) from [] (drm_crtc_helper_set_mode+0x200/0x424) [ 12.041108] [] (drm_crtc_helper_set_mode) from [] (drm_crtc_helper_set_config+0x6c0/0x988) [ 12.041114] [] (drm_crtc_helper_set_config) from [] (drm_mode_set_config_internal+0x60/0xdc) [ 12.041119] [] (drm_mode_set_config_internal) from [] (drm_mode_setcrtc+0x3cc/0x474) [ 12.041124] [] (drm_mode_setcrtc) from [] (drm_ioctl+0x274/0x408) [ 12.041129] [] (drm_ioctl) from [] (do_vfs_ioctl+0x670/0x750) [ 12.041134] [] (do_vfs_ioctl) from [] (SyS_ioctl+0x5c/0x84) [ 12.041138] [] (SyS_ioctl) from [] (ret_fast_syscall+0x0/0x1c) [ 12.041210] panel_simple_unprepare [ 12.041359] panel_simple_prepare [ 12.101638] analogix_dp_reset [ 12.101879] analogix_dp_init_hpd [ 12.101897] panel_simple_disable [ 12.108543] analogix_dp_irq_handler: irq-type 0 [ 12.110452] rockchip-dp ff970000.dp: Link Training Clock Recovery success [ 12.111900] rockchip-dp ff970000.dp: Link Training success! [ 12.113384] analogix_dp_init_video [ 12.215825] rockchip-dp ff970000.dp: Timeout of video streamclk ok [ 12.215829] rockchip-dp ff970000.dp: unable to config video [ 12.215832] panel_simple_enable ,at: [] flush_work+0x0/0x22c