From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.85 #2 (Red Hat Linux)) id 1ab9Jr-0003CN-8F for barebox@lists.infradead.org; Wed, 02 Mar 2016 16:08:14 +0000 From: Sascha Hauer Date: Wed, 2 Mar 2016 17:07:41 +0100 Message-Id: <1456934863-30990-6-git-send-email-s.hauer@pengutronix.de> In-Reply-To: <1456934863-30990-1-git-send-email-s.hauer@pengutronix.de> References: <1456934863-30990-1-git-send-email-s.hauer@pengutronix.de> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 5/7] ARM: i.MX: karo-tx6: Setup other PMICs To: Barebox List VGhlIFRYNiBib2FyZHMgY29tZSB3aXRoIDMgZGlmZmVyZW50IFBNSUMgdmFyaWFudHMgZnJvbSB3 aGljaCB3ZQpjdXJyZW50bHkgb25seSBzdXBwb3J0IHRoZSBsdGMzNjczLiBEZXRlY3QgdGhlIG90 aGVyIHR3byBieSBpMmMKYWRkcmVzcyBhbmQgc2V0IHRoZW0gdXAgY29ycmVjdGx5LiBUaGUgY29k ZSBpcyBiYXNlZCBvbiB0aGUga2FybwpVLUJvb3QgcG9ydC4KClNpZ25lZC1vZmYtYnk6IFNhc2No YSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLS0tCiBhcmNoL2FybS9ib2FyZHMva2Fy by10eDZ4L01ha2VmaWxlICAgICAgIHwgICAxICsKIGFyY2gvYXJtL2JvYXJkcy9rYXJvLXR4Nngv Ym9hcmQuYyAgICAgICAgfCAxNjcgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJj aC9hcm0vYm9hcmRzL2thcm8tdHg2eC9wbWljLWx0YzM2NzYuYyB8IDE0OSArKysrKysrKysrKysr KysrKysrKysrKysrKysKIGFyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvcG1pYy1ybjV0NTY3LmMg fCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9hcm0vYm9hcmRzL2thcm8t dHg2eC9wbWljLXJuNXQ2MTguYyB8IDE1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBh cmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L3BtaWMuaCAgICAgICAgIHwgICA4ICsrCiA2IGZpbGVz IGNoYW5nZWQsIDUwMSBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm0vYm9hcmRzL2thcm8tdHg2eC9wbWljLWx0YzM2NzYuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvcG1pYy1ybjV0NTY3LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L3BtaWMtcm41dDYxOC5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9hcmRzL2thcm8tdHg2eC9wbWljLmgKCmRp ZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L01ha2VmaWxlIGIvYXJjaC9hcm0v Ym9hcmRzL2thcm8tdHg2eC9NYWtlZmlsZQppbmRleCAwMWM3YTI1Li41MWI3YzJkIDEwMDY0NAot LS0gYS9hcmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL2Jv YXJkcy9rYXJvLXR4NngvTWFrZWZpbGUKQEAgLTEsMiArMSwzIEBACiBvYmoteSArPSBib2FyZC5v CiBsd2wteSArPSBsb3dsZXZlbC5vCitvYmoteSArPSBwbWljLWx0YzM2NzYubyBwbWljLXJuNXQ1 NjcubyBwbWljLXJuNXQ2MTgubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL2thcm8tdHg2 eC9ib2FyZC5jIGIvYXJjaC9hcm0vYm9hcmRzL2thcm8tdHg2eC9ib2FyZC5jCmluZGV4IGI5NTVi ODEuLjZjYjQ2ODkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvYm9hcmQu YworKysgYi9hcmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L2JvYXJkLmMKQEAgLTI2LDEyMiArMjYs NDAgQEAKICNpbmNsdWRlIDxtYWNoL2JidS5oPgogI2luY2x1ZGUgPG1hY2gvaW14Ni5oPgogI2lu Y2x1ZGUgPG1mZC9pbXg2cS1pb211eGMtZ3ByLmg+CisjaW5jbHVkZSAicG1pYy5oIgogCiAjZGVm aW5lIEVUSF9QSFlfUlNUCUlNWF9HUElPX05SKDcsIDYpCiAjZGVmaW5lIEVUSF9QSFlfUFdSCUlN WF9HUElPX05SKDMsIDIwKQogI2RlZmluZSBFVEhfUEhZX0lOVAlJTVhfR1BJT19OUig3LCAxKQot I2RlZmluZSBESVZfUk9VTkQobixkKSAgICAgICAgICgoKG4pICsgKChkKS8yKSkgLyAoZCkpCi0K LSNkZWZpbmUgTFRDMzY3Nl9CVUNLMQkJMHgwMQotI2RlZmluZSBMVEMzNjc2X0JVQ0syCQkweDAy Ci0jZGVmaW5lIExUQzM2NzZfQlVDSzMJCTB4MDMKLSNkZWZpbmUgTFRDMzY3Nl9CVUNLNAkJMHgw NAotI2RlZmluZSBMVEMzNjc2X0RWQjFBCQkweDBBCi0jZGVmaW5lIExUQzM2NzZfRFZCMUIJCTB4 MEIKLSNkZWZpbmUgTFRDMzY3Nl9EVkIyQQkJMHgwQwotI2RlZmluZSBMVEMzNjc2X0RWQjJCCQkw eDBECi0jZGVmaW5lIExUQzM2NzZfRFZCM0EJCTB4MEUKLSNkZWZpbmUgTFRDMzY3Nl9EVkIzQgkJ MHgwRgotI2RlZmluZSBMVEMzNjc2X0RWQjRBCQkweDEwCi0jZGVmaW5lIExUQzM2NzZfRFZCNEIJ CTB4MTEKLSNkZWZpbmUgTFRDMzY3Nl9NU0tQRwkJMHgxMwotI2RlZmluZSBMVEMzNjc2X0NMSVJR CQkweDFmCi0KLSNkZWZpbmUgTFRDMzY3Nl9CVUNLX0RWRFRfRkFTVAkoMSA8PCAwKQotI2RlZmlu ZSBMVEMzNjc2X0JVQ0tfS0VFUF9BTElWRQkoMSA8PCAxKQotI2RlZmluZSBMVEMzNjc2X0JVQ0tf Q0xLX1JBVEVfTE9XICgxIDw8IDIpCi0jZGVmaW5lIExUQzM2NzZfQlVDS19QSEFTRV9TRUwJKDEg PDwgMykKLSNkZWZpbmUgTFRDMzY3Nl9CVUNLX0VOQUJMRV8zMDAJKDEgPDwgNCkKLSNkZWZpbmUg TFRDMzY3Nl9CVUNLX1BVTFNFX1NLSVAJKDAgPDwgNSkKLSNkZWZpbmUgTFRDMzY3Nl9CVUNLX0JV UlNUX01PREUJKDEgPDwgNSkKLSNkZWZpbmUgTFRDMzY3Nl9CVUNLX0NPTlRJTlVPVVMJKDIgPDwg NSkKLSNkZWZpbmUgTFRDMzY3Nl9CVUNLX0VOQUJMRQkoMSA8PCA3KQotCi0jZGVmaW5lIExUQzM2 NzZfUEdPT0RfTUFTSwkoMSA8PCA1KQotCi0jZGVmaW5lIExUQzM2NzZfTVNLUEdfQlVDSzEJKDEg PDwgMCkKLSNkZWZpbmUgTFRDMzY3Nl9NU0tQR19CVUNLMgkoMSA8PCAxKQotI2RlZmluZSBMVEMz Njc2X01TS1BHX0JVQ0szCSgxIDw8IDIpCi0jZGVmaW5lIExUQzM2NzZfTVNLUEdfQlVDSzQJKDEg PDwgMykKLSNkZWZpbmUgTFRDMzY3Nl9NU0tQR19MRE8yCSgxIDw8IDUpCi0jZGVmaW5lIExUQzM2 NzZfTVNLUEdfTERPMwkoMSA8PCA2KQotI2RlZmluZSBMVEMzNjc2X01TS1BHX0xETzQJKDEgPDwg NykKLQotI2RlZmluZSBWRERfSU9fVkFMCQltVl90b19yZWd2YWwodm91dF90b192cmVmKDMzMDAg KiAxMCwgNSkpCi0jZGVmaW5lIFZERF9JT19WQUxfTFAJCW1WX3RvX3JlZ3ZhbCh2b3V0X3RvX3Zy ZWYoMzEwMCAqIDEwLCA1KSkKLSNkZWZpbmUgVkREX0lPX1ZBTF8yCQltVl90b19yZWd2YWwodm91 dF90b192cmVmKDMzMDAgKiAxMCwgNV8yKSkKLSNkZWZpbmUgVkREX0lPX1ZBTF8yX0xQCQltVl90 b19yZWd2YWwodm91dF90b192cmVmKDMxMDAgKiAxMCwgNV8yKSkKLSNkZWZpbmUgVkREX1NPQ19W QUwJCW1WX3RvX3JlZ3ZhbCh2b3V0X3RvX3ZyZWYoMTQyNSAqIDEwLCA2KSkKLSNkZWZpbmUgVkRE X1NPQ19WQUxfTFAJCW1WX3RvX3JlZ3ZhbCh2b3V0X3RvX3ZyZWYoOTAwICogMTAsIDYpKQotI2Rl ZmluZSBWRERfRERSX1ZBTAkJbVZfdG9fcmVndmFsKHZvdXRfdG9fdnJlZigxNTAwICogMTAsIDcp KQotI2RlZmluZSBWRERfRERSX1ZBTF9MUAkJbVZfdG9fcmVndmFsKHZvdXRfdG9fdnJlZigxNTAw ICogMTAsIDcpKQotI2RlZmluZSBWRERfQ09SRV9WQUwJCW1WX3RvX3JlZ3ZhbCh2b3V0X3RvX3Zy ZWYoMTQyNSAqIDEwLCA4KSkKLSNkZWZpbmUgVkREX0NPUkVfVkFMX0xQCQltVl90b19yZWd2YWwo dm91dF90b192cmVmKDkwMCAqIDEwLCA4KSkKLQotLyogTERPMSAqLwotI2RlZmluZSBSMV8xCQkJ NDcwCi0jZGVmaW5lIFIyXzEJCQkxNTAKLS8qIExETzQgKi8KLSNkZWZpbmUgUjFfNAkJCTQ3MAot I2RlZmluZSBSMl80CQkJMTUwCi0vKiBCdWNrMSAqLwotI2RlZmluZSBSMV81CQkJMzkwCi0jZGVm aW5lIFIyXzUJCQkxMTAKLSNkZWZpbmUgUjFfNV8yCQkJNDcwCi0jZGVmaW5lIFIyXzVfMgkJCTE1 MAotLyogQnVjazIgKFNPQykgKi8KLSNkZWZpbmUgUjFfNgkJCTE1MAotI2RlZmluZSBSMl82CQkJ MTgwCi0vKiBCdWNrMyAoRERSKSAqLwotI2RlZmluZSBSMV83CQkJMTUwCi0jZGVmaW5lIFIyXzcJ CQkxNDAKLS8qIEJ1Y2s0IChDT1JFKSAqLwotI2RlZmluZSBSMV84CQkJMTUwCi0jZGVmaW5lIFIy XzgJCQkxODAKLQotLyogY2FsY3VsYXRlIHZvbHRhZ2VzIGluIDEwbVYgKi8KLSNkZWZpbmUgUjEo aWR4KQkJCVIxXyMjaWR4Ci0jZGVmaW5lIFIyKGlkeCkJCQlSMl8jI2lkeAotCi0jZGVmaW5lIHZv dXRfdG9fdnJlZih2b3V0LCBpZHgpCSgodm91dCkgKiBSMihpZHgpIC8gKFIxKGlkeCkgKyBSMihp ZHgpKSkKLSNkZWZpbmUgdnJlZl90b192b3V0KHZyZWYsIGlkeCkJRElWX1JPVU5EX1VQKCh2cmVm KSAqIChSMShpZHgpICsgUjIoaWR4KSksIFIyKGlkeCkpCi0KLSNkZWZpbmUgbVZfdG9fcmVndmFs KG1WKQlESVZfUk9VTkQoKCgoKG1WKSA8IDQxMjUpID8gNDEyNSA6IChtVikpIC0gNDEyNSksIDEy NSkKLSNkZWZpbmUgcmVndmFsX3RvX21WKHYpCQkoKCh2KSAqIDEyNSArIDQxMjUpKQotCi1zdGF0 aWMgc3RydWN0IGx0YzM2NzNfcmVncyB7Ci0JdTggYWRkcjsKLQl1OCB2YWw7Ci0JdTggbWFzazsK LX0gbHRjMzY3Nl9yZWdzW10gPSB7Ci0JeyBMVEMzNjc2X01TS1BHLCB+TFRDMzY3Nl9NU0tQR19C VUNLMSwgfSwKLQl7IExUQzM2NzZfRFZCMkIsIFZERF9TT0NfVkFMX0xQIHwgTFRDMzY3Nl9QR09P RF9NQVNLLCB+MHgzZiwgfSwKLQl7IExUQzM2NzZfRFZCM0IsIFZERF9ERFJfVkFMX0xQLCB+MHgz ZiwgfSwKLQl7IExUQzM2NzZfRFZCNEIsIFZERF9DT1JFX1ZBTF9MUCB8IExUQzM2NzZfUEdPT0Rf TUFTSywgfjB4M2YsIH0sCi0JeyBMVEMzNjc2X0RWQjJBLCBWRERfU09DX1ZBTCwgfjB4M2YsIH0s Ci0JeyBMVEMzNjc2X0RWQjNBLCBWRERfRERSX1ZBTCwgfjB4M2YsIH0sCi0JeyBMVEMzNjc2X0RW QjRBLCBWRERfQ09SRV9WQUwsIH4weDNmLCB9LAotCXsgTFRDMzY3Nl9CVUNLMSwgTFRDMzY3Nl9C VUNLX0JVUlNUX01PREUgfCBMVEMzNjc2X0JVQ0tfQ0xLX1JBVEVfTE9XLCB9LAotCXsgTFRDMzY3 Nl9CVUNLMiwgTFRDMzY3Nl9CVUNLX0JVUlNUX01PREUsIH0sCi0JeyBMVEMzNjc2X0JVQ0szLCBM VEMzNjc2X0JVQ0tfQlVSU1RfTU9ERSwgfSwKLQl7IExUQzM2NzZfQlVDSzQsIExUQzM2NzZfQlVD S19CVVJTVF9NT0RFLCB9LAotCXsgTFRDMzY3Nl9DTElSUSwgMCwgfSwgLyogY2xlYXIgaW50ZXJy dXB0IHN0YXR1cyAqLwotfTsKIAotc3RhdGljIHN0cnVjdCBsdGMzNjczX3JlZ3MgbHRjMzY3Nl9y ZWdzXzJbXSA9IHsKLQl7IExUQzM2NzZfRFZCMUIsIFZERF9JT19WQUxfMl9MUCB8IExUQzM2NzZf UEdPT0RfTUFTSywgfjB4M2YsIH0sCi0JeyBMVEMzNjc2X0RWQjFBLCBWRERfSU9fVkFMXzIsIH4w eDNmLCB9LAotfTsKK3N0YXRpYyB2b2lkIGV0aF9pbml0KHZvaWQpCit7CisJdm9pZCBfX2lvbWVt ICppb211eCA9ICh2b2lkICopTVg2X0lPTVVYQ19CQVNFX0FERFI7CisJdWludDMyX3QgdmFsOwor CisJdmFsID0gcmVhZGwoaW9tdXggKyBJT01VWENfR1BSMSk7CisJdmFsIHw9IElNWDZRX0dQUjFf RU5FVF9DTEtfU0VMX0FOQVRPUDsKKwl3cml0ZWwodmFsLCBpb211eCArIElPTVVYQ19HUFIxKTsK K30KIAorc3RhdGljIHN0cnVjdCB7CisJdW5zaWduZWQgY2hhciBhZGRyOworCWludCAoKmluaXQp KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOworCWNvbnN0IGNoYXIgKm5hbWU7Cit9IGkyY19h ZGRyc1tdID0geworCXsgMHgzYywgbHRjMzY3Nl9wbWljX3NldHVwLCAibHRjMzY3NiIgfSwKKwl7 IDB4MzIsIHJuNXQ2MThfcG1pY19zZXR1cCwgInJuNXQ2MTgiIH0sCisJeyAweDMzLCBybjV0NTY3 X3BtaWNfc2V0dXAsICJybjV0NTY3IiB9LAorfTsKIAotc3RhdGljIGludCBzZXR1cF9wbWljX3Zv bHRhZ2VzKHZvaWQpCitpbnQgc2V0dXBfcG1pY192b2x0YWdlcyh2b2lkKQogewotCXN0cnVjdCBp MmNfYWRhcHRlciAqYWRhcHRlciA9IE5VTEw7CisJc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy OwogCXN0cnVjdCBpMmNfY2xpZW50IGNsaWVudDsKLQlpbnQgYWRkciA9IDB4M2M7Ci0JaW50IGJ1 cyA9IDA7CisJaW50IHJldCA9IC1FTk9ERVY7CiAJaW50IGk7Ci0Jc3RydWN0IGx0YzM2NzNfcmVn cyAqcjsKKwlpbnQgYnVzID0gMDsKKwl1aW50OF90IHJlZzsKIAogCWFkYXB0ZXIgPSBpMmNfZ2V0 X2FkYXB0ZXIoYnVzKTsKIAlpZiAoIWFkYXB0ZXIpIHsKQEAgLTE1MCwzNyArNjgsMjYgQEAgc3Rh dGljIGludCBzZXR1cF9wbWljX3ZvbHRhZ2VzKHZvaWQpCiAJfQogCiAJY2xpZW50LmFkYXB0ZXIg PSBhZGFwdGVyOwotCWNsaWVudC5hZGRyID0gYWRkcjsKIAotCXIgPSBsdGMzNjc2X3JlZ3M7CisJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaTJjX2FkZHJzKTsgaSsrKSB7CisJCWNsaWVudC5h ZGRyID0gaTJjX2FkZHJzW2ldLmFkZHI7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShs dGMzNjc2X3JlZ3MpOyBpKyssIHIrKykgewotCQlpZiAoaTJjX3dyaXRlX3JlZygmY2xpZW50LCBy LT5hZGRyLCAmci0+dmFsLCAxKSAhPSAxKSB7Ci0JCQlwcl9lcnIoImkyYyB3cml0ZSBlcnJvclxu Iik7Ci0JCQlyZXR1cm4gLUVJTzsKLQkJfQotCX0KKwkJcHJfZGVidWcoIlByb2JpbmcgZm9yIEky QyBkZXYgMHglMDJ4XG4iLCBjbGllbnQuYWRkcik7CiAKLQlyID0gbHRjMzY3Nl9yZWdzXzI7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShsdGMzNjc2X3JlZ3NfMik7IGkrKywgcisrKSB7 Ci0JCWlmIChpMmNfd3JpdGVfcmVnKCZjbGllbnQsIHItPmFkZHIsICZyLT52YWwsIDEpICE9IDEp IHsKLQkJCXByX2VycigiaTJjIHdyaXRlIGVycm9yXG4iKTsKLQkJCXJldHVybiAtRUlPOworCQly ZXQgPSBpMmNfd3JpdGVfcmVnKCZjbGllbnQsIDB4MDAsICZyZWcsIDApOworCQlpZiAocmV0ID09 IDApIHsKKwkJCXByX2luZm8oIkRldGVjdGVkICVzIFBNSUNcbiIsIGkyY19hZGRyc1tpXS5uYW1l KTsKKwkJCXJldCA9IGkyY19hZGRyc1tpXS5pbml0KCZjbGllbnQpOworCQkJZ290byBvdXQ7CiAJ CX0KIAl9CiAKLQlyZXR1cm4gMDsKLX0KKwlwcl9lcnIoIk5vIFBNSUMgZm91bmRcbiIpOworb3V0 OgorCWlmIChyZXQpCisJCXByX2VycigiUE1JQyBzZXR1cCBmYWlsZWQgd2l0aCAlc1xuIiwgc3Ry ZXJyb3IoLXJldCkpOwogCi1zdGF0aWMgdm9pZCBldGhfaW5pdCh2b2lkKQotewotCXZvaWQgX19p b21lbSAqaW9tdXggPSAodm9pZCAqKU1YNl9JT01VWENfQkFTRV9BRERSOwotCXVpbnQzMl90IHZh bDsKLQotCXZhbCA9IHJlYWRsKGlvbXV4ICsgSU9NVVhDX0dQUjEpOwotCXZhbCB8PSBJTVg2UV9H UFIxX0VORVRfQ0xLX1NFTF9BTkFUT1A7Ci0Jd3JpdGVsKHZhbCwgaW9tdXggKyBJT01VWENfR1BS MSk7CisJcmV0dXJuIHJldDsKIH0KIAogI2RlZmluZSBJTVg2X1NSQ19TQk1SMSAgIDB4MDQKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvcG1pYy1sdGMzNjc2LmMgYi9hcmNo L2FybS9ib2FyZHMva2Fyby10eDZ4L3BtaWMtbHRjMzY3Ni5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjBjZGRiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9ib2Fy ZHMva2Fyby10eDZ4L3BtaWMtbHRjMzY3Ni5jCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29w eXJpZ2h0IChDKSAyMDE0IExvdGhhciBXYcOfbWFubiA8TFdAS0FSTy1lbGVjdHJvbmljcy5kZT4K KyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0 ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogdmVyc2lvbiAy IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRl IDxpMmMvaTJjLmg+CisjaW5jbHVkZSAicG1pYy5oIgorCisjZGVmaW5lIExUQzM2NzZfQlVDSzEJ CTB4MDEKKyNkZWZpbmUgTFRDMzY3Nl9CVUNLMgkJMHgwMgorI2RlZmluZSBMVEMzNjc2X0JVQ0sz CQkweDAzCisjZGVmaW5lIExUQzM2NzZfQlVDSzQJCTB4MDQKKyNkZWZpbmUgTFRDMzY3Nl9EVkIx QQkJMHgwQQorI2RlZmluZSBMVEMzNjc2X0RWQjFCCQkweDBCCisjZGVmaW5lIExUQzM2NzZfRFZC MkEJCTB4MEMKKyNkZWZpbmUgTFRDMzY3Nl9EVkIyQgkJMHgwRAorI2RlZmluZSBMVEMzNjc2X0RW QjNBCQkweDBFCisjZGVmaW5lIExUQzM2NzZfRFZCM0IJCTB4MEYKKyNkZWZpbmUgTFRDMzY3Nl9E VkI0QQkJMHgxMAorI2RlZmluZSBMVEMzNjc2X0RWQjRCCQkweDExCisjZGVmaW5lIExUQzM2NzZf TVNLUEcJCTB4MTMKKyNkZWZpbmUgTFRDMzY3Nl9DTElSUQkJMHgxZgorCisjZGVmaW5lIExUQzM2 NzZfQlVDS19EVkRUX0ZBU1QJKDEgPDwgMCkKKyNkZWZpbmUgTFRDMzY3Nl9CVUNLX0tFRVBfQUxJ VkUJKDEgPDwgMSkKKyNkZWZpbmUgTFRDMzY3Nl9CVUNLX0NMS19SQVRFX0xPVyAoMSA8PCAyKQor I2RlZmluZSBMVEMzNjc2X0JVQ0tfUEhBU0VfU0VMCSgxIDw8IDMpCisjZGVmaW5lIExUQzM2NzZf QlVDS19FTkFCTEVfMzAwCSgxIDw8IDQpCisjZGVmaW5lIExUQzM2NzZfQlVDS19QVUxTRV9TS0lQ CSgwIDw8IDUpCisjZGVmaW5lIExUQzM2NzZfQlVDS19CVVJTVF9NT0RFCSgxIDw8IDUpCisjZGVm aW5lIExUQzM2NzZfQlVDS19DT05USU5VT1VTCSgyIDw8IDUpCisjZGVmaW5lIExUQzM2NzZfQlVD S19FTkFCTEUJKDEgPDwgNykKKworI2RlZmluZSBMVEMzNjc2X1BHT09EX01BU0sJKDEgPDwgNSkK KworI2RlZmluZSBMVEMzNjc2X01TS1BHX0JVQ0sxCSgxIDw8IDApCisjZGVmaW5lIExUQzM2NzZf TVNLUEdfQlVDSzIJKDEgPDwgMSkKKyNkZWZpbmUgTFRDMzY3Nl9NU0tQR19CVUNLMwkoMSA8PCAy KQorI2RlZmluZSBMVEMzNjc2X01TS1BHX0JVQ0s0CSgxIDw8IDMpCisjZGVmaW5lIExUQzM2NzZf TVNLUEdfTERPMgkoMSA8PCA1KQorI2RlZmluZSBMVEMzNjc2X01TS1BHX0xETzMJKDEgPDwgNikK KyNkZWZpbmUgTFRDMzY3Nl9NU0tQR19MRE80CSgxIDw8IDcpCisKKyNkZWZpbmUgVkREX0lPX1ZB TAkJbVZfdG9fcmVndmFsKHZvdXRfdG9fdnJlZigzMzAwICogMTAsIDUpKQorI2RlZmluZSBWRERf SU9fVkFMX0xQCQltVl90b19yZWd2YWwodm91dF90b192cmVmKDMxMDAgKiAxMCwgNSkpCisjZGVm aW5lIFZERF9JT19WQUxfMgkJbVZfdG9fcmVndmFsKHZvdXRfdG9fdnJlZigzMzAwICogMTAsIDVf MikpCisjZGVmaW5lIFZERF9JT19WQUxfMl9MUAkJbVZfdG9fcmVndmFsKHZvdXRfdG9fdnJlZigz MTAwICogMTAsIDVfMikpCisjZGVmaW5lIFZERF9TT0NfVkFMCQltVl90b19yZWd2YWwodm91dF90 b192cmVmKDE0MjUgKiAxMCwgNikpCisjZGVmaW5lIFZERF9TT0NfVkFMX0xQCQltVl90b19yZWd2 YWwodm91dF90b192cmVmKDkwMCAqIDEwLCA2KSkKKyNkZWZpbmUgVkREX0REUl9WQUwJCW1WX3Rv X3JlZ3ZhbCh2b3V0X3RvX3ZyZWYoMTUwMCAqIDEwLCA3KSkKKyNkZWZpbmUgVkREX0REUl9WQUxf TFAJCW1WX3RvX3JlZ3ZhbCh2b3V0X3RvX3ZyZWYoMTUwMCAqIDEwLCA3KSkKKyNkZWZpbmUgVkRE X0NPUkVfVkFMCQltVl90b19yZWd2YWwodm91dF90b192cmVmKDE0MjUgKiAxMCwgOCkpCisjZGVm aW5lIFZERF9DT1JFX1ZBTF9MUAkJbVZfdG9fcmVndmFsKHZvdXRfdG9fdnJlZig5MDAgKiAxMCwg OCkpCisKKy8qIExETzEgKi8KKyNkZWZpbmUgUjFfMQkJCTQ3MAorI2RlZmluZSBSMl8xCQkJMTUw CisvKiBMRE80ICovCisjZGVmaW5lIFIxXzQJCQk0NzAKKyNkZWZpbmUgUjJfNAkJCTE1MAorLyog QnVjazEgKi8KKyNkZWZpbmUgUjFfNQkJCTM5MAorI2RlZmluZSBSMl81CQkJMTEwCisjZGVmaW5l IFIxXzVfMgkJCTQ3MAorI2RlZmluZSBSMl81XzIJCQkxNTAKKy8qIEJ1Y2syIChTT0MpICovCisj ZGVmaW5lIFIxXzYJCQkxNTAKKyNkZWZpbmUgUjJfNgkJCTE4MAorLyogQnVjazMgKEREUikgKi8K KyNkZWZpbmUgUjFfNwkJCTE1MAorI2RlZmluZSBSMl83CQkJMTQwCisvKiBCdWNrNCAoQ09SRSkg Ki8KKyNkZWZpbmUgUjFfOAkJCTE1MAorI2RlZmluZSBSMl84CQkJMTgwCisKKy8qIGNhbGN1bGF0 ZSB2b2x0YWdlcyBpbiAxMG1WICovCisjZGVmaW5lIFIxKGlkeCkJCQlSMV8jI2lkeAorI2RlZmlu ZSBSMihpZHgpCQkJUjJfIyNpZHgKKworI2RlZmluZSB2b3V0X3RvX3ZyZWYodm91dCwgaWR4KQko KHZvdXQpICogUjIoaWR4KSAvIChSMShpZHgpICsgUjIoaWR4KSkpCisjZGVmaW5lIHZyZWZfdG9f dm91dCh2cmVmLCBpZHgpCURJVl9ST1VORF9VUCgodnJlZikgKiAoUjEoaWR4KSArIFIyKGlkeCkp LCBSMihpZHgpKQorCisjZGVmaW5lIG1WX3RvX3JlZ3ZhbChtVikJRElWX1JPVU5EKCgoKChtVikg PCA0MTI1KSA/IDQxMjUgOiAobVYpKSAtIDQxMjUpLCAxMjUpCisjZGVmaW5lIHJlZ3ZhbF90b19t Vih2KQkJKCgodikgKiAxMjUgKyA0MTI1KSkKKworc3RhdGljIHN0cnVjdCBsdGMzNjczX3JlZ3Mg eworCXU4IGFkZHI7CisJdTggdmFsOworCXU4IG1hc2s7Cit9IGx0YzM2NzZfcmVnc1tdID0gewor CXsgTFRDMzY3Nl9NU0tQRywgfkxUQzM2NzZfTVNLUEdfQlVDSzEsIH0sCisJeyBMVEMzNjc2X0RW QjJCLCBWRERfU09DX1ZBTF9MUCB8IExUQzM2NzZfUEdPT0RfTUFTSywgfjB4M2YsIH0sCisJeyBM VEMzNjc2X0RWQjNCLCBWRERfRERSX1ZBTF9MUCwgfjB4M2YsIH0sCisJeyBMVEMzNjc2X0RWQjRC LCBWRERfQ09SRV9WQUxfTFAgfCBMVEMzNjc2X1BHT09EX01BU0ssIH4weDNmLCB9LAorCXsgTFRD MzY3Nl9EVkIyQSwgVkREX1NPQ19WQUwsIH4weDNmLCB9LAorCXsgTFRDMzY3Nl9EVkIzQSwgVkRE X0REUl9WQUwsIH4weDNmLCB9LAorCXsgTFRDMzY3Nl9EVkI0QSwgVkREX0NPUkVfVkFMLCB+MHgz ZiwgfSwKKwl7IExUQzM2NzZfQlVDSzEsIExUQzM2NzZfQlVDS19CVVJTVF9NT0RFIHwgTFRDMzY3 Nl9CVUNLX0NMS19SQVRFX0xPVywgfSwKKwl7IExUQzM2NzZfQlVDSzIsIExUQzM2NzZfQlVDS19C VVJTVF9NT0RFLCB9LAorCXsgTFRDMzY3Nl9CVUNLMywgTFRDMzY3Nl9CVUNLX0JVUlNUX01PREUs IH0sCisJeyBMVEMzNjc2X0JVQ0s0LCBMVEMzNjc2X0JVQ0tfQlVSU1RfTU9ERSwgfSwKKwl7IExU QzM2NzZfQ0xJUlEsIDAsIH0sIC8qIGNsZWFyIGludGVycnVwdCBzdGF0dXMgKi8KK307CisKK3N0 YXRpYyBzdHJ1Y3QgbHRjMzY3M19yZWdzIGx0YzM2NzZfcmVnc18yW10gPSB7CisJeyBMVEMzNjc2 X0RWQjFCLCBWRERfSU9fVkFMXzJfTFAgfCBMVEMzNjc2X1BHT09EX01BU0ssIH4weDNmLCB9LAor CXsgTFRDMzY3Nl9EVkIxQSwgVkREX0lPX1ZBTF8yLCB+MHgzZiwgfSwKK307CisKKworaW50IGx0 YzM2NzZfcG1pY19zZXR1cChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQoreworCWludCBpOwor CXN0cnVjdCBsdGMzNjczX3JlZ3MgKnI7CisKKwlyID0gbHRjMzY3Nl9yZWdzOworCisJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUobHRjMzY3Nl9yZWdzKTsgaSsrLCByKyspIHsKKwkJaWYgKGky Y193cml0ZV9yZWcoY2xpZW50LCByLT5hZGRyLCAmci0+dmFsLCAxKSAhPSAxKSB7CisJCQlwcl9l cnIoImkyYyB3cml0ZSBlcnJvclxuIik7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKworCXIg PSBsdGMzNjc2X3JlZ3NfMjsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGx0YzM2NzZf cmVnc18yKTsgaSsrLCByKyspIHsKKwkJaWYgKGkyY193cml0ZV9yZWcoY2xpZW50LCByLT5hZGRy LCAmci0+dmFsLCAxKSAhPSAxKSB7CisJCQlwcl9lcnIoImkyYyB3cml0ZSBlcnJvclxuIik7CisJ CQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9h cmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L3BtaWMtcm41dDU2Ny5jIGIvYXJjaC9hcm0vYm9hcmRz L2thcm8tdHg2eC9wbWljLXJuNXQ1NjcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zNjNmZmJjCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL2thcm8tdHg2 eC9wbWljLXJuNXQ1NjcuYwpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg MjAxNCBMb3RoYXIgV2HDn21hbm4gPExXQEtBUk8tZWxlY3Ryb25pY3MuZGU+CisgKgorICogU2Vl IGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMK KyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aTJjL2kyYy5o PgorI2luY2x1ZGUgInBtaWMuaCIKKworI2RlZmluZSBSTjVUNTY3X05PRVRJTVNFVAkweDExCisj ZGVmaW5lIFJONVQ1NjdfTERPUlRDMV9TTE9UCTB4MmEKKyNkZWZpbmUgUk41VDU2N19EQzFDVEwJ CTB4MmMKKyNkZWZpbmUgUk41VDU2N19EQzFDVEwyCQkweDJkCisjZGVmaW5lIFJONVQ1NjdfREMy Q1RMCQkweDJlCisjZGVmaW5lIFJONVQ1NjdfREMyQ1RMMgkJMHgyZgorI2RlZmluZSBSTjVUNTY3 X0RDM0NUTAkJMHgzMAorI2RlZmluZSBSTjVUNTY3X0RDM0NUTDIJCTB4MzEKKyNkZWZpbmUgUk41 VDU2N19EQzFEQUMJCTB4MzYgLyogQ09SRSAqLworI2RlZmluZSBSTjVUNTY3X0RDMkRBQwkJMHgz NyAvKiBTT0MgKi8KKyNkZWZpbmUgUk41VDU2N19EQzNEQUMJCTB4MzggLyogRERSICovCisjZGVm aW5lIFJONVQ1NjdfREMxREFDX1NMUAkweDNiCisjZGVmaW5lIFJONVQ1NjdfREMyREFDX1NMUAkw eDNjCisjZGVmaW5lIFJONVQ1NjdfREMzREFDX1NMUAkweDNkCisjZGVmaW5lIFJONVQ1NjdfTERP RU4xCQkweDQ0CisjZGVmaW5lIFJONVQ1NjdfTERPRElTCQkweDQ2CisjZGVmaW5lIFJONVQ1Njdf TERPRU4yCQkweDQ4CisjZGVmaW5lIFJONVQ1NjdfTERPM0RBQwkJMHg0ZSAvKiBJTyAqLworI2Rl ZmluZSBSTjVUNTY3X0xET1JUQzFEQUMJMHg1NiAvKiBWQkFDS1VQICovCisKKyNkZWZpbmUgTk9F VElNU0VUX0RJU19PRkZfTk9FX1RJTQkoMSA8PCAzKQorCisjZGVmaW5lIFZERF9SVENfVkFMCQlt Vl90b19yZWd2YWxfcnRjKDMwMDApCisjZGVmaW5lIFZERF9ISUdIX1ZBTAkJbVZfdG9fcmVndmFs MygzMDAwKQorI2RlZmluZSBWRERfSElHSF9WQUxfTFAJCW1WX3RvX3JlZ3ZhbDMoMzAwMCkKKyNk ZWZpbmUgVkREX0NPUkVfVkFMCQltVl90b19yZWd2YWwoMTM1MCkJCS8qIERDREMxICovCisjZGVm aW5lIFZERF9DT1JFX1ZBTF9MUAkJbVZfdG9fcmVndmFsKDkwMCkKKyNkZWZpbmUgVkREX1NPQ19W QUwJCW1WX3RvX3JlZ3ZhbCgxMzUwKQkJLyogRENEQzIgKi8KKyNkZWZpbmUgVkREX1NPQ19WQUxf TFAJCW1WX3RvX3JlZ3ZhbCg5MDApCisjZGVmaW5lIFZERF9ERFJfVkFMCQltVl90b19yZWd2YWwo MTM1MCkJCS8qIERDREMzICovCisjZGVmaW5lIFZERF9ERFJfVkFMX0xQCQltVl90b19yZWd2YWwo MTM1MCkKKworLyogY2FsY3VsYXRlIHZvbHRhZ2VzIGluIDEwbVYgKi8KKyNkZWZpbmUgdjJyKHYs bixtKQkJRElWX1JPVU5EKCgoKCh2KSA8IChuKSkgPyAobikgOiAodikpIC0gKG4pKSwgKG0pKQor I2RlZmluZSByMnYocixuLG0pCQkoKChyKSAqIChtKSArIChuKSkgLyAxMCkKKworLyogRENEQzEt MyAqLworI2RlZmluZSBtVl90b19yZWd2YWwobVYpCXYycigobVYpICogMTAsIDYwMDAsIDEyNSkK KyNkZWZpbmUgcmVndmFsX3RvX21WKHIpCQlyMnYociwgNjAwMCwgMTI1KQorCisvKiBMRE8xLTIg Ki8KKyNkZWZpbmUgbVZfdG9fcmVndmFsMihtVikJdjJyKChtVikgKiAxMCwgOTAwMCwgMjUwKQor I2RlZmluZSByZWd2YWwyX3RvX21WKHIpCXIydihyLCA5MDAwLCAyNTApCisKKy8qIExETzMgKi8K KyNkZWZpbmUgbVZfdG9fcmVndmFsMyhtVikJdjJyKChtVikgKiAxMCwgNjAwMCwgMjUwKQorI2Rl ZmluZSByZWd2YWwzX3RvX21WKHIpCXIydihyLCA2MDAwLCAyNTApCisKKy8qIExET1JUQyAqLwor I2RlZmluZSBtVl90b19yZWd2YWxfcnRjKG1WKQl2MnIoKG1WKSAqIDEwLCAxNzAwMCwgMjUwKQor I2RlZmluZSByZWd2YWxfcnRjX3RvX21WKHIpCXIydihyLCAxNzAwMCwgMjUwKQorCitzdGF0aWMg c3RydWN0IHJuNXQ1NjdfcmVncyB7CisJdTggYWRkcjsKKwl1OCB2YWw7CisJdTggbWFzazsKK30g cm41dDU2N19yZWdzW10gPSB7CisJeyBSTjVUNTY3X05PRVRJTVNFVCwgTk9FVElNU0VUX0RJU19P RkZfTk9FX1RJTSB8IDB4NSwgfSwKKwl7IFJONVQ1NjdfREMxREFDLCBWRERfQ09SRV9WQUwsIH0s CisJeyBSTjVUNTY3X0RDMkRBQywgVkREX1NPQ19WQUwsIH0sCisJeyBSTjVUNTY3X0RDM0RBQywg VkREX0REUl9WQUwsIH0sCisJeyBSTjVUNTY3X0RDMURBQ19TTFAsIFZERF9DT1JFX1ZBTF9MUCwg fSwKKwl7IFJONVQ1NjdfREMyREFDX1NMUCwgVkREX1NPQ19WQUxfTFAsIH0sCisJeyBSTjVUNTY3 X0RDM0RBQ19TTFAsIFZERF9ERFJfVkFMX0xQLCB9LAorCXsgUk41VDU2N19MRE9FTjEsIDB4MDFm LCB+MHgxZiwgfSwKKwl7IFJONVQ1NjdfTERPRU4yLCAweDEwLCB+MHgzMCwgfSwKKwl7IFJONVQ1 NjdfTERPRElTLCAweDAwLCB9LAorCXsgUk41VDU2N19MRE8zREFDLCBWRERfSElHSF9WQUwsIH0s CisJeyBSTjVUNTY3X0xET1JUQzFEQUMsIFZERF9SVENfVkFMLCB9LAorCXsgUk41VDU2N19MRE9S VEMxX1NMT1QsIDB4MGYsIH4weDNmLCB9LAorfTsKKworc3RhdGljIGludCBybjV0NTY3X3NldHVw X3JlZ3Moc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgc3RydWN0IHJuNXQ1NjdfcmVncyAqciwK KwkJCXNpemVfdCBjb3VudCkKK3sKKwlpbnQgcmV0OworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IGNvdW50OyBpKyssIHIrKykgeworI2lmZGVmIERFQlVHCisJCXVuc2lnbmVkIGNoYXIgdmFs dWU7CisKKwkJcmV0ID0gaTJjX3JlYWRfcmVnKGNsaWVudCwgci0+YWRkciwgJnZhbHVlLCAxKTsK KwkJaWYgKCh2YWx1ZSAmIH5yLT5tYXNrKSAhPSByLT52YWwpIHsKKwkJCXByX2RlYnVnKCJDaGFu Z2luZyBQTUlDIHJlZyAlMDJ4IGZyb20gJTAyeCB0byAlMDJ4XG4iLAorCQkJCXItPmFkZHIsIHZh bHVlLCByLT52YWwpOworCQl9CisJCWlmIChyZXQgIT0gMSkgeworCQkJcHJfZGVidWcoIiVzOiBm YWlsZWQgdG8gcmVhZCBQTUlDIHJlZ2lzdGVyICUwMng6ICVkXG4iLAorCQkJCV9fZnVuY19fLCBy LT5hZGRyLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorI2VuZGlmCisJCXJldCA9IGkyY193 cml0ZV9yZWcoY2xpZW50LCByLT5hZGRyLCAmci0+dmFsLCAxKTsKKwkJaWYgKHJldCAhPSAxKSB7 CisJCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gd3JpdGUgUE1JQyByZWdpc3RlciAlMDJ4OiAlZFxu IiwKKwkJCQlfX2Z1bmNfXywgci0+YWRkciwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9 CisJcmV0dXJuIDA7Cit9CisKK2ludCBybjV0NTY3X3BtaWNfc2V0dXAoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKK3sKKwlpbnQgcmV0OworCXVuc2lnbmVkIGNoYXIgdmFsdWU7CisKKwlyZXQg PSBpMmNfcmVhZF9yZWcoY2xpZW50LCAweDExLCAmdmFsdWUsIDEpOworCWlmIChyZXQgIT0gMSkg eworCQlwcl9lcnIoImkyYyByZWFkIGVycm9yXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwly ZXQgPSBybjV0NTY3X3NldHVwX3JlZ3MoY2xpZW50LCBybjV0NTY3X3JlZ3MsCisJCQkJQVJSQVlf U0laRShybjV0NTY3X3JlZ3MpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0g aTJjX3JlYWRfcmVnKGNsaWVudCwgUk41VDU2N19EQzFEQUMsICZ2YWx1ZSwgMSk7CisJaWYgKHJl dCA9PSAxKQorCQlwcl9kZWJ1ZygiVkREQ09SRSBzZXQgdG8gJXVtVlxuIiwgcmVndmFsX3RvX21W KHZhbHVlKSk7CisJZWxzZQorCQlwcl9lcnIoImkyYyByZWFkIGVycm9yXG4iKTsKKworCXJldCA9 IGkyY19yZWFkX3JlZyhjbGllbnQsIFJONVQ1NjdfREMyREFDLCAmdmFsdWUsIDEpOworCWlmIChy ZXQgPT0gMSkKKwkJcHJfZGVidWcoIlZERFNPQyAgc2V0IHRvICV1bVZcbiIsIHJlZ3ZhbF90b19t Vih2YWx1ZSkpOworCWVsc2UKKwkJcHJfZXJyKCJpMmMgcmVhZCBlcnJvclxuIik7CisKKwlyZXR1 cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9hcmRzL2thcm8tdHg2eC9wbWljLXJu NXQ2MTguYyBiL2FyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvcG1pYy1ybjV0NjE4LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M3MjJjMgotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvcG1pYy1ybjV0NjE4LmMKQEAgLTAsMCArMSwxNTIg QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgTG90aGFyIFdhw59tYW5uIDxMV0BLQVJPLWVs ZWN0cm9uaWNzLmRlPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxl IHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8KKworI2luY2x1ZGUgPGNvbW1v bi5oPgorI2luY2x1ZGUgPGkyYy9pMmMuaD4KKyNpbmNsdWRlICJwbWljLmgiCisKKyNkZWZpbmUg Uk41VDYxOF9OT0VUSU1TRVQJMHgxMQorI2RlZmluZSBSTjVUNjE4X0xET1JUQzFfU0xPVAkweDJh CisjZGVmaW5lIFJONVQ2MThfREMxQ1RMCQkweDJjCisjZGVmaW5lIFJONVQ2MThfREMxQ1RMMgkJ MHgyZAorI2RlZmluZSBSTjVUNjE4X0RDMkNUTAkJMHgyZQorI2RlZmluZSBSTjVUNjE4X0RDMkNU TDIJCTB4MmYKKyNkZWZpbmUgUk41VDYxOF9EQzNDVEwJCTB4MzAKKyNkZWZpbmUgUk41VDYxOF9E QzNDVEwyCQkweDMxCisjZGVmaW5lIFJONVQ2MThfREMxREFDCQkweDM2IC8qIENPUkUgKi8KKyNk ZWZpbmUgUk41VDYxOF9EQzJEQUMJCTB4MzcgLyogU09DICovCisjZGVmaW5lIFJONVQ2MThfREMz REFDCQkweDM4IC8qIEREUiAqLworI2RlZmluZSBSTjVUNjE4X0RDMURBQ19TTFAJMHgzYgorI2Rl ZmluZSBSTjVUNjE4X0RDMkRBQ19TTFAJMHgzYworI2RlZmluZSBSTjVUNjE4X0RDM0RBQ19TTFAJ MHgzZAorI2RlZmluZSBSTjVUNjE4X0xET0VOMQkJMHg0NAorI2RlZmluZSBSTjVUNjE4X0xET0RJ UwkJMHg0NgorI2RlZmluZSBSTjVUNjE4X0xET0VOMgkJMHg0OAorI2RlZmluZSBSTjVUNjE4X0xE TzNEQUMJCTB4NGUgLyogSU8gKi8KKyNkZWZpbmUgUk41VDYxOF9MRE9SVENEQUMJMHg1NiAvKiBW QkFDS1VQICovCisKKyNkZWZpbmUgVkREX1JUQ19WQUwJCW1WX3RvX3JlZ3ZhbF9ydGMoMzAwMCkK KyNkZWZpbmUgVkREX0hJR0hfVkFMCQltVl90b19yZWd2YWwzKDMwMDApCisjZGVmaW5lIFZERF9I SUdIX1ZBTF9MUAkJbVZfdG9fcmVndmFsMygzMDAwKQorI2RlZmluZSBWRERfQ09SRV9WQUwJCW1W X3RvX3JlZ3ZhbCgxNDI1KQkJLyogRENEQzEgKi8KKyNkZWZpbmUgVkREX0NPUkVfVkFMX0xQCQlt Vl90b19yZWd2YWwoOTAwKQorI2RlZmluZSBWRERfU09DX1ZBTAkJbVZfdG9fcmVndmFsKDE0MjUp CQkvKiBEQ0RDMiAqLworI2RlZmluZSBWRERfU09DX1ZBTF9MUAkJbVZfdG9fcmVndmFsKDkwMCkK KyNkZWZpbmUgVkREX0REUl9WQUwJCW1WX3RvX3JlZ3ZhbCgxNTAwKQkJLyogRENEQzMgKi8KKyNk ZWZpbmUgVkREX0REUl9WQUxfTFAJCW1WX3RvX3JlZ3ZhbCgxNTAwKQorCisvKiBjYWxjdWxhdGUg dm9sdGFnZXMgaW4gMTBtViAqLworI2RlZmluZSB2MnIodixuLG0pCQlESVZfUk9VTkQoKCgoKHYp IDwgKG4pKSA/IChuKSA6ICh2KSkgLSAobikpLCAobSkpCisjZGVmaW5lIHIydihyLG4sbSkJCSgo KHIpICogKG0pICsgKG4pKSAvIDEwKQorCisvKiBEQ0RDMS0zICovCisjZGVmaW5lIG1WX3RvX3Jl Z3ZhbChtVikJdjJyKChtVikgKiAxMCwgNjAwMCwgMTI1KQorI2RlZmluZSByZWd2YWxfdG9fbVYo cikJCXIydihyLCA2MDAwLCAxMjUpCisKKy8qIExETzEtMiAqLworI2RlZmluZSBtVl90b19yZWd2 YWwyKG1WKQl2MnIoKG1WKSAqIDEwLCA5MDAwLCAyNTApCisjZGVmaW5lIHJlZ3ZhbDJfdG9fbVYo cikJcjJ2KHIsIDkwMDAsIDI1MCkKKworLyogTERPMyAqLworI2RlZmluZSBtVl90b19yZWd2YWwz KG1WKQl2MnIoKG1WKSAqIDEwLCA2MDAwLCAyNTApCisjZGVmaW5lIHJlZ3ZhbDNfdG9fbVYocikJ cjJ2KHIsIDYwMDAsIDI1MCkKKworLyogTERPUlRDICovCisjZGVmaW5lIG1WX3RvX3JlZ3ZhbF9y dGMobVYpCXYycigobVYpICogMTAsIDE3MDAwLCAyNTApCisjZGVmaW5lIHJlZ3ZhbF9ydGNfdG9f bVYocikJcjJ2KHIsIDE3MDAwLCAyNTApCisKK3N0YXRpYyBzdHJ1Y3Qgcm41dDYxOF9yZWdzIHsK Kwl1OCBhZGRyOworCXU4IHZhbDsKKwl1OCBtYXNrOworfSBybjV0NjE4X3JlZ3NbXSA9IHsKKwl7 IFJONVQ2MThfTk9FVElNU0VULCAwLCB9LAorCXsgUk41VDYxOF9EQzFEQUMsIFZERF9DT1JFX1ZB TCwgfSwKKwl7IFJONVQ2MThfREMyREFDLCBWRERfU09DX1ZBTCwgfSwKKwl7IFJONVQ2MThfREMz REFDLCBWRERfRERSX1ZBTCwgfSwKKwl7IFJONVQ2MThfREMxREFDX1NMUCwgVkREX0NPUkVfVkFM X0xQLCB9LAorCXsgUk41VDYxOF9EQzJEQUNfU0xQLCBWRERfU09DX1ZBTF9MUCwgfSwKKwl7IFJO NVQ2MThfREMzREFDX1NMUCwgVkREX0REUl9WQUxfTFAsIH0sCisJeyBSTjVUNjE4X0xET0VOMSwg MHgwMWYsIH4weDFmLCB9LAorCXsgUk41VDYxOF9MRE9FTjIsIDB4MTAsIH4weDMwLCB9LAorCXsg Uk41VDYxOF9MRE9ESVMsIDB4MDAsIH0sCisJeyBSTjVUNjE4X0xETzNEQUMsIFZERF9ISUdIX1ZB TCwgfSwKKwl7IFJONVQ2MThfTERPUlRDREFDLCBWRERfUlRDX1ZBTCwgfSwKKwl7IFJONVQ2MThf TERPUlRDMV9TTE9ULCAweDBmLCB+MHgzZiwgfSwKK307CisKK3N0YXRpYyBpbnQgcm41dDYxOF9z ZXR1cF9yZWdzKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHN0cnVjdCBybjV0NjE4X3JlZ3Mg KnIsCisJCQlzaXplX3QgY291bnQpCit7CisJaW50IHJldDsKKwlpbnQgaTsKKworCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrLCByKyspIHsKKyNpZmRlZiBERUJVRworCQl1bnNpZ25lZCBjaGFy IHZhbHVlOworCisJCXJldCA9IGkyY19yZWFkX3JlZyhjbGllbnQsIHItPmFkZHIsICZ2YWx1ZSwg MSk7CisJCWlmICgodmFsdWUgJiB+ci0+bWFzaykgIT0gci0+dmFsKSB7CisJCQlwcl9kZWJ1Zygi Q2hhbmdpbmcgUE1JQyByZWcgJTAyeCBmcm9tICUwMnggdG8gJTAyeFxuIiwKKwkJCQlyLT5hZGRy LCB2YWx1ZSwgci0+dmFsKTsKKwkJfQorCQlpZiAocmV0ICE9IDEpIHsKKwkJCXByX2RlYnVnKCIl czogZmFpbGVkIHRvIHJlYWQgUE1JQyByZWdpc3RlciAlMDJ4OiAlZFxuIiwKKwkJCQlfX2Z1bmNf Xywgci0+YWRkciwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKyNlbmRpZgorCQlyZXQgPSBp MmNfd3JpdGVfcmVnKGNsaWVudCwgci0+YWRkciwgJnItPnZhbCwgMSk7CisJCWlmIChyZXQgIT0g MSkgeworCQkJcHJfZXJyKCIlczogZmFpbGVkIHRvIHdyaXRlIFBNSUMgcmVnaXN0ZXIgJTAyeDog JWRcbiIsCisJCQkJX19mdW5jX18sIHItPmFkZHIsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9 CisJfQorCXJldHVybiAwOworfQorCitpbnQgcm41dDYxOF9wbWljX3NldHVwKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCit7CisJaW50IHJldDsKKwl1bnNpZ25lZCBjaGFyIHZhbHVlOworCisJ cmV0ID0gaTJjX3JlYWRfcmVnKGNsaWVudCwgMHgxMSwgJnZhbHVlLCAxKTsKKwlpZiAocmV0KSB7 CisJCXByX2VycigiaTJjIHJlYWQgZXJyb3JcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dCA9IHJuNXQ2MThfc2V0dXBfcmVncyhjbGllbnQsIHJuNXQ2MThfcmVncywKKwkJCQlBUlJBWV9T SVpFKHJuNXQ2MThfcmVncykpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBp MmNfcmVhZF9yZWcoY2xpZW50LCBSTjVUNjE4X0RDMURBQywgJnZhbHVlLCAxKTsKKwlpZiAocmV0 ID09IDEpCisJCXByX2RlYnVnKCJWRERDT1JFIHNldCB0byAldW1WXG4iLCByZWd2YWxfdG9fbVYo dmFsdWUpKTsKKwllbHNlCisJCXByX2VycigiaTJjIHJlYWQgZXJyb3JcbiIpOworCisJcmV0ID0g aTJjX3JlYWRfcmVnKGNsaWVudCwgUk41VDYxOF9EQzJEQUMsICZ2YWx1ZSwgMSk7CisJaWYgKHJl dCA9PSAxKQorCQlwcl9kZWJ1ZygiVkREU09DICBzZXQgdG8gJXVtVlxuIiwgcmVndmFsX3RvX21W KHZhbHVlKSk7CisJZWxzZQorCQlwcl9lcnIoImkyYyByZWFkIGVycm9yXG4iKTsKKworCXJldHVy biByZXQ7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMva2Fyby10eDZ4L3BtaWMuaCBi L2FyY2gvYXJtL2JvYXJkcy9rYXJvLXR4NngvcG1pYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjI0MjdhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9ib2FyZHMv a2Fyby10eDZ4L3BtaWMuaApAQCAtMCwwICsxLDggQEAKKworI2luY2x1ZGUgPGkyYy9pMmMuaD4K KworI2RlZmluZSBESVZfUk9VTkQobixkKSAgICAgICAgICgoKG4pICsgKChkKS8yKSkgLyAoZCkp CisKK2ludCBsdGMzNjc2X3BtaWNfc2V0dXAoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Citp bnQgcm41dDU2N19wbWljX3NldHVwKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOworaW50IHJu NXQ2MThfcG1pY19zZXR1cChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKLS0gCjIuNy4wCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYmFyZWJveCBt YWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo=