From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH v10.1 14/17] drm: bridge: analogix/dp: try force hpd after plug in lookup failed Date: Tue, 8 Dec 2015 22:25:40 -0600 Message-ID: <20151209042540.GA14415@rob-hp-laptop> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> <1449627039-15689-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: Content-Disposition: inline In-Reply-To: <1449627039-15689-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 Cc: Krzysztof Kozlowski , Seung-Woo Kim , dri-devel@lists.freedesktop.org, Andrzej Hajda , Gustavo Padovan , linux-samsung-soc@vger.kernel.org, Russell King , javier@osg.samsung.com, Kishon Vijay Abraham I , linux-rockchip@lists.infradead.org, Thierry Reding , devicetree@vger.kernel.org, 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 T24gV2VkLCBEZWMgMDksIDIwMTUgYXQgMTA6MTA6MzlBTSArMDgwMCwgWWFraXIgWWFuZyB3cm90 ZToKPiBTb21lIGVkcCBzY3JlZW4gZG8gbm90IGhhdmUgaHBkIHNpZ25hbCwgc28gd2UgY2FuJ3Qg anVzdCByZXR1cm4KPiBmYWlsZWQgd2hlbiBocGQgcGx1ZyBpbiBkZXRlY3QgZmFpbGVkLgo+IAo+ IFRoaXMgaXMgYW4gaGFyZHdhcmUgcHJvcGVydHksIHNvIHdlIG5lZWQgYWRkIGEgZGV2aWNldHJl ZSBwcm9wZXJ0eQo+ICJhbmFsb2dpeCxuZWVkLWZvcmNlLWhwZCIgdG8gaW5kaWNhdGUgdGhpcyBz dXRpYXRpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMu Y29tPgo+IFRlc3RlZC1ieTogSmF2aWVyIE1hcnRpbmV6IENhbmlsbGFzIDxqYXZpZXJAb3NnLnNh bXN1bmcuY29tPgoKQWNrZWQtYnk6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Cgo+IC0t LQo+IENoYW5nZXMgaW4gdjEwLjE6Cj4gLSBSZW5hbWUgdGhlICJhbmFsb2dpeCxuZWVkLWZvcmNl LWhwZCIgdG8gY29tbW9uICdmb3JjZS1ocGQnIChSb2IpCj4gCj4gQ2hhbmdlcyBpbiB2OTogTm9u ZQo+IENoYW5nZXMgaW4gdjg6IE5vbmUKPiBDaGFuZ2VzIGluIHY3OiBOb25lCj4gQ2hhbmdlcyBp biB2NjogTm9uZQo+IENoYW5nZXMgaW4gdjU6IE5vbmUKPiBDaGFuZ2VzIGluIHY0OiBOb25lCj4g Q2hhbmdlcyBpbiB2MzoKPiAtIEFkZCAiYW5hbG9naXgsbmVlZC1mb3JjZS1ocGQiIHRvIGluZGlj YXRlIHdoZXRoZXIgZHJpdmVyIG5lZWQgZm9jZQo+ICAgaHBkIHdoZW4gaHBkIGRldGVjdCBmYWls ZWQuCj4gCj4gQ2hhbmdlcyBpbiB2MjogTm9uZQo+IAo+ICAuLi4vYmluZGluZ3MvZGlzcGxheS9i cmlkZ2UvYW5hbG9naXhfZHAudHh0ICAgICAgICB8ICA0ICsrLQo+ICAuLi4vYmluZGluZ3MvZGlz cGxheS9leHlub3MvZXh5bm9zX2RwLnR4dCAgICAgICAgICB8ICAxICsKPiAgLi4uL2Rpc3BsYXkv cm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAudHh0ICAgICAgfCAgMSArCj4gIGRyaXZlcnMv Z3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jIHwgMzUgKysrKysrKysr KysrKysrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4 X2RwX2NvcmUuaCB8ICAyICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5h bG9naXhfZHBfcmVnLmMgIHwgIDkgKysrKysrCj4gIDYgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0 aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL2FuYWxvZ2l4X2RwLnR4dCBiL0RvY3Vt ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9hbmFsb2dpeF9kcC50 eHQKPiBpbmRleCA3NjU5YTdhLi40ZjJiYThjIDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9hbmFsb2dpeF9kcC50eHQKPiArKysg Yi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvYW5hbG9n aXhfZHAudHh0Cj4gQEAgLTIyLDYgKzIyLDkgQEAgUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgZHAt Y29udHJvbGxlcjoKPiAgCQlmcm9tIGdlbmVyYWwgUEhZIGJpbmRpbmc6IFNob3VsZCBiZSAiZHAi Lgo+ICAKPiAgT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgZHAtY29udHJvbGxlcjoKPiArCS1mb3Jj ZS1ocGQ6Cj4gKwkJSW5kaWNhdGUgZHJpdmVyIG5lZWQgZm9yY2UgaHBkIHdoZW4gaHBkIGRldGVj dCBmYWlsZWQsIHRoaXMKPiArCQlpcyB1c2VkIGZvciBzb21lIGVEUCBzY3JlZW4gd2hpY2ggZG9u J3QgaGF2ZSBocGQgc2lnbmFsLgo+ICAJLWhwZC1ncGlvczoKPiAgCQlIb3RwbHVnIGRldGVjdCBH UElPLgo+ICAJCUluZGljYXRlcyB3aGljaCBHUElPIHNob3VsZCBiZSB1c2VkIGZvciBob3RwbHVn IGRldGVjdGlvbgo+IEBAIC0zMSw3ICszNCw2IEBAIE9wdGlvbmFsIHByb3BlcnRpZXMgZm9yIGRw LWNvbnRyb2xsZXI6Cj4gIAkJKiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlz cGxheS9leHlub3MvZXh5bm9zX2RwLnR4dAo+ICAJCSogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL3ZpZGVvL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLnR4dAo+ICAKPiAtCj4gIFsxXTog RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMu dHh0Cj4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfZHAudHh0IGIv RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vc19k cC50eHQKPiBpbmRleCA5OTA1MDgxLi44ODAwMTY0IDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfZHAudHh0Cj4gKysr IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5v c19kcC50eHQKPiBAQCAtNDEsNiArNDEsNyBAQCBGb3IgdGhlIGJlbG93IHByb3BlcnRpZXMsIHBs ZWFzZSByZWZlciB0byBBbmFsb2dpeCBEUCBiaW5kaW5nIGRvY3VtZW50Ogo+ICAJLXBoeXMgKHJl cXVpcmVkKQo+ICAJLXBoeS1uYW1lcyAocmVxdWlyZWQpCj4gIAktaHBkLWdwaW9zIChvcHRpb25h bCkKPiArCS1hbmFsb2dpeCxuZWVkLWZvcmNlLWhwZCAob3B0aW9uYWwpCj4gIAktdmlkZW8gaW50 ZXJmYWNlcyAob3B0aW9uYWwpCj4gIAo+ICBEZXByZWNhdGVkIHByb3BlcnRpZXMgZm9yIERpc3Bs YXlQb3J0Ogo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv ZGlzcGxheS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC50eHQgYi9Eb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hp cC50eHQKPiBpbmRleCBkYWU4NmM0Li4xODdhNzA4ZSAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2Nr Y2hpcC50eHQKPiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxh eS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC50eHQKPiBAQCAtMzIsNiArMzIsNyBAQCBG b3IgdGhlIGJlbG93IHByb3BlcnRpZXMsIHBsZWFzZSByZWZlciB0byBBbmFsb2dpeCBEUCBiaW5k aW5nIGRvY3VtZW50Ogo+ICAtIHBoeXMgKHJlcXVpcmVkKQo+ICAtIHBoeS1uYW1lcyAocmVxdWly ZWQpCj4gIC0gaHBkLWdwaW9zIChvcHRpb25hbCkKPiArLSBmb3JjZS1ocGQgKG9wdGlvbmFsKQo+ ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIAo+ICBFeGFtcGxlOgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jCj4gaW5kZXggYTEx NTA0Yi4uMDBhZWU0NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxv Z2l4L2FuYWxvZ2l4X2RwX2NvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5h bG9naXgvYW5hbG9naXhfZHBfY29yZS5jCj4gQEAgLTU5LDE1ICs1OSwzOCBAQCBzdGF0aWMgaW50 IGFuYWxvZ2l4X2RwX2RldGVjdF9ocGQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCj4g IHsKPiAgCWludCB0aW1lb3V0X2xvb3AgPSAwOwo+ICAKPiAtCXdoaWxlIChhbmFsb2dpeF9kcF9n ZXRfcGx1Z19pbl9zdGF0dXMoZHApICE9IDApIHsKPiArCXdoaWxlICh0aW1lb3V0X2xvb3AgPCBE UF9USU1FT1VUX0xPT1BfQ09VTlQpIHsKPiArCQlpZiAoYW5hbG9naXhfZHBfZ2V0X3BsdWdfaW5f c3RhdHVzKGRwKSA9PSAwKQo+ICsJCQlyZXR1cm4gMDsKPiArCj4gIAkJdGltZW91dF9sb29wKys7 Cj4gLQkJaWYgKHRpbWVvdXRfbG9vcCA+IERQX1RJTUVPVVRfTE9PUF9DT1VOVCkgewo+IC0JCQlk ZXZfZXJyKGRwLT5kZXYsICJmYWlsZWQgdG8gZ2V0IGhwZCBwbHVnIHN0YXR1c1xuIik7Cj4gLQkJ CXJldHVybiAtRVRJTUVET1VUOwo+IC0JCX0KPiAgCQl1c2xlZXBfcmFuZ2UoMTAsIDExKTsKPiAg CX0KPiAgCj4gKwkvKgo+ICsJICogU29tZSBlZHAgc2NyZWVuIGRvIG5vdCBoYXZlIGhwZCBzaWdu YWwsIHNvIHdlIGNhbid0IGp1c3QKPiArCSAqIHJldHVybiBmYWlsZWQgd2hlbiBocGQgcGx1ZyBp biBkZXRlY3QgZmFpbGVkLCBEVCBwcm9wZXJ0eQo+ICsJICogIm5lZWQtZm9yY2UtaHBkIiB3b3Vs ZCBpbmRpY2F0ZSB3aGV0aGVyIGRyaXZlciBuZWVkIHRoaXMuCj4gKwkgKi8KPiArCWlmICghZHAt PmZvcmNlX2hwZCkKPiArCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiArCj4gKwkvKgo+ICsJICogVGhl IGVEUCBUUk0gaW5kaWNhdGUgdGhhdCBpZiBIUERfU1RBVFVTKFJPKSBpcyAwLCBBVVggQ0gKPiAr CSAqIHdpbGwgbm90IHdvcmssIHNvIHdlIG5lZWQgdG8gZ2l2ZSBhIGZvcmNlIGhwZCBhY3Rpb24g dG8KPiArCSAqIHNldCBIUERfU1RBVFVTIG1hbnVhbGx5Lgo+ICsJICovCj4gKwlkZXZfZGJnKGRw LT5kZXYsICJmYWlsZWQgdG8gZ2V0IGhwZCBwbHVnIHN0YXR1cywgdHJ5IHRvIGZvcmNlIGhwZFxu Iik7Cj4gKwo+ICsJYW5hbG9naXhfZHBfZm9yY2VfaHBkKGRwKTsKPiArCj4gKwlpZiAoYW5hbG9n aXhfZHBfZ2V0X3BsdWdfaW5fc3RhdHVzKGRwKSAhPSAwKSB7Cj4gKwkJZGV2X2VycihkcC0+ZGV2 LCAiZmFpbGVkIHRvIGdldCBocGQgcGx1ZyBpbiBzdGF0dXNcbiIpOwo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsJfQo+ICsKPiArCWRldl9kYmcoZHAtPmRldiwgInN1Y2Nlc3MgdG8gZ2V0IHBsdWcg aW4gc3RhdHVzIGFmdGVyIGZvcmNlIGhwZFxuIik7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gQEAgLTEyNDYsNiArMTI2OSw4IEBAIGludCBhbmFsb2dpeF9kcF9iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCj4gIAlpZiAoSVNfRVJSKGRwLT5y ZWdfYmFzZSkpCj4gIAkJcmV0dXJuIFBUUl9FUlIoZHAtPnJlZ19iYXNlKTsKPiAgCj4gKwlkcC0+ Zm9yY2VfaHBkID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi0+b2Zfbm9kZSwgImZvcmNlLWhw ZCIpOwo+ICsKPiAgCWRwLT5ocGRfZ3BpbyA9IG9mX2dldF9uYW1lZF9ncGlvKGRldi0+b2Zfbm9k ZSwgImhwZC1ncGlvcyIsIDApOwo+ICAJaWYgKCFncGlvX2lzX3ZhbGlkKGRwLT5ocGRfZ3Bpbykp Cj4gIAkJZHAtPmhwZF9ncGlvID0gb2ZfZ2V0X25hbWVkX2dwaW8oZGV2LT5vZl9ub2RlLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2Nv cmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5o Cj4gaW5kZXggZTZmODI0My4uMDdlMTQ3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5oCj4gQEAgLTE2MCw2ICsxNjAsNyBA QCBzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlIHsKPiAgCXN0cnVjdCBwaHkJCSpwaHk7Cj4gIAlp bnQJCQlkcG1zX21vZGU7Cj4gIAlpbnQJCQlocGRfZ3BpbzsKPiArCWJvb2wgICAgICAgICAgICAg ICAgICAgIGZvcmNlX2hwZDsKPiAgCj4gIAlzdHJ1Y3QgYW5hbG9naXhfZHBfcGxhdF9kYXRhICpw bGF0X2RhdGE7Cj4gIH07Cj4gQEAgLTE4MCw2ICsxODEsNyBAQCB2b2lkIGFuYWxvZ2l4X2RwX3Nl dF9hbmFsb2dfcG93ZXJfZG93bihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCwKPiAgCQkJ CSAgICAgICBib29sIGVuYWJsZSk7Cj4gIHZvaWQgYW5hbG9naXhfZHBfaW5pdF9hbmFsb2dfZnVu YyhzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Cj4gIHZvaWQgYW5hbG9naXhfZHBfaW5p dF9ocGQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwo+ICt2b2lkIGFuYWxvZ2l4X2Rw X2ZvcmNlX2hwZChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Cj4gIGVudW0gZHBfaXJx X3R5cGUgYW5hbG9naXhfZHBfZ2V0X2lycV90eXBlKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2Ug KmRwKTsKPiAgdm9pZCBhbmFsb2dpeF9kcF9jbGVhcl9ob3RwbHVnX2ludGVycnVwdHMoc3RydWN0 IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwo+ICB2b2lkIGFuYWxvZ2l4X2RwX3Jlc2V0X2F1eChz dHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX3JlZy5jCj4gaW5kZXggMjFhMzI4Ny4uYzdlMjk1 OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4 X2RwX3JlZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dp eF9kcF9yZWcuYwo+IEBAIC0zNjUsNiArMzY1LDE1IEBAIHZvaWQgYW5hbG9naXhfZHBfaW5pdF9o cGQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCj4gIAl3cml0ZWwocmVnLCBkcC0+cmVn X2Jhc2UgKyBBTkFMT0dJWF9EUF9TWVNfQ1RMXzMpOwo+ICB9Cj4gIAo+ICt2b2lkIGFuYWxvZ2l4 X2RwX2ZvcmNlX2hwZChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKPiArewo+ICsJdTMy IHJlZzsKPiArCj4gKwlyZWcgPSByZWFkbChkcC0+cmVnX2Jhc2UgKyBBTkFMT0dJWF9EUF9TWVNf Q1RMXzMpOwo+ICsJcmVnID0gKEZfSFBEIHwgSFBEX0NUUkwpOwo+ICsJd3JpdGVsKHJlZywgZHAt PnJlZ19iYXNlICsgQU5BTE9HSVhfRFBfU1lTX0NUTF8zKTsKPiArfQo+ICsKPiAgZW51bSBkcF9p cnFfdHlwZSBhbmFsb2dpeF9kcF9nZXRfaXJxX3R5cGUoc3RydWN0IGFuYWxvZ2l4X2RwX2Rldmlj ZSAqZHApCj4gIHsKPiAgCXUzMiByZWc7Cj4gLS0gCj4gMS45LjEKPiAKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: robh@kernel.org (Rob Herring) Date: Tue, 8 Dec 2015 22:25:40 -0600 Subject: [PATCH v10.1 14/17] drm: bridge: analogix/dp: try force hpd after plug in lookup failed In-Reply-To: <1449627039-15689-1-git-send-email-ykk@rock-chips.com> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> <1449627039-15689-1-git-send-email-ykk@rock-chips.com> Message-ID: <20151209042540.GA14415@rob-hp-laptop> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Dec 09, 2015 at 10:10:39AM +0800, Yakir Yang wrote: > Some edp screen do not have hpd signal, so we can't just return > failed when hpd plug in detect failed. > > This is an hardware property, so we need add a devicetree property > "analogix,need-force-hpd" to indicate this sutiation. > > Signed-off-by: Yakir Yang > Tested-by: Javier Martinez Canillas Acked-by: Rob Herring > --- > Changes in v10.1: > - Rename the "analogix,need-force-hpd" to common 'force-hpd' (Rob) > > Changes in v9: None > Changes in v8: None > Changes in v7: None > Changes in v6: None > Changes in v5: None > Changes in v4: None > Changes in v3: > - Add "analogix,need-force-hpd" to indicate whether driver need foce > hpd when hpd detect failed. > > Changes in v2: None > > .../bindings/display/bridge/analogix_dp.txt | 4 ++- > .../bindings/display/exynos/exynos_dp.txt | 1 + > .../display/rockchip/analogix_dp-rockchip.txt | 1 + > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 35 ++++++++++++++++++---- > drivers/gpu/drm/bridge/analogix/analogix_dp_core.h | 2 ++ > drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 9 ++++++ > 6 files changed, 46 insertions(+), 6 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt > index 7659a7a..4f2ba8c 100644 > --- a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt > +++ b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt > @@ -22,6 +22,9 @@ Required properties for dp-controller: > from general PHY binding: Should be "dp". > > Optional properties for dp-controller: > + -force-hpd: > + Indicate driver need force hpd when hpd detect failed, this > + is used for some eDP screen which don't have hpd signal. > -hpd-gpios: > Hotplug detect GPIO. > Indicates which GPIO should be used for hotplug detection > @@ -31,7 +34,6 @@ Optional properties for dp-controller: > * Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > * Documentation/devicetree/bindings/video/analogix_dp-rockchip.txt > > - > [1]: Documentation/devicetree/bindings/media/video-interfaces.txt > ------------------------------------------------------------------------------- > > diff --git a/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt b/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > index 9905081..8800164 100644 > --- a/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > +++ b/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > @@ -41,6 +41,7 @@ For the below properties, please refer to Analogix DP binding document: > -phys (required) > -phy-names (required) > -hpd-gpios (optional) > + -analogix,need-force-hpd (optional) > -video interfaces (optional) > > Deprecated properties for DisplayPort: > diff --git a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt > index dae86c4..187a708e 100644 > --- a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt > +++ b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt > @@ -32,6 +32,7 @@ For the below properties, please refer to Analogix DP binding document: > - phys (required) > - phy-names (required) > - hpd-gpios (optional) > +- force-hpd (optional) > ------------------------------------------------------------------------------- > > Example: > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > index a11504b..00aee44 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > @@ -59,15 +59,38 @@ static int analogix_dp_detect_hpd(struct analogix_dp_device *dp) > { > int timeout_loop = 0; > > - while (analogix_dp_get_plug_in_status(dp) != 0) { > + while (timeout_loop < DP_TIMEOUT_LOOP_COUNT) { > + if (analogix_dp_get_plug_in_status(dp) == 0) > + return 0; > + > timeout_loop++; > - if (timeout_loop > DP_TIMEOUT_LOOP_COUNT) { > - dev_err(dp->dev, "failed to get hpd plug status\n"); > - return -ETIMEDOUT; > - } > usleep_range(10, 11); > } > > + /* > + * Some edp screen do not have hpd signal, so we can't just > + * return failed when hpd plug in detect failed, DT property > + * "need-force-hpd" would indicate whether driver need this. > + */ > + if (!dp->force_hpd) > + return -ETIMEDOUT; > + > + /* > + * The eDP TRM indicate that if HPD_STATUS(RO) is 0, AUX CH > + * will not work, so we need to give a force hpd action to > + * set HPD_STATUS manually. > + */ > + dev_dbg(dp->dev, "failed to get hpd plug status, try to force hpd\n"); > + > + analogix_dp_force_hpd(dp); > + > + if (analogix_dp_get_plug_in_status(dp) != 0) { > + dev_err(dp->dev, "failed to get hpd plug in status\n"); > + return -EINVAL; > + } > + > + dev_dbg(dp->dev, "success to get plug in status after force hpd\n"); > + > return 0; > } > > @@ -1246,6 +1269,8 @@ int analogix_dp_bind(struct device *dev, struct drm_device *drm_dev, > if (IS_ERR(dp->reg_base)) > return PTR_ERR(dp->reg_base); > > + dp->force_hpd = of_property_read_bool(dev->of_node, "force-hpd"); > + > dp->hpd_gpio = of_get_named_gpio(dev->of_node, "hpd-gpios", 0); > if (!gpio_is_valid(dp->hpd_gpio)) > dp->hpd_gpio = of_get_named_gpio(dev->of_node, > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > index e6f8243..07e147c 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > @@ -160,6 +160,7 @@ struct analogix_dp_device { > struct phy *phy; > int dpms_mode; > int hpd_gpio; > + bool force_hpd; > > struct analogix_dp_plat_data *plat_data; > }; > @@ -180,6 +181,7 @@ void analogix_dp_set_analog_power_down(struct analogix_dp_device *dp, > bool enable); > void analogix_dp_init_analog_func(struct analogix_dp_device *dp); > void analogix_dp_init_hpd(struct analogix_dp_device *dp); > +void analogix_dp_force_hpd(struct analogix_dp_device *dp); > enum dp_irq_type analogix_dp_get_irq_type(struct analogix_dp_device *dp); > void analogix_dp_clear_hotplug_interrupts(struct analogix_dp_device *dp); > void analogix_dp_reset_aux(struct analogix_dp_device *dp); > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > index 21a3287..c7e2959 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > @@ -365,6 +365,15 @@ void analogix_dp_init_hpd(struct analogix_dp_device *dp) > writel(reg, dp->reg_base + ANALOGIX_DP_SYS_CTL_3); > } > > +void analogix_dp_force_hpd(struct analogix_dp_device *dp) > +{ > + u32 reg; > + > + reg = readl(dp->reg_base + ANALOGIX_DP_SYS_CTL_3); > + reg = (F_HPD | HPD_CTRL); > + writel(reg, dp->reg_base + ANALOGIX_DP_SYS_CTL_3); > +} > + > enum dp_irq_type analogix_dp_get_irq_type(struct analogix_dp_device *dp) > { > u32 reg; > -- > 1.9.1 > > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753021AbbLIE0T (ORCPT ); Tue, 8 Dec 2015 23:26:19 -0500 Received: from mail.kernel.org ([198.145.29.136]:43065 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751723AbbLIEZr (ORCPT ); Tue, 8 Dec 2015 23:25:47 -0500 Date: Tue, 8 Dec 2015 22:25:40 -0600 From: Rob Herring To: Yakir Yang Cc: Inki Dae , Mark Yao , Jingoo Han , Heiko Stuebner , devicetree@vger.kernel.org, Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Russell King , javier@osg.samsung.com, emil.l.velikov@gmail.com, Seung-Woo Kim , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Kishon Vijay Abraham I , linux-rockchip@lists.infradead.org, Andrzej Hajda , Kyungmin Park , ajaynumb@gmail.com, Andy Yan , Thierry Reding , Gustavo Padovan , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v10.1 14/17] drm: bridge: analogix/dp: try force hpd after plug in lookup failed Message-ID: <20151209042540.GA14415@rob-hp-laptop> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> <1449627039-15689-1-git-send-email-ykk@rock-chips.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1449627039-15689-1-git-send-email-ykk@rock-chips.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 09, 2015 at 10:10:39AM +0800, Yakir Yang wrote: > Some edp screen do not have hpd signal, so we can't just return > failed when hpd plug in detect failed. > > This is an hardware property, so we need add a devicetree property > "analogix,need-force-hpd" to indicate this sutiation. > > Signed-off-by: Yakir Yang > Tested-by: Javier Martinez Canillas Acked-by: Rob Herring > --- > Changes in v10.1: > - Rename the "analogix,need-force-hpd" to common 'force-hpd' (Rob) > > Changes in v9: None > Changes in v8: None > Changes in v7: None > Changes in v6: None > Changes in v5: None > Changes in v4: None > Changes in v3: > - Add "analogix,need-force-hpd" to indicate whether driver need foce > hpd when hpd detect failed. > > Changes in v2: None > > .../bindings/display/bridge/analogix_dp.txt | 4 ++- > .../bindings/display/exynos/exynos_dp.txt | 1 + > .../display/rockchip/analogix_dp-rockchip.txt | 1 + > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 35 ++++++++++++++++++---- > drivers/gpu/drm/bridge/analogix/analogix_dp_core.h | 2 ++ > drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 9 ++++++ > 6 files changed, 46 insertions(+), 6 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt > index 7659a7a..4f2ba8c 100644 > --- a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt > +++ b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt > @@ -22,6 +22,9 @@ Required properties for dp-controller: > from general PHY binding: Should be "dp". > > Optional properties for dp-controller: > + -force-hpd: > + Indicate driver need force hpd when hpd detect failed, this > + is used for some eDP screen which don't have hpd signal. > -hpd-gpios: > Hotplug detect GPIO. > Indicates which GPIO should be used for hotplug detection > @@ -31,7 +34,6 @@ Optional properties for dp-controller: > * Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > * Documentation/devicetree/bindings/video/analogix_dp-rockchip.txt > > - > [1]: Documentation/devicetree/bindings/media/video-interfaces.txt > ------------------------------------------------------------------------------- > > diff --git a/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt b/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > index 9905081..8800164 100644 > --- a/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > +++ b/Documentation/devicetree/bindings/display/exynos/exynos_dp.txt > @@ -41,6 +41,7 @@ For the below properties, please refer to Analogix DP binding document: > -phys (required) > -phy-names (required) > -hpd-gpios (optional) > + -analogix,need-force-hpd (optional) > -video interfaces (optional) > > Deprecated properties for DisplayPort: > diff --git a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt > index dae86c4..187a708e 100644 > --- a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt > +++ b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt > @@ -32,6 +32,7 @@ For the below properties, please refer to Analogix DP binding document: > - phys (required) > - phy-names (required) > - hpd-gpios (optional) > +- force-hpd (optional) > ------------------------------------------------------------------------------- > > Example: > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > index a11504b..00aee44 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > @@ -59,15 +59,38 @@ static int analogix_dp_detect_hpd(struct analogix_dp_device *dp) > { > int timeout_loop = 0; > > - while (analogix_dp_get_plug_in_status(dp) != 0) { > + while (timeout_loop < DP_TIMEOUT_LOOP_COUNT) { > + if (analogix_dp_get_plug_in_status(dp) == 0) > + return 0; > + > timeout_loop++; > - if (timeout_loop > DP_TIMEOUT_LOOP_COUNT) { > - dev_err(dp->dev, "failed to get hpd plug status\n"); > - return -ETIMEDOUT; > - } > usleep_range(10, 11); > } > > + /* > + * Some edp screen do not have hpd signal, so we can't just > + * return failed when hpd plug in detect failed, DT property > + * "need-force-hpd" would indicate whether driver need this. > + */ > + if (!dp->force_hpd) > + return -ETIMEDOUT; > + > + /* > + * The eDP TRM indicate that if HPD_STATUS(RO) is 0, AUX CH > + * will not work, so we need to give a force hpd action to > + * set HPD_STATUS manually. > + */ > + dev_dbg(dp->dev, "failed to get hpd plug status, try to force hpd\n"); > + > + analogix_dp_force_hpd(dp); > + > + if (analogix_dp_get_plug_in_status(dp) != 0) { > + dev_err(dp->dev, "failed to get hpd plug in status\n"); > + return -EINVAL; > + } > + > + dev_dbg(dp->dev, "success to get plug in status after force hpd\n"); > + > return 0; > } > > @@ -1246,6 +1269,8 @@ int analogix_dp_bind(struct device *dev, struct drm_device *drm_dev, > if (IS_ERR(dp->reg_base)) > return PTR_ERR(dp->reg_base); > > + dp->force_hpd = of_property_read_bool(dev->of_node, "force-hpd"); > + > dp->hpd_gpio = of_get_named_gpio(dev->of_node, "hpd-gpios", 0); > if (!gpio_is_valid(dp->hpd_gpio)) > dp->hpd_gpio = of_get_named_gpio(dev->of_node, > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > index e6f8243..07e147c 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.h > @@ -160,6 +160,7 @@ struct analogix_dp_device { > struct phy *phy; > int dpms_mode; > int hpd_gpio; > + bool force_hpd; > > struct analogix_dp_plat_data *plat_data; > }; > @@ -180,6 +181,7 @@ void analogix_dp_set_analog_power_down(struct analogix_dp_device *dp, > bool enable); > void analogix_dp_init_analog_func(struct analogix_dp_device *dp); > void analogix_dp_init_hpd(struct analogix_dp_device *dp); > +void analogix_dp_force_hpd(struct analogix_dp_device *dp); > enum dp_irq_type analogix_dp_get_irq_type(struct analogix_dp_device *dp); > void analogix_dp_clear_hotplug_interrupts(struct analogix_dp_device *dp); > void analogix_dp_reset_aux(struct analogix_dp_device *dp); > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > index 21a3287..c7e2959 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c > @@ -365,6 +365,15 @@ void analogix_dp_init_hpd(struct analogix_dp_device *dp) > writel(reg, dp->reg_base + ANALOGIX_DP_SYS_CTL_3); > } > > +void analogix_dp_force_hpd(struct analogix_dp_device *dp) > +{ > + u32 reg; > + > + reg = readl(dp->reg_base + ANALOGIX_DP_SYS_CTL_3); > + reg = (F_HPD | HPD_CTRL); > + writel(reg, dp->reg_base + ANALOGIX_DP_SYS_CTL_3); > +} > + > enum dp_irq_type analogix_dp_get_irq_type(struct analogix_dp_device *dp) > { > u32 reg; > -- > 1.9.1 > > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel