From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v5 16/36] drm/bridge: analogix_dp: Check dpcd write/read status Date: Wed, 14 Mar 2018 11:49:17 +0530 Message-ID: <216ddbe8-c044-e6e8-115a-69b5c2985a8e@codeaurora.org> References: <20180309222327.18689-1-enric.balletbo@collabora.com> <20180309222327.18689-17-enric.balletbo@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180309222327.18689-17-enric.balletbo@collabora.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Enric Balletbo i Serra , inki.dae@samsung.com, thierry.reding@gmail.com, hjc@rock-chips.com, seanpaul@chromium.org, airlied@linux.ie, tfiga@chromium.org, heiko@sntech.de Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Laurent.pinchart@ideasonboard.com, ykk@rock-chips.com, "Kristian H . Kristensen" , kernel@collabora.com, m.szyprowski@samsung.com, linux-samsung-soc@vger.kernel.org, rydberg@bitmath.org, krzk@kernel.org, linux-rockchip@lists.infradead.org, kgene@kernel.org, linux-input@vger.kernel.org, orjan.eide@arm.com, wxt@rock-chips.com, jeffy.chen@rock-chips.com, linux-arm-kernel@lists.infradead.org, mark.yao@rock-chips.com, wzz@rock-chips.com, hl@rock-chips.com, jingoohan1@gmail.com, sw0312.kim@samsung.com, dianders@chromium.org, kyungmin.park@samsung.com, kuankuan.y@gmail.com, hshi@chromium.org List-Id: linux-input@vger.kernel.org CgpPbiBTYXR1cmRheSAxMCBNYXJjaCAyMDE4IDAzOjUzIEFNLCBFbnJpYyBCYWxsZXRibyBpIFNl cnJhIHdyb3RlOgo+IEZyb206IExpbiBIdWFuZyA8aGxAcm9jay1jaGlwcy5jb20+Cj4gCj4gV2Ug bmVlZCB0byBjaGVjayB0aGUgZHBjZCB3cml0ZS9yZWFkIHJldHVybiB2YWx1ZSB0byBzZWUgd2hl dGhlciB0aGUKPiB3cml0ZS9yZWFkIHdhcyBzdWNjZXNzZnVsCj4gCgpSZXZpZXdlZC1ieTogQXJj aGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KClRoYW5rcywKQXJjaGl0Cgo+IENj OiBLcmlzdGlhbiBILiBLcmlzdGVuc2VuIDxob2Vnc2JlcmdAY2hyb21pdW0ub3JnPgo+IFNpZ25l ZC1vZmYtYnk6IExpbiBIdWFuZyA8aGxAcm9jay1jaGlwcy5jb20+Cj4gU2lnbmVkLW9mZi1ieTog emFpbiB3YW5nIDx3enpAcm9jay1jaGlwcy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRG91Z2xhcyBB bmRlcnNvbiA8ZGlhbmRlcnNAY2hyb21pdW0ub3JnPgo+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1 bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgRXNjYW5k ZSA8dGhpZXJyeS5lc2NhbmRlQGNvbGxhYm9yYS5jb20+Cj4gUmV2aWV3ZWQtYnk6IEFuZHJ6ZWog SGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRW5yaWMgQmFsbGV0 Ym8gaSBTZXJyYSA8ZW5yaWMuYmFsbGV0Ym9AY29sbGFib3JhLmNvbT4KPiBUZXN0ZWQtYnk6IE1h cmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KPiAtLS0KPiAKPiAgIGRy aXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jIHwgMTY5ICsr KysrKysrKysrKysrKystLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCsp LCA0MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fu YWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYwo+IGluZGV4IDFlZWQzNWY5ZWI4ZC4uYmU2ZWRkZDBk MGE3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9n aXhfZHBfY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFs b2dpeF9kcF9jb3JlLmMKPiBAQCAtMTYwLDgwICsxNjAsMTM3IEBAIGludCBhbmFsb2dpeF9kcF9k aXNhYmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKPiAgIH0KPiAgIEVYUE9S VF9TWU1CT0xfR1BMKGFuYWxvZ2l4X2RwX2Rpc2FibGVfcHNyKTsKPiAgIAo+IC1zdGF0aWMgYm9v bCBhbmFsb2dpeF9kcF9kZXRlY3Rfc2lua19wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAq ZHApCj4gK3N0YXRpYyBpbnQgYW5hbG9naXhfZHBfZGV0ZWN0X3NpbmtfcHNyKHN0cnVjdCBhbmFs b2dpeF9kcF9kZXZpY2UgKmRwKQo+ICAgewo+ICAgCXVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNpb247 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWRiKCZkcC0+YXV4LCBE UF9QU1JfU1VQUE9SVCwgJnBzcl92ZXJzaW9uKTsKPiArCWlmIChyZXQgIT0gMSkgewo+ICsJCWRl dl9lcnIoZHAtPmRldiwgImZhaWxlZCB0byBnZXQgUFNSIHZlcnNpb24sIGRpc2FibGUgaXRcbiIp Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gICAKPiAtCWRybV9kcF9kcGNkX3JlYWRiKCZkcC0+ YXV4LCBEUF9QU1JfU1VQUE9SVCwgJnBzcl92ZXJzaW9uKTsKPiAgIAlkZXZfZGJnKGRwLT5kZXYs ICJQYW5lbCBQU1IgdmVyc2lvbiA6ICV4XG4iLCBwc3JfdmVyc2lvbik7Cj4gICAKPiAtCXJldHVy biAocHNyX3ZlcnNpb24gJiBEUF9QU1JfSVNfU1VQUE9SVEVEKSA/IHRydWUgOiBmYWxzZTsKPiAr CWRwLT5wc3JfZW5hYmxlID0gKHBzcl92ZXJzaW9uICYgRFBfUFNSX0lTX1NVUFBPUlRFRCkgPyB0 cnVlIDogZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQg YW5hbG9naXhfZHBfZW5hYmxlX3NpbmtfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRw KQo+ICtzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9zaW5rX3BzcihzdHJ1Y3QgYW5hbG9n aXhfZHBfZGV2aWNlICpkcCkKPiAgIHsKPiAgIAl1bnNpZ25lZCBjaGFyIHBzcl9lbjsKPiArCWlu dCByZXQ7Cj4gICAKPiAgIAkvKiBEaXNhYmxlIHBzciBmdW5jdGlvbiAqLwo+IC0JZHJtX2RwX2Rw Y2RfcmVhZGIoJmRwLT5hdXgsIERQX1BTUl9FTl9DRkcsICZwc3JfZW4pOwo+ICsJcmV0ID0gZHJt X2RwX2RwY2RfcmVhZGIoJmRwLT5hdXgsIERQX1BTUl9FTl9DRkcsICZwc3JfZW4pOwo+ICsJaWYg KHJldCAhPSAxKSB7Cj4gKwkJZGV2X2VycihkcC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBwc3IgY29u ZmlnXG4iKTsKPiArCQlnb3RvIGVuZDsKPiArCX0KPiArCj4gICAJcHNyX2VuICY9IH5EUF9QU1Jf RU5BQkxFOwo+IC0JZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCBw c3JfZW4pOwo+ICsJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9QU1JfRU5f Q0ZHLCBwc3JfZW4pOwo+ICsJaWYgKHJldCAhPSAxKSB7Cj4gKwkJZGV2X2VycihkcC0+ZGV2LCAi ZmFpbGVkIHRvIGRpc2FibGUgcGFuZWwgcHNyXG4iKTsKPiArCQlnb3RvIGVuZDsKPiArCX0KPiAg IAo+ICAgCS8qIE1haW4tTGluayB0cmFuc21pdHRlciByZW1haW5zIGFjdGl2ZSBkdXJpbmcgUFNS IGFjdGl2ZSBzdGF0ZXMgKi8KPiAgIAlwc3JfZW4gPSBEUF9QU1JfTUFJTl9MSU5LX0FDVElWRSB8 IERQX1BTUl9DUkNfVkVSSUZJQ0FUSU9OOwo+IC0JZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4 LCBEUF9QU1JfRU5fQ0ZHLCBwc3JfZW4pOwo+ICsJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKCZk cC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCBwc3JfZW4pOwo+ICsJaWYgKHJldCAhPSAxKSB7Cj4gKwkJ ZGV2X2VycihkcC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBwYW5lbCBwc3JcbiIpOwo+ICsJCWdvdG8g ZW5kOwo+ICsJfQo+ICAgCj4gICAJLyogRW5hYmxlIHBzciBmdW5jdGlvbiAqLwo+ICAgCXBzcl9l biA9IERQX1BTUl9FTkFCTEUgfCBEUF9QU1JfTUFJTl9MSU5LX0FDVElWRSB8Cj4gICAJCSBEUF9Q U1JfQ1JDX1ZFUklGSUNBVElPTjsKPiAtCWRybV9kcF9kcGNkX3dyaXRlYigmZHAtPmF1eCwgRFBf UFNSX0VOX0NGRywgcHNyX2VuKTsKPiArCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlYigmZHAtPmF1 eCwgRFBfUFNSX0VOX0NGRywgcHNyX2VuKTsKPiArCWlmIChyZXQgIT0gMSkgewo+ICsJCWRldl9l cnIoZHAtPmRldiwgImZhaWxlZCB0byBzZXQgcGFuZWwgcHNyXG4iKTsKPiArCQlnb3RvIGVuZDsK PiArCX0KPiAgIAo+ICAgCWFuYWxvZ2l4X2RwX2VuYWJsZV9wc3JfY3JjKGRwKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArZW5kOgo+ICsJZGV2X2VycihkcC0+ZGV2LCAiZW5hYmxlIHBzciBmYWlsLCBm b3JjZSB0byBkaXNhYmxlIHBzclxuIik7Cj4gKwlkcC0+cHNyX2VuYWJsZSA9IGZhbHNlOwo+ICsK PiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQKPiArc3RhdGljIGludAo+ ICAgYW5hbG9naXhfZHBfZW5hYmxlX3J4X3RvX2VuaGFuY2VkX21vZGUoc3RydWN0IGFuYWxvZ2l4 X2RwX2RldmljZSAqZHAsCj4gICAJCQkJICAgICAgIGJvb2wgZW5hYmxlKQo+ICAgewo+ICAgCXU4 IGRhdGE7Cj4gKwlpbnQgcmV0Owo+ICAgCj4gLQlkcm1fZHBfZHBjZF9yZWFkYigmZHAtPmF1eCwg RFBfTEFORV9DT1VOVF9TRVQsICZkYXRhKTsKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWRiKCZk cC0+YXV4LCBEUF9MQU5FX0NPVU5UX1NFVCwgJmRhdGEpOwo+ICsJaWYgKHJldCAhPSAxKQo+ICsJ CXJldHVybiByZXQ7Cj4gICAKPiAgIAlpZiAoZW5hYmxlKQo+IC0JCWRybV9kcF9kcGNkX3dyaXRl YigmZHAtPmF1eCwgRFBfTEFORV9DT1VOVF9TRVQsCj4gLQkJCQkgICBEUF9MQU5FX0NPVU5UX0VO SEFOQ0VEX0ZSQU1FX0VOIHwKPiAtCQkJCQlEUENEX0xBTkVfQ09VTlRfU0VUKGRhdGEpKTsKPiAr CQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZWIoJmRwLT5hdXgsIERQX0xBTkVfQ09VTlRfU0VULAo+ ICsJCQkJCSBEUF9MQU5FX0NPVU5UX0VOSEFOQ0VEX0ZSQU1FX0VOIHwKPiArCQkJCQkgRFBDRF9M QU5FX0NPVU5UX1NFVChkYXRhKSk7Cj4gICAJZWxzZQo+IC0JCWRybV9kcF9kcGNkX3dyaXRlYigm ZHAtPmF1eCwgRFBfTEFORV9DT1VOVF9TRVQsCj4gLQkJCQkgICBEUENEX0xBTkVfQ09VTlRfU0VU KGRhdGEpKTsKPiArCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZWIoJmRwLT5hdXgsIERQX0xBTkVf Q09VTlRfU0VULAo+ICsJCQkJCSBEUENEX0xBTkVfQ09VTlRfU0VUKGRhdGEpKTsKPiArCj4gKwly ZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBhbmFsb2dp eF9kcF9pc19lbmhhbmNlZF9tb2RlX2F2YWlsYWJsZShzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNl ICpkcCkKPiArc3RhdGljIGludCBhbmFsb2dpeF9kcF9pc19lbmhhbmNlZF9tb2RlX2F2YWlsYWJs ZShzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCwKPiArCQkJCQkJICB1OCAqZW5oYW5jZWRf bW9kZV9zdXBwb3J0KQo+ICAgewo+ICAgCXU4IGRhdGE7Cj4gLQlpbnQgcmV0dmFsOwo+ICsJaW50 IHJldDsKPiAgIAo+IC0JZHJtX2RwX2RwY2RfcmVhZGIoJmRwLT5hdXgsIERQX01BWF9MQU5FX0NP VU5ULCAmZGF0YSk7Cj4gLQlyZXR2YWwgPSBEUENEX0VOSEFOQ0VEX0ZSQU1FX0NBUChkYXRhKTsK PiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWRiKCZkcC0+YXV4LCBEUF9NQVhfTEFORV9DT1VOVCwg JmRhdGEpOwo+ICsJaWYgKHJldCAhPSAxKSB7Cj4gKwkJKmVuaGFuY2VkX21vZGVfc3VwcG9ydCA9 IDA7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiAgIAo+IC0JcmV0dXJuIHJldHZhbDsKPiArCSpl bmhhbmNlZF9tb2RlX3N1cHBvcnQgPSBEUENEX0VOSEFOQ0VEX0ZSQU1FX0NBUChkYXRhKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9zZXRf ZW5oYW5jZWRfbW9kZShzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKPiArc3RhdGljIGlu dCBhbmFsb2dpeF9kcF9zZXRfZW5oYW5jZWRfbW9kZShzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNl ICpkcCkKPiAgIHsKPiAgIAl1OCBkYXRhOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBhbmFs b2dpeF9kcF9pc19lbmhhbmNlZF9tb2RlX2F2YWlsYWJsZShkcCwgJmRhdGEpOwo+ICsJaWYgKHJl dCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBhbmFsb2dpeF9kcF9lbmFibGVf cnhfdG9fZW5oYW5jZWRfbW9kZShkcCwgZGF0YSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1 cm4gcmV0Owo+ICAgCj4gLQlkYXRhID0gYW5hbG9naXhfZHBfaXNfZW5oYW5jZWRfbW9kZV9hdmFp bGFibGUoZHApOwo+IC0JYW5hbG9naXhfZHBfZW5hYmxlX3J4X3RvX2VuaGFuY2VkX21vZGUoZHAs IGRhdGEpOwo+ICAgCWFuYWxvZ2l4X2RwX2VuYWJsZV9lbmhhbmNlZF9tb2RlKGRwLCBkYXRhKTsK PiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF90 cmFpbmluZ19wYXR0ZXJuX2RpcyhzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKPiArc3Rh dGljIGludCBhbmFsb2dpeF9kcF90cmFpbmluZ19wYXR0ZXJuX2RpcyhzdHJ1Y3QgYW5hbG9naXhf ZHBfZGV2aWNlICpkcCkKPiAgIHsKPiArCWludCByZXQ7Cj4gKwo+ICAgCWFuYWxvZ2l4X2RwX3Nl dF90cmFpbmluZ19wYXR0ZXJuKGRwLCBEUF9OT05FKTsKPiAgIAo+IC0JZHJtX2RwX2RwY2Rfd3Jp dGViKCZkcC0+YXV4LCBEUF9UUkFJTklOR19QQVRURVJOX1NFVCwKPiAtCQkJICAgRFBfVFJBSU5J TkdfUEFUVEVSTl9ESVNBQkxFKTsKPiArCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlYigmZHAtPmF1 eCwgRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVQsCj4gKwkJCQkgRFBfVFJBSU5JTkdfUEFUVEVSTl9E SVNBQkxFKTsKPiArCj4gKwlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyB2b2lkCj4gQEAgLTI4Miw3ICszMzksMTEgQEAgc3RhdGljIGludCBhbmFsb2dpeF9k cF9saW5rX3N0YXJ0KHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQo+ICAgCWlmIChyZXR2 YWwgPCAwKQo+ICAgCQlyZXR1cm4gcmV0dmFsOwo+ICAgCS8qIHNldCBlbmhhbmNlZCBtb2RlIGlm IGF2YWlsYWJsZSAqLwo+IC0JYW5hbG9naXhfZHBfc2V0X2VuaGFuY2VkX21vZGUoZHApOwo+ICsJ cmV0dmFsID0gYW5hbG9naXhfZHBfc2V0X2VuaGFuY2VkX21vZGUoZHApOwo+ICsJaWYgKHJldHZh bCA8IDApIHsKPiArCQlkZXZfZXJyKGRwLT5kZXYsICJmYWlsZWQgdG8gc2V0IGVuaGFuY2UgbW9k ZVxuIik7Cj4gKwkJcmV0dXJuIHJldHZhbDsKPiArCX0KPiAgIAo+ICAgCS8qIFNldCBUWCBwcmUt ZW1waGFzaXMgdG8gbWluaW11bSAqLwo+ICAgCWZvciAobGFuZSA9IDA7IGxhbmUgPCBsYW5lX2Nv dW50OyBsYW5lKyspCj4gQEAgLTU2NywxMCArNjI4LDExIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhf ZHBfcHJvY2Vzc19lcXVhbGl6ZXJfdHJhaW5pbmcoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAq ZHApCj4gICAKPiAgIAlpZiAoIWFuYWxvZ2l4X2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMs IGxpbmtfYWxpZ24sIGxhbmVfY291bnQpKSB7Cj4gICAJCS8qIHRyYWluZyBwYXR0ZXJuIFNldCB0 byBOb3JtYWwgKi8KPiAtCQlhbmFsb2dpeF9kcF90cmFpbmluZ19wYXR0ZXJuX2RpcyhkcCk7Cj4g KwkJcmV0dmFsID0gYW5hbG9naXhfZHBfdHJhaW5pbmdfcGF0dGVybl9kaXMoZHApOwo+ICsJCWlm IChyZXR2YWwgPCAwKQo+ICsJCQlyZXR1cm4gcmV0dmFsOwo+ICAgCj4gICAJCWRldl9pbmZvKGRw LT5kZXYsICJMaW5rIFRyYWluaW5nIHN1Y2Nlc3MhXG4iKTsKPiAtCj4gICAJCWFuYWxvZ2l4X2Rw X2dldF9saW5rX2JhbmR3aWR0aChkcCwgJnJlZyk7Cj4gICAJCWRwLT5saW5rX3RyYWluLmxpbmtf cmF0ZSA9IHJlZzsKPiAgIAkJZGV2X2RiZyhkcC0+ZGV2LCAiZmluYWwgYmFuZHdpZHRoID0gJS4y eFxuIiwKPiBAQCAtODY3LDI0ICs5MjksMzIgQEAgc3RhdGljIGludCBhbmFsb2dpeF9kcF9jb25m aWdfdmlkZW8oc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCj4gICAJcmV0dXJuIDA7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfZW5hYmxlX3NjcmFtYmxlKHN0cnVj dCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwLAo+IC0JCQkJCWJvb2wgZW5hYmxlKQo+ICtzdGF0aWMg aW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9zY3JhbWJsZShzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNl ICpkcCwKPiArCQkJCSAgICAgICBib29sIGVuYWJsZSkKPiAgIHsKPiAgIAl1OCBkYXRhOwo+ICsJ aW50IHJldDsKPiAgIAo+ICAgCWlmIChlbmFibGUpIHsKPiAgIAkJYW5hbG9naXhfZHBfZW5hYmxl X3NjcmFtYmxpbmcoZHApOwo+ICAgCj4gLQkJZHJtX2RwX2RwY2RfcmVhZGIoJmRwLT5hdXgsIERQ X1RSQUlOSU5HX1BBVFRFUk5fU0VULCAmZGF0YSk7Cj4gLQkJZHJtX2RwX2RwY2Rfd3JpdGViKCZk cC0+YXV4LCBEUF9UUkFJTklOR19QQVRURVJOX1NFVCwKPiArCQlyZXQgPSBkcm1fZHBfZHBjZF9y ZWFkYigmZHAtPmF1eCwgRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVQsCj4gKwkJCQkJJmRhdGEpOwo+ ICsJCWlmIChyZXQgIT0gMSkKPiArCQkJcmV0dXJuIHJldDsKPiArCQlyZXQgPSBkcm1fZHBfZHBj ZF93cml0ZWIoJmRwLT5hdXgsIERQX1RSQUlOSU5HX1BBVFRFUk5fU0VULAo+ICAgCQkJCSAgICh1 OCkoZGF0YSAmIH5EUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSkpOwo+ICAgCX0gZWxzZSB7Cj4g ICAJCWFuYWxvZ2l4X2RwX2Rpc2FibGVfc2NyYW1ibGluZyhkcCk7Cj4gICAKPiAtCQlkcm1fZHBf ZHBjZF9yZWFkYigmZHAtPmF1eCwgRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVQsICZkYXRhKTsKPiAt CQlkcm1fZHBfZHBjZF93cml0ZWIoJmRwLT5hdXgsIERQX1RSQUlOSU5HX1BBVFRFUk5fU0VULAo+ ICsJCXJldCA9IGRybV9kcF9kcGNkX3JlYWRiKCZkcC0+YXV4LCBEUF9UUkFJTklOR19QQVRURVJO X1NFVCwKPiArCQkJCQkmZGF0YSk7Cj4gKwkJaWYgKHJldCAhPSAxKQo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsJCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlYigmZHAtPmF1eCwgRFBfVFJBSU5JTkdfUEFU VEVSTl9TRVQsCj4gICAJCQkJICAgKHU4KShkYXRhIHwgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FC TEUpKTsKPiAgIAl9Cj4gKwlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyBpcnFyZXR1cm5fdCBhbmFsb2dpeF9kcF9oYXJkaXJxKGludCBpcnEsIHZvaWQgKmFy ZykKPiBAQCAtOTM5LDIzICsxMDA5LDM2IEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfY29tbWl0 KHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCX0K PiAgIAo+IC0JYW5hbG9naXhfZHBfZW5hYmxlX3NjcmFtYmxlKGRwLCAxKTsKPiArCXJldCA9IGFu YWxvZ2l4X2RwX2VuYWJsZV9zY3JhbWJsZShkcCwgMSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJ CWRldl9lcnIoZHAtPmRldiwgImNhbiBub3QgZW5hYmxlIHNjcmFtYmxlXG4iKTsKPiArCQlyZXR1 cm4gcmV0Owo+ICsJfQo+ICAgCj4gICAJYW5hbG9naXhfZHBfaW5pdF92aWRlbyhkcCk7Cj4gICAJ cmV0ID0gYW5hbG9naXhfZHBfY29uZmlnX3ZpZGVvKGRwKTsKPiAtCWlmIChyZXQpCj4gKwlpZiAo cmV0KSB7Cj4gICAJCWRldl9lcnIoZHAtPmRldiwgInVuYWJsZSB0byBjb25maWcgdmlkZW9cbiIp Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gICAKPiAgIAkvKiBTYWZlIHRvIGVuYWJsZSB0aGUg cGFuZWwgbm93ICovCj4gICAJaWYgKGRwLT5wbGF0X2RhdGEtPnBhbmVsKSB7Cj4gLQkJaWYgKGRy bV9wYW5lbF9lbmFibGUoZHAtPnBsYXRfZGF0YS0+cGFuZWwpKQo+ICsJCXJldCA9IGRybV9wYW5l bF9lbmFibGUoZHAtPnBsYXRfZGF0YS0+cGFuZWwpOwo+ICsJCWlmIChyZXQpIHsKPiAgIAkJCURS TV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSB0aGUgcGFuZWxcbiIpOwo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsJCX0KPiAgIAl9Cj4gICAKPiAtCWRwLT5wc3JfZW5hYmxlID0gYW5hbG9naXhfZHBfZGV0 ZWN0X3NpbmtfcHNyKGRwKTsKPiArCXJldCA9IGFuYWxvZ2l4X2RwX2RldGVjdF9zaW5rX3Bzcihk cCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAgCWlmIChkcC0+cHNyX2Vu YWJsZSkKPiAtCQlhbmFsb2dpeF9kcF9lbmFibGVfc2lua19wc3IoZHApOwo+IC0JcmV0dXJuIDA7 Cj4gKwkJcmV0ID0gYW5hbG9naXhfZHBfZW5hYmxlX3NpbmtfcHNyKGRwKTsKPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICAgfQo+ICAgCj4gICAvKgo+IEBAIC0xMTg1LDggKzEyNjgsMTAgQEAgc3RhdGlj IGludCBhbmFsb2dpeF9kcF9zZXRfYnJpZGdlKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRw KQo+ICAgCX0KPiAgIAo+ICAgCXJldCA9IGFuYWxvZ2l4X2RwX2NvbW1pdChkcCk7Cj4gLQlpZiAo cmV0KQo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiZHAgY29tbWl0IGVycm9yLCByZXQg PSAlZFxuIiwgcmV0KTsKPiAgIAkJZ290byBvdXRfZHBfaW5pdDsKPiArCX0KPiAgIAo+ICAgCWVu YWJsZV9pcnEoZHAtPmlycSk7Cj4gICAJcmV0dXJuIDA7Cj4gCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=