From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: [PATCH v3 2/4] drm/rockchip: add an common abstracted PSR driver Date: Fri, 1 Jul 2016 17:19:14 +0800 Message-ID: <1467364754-21674-1-git-send-email-ykk@rock-chips.com> References: <1467364685-21390-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: <1467364685-21390-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 , Inki Dae , Jingoo Han , Heiko Stuebner , Daniel Vetter Cc: Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, emil.l.velikov@gmail.com, Doug Anderson , dri-devel@lists.freedesktop.org, Tomasz Figa , Javier Martinez Canillas , =?UTF-8?q?St=C3=A9phane=20Marchesin?= , Thierry Reding List-Id: linux-rockchip.vger.kernel.org VGhlIFBTUiBkcml2ZXIgaGF2ZSBleHBvcnRlZCBmb3VyIHN5bWJvbHMgZm9yIHNwZWNpZmljIGRl dmljZSBkcml2ZXI6Ci0gcm9ja2NoaXBfZHJtX3Bzcl9yZWdpc3RlcigpCi0gcm9ja2NoaXBfZHJt X3Bzcl91bnJlZ2lzdGVyKCkKLSByb2NrY2hpcF9kcm1fcHNyX2VuYWJsZSgpCi0gcm9ja2NoaXBf ZHJtX3Bzcl9kaXNhYmxlKCkKLSByb2NrY2hpcF9kcm1fcHNyX2ZsdXNoKCkKCkVuY29kZXIgZHJp dmVyIHNob3VsZCBjYWxsIHRoZSByZWdpc3Rlci91bnJlZ2lzdGVyIGludGVyZmFjZXMgdG8gaG9v awppdHNlbGYgaW50byBjb21tb24gUFNSIGRyaXZlciwgZW5jb2RlciBoYXZlIGltcGxlbWVudCB0 aGUgJ3Bzcl9zZXQnCmNhbGxiYWNrIHdoaWNoIHVzZSB0aGUgc2V0IFBTUiBzdGF0ZSBpbiBoYXJk d2FyZSBzaWRlLgoKQ3J0YyBkcml2ZXIgd291bGQgY2FsbCB0aGUgZW5hYmxlL2Rpc2FibGUgaW50 ZXJmYWNlcyB3aGVuIHZibGFuayBpcwplbmFibGUvZGlzYWJsZSwgYWZ0ZXIgdGhhdCB0aGUgY29t bW9uIFBTUiBkcml2ZXIgd291bGQgY2FsbCB0aGUgZW5jb2RlcgpyZWdpc3RlcmVkIGNhbGxiYWNr IHRvIHNldCB0aGUgUFNSIHN0YXRlLgoKRmIgZHJpdmVyIHdvdWxkIGNhbGwgdGhlIGZsdXNoIGlu dGVyZmFjZSBpbiAnZmItPmRpcnR5JyBjYWxsYmFjaywgdGhpcwpoZWxwZXIgZnVuY3Rpb24gd291 bGQgZm9yY2UgYWxsIFBTUiBlbmFibGVkIGVuY29kZXJzIHRvIGV4aXQgZnJvbSBQU1IKZm9yIDMg c2Vjb25kcy4KClNpZ25lZC1vZmYtYnk6IFlha2lyIFlhbmcgPHlra0Byb2NrLWNoaXBzLmNvbT4K LS0tCkNoYW5nZXMgaW4gdjM6Ci0gc3BsaXQgdGhlIHBzciBmbG93IGludG8gYW4gY29tbW9uIGFi c3RyYWN0ZWQgUFNSIGRyaXZlcgotIGltcGxlbWVudCB0aGUgJ2ZiLT5kaXJ0eScgY2FsbGJhY2sg ZnVuY3Rpb24gKERhbmllbCkKLSBhdm9pZCB0byB1c2Ugbm90aWZ5IHRvIGFjcWl1cmUgZm9yIHZh Y3QgZXZlbnQgKERhbmllbCkKLSByZW1vdmUgcHNyX2FjdGl2ZSgpIGNhbGxiYWNrIHdoaWNoIGlu dHJvZHVjZSBpbiB2MgoKQ2hhbmdlcyBpbiB2MjogTm9uZQoKIGRyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9NYWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fZmIuYyAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF9kcm1fcHNyLmMgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3IuaCB8ICAxMiArKwogZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYyB8ICAyNCArKysrCiA1IGZpbGVz IGNoYW5nZWQsIDI0OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3IuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmgK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvTWFrZWZpbGUKaW5kZXggMDVkMDcxMy4uOTc0NjM2NSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9NYWtlZmlsZQpAQCAtMyw3ICszLDcgQEAKICMgRGlyZWN0IFJlbmRlcmlu ZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuCiAKIHJv Y2tjaGlwZHJtLXkgOj0gcm9ja2NoaXBfZHJtX2Rydi5vIHJvY2tjaGlwX2RybV9mYi5vIFwKLQkJ cm9ja2NoaXBfZHJtX2dlbS5vIHJvY2tjaGlwX2RybV92b3AubworCQlyb2NrY2hpcF9kcm1fZ2Vt Lm8gcm9ja2NoaXBfZHJtX3Bzci5vIHJvY2tjaGlwX2RybV92b3Aubwogcm9ja2NoaXBkcm0tJChD T05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gcm9ja2NoaXBfZHJtX2ZiZGV2Lm8KIAogb2Jq LSQoQ09ORklHX1JPQ0tDSElQX0FOQUxPR0lYX0RQKSArPSBhbmFsb2dpeF9kcC1yb2NrY2hpcC5v CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKaW5kZXggMjBmMTJi Yy4uMGZlYzE4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIu YwpAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Rydi5oIgogI2lu Y2x1ZGUgInJvY2tjaGlwX2RybV9nZW0uaCIKKyNpbmNsdWRlICJyb2NrY2hpcF9kcm1fcHNyLmgi CiAKICNkZWZpbmUgdG9fcm9ja2NoaXBfZmIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCByb2Nr Y2hpcF9kcm1fZmIsIGZiKQogCkBAIC02Niw5ICs2NywyMCBAQCBzdGF0aWMgaW50IHJvY2tjaGlw X2RybV9mYl9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCQkJCSAg ICAgcm9ja2NoaXBfZmItPm9ialswXSwgaGFuZGxlKTsKIH0KIAorc3RhdGljIGludCByb2NrY2hp cF9kcm1fZmJfZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkJIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSwKKwkJCQkgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgY29s b3IsCisJCQkJIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcywKKwkJCQkgdW5zaWduZWQgaW50 IG51bV9jbGlwcykKK3sKKwlyb2NrY2hpcF9kcm1fcHNyX2ZsdXNoKCk7CisJcmV0dXJuIDA7Cit9 CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIHJvY2tjaGlwX2Ry bV9mYl9mdW5jcyA9IHsKIAkuZGVzdHJveQk9IHJvY2tjaGlwX2RybV9mYl9kZXN0cm95LAogCS5j cmVhdGVfaGFuZGxlCT0gcm9ja2NoaXBfZHJtX2ZiX2NyZWF0ZV9oYW5kbGUsCisJLmRpcnR5CQk9 IHJvY2tjaGlwX2RybV9mYl9kaXJ0eSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3Qgcm9ja2NoaXBfZHJt X2ZiICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1f cHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNDQ0NDMKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5jCkBAIC0wLDAgKzEs MjAwIEBACisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorCisjaW5jbHVkZSAicm9j a2NoaXBfZHJtX3Bzci5oIgorCisjZGVmaW5lIFBTUl9GTFVTSF9USU1FT1VUCW1zZWNzX3RvX2pp ZmZpZXMoMzAwMCkgLyogMyBzZWNvbmRzICovCisKK3N0YXRpYyBMSVNUX0hFQUQocHNyX2xpc3Qp Oworc3RhdGljIERFRklORV9NVVRFWChwc3JfbGlzdF9tdXRleCk7CisKK2VudW0gcHNyX3N0YXRl IHsKKwlQU1JfRkxVU0gsCisJUFNSX0VOQUJMRSwKKwlQU1JfRElTQUJMRSwKK307CisKK3N0cnVj dCBwc3JfZHJ2IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJZW51bSBwc3Jfc3RhdGUgc3Rh dGU7CisJc3RydWN0IG11dGV4IHN0YXRlX211dGV4OworCisJc3RydWN0IHRpbWVyX2xpc3QgZmx1 c2hfdGltZXI7CisKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CisJaW50ICgqc2V0KShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGJvb2wgZW5hYmxlKTsKK307CisKK3N0YXRpYyBz dHJ1Y3QgcHNyX2RydiAqZmluZF9wc3JfYnlfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7 CisJc3RydWN0IHBzcl9kcnYgKnBzcjsKKworCW11dGV4X2xvY2soJnBzcl9saXN0X211dGV4KTsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBzciwgJnBzcl9saXN0LCBsaXN0KSB7CisJCWlmIChwc3It PmVuY29kZXItPmNydGMgPT0gY3J0YykgeworCQkJbXV0ZXhfdW5sb2NrKCZwc3JfbGlzdF9tdXRl eCk7CisJCQlyZXR1cm4gcHNyOworCQl9CisJfQorCW11dGV4X3VubG9jaygmcHNyX2xpc3RfbXV0 ZXgpOworCisJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cit9CisKK3N0YXRpYyB2b2lkIHBzcl9l bmFibGUoc3RydWN0IHBzcl9kcnYgKnBzcikKK3sKKwlpZiAocHNyLT5zdGF0ZSA9PSBQU1JfRU5B QkxFKQorCQlyZXR1cm47CisKKwltdXRleF9sb2NrKCZwc3ItPnN0YXRlX211dGV4KTsKKwlwc3It PnN0YXRlID0gUFNSX0VOQUJMRTsKKwlwc3ItPnNldChwc3ItPmVuY29kZXIsIHRydWUpOworCW11 dGV4X3VubG9jaygmcHNyLT5zdGF0ZV9tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkIHBzcl9kaXNh YmxlKHN0cnVjdCBwc3JfZHJ2ICpwc3IpCit7CisJaWYgKHBzci0+c3RhdGUgPT0gUFNSX0RJU0FC TEUpCisJCXJldHVybjsKKworCW11dGV4X2xvY2soJnBzci0+c3RhdGVfbXV0ZXgpOworCXBzci0+ c3RhdGUgPSBQU1JfRElTQUJMRTsKKwlwc3ItPnNldChwc3ItPmVuY29kZXIsIGZhbHNlKTsKKwlt dXRleF91bmxvY2soJnBzci0+c3RhdGVfbXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCBwc3JfZmx1 c2hfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IHBzcl9kcnYgKnBzciA9 IChzdHJ1Y3QgcHNyX2RydiAqKWRhdGE7CisKKwlpZiAoIXBzciB8fCBwc3ItPnN0YXRlICE9IFBT Ul9GTFVTSCkKKwkJcmV0dXJuOworCisJcHNyX2VuYWJsZShwc3IpOworfQorCisvKioKKyAqIHJv Y2tjaGlwX2RybV9wc3JfZW5hYmxlIC0gZW5hYmxlIHRoZSBlbmNvZGVyIFBTUiB3aGljaCBiaW5k IHRvIGdpdmVuIENSVEMKKyAqIEBjcnRjOiBDUlRDIHRvIG9idGFpbiB0aGUgUFNSIGVuY29kZXIK KyAqCisgKiBSZXR1cm5zOgorICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBm YWlsdXJlLgorICovCitpbnQgcm9ja2NoaXBfZHJtX3Bzcl9lbmFibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQoreworCXN0cnVjdCBwc3JfZHJ2ICpwc3IgPSBmaW5kX3Bzcl9ieV9jcnRjKGNydGMp OworCisJaWYgKElTX0VSUihwc3IpKQorCQlyZXR1cm4gUFRSX0VSUihwc3IpOworCisJcHNyX2Vu YWJsZShwc3IpOworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNy X2VuYWJsZSk7CisKKy8qKgorICogcm9ja2NoaXBfZHJtX3Bzcl9kaXNhYmxlIC0gZGlzYWJsZSB0 aGUgZW5jb2RlciBQU1Igd2hpY2ggYmluZCB0byBnaXZlbiBDUlRDCisgKiBAY3J0YzogQ1JUQyB0 byBvYnRhaW4gdGhlIFBTUiBlbmNvZGVyCisgKgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3Vj Y2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KKyAqLworaW50IHJvY2tjaGlwX2RybV9w c3JfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IHBzcl9kcnYgKnBz ciA9IGZpbmRfcHNyX2J5X2NydGMoY3J0Yyk7CisKKwlpZiAoSVNfRVJSKHBzcikpCisJCXJldHVy biBQVFJfRVJSKHBzcik7CisKKwlwc3JfZGlzYWJsZShwc3IpOworCXJldHVybiAwOworfQorRVhQ T1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNyX2Rpc2FibGUpOworCisvKioKKyAqIHJvY2tjaGlw X2RybV9wc3JfZmx1c2ggLSBmb3JjZSB0byBmbHVzaCBhbGwgcmVnaXN0ZXJlZCBQU1IgZW5jb2Rl cnMKKyAqCisgKiBEaXNhYmxlIHRoZSBQU1IgZnVuY3Rpb24gZm9yIGFsbCByZWdpc3RlcmVkIGVu Y29kZXJzLCBhbmQgdGhlbiBlbmFibGUgdGhlCisgKiBQU1IgZnVuY3Rpb24gYmFjayBhZnRlciA1 IHNlY29uZC4gSWYgZW5jb2RlciBQU1Igc3RhdGUgaGF2ZSBiZWVuIGNoYW5nZWQKKyAqIGR1cmlu ZyBmbHVzaCB0aW1lLCB0aGVuIGtlZXAgdGhlIHN0YXRlIG5vIGNoYW5nZSBhZnRlciBmbHVzaCB0 aW1lb3V0LgorICoKKyAqIFJldHVybnM6CisgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVy cm5vIG9uIGZhaWx1cmUuCisgKi8KK3ZvaWQgcm9ja2NoaXBfZHJtX3Bzcl9mbHVzaCh2b2lkKQor eworCXN0cnVjdCBwc3JfZHJ2ICpwc3I7CisKKwltdXRleF9sb2NrKCZwc3JfbGlzdF9tdXRleCk7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeShwc3IsICZwc3JfbGlzdCwgbGlzdCkgeworCQlpZiAocHNy LT5zdGF0ZSA9PSBQU1JfRElTQUJMRSkKKwkJCWNvbnRpbnVlOworCisJCW1vZF90aW1lcigmcHNy LT5mbHVzaF90aW1lciwKKwkJCSAgcm91bmRfamlmZmllc191cChqaWZmaWVzICsgUFNSX0ZMVVNI X1RJTUVPVVQpKTsKKworCQlwc3JfZGlzYWJsZShwc3IpOworCQlwc3ItPnN0YXRlID0gUFNSX0ZM VVNIOworCX0KKwltdXRleF91bmxvY2soJnBzcl9saXN0X211dGV4KTsKK30KK0VYUE9SVF9TWU1C T0wocm9ja2NoaXBfZHJtX3Bzcl9mbHVzaCk7CisKKy8qKgorICogcm9ja2NoaXBfZHJtX3Bzcl9y ZWdpc3RlciAtIHJlZ2lzdGVyIGVuY29kZXIgdG8gcHNyIGRyaXZlcgorICogQGVuY29kZXI6IGVu Y29kZXIgdGhhdCBvYnRhaW4gdGhlIFBTUiBmdW5jdGlvbgorICogQHBzcl9zZXQ6IGNhbGwgYmFj ayB0byBzZXQgUFNSIHN0YXRlCisgKgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2Vzcywg bmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KKyAqLworaW50IHJvY2tjaGlwX2RybV9wc3JfcmVn aXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICAgaW50ICgqcHNyX3Nl dCkoc3RydWN0IGRybV9lbmNvZGVyICosIGJvb2wgZW5hYmxlKSkKK3sKKwlzdHJ1Y3QgcHNyX2Ry diAqcHNyOworCisJaWYgKCFlbmNvZGVyIHx8ICFwc3Jfc2V0KQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXBzciA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwc3JfZHJ2KSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFwc3IpCisJCXJldHVybiAtRU5PTUVNOworCisJc2V0dXBfdGltZXIoJnBzci0+Zmx1c2hf dGltZXIsIHBzcl9mbHVzaF9oYW5kbGVyLCAodW5zaWduZWQgbG9uZylwc3IpOworCisJbXV0ZXhf aW5pdCgmcHNyLT5zdGF0ZV9tdXRleCk7CisKKwlwc3ItPnN0YXRlID0gUFNSX0RJU0FCTEU7CisJ cHNyLT5lbmNvZGVyID0gZW5jb2RlcjsKKwlwc3ItPnNldCA9IHBzcl9zZXQ7CisKKwltdXRleF9s b2NrKCZwc3JfbGlzdF9tdXRleCk7CisJbGlzdF9hZGRfdGFpbCgmcHNyLT5saXN0LCAmcHNyX2xp c3QpOworCW11dGV4X3VubG9jaygmcHNyX2xpc3RfbXV0ZXgpOworCisJcmV0dXJuIDA7Cit9CitF WFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfcmVnaXN0ZXIpOworCisvKioKKyAqIHJvY2tj aGlwX2RybV9wc3JfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgZW5jb2RlciB0byBwc3IgZHJpdmVy CisgKiBAZW5jb2RlcjogZW5jb2RlciB0aGF0IG9idGFpbiB0aGUgUFNSIGZ1bmN0aW9uCisgKiBA cHNyX3NldDogY2FsbCBiYWNrIHRvIHNldCBQU1Igc3RhdGUKKyAqCisgKiBSZXR1cm5zOgorICog WmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgorICovCit2b2lkIHJv Y2tjaGlwX2RybV9wc3JfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7 CisJc3RydWN0IHBzcl9kcnYgKnBzcjsKKworCW11dGV4X2xvY2soJnBzcl9saXN0X211dGV4KTsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBzciwgJnBzcl9saXN0LCBsaXN0KSB7CisJCWlmIChwc3It PmVuY29kZXIgPT0gZW5jb2RlcikgeworCQkJZGVsX3RpbWVyKCZwc3ItPmZsdXNoX3RpbWVyKTsK KwkJCWxpc3RfZGVsKCZwc3ItPmxpc3QpOworCQkJa2ZyZWUocHNyKTsKKwkJfQorCX0KKwltdXRl eF91bmxvY2soJnBzcl9saXN0X211dGV4KTsKK30KK0VYUE9SVF9TWU1CT0wocm9ja2NoaXBfZHJt X3Bzcl91bnJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF9kcm1fcHNyLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X3Bzci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMmY2MDUKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5o CkBAIC0wLDAgKzEsMTIgQEAKKyNpZm5kZWYgX19ST0NLQ0hJUF9EUk1fUFNSX19fCisjZGVmaW5l IF9fUk9DS0NISVBfRFJNX1BTUl9fXworCit2b2lkIHJvY2tjaGlwX2RybV9wc3JfZmx1c2godm9p ZCk7CitpbnQgcm9ja2NoaXBfZHJtX3Bzcl9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsK K2ludCByb2NrY2hpcF9kcm1fcHNyX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKKwor aW50IHJvY2tjaGlwX2RybV9wc3JfcmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LAorCQkJICAgIGludCAoKnBzcl9zZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqLCBib29sIGVuYWJs ZSkpOwordm9pZCByb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKTsKKworI2VuZGlmIC8qIF9fUk9DS0NISVBfRFJNX1BTUl9fICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwppbmRleCBjZDNjYWM1Li4zYzZk ZmM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Zv cC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKQEAg LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZHJ2LmgiCiAjaW5jbHVkZSAi cm9ja2NoaXBfZHJtX2dlbS5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV9mYi5oIgorI2luY2x1 ZGUgInJvY2tjaGlwX2RybV9wc3IuaCIKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fdm9wLmgiCiAK ICNkZWZpbmUgX19SRUdfU0VUX1JFTEFYRUQoeCwgb2ZmLCBtYXNrLCBzaGlmdCwgdiwgd3JpdGVf bWFzaykgXApAQCAtMTIxLDYgKzEyMiw5IEBAIHN0cnVjdCB2b3AgewogCS8qIHByb3RlY3RlZCBi eSBkZXYtPmV2ZW50X2xvY2sgKi8KIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpl dmVudDsKIAorCWJvb2wgcHNyX2VuYWJsZWQ7CisJc3RydWN0IGRlbGF5ZWRfd29yayBwc3Jfd29y azsKKwogCXN0cnVjdCBjb21wbGV0aW9uIGxpbmVfZmxhZ19jb21wbGV0aW9uOwogCiAJY29uc3Qg c3RydWN0IHZvcF9kYXRhICpkYXRhOwpAQCAtOTExLDYgKzkxNSwxNiBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9mdW5jcyB2b3BfcGxhbmVfZnVuY3MgPSB7CiAJLmF0b21pY19kZXN0 cm95X3N0YXRlID0gdm9wX2F0b21pY19wbGFuZV9kZXN0cm95X3N0YXRlLAogfTsKIAorc3RhdGlj IHZvaWQgdm9wX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3Qg dm9wICp2b3AgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp2b3ApLCBwc3Jfd29yay53b3Jr KTsKKworCWlmICh2b3AtPnBzcl9lbmFibGVkKQorCQlyb2NrY2hpcF9kcm1fcHNyX2VuYWJsZSgm dm9wLT5jcnRjKTsKKwllbHNlCisJCXJvY2tjaGlwX2RybV9wc3JfZGlzYWJsZSgmdm9wLT5jcnRj KTsKK30KKwogc3RhdGljIGludCB2b3BfY3J0Y19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIHsKIAlzdHJ1Y3Qgdm9wICp2b3AgPSB0b192b3AoY3J0Yyk7CkBAIC05MjUsNiAr OTM5LDkgQEAgc3RhdGljIGludCB2b3BfY3J0Y19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZvcC0+aXJxX2xvY2ssIGZsYWdz KTsKIAorCXZvcC0+cHNyX2VuYWJsZWQgPSBmYWxzZTsKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmso JnZvcC0+cHNyX3dvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTApKTsKKwogCXJldHVybiAwOwogfQog CkBAIC05NDEsNiArOTU4LDkgQEAgc3RhdGljIHZvaWQgdm9wX2NydGNfZGlzYWJsZV92Ymxhbmso c3RydWN0IGRybV9jcnRjICpjcnRjKQogCVZPUF9JTlRSX1NFVF9UWVBFKHZvcCwgZW5hYmxlLCBG U19JTlRSLCAwKTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZvcC0+aXJxX2xvY2ssIGZs YWdzKTsKKworCXZvcC0+cHNyX2VuYWJsZWQgPSB0cnVlOworCXNjaGVkdWxlX2RlbGF5ZWRfd29y aygmdm9wLT5wc3Jfd29yaywgbXNlY3NfdG9famlmZmllcygxMCkpOwogfQogCiBzdGF0aWMgdm9p ZCB2b3BfY3J0Y193YWl0X2Zvcl91cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQpAQCAtMTU4 Miw2ICsxNjAyLDEwIEBAIHN0YXRpYyBpbnQgdm9wX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJCXJldHVybiByZXQ7CiAKIAlwbV9y dW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKKworCXZvcC0+cHNyX2VuYWJsZWQgPSBmYWxzZTsK KwlJTklUX0RFTEFZRURfV09SSygmdm9wLT5wc3Jfd29yaywgdm9wX3Bzcl93b3JrKTsKKwogCXJl dHVybiAwOwogfQogCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=