From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: [RFC PATCH v2 3/3] drm/rockchip: analogix_dp: add PSR support Date: Thu, 2 Jun 2016 20:57:38 +0800 Message-ID: <1464872258-18468-1-git-send-email-ykk@rock-chips.com> References: <1464872228-18292-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: <1464872228-18292-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: Mark Yao , Heiko Stuebner , tfiga@chromium.org Cc: daniel.vetter@ffwll.ch, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Thierry Reding List-Id: linux-rockchip.vger.kernel.org TGV0IFZPUCB2Ymxhbmsgc3RhdHVzIGRlY2lkZSB3aGV0aGVyIHBhbmxlIHNob3VsZCBlbnRlciBp bnRvIG9yCmV4aXQgZnJvbSBQU1Igc3RhdHVzLiBCZWZvcmUgZURQIHN0YXJ0IHRvIGNoYW5nZSBQ U1Igc3RhdHVzLCBpdApuZWVkIHRvIHdhaXQgZm9yIFZPUCB2YWN0X2VuZCBldmVudC4gSW4gb3Jk ZXIgdG8gbGlzdGVuIHZhY3RfZW5kCmV2ZW50LCBJIGNyZWF0ZSBhIG5ldyBmaWxlIGFib3V0IFBT UiBub3RpZnkgYmV0d2VlbiBlRFAgYW5kIFZPUC4KClNpZ25lZC1vZmYtYnk6IFlha2lyIFlhbmcg PHlra0Byb2NrLWNoaXBzLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjI6Ci0gUmVtb3ZlIHZibGFuayBu b3RpZnkgb3V0IChEYW5pZWwpCi0gQ3JlYXRlIGEgcHNyX2FjdGl2ZSgpIGNhbGxiYWNrIGluIHZv cCBkYXRhIHN0cnVjdC4KCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvYW5hbG9naXhfZHAtcm9j a2NoaXAuYyB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmggICAgIHwgIDcgKysrCiBkcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX25vdGlmeS5jICB8IDU0ICsrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9ub3RpZnkuaCAgfCAyMyAr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMgICAg IHwgNDEgKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZHJtX25vdGlmeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9ub3RpZnkuaAoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9N YWtlZmlsZQppbmRleCAwNWQwNzEzLi40OWZlZThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2Vm aWxlCkBAIC0zLDcgKzMsNyBAQAogIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChE UkkpIGluIFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlci4KIAogcm9ja2NoaXBkcm0teSA6PSByb2Nr Y2hpcF9kcm1fZHJ2Lm8gcm9ja2NoaXBfZHJtX2ZiLm8gXAotCQlyb2NrY2hpcF9kcm1fZ2VtLm8g cm9ja2NoaXBfZHJtX3ZvcC5vCisJCXJvY2tjaGlwX2RybV9nZW0ubyByb2NrY2hpcF9kcm1fdm9w Lm8gcm9ja2NoaXBfZHJtX25vdGlmeS5vCiByb2NrY2hpcGRybS0kKENPTkZJR19EUk1fRkJERVZf RU1VTEFUSU9OKSArPSByb2NrY2hpcF9kcm1fZmJkZXYubwogCiBvYmotJChDT05GSUdfUk9DS0NI SVBfQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4X2RwLXJvY2tjaGlwLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLmMKaW5kZXggNGI2NDk2NC4uMjVm YjY4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJv Y2tjaGlwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tj aGlwLmMKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgInJvY2tjaGlwX2RybV9kcnYuaCIK ICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fdm9wLmgiCisjaW5jbHVkZSAicm9ja2NoaXBfZHJtX25v dGlmeS5oIgogCiAjZGVmaW5lIHRvX2RwKG5tKQljb250YWluZXJfb2Yobm0sIHN0cnVjdCByb2Nr Y2hpcF9kcF9kZXZpY2UsIG5tKQogCkBAIC01NCw2ICs1NSwxMCBAQCBzdHJ1Y3Qgcm9ja2NoaXBf ZHBfZGV2aWNlIHsKIAlzdHJ1Y3QgcmVnbWFwICAgICAgICAgICAgKmdyZjsKIAlzdHJ1Y3QgcmVz ZXRfY29udHJvbCAgICAgKnJzdDsKIAorCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0CSAqZHBfd29y a3E7CisJc3RydWN0IHdvcmtfc3RydWN0CSBwc3Jfd29yazsKKwl1bnNpZ25lZCBpbnQJCSBwc3Jf c3RhdGU7CisKIAljb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfZHBfY2hpcF9kYXRhICpkYXRhOwogCiAJ c3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSBwbGF0X2RhdGE7CkBAIC05Nyw2ICsxMDIsNDIg QEAgc3RhdGljIGludCByb2NrY2hpcF9kcF9wb3dlcmRvd24oc3RydWN0IGFuYWxvZ2l4X2RwX3Bs YXRfZGF0YSAqcGxhdF9kYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHJvY2tjaGlw X2RwX3Bzcl9hY3RpdmUoZW51bSBwc3JfYWN0aW9uIGFjdGlvbiwgdm9pZCAqcHJpdikKK3sKKwlz dHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IChzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNl ICopcHJpdjsKKworCXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBQU1JfSU5BQ1RJVkU6CisJCWRw LT5wc3Jfc3RhdGUgPSAwOworCQlicmVhazsKKwljYXNlIFBTUl9BQ1RJVkU6CisJCWRwLT5wc3Jf c3RhdGUgPSBFRFBfVlNDX1BTUl9TVEFURV9BQ1RJVkU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXJldHVybiAwOworCX0KKworCXF1ZXVlX3dvcmsoZHAtPmRwX3dvcmtxLCAmZHAtPnBzcl93b3Jr KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZHBfcHNyX3dvcmsoc3RydWN0IHdvcmtf c3RydWN0ICpwc3Jfd29yaykKK3sKKwlzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IHRv X2RwKHBzcl93b3JrKTsKKwlpbnQgcHNyX3N0YXRlID0gZHAtPnBzcl9zdGF0ZTsKKwlpbnQgcmV0 OworCisJaWYgKHBzcl9zdGF0ZSA9PSBFRFBfVlNDX1BTUl9TVEFURV9BQ1RJVkUpIHsKKwkJcmV0 ID0gcm9ja2NoaXBfcHNyX3JlYWR5X3dhaXQoKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJYW5hbG9n aXhfZHBfYWN0aWNlX3BzcihkcC0+ZGV2KTsKKwl9IGVsc2UgeworCQlyZXQgPSByb2NrY2hpcF9w c3JfcmVhZHlfd2FpdCgpOworCQlpZiAocmV0ID09IDApCisJCQlhbmFsb2dpeF9kcF9pbmFjdGlj ZV9wc3IoZHAtPmRldik7CisJfQorfQorCiBzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKIHJv Y2tjaGlwX2RwX21vZGVfdmFsaWQoc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9k YXRhLAogCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKQEAgLTEyOCw5 ICsxNjksMTggQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfbW9kZV9zZXQo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCQkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlLAogCQkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZCkKIHsKLQkvKiBkbyBub3RoaW5nICovCisJc3RydWN0IHJvY2tjaGlwX2RwX2RldmljZSAqZHAg PSB0b19kcChlbmNvZGVyKTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5jcnRj OworCXN0cnVjdCByb2NrY2hpcF9jcnRjX3N0YXRlICpzOworCisJaWYgKGNydGMpIHsKKwkJcyA9 IHRvX3JvY2tjaGlwX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCQlzLT5wc3JfYWN0aXZlID0g cm9ja2NoaXBfZHBfcHNyX2FjdGl2ZTsKKwkJcy0+cHNyX3ByaXYgPSBkcDsKKwl9CiB9CiAKKwog c3RhdGljIHZvaWQgcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IHRvX2Rw KGVuY29kZXIpOwpAQCAtMTk4LDYgKzI0OCw5IEBAIHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJCWJyZWFrOwogCX0KIAor CXMtPnBzcl9hY3RpdmUgPSByb2NrY2hpcF9kcF9wc3JfYWN0aXZlOworCXMtPnBzcl9wcml2ID0g ZHA7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzIwLDYgKzM3MywxNSBAQCBzdGF0aWMgaW50IHJv Y2tjaGlwX2RwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIs CiAJZHAtPnBsYXRfZGF0YS5wb3dlcl9vZmYgPSByb2NrY2hpcF9kcF9wb3dlcmRvd247CiAJZHAt PnBsYXRfZGF0YS5tb2RlX3ZhbGlkID0gcm9ja2NoaXBfZHBfbW9kZV92YWxpZDsKIAorCWRwLT5k cF93b3JrcSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJkcCIpOworCWlmICghZHAt PmRwX3dvcmtxKSB7CisJCWRldl9lcnIoZHAtPmRldiwgImZhaWxlZCB0byBjcmVhdGUgd29ya3F1 ZXVlXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZHAtPmRwX3dvcmtxKTsKKwl9CisKKwlkcC0+cHNy X3N0YXRlID0gMDsKKwlJTklUX1dPUksoJmRwLT5wc3Jfd29yaywgZHBfcHNyX3dvcmspOworCiAJ cmV0dXJuIGFuYWxvZ2l4X2RwX2JpbmQoZGV2LCBkcC0+ZHJtX2RldiwgJmRwLT5wbGF0X2RhdGEp OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9kcnYuaAppbmRl eCA1NmY0M2EzLi5mMWNjYzEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fZHJ2LmgKQEAgLTMxLDYgKzMxLDExIEBACiBzdHJ1Y3QgZHJtX2RldmljZTsKIHN0cnVj dCBkcm1fY29ubmVjdG9yOwogCitlbnVtIHBzcl9hY3Rpb24geworCVBTUl9BQ1RJVkUgPSAwLAor CVBTUl9JTkFDVElWRSwKK307CisKIC8qCiAgKiBSb2NrY2hpcCBkcm0gcHJpdmF0ZSBjcnRjIGZ1 bmNzLgogICogQGVuYWJsZV92Ymxhbms6IGVuYWJsZSBjcnRjIHZibGFuayBpcnEuCkBAIC01NCw2 ICs1OSw4IEBAIHN0cnVjdCByb2NrY2hpcF9jcnRjX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgYmFzZTsKIAlpbnQgb3V0cHV0X3R5cGU7CiAJaW50IG91dHB1dF9tb2RlOworCWludCAo KnBzcl9hY3RpdmUpKGVudW0gcHNyX2FjdGlvbiBhY3Rpb24sIHZvaWQgKnByaXYpOworCXZvaWQg KnBzcl9wcml2OwogfTsKICNkZWZpbmUgdG9fcm9ja2NoaXBfY3J0Y19zdGF0ZShzKSBcCiAJCWNv bnRhaW5lcl9vZihzLCBzdHJ1Y3Qgcm9ja2NoaXBfY3J0Y19zdGF0ZSwgYmFzZSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fbm90aWZ5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX25vdGlmeS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOGU5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX25vdGlmeS5jCkBAIC0wLDAgKzEsNTQgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKEMpIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby5MdGQK KyAqIEF1dGhvcjogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMuY29tPgorICoKKyAqIFRoaXMg c29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkgYmUgY29waWVkLCBkaXN0cmlidXRlZCwgYW5k IG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg Ki8KKworI2luY2x1ZGUgInJvY2tjaGlwX2RybV9ub3RpZnkuaCIKKworc3RhdGljIFJBV19OT1RJ RklFUl9IRUFEKHBzcl9yZWFkeV9jaGFpbik7CitzdGF0aWMgREVGSU5FX01VVEVYKHBzcl9yZWFk eV9sb2NrKTsKKworaW50IHJvY2tjaGlwX2RybV9wc3JfcmVhZHlfcmVnaXN0ZXJfbm90aWZpZXIo c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKK3sKKwlpbnQgcmV0ID0gMDsKKworCWlmICghbmIp CisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gcmF3X25vdGlmaWVyX2NoYWluX3JlZ2lzdGVy KCZwc3JfcmVhZHlfY2hhaW4sIG5iKTsKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTF9H UEwocm9ja2NoaXBfZHJtX3Bzcl9yZWFkeV9yZWdpc3Rlcl9ub3RpZmllcik7CisKK2ludCByb2Nr Y2hpcF9kcm1fcHNyX3JlYWR5X3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Js b2NrICpuYikKK3sKKwlpbnQgcmV0ID0gMDsKKworCWlmICghbmIpCisJCXJldHVybiAtRUlOVkFM OworCisJcmV0ID0gcmF3X25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJnBzcl9yZWFkeV9jaGFp biwgbmIpOworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChyb2NrY2hpcF9kcm1f cHNyX3JlYWR5X3VucmVnaXN0ZXJfbm90aWZpZXIpOworCitpbnQgcm9ja2NoaXBfcHNyX3JlYWR5 X3dhaXQodm9pZCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gcmF3X25vdGlmaWVyX2NhbGxfY2hh aW4oJnBzcl9yZWFkeV9jaGFpbiwgMCwgMCk7CisJaWYgKHJldCA9PSBOT1RJRllfQkFEKQorCQly ZXR1cm4gLUVUSU1FRE9VVDsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9HUEwocm9j a2NoaXBfcHNyX3JlYWR5X3dhaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV9ub3RpZnkuaCBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9kcm1fbm90aWZ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIx OTBlNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fbm90aWZ5LmgKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx NCBHb29nbGUsIEluYy4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiwg YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAorICogbWF5 IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfX1JPQ0tDSElQX0RSTV9O T1RJRllfSAorI2RlZmluZSBfX1JPQ0tDSElQX0RSTV9OT1RJRllfSAorCisjaW5jbHVkZSA8bGlu dXgvbm90aWZpZXIuaD4KKworaW50IHJvY2tjaGlwX3Bzcl9yZWFkeV93YWl0KHZvaWQpOworaW50 IHJvY2tjaGlwX2RybV9wc3JfcmVhZHlfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVy X2Jsb2NrICpuYik7CitpbnQgcm9ja2NoaXBfZHJtX3Bzcl9yZWFkeV91bnJlZ2lzdGVyX25vdGlm aWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOworCisjZW5kaWYgLyogX19ST0NLQ0hJUF9E Uk1fTk9USUZZX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9kcm1fdm9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Zv cC5jCmluZGV4IGIyYTM2ZGIuLmI1YTAxNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV92b3AuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgInJvY2tjaGlw X2RybV9nZW0uaCIKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZmIuaCIKICNpbmNsdWRlICJyb2Nr Y2hpcF9kcm1fdm9wLmgiCisjaW5jbHVkZSAicm9ja2NoaXBfZHJtX25vdGlmeS5oIgogCiAjZGVm aW5lIF9fUkVHX1NFVF9SRUxBWEVEKHgsIG9mZiwgbWFzaywgc2hpZnQsIHYsIHdyaXRlX21hc2sp IFwKIAkJdm9wX21hc2tfd3JpdGUoeCwgb2ZmLCBtYXNrLCBzaGlmdCwgdiwgd3JpdGVfbWFzaywg dHJ1ZSkKQEAgLTExNyw2ICsxMTgsMTAgQEAgc3RydWN0IHZvcCB7CiAJc3RydWN0IGNvbXBsZXRp b24gd2FpdF91cGRhdGVfY29tcGxldGU7CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQ7CiAKKwkvKiBlRFAgUFNSIGNhbGxiYWNrICovCisJaW50ICgqcHNyX2FjdGl2ZSko ZW51bSBwc3JfYWN0aW9uIGFjdGlvbiwgdm9pZCAqcHJpdik7CisJdm9pZCAqcHNyX3ByaXY7CisJ c3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBzcl9wcmVwYXJlX25iOwogCXN0cnVjdCBjb21wbGV0aW9u IGxpbmVfZmxhZ19jb21wbGV0aW9uOwogCiAJY29uc3Qgc3RydWN0IHZvcF9kYXRhICpkYXRhOwpA QCAtOTA2LDYgKzkxMSw5IEBAIHN0YXRpYyBpbnQgdm9wX2NydGNfZW5hYmxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2b3AtPmlycV9s b2NrLCBmbGFncyk7CiAKKwlpZiAodm9wLT5wc3JfYWN0aXZlKQorCQl2b3AtPnBzcl9hY3RpdmUo UFNSX0lOQUNUSVZFLCB2b3AtPnBzcl9wcml2KTsKKwogCXJldHVybiAwOwogfQogCkBAIC05MjIs NiArOTMwLDkgQEAgc3RhdGljIHZvaWQgdm9wX2NydGNfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCVZPUF9JTlRSX1NFVF9UWVBFKHZvcCwgZW5hYmxlLCBGU19JTlRSLCAw KTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZvcC0+aXJxX2xvY2ssIGZsYWdzKTsKKwor CWlmICh2b3AtPnBzcl9hY3RpdmUpCisJCXZvcC0+cHNyX2FjdGl2ZShQU1JfQUNUSVZFLCB2b3At PnBzcl9wcml2KTsKIH0KIAogc3RhdGljIHZvaWQgdm9wX2NydGNfd2FpdF9mb3JfdXBkYXRlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKQEAgLTEwNjYsNiArMTA3Nyw5IEBAIHN0YXRpYyB2b2lkIHZv cF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJY2xrX3NldF9yYXRlKHZvcC0+ ZGNsaywgYWRqdXN0ZWRfbW9kZS0+Y2xvY2sgKiAxMDAwKTsKIAogCVZPUF9DVFJMX1NFVCh2b3As IHN0YW5kYnksIDApOworCisJdm9wLT5wc3JfYWN0aXZlID0gcy0+cHNyX2FjdGl2ZTsKKwl2b3At PnBzcl9wcml2ID0gcy0+cHNyX3ByaXY7CiB9CiAKIHN0YXRpYyB2b2lkIHZvcF9jcnRjX2F0b21p Y19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCkBAIC0xMTc4LDYgKzExOTIsMzAgQEAgc3Rh dGljIHZvaWQgdm9wX2hhbmRsZV92Ymxhbmsoc3RydWN0IHZvcCAqdm9wKQogCQljb21wbGV0ZSgm dm9wLT53YWl0X3VwZGF0ZV9jb21wbGV0ZSk7CiB9CiAKK3N0YXRpYyBpbnQgcHNyX3ByZXBhcmVf bm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqcHNyX3ByZXBhcmVfbmIsCisJCQkgICAgICB1 bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qgdm9wICp2b3AgPSBj b250YWluZXJfb2YocHNyX3ByZXBhcmVfbmIsIHN0cnVjdCB2b3AsCisJCQkJICAgICAgIHBzcl9w cmVwYXJlX25iKTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZ2b3AtPmNydGMu bW9kZTsKKwlpbnQgdmFjdF9lbmQgPSBtb2RlLT52dG90YWwgLSBtb2RlLT52c3luY19zdGFydCAr IG1vZGUtPnZkaXNwbGF5OworCXVuc2lnbmVkIGxvbmcgamlmZmllc19sZWZ0OworCisJcmVpbml0 X2NvbXBsZXRpb24oJnZvcC0+bGluZV9mbGFnX2NvbXBsZXRpb24pOworCXZvcF9saW5lX2ZsYWdf aXJxX2VuYWJsZSh2b3AsIHZhY3RfZW5kKTsKKworCWppZmZpZXNfbGVmdCA9IHdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmdm9wLT5saW5lX2ZsYWdfY29tcGxldGlvbiwKKwkJCQkJCSAgIG1z ZWNzX3RvX2ppZmZpZXMoMjAwKSk7CisJdm9wX2xpbmVfZmxhZ19pcnFfZGlzYWJsZSh2b3ApOwor CisJaWYgKGppZmZpZXNfbGVmdCA9PSAwKSB7CisJCWRldl9lcnIodm9wLT5kZXYsICJUaW1lb3V0 IHdhaXRpbmcgZm9yIElSUVxuIik7CisJCXJldHVybiBOT1RJRllfQkFEOworCX0KKworCXJldHVy biBOT1RJRllfU1RPUDsKK30KKwogc3RhdGljIGlycXJldHVybl90IHZvcF9pc3IoaW50IGlycSwg dm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3Qgdm9wICp2b3AgPSBkYXRhOwpAQCAtMTMxMiw2ICsxMzUw LDkgQEAgc3RhdGljIGludCB2b3BfY3JlYXRlX2NydGMoc3RydWN0IHZvcCAqdm9wKQogCQlnb3Rv IGVycl9jbGVhbnVwX2NydGM7CiAJfQogCisJdm9wLT5wc3JfcHJlcGFyZV9uYi5ub3RpZmllcl9j YWxsID0gcHNyX3ByZXBhcmVfbm90aWZ5OworCXJvY2tjaGlwX2RybV9wc3JfcmVhZHlfcmVnaXN0 ZXJfbm90aWZpZXIoJnZvcC0+cHNyX3ByZXBhcmVfbmIpOworCiAJaW5pdF9jb21wbGV0aW9uKCZ2 b3AtPmRzcF9ob2xkX2NvbXBsZXRpb24pOwogCWluaXRfY29tcGxldGlvbigmdm9wLT53YWl0X3Vw ZGF0ZV9jb21wbGV0ZSk7CiAJaW5pdF9jb21wbGV0aW9uKCZ2b3AtPmxpbmVfZmxhZ19jb21wbGV0 aW9uKTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==