From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Subject: [PATCH 2/3] pwm: Add MediaTek MT2701 display PWM driver support Date: Mon, 23 May 2016 14:23:43 +0800 Message-ID: <1463984624-20355-3-git-send-email-weiqing.kong@mediatek.com> In-Reply-To: <1463984624-20355-1-git-send-email-weiqing.kong@mediatek.com> References: <1463984624-20355-1-git-send-email-weiqing.kong@mediatek.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="__=_Part_Boundary_003_527895984.1722399327" 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_003_527895984.1722399327 Content-Type: text/plain Content-Transfer-Encoding: base64 RnJvbTogV2VpcWluZyBLb25nIDx3ZWlxaW5nLmtvbmdAbWVkaWF0ZWsuY29tPg0KDQpVc2UgdGhl IG10a19wd21fZGF0YSBzdHJ1Y3Rpb24gdG8gZGVmaW5lIGRpZmZlcmVudCByZWdpc3RlcnMNCmFu ZCBhZGQgTVQyNzAxIHNwZWNpZmljIHJlZ2lzdGVyIG9wZXJhdGlvbnMsIHN1Y2ggYXMgTVQyNzAx DQpkb2Vzbid0IGhhdmUgY29tbWl0IHJlZ2lzdGVyLCBuZWVkcyB0byBkaXNhYmxlIGRvdWJsZSBi dWZmZXINCmJlZm9yZSB3cml0aW5nIHJlZ2lzdGVyLCBhbmQgbmVlZHMgdG8gc2VsZWN0IG1hbnVh bCBtb2RlDQphbmQgdXNlIFBXTV9QRVJJT0QvUFdNX0hJR0hfV0lEVEguDQoNClNpZ25lZC1vZmYt Ynk6IFdlaXFpbmcgS29uZyA8d2VpcWluZy5rb25nQG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZl cnMvcHdtL3B3bS1tdGstZGlzcC5jIHwgICA4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCAxNyBk ZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1tdGstZGlzcC5jIGIv ZHJpdmVycy9wd20vcHdtLW10ay1kaXNwLmMNCmluZGV4IDBhZDMzODUuLjAzYjljOWUgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL3B3bS9wd20tbXRrLWRpc3AuYw0KKysrIGIvZHJpdmVycy9wd20vcHdt LW10ay1kaXNwLmMNCkBAIC0xOCwzMyArMTgsNDQgQEANCiAjaW5jbHVkZSA8bGludXgvaW8uaD4N CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQogI2luY2x1ZGUgPGxpbnV4L29mLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZp Y2UuaD4NCiAjaW5jbHVkZSA8bGludXgvcHdtLmg+DQogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4N CiANCiAjZGVmaW5lIERJU1BfUFdNX0VOCQkweDAwDQotI2RlZmluZSBQV01fRU5BQkxFX01BU0sJ CUJJVCgwKQ0KIA0KICNkZWZpbmUgRElTUF9QV01fQ09NTUlUCQkweDA4DQogI2RlZmluZSBQV01f Q09NTUlUX01BU0sJCUJJVCgwKQ0KIA0KLSNkZWZpbmUgRElTUF9QV01fQ09OXzAJCTB4MTANCiAj ZGVmaW5lIFBXTV9DTEtESVZfU0hJRlQJMTYNCiAjZGVmaW5lIFBXTV9DTEtESVZfTUFYCQkweDNm Zg0KICNkZWZpbmUgUFdNX0NMS0RJVl9NQVNLCQkoUFdNX0NMS0RJVl9NQVggPDwgUFdNX0NMS0RJ Vl9TSElGVCkNCiANCi0jZGVmaW5lIERJU1BfUFdNX0NPTl8xCQkweDE0DQogI2RlZmluZSBQV01f UEVSSU9EX0JJVF9XSURUSAkxMg0KICNkZWZpbmUgUFdNX1BFUklPRF9NQVNLCQkoKDEgPDwgUFdN X1BFUklPRF9CSVRfV0lEVEgpIC0gMSkNCiANCiAjZGVmaW5lIFBXTV9ISUdIX1dJRFRIX1NISUZU CTE2DQogI2RlZmluZSBQV01fSElHSF9XSURUSF9NQVNLCSgweDFmZmYgPDwgUFdNX0hJR0hfV0lE VEhfU0hJRlQpDQogDQorI2RlZmluZSBNVDI3MDFfUFdNX01BTlVBTF9TRUxfTUFTSwlCSVQoMSkN CisjZGVmaW5lIE1UMjcwMV9QV01fQkxTX0RFQlVHCQkweGIwDQorI2RlZmluZSBNVDI3MDFfUFdN X0JMU19ERUJVR19NQVNLCTB4Mw0KKw0KK3N0cnVjdCBtdGtfcHdtX2RhdGEgew0KKwl1bnNpZ25l ZCBpbnQgZW5hYmxlX2JpdDsNCisJdW5zaWduZWQgaW50IGNvbjA7DQorCXVuc2lnbmVkIGludCBj b24wX3NlbDsNCisJdW5zaWduZWQgaW50IGNvbjE7DQorCWJvb2wgaGF2ZV9jb21taXRfcmVnOw0K K307DQorDQogc3RydWN0IG10a19kaXNwX3B3bSB7DQogCXN0cnVjdCBwd21fY2hpcCBjaGlwOw0K IAlzdHJ1Y3QgY2xrICpjbGtfbWFpbjsNCiAJc3RydWN0IGNsayAqY2xrX21tOw0KIAl2b2lkIF9f aW9tZW0gKmJhc2U7DQorCWNvbnN0IHN0cnVjdCBtdGtfcHdtX2RhdGEgKmRhdGE7DQogfTsNCiAN CiBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfZGlzcF9wd20gKnRvX210a19kaXNwX3B3bShzdHJ1 Y3QgcHdtX2NoaXAgKmNoaXApDQpAQCAtMTA2LDEyICsxMTcsMTggQEAgc3RhdGljIGludCBtdGtf ZGlzcF9wd21fY29uZmlnKHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2Ug KnB3bSwNCiAJCXJldHVybiBlcnI7DQogCX0NCiANCi0JbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRz KG1kcCwgRElTUF9QV01fQ09OXzAsIFBXTV9DTEtESVZfTUFTSywNCisJbXRrX2Rpc3BfcHdtX3Vw ZGF0ZV9iaXRzKG1kcCwgbWRwLT5kYXRhLT5jb24wLA0KKwkJCQkgUFdNX0NMS0RJVl9NQVNLLA0K IAkJCQkgY2xrX2RpdiA8PCBQV01fQ0xLRElWX1NISUZUKTsNCi0JbXRrX2Rpc3BfcHdtX3VwZGF0 ZV9iaXRzKG1kcCwgRElTUF9QV01fQ09OXzEsDQotCQkJCSBQV01fUEVSSU9EX01BU0sgfCBQV01f SElHSF9XSURUSF9NQVNLLCB2YWx1ZSk7DQotCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAs IERJU1BfUFdNX0NPTU1JVCwgUFdNX0NPTU1JVF9NQVNLLCAxKTsNCi0JbXRrX2Rpc3BfcHdtX3Vw ZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fQ09NTUlULCBQV01fQ09NTUlUX01BU0ssIDApOw0KKwlt dGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBtZHAtPmRhdGEtPmNvbjEsDQorCQkJCSBQV01f UEVSSU9EX01BU0sgfCBQV01fSElHSF9XSURUSF9NQVNLLA0KKwkJCQkgdmFsdWUpOw0KKwlpZiAo bWRwLT5kYXRhLT5oYXZlX2NvbW1pdF9yZWcpIHsNCisJCW10a19kaXNwX3B3bV91cGRhdGVfYml0 cyhtZHAsIERJU1BfUFdNX0NPTU1JVCwNCisJCQkJCSBQV01fQ09NTUlUX01BU0ssIDB4MSk7DQor CQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9DT01NSVQsDQorCQkJCQkg UFdNX0NPTU1JVF9NQVNLLCAweDApOw0KKwl9DQogDQogCWNsa19kaXNhYmxlKG1kcC0+Y2xrX21t KTsNCiAJY2xrX2Rpc2FibGUobWRwLT5jbGtfbWFpbik7DQpAQCAtMTM0LDcgKzE1MSw5IEBAIHN0 YXRpYyBpbnQgbXRrX2Rpc3BfcHdtX2VuYWJsZShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsIHN0cnVj dCBwd21fZGV2aWNlICpwd20pDQogCQlyZXR1cm4gZXJyOw0KIAl9DQogDQotCW10a19kaXNwX3B3 bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0VOLCBQV01fRU5BQkxFX01BU0ssIDEpOw0KKwlt dGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9FTiwNCisJCQkJIG1kcC0+ZGF0 YS0+ZW5hYmxlX2JpdCwNCisJCQkJIG1kcC0+ZGF0YS0+ZW5hYmxlX2JpdCk7DQogDQogCXJldHVy biAwOw0KIH0NCkBAIC0xNDMsNyArMTYyLDggQEAgc3RhdGljIHZvaWQgbXRrX2Rpc3BfcHdtX2Rp c2FibGUoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQ0KIHsN CiAJc3RydWN0IG10a19kaXNwX3B3bSAqbWRwID0gdG9fbXRrX2Rpc3BfcHdtKGNoaXApOw0KIA0K LQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9FTiwgUFdNX0VOQUJMRV9N QVNLLCAwKTsNCisJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fRU4sDQor CQkJCSBtZHAtPmRhdGEtPmVuYWJsZV9iaXQsIDB4MCk7DQogDQogCWNsa19kaXNhYmxlKG1kcC0+ Y2xrX21tKTsNCiAJY2xrX2Rpc2FibGUobWRwLT5jbGtfbWFpbik7DQpAQCAtMTU2LDEyICsxNzYs NDEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwd21fb3BzIG10a19kaXNwX3B3bV9vcHMgPSB7DQog CS5vd25lciA9IFRISVNfTU9EVUxFLA0KIH07DQogDQorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtf cHdtX2RhdGEgbXQ4MTczX3B3bV9kYXRhID0gew0KKwkuZW5hYmxlX2JpdCA9IEJJVCgwKSwNCisJ LmNvbjAgPSAweDEwLA0KKwkuY29uMF9zZWwgPSAweDAsDQorCS5jb24xID0gMHgxNCwNCisJLmhh dmVfY29tbWl0X3JlZyA9IHRydWUsDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19w d21fZGF0YSBtdDI3MDFfcHdtX2RhdGEgPSB7DQorCS5lbmFibGVfYml0ID0gQklUKDE2KSwNCisJ LmNvbjAgPSAweGE4LA0KKwkuY29uMF9zZWwgPSAweDIsDQorCS5jb24xID0gMHhhYywNCisJLmhh dmVfY29tbWl0X3JlZyA9IGZhbHNlLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgbXRrX2Rpc3BfcHdtX29mX21hdGNoW10gPSB7DQorCXsgLmNvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQyNzAxLWRpc3AtYmxzIiwgLmRhdGEgPSAmbXQyNzAxX3B3bV9kYXRhfSwNCisJ eyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDY1OTUtZGlzcC1wd20iLCAuZGF0YSA9ICZtdDgx NzNfcHdtX2RhdGF9LA0KKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1kaXNwLXB3 bSIsIC5kYXRhID0gJm10ODE3M19wd21fZGF0YX0sDQorCXsgfQ0KK307DQorTU9EVUxFX0RFVklD RV9UQUJMRShvZiwgbXRrX2Rpc3BfcHdtX29mX21hdGNoKTsNCisNCiBzdGF0aWMgaW50IG10a19k aXNwX3B3bV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIHsNCisJY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCAqaWQ7DQogCXN0cnVjdCBtdGtfZGlzcF9wd20gKm1kcDsNCiAJ c3RydWN0IHJlc291cmNlICpyOw0KIAlpbnQgcmV0Ow0KIA0KKwlpZCA9IG9mX21hdGNoX2Rldmlj ZShtdGtfZGlzcF9wd21fb2ZfbWF0Y2gsICZwZGV2LT5kZXYpOw0KKwlpZiAoIWlkKQ0KKwkJcmV0 dXJuIC1FSU5WQUw7DQorDQogCW1kcCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2Yo Km1kcCksIEdGUF9LRVJORUwpOw0KIAlpZiAoIW1kcCkNCiAJCXJldHVybiAtRU5PTUVNOw0KQEAg LTE5MSw2ICsyNDAsNyBAQCBzdGF0aWMgaW50IG10a19kaXNwX3B3bV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KIAltZHAtPmNoaXAub3BzID0gJm10a19kaXNwX3B3bV9vcHM7 DQogCW1kcC0+Y2hpcC5iYXNlID0gLTE7DQogCW1kcC0+Y2hpcC5ucHdtID0gMTsNCisJbWRwLT5k YXRhID0gaWQtPmRhdGE7DQogDQogCXJldCA9IHB3bWNoaXBfYWRkKCZtZHAtPmNoaXApOw0KIAlp ZiAocmV0IDwgMCkgew0KQEAgLTIwMCw2ICsyNTAsMTggQEAgc3RhdGljIGludCBtdGtfZGlzcF9w d21fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiANCiAJcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwgbWRwKTsNCiANCisJLyoNCisJICogRm9yIE1UMjcwMSwgZGlzYWJsZSBk b3VibGUgYnVmZmVyIGJlZm9yZSB3cml0aW5nIHJlZ2lzdGVyDQorCSAqIGFuZCBzZWxlY3QgbWFu dWFsIG1vZGUgYW5kIHVzZSBQV01fUEVSSU9EL1BXTV9ISUdIX1dJRFRILg0KKwkgKi8NCisJaWYg KCFtZHAtPmRhdGEtPmhhdmVfY29tbWl0X3JlZykgew0KKwkJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9i aXRzKG1kcCwgTVQyNzAxX1BXTV9CTFNfREVCVUcsDQorCQkJCQkgTVQyNzAxX1BXTV9CTFNfREVC VUdfTUFTSywgMHgzKTsNCisJCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIG1kcC0+ZGF0 YS0+Y29uMCwNCisJCQkJCSBNVDI3MDFfUFdNX01BTlVBTF9TRUxfTUFTSywNCisJCQkJCSBtZHAt PmRhdGEtPmNvbjBfc2VsKTsNCisJfQ0KKw0KIAlyZXR1cm4gMDsNCiANCiBkaXNhYmxlX2Nsa19t bToNCkBAIC0yMjEsMTMgKzI4Myw2IEBAIHN0YXRpYyBpbnQgbXRrX2Rpc3BfcHdtX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfZGlzcF9wd21fb2ZfbWF0Y2hbXSA9IHsN Ci0JeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtZGlzcC1wd20iIH0sDQotCXsgLmNv bXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2NTk1LWRpc3AtcHdtIiB9LA0KLQl7IH0NCi19Ow0KLU1P RFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19kaXNwX3B3bV9vZl9tYXRjaCk7DQotDQogc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfcHdtX2RyaXZlciA9IHsNCiAJLmRyaXZl ciA9IHsNCiAJCS5uYW1lID0gIm1lZGlhdGVrLWRpc3AtcHdtIiwNCi0tIA0KMS43LjkuNQ0K --__=_Part_Boundary_003_527895984.1722399327 Content-Type: text/html Content-Transfer-Encoding: base64 PHByZT4NCkZyb206IFdlaXFpbmcgS29uZyAmbHQ7d2VpcWluZy5rb25nQG1lZGlhdGVrLmNvbSZn dDsNCg0KVXNlIHRoZSBtdGtfcHdtX2RhdGEgc3RydWN0aW9uIHRvIGRlZmluZSBkaWZmZXJlbnQg cmVnaXN0ZXJzDQphbmQgYWRkIE1UMjcwMSBzcGVjaWZpYyByZWdpc3RlciBvcGVyYXRpb25zLCBz dWNoIGFzIE1UMjcwMQ0KZG9lc24mIzM5O3QgaGF2ZSBjb21taXQgcmVnaXN0ZXIsIG5lZWRzIHRv IGRpc2FibGUgZG91YmxlIGJ1ZmZlcg0KYmVmb3JlIHdyaXRpbmcgcmVnaXN0ZXIsIGFuZCBuZWVk cyB0byBzZWxlY3QgbWFudWFsIG1vZGUNCmFuZCB1c2UgUFdNX1BFUklPRC9QV01fSElHSF9XSURU SC4NCg0KU2lnbmVkLW9mZi1ieTogV2VpcWluZyBLb25nICZsdDt3ZWlxaW5nLmtvbmdAbWVkaWF0 ZWsuY29tJmd0Ow0KLS0tDQogZHJpdmVycy9wd20vcHdtLW10ay1kaXNwLmMgfCAgIDg5ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tDQogMSBmaWxlIGNoYW5nZWQs IDcyIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9wd20vcHdtLW10ay1kaXNwLmMgYi9kcml2ZXJzL3B3bS9wd20tbXRrLWRpc3AuYw0KaW5kZXgg MGFkMzM4NS4uMDNiOWM5ZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvcHdtL3B3bS1tdGstZGlzcC5j DQorKysgYi9kcml2ZXJzL3B3bS9wd20tbXRrLWRpc3AuYw0KQEAgLTE4LDMzICsxOCw0NCBAQA0K ICNpbmNsdWRlICZsdDtsaW51eC9pby5oJmd0Ow0KICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUu aCZndDsNCiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsNCisjaW5jbHVkZSAmbHQ7bGludXgv b2ZfZGV2aWNlLmgmZ3Q7DQogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0 Ow0KICNpbmNsdWRlICZsdDtsaW51eC9wd20uaCZndDsNCiAjaW5jbHVkZSAmbHQ7bGludXgvc2xh Yi5oJmd0Ow0KIA0KICNkZWZpbmUgRElTUF9QV01fRU4JCTB4MDANCi0jZGVmaW5lIFBXTV9FTkFC TEVfTUFTSwkJQklUKDApDQogDQogI2RlZmluZSBESVNQX1BXTV9DT01NSVQJCTB4MDgNCiAjZGVm aW5lIFBXTV9DT01NSVRfTUFTSwkJQklUKDApDQogDQotI2RlZmluZSBESVNQX1BXTV9DT05fMAkJ MHgxMA0KICNkZWZpbmUgUFdNX0NMS0RJVl9TSElGVAkxNg0KICNkZWZpbmUgUFdNX0NMS0RJVl9N QVgJCTB4M2ZmDQogI2RlZmluZSBQV01fQ0xLRElWX01BU0sJCShQV01fQ0xLRElWX01BWCAmbHQ7 Jmx0OyBQV01fQ0xLRElWX1NISUZUKQ0KIA0KLSNkZWZpbmUgRElTUF9QV01fQ09OXzEJCTB4MTQN CiAjZGVmaW5lIFBXTV9QRVJJT0RfQklUX1dJRFRICTEyDQogI2RlZmluZSBQV01fUEVSSU9EX01B U0sJCSgoMSAmbHQ7Jmx0OyBQV01fUEVSSU9EX0JJVF9XSURUSCkgLSAxKQ0KIA0KICNkZWZpbmUg UFdNX0hJR0hfV0lEVEhfU0hJRlQJMTYNCiAjZGVmaW5lIFBXTV9ISUdIX1dJRFRIX01BU0sJKDB4 MWZmZiAmbHQ7Jmx0OyBQV01fSElHSF9XSURUSF9TSElGVCkNCiANCisjZGVmaW5lIE1UMjcwMV9Q V01fTUFOVUFMX1NFTF9NQVNLCUJJVCgxKQ0KKyNkZWZpbmUgTVQyNzAxX1BXTV9CTFNfREVCVUcJ CTB4YjANCisjZGVmaW5lIE1UMjcwMV9QV01fQkxTX0RFQlVHX01BU0sJMHgzDQorDQorc3RydWN0 IG10a19wd21fZGF0YSB7DQorCXVuc2lnbmVkIGludCBlbmFibGVfYml0Ow0KKwl1bnNpZ25lZCBp bnQgY29uMDsNCisJdW5zaWduZWQgaW50IGNvbjBfc2VsOw0KKwl1bnNpZ25lZCBpbnQgY29uMTsN CisJYm9vbCBoYXZlX2NvbW1pdF9yZWc7DQorfTsNCisNCiBzdHJ1Y3QgbXRrX2Rpc3BfcHdtIHsN CiAJc3RydWN0IHB3bV9jaGlwIGNoaXA7DQogCXN0cnVjdCBjbGsgKmNsa19tYWluOw0KIAlzdHJ1 Y3QgY2xrICpjbGtfbW07DQogCXZvaWQgX19pb21lbSAqYmFzZTsNCisJY29uc3Qgc3RydWN0IG10 a19wd21fZGF0YSAqZGF0YTsNCiB9Ow0KIA0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10a19kaXNw X3B3bSAqdG9fbXRrX2Rpc3BfcHdtKHN0cnVjdCBwd21fY2hpcCAqY2hpcCkNCkBAIC0xMDYsMTIg KzExNywxOCBAQCBzdGF0aWMgaW50IG10a19kaXNwX3B3bV9jb25maWcoc3RydWN0IHB3bV9jaGlw ICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLA0KIAkJcmV0dXJuIGVycjsNCiAJfQ0KIA0K LQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BXTV9DT05fMCwgUFdNX0NMS0RJ Vl9NQVNLLA0KKwltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBtZHAtJmd0O2RhdGEtJmd0 O2NvbjAsDQorCQkJCSBQV01fQ0xLRElWX01BU0ssDQogCQkJCSBjbGtfZGl2ICZsdDsmbHQ7IFBX TV9DTEtESVZfU0hJRlQpOw0KLQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQX1BX TV9DT05fMSwNCi0JCQkJIFBXTV9QRVJJT0RfTUFTSyB8IFBXTV9ISUdIX1dJRFRIX01BU0ssIHZh bHVlKTsNCi0JbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fQ09NTUlULCBQ V01fQ09NTUlUX01BU0ssIDEpOw0KLQltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQ X1BXTV9DT01NSVQsIFBXTV9DT01NSVRfTUFTSywgMCk7DQorCW10a19kaXNwX3B3bV91cGRhdGVf Yml0cyhtZHAsIG1kcC0mZ3Q7ZGF0YS0mZ3Q7Y29uMSwNCisJCQkJIFBXTV9QRVJJT0RfTUFTSyB8 IFBXTV9ISUdIX1dJRFRIX01BU0ssDQorCQkJCSB2YWx1ZSk7DQorCWlmIChtZHAtJmd0O2RhdGEt Jmd0O2hhdmVfY29tbWl0X3JlZykgew0KKwkJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9iaXRzKG1kcCwg RElTUF9QV01fQ09NTUlULA0KKwkJCQkJIFBXTV9DT01NSVRfTUFTSywgMHgxKTsNCisJCW10a19k aXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0NPTU1JVCwNCisJCQkJCSBQV01fQ09N TUlUX01BU0ssIDB4MCk7DQorCX0NCiANCiAJY2xrX2Rpc2FibGUobWRwLSZndDtjbGtfbW0pOw0K IAljbGtfZGlzYWJsZShtZHAtJmd0O2Nsa19tYWluKTsNCkBAIC0xMzQsNyArMTUxLDkgQEAgc3Rh dGljIGludCBtdGtfZGlzcF9wd21fZW5hYmxlKHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0 IHB3bV9kZXZpY2UgKnB3bSkNCiAJCXJldHVybiBlcnI7DQogCX0NCiANCi0JbXRrX2Rpc3BfcHdt X3VwZGF0ZV9iaXRzKG1kcCwgRElTUF9QV01fRU4sIFBXTV9FTkFCTEVfTUFTSywgMSk7DQorCW10 a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0VOLA0KKwkJCQkgbWRwLSZndDtk YXRhLSZndDtlbmFibGVfYml0LA0KKwkJCQkgbWRwLSZndDtkYXRhLSZndDtlbmFibGVfYml0KTsN CiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTE0Myw3ICsxNjIsOCBAQCBzdGF0aWMgdm9pZCBtdGtf ZGlzcF9wd21fZGlzYWJsZShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsIHN0cnVjdCBwd21fZGV2aWNl ICpwd20pDQogew0KIAlzdHJ1Y3QgbXRrX2Rpc3BfcHdtICptZHAgPSB0b19tdGtfZGlzcF9wd20o Y2hpcCk7DQogDQotCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIERJU1BfUFdNX0VOLCBQ V01fRU5BQkxFX01BU0ssIDApOw0KKwltdGtfZGlzcF9wd21fdXBkYXRlX2JpdHMobWRwLCBESVNQ X1BXTV9FTiwNCisJCQkJIG1kcC0mZ3Q7ZGF0YS0mZ3Q7ZW5hYmxlX2JpdCwgMHgwKTsNCiANCiAJ Y2xrX2Rpc2FibGUobWRwLSZndDtjbGtfbW0pOw0KIAljbGtfZGlzYWJsZShtZHAtJmd0O2Nsa19t YWluKTsNCkBAIC0xNTYsMTIgKzE3Niw0MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHB3bV9vcHMg bXRrX2Rpc3BfcHdtX29wcyA9IHsNCiAJLm93bmVyID0gVEhJU19NT0RVTEUsDQogfTsNCiANCitz dGF0aWMgY29uc3Qgc3RydWN0IG10a19wd21fZGF0YSBtdDgxNzNfcHdtX2RhdGEgPSB7DQorCS5l bmFibGVfYml0ID0gQklUKDApLA0KKwkuY29uMCA9IDB4MTAsDQorCS5jb24wX3NlbCA9IDB4MCwN CisJLmNvbjEgPSAweDE0LA0KKwkuaGF2ZV9jb21taXRfcmVnID0gdHJ1ZSwNCit9Ow0KKw0KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3B3bV9kYXRhIG10MjcwMV9wd21fZGF0YSA9IHsNCisJLmVu YWJsZV9iaXQgPSBCSVQoMTYpLA0KKwkuY29uMCA9IDB4YTgsDQorCS5jb24wX3NlbCA9IDB4MiwN CisJLmNvbjEgPSAweGFjLA0KKwkuaGF2ZV9jb21taXRfcmVnID0gZmFsc2UsDQorfTsNCisNCitz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfZGlzcF9wd21fb2ZfbWF0Y2hbXSA9 IHsNCisJeyAuY29tcGF0aWJsZSA9ICZxdW90O21lZGlhdGVrLG10MjcwMS1kaXNwLWJscyZxdW90 OywgLmRhdGEgPSAmYW1wO210MjcwMV9wd21fZGF0YX0sDQorCXsgLmNvbXBhdGlibGUgPSAmcXVv dDttZWRpYXRlayxtdDY1OTUtZGlzcC1wd20mcXVvdDssIC5kYXRhID0gJmFtcDttdDgxNzNfcHdt X2RhdGF9LA0KKwl7IC5jb21wYXRpYmxlID0gJnF1b3Q7bWVkaWF0ZWssbXQ4MTczLWRpc3AtcHdt JnF1b3Q7LCAuZGF0YSA9ICZhbXA7bXQ4MTczX3B3bV9kYXRhfSwNCisJeyB9DQorfTsNCitNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBtdGtfZGlzcF9wd21fb2ZfbWF0Y2gpOw0KKw0KIHN0YXRpYyBp bnQgbXRrX2Rpc3BfcHdtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogew0K Kwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICppZDsNCiAJc3RydWN0IG10a19kaXNwX3B3bSAq bWRwOw0KIAlzdHJ1Y3QgcmVzb3VyY2UgKnI7DQogCWludCByZXQ7DQogDQorCWlkID0gb2ZfbWF0 Y2hfZGV2aWNlKG10a19kaXNwX3B3bV9vZl9tYXRjaCwgJmFtcDtwZGV2LSZndDtkZXYpOw0KKwlp ZiAoIWlkKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQogCW1kcCA9IGRldm1fa3phbGxvYygmYW1w O3BkZXYtJmd0O2Rldiwgc2l6ZW9mKCptZHApLCBHRlBfS0VSTkVMKTsNCiAJaWYgKCFtZHApDQog CQlyZXR1cm4gLUVOT01FTTsNCkBAIC0xOTEsNiArMjQwLDcgQEAgc3RhdGljIGludCBtdGtfZGlz cF9wd21fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJbWRwLSZndDtjaGlw Lm9wcyA9ICZhbXA7bXRrX2Rpc3BfcHdtX29wczsNCiAJbWRwLSZndDtjaGlwLmJhc2UgPSAtMTsN CiAJbWRwLSZndDtjaGlwLm5wd20gPSAxOw0KKwltZHAtJmd0O2RhdGEgPSBpZC0mZ3Q7ZGF0YTsN CiANCiAJcmV0ID0gcHdtY2hpcF9hZGQoJmFtcDttZHAtJmd0O2NoaXApOw0KIAlpZiAocmV0ICZs dDsgMCkgew0KQEAgLTIwMCw2ICsyNTAsMTggQEAgc3RhdGljIGludCBtdGtfZGlzcF9wd21fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiANCiAJcGxhdGZvcm1fc2V0X2RydmRh dGEocGRldiwgbWRwKTsNCiANCisJLyoNCisJICogRm9yIE1UMjcwMSwgZGlzYWJsZSBkb3VibGUg YnVmZmVyIGJlZm9yZSB3cml0aW5nIHJlZ2lzdGVyDQorCSAqIGFuZCBzZWxlY3QgbWFudWFsIG1v ZGUgYW5kIHVzZSBQV01fUEVSSU9EL1BXTV9ISUdIX1dJRFRILg0KKwkgKi8NCisJaWYgKCFtZHAt Jmd0O2RhdGEtJmd0O2hhdmVfY29tbWl0X3JlZykgew0KKwkJbXRrX2Rpc3BfcHdtX3VwZGF0ZV9i aXRzKG1kcCwgTVQyNzAxX1BXTV9CTFNfREVCVUcsDQorCQkJCQkgTVQyNzAxX1BXTV9CTFNfREVC VUdfTUFTSywgMHgzKTsNCisJCW10a19kaXNwX3B3bV91cGRhdGVfYml0cyhtZHAsIG1kcC0mZ3Q7 ZGF0YS0mZ3Q7Y29uMCwNCisJCQkJCSBNVDI3MDFfUFdNX01BTlVBTF9TRUxfTUFTSywNCisJCQkJ CSBtZHAtJmd0O2RhdGEtJmd0O2NvbjBfc2VsKTsNCisJfQ0KKw0KIAlyZXR1cm4gMDsNCiANCiBk aXNhYmxlX2Nsa19tbToNCkBAIC0yMjEsMTMgKzI4Myw2IEBAIHN0YXRpYyBpbnQgbXRrX2Rpc3Bf cHdtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAlyZXR1cm4gcmV0Ow0K IH0NCiANCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfZGlzcF9wd21fb2Zf bWF0Y2hbXSA9IHsNCi0JeyAuY29tcGF0aWJsZSA9ICZxdW90O21lZGlhdGVrLG10ODE3My1kaXNw LXB3bSZxdW90OyB9LA0KLQl7IC5jb21wYXRpYmxlID0gJnF1b3Q7bWVkaWF0ZWssbXQ2NTk1LWRp c3AtcHdtJnF1b3Q7IH0sDQotCXsgfQ0KLX07DQotTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXRr X2Rpc3BfcHdtX29mX21hdGNoKTsNCi0NCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBt dGtfZGlzcF9wd21fZHJpdmVyID0gew0KIAkuZHJpdmVyID0gew0KIAkJLm5hbWUgPSAmcXVvdDtt ZWRpYXRlay1kaXNwLXB3bSZxdW90OywNCi0tIA0KMS43LjkuNQ0KDQo8L3ByZT48IS0tdHlwZTp0 ZXh0LS0+PCEtLXstLT48cHJlPioqKioqKioqKioqKiogRW1haWwgQ29uZmlkZW50aWFsaXR5IE5v dGljZSAqKioqKioqKioqKioqKioqKioqKgpUaGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRo aXMgZS1tYWlsIG1lc3NhZ2UgKGluY2x1ZGluZyBhbnkgCmF0dGFjaG1lbnRzKSBtYXkgYmUgY29u ZmlkZW50aWFsLCBwcm9wcmlldGFyeSwgcHJpdmlsZWdlZCwgb3Igb3RoZXJ3aXNlCmV4ZW1wdCBm cm9tIGRpc2Nsb3N1cmUgdW5kZXIgYXBwbGljYWJsZSBsYXdzLiBJdCBpcyBpbnRlbmRlZCB0byBi ZSAKY29udmV5ZWQgb25seSB0byB0aGUgZGVzaWduYXRlZCByZWNpcGllbnQocykuIEFueSB1c2Us IGRpc3NlbWluYXRpb24sIApkaXN0cmlidXRpb24sIHByaW50aW5nLCByZXRhaW5pbmcgb3IgY29w eWluZyBvZiB0aGlzIGUtbWFpbCAoaW5jbHVkaW5nIGl0cyAKYXR0YWNobWVudHMpIGJ5IHVuaW50 ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHN0cmljdGx5IHByb2hpYml0ZWQgYW5kIG1heSAKYmUgdW5s YXdmdWwuIElmIHlvdSBhcmUgbm90IGFuIGludGVuZGVkIHJlY2lwaWVudCBvZiB0aGlzIGUtbWFp bCwgb3IgYmVsaWV2ZSAKdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGUtbWFpbCBpbiBlcnJv ciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIAppbW1lZGlhdGVseSAoYnkgcmVwbHlpbmcgdG8g dGhpcyBlLW1haWwpLCBkZWxldGUgYW55IGFuZCBhbGwgY29waWVzIG9mIAp0aGlzIGUtbWFpbCAo aW5jbHVkaW5nIGFueSBhdHRhY2htZW50cykgZnJvbSB5b3VyIHN5c3RlbSwgYW5kIGRvIG5vdApk aXNjbG9zZSB0aGUgY29udGVudCBvZiB0aGlzIGUtbWFpbCB0byBhbnkgb3RoZXIgcGVyc29uLiBU aGFuayB5b3UhPC9wcmU+PCEtLX0tLT4= --__=_Part_Boundary_003_527895984.1722399327--