From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Weiqing Kong Subject: [PATCH 2/3] pwm: Add MediaTek MT2701 display PWM driver support Date: Mon, 23 May 2016 19:23:51 +0800 Message-ID: <1464002632-411-3-git-send-email-weiqing.kong@mediatek.com> In-Reply-To: <1464002632-411-1-git-send-email-weiqing.kong@mediatek.com> References: <1464002632-411-1-git-send-email-weiqing.kong@mediatek.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="__=_Part_Boundary_009_562858069.643607741" To: Thierry Reding , Mark Rutland , Matthias Brugger , weiqing.kong@mediatek.com Cc: Rob Herring , Pawel Moll , Ian Campbell , Kumar Gala , Russell King , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, srv_heupstream@mediatek.com, Sascha Hauer , erin.lo@mediatek.com, yingjoe.chen@mediatek.com, eddie.huang@mediatek.com, yh.huang@mediatek.com, yt.shen@mediatek.com List-ID: This is MIME multipart 7. --__=_Part_Boundary_009_562858069.643607741 Content-Type: text/plain Content-Transfer-Encoding: base64 VXNlIHRoZSBtdGtfcHdtX2RhdGEgc3RydWN0aW9uIHRvIGRlZmluZSBkaWZmZXJlbnQgcmVnaXN0 ZXJzDQphbmQgYWRkIE1UMjcwMSBzcGVjaWZpYyByZWdpc3RlciBvcGVyYXRpb25zLCBzdWNoIGFz IE1UMjcwMQ0KZG9lc24ndCBoYXZlIGNvbW1pdCByZWdpc3RlciwgbmVlZHMgdG8gZGlzYWJsZSBk b3VibGUgYnVmZmVyDQpiZWZvcmUgd3JpdGluZyByZWdpc3RlciwgYW5kIG5lZWRzIHRvIHNlbGVj dCBtYW51YWwgbW9kZQ0KYW5kIHVzZSBQV01fUEVSSU9EL1BXTV9ISUdIX1dJRFRILg0KDQpTaWdu ZWQtb2ZmLWJ5OiBXZWlxaW5nIEtvbmcgPHdlaXFpbmcua29uZ0BtZWRpYXRlay5jb20+DQotLS0N CiBkcml2ZXJzL3B3bS9wd20tbXRrLWRpc3AuYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygr KSwgMTcgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9wd20tbXRrLWRp c3AuYyBiL2RyaXZlcnMvcHdtL3B3bS1tdGstZGlzcC5jDQppbmRleCAwYWQzMzg1Li4wM2I5Yzll IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9wd20vcHdtLW10ay1kaXNwLmMNCisrKyBiL2RyaXZlcnMv cHdtL3B3bS1tdGstZGlzcC5jDQpAQCAtMTgsMzMgKzE4LDQ0IEBADQogI2luY2x1ZGUgPGxpbnV4 L2lvLmg+DQogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KICNpbmNsdWRlIDxsaW51eC9vZi5o Pg0KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCiAjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+DQogI2luY2x1ZGUgPGxpbnV4L3B3bS5oPg0KICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+DQogDQogI2RlZmluZSBESVNQX1BXTV9FTgkJMHgwMA0KLSNkZWZpbmUgUFdNX0VOQUJM RV9NQVNLCQlCSVQoMCkNCiANCiAjZGVmaW5lIERJU1BfUFdNX0NPTU1JVAkJMHgwOA0KICNkZWZp bmUgUFdNX0NPTU1JVF9NQVNLCQlCSVQoMCkNCiANCi0jZGVmaW5lIERJU1BfUFdNX0NPTl8wCQkw eDEwDQogI2RlZmluZSBQV01fQ0xLRElWX1NISUZUCTE2DQogI2RlZmluZSBQV01fQ0xLRElWX01B WAkJMHgzZmYNCiAjZGVmaW5lIFBXTV9DTEtESVZfTUFTSwkJKFBXTV9DTEtESVZfTUFYIDw8IFBX TV9DTEtESVZfU0hJRlQpDQogDQotI2RlZmluZSBESVNQX1BXTV9DT05fMQkJMHgxNA0KICNkZWZp bmUgUFdNX1BFUklPRF9CSVRfV0lEVEgJMTINCiAjZGVmaW5lIFBXTV9QRVJJT0RfTUFTSwkJKCgx IDw8IFBXTV9QRVJJT0RfQklUX1dJRFRIKSAtIDEpDQogDQogI2RlZmluZSBQV01fSElHSF9XSURU SF9TSElGVAkxNg0KICNkZWZpbmUgUFdNX0hJR0hfV0lEVEhfTUFTSwkoMHgxZmZmIDw8IFBXTV9I SUdIX1dJRFRIX1NISUZUKQ0KIA0KKyNkZWZpbmUgTVQyNzAxX1BXTV9NQU5VQUxfU0VMX01BU0sJ QklUKDEpDQorI2RlZmluZSBNVDI3MDFfUFdNX0JMU19ERUJVRwkJMHhiMA0KKyNkZWZpbmUgTVQy NzAxX1BXTV9CTFNfREVCVUdfTUFTSwkweDMNCisNCitzdHJ1Y3QgbXRrX3B3bV9kYXRhIHsNCisJ dW5zaWduZWQgaW50IGVuYWJsZV9iaXQ7DQorCXVuc2lnbmVkIGludCBjb24wOw0KKwl1bnNpZ25l ZCBpbnQgY29uMF9zZWw7DQorCXVuc2lnbmVkIGludCBjb24xOw0KKwlib29sIGhhdmVfY29tbWl0 X3JlZzsNCit9Ow0KKw0KIHN0cnVjdCBtdGtfZGlzcF9wd20gew0KIAlzdHJ1Y3QgcHdtX2NoaXAg Y2hpcDsNCiAJc3RydWN0IGNsayAqY2xrX21haW47DQogCXN0cnVjdCBjbGsgKmNsa19tbTsNCiAJ dm9pZCBfX2lvbWVtICpiYXNlOw0KKwljb25zdCBzdHJ1Y3QgbXRrX3B3bV9kYXRhICpkYXRhOw0K IH07DQogDQogc3RhdGljIGlubGluZSBzdHJ1Y3QgbXRrX2Rpc3BfcHdtICp0b19tdGtfZGlzcF9w d20oc3RydWN0IHB3bV9jaGlwICpjaGlwKQ0KQEAgLTEwNiwxMiArMTE3LDE4IEBAIHN0YXRpYyBp bnQgbXRrX2Rpc3BfcHdtX2NvbmZpZyhzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsIHN0cnVjdCBwd21f ZGV2aWNlICpwd20sDQogCQlyZXR1cm4gZXJyOw0KIAl9DQogDQotCW10a19kaXNwX3B3bV91cGRh dGVfYml0cyhtZHAsIERJU1BfUFdNX0NPTl8wLCBQV01fQ0xLRElWX01BU0ssDQorCW10a19kaXNw X3B3bV91cGRhdGVfYml0cyhtZHAsIG1kcC0+ZGF0YS0+Y29uMCwNCisJCQkJIFBXTV9DTEtESVZf TUFTSywNCiAJCQkJIGNsa19kaXYgPDwgUFdNX0NMS0RJVl9TSElGVCk7DQotCW10a19kaXNwX3B3 bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0NPTl8xLA0KLQkJCQkgUFdNX1BFUklPRF9NQVNL IHwgUFdNX0hJR0hfV0lEVEhfTUFTSywgdmFsdWUpOw0KLQltdGtfZGlzcF9wd21fdXBkYXRlX2Jp dHMobWRwLCBESVNQX1BXTV9DT01NSVQsIFBXTV9DT01NSVRfTUFTSywgMSk7DQotCW10a19kaXNw X3B3bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0NPTU1JVCwgUFdNX0NPTU1JVF9NQVNLLCAw KTsNCisJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgbWRwLT5kYXRhLT5jb24xLA0KKwkJ CQkgUFdNX1BFUklPRF9NQVNLIHwgUFdNX0hJR0hfV0lEVEhfTUFTSywNCisJCQkJIHZhbHVlKTsN CisJaWYgKG1kcC0+ZGF0YS0+aGF2ZV9jb21taXRfcmVnKSB7DQorCQltdGtfZGlzcF9wd21fdXBk YXRlX2JpdHMobWRwLCBESVNQX1BXTV9DT01NSVQsDQorCQkJCQkgUFdNX0NPTU1JVF9NQVNLLCAw eDEpOw0KKwkJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fQ09NTUlULA0K KwkJCQkJIFBXTV9DT01NSVRfTUFTSywgMHgwKTsNCisJfQ0KIA0KIAljbGtfZGlzYWJsZShtZHAt PmNsa19tbSk7DQogCWNsa19kaXNhYmxlKG1kcC0+Y2xrX21haW4pOw0KQEAgLTEzNCw3ICsxNTEs OSBAQCBzdGF0aWMgaW50IG10a19kaXNwX3B3bV9lbmFibGUoc3RydWN0IHB3bV9jaGlwICpjaGlw LCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQ0KIAkJcmV0dXJuIGVycjsNCiAJfQ0KIA0KLQltdGtf ZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9FTiwgUFdNX0VOQUJMRV9NQVNLLCAx KTsNCisJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fRU4sDQorCQkJCSBt ZHAtPmRhdGEtPmVuYWJsZV9iaXQsDQorCQkJCSBtZHAtPmRhdGEtPmVuYWJsZV9iaXQpOw0KIA0K IAlyZXR1cm4gMDsNCiB9DQpAQCAtMTQzLDcgKzE2Miw4IEBAIHN0YXRpYyB2b2lkIG10a19kaXNw X3B3bV9kaXNhYmxlKHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3 bSkNCiB7DQogCXN0cnVjdCBtdGtfZGlzcF9wd20gKm1kcCA9IHRvX210a19kaXNwX3B3bShjaGlw KTsNCiANCi0JbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fRU4sIFBXTV9F TkFCTEVfTUFTSywgMCk7DQorCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdN X0VOLA0KKwkJCQkgbWRwLT5kYXRhLT5lbmFibGVfYml0LCAweDApOw0KIA0KIAljbGtfZGlzYWJs ZShtZHAtPmNsa19tbSk7DQogCWNsa19kaXNhYmxlKG1kcC0+Y2xrX21haW4pOw0KQEAgLTE1Niwx MiArMTc2LDQxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHdtX29wcyBtdGtfZGlzcF9wd21fb3Bz ID0gew0KIAkub3duZXIgPSBUSElTX01PRFVMRSwNCiB9Ow0KIA0KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbXRrX3B3bV9kYXRhIG10ODE3M19wd21fZGF0YSA9IHsNCisJLmVuYWJsZV9iaXQgPSBCSVQo MCksDQorCS5jb24wID0gMHgxMCwNCisJLmNvbjBfc2VsID0gMHgwLA0KKwkuY29uMSA9IDB4MTQs DQorCS5oYXZlX2NvbW1pdF9yZWcgPSB0cnVlLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBtdGtfcHdtX2RhdGEgbXQyNzAxX3B3bV9kYXRhID0gew0KKwkuZW5hYmxlX2JpdCA9IEJJVCgx NiksDQorCS5jb24wID0gMHhhOCwNCisJLmNvbjBfc2VsID0gMHgyLA0KKwkuY29uMSA9IDB4YWMs DQorCS5oYXZlX2NvbW1pdF9yZWcgPSBmYWxzZSwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIG10a19kaXNwX3B3bV9vZl9tYXRjaFtdID0gew0KKwl7IC5jb21wYXRp YmxlID0gIm1lZGlhdGVrLG10MjcwMS1kaXNwLWJscyIsIC5kYXRhID0gJm10MjcwMV9wd21fZGF0 YX0sDQorCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2NTk1LWRpc3AtcHdtIiwgLmRhdGEg PSAmbXQ4MTczX3B3bV9kYXRhfSwNCisJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMt ZGlzcC1wd20iLCAuZGF0YSA9ICZtdDgxNzNfcHdtX2RhdGF9LA0KKwl7IH0NCit9Ow0KK01PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIG10a19kaXNwX3B3bV9vZl9tYXRjaCk7DQorDQogc3RhdGljIGlu dCBtdGtfZGlzcF9wd21fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiB7DQor CWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmlkOw0KIAlzdHJ1Y3QgbXRrX2Rpc3BfcHdtICpt ZHA7DQogCXN0cnVjdCByZXNvdXJjZSAqcjsNCiAJaW50IHJldDsNCiANCisJaWQgPSBvZl9tYXRj aF9kZXZpY2UobXRrX2Rpc3BfcHdtX29mX21hdGNoLCAmcGRldi0+ZGV2KTsNCisJaWYgKCFpZCkN CisJCXJldHVybiAtRUlOVkFMOw0KKw0KIAltZHAgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwg c2l6ZW9mKCptZHApLCBHRlBfS0VSTkVMKTsNCiAJaWYgKCFtZHApDQogCQlyZXR1cm4gLUVOT01F TTsNCkBAIC0xOTEsNiArMjQwLDcgQEAgc3RhdGljIGludCBtdGtfZGlzcF9wd21fcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJbWRwLT5jaGlwLm9wcyA9ICZtdGtfZGlzcF9w d21fb3BzOw0KIAltZHAtPmNoaXAuYmFzZSA9IC0xOw0KIAltZHAtPmNoaXAubnB3bSA9IDE7DQor CW1kcC0+ZGF0YSA9IGlkLT5kYXRhOw0KIA0KIAlyZXQgPSBwd21jaGlwX2FkZCgmbWRwLT5jaGlw KTsNCiAJaWYgKHJldCA8IDApIHsNCkBAIC0yMDAsNiArMjUwLDE4IEBAIHN0YXRpYyBpbnQgbXRr X2Rpc3BfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogDQogCXBsYXRm b3JtX3NldF9kcnZkYXRhKHBkZXYsIG1kcCk7DQogDQorCS8qDQorCSAqIEZvciBNVDI3MDEsIGRp c2FibGUgZG91YmxlIGJ1ZmZlciBiZWZvcmUgd3JpdGluZyByZWdpc3Rlcg0KKwkgKiBhbmQgc2Vs ZWN0IG1hbnVhbCBtb2RlIGFuZCB1c2UgUFdNX1BFUklPRC9QV01fSElHSF9XSURUSC4NCisJICov DQorCWlmICghbWRwLT5kYXRhLT5oYXZlX2NvbW1pdF9yZWcpIHsNCisJCW10a19kaXNwX3B3bV91 cGRhdGVfYml0cyhtZHAsIE1UMjcwMV9QV01fQkxTX0RFQlVHLA0KKwkJCQkJIE1UMjcwMV9QV01f QkxTX0RFQlVHX01BU0ssIDB4Myk7DQorCQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBt ZHAtPmRhdGEtPmNvbjAsDQorCQkJCQkgTVQyNzAxX1BXTV9NQU5VQUxfU0VMX01BU0ssDQorCQkJ CQkgbWRwLT5kYXRhLT5jb24wX3NlbCk7DQorCX0NCisNCiAJcmV0dXJuIDA7DQogDQogZGlzYWJs ZV9jbGtfbW06DQpAQCAtMjIxLDEzICsyODMsNiBAQCBzdGF0aWMgaW50IG10a19kaXNwX3B3bV9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJcmV0dXJuIHJldDsNCiB9DQog DQotc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2Rpc3BfcHdtX29mX21hdGNo W10gPSB7DQotCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLWRpc3AtcHdtIiB9LA0K LQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjU5NS1kaXNwLXB3bSIgfSwNCi0JeyB9DQot fTsNCi1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdGtfZGlzcF9wd21fb2ZfbWF0Y2gpOw0KLQ0K IHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX3B3bV9kcml2ZXIgPSB7DQog CS5kcml2ZXIgPSB7DQogCQkubmFtZSA9ICJtZWRpYXRlay1kaXNwLXB3bSIsDQotLSANCjEuOC4x LjEuZGlydHkNCg== --__=_Part_Boundary_009_562858069.643607741 Content-Type: text/html Content-Transfer-Encoding: base64 PHByZT4NClVzZSB0aGUgbXRrX3B3bV9kYXRhIHN0cnVjdGlvbiB0byBkZWZpbmUgZGlmZmVyZW50 IHJlZ2lzdGVycw0KYW5kIGFkZCBNVDI3MDEgc3BlY2lmaWMgcmVnaXN0ZXIgb3BlcmF0aW9ucywg c3VjaCBhcyBNVDI3MDENCmRvZXNuJiMzOTt0IGhhdmUgY29tbWl0IHJlZ2lzdGVyLCBuZWVkcyB0 byBkaXNhYmxlIGRvdWJsZSBidWZmZXINCmJlZm9yZSB3cml0aW5nIHJlZ2lzdGVyLCBhbmQgbmVl ZHMgdG8gc2VsZWN0IG1hbnVhbCBtb2RlDQphbmQgdXNlIFBXTV9QRVJJT0QvUFdNX0hJR0hfV0lE VEguDQoNClNpZ25lZC1vZmYtYnk6IFdlaXFpbmcgS29uZyAmbHQ7d2VpcWluZy5rb25nQG1lZGlh dGVrLmNvbSZndDsNCi0tLQ0KIGRyaXZlcnMvcHdtL3B3bS1tdGstZGlzcC5jIHwgODkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2Vk LCA3MiBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvcHdtL3B3bS1tdGstZGlzcC5jIGIvZHJpdmVycy9wd20vcHdtLW10ay1kaXNwLmMNCmluZGV4 IDBhZDMzODUuLjAzYjljOWUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3B3bS9wd20tbXRrLWRpc3Au Yw0KKysrIGIvZHJpdmVycy9wd20vcHdtLW10ay1kaXNwLmMNCkBAIC0xOCwzMyArMTgsNDQgQEAN CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsNCiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxl LmgmZ3Q7DQogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7DQorI2luY2x1ZGUgJmx0O2xpbnV4 L29mX2RldmljZS5oJmd0Ow0KICNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZn dDsNCiAjaW5jbHVkZSAmbHQ7bGludXgvcHdtLmgmZ3Q7DQogI2luY2x1ZGUgJmx0O2xpbnV4L3Ns YWIuaCZndDsNCiANCiAjZGVmaW5lIERJU1BfUFdNX0VOCQkweDAwDQotI2RlZmluZSBQV01fRU5B QkxFX01BU0sJCUJJVCgwKQ0KIA0KICNkZWZpbmUgRElTUF9QV01fQ09NTUlUCQkweDA4DQogI2Rl ZmluZSBQV01fQ09NTUlUX01BU0sJCUJJVCgwKQ0KIA0KLSNkZWZpbmUgRElTUF9QV01fQ09OXzAJ CTB4MTANCiAjZGVmaW5lIFBXTV9DTEtESVZfU0hJRlQJMTYNCiAjZGVmaW5lIFBXTV9DTEtESVZf TUFYCQkweDNmZg0KICNkZWZpbmUgUFdNX0NMS0RJVl9NQVNLCQkoUFdNX0NMS0RJVl9NQVggJmx0 OyZsdDsgUFdNX0NMS0RJVl9TSElGVCkNCiANCi0jZGVmaW5lIERJU1BfUFdNX0NPTl8xCQkweDE0 DQogI2RlZmluZSBQV01fUEVSSU9EX0JJVF9XSURUSAkxMg0KICNkZWZpbmUgUFdNX1BFUklPRF9N QVNLCQkoKDEgJmx0OyZsdDsgUFdNX1BFUklPRF9CSVRfV0lEVEgpIC0gMSkNCiANCiAjZGVmaW5l IFBXTV9ISUdIX1dJRFRIX1NISUZUCTE2DQogI2RlZmluZSBQV01fSElHSF9XSURUSF9NQVNLCSgw eDFmZmYgJmx0OyZsdDsgUFdNX0hJR0hfV0lEVEhfU0hJRlQpDQogDQorI2RlZmluZSBNVDI3MDFf UFdNX01BTlVBTF9TRUxfTUFTSwlCSVQoMSkNCisjZGVmaW5lIE1UMjcwMV9QV01fQkxTX0RFQlVH CQkweGIwDQorI2RlZmluZSBNVDI3MDFfUFdNX0JMU19ERUJVR19NQVNLCTB4Mw0KKw0KK3N0cnVj dCBtdGtfcHdtX2RhdGEgew0KKwl1bnNpZ25lZCBpbnQgZW5hYmxlX2JpdDsNCisJdW5zaWduZWQg aW50IGNvbjA7DQorCXVuc2lnbmVkIGludCBjb24wX3NlbDsNCisJdW5zaWduZWQgaW50IGNvbjE7 DQorCWJvb2wgaGF2ZV9jb21taXRfcmVnOw0KK307DQorDQogc3RydWN0IG10a19kaXNwX3B3bSB7 DQogCXN0cnVjdCBwd21fY2hpcCBjaGlwOw0KIAlzdHJ1Y3QgY2xrICpjbGtfbWFpbjsNCiAJc3Ry dWN0IGNsayAqY2xrX21tOw0KIAl2b2lkIF9faW9tZW0gKmJhc2U7DQorCWNvbnN0IHN0cnVjdCBt dGtfcHdtX2RhdGEgKmRhdGE7DQogfTsNCiANCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfZGlz cF9wd20gKnRvX210a19kaXNwX3B3bShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXApDQpAQCAtMTA2LDEy ICsxMTcsMTggQEAgc3RhdGljIGludCBtdGtfZGlzcF9wd21fY29uZmlnKHN0cnVjdCBwd21fY2hp cCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwNCiAJCXJldHVybiBlcnI7DQogCX0NCiAN Ci0JbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fQ09OXzAsIFBXTV9DTEtE SVZfTUFTSywNCisJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgbWRwLSZndDtkYXRhLSZn dDtjb24wLA0KKwkJCQkgUFdNX0NMS0RJVl9NQVNLLA0KIAkJCQkgY2xrX2RpdiAmbHQ7Jmx0OyBQ V01fQ0xLRElWX1NISUZUKTsNCi0JbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9Q V01fQ09OXzEsDQotCQkJCSBQV01fUEVSSU9EX01BU0sgfCBQV01fSElHSF9XSURUSF9NQVNLLCB2 YWx1ZSk7DQotCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0NPTU1JVCwg UFdNX0NPTU1JVF9NQVNLLCAxKTsNCi0JbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElT UF9QV01fQ09NTUlULCBQV01fQ09NTUlUX01BU0ssIDApOw0KKwltdGtfZGlzcF9wd21fdXBkYXRl X2JpdHMobWRwLCBtZHAtJmd0O2RhdGEtJmd0O2NvbjEsDQorCQkJCSBQV01fUEVSSU9EX01BU0sg fCBQV01fSElHSF9XSURUSF9NQVNLLA0KKwkJCQkgdmFsdWUpOw0KKwlpZiAobWRwLSZndDtkYXRh LSZndDtoYXZlX2NvbW1pdF9yZWcpIHsNCisJCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAs IERJU1BfUFdNX0NPTU1JVCwNCisJCQkJCSBQV01fQ09NTUlUX01BU0ssIDB4MSk7DQorCQltdGtf ZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9DT01NSVQsDQorCQkJCQkgUFdNX0NP TU1JVF9NQVNLLCAweDApOw0KKwl9DQogDQogCWNsa19kaXNhYmxlKG1kcC0mZ3Q7Y2xrX21tKTsN CiAJY2xrX2Rpc2FibGUobWRwLSZndDtjbGtfbWFpbik7DQpAQCAtMTM0LDcgKzE1MSw5IEBAIHN0 YXRpYyBpbnQgbXRrX2Rpc3BfcHdtX2VuYWJsZShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsIHN0cnVj dCBwd21fZGV2aWNlICpwd20pDQogCQlyZXR1cm4gZXJyOw0KIAl9DQogDQotCW10a19kaXNwX3B3 bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0VOLCBQV01fRU5BQkxFX01BU0ssIDEpOw0KKwlt dGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9FTiwNCisJCQkJIG1kcC0mZ3Q7 ZGF0YS0mZ3Q7ZW5hYmxlX2JpdCwNCisJCQkJIG1kcC0mZ3Q7ZGF0YS0mZ3Q7ZW5hYmxlX2JpdCk7 DQogDQogCXJldHVybiAwOw0KIH0NCkBAIC0xNDMsNyArMTYyLDggQEAgc3RhdGljIHZvaWQgbXRr X2Rpc3BfcHdtX2Rpc2FibGUoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2Rldmlj ZSAqcHdtKQ0KIHsNCiAJc3RydWN0IG10a19kaXNwX3B3bSAqbWRwID0gdG9fbXRrX2Rpc3BfcHdt KGNoaXApOw0KIA0KLQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9FTiwg UFdNX0VOQUJMRV9NQVNLLCAwKTsNCisJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElT UF9QV01fRU4sDQorCQkJCSBtZHAtJmd0O2RhdGEtJmd0O2VuYWJsZV9iaXQsIDB4MCk7DQogDQog CWNsa19kaXNhYmxlKG1kcC0mZ3Q7Y2xrX21tKTsNCiAJY2xrX2Rpc2FibGUobWRwLSZndDtjbGtf bWFpbik7DQpAQCAtMTU2LDEyICsxNzYsNDEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwd21fb3Bz IG10a19kaXNwX3B3bV9vcHMgPSB7DQogCS5vd25lciA9IFRISVNfTU9EVUxFLA0KIH07DQogDQor c3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfcHdtX2RhdGEgbXQ4MTczX3B3bV9kYXRhID0gew0KKwku ZW5hYmxlX2JpdCA9IEJJVCgwKSwNCisJLmNvbjAgPSAweDEwLA0KKwkuY29uMF9zZWwgPSAweDAs DQorCS5jb24xID0gMHgxNCwNCisJLmhhdmVfY29tbWl0X3JlZyA9IHRydWUsDQorfTsNCisNCitz dGF0aWMgY29uc3Qgc3RydWN0IG10a19wd21fZGF0YSBtdDI3MDFfcHdtX2RhdGEgPSB7DQorCS5l bmFibGVfYml0ID0gQklUKDE2KSwNCisJLmNvbjAgPSAweGE4LA0KKwkuY29uMF9zZWwgPSAweDIs DQorCS5jb24xID0gMHhhYywNCisJLmhhdmVfY29tbWl0X3JlZyA9IGZhbHNlLA0KK307DQorDQor c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2Rpc3BfcHdtX29mX21hdGNoW10g PSB7DQorCXsgLmNvbXBhdGlibGUgPSAmcXVvdDttZWRpYXRlayxtdDI3MDEtZGlzcC1ibHMmcXVv dDssIC5kYXRhID0gJmFtcDttdDI3MDFfcHdtX2RhdGF9LA0KKwl7IC5jb21wYXRpYmxlID0gJnF1 b3Q7bWVkaWF0ZWssbXQ2NTk1LWRpc3AtcHdtJnF1b3Q7LCAuZGF0YSA9ICZhbXA7bXQ4MTczX3B3 bV9kYXRhfSwNCisJeyAuY29tcGF0aWJsZSA9ICZxdW90O21lZGlhdGVrLG10ODE3My1kaXNwLXB3 bSZxdW90OywgLmRhdGEgPSAmYW1wO210ODE3M19wd21fZGF0YX0sDQorCXsgfQ0KK307DQorTU9E VUxFX0RFVklDRV9UQUJMRShvZiwgbXRrX2Rpc3BfcHdtX29mX21hdGNoKTsNCisNCiBzdGF0aWMg aW50IG10a19kaXNwX3B3bV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIHsN CisJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaWQ7DQogCXN0cnVjdCBtdGtfZGlzcF9wd20g Km1kcDsNCiAJc3RydWN0IHJlc291cmNlICpyOw0KIAlpbnQgcmV0Ow0KIA0KKwlpZCA9IG9mX21h dGNoX2RldmljZShtdGtfZGlzcF9wd21fb2ZfbWF0Y2gsICZhbXA7cGRldi0mZ3Q7ZGV2KTsNCisJ aWYgKCFpZCkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KIAltZHAgPSBkZXZtX2t6YWxsb2MoJmFt cDtwZGV2LSZndDtkZXYsIHNpemVvZigqbWRwKSwgR0ZQX0tFUk5FTCk7DQogCWlmICghbWRwKQ0K IAkJcmV0dXJuIC1FTk9NRU07DQpAQCAtMTkxLDYgKzI0MCw3IEBAIHN0YXRpYyBpbnQgbXRrX2Rp c3BfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCW1kcC0mZ3Q7Y2hp cC5vcHMgPSAmYW1wO210a19kaXNwX3B3bV9vcHM7DQogCW1kcC0mZ3Q7Y2hpcC5iYXNlID0gLTE7 DQogCW1kcC0mZ3Q7Y2hpcC5ucHdtID0gMTsNCisJbWRwLSZndDtkYXRhID0gaWQtJmd0O2RhdGE7 DQogDQogCXJldCA9IHB3bWNoaXBfYWRkKCZhbXA7bWRwLSZndDtjaGlwKTsNCiAJaWYgKHJldCAm bHQ7IDApIHsNCkBAIC0yMDAsNiArMjUwLDE4IEBAIHN0YXRpYyBpbnQgbXRrX2Rpc3BfcHdtX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogDQogCXBsYXRmb3JtX3NldF9kcnZk YXRhKHBkZXYsIG1kcCk7DQogDQorCS8qDQorCSAqIEZvciBNVDI3MDEsIGRpc2FibGUgZG91Ymxl IGJ1ZmZlciBiZWZvcmUgd3JpdGluZyByZWdpc3Rlcg0KKwkgKiBhbmQgc2VsZWN0IG1hbnVhbCBt b2RlIGFuZCB1c2UgUFdNX1BFUklPRC9QV01fSElHSF9XSURUSC4NCisJICovDQorCWlmICghbWRw LSZndDtkYXRhLSZndDtoYXZlX2NvbW1pdF9yZWcpIHsNCisJCW10a19kaXNwX3B3bV91cGRhdGVf Yml0cyhtZHAsIE1UMjcwMV9QV01fQkxTX0RFQlVHLA0KKwkJCQkJIE1UMjcwMV9QV01fQkxTX0RF QlVHX01BU0ssIDB4Myk7DQorCQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBtZHAtJmd0 O2RhdGEtJmd0O2NvbjAsDQorCQkJCQkgTVQyNzAxX1BXTV9NQU5VQUxfU0VMX01BU0ssDQorCQkJ CQkgbWRwLSZndDtkYXRhLSZndDtjb24wX3NlbCk7DQorCX0NCisNCiAJcmV0dXJuIDA7DQogDQog ZGlzYWJsZV9jbGtfbW06DQpAQCAtMjIxLDEzICsyODMsNiBAQCBzdGF0aWMgaW50IG10a19kaXNw X3B3bV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJcmV0dXJuIHJldDsN CiB9DQogDQotc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2Rpc3BfcHdtX29m X21hdGNoW10gPSB7DQotCXsgLmNvbXBhdGlibGUgPSAmcXVvdDttZWRpYXRlayxtdDgxNzMtZGlz cC1wd20mcXVvdDsgfSwNCi0JeyAuY29tcGF0aWJsZSA9ICZxdW90O21lZGlhdGVrLG10NjU5NS1k aXNwLXB3bSZxdW90OyB9LA0KLQl7IH0NCi19Ow0KLU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10 a19kaXNwX3B3bV9vZl9tYXRjaCk7DQotDQogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg bXRrX2Rpc3BfcHdtX2RyaXZlciA9IHsNCiAJLmRyaXZlciA9IHsNCiAJCS5uYW1lID0gJnF1b3Q7 bWVkaWF0ZWstZGlzcC1wd20mcXVvdDssDQotLSANCjEuOC4xLjEuZGlydHkNCg0KPC9wcmU+PCEt LXR5cGU6dGV4dC0tPjwhLS17LS0+PHByZT4qKioqKioqKioqKioqIEVtYWlsIENvbmZpZGVudGlh bGl0eSBOb3RpY2UgKioqKioqKioqKioqKioqKioqKioKVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5l ZCBpbiB0aGlzIGUtbWFpbCBtZXNzYWdlIChpbmNsdWRpbmcgYW55IAphdHRhY2htZW50cykgbWF5 IGJlIGNvbmZpZGVudGlhbCwgcHJvcHJpZXRhcnksIHByaXZpbGVnZWQsIG9yIG90aGVyd2lzZQpl eGVtcHQgZnJvbSBkaXNjbG9zdXJlIHVuZGVyIGFwcGxpY2FibGUgbGF3cy4gSXQgaXMgaW50ZW5k ZWQgdG8gYmUgCmNvbnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVjaXBpZW50KHMpLiBB bnkgdXNlLCBkaXNzZW1pbmF0aW9uLCAKZGlzdHJpYnV0aW9uLCBwcmludGluZywgcmV0YWluaW5n IG9yIGNvcHlpbmcgb2YgdGhpcyBlLW1haWwgKGluY2x1ZGluZyBpdHMgCmF0dGFjaG1lbnRzKSBi eSB1bmludGVuZGVkIHJlY2lwaWVudChzKSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkIGFuZCBtYXkg CmJlIHVubGF3ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGllbnQgb2YgdGhp cyBlLW1haWwsIG9yIGJlbGlldmUgCnRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBlLW1haWwg aW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciAKaW1tZWRpYXRlbHkgKGJ5IHJlcGx5 aW5nIHRvIHRoaXMgZS1tYWlsKSwgZGVsZXRlIGFueSBhbmQgYWxsIGNvcGllcyBvZiAKdGhpcyBl LW1haWwgKGluY2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIGZyb20geW91ciBzeXN0ZW0sIGFuZCBk byBub3QKZGlzY2xvc2UgdGhlIGNvbnRlbnQgb2YgdGhpcyBlLW1haWwgdG8gYW55IG90aGVyIHBl cnNvbi4gVGhhbmsgeW91ITwvcHJlPjwhLS19LS0+ --__=_Part_Boundary_009_562858069.643607741--