From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH v3 04/12] drm/msm/dpu: create new platform driver for dpu device Date: Mon, 14 May 2018 20:56:51 +0530 Message-ID: <1526311619-3309-5-git-send-email-ryadav@codeaurora.org> References: <1526311619-3309-1-git-send-email-ryadav@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526311619-3309-1-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, Rajesh Yadav , hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org Q3VycmVudCBNU00gZGlzcGxheSBjb250cm9sbGVyIEhXIG1hdGNoZXMgYSB0cmVlIGxpa2UKaGll cmFyY2h5IHdoZXJlIE1EU1MgdG9wIGxldmVsIHdyYXBwZXIgaXMgcGFyZW50IGRldmljZQphbmQg bWRwNS9kcHUsIGRzaSwgZHAgYXJlIGNoaWxkIGRldmljZXMuCgpFYWNoIGNoaWxkIGRldmljZSBs aWtlIG1kcDUsIGRzaSBldGMuIGhhdmUgYSBzZXBhcmF0ZSBkcml2ZXIsCmJ1dCBjdXJyZW50bHkg ZHB1IGhhbmRsaW5nIGlzIHRpZWQgdG8gYSBzaW5nbGUgZHJpdmVyIHdoaWNoCndhcyBtYW5hZ2lu ZyBib3RoIG1kc3MgYW5kIGRwdSByZXNvdXJjZXMuCgpJbm9yZGVyIHRvIGhhdmUgdGhlIGNsZWFu ZXIgb25lIHRvIG9uZSBkZXZpY2UgYW5kIGRyaXZlcgphc3NvY2lhdGlvbiwgdGhpcyBjaGFuZ2Ug YWRkcyBhIG5ldyBwbGF0Zm9ybV9kcml2ZXIgZm9yIGRwdQpjaGlsZCBkZXZpY2Ugbm9kZSB3aGlj aCBpbXBsZW1lbnRzIHRoZSBrbXMgZnVuY3Rpb25hbGl0eS4KClRoZSBkcHUgZHJpdmVyIGltcGxl bWVudHMgcnVudGltZV9wbSBzdXBwb3J0IGZvciBtYW5hZ2luZyBjbG9ja3MKYW5kIGJ1cyBiYW5k d2lkdGggZXRjLgoKQ2hhbmdlcyBpbiB2MzoKCS0gbm9uZQoKQ2hhbmdlcyBpbiB2MjoKCS0gcmVt b3ZlIHJlZHVuZGFudCBwYXJhbSBjaGVjayBmcm9tIF9kcHVfa21zX2h3X2Rlc3Ryb3kgKFNlYW4g UGF1bCkKCS0gcmVtb3ZlIGV4cGxpY2l0IGNhbGxzIHRvIGRldm1fa2ZyZWUgKFNlYW4gUGF1bCkK CS0gbWVyZ2UgZHB1X2luaXQgaW50byBkcHVfYmluZCAoU2VhbiBQYXVsKQoJLSBtZXJnZSBkcHVf ZGVzdHJveSBpbnRvIGRwdV91bmJpbmQgKFNlYW4gUGF1bCkKCS0gdXNlICVwSyBmb3Iga2VybmVs IHBvaW50ZXIgcHJpbnRpbmcgKEpvcmRhbiBDcm91c2UpCgktIHJlbW92ZSBleHBsaWNpdCBkZXZt IGFsbG9jYXRpb24gZmFpbHVyZSBtZXNzYWdlIChKb3JkYW4gQ3JvdXNlKQoKU2lnbmVkLW9mZi1i eTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+ClJldmlld2VkLWJ5OiBKb3Jk YW4gQ3JvdXNlIDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgpSZXZpZXdlZC1ieTogU2VhbiBQYXVs IDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2ttcy5jIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggfCAgIDQgKwogZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZHJ2LmMgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2Rydi5oICAgICAgICAgICB8ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRp b25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmMKaW5kZXggZTRhYjc1My4uODVmM2RiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuYwpAQCAtMTAzMCwxNiArMTAzMCwxMiBAQCBzdGF0aWMgbG9uZyBkcHVfa21z X3JvdW5kX3BpeGNsayhzdHJ1Y3QgbXNtX2ttcyAqa21zLCB1bnNpZ25lZCBsb25nIHJhdGUsCiAJ cmV0dXJuIHJhdGU7CiB9CiAKLXN0YXRpYyB2b2lkIF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXMsCi0JCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCitzdGF0 aWMgdm9pZCBfZHB1X2ttc19od19kZXN0cm95KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQogewog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsK IAlpbnQgaTsKIAotCWlmICghZHB1X2ttcyB8fCAhcGRldikKLQkJcmV0dXJuOwotCiAJZGV2ID0g ZHB1X2ttcy0+ZGV2OwogCWlmICghZGV2KQogCQlyZXR1cm47CkBAIC0xMDkxLDE1ICsxMDg3LDE1 IEBAIHN0YXRpYyB2b2lkIF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9r bXMsCiAJZHB1X2ttcy0+Y29yZV9jbGllbnQgPSBOVUxMOwogCiAJaWYgKGRwdV9rbXMtPnZiaWZb VkJJRl9OUlRdKQotCQltc21faW91bm1hcChwZGV2LCBkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSk7 CisJCW1zbV9pb3VubWFwKGRwdV9rbXMtPnBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKTsK IAlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9IE5VTEw7CiAKIAlpZiAoZHB1X2ttcy0+dmJpZltW QklGX1JUXSkKLQkJbXNtX2lvdW5tYXAocGRldiwgZHB1X2ttcy0+dmJpZltWQklGX1JUXSk7CisJ CW1zbV9pb3VubWFwKGRwdV9rbXMtPnBkZXYsIGRwdV9rbXMtPnZiaWZbVkJJRl9SVF0pOwogCWRw dV9rbXMtPnZiaWZbVkJJRl9SVF0gPSBOVUxMOwogCiAJaWYgKGRwdV9rbXMtPm1taW8pCi0JCW1z bV9pb3VubWFwKHBkZXYsIGRwdV9rbXMtPm1taW8pOworCQltc21faW91bm1hcChkcHVfa21zLT5w ZGV2LCBkcHVfa21zLT5tbWlvKTsKIAlkcHVfa21zLT5tbWlvID0gTlVMTDsKIAogCWRwdV9yZWdf ZG1hX2RlaW5pdCgpOwpAQCAtMTE3Miw4ICsxMTY4LDYgQEAgaW50IGRwdV9rbXNfbW11X2F0dGFj aChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywgYm9vbCBzZWN1cmVfb25seSkKIHN0YXRpYyB2b2lk IGRwdV9rbXNfZGVzdHJveShzdHJ1Y3QgbXNtX2ttcyAqa21zKQogewogCXN0cnVjdCBkcHVfa21z ICpkcHVfa21zOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Ci0Jc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGxhdGZvcm1kZXY7CiAKIAlpZiAoIWttcykgewogCQlEUFVfRVJST1IoImludmFsaWQg a21zXG4iKTsKQEAgLTExODEsMjAgKzExNzUsNyBAQCBzdGF0aWMgdm9pZCBkcHVfa21zX2Rlc3Ry b3koc3RydWN0IG1zbV9rbXMgKmttcykKIAl9CiAKIAlkcHVfa21zID0gdG9fZHB1X2ttcyhrbXMp OwotCWRldiA9IGRwdV9rbXMtPmRldjsKLQlpZiAoIWRldikgewotCQlEUFVfRVJST1IoImludmFs aWQgZGV2aWNlXG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCXBsYXRmb3JtZGV2ID0gdG9fcGxhdGZv cm1fZGV2aWNlKGRldi0+ZGV2KTsKLQlpZiAoIXBsYXRmb3JtZGV2KSB7Ci0JCURQVV9FUlJPUigi aW52YWxpZCBwbGF0Zm9ybSBkZXZpY2VcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JX2RwdV9rbXNf aHdfZGVzdHJveShkcHVfa21zLCBwbGF0Zm9ybWRldik7Ci0Ja2ZyZWUoZHB1X2ttcyk7CisJX2Rw dV9rbXNfaHdfZGVzdHJveShkcHVfa21zKTsKIH0KIAogc3RhdGljIHZvaWQgZHB1X2ttc19wcmVj bG9zZShzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCkBAIC0xNTUw LDcgKzE1MzEsNiBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAq a21zKQogCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7 CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwbGF0Zm9ybWRldjsKIAlpbnQgaSwgcmMgPSAtRUlOVkFMOwogCiAJaWYgKCFrbXMpIHsKQEAg LTE1NjUsMzQgKzE1NDUsMjggQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1z bV9rbXMgKmttcykKIAkJZ290byBlbmQ7CiAJfQogCi0JcGxhdGZvcm1kZXYgPSB0b19wbGF0Zm9y bV9kZXZpY2UoZGV2LT5kZXYpOwotCWlmICghcGxhdGZvcm1kZXYpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIHBsYXRmb3JtIGRldmljZVxuIik7Ci0JCWdvdG8gZW5kOwotCQl9Ci0KIAlwcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAlpZiAoIXByaXYpIHsKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIHBy aXZhdGUgZGF0YVxuIik7CiAJCWdvdG8gZW5kOwogCX0KIAotCWRwdV9rbXMtPm1taW8gPSBtc21f aW9yZW1hcChwbGF0Zm9ybWRldiwgIm1kcF9waHlzIiwgIm1kcF9waHlzIik7CisJZHB1X2ttcy0+ bW1pbyA9IG1zbV9pb3JlbWFwKGRwdV9rbXMtPnBkZXYsICJtZHBfcGh5cyIsICJtZHBfcGh5cyIp OwogCWlmIChJU19FUlIoZHB1X2ttcy0+bW1pbykpIHsKIAkJcmMgPSBQVFJfRVJSKGRwdV9rbXMt Pm1taW8pOwogCQlEUFVfRVJST1IoIm1kcCByZWdpc3RlciBtZW1vcnkgbWFwIGZhaWxlZDogJWRc biIsIHJjKTsKIAkJZHB1X2ttcy0+bW1pbyA9IE5VTEw7CiAJCWdvdG8gZXJyb3I7CiAJfQotCURS TV9JTkZPKCJtYXBwZWQgbWRwIGFkZHJlc3Mgc3BhY2UgQCVwXG4iLCBkcHVfa21zLT5tbWlvKTsK LQlkcHVfa21zLT5tbWlvX2xlbiA9IG1zbV9pb21hcF9zaXplKHBsYXRmb3JtZGV2LCAibWRwX3Bo eXMiKTsKKwlEUk1fREVCVUcoIm1hcHBlZCBkcHUgYWRkcmVzcyBzcGFjZSBAJXBLXG4iLCBkcHVf a21zLT5tbWlvKTsKKwlkcHVfa21zLT5tbWlvX2xlbiA9IG1zbV9pb21hcF9zaXplKGRwdV9rbXMt PnBkZXYsICJtZHBfcGh5cyIpOwogCiAJcmMgPSBkcHVfZGJnX3JlZ19yZWdpc3Rlcl9iYXNlKERQ VV9EQkdfTkFNRSwgZHB1X2ttcy0+bW1pbywKIAkJCWRwdV9rbXMtPm1taW9fbGVuKTsKIAlpZiAo cmMpCiAJCURQVV9FUlJPUigiZGJnIGJhc2UgcmVnaXN0ZXIga21zIGZhaWxlZDogJWRcbiIsIHJj KTsKIAotCWRwdV9rbXMtPnZiaWZbVkJJRl9SVF0gPSBtc21faW9yZW1hcChwbGF0Zm9ybWRldiwg InZiaWZfcGh5cyIsCisJZHB1X2ttcy0+dmJpZltWQklGX1JUXSA9IG1zbV9pb3JlbWFwKGRwdV9r bXMtPnBkZXYsICJ2YmlmX3BoeXMiLAogCQkJCQkJCQkidmJpZl9waHlzIik7CiAJaWYgKElTX0VS UihkcHVfa21zLT52YmlmW1ZCSUZfUlRdKSkgewogCQlyYyA9IFBUUl9FUlIoZHB1X2ttcy0+dmJp ZltWQklGX1JUXSk7CkBAIC0xNjAwLDIwICsxNTc0LDIwIEBAIHN0YXRpYyBpbnQgZHB1X2ttc19o d19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCiAJCWRwdV9rbXMtPnZiaWZbVkJJRl9SVF0gPSBO VUxMOwogCQlnb3RvIGVycm9yOwogCX0KLQlkcHVfa21zLT52YmlmX2xlbltWQklGX1JUXSA9IG1z bV9pb21hcF9zaXplKHBsYXRmb3JtZGV2LAorCWRwdV9rbXMtPnZiaWZfbGVuW1ZCSUZfUlRdID0g bXNtX2lvbWFwX3NpemUoZHB1X2ttcy0+cGRldiwKIAkJCQkJCQkJInZiaWZfcGh5cyIpOwogCXJj ID0gZHB1X2RiZ19yZWdfcmVnaXN0ZXJfYmFzZSgidmJpZl9ydCIsIGRwdV9rbXMtPnZiaWZbVkJJ Rl9SVF0sCiAJCQkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9SVF0pOwogCWlmIChyYykKIAkJRFBV X0VSUk9SKCJkYmcgYmFzZSByZWdpc3RlciB2YmlmX3J0IGZhaWxlZDogJWRcbiIsIHJjKTsKIAot CWRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdID0gbXNtX2lvcmVtYXAocGxhdGZvcm1kZXYsICJ2Ymlm X25ydF9waHlzIiwKKwlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9IG1zbV9pb3JlbWFwKGRwdV9r bXMtPnBkZXYsICJ2YmlmX25ydF9waHlzIiwKIAkJCQkJCQkJInZiaWZfbnJ0X3BoeXMiKTsKIAlp ZiAoSVNfRVJSKGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKSkgewogCQlkcHVfa21zLT52YmlmW1ZC SUZfTlJUXSA9IE5VTEw7CiAJCURQVV9ERUJVRygiVkJJRiBOUlQgaXMgbm90IGRlZmluZWQiKTsK IAl9IGVsc2UgewotCQlkcHVfa21zLT52YmlmX2xlbltWQklGX05SVF0gPSBtc21faW9tYXBfc2l6 ZShwbGF0Zm9ybWRldiwKKwkJZHB1X2ttcy0+dmJpZl9sZW5bVkJJRl9OUlRdID0gbXNtX2lvbWFw X3NpemUoZHB1X2ttcy0+cGRldiwKIAkJCQkJCQkidmJpZl9ucnRfcGh5cyIpOwogCQlyYyA9IGRw dV9kYmdfcmVnX3JlZ2lzdGVyX2Jhc2UoInZiaWZfbnJ0IiwKIAkJCQlkcHVfa21zLT52YmlmW1ZC SUZfTlJUXSwKQEAgLTE2MjQsMTMgKzE1OTgsMTMgQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2lu aXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAl9CiAKICNpZmRlZiBDT05GSUdfQ0hST01FX1JFR0RN QQotCWRwdV9rbXMtPnJlZ19kbWEgPSBtc21faW9yZW1hcChwbGF0Zm9ybWRldiwgInJlZ2RtYV9w aHlzIiwKKwlkcHVfa21zLT5yZWdfZG1hID0gbXNtX2lvcmVtYXAoZHB1X2ttcy0+cGRldiwgInJl Z2RtYV9waHlzIiwKIAkJCQkJCQkJInJlZ2RtYV9waHlzIik7CiAJaWYgKElTX0VSUihkcHVfa21z LT5yZWdfZG1hKSkgewogCQlkcHVfa21zLT5yZWdfZG1hID0gTlVMTDsKIAkJRFBVX0RFQlVHKCJS RUdfRE1BIGlzIG5vdCBkZWZpbmVkIik7CiAJfSBlbHNlIHsKLQkJZHB1X2ttcy0+cmVnX2RtYV9s ZW4gPSBtc21faW9tYXBfc2l6ZShwbGF0Zm9ybWRldiwKKwkJZHB1X2ttcy0+cmVnX2RtYV9sZW4g PSBtc21faW9tYXBfc2l6ZShkcHVfa21zLT5wZGV2LAogCQkJCQkJCQkicmVnZG1hX3BoeXMiKTsK IAkJcmMgPSAgZHB1X2RiZ19yZWdfcmVnaXN0ZXJfYmFzZSgicmVnX2RtYSIsCiAJCQkJZHB1X2tt cy0+cmVnX2RtYSwKQEAgLTE4MDQsMTQgKzE3NzgsMTMgQEAgc3RhdGljIGludCBkcHVfa21zX2h3 X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAlkcHVfcG93ZXJfcmVzb3VyY2VfZW5hYmxlKCZw cml2LT5waGFuZGxlLCBkcHVfa21zLT5jb3JlX2NsaWVudCwgZmFsc2UpOwogCXBtX3J1bnRpbWVf cHV0X3N5bmMoZGV2LT5kZXYpOwogZXJyb3I6Ci0JX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21z LCBwbGF0Zm9ybWRldik7CisJX2RwdV9rbXNfaHdfZGVzdHJveShkcHVfa21zKTsKIGVuZDoKIAly ZXR1cm4gcmM7CiB9CiAKIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZv cm1fZGV2aWNlKGRldi0+ZGV2KTsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwogCXN0 cnVjdCBkcHVfa21zICpkcHVfa21zOwogCWludCBpcnE7CkBAIC0xODIxLDI0ICsxNzk0LDE4NyBA QCBzdHJ1Y3QgbXNtX2ttcyAqZHB1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCX0KIAotCWlycSA9IHBsYXRmb3JtX2dldF9pcnEo cGRldiwgMCk7CisJcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJZHB1X2ttcyA9IHRvX2RwdV9r bXMocHJpdi0+a21zKTsKKworCWlycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKGRwdV9rbXMtPnBk ZXYtPmRldi5vZl9ub2RlLCAwKTsKIAlpZiAoaXJxIDwgMCkgewogCQlEUFVfRVJST1IoImZhaWxl ZCB0byBnZXQgaXJxOiAlZFxuIiwgaXJxKTsKIAkJcmV0dXJuIEVSUl9QVFIoaXJxKTsKIAl9CisJ ZHB1X2ttcy0+YmFzZS5pcnEgPSBpcnE7CiAKLQlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwly ZXR1cm4gJmRwdV9rbXMtPmJhc2U7Cit9CiAKLQlkcHVfa21zID0ga3phbGxvYyhzaXplb2YoKmRw dV9rbXMpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWRwdV9rbXMpIHsKLQkJRFBVX0VSUk9SKCJmYWls ZWQgdG8gYWxsb2NhdGUgZHB1IGttc1xuIik7Ci0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwor c3RhdGljIGludCBkcHVfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1h c3Rlciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGRldl9nZXRf ZHJ2ZGF0YShtYXN0ZXIpOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0 Zm9ybV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRldi0+ ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7CisJc3RydWN0IGRzc19tb2R1 bGVfcG93ZXIgKm1wOworCWludCByZXQgPSAwOworCisJZHB1X2ttcyA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LCBzaXplb2YoKmRwdV9rbXMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRwdV9rbXMp CisJCXJldHVybiAtRU5PTUVNOworCisJbXAgPSAmZHB1X2ttcy0+bXA7CisJcmV0ID0gbXNtX2Rz c19wYXJzZV9jbG9jayhwZGV2LCBtcCk7CisJaWYgKHJldCkgeworCQlEUFVfRVJST1IoImZhaWxl ZCB0byBwYXJzZSBjbG9ja3MsIHJldD0lZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwlyZXQgPSBtc21fZHNzX2dldF9jbGsoJnBkZXYtPmRldiwgbXAtPmNsa19jb25maWcsIG1wLT5u dW1fY2xrKTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiZmFpbGVkIHRvIGdldCBjbG9ja3MsIHJl dD0lZFxuIiwgcmV0KTsKKwkJZ290byBjbGtfZ2V0X2Vycm9yOworCX0KKworCXJldCA9IG1zbV9k c3NfY2xrX3NldF9yYXRlKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Nsayk7CisJaWYgKHJldCkg eworCQlwcl9lcnIoImZhaWxlZCB0byBzZXQgY2xvY2sgcmF0ZSwgcmV0PSVkXG4iLCByZXQpOwor CQlnb3RvIGNsa19yYXRlX2Vycm9yOwogCX0KIAorCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGRwdV9rbXMpOworCiAJbXNtX2ttc19pbml0KCZkcHVfa21zLT5iYXNlLCAma21zX2Z1bmNzKTsK LQlkcHVfa21zLT5kZXYgPSBkZXY7Ci0JZHB1X2ttcy0+YmFzZS5pcnEgPSBpcnE7CisJZHB1X2tt cy0+ZGV2ID0gZGRldjsKKwlkcHVfa21zLT5wZGV2ID0gcGRldjsKIAotCXJldHVybiAmZHB1X2tt cy0+YmFzZTsKKwlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKKwlkcHVfa21zLT5ycG1f ZW5hYmxlZCA9IHRydWU7CisKKwlwcml2LT5rbXMgPSAmZHB1X2ttcy0+YmFzZTsKKwlyZXR1cm4g cmV0OworCitjbGtfcmF0ZV9lcnJvcjoKKwltc21fZHNzX3B1dF9jbGsobXAtPmNsa19jb25maWcs IG1wLT5udW1fY2xrKTsKK2Nsa19nZXRfZXJyb3I6CisJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBt cC0+Y2xrX2NvbmZpZyk7CisJbXAtPm51bV9jbGsgPSAwOworCXJldHVybiByZXQ7CiB9CiAKK3N0 YXRpYyB2b2lkIGRwdV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpt YXN0ZXIsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRv X3BsYXRmb3JtX2RldmljZShkZXYpOworCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gcGxhdGZv cm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRw dV9rbXMtPm1wOworCisJbXNtX2Rzc19wdXRfY2xrKG1wLT5jbGtfY29uZmlnLCBtcC0+bnVtX2Ns ayk7CisJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBtcC0+Y2xrX2NvbmZpZyk7CisJbXAtPm51bV9j bGsgPSAwOworCisJaWYgKGRwdV9rbXMtPnJwbV9lbmFibGVkKQorCQlwbV9ydW50aW1lX2Rpc2Fi bGUoJnBkZXYtPmRldik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBk cHVfb3BzID0geworCS5iaW5kICAgPSBkcHVfYmluZCwKKwkudW5iaW5kID0gZHB1X3VuYmluZCwK K307CisKK3N0YXRpYyBpbnQgZHB1X2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQoreworCXJldHVybiBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZkcHVfb3BzKTsKK30K Kworc3RhdGljIGludCBkcHVfZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQoreworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRwdV9vcHMpOworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGRwdV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQor eworCWludCByYyA9IC0xOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0 Zm9ybV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2OworCXN0cnVjdCBtc21f ZHJtX3ByaXZhdGUgKnByaXY7CisJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wID0gJmRwdV9r bXMtPm1wOworCisJZGRldiA9IGRwdV9rbXMtPmRldjsKKwlpZiAoIWRkZXYpIHsKKwkJRFBVX0VS Uk9SKCJpbnZhbGlkIGRybV9kZXZpY2VcbiIpOworCQlnb3RvIGV4aXQ7CisJfQorCXByaXYgPSBk ZGV2LT5kZXZfcHJpdmF0ZTsKKworCXJjID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJp di0+cGhhbmRsZSwKKwkJZHB1X2ttcy0+Y29yZV9jbGllbnQsIGZhbHNlKTsKKwlpZiAocmMpCisJ CURQVV9FUlJPUigicmVzb3VyY2UgZGlzYWJsZSBmYWlsZWQ6ICVkXG4iLCByYyk7CisKKwlyYyA9 IG1zbV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIGZhbHNlKTsK KwlpZiAocmMpCisJCURQVV9FUlJPUigiY2xvY2sgZGlzYWJsZSBmYWlsZWQgcmM6JWRcbiIsIHJj KTsKKworZXhpdDoKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgZHB1X3J1bnRpbWVfcmVz dW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQgcmMgPSAtMTsKKwlzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CisJc3RydWN0IGRwdV9r bXMgKmRwdV9rbXMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGRldjsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OworCXN0cnVjdCBkc3Nf bW9kdWxlX3Bvd2VyICptcCA9ICZkcHVfa21zLT5tcDsKKworCWRkZXYgPSBkcHVfa21zLT5kZXY7 CisJaWYgKCFkZGV2KSB7CisJCURQVV9FUlJPUigiaW52YWxpZCBkcm1fZGV2aWNlXG4iKTsKKwkJ Z290byBleGl0OworCX0KKwlwcml2ID0gZGRldi0+ZGV2X3ByaXZhdGU7CisKKwlyYyA9IG1zbV9k c3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIHRydWUpOworCWlmIChy YykgeworCQlEUFVfRVJST1IoImNsb2NrIGVuYWJsZSBmYWlsZWQgcmM6JWRcbiIsIHJjKTsKKwkJ Z290byBleGl0OworCX0KKworCXJjID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmcHJpdi0+ cGhhbmRsZSwgZHB1X2ttcy0+Y29yZV9jbGllbnQsCisJCXRydWUpOworCWlmIChyYykKKwkJRFBV X0VSUk9SKCJyZXNvdXJjZSBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmMpOworCitleGl0OgorCXJl dHVybiByYzsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRwdV9wbV9vcHMg PSB7CisJU0VUX1JVTlRJTUVfUE1fT1BTKGRwdV9ydW50aW1lX3N1c3BlbmQsIGRwdV9ydW50aW1l X3Jlc3VtZSwgTlVMTCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRw dV9kdF9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAicWNvbSxkcHUiLCB9LAorCXt9Cit9 OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHB1X2R0X21hdGNoKTsKKworc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgZHB1X2RyaXZlciA9IHsKKwkucHJvYmUgPSBkcHVfZGV2X3Byb2Jl LAorCS5yZW1vdmUgPSBkcHVfZGV2X3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJt c21fZHB1IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gZHB1X2R0X21hdGNoLAorCQkucG0gPSAmZHB1 X3BtX29wcywKKwl9LAorfTsKKwordm9pZCBfX2luaXQgbXNtX2RwdV9yZWdpc3Rlcih2b2lkKQor eworCXBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZHB1X2RyaXZlcik7Cit9CisKK3ZvaWQgX19l eGl0IG1zbV9kcHVfdW5yZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lz dGVyKCZkcHVfZHJpdmVyKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMu aAppbmRleCBhMWMwOTEwLi4zYzY5OTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5oCkBAIC0yMDAsNiArMjAwLDEwIEBAIHN0cnVjdCBkcHVfa21zIHsKIAlzdHJ1Y3Qg ZHB1X2h3X21kcCAqaHdfbWRwOwogCiAJYm9vbCBoYXNfZGFuZ2VyX2N0cmw7CisKKwlzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2OworCWJvb2wgcnBtX2VuYWJsZWQ7CisJc3RydWN0IGRzc19t b2R1bGVfcG93ZXIgbXA7CiB9OwogCiBzdHJ1Y3QgdnN5bmNfaW5mbyB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5jCmluZGV4IGEwZTczZWEuLjU0NzA1MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCkBAIC0xNzMx LDYgKzE3MzEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBtc21fZHJtX3JlZ2lzdGVyKHZvaWQpCiAK IAlEQkcoImluaXQiKTsKIAltc21fbWRwX3JlZ2lzdGVyKCk7CisJbXNtX2RwdV9yZWdpc3Rlcigp OwogCW1zbV9kc2lfcmVnaXN0ZXIoKTsKIAltc21fZWRwX3JlZ2lzdGVyKCk7CiAJbXNtX2hkbWlf cmVnaXN0ZXIoKTsKQEAgLTE3NDcsNiArMTc0OCw3IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBtc21f ZHJtX3VucmVnaXN0ZXIodm9pZCkKIAltc21fZWRwX3VucmVnaXN0ZXIoKTsKIAltc21fZHNpX3Vu cmVnaXN0ZXIoKTsKIAltc21fbWRwX3VucmVnaXN0ZXIoKTsKKwltc21fZHB1X3VucmVnaXN0ZXIo KTsKIH0KIAogbW9kdWxlX2luaXQobXNtX2RybV9yZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o CmluZGV4IGU4ZTVlNzMuLjIyYTMwOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC02ODIsNiAr NjgyLDkgQEAgc3RhdGljIGlubGluZSBpbnQgbXNtX2RzaV9tb2Rlc2V0X2luaXQoc3RydWN0IG1z bV9kc2kgKm1zbV9kc2ksCiB2b2lkIF9faW5pdCBtc21fbWRwX3JlZ2lzdGVyKHZvaWQpOwogdm9p ZCBfX2V4aXQgbXNtX21kcF91bnJlZ2lzdGVyKHZvaWQpOwogCit2b2lkIF9faW5pdCBtc21fZHB1 X3JlZ2lzdGVyKHZvaWQpOwordm9pZCBfX2V4aXQgbXNtX2RwdV91bnJlZ2lzdGVyKHZvaWQpOwor CiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIG1zbV9nZW1fZGVzY3JpYmUoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBzZXFfZmlsZSAqbSk7CiB2b2lkIG1zbV9nZW1fZGVz Y3JpYmVfb2JqZWN0cyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0p OwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9m IHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUg UHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K RnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==