From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Clouter Subject: [PATCH 2/6] rtc: rtc-m48t86: add hooks to support driver side memory mapping Date: Tue, 2 Apr 2013 00:22:41 +0100 Message-ID: <1364858565-17192-3-git-send-email-alex@digriz.org.uk> References: <1364858565-17192-1-git-send-email-alex@digriz.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1364858565-17192-1-git-send-email-alex-L4GPcECwBoDe9xe1eoZjHA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: "devicetree-discuss" To: Alessandro Zummo , Hartley Sweeten , Grant Likely , Jason Cooper , Ryan Mallon , Rob Herring , Andrew Lunn Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, rtc-linux-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Alexander Clouter List-Id: devicetree@vger.kernel.org SWYgcGxhdGZvcm1fZGF0YSBpcyBub3QgZGVmaW5lZCAoYXMgYmVmb3JlKSwgdGhlbiBuYW1lZCBt ZW1vcnkgaW8KcmFuZ2VzIG5lZWQgdG8gYmUgZGVmaW5lZCAoInJ0Y19pbmRleCIgYW5kICJydGNf ZGF0YSIpLiAgVGhlIGRyaXZlcgp0aGVuIG1hcHMgdGhvc2UgcmVnaW9ucyBhbmQgdXNlcyB0aGVt IGFzIHRoZSBSVEMgaW5kZXggYW5kIGRhdGEKYWRkcmVzc2VzLgoKRG9lcyBjb21waWxlIHdpdGgg dGhlIGZvbGxvd2luZyB3YXJuaW5ncywgSSBjYW5ub3Qgc2VlIHRoZSBjb2RlcGF0aAphZmZlY3Rl ZCBteXNlbGY6Ci0tLS0KZHJpdmVycy9ydGMvcnRjLW00OHQ4Ni5jOiBJbiBmdW5jdGlvbiDigJht NDh0ODZfcnRjX3Byb2Jl4oCZOgpkcml2ZXJzL3J0Yy9ydGMtbTQ4dDg2LmM6MTgwOiB3YXJuaW5n OiDigJhyZXNfaW5kZXjigJkgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0 aW9uCmRyaXZlcnMvcnRjL3J0Yy1tNDh0ODYuYzoxODA6IHdhcm5pbmc6IOKAmHJlc19kYXRh4oCZ IG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotLS0tCgpTaWduZWQt b2ZmLWJ5OiBBbGV4YW5kZXIgQ2xvdXRlciA8YWxleEBkaWdyaXoub3JnLnVrPgotLS0KIGRyaXZl cnMvcnRjL3J0Yy1tNDh0ODYuYyB8ICAyMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCA1NyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtbTQ4dDg2LmMgYi9kcml2 ZXJzL3J0Yy9ydGMtbTQ4dDg2LmMKaW5kZXggMjVlMDExNi4uNmY5OWU2NCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ydGMvcnRjLW00OHQ4Ni5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1tNDh0ODYuYwpA QCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvcnRjLW00OHQ4Ni5oPgogI2luY2x1ZGUgPGxpbnV4 L2JjZC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgog CiAjZGVmaW5lIE00OFQ4Nl9SRUdfU0VDCQkweDAwCiAjZGVmaW5lIE00OFQ4Nl9SRUdfU0VDQUxS TQkweDAxCkBAIC00MSw0MCArNDMsNzEgQEAKIAogI2RlZmluZSBEUlZfVkVSU0lPTiAiMC4xIgog CitzdHJ1Y3QgbTQ4dDg2X3J0Y19wcml2YXRlX2RhdGEgeworCXZvaWQgX19pb21lbQkJKmlvX2lu ZGV4OworCXZvaWQgX19pb21lbQkJKmlvX2RhdGE7CisKKwlzdHJ1Y3QgcnRjX2RldmljZQkqcnRj OworCXN0cnVjdCBtNDh0ODZfb3BzCSpvcHM7Cit9OworCitzdGF0aWMgdm9pZCBtNDh0ODZfcnRj X3dyaXRlYnl0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQl1bnNpZ25lZCBjaGFyIHZhbHVlLCB1 bnNpZ25lZCBsb25nIGFkZHIpCit7CisJc3RydWN0IG00OHQ4Nl9ydGNfcHJpdmF0ZV9kYXRhICpw cml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlpZiAocHJpdi0+b3BzKSB7CisJCXByaXYt Pm9wcy0+d3JpdGVieXRlKHZhbHVlLCBhZGRyKTsKKwkJcmV0dXJuOworCX0KKworCXdyaXRlYihh ZGRyLCBwcml2LT5pb19pbmRleCk7CisJd3JpdGViKHZhbHVlLCBwcml2LT5pb19kYXRhKTsKK30K Kworc3RhdGljIHVuc2lnbmVkIGNoYXIgbTQ4dDg2X3J0Y19yZWFkYnl0ZShzdHJ1Y3QgZGV2aWNl ICpkZXYsCisJCQl1bnNpZ25lZCBsb25nIGFkZHIpCit7CisJc3RydWN0IG00OHQ4Nl9ydGNfcHJp dmF0ZV9kYXRhICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlpZiAocHJpdi0+b3Bz KQorCQlyZXR1cm4gcHJpdi0+b3BzLT5yZWFkYnl0ZShhZGRyKTsKKworCXdyaXRlYihhZGRyLCBw cml2LT5pb19pbmRleCk7CisJcmV0dXJuIHJlYWRiKHByaXYtPmlvX2RhdGEpOworfQogCiBzdGF0 aWMgaW50IG00OHQ4Nl9ydGNfcmVhZF90aW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJ0 Y190aW1lICp0bSkKIHsKIAl1bnNpZ25lZCBjaGFyIHJlZzsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Ci0Jc3RydWN0IG00OHQ4Nl9vcHMg Km9wcyA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCi0JcmVnID0gb3BzLT5yZWFkYnl0ZShN NDhUODZfUkVHX0IpOworCXJlZyA9IG00OHQ4Nl9ydGNfcmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVH X0IpOwogCiAJaWYgKHJlZyAmIE00OFQ4Nl9SRUdfQl9ETSkgewogCQkvKiBkYXRhIChiaW5hcnkp IG1vZGUgKi8KLQkJdG0tPnRtX3NlYwk9IG9wcy0+cmVhZGJ5dGUoTTQ4VDg2X1JFR19TRUMpOwot CQl0bS0+dG1fbWluCT0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX01JTik7Ci0JCXRtLT50bV9o b3VyCT0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX0hPVVIpICYgMHgzRjsKLQkJdG0tPnRtX21k YXkJPSBvcHMtPnJlYWRieXRlKE00OFQ4Nl9SRUdfRE9NKTsKKwkJdG0tPnRtX3NlYwk9IG00OHQ4 Nl9ydGNfcmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVHX1NFQyk7CisJCXRtLT50bV9taW4JPSBtNDh0 ODZfcnRjX3JlYWRieXRlKGRldiwgTTQ4VDg2X1JFR19NSU4pOworCQl0bS0+dG1faG91cgk9IG00 OHQ4Nl9ydGNfcmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVHX0hPVVIpICYgMHgzRjsKKwkJdG0tPnRt X21kYXkJPSBtNDh0ODZfcnRjX3JlYWRieXRlKGRldiwgTTQ4VDg2X1JFR19ET00pOwogCQkvKiB0 bV9tb24gaXMgMC0xMSAqLwotCQl0bS0+dG1fbW9uCT0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVH X01PTlRIKSAtIDE7Ci0JCXRtLT50bV95ZWFyCT0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX1lF QVIpICsgMTAwOwotCQl0bS0+dG1fd2RheQk9IG9wcy0+cmVhZGJ5dGUoTTQ4VDg2X1JFR19ET1cp OworCQl0bS0+dG1fbW9uCT0gbTQ4dDg2X3J0Y19yZWFkYnl0ZShkZXYsIE00OFQ4Nl9SRUdfTU9O VEgpIC0gMTsKKwkJdG0tPnRtX3llYXIJPSBtNDh0ODZfcnRjX3JlYWRieXRlKGRldiwgTTQ4VDg2 X1JFR19ZRUFSKSArIDEwMDsKKwkJdG0tPnRtX3dkYXkJPSBtNDh0ODZfcnRjX3JlYWRieXRlKGRl diwgTTQ4VDg2X1JFR19ET1cpOwogCX0gZWxzZSB7CiAJCS8qIGJjZCBtb2RlICovCi0JCXRtLT50 bV9zZWMJPSBiY2QyYmluKG9wcy0+cmVhZGJ5dGUoTTQ4VDg2X1JFR19TRUMpKTsKLQkJdG0tPnRt X21pbgk9IGJjZDJiaW4ob3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX01JTikpOwotCQl0bS0+dG1f aG91cgk9IGJjZDJiaW4ob3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX0hPVVIpICYgMHgzRik7Ci0J CXRtLT50bV9tZGF5CT0gYmNkMmJpbihvcHMtPnJlYWRieXRlKE00OFQ4Nl9SRUdfRE9NKSk7CisJ CXRtLT50bV9zZWMJPSBiY2QyYmluKG00OHQ4Nl9ydGNfcmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVH X1NFQykpOworCQl0bS0+dG1fbWluCT0gYmNkMmJpbihtNDh0ODZfcnRjX3JlYWRieXRlKGRldiwg TTQ4VDg2X1JFR19NSU4pKTsKKwkJdG0tPnRtX2hvdXIJPSBiY2QyYmluKG00OHQ4Nl9ydGNfcmVh ZGJ5dGUoZGV2LCBNNDhUODZfUkVHX0hPVVIpICYgMHgzRik7CisJCXRtLT50bV9tZGF5CT0gYmNk MmJpbihtNDh0ODZfcnRjX3JlYWRieXRlKGRldiwgTTQ4VDg2X1JFR19ET00pKTsKIAkJLyogdG1f bW9uIGlzIDAtMTEgKi8KLQkJdG0tPnRtX21vbgk9IGJjZDJiaW4ob3BzLT5yZWFkYnl0ZShNNDhU ODZfUkVHX01PTlRIKSkgLSAxOwotCQl0bS0+dG1feWVhcgk9IGJjZDJiaW4ob3BzLT5yZWFkYnl0 ZShNNDhUODZfUkVHX1lFQVIpKSArIDEwMDsKLQkJdG0tPnRtX3dkYXkJPSBiY2QyYmluKG9wcy0+ cmVhZGJ5dGUoTTQ4VDg2X1JFR19ET1cpKTsKKwkJdG0tPnRtX21vbgk9IGJjZDJiaW4obTQ4dDg2 X3J0Y19yZWFkYnl0ZShkZXYsIE00OFQ4Nl9SRUdfTU9OVEgpKSAtIDE7CisJCXRtLT50bV95ZWFy CT0gYmNkMmJpbihtNDh0ODZfcnRjX3JlYWRieXRlKGRldiwgTTQ4VDg2X1JFR19ZRUFSKSkgKyAx MDA7CisJCXRtLT50bV93ZGF5CT0gYmNkMmJpbihtNDh0ODZfcnRjX3JlYWRieXRlKGRldiwgTTQ4 VDg2X1JFR19ET1cpKTsKIAl9CiAKIAkvKiBjb3JyZWN0IHRoZSBob3VyIGlmIHRoZSBjbG9jayBp cyBpbiAxMmggbW9kZSAqLwogCWlmICghKHJlZyAmIE00OFQ4Nl9SRUdfQl9IMjQpKQotCQlpZiAo b3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX0hPVVIpICYgMHg4MCkKKwkJaWYgKG00OHQ4Nl9ydGNf cmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVHX0hPVVIpICYgMHg4MCkKIAkJCXRtLT50bV9ob3VyICs9 IDEyOwogCiAJcmV0dXJuIHJ0Y192YWxpZF90bSh0bSk7CkBAIC04MywzOCArMTE2LDM2IEBAIHN0 YXRpYyBpbnQgbTQ4dDg2X3J0Y19yZWFkX3RpbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg cnRjX3RpbWUgKnRtKQogc3RhdGljIGludCBtNDh0ODZfcnRjX3NldF90aW1lKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IHJ0Y190aW1lICp0bSkKIHsKIAl1bnNpZ25lZCBjaGFyIHJlZzsKLQlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Ci0J c3RydWN0IG00OHQ4Nl9vcHMgKm9wcyA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCi0JcmVn ID0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX0IpOworCXJlZyA9IG00OHQ4Nl9ydGNfcmVhZGJ5 dGUoZGV2LCBNNDhUODZfUkVHX0IpOwogCiAJLyogdXBkYXRlIGZsYWcgYW5kIDI0aCBtb2RlICov CiAJcmVnIHw9IE00OFQ4Nl9SRUdfQl9TRVQgfCBNNDhUODZfUkVHX0JfSDI0OwotCW9wcy0+d3Jp dGVieXRlKHJlZywgTTQ4VDg2X1JFR19CKTsKKwltNDh0ODZfcnRjX3dyaXRlYnl0ZShkZXYsIHJl ZywgTTQ4VDg2X1JFR19CKTsKIAogCWlmIChyZWcgJiBNNDhUODZfUkVHX0JfRE0pIHsKIAkJLyog ZGF0YSAoYmluYXJ5KSBtb2RlICovCi0JCW9wcy0+d3JpdGVieXRlKHRtLT50bV9zZWMsIE00OFQ4 Nl9SRUdfU0VDKTsKLQkJb3BzLT53cml0ZWJ5dGUodG0tPnRtX21pbiwgTTQ4VDg2X1JFR19NSU4p OwotCQlvcHMtPndyaXRlYnl0ZSh0bS0+dG1faG91ciwgTTQ4VDg2X1JFR19IT1VSKTsKLQkJb3Bz LT53cml0ZWJ5dGUodG0tPnRtX21kYXksIE00OFQ4Nl9SRUdfRE9NKTsKLQkJb3BzLT53cml0ZWJ5 dGUodG0tPnRtX21vbiArIDEsIE00OFQ4Nl9SRUdfTU9OVEgpOwotCQlvcHMtPndyaXRlYnl0ZSh0 bS0+dG1feWVhciAlIDEwMCwgTTQ4VDg2X1JFR19ZRUFSKTsKLQkJb3BzLT53cml0ZWJ5dGUodG0t PnRtX3dkYXksIE00OFQ4Nl9SRUdfRE9XKTsKKwkJbTQ4dDg2X3J0Y193cml0ZWJ5dGUoZGV2LCB0 bS0+dG1fc2VjLCBNNDhUODZfUkVHX1NFQyk7CisJCW00OHQ4Nl9ydGNfd3JpdGVieXRlKGRldiwg dG0tPnRtX21pbiwgTTQ4VDg2X1JFR19NSU4pOworCQltNDh0ODZfcnRjX3dyaXRlYnl0ZShkZXYs IHRtLT50bV9ob3VyLCBNNDhUODZfUkVHX0hPVVIpOworCQltNDh0ODZfcnRjX3dyaXRlYnl0ZShk ZXYsIHRtLT50bV9tZGF5LCBNNDhUODZfUkVHX0RPTSk7CisJCW00OHQ4Nl9ydGNfd3JpdGVieXRl KGRldiwgdG0tPnRtX21vbiArIDEsIE00OFQ4Nl9SRUdfTU9OVEgpOworCQltNDh0ODZfcnRjX3dy aXRlYnl0ZShkZXYsIHRtLT50bV95ZWFyICUgMTAwLCBNNDhUODZfUkVHX1lFQVIpOworCQltNDh0 ODZfcnRjX3dyaXRlYnl0ZShkZXYsIHRtLT50bV93ZGF5LCBNNDhUODZfUkVHX0RPVyk7CiAJfSBl bHNlIHsKIAkJLyogYmNkIG1vZGUgKi8KLQkJb3BzLT53cml0ZWJ5dGUoYmluMmJjZCh0bS0+dG1f c2VjKSwgTTQ4VDg2X1JFR19TRUMpOwotCQlvcHMtPndyaXRlYnl0ZShiaW4yYmNkKHRtLT50bV9t aW4pLCBNNDhUODZfUkVHX01JTik7Ci0JCW9wcy0+d3JpdGVieXRlKGJpbjJiY2QodG0tPnRtX2hv dXIpLCBNNDhUODZfUkVHX0hPVVIpOwotCQlvcHMtPndyaXRlYnl0ZShiaW4yYmNkKHRtLT50bV9t ZGF5KSwgTTQ4VDg2X1JFR19ET00pOwotCQlvcHMtPndyaXRlYnl0ZShiaW4yYmNkKHRtLT50bV9t b24gKyAxKSwgTTQ4VDg2X1JFR19NT05USCk7Ci0JCW9wcy0+d3JpdGVieXRlKGJpbjJiY2QodG0t PnRtX3llYXIgJSAxMDApLCBNNDhUODZfUkVHX1lFQVIpOwotCQlvcHMtPndyaXRlYnl0ZShiaW4y YmNkKHRtLT50bV93ZGF5KSwgTTQ4VDg2X1JFR19ET1cpOworCQltNDh0ODZfcnRjX3dyaXRlYnl0 ZShkZXYsIGJpbjJiY2QodG0tPnRtX3NlYyksIE00OFQ4Nl9SRUdfU0VDKTsKKwkJbTQ4dDg2X3J0 Y193cml0ZWJ5dGUoZGV2LCBiaW4yYmNkKHRtLT50bV9taW4pLCBNNDhUODZfUkVHX01JTik7CisJ CW00OHQ4Nl9ydGNfd3JpdGVieXRlKGRldiwgYmluMmJjZCh0bS0+dG1faG91ciksIE00OFQ4Nl9S RUdfSE9VUik7CisJCW00OHQ4Nl9ydGNfd3JpdGVieXRlKGRldiwgYmluMmJjZCh0bS0+dG1fbWRh eSksIE00OFQ4Nl9SRUdfRE9NKTsKKwkJbTQ4dDg2X3J0Y193cml0ZWJ5dGUoZGV2LCBiaW4yYmNk KHRtLT50bV9tb24gKyAxKSwgTTQ4VDg2X1JFR19NT05USCk7CisJCW00OHQ4Nl9ydGNfd3JpdGVi eXRlKGRldiwgYmluMmJjZCh0bS0+dG1feWVhciAlIDEwMCksIE00OFQ4Nl9SRUdfWUVBUik7CisJ CW00OHQ4Nl9ydGNfd3JpdGVieXRlKGRldiwgYmluMmJjZCh0bS0+dG1fd2RheSksIE00OFQ4Nl9S RUdfRE9XKTsKIAl9CiAKIAkvKiB1cGRhdGUgZW5kZWQgKi8KIAlyZWcgJj0gfk00OFQ4Nl9SRUdf Ql9TRVQ7Ci0Jb3BzLT53cml0ZWJ5dGUocmVnLCBNNDhUODZfUkVHX0IpOworCW00OHQ4Nl9ydGNf d3JpdGVieXRlKGRldiwgcmVnLCBNNDhUODZfUkVHX0IpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0x MjIsMTUgKzE1MywxMyBAQCBzdGF0aWMgaW50IG00OHQ4Nl9ydGNfc2V0X3RpbWUoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgcnRjX3RpbWUgKnRtKQogc3RhdGljIGludCBtNDh0ODZfcnRjX3By b2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSkKIHsKIAl1bnNpZ25l ZCBjaGFyIHJlZzsKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1f ZGV2aWNlKGRldik7Ci0Jc3RydWN0IG00OHQ4Nl9vcHMgKm9wcyA9IHBkZXYtPmRldi5wbGF0Zm9y bV9kYXRhOwogCi0JcmVnID0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX0IpOworCXJlZyA9IG00 OHQ4Nl9ydGNfcmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVHX0IpOwogCiAJc2VxX3ByaW50ZihzZXEs ICJtb2RlXHRcdDogJXNcbiIsCiAJCSAocmVnICYgTTQ4VDg2X1JFR19CX0RNKSA/ICJiaW5hcnki IDogImJjZCIpOwogCi0JcmVnID0gb3BzLT5yZWFkYnl0ZShNNDhUODZfUkVHX0QpOworCXJlZyA9 IG00OHQ4Nl9ydGNfcmVhZGJ5dGUoZGV2LCBNNDhUODZfUkVHX0QpOwogCiAJc2VxX3ByaW50Zihz ZXEsICJiYXR0ZXJ5XHRcdDogJXNcbiIsCiAJCSAocmVnICYgTTQ4VDg2X1JFR19EX1ZSVCkgPyAi b2siIDogImV4aGF1c3RlZCIpOwpAQCAtMTQ0LDM0ICsxNzMsMTIxIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgcnRjX2NsYXNzX29wcyBtNDh0ODZfcnRjX29wcyA9IHsKIAkucHJvYwkJPSBtNDh0ODZf cnRjX3Byb2MsCiB9OwogCi1zdGF0aWMgaW50IG00OHQ4Nl9ydGNfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqZGV2KQorc3RhdGljIGludCBtNDh0ODZfcnRjX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJdW5zaWduZWQgY2hhciByZWc7Ci0Jc3RydWN0IG00OHQ4 Nl9vcHMgKm9wcyA9IGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7Ci0Jc3RydWN0IHJ0Y19kZXZpY2Ug KnJ0YyA9IHJ0Y19kZXZpY2VfcmVnaXN0ZXIoIm00OHQ4NiIsCi0JCQkJJmRldi0+ZGV2LCAmbTQ4 dDg2X3J0Y19vcHMsIFRISVNfTU9EVUxFKTsKLQotCWlmIChJU19FUlIocnRjKSkKLQkJcmV0dXJu IFBUUl9FUlIocnRjKTsKLQotCXBsYXRmb3JtX3NldF9kcnZkYXRhKGRldiwgcnRjKTsKKwlpbnQg ZXJyOworCXN0cnVjdCByZXNvdXJjZSAqcmVzX2luZGV4LCAqcmVzX2RhdGE7CisJc3RydWN0IG00 OHQ4Nl9ydGNfcHJpdmF0ZV9kYXRhICpwcml2OworCisJLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0 aGUgZGV2aWNlIHN0cnVjdHVyZSAoYW5kIHplcm8gaXQpICovCisJcHJpdiA9IGt6YWxsb2Moc2l6 ZW9mKHN0cnVjdCBtNDh0ODZfcnRjX3ByaXZhdGVfZGF0YSksIEdGUF9LRVJORUwpOworCWlmICgh cHJpdikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBw cml2KTsKKworCWlmICghcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEpIHsKKwkJcmVzX2luZGV4ID0g cGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZSgKKwkJCQkJcGRldiwgSU9SRVNPVVJDRV9NRU0s ICJydGNfaW5kZXgiKTsKKwkJaWYgKCFyZXNfaW5kZXgpIHsKKwkJCWVyciA9IC1FTlhJTzsKKwkJ CWdvdG8gb3V0X2ZyZWU7CisJCX0KKworCQlyZXNfZGF0YSA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZV9ieW5hbWUoCisJCQkJCXBkZXYsIElPUkVTT1VSQ0VfTUVNLCAicnRjX2RhdGEiKTsKKwkJaWYg KCFyZXNfZGF0YSkgeworCQkJZXJyID0gLUVOWElPOworCQkJZ290byBvdXRfZnJlZTsKKwkJfQor CisJCWlmICghcmVxdWVzdF9tZW1fcmVnaW9uKHJlc19pbmRleC0+c3RhcnQsCisJCQkJCXJlc291 cmNlX3NpemUocmVzX2luZGV4KSwKKwkJCQkJZGV2X25hbWUoJnBkZXYtPmRldikpKSB7CisJCQll cnIgPSAtRUJVU1k7CisJCQlnb3RvIG91dF9mcmVlOworCQl9CisKKwkJaWYgKCFyZXF1ZXN0X21l bV9yZWdpb24ocmVzX2RhdGEtPnN0YXJ0LAorCQkJCQlyZXNvdXJjZV9zaXplKHJlc19kYXRhKSwK KwkJCQkJZGV2X25hbWUoJnBkZXYtPmRldikpKSB7CisJCQllcnIgPSAtRUJVU1k7CisJCQlnb3Rv IG91dF9yZWxlYXNlX2luZGV4OworCQl9CisKKwkJcHJpdi0+aW9faW5kZXggPSBpb3JlbWFwKHJl c19pbmRleC0+c3RhcnQsCisJCQkJCXJlc291cmNlX3NpemUocmVzX2luZGV4KSk7CisJCWlmICgh cHJpdi0+aW9faW5kZXgpIHsKKwkJCWVyciA9IC1FSU87CisJCQlnb3RvIG91dF9yZWxlYXNlX2Rh dGE7CisJCX0KKworCQlwcml2LT5pb19kYXRhID0gaW9yZW1hcChyZXNfZGF0YS0+c3RhcnQsCisJ CQkJCXJlc291cmNlX3NpemUocmVzX2RhdGEpKTsKKwkJaWYgKCFwcml2LT5pb19kYXRhKSB7CisJ CQllcnIgPSAtRUlPOworCQkJZ290byBvdXRfaW9faW5kZXg7CisJCX0KKwl9IGVsc2UKKwkJcHJp di0+b3BzID0gcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CisKKwlwcml2LT5ydGMgPSBydGNfZGV2 aWNlX3JlZ2lzdGVyKCJtNDh0ODYiLAorCQkJCSZwZGV2LT5kZXYsICZtNDh0ODZfcnRjX29wcywg VEhJU19NT0RVTEUpOworCWlmIChJU19FUlIocHJpdi0+cnRjKSkgeworCQllcnIgPSBQVFJfRVJS KHByaXYtPnJ0Yyk7CisJCWlmICghcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEpCisJCQlnb3RvIG91 dF9pb19kYXRhOworCQllbHNlCisJCQlnb3RvIG91dF9mcmVlOworCX0KIAogCS8qIHJlYWQgYmF0 dGVyeSBzdGF0dXMgKi8KLQlyZWcgPSBvcHMtPnJlYWRieXRlKE00OFQ4Nl9SRUdfRCk7Ci0JZGV2 X2luZm8oJmRldi0+ZGV2LCAiYmF0dGVyeSAlc1xuIiwKKwlyZWcgPSBtNDh0ODZfcnRjX3JlYWRi eXRlKCZwZGV2LT5kZXYsIE00OFQ4Nl9SRUdfRCk7CisJZGV2X2luZm8oJnBkZXYtPmRldiwgImJh dHRlcnkgJXNcbiIsCiAJCShyZWcgJiBNNDhUODZfUkVHX0RfVlJUKSA/ICJvayIgOiAiZXhoYXVz dGVkIik7CiAKIAlyZXR1cm4gMDsKKworb3V0X2lvX2RhdGE6CisJaW91bm1hcChwcml2LT5pb19k YXRhKTsKK291dF9pb19pbmRleDoKKwlpb3VubWFwKHByaXYtPmlvX2luZGV4KTsKK291dF9yZWxl YXNlX2RhdGE6CisJcmVsZWFzZV9tZW1fcmVnaW9uKHJlc19kYXRhLT5zdGFydCwgcmVzb3VyY2Vf c2l6ZShyZXNfZGF0YSkpOworb3V0X3JlbGVhc2VfaW5kZXg6CisJcmVsZWFzZV9tZW1fcmVnaW9u KHJlc19pbmRleC0+c3RhcnQsIHJlc291cmNlX3NpemUocmVzX2luZGV4KSk7CitvdXRfZnJlZToK KwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKKwlrZnJlZShwcml2KTsKKwlyZXR1 cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IG00OHQ4Nl9ydGNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKmRldikKK3N0YXRpYyBpbnQgbTQ4dDg2X3J0Y19yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIHsKLQlzdHJ1Y3QgcnRjX2RldmljZSAqcnRjID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3QgbTQ4dDg2 X3J0Y19wcml2YXRlX2RhdGEgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwor CWlmIChwcml2LT5ydGMpCisJCXJ0Y19kZXZpY2VfdW5yZWdpc3Rlcihwcml2LT5ydGMpOworCisJ aWYgKHByaXYtPmlvX2RhdGEpIHsKKwkJaW91bm1hcChwcml2LT5pb19kYXRhKTsKKwkJcmVzID0g cGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZSgKKwkJCQkJcGRldiwgSU9SRVNPVVJDRV9NRU0s ICJydGNfZGF0YSIpOworCQlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzb3VyY2Vf c2l6ZShyZXMpKTsKKwl9CisKKwlpZiAocHJpdi0+aW9faW5kZXgpIHsKKwkJaW91bm1hcChwcml2 LT5pb19pbmRleCk7CisJCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUoCisJCQkJ CXBkZXYsIElPUkVTT1VSQ0VfTUVNLCAicnRjX2luZGV4Iik7CisJCXJlbGVhc2VfbWVtX3JlZ2lv bihyZXMtPnN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcykpOworCX0KIAotIAlpZiAocnRjKQotCQly dGNfZGV2aWNlX3VucmVnaXN0ZXIocnRjKTsKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBO VUxMKTsKIAotCXBsYXRmb3JtX3NldF9kcnZkYXRhKGRldiwgTlVMTCk7CisJa2ZyZWUocHJpdik7 CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjEuNy4xMC40CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkZXZpY2V0cmVlLWRpc2N1c3MgbWFpbGluZyBsaXN0CmRl dmljZXRyZWUtZGlzY3Vzc0BsaXN0cy5vemxhYnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9y Zy9saXN0aW5mby9kZXZpY2V0cmVlLWRpc2N1c3MK