Date: Wed, 14 May 2014 16:30:56 -0300 From: Luiz Otavio O Souza <loos.br@gmail.com> To: "freebsd-embedded@freebsd.org" <freebsd-embedded@freebsd.org> Subject: [RFC] GPIO interrupt support Message-ID: <CAJ8CS7pqo-ONpVfo-3mTEpREw5OUKo0GDxWD9%2BfN7FPRkJ6LdA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--001a11c335ce38a5b404f96138f2 Content-Type: text/plain; charset=UTF-8 Hi, I've been working on the attached patches which adds the GPIO interrupt support. gpio-intr.diff has the bus changes for FDT and non-FDT systems. ar71xx_gpio-intr.diff has the changes to AR71xx GPIO driver. bcm2835_gpio-intr.diff has the changes to BCM2835 (RPi) GPIO driver. ti_gpio-intr.diff has the changes for AM335x (Beaglebone), OMAP3 and OMAP4 (panda board). The other attached file (gpio-intr-kqueue.c) is an example program i've been using to check for interrupts from userland. Userland is notified about GPIO interrupts by a kqueue event. The changes have been tested on BBB, RPi and RSPRO. The manual page changes are still to be done (but it will surely be done). Comments ? Regards, Luiz --001a11c335ce38a5b404f96138f2 Content-Type: text/plain; charset=US-ASCII; name="ar71xx_gpio-intr.diff" Content-Disposition: attachment; filename="ar71xx_gpio-intr.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hv6zeusf0 SW5kZXg6IHN5cy9taXBzL2F0aGVyb3MvYXI3MXh4X2dwaW8uYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bWlwcy9hdGhlcm9zL2FyNzF4eF9ncGlvLmMJKHJldmlzaW9uIDI2NTgxNykKKysrIHN5cy9taXBz L2F0aGVyb3MvYXI3MXh4X2dwaW8uYwkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAog I2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRlIDxzeXMvbXV0ZXguaD4KICNpbmNsdWRl IDxzeXMvZ3Bpby5oPgorI2luY2x1ZGUgPHN5cy9pbnRlcnJ1cHQuaD4KIAogI2luY2x1ZGUgPG1h Y2hpbmUvYnVzLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9yZXNvdXJjZS5oPgpAQCAtNzQsNyArNzUs OCBAQAogc3RhdGljIGludCBhcjcxeHhfZ3Bpb19hdHRhY2goZGV2aWNlX3QgZGV2KTsKIHN0YXRp YyBpbnQgYXI3MXh4X2dwaW9fZGV0YWNoKGRldmljZV90IGRldik7CiBzdGF0aWMgaW50IGFyNzF4 eF9ncGlvX2ZpbHRlcih2b2lkICphcmcpOwotc3RhdGljIHZvaWQgYXI3MXh4X2dwaW9faW50cih2 b2lkICphcmcpOworc3RhdGljIGludCBhcjcxeHhfZ3Bpb19jb25maWdfaW50cihkZXZpY2VfdCBk ZXYsIGludCBpcnEsCisgICAgZW51bSBpbnRyX3RyaWdnZXIgdHJpZywgZW51bSBpbnRyX3BvbGFy aXR5IHBvbCk7CiAKIC8qCiAgKiBHUElPIGludGVyZmFjZQpAQCAtODksNiArOTEsOCBAQAogc3Rh dGljIGludCBhcjcxeHhfZ3Bpb19waW5fZ2V0KGRldmljZV90IGRldiwgdWludDMyX3QgcGluLCB1 bnNpZ25lZCBpbnQgKnZhbCk7CiBzdGF0aWMgaW50IGFyNzF4eF9ncGlvX3Bpbl90b2dnbGUoZGV2 aWNlX3QgZGV2LCB1aW50MzJfdCBwaW4pOwogCitzdGF0aWMgc3RydWN0IGFyNzF4eF9ncGlvX3Nv ZnRjICphcjcxeHhfZ3Bpb19zYyA9IE5VTEw7CisKIHN0YXRpYyB2b2lkCiBhcjcxeHhfZ3Bpb19m dW5jdGlvbl9lbmFibGUoc3RydWN0IGFyNzF4eF9ncGlvX3NvZnRjICpzYywgdWludDMyX3QgbWFz aykKIHsKQEAgLTMyMSwyMCArMzI1LDI1IEBACiBzdGF0aWMgaW50CiBhcjcxeHhfZ3Bpb19maWx0 ZXIodm9pZCAqYXJnKQogeworCWludCBpcnE7CisJc3RydWN0IGFyNzF4eF9ncGlvX3NvZnRjICpz YzsKKwlzdHJ1Y3QgaW50cl9ldmVudCAqZXZlbnQ7CisJdWludDMyX3Qgc3RhdHVzOwogCi0JLyog VE9ETzogc29tZXRoaW5nIHVzZWZ1bCAqLwotCXJldHVybiAoRklMVEVSX1NUUkFZKTsKLX0KKwlz YyA9IChzdHJ1Y3QgYXI3MXh4X2dwaW9fc29mdGMgKilhcmc7CiAKKwlzdGF0dXMgPSBHUElPX1JF QUQoc2MsIEFSNzFYWF9HUElPX0lOVF9QRU5ESU5HKTsKKwlmb3IgKGlycSA9IDA7IGlycSA8PSBz Yy0+Z3Bpb19tYXhwaW47IGlycSsrKSB7CisJCWlmIChzdGF0dXMgJiAoMVUgPDwgaXJxKSkgewor CQkJZXZlbnQgPSBzYy0+Z3Bpb19ldmVudHNbaXJxXTsKKwkJCWlmIChldmVudCAhPSBOVUxMICYm ICFUQUlMUV9FTVBUWSgmZXZlbnQtPmllX2hhbmRsZXJzKSkKKwkJCQlpbnRyX2V2ZW50X2hhbmRs ZShldmVudCwgTlVMTCk7CisJCQllbHNlCisJCQkJZGV2aWNlX3ByaW50ZihzYy0+ZGV2LCAiU3Ry YXkgSVJRICVkXG4iLCBpcnEpOworCQl9CisJfQogCi0KLXN0YXRpYyB2b2lkCi1hcjcxeHhfZ3Bp b19pbnRyKHZvaWQgKmFyZykKLXsKLQlzdHJ1Y3QgYXI3MXh4X2dwaW9fc29mdGMgKnNjID0gYXJn OwotCUdQSU9fTE9DSyhzYyk7Ci0JLyogVE9ETzogc29tZXRoaW5nIHVzZWZ1bCAqLwotCUdQSU9f VU5MT0NLKHNjKTsKKwlyZXR1cm4gKEZJTFRFUl9TVFJBWSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAg LTM0OCw5ICszNTcsOSBAQAogc3RhdGljIGludAogYXI3MXh4X2dwaW9fYXR0YWNoKGRldmljZV90 IGRldikKIHsKLQlzdHJ1Y3QgYXI3MXh4X2dwaW9fc29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0 YyhkZXYpOworCXN0cnVjdCBhcjcxeHhfZ3Bpb19zb2Z0YyAqc2M7CiAJaW50IGVycm9yID0gMDsK LQlpbnQgaSwgaiwgbWF4cGluOworCWludCBpLCBqOwogCWludCBtYXNrLCBwaW5vbjsKIAl1aW50 MzJfdCBvZTsKIApAQCAtMzU3LDggKzM2NiwxMyBAQAogCUtBU1NFUlQoKGRldmljZV9nZXRfdW5p dChkZXYpID09IDApLAogCSAgICAoImFyNzF4eF9ncGlvOiBPbmx5IG9uZSBncGlvIG1vZHVsZSBz dXBwb3J0ZWQiKSk7CiAKLQltdHhfaW5pdCgmc2MtPmdwaW9fbXR4LCBkZXZpY2VfZ2V0X25hbWV1 bml0KGRldiksIE5VTEwsIE1UWF9ERUYpOworCWlmIChhcjcxeHhfZ3Bpb19zYyAhPSBOVUxMKQor CQlyZXR1cm4gKEVOWElPKTsKIAorCWFyNzF4eF9ncGlvX3NjID0gc2MgPSBkZXZpY2VfZ2V0X3Nv ZnRjKGRldik7CisKKwltdHhfaW5pdCgmc2MtPmdwaW9fbXR4LCBkZXZpY2VfZ2V0X25hbWV1bml0 KGRldiksIE5VTEwsIE1UWF9TUElOKTsKKwogCS8qIE1hcCBjb250cm9sL3N0YXR1cyByZWdpc3Rl cnMuICovCiAJc2MtPmdwaW9fbWVtX3JpZCA9IDA7CiAJc2MtPmdwaW9fbWVtX3JlcyA9IGJ1c19h bGxvY19yZXNvdXJjZV9hbnkoZGV2LCBTWVNfUkVTX01FTU9SWSwKQEAgLTM3OCw3ICszOTIsNyBA QAogCX0KIAogCWlmICgoYnVzX3NldHVwX2ludHIoZGV2LCBzYy0+Z3Bpb19pcnFfcmVzLCBJTlRS X1RZUEVfTUlTQywgCi0JICAgIGFyNzF4eF9ncGlvX2ZpbHRlciwgYXI3MXh4X2dwaW9faW50ciwg c2MsICZzYy0+Z3Bpb19paCkpKSB7CisJICAgIGFyNzF4eF9ncGlvX2ZpbHRlciwgTlVMTCwgc2Ms ICZzYy0+Z3Bpb19paCkpKSB7CiAJCWRldmljZV9wcmludGYoZGV2LAogCQkgICAgIldBUk5JTkc6 IHVuYWJsZSB0byByZWdpc3RlciBpbnRlcnJ1cHQgaGFuZGxlclxuIik7CiAJCXJldHVybiAoRU5Y SU8pOwpAQCAtNDAwLDEwICs0MTQsMjYgQEAKIAl9CiAKIAkvKiBEaXNhYmxlIGludGVycnVwdHMg Zm9yIGFsbCBwaW5zLiAqLworCUdQSU9fV1JJVEUoc2MsIEFSNzFYWF9HUElPX0lOVCwgMCk7CiAJ R1BJT19XUklURShzYywgQVI3MVhYX0dQSU9fSU5UX01BU0ssIDApOwogCisJLyogSW5pdGlhbGl6 ZSB0aGUgaW50ZXJydXB0IGV2ZW50IGRhdGEuICovCisJKHZvaWQpIGFyNzF4eF9ncGlvX3Bpbl9t YXgoZGV2LCAmc2MtPmdwaW9fbWF4cGluKTsKKwlzYy0+Z3Bpb19ldmVudHMgPSBtYWxsb2Moc2l6 ZW9mKHN0cnVjdCBpbnRyX2V2ZW50ICopICogc2MtPmdwaW9fbWF4cGluLAorCSAgICBNX0RFVkJV RiwgTV9XQUlUT0sgfCBNX1pFUk8pOworCXNjLT5ncGlvX2lycV90cmlnZ2VyID0gbWFsbG9jKHNp emVvZihlbnVtIGludHJfdHJpZ2dlcikgKgorCSAgICBzYy0+Z3Bpb19tYXhwaW4sIE1fREVWQlVG LCBNX1dBSVRPSyB8IE1fWkVSTyk7CisJc2MtPmdwaW9faXJxX3BvbGFyaXR5ID0gbWFsbG9jKHNp emVvZihlbnVtIGludHJfcG9sYXJpdHkpICoKKwkgICAgc2MtPmdwaW9fbWF4cGluLCBNX0RFVkJV RiwgTV9XQUlUT0sgfCBNX1pFUk8pOworCS8qIFRoZSBkZWZhdWx0IGlzIGFjdGl2ZS1sb3cgaW50 ZXJydXB0cy4gKi8KKwlmb3IgKGkgPSAwOyBpIDw9IHNjLT5ncGlvX21heHBpbjsgaSsrKSB7CisJ CXNjLT5ncGlvX2lycV90cmlnZ2VyW2ldID0gSU5UUl9UUklHR0VSX0xFVkVMOworCQlzYy0+Z3Bp b19pcnFfcG9sYXJpdHlbaV0gPSBJTlRSX1BPTEFSSVRZX0xPVzsKKwkJYXI3MXh4X2dwaW9fY29u ZmlnX2ludHIoZGV2LCBpLCBzYy0+Z3Bpb19pcnFfdHJpZ2dlcltpXSwKKwkJICAgIHNjLT5ncGlv X2lycV9wb2xhcml0eVtpXSk7CisJfQorCiAJLyogSW5pdGlhbGlzZSBhbGwgcGlucyBzcGVjaWZp ZWQgaW4gdGhlIG1hc2ssIHVwIHRvIHRoZSBwaW4gY291bnQgKi8KLQkodm9pZCkgYXI3MXh4X2dw aW9fcGluX21heChkZXYsICZtYXhwaW4pOwogCWlmIChyZXNvdXJjZV9pbnRfdmFsdWUoZGV2aWNl X2dldF9uYW1lKGRldiksIGRldmljZV9nZXRfdW5pdChkZXYpLAogCSAgICAicGlubWFzayIsICZt YXNrKSAhPSAwKQogCQltYXNrID0gMDsKQEAgLTQxMSw3ICs0NDEsNyBAQAogCSAgICAicGlub24i LCAmcGlub24pICE9IDApCiAJCXBpbm9uID0gMDsKIAlkZXZpY2VfcHJpbnRmKGRldiwgImdwaW8g cGlubWFzaz0weCV4XG4iLCBtYXNrKTsKLQlmb3IgKGogPSAwOyBqIDw9IG1heHBpbjsgaisrKSB7 CisJZm9yIChqID0gMDsgaiA8PSBzYy0+Z3Bpb19tYXhwaW47IGorKykgewogCQlpZiAoKG1hc2sg JiAoMSA8PCBqKSkgPT0gMCkKIAkJCWNvbnRpbnVlOwogCQlzYy0+Z3Bpb19ucGlucysrOwpAQCAt NDIwLDcgKzQ1MCw3IEBACiAJb2UgPSBHUElPX1JFQUQoc2MsIEFSNzFYWF9HUElPX09FKTsKIAlz Yy0+Z3Bpb19waW5zID0gbWFsbG9jKHNpemVvZigqc2MtPmdwaW9fcGlucykgKiBzYy0+Z3Bpb19u cGlucywKIAkgICAgTV9ERVZCVUYsIE1fV0FJVE9LIHwgTV9aRVJPKTsKLQlmb3IgKGkgPSAwLCBq ID0gMDsgaiA8PSBtYXhwaW47IGorKykgeworCWZvciAoaSA9IDAsIGogPSAwOyBqIDw9IHNjLT5n cGlvX21heHBpbjsgaisrKSB7CiAJCWlmICgobWFzayAmICgxIDw8IGopKSA9PSAwKQogCQkJY29u dGludWU7CiAJCXNucHJpbnRmKHNjLT5ncGlvX3BpbnNbaV0uZ3BfbmFtZSwgR1BJT01BWE5BTUUs CkBAIC00NTksMTIgKzQ4OSwyMDQgQEAKIAkJYnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2LCBTWVNf UkVTX01FTU9SWSwgc2MtPmdwaW9fbWVtX3JpZCwKIAkJICAgIHNjLT5ncGlvX21lbV9yZXMpOwog Ci0JZnJlZShzYy0+Z3Bpb19waW5zLCBNX0RFVkJVRik7CisJaWYgKHNjLT5ncGlvX2lycV9wb2xh cml0eSAhPSBOVUxMKSB7CisJCWZyZWUoc2MtPmdwaW9faXJxX3BvbGFyaXR5LCBNX0RFVkJVRik7 CisJCXNjLT5ncGlvX2lycV9wb2xhcml0eSA9IE5VTEw7CisJfQorCWlmIChzYy0+Z3Bpb19pcnFf dHJpZ2dlciAhPSBOVUxMKSB7CisJCWZyZWUoc2MtPmdwaW9faXJxX3RyaWdnZXIsIE1fREVWQlVG KTsKKwkJc2MtPmdwaW9faXJxX3RyaWdnZXIgPSBOVUxMOworCX0KKwlpZiAoc2MtPmdwaW9fZXZl bnRzICE9IE5VTEwpIHsKKwkJZnJlZShzYy0+Z3Bpb19ldmVudHMsIE1fREVWQlVGKTsKKwkJc2Mt PmdwaW9fZXZlbnRzID0gTlVMTDsKKwl9CisJaWYgKHNjLT5ncGlvX3BpbnMgIT0gTlVMTCkgewor CQlmcmVlKHNjLT5ncGlvX3BpbnMsIE1fREVWQlVGKTsKKwkJc2MtPmdwaW9fcGlucyA9IE5VTEw7 CisJfQogCW10eF9kZXN0cm95KCZzYy0+Z3Bpb19tdHgpOwogCiAJcmV0dXJuKDApOwogfQogCitz dGF0aWMgdm9pZAorYXI3MXh4X2dwaW9fbWFza19pcnEodm9pZCAqc291cmNlKQoreyAgICAgICAK KwlpbnQgaXJxOworCXVpbnQzMl90IG1hc2s7CisKKwlpcnEgPSAoaW50KXNvdXJjZTsKKwlpZiAo aXJxID4gYXI3MXh4X2dwaW9fc2MtPmdwaW9fbWF4cGluKQorCQlyZXR1cm47CisKKwltYXNrID0g MVUgPDwgaXJxOworCUdQSU9fTE9DSyhhcjcxeHhfZ3Bpb19zYyk7CisJR1BJT19DTEVBUl9CSVRT KGFyNzF4eF9ncGlvX3NjLCBBUjcxWFhfR1BJT19JTlRfTUFTSywgbWFzayk7CisJR1BJT19VTkxP Q0soYXI3MXh4X2dwaW9fc2MpOworfQorCitzdGF0aWMgdm9pZAorYXI3MXh4X2dwaW9fdW5tYXNr X2lycSh2b2lkICpzb3VyY2UpCit7CisJaW50IGlycTsKKwl1aW50MzJfdCBtYXNrOworCisJaXJx ID0gKGludClzb3VyY2U7CisJaWYgKGlycSA+IGFyNzF4eF9ncGlvX3NjLT5ncGlvX21heHBpbikK KwkJcmV0dXJuOworCisJbWFzayA9IDFVIDw8IGlycTsKKwlHUElPX0xPQ0soYXI3MXh4X2dwaW9f c2MpOworCUdQSU9fU0VUX0JJVFMoYXI3MXh4X2dwaW9fc2MsIEFSNzFYWF9HUElPX0lOVF9NQVNL LCBtYXNrKTsKKwlHUElPX1VOTE9DSyhhcjcxeHhfZ3Bpb19zYyk7Cit9CisKK3N0YXRpYyBpbnQK K2FyNzF4eF9ncGlvX2FjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp bGQsIGludCB0eXBlLCBpbnQgcmlkLAorCXN0cnVjdCByZXNvdXJjZSAqcmVzKQoreworCWludCBw aW47CisJc3RydWN0IGFyNzF4eF9ncGlvX3NvZnRjICpzYzsKKworCWlmICh0eXBlICE9IFNZU19S RVNfSVJRKQorCQlyZXR1cm4gKEVOWElPKTsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYp OworCisJLyogRW5hYmxlIHRoZSBpbnRlcnJ1cHQgZm9yIHRoaXMgcGluLiAqLworCXBpbiA9IHJt YW5fZ2V0X3N0YXJ0KHJlcyk7CisJR1BJT19MT0NLKGFyNzF4eF9ncGlvX3NjKTsKKwlHUElPX1NF VF9CSVRTKGFyNzF4eF9ncGlvX3NjLCBBUjcxWFhfR1BJT19JTlQsICgxVSA8PCBwaW4pKTsKKwlH UElPX1VOTE9DSyhhcjcxeHhfZ3Bpb19zYyk7CisKKwkvKiBVbm1hc2sgdGhlIGludGVycnVwdC4g Ki8KKwlhcjcxeHhfZ3Bpb191bm1hc2tfaXJxKCh2b2lkICopKHVpbnRwdHJfdClwaW4pOworCisJ cmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAorYXI3MXh4X2dwaW9fZGVhY3RpdmF0ZV9yZXNv dXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlcykKK3sKKwlpbnQgcGluOworCXN0cnVjdCBhcjcxeHhfZ3Bpb19z b2Z0YyAqc2M7CisKKwlpZiAodHlwZSAhPSBTWVNfUkVTX0lSUSkKKwkJcmV0dXJuIChFTlhJTyk7 CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKKworCS8qIE1hc2sgdGhlIGludGVycnVw dC4gKi8KKwlwaW4gPSBybWFuX2dldF9zdGFydChyZXMpOworCWFyNzF4eF9ncGlvX21hc2tfaXJx KCh2b2lkICopKHVpbnRwdHJfdClwaW4pOworCisJLyogRGlzYWJsZSB0aGUgaW50ZXJydXB0IGZv ciB0aGlzIHBpbi4gKi8KKwlHUElPX0xPQ0soYXI3MXh4X2dwaW9fc2MpOworCUdQSU9fQ0xFQVJf QklUUyhhcjcxeHhfZ3Bpb19zYywgQVI3MVhYX0dQSU9fSU5ULCAoMVUgPDwgcGluKSk7CisJR1BJ T19VTkxPQ0soYXI3MXh4X2dwaW9fc2MpOworCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGlu dAorYXI3MXh4X2dwaW9fY29uZmlnX2ludHIoZGV2aWNlX3QgZGV2LCBpbnQgaXJxLCBlbnVtIGlu dHJfdHJpZ2dlciB0cmlnLAorCWVudW0gaW50cl9wb2xhcml0eSBwb2wpCit7CisJc3RydWN0IGFy NzF4eF9ncGlvX3NvZnRjICpzYzsKKwl1aW50MzJfdCBtYXNrLCByZWc7CisKKwlzYyA9IGRldmlj ZV9nZXRfc29mdGMoZGV2KTsKKwlpZiAoaXJxID4gc2MtPmdwaW9fbWF4cGluKQorCQlyZXR1cm4g KEVJTlZBTCk7CisKKwkvKiBUaGVyZSBpcyBubyBzdGFuZGFyZCB0cmlnZ2VyIG9yIHBvbGFyaXR5 LiAqLworCWlmICh0cmlnID09IElOVFJfVFJJR0dFUl9DT05GT1JNIHx8IHBvbCA9PSBJTlRSX1BP TEFSSVRZX0NPTkZPUk0pCisJCXJldHVybiAoRUlOVkFMKTsKKworCW1hc2sgPSAxVUwgPDwgaXJx OworCisJR1BJT19MT0NLKHNjKTsKKworCS8qIFNldCB0aGUgYXBwcm9wcmlhdGUgaW50ZXJydXB0 IHR5cGUuICovCisJcmVnID0gR1BJT19SRUFEKHNjLCBBUjcxWFhfR1BJT19JTlRfVFlQRSk7CisJ cmVnICY9IH5tYXNrOworCWlmICh0cmlnID09IElOVFJfVFJJR0dFUl9MRVZFTCkKKwkJcmVnIHw9 IG1hc2s7CisJR1BJT19XUklURShzYywgQVI3MVhYX0dQSU9fSU5UX1RZUEUsIHJlZyk7CisKKwkv KiBTZXQgdGhlIGFwcHJvcHJpYXRlIGludGVycnVwdCBwb2xhcml0eS4gKi8KKwlyZWcgPSBHUElP X1JFQUQoc2MsIEFSNzFYWF9HUElPX0lOVF9QT0xBUklUWSk7CisJcmVnICY9IH5tYXNrOworCWlm IChwb2wgPT0gSU5UUl9QT0xBUklUWV9ISUdIKQorCQlyZWcgfD0gbWFzazsKKwlHUElPX1dSSVRF KHNjLCBBUjcxWFhfR1BJT19JTlRfUE9MQVJJVFksIHJlZyk7CisKKwlzYy0+Z3Bpb19pcnFfdHJp Z2dlcltpcnFdID0gdHJpZzsKKwlzYy0+Z3Bpb19pcnFfcG9sYXJpdHlbaXJxXSA9IHBvbDsKKwor CUdQSU9fVU5MT0NLKHNjKTsKKworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2FyNzF4 eF9ncGlvX3NldHVwX2ludHIoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgc3RydWN0IHJl c291cmNlICppcmVzLAorCWludCBmbGFncywgZHJpdmVyX2ZpbHRlcl90ICpmaWx0LCBkcml2ZXJf aW50cl90ICpoYW5kbGVyLAorCXZvaWQgKmFyZywgdm9pZCAqKmNvb2tpZXApCit7CisJc3RydWN0 IGFyNzF4eF9ncGlvX3NvZnRjICpzYzsKKwlzdHJ1Y3QgaW50cl9ldmVudCAqZXZlbnQ7CisJaW50 IHBpbiwgZXJyb3I7CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKKwlwaW4gPSBybWFu X2dldF9zdGFydChpcmVzKTsKKworCWlmIChwaW4gPiBzYy0+Z3Bpb19tYXhwaW4pCisJCXBhbmlj KCIlczogYmFkIHBpbiAlZCIsIF9fZnVuY19fLCBwaW4pOworCisJZXZlbnQgPSBzYy0+Z3Bpb19l dmVudHNbcGluXTsKKwlpZiAoZXZlbnQgPT0gTlVMTCkgeworCQllcnJvciA9IGludHJfZXZlbnRf Y3JlYXRlKCZldmVudCwgKHZvaWQgKikodWludHB0cl90KXBpbiwgMCwKKwkJICAgIHBpbiwgYXI3 MXh4X2dwaW9fbWFza19pcnEsIGFyNzF4eF9ncGlvX3VubWFza19pcnEsCisJCSAgICBOVUxMLCBO VUxMLCAiZ3BpbyVkIHBpbiVkOiIsIGRldmljZV9nZXRfdW5pdChkZXYpLCBwaW4pOworCisJCWlm IChlcnJvciAhPSAwKQorCQkJcmV0dXJuIChlcnJvcik7CisKKwkJc2MtPmdwaW9fZXZlbnRzW3Bp bl0gPSBldmVudDsKKwl9CisKKwlpbnRyX2V2ZW50X2FkZF9oYW5kbGVyKGV2ZW50LCBkZXZpY2Vf Z2V0X25hbWV1bml0KGNoaWxkKSwgZmlsdCwKKwkgICAgaGFuZGxlciwgYXJnLCBpbnRyX3ByaW9y aXR5KGZsYWdzKSwgZmxhZ3MsIGNvb2tpZXApOworCisJcmV0dXJuICgwKTsKK30KKworc3RhdGlj IGludAorYXI3MXh4X2dwaW9fdGVhcmRvd25faW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90IGNo aWxkLCBzdHJ1Y3QgcmVzb3VyY2UgKmlyZXMsCisJdm9pZCAqY29va2llKQoreworCXN0cnVjdCBh cjcxeHhfZ3Bpb19zb2Z0YyAqc2M7CisJaW50IHBpbiwgZXJyOworCisJc2MgPSBkZXZpY2VfZ2V0 X3NvZnRjKGRldik7CisJcGluID0gcm1hbl9nZXRfc3RhcnQoaXJlcyk7CisKKwlpZiAocGluID4g c2MtPmdwaW9fbWF4cGluKQorCQlwYW5pYygiJXM6IGJhZCBwaW4gJWQiLCBfX2Z1bmNfXywgcGlu KTsKKworCWlmIChzYy0+Z3Bpb19ldmVudHNbcGluXSA9PSBOVUxMKQorCQlwYW5pYygiVHJ5aW5n IHRvIHRlYXJkb3duIHVub2NjdXBpZWQgSVJRIik7CisKKwllcnIgPSBpbnRyX2V2ZW50X3JlbW92 ZV9oYW5kbGVyKGNvb2tpZSk7CisJaWYgKCFlcnIpCisJCXNjLT5ncGlvX2V2ZW50c1twaW5dID0g TlVMTDsKKworCXJldHVybiAoZXJyKTsKK30KKwogc3RhdGljIGRldmljZV9tZXRob2RfdCBhcjcx eHhfZ3Bpb19tZXRob2RzW10gPSB7CiAJREVWTUVUSE9EKGRldmljZV9wcm9iZSwgYXI3MXh4X2dw aW9fcHJvYmUpLAogCURFVk1FVEhPRChkZXZpY2VfYXR0YWNoLCBhcjcxeHhfZ3Bpb19hdHRhY2gp LApAQCAtNDc5LDcgKzcwMSwxNSBAQAogCURFVk1FVEhPRChncGlvX3Bpbl9nZXQsIGFyNzF4eF9n cGlvX3Bpbl9nZXQpLAogCURFVk1FVEhPRChncGlvX3Bpbl9zZXQsIGFyNzF4eF9ncGlvX3Bpbl9z ZXQpLAogCURFVk1FVEhPRChncGlvX3Bpbl90b2dnbGUsIGFyNzF4eF9ncGlvX3Bpbl90b2dnbGUp LAotCXswLCAwfSwKKworCS8qIEJ1cyBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoYnVzX2FjdGl2 YXRlX3Jlc291cmNlLCBhcjcxeHhfZ3Bpb19hY3RpdmF0ZV9yZXNvdXJjZSksCisJREVWTUVUSE9E KGJ1c19kZWFjdGl2YXRlX3Jlc291cmNlLCBhcjcxeHhfZ3Bpb19kZWFjdGl2YXRlX3Jlc291cmNl KSwKKwlERVZNRVRIT0QoYnVzX2NvbmZpZ19pbnRyLCBhcjcxeHhfZ3Bpb19jb25maWdfaW50ciks CisJREVWTUVUSE9EKGJ1c19zZXR1cF9pbnRyLCBhcjcxeHhfZ3Bpb19zZXR1cF9pbnRyKSwKKwlE RVZNRVRIT0QoYnVzX3RlYXJkb3duX2ludHIsIGFyNzF4eF9ncGlvX3RlYXJkb3duX2ludHIpLAor CisJREVWTUVUSE9EX0VORAogfTsKIAogc3RhdGljIGRyaXZlcl90IGFyNzF4eF9ncGlvX2RyaXZl ciA9IHsKSW5kZXg6IHN5cy9taXBzL2F0aGVyb3MvYXI3MXh4X2dwaW92YXIuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzeXMvbWlwcy9hdGhlcm9zL2FyNzF4eF9ncGlvdmFyLmgJKHJldmlzaW9uIDI2NTgxNykK KysrIHN5cy9taXBzL2F0aGVyb3MvYXI3MXh4X2dwaW92YXIuaAkod29ya2luZyBjb3B5KQpAQCAt MzIsOCArMzIsOCBAQAogI2lmbmRlZiBfX0FSNzFYWF9HUElPVkFSX0hfXwogI2RlZmluZSBfX0FS NzFYWF9HUElPVkFSX0hfXwogCi0jZGVmaW5lIEdQSU9fTE9DSyhfc2MpCQltdHhfbG9jaygmKF9z YyktPmdwaW9fbXR4KQotI2RlZmluZSBHUElPX1VOTE9DSyhfc2MpCW10eF91bmxvY2soJihfc2Mp LT5ncGlvX210eCkKKyNkZWZpbmUgR1BJT19MT0NLKF9zYykJCW10eF9sb2NrX3NwaW4oJihfc2Mp LT5ncGlvX210eCkKKyNkZWZpbmUgR1BJT19VTkxPQ0soX3NjKQltdHhfdW5sb2NrX3NwaW4oJihf c2MpLT5ncGlvX210eCkKICNkZWZpbmUgR1BJT19MT0NLX0FTU0VSVChfc2MpCW10eF9hc3NlcnQo Jihfc2MpLT5ncGlvX210eCwgTUFfT1dORUQpCiAKIC8qCkBAIC02NSw2ICs2NSwxMCBAQAogICAg ICAgICB2b2lkCQkJKmdwaW9faWg7CiAJaW50CQkJZ3Bpb19ucGluczsKIAlzdHJ1Y3QgZ3Bpb19w aW4JCSpncGlvX3BpbnM7CisJaW50CQkJZ3Bpb19tYXhwaW47CisJc3RydWN0IGludHJfZXZlbnQJ KipncGlvX2V2ZW50czsKKwllbnVtIGludHJfdHJpZ2dlcgkqZ3Bpb19pcnFfdHJpZ2dlcjsKKwll bnVtIGludHJfcG9sYXJpdHkJKmdwaW9faXJxX3BvbGFyaXR5OwogfTsKIAogI2VuZGlmCS8qIF9f QVI3MVhYX0dQSU9WQVJfSF9fICovCg== --001a11c335ce38a5b404f96138f2 Content-Type: text/plain; charset=US-ASCII; name="bcm2835_gpio-intr.diff" Content-Disposition: attachment; filename="bcm2835_gpio-intr.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hv6zeuta1 SW5kZXg6IHN5cy9hcm0vYnJvYWRjb20vYmNtMjgzNS9iY20yODM1X2dwaW8uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzeXMvYXJtL2Jyb2FkY29tL2JjbTI4MzUvYmNtMjgzNV9ncGlvLmMJKHJldmlzaW9uIDI2 NTg0MikKKysrIHN5cy9hcm0vYnJvYWRjb20vYmNtMjgzNS9iY20yODM1X2dwaW8uYwkod29ya2lu ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHN5cy9tdXRleC5oPgogI2luY2x1 ZGUgPHN5cy9ncGlvLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2luY2x1ZGUgPHN5cy9p bnRlcnJ1cHQuaD4KIAogI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CiAjaW5jbHVkZSA8bWFjaGlu ZS9jcHUuaD4KQEAgLTYyLDEwICs2MywyMCBAQAogI2RlZmluZSBkcHJpbnRmKGZtdCwgYXJncy4u LikKICNlbmRpZgogCisjZGVmaW5lCUJDTV9HUElPX0lSUVMJCTQKICNkZWZpbmUJQkNNX0dQSU9f UElOUwkJNTQKKyNkZWZpbmUJQkNNX0dQSU9fUElOU19QRVJfQkFOSwkzMgogI2RlZmluZQlCQ01f R1BJT19ERUZBVUxUX0NBUFMJKEdQSU9fUElOX0lOUFVUIHwgR1BJT19QSU5fT1VUUFVUIHwJXAog ICAgIEdQSU9fUElOX1BVTExVUCB8IEdQSU9fUElOX1BVTExET1dOKQogCitzdGF0aWMgc3RydWN0 IHJlc291cmNlX3NwZWMgYmNtX2dwaW9faXJxX3NwZWNbXSA9IHsKKwl7IFNZU19SRVNfSVJRLAkw LAlSRl9BQ1RJVkUgfSwKKwl7IFNZU19SRVNfSVJRLAkxLAlSRl9BQ1RJVkUgfSwKKwl7IFNZU19S RVNfSVJRLAkyLAlSRl9BQ1RJVkUgfSwKKwl7IFNZU19SRVNfSVJRLAkzLAlSRl9BQ1RJVkUgfSwK Kwl7IC0xLAkJMCwJMCB9Cit9OworCiBzdHJ1Y3QgYmNtX2dwaW9fc3lzY3RsIHsKIAlzdHJ1Y3Qg YmNtX2dwaW9fc29mdGMJKnNjOwogCXVpbnQzMl90CQlwaW47CkBAIC03NSwxNSArODYsMTggQEAK IAlkZXZpY2VfdAkJc2NfZGV2OwogCXN0cnVjdCBtdHgJCXNjX210eDsKIAlzdHJ1Y3QgcmVzb3Vy Y2UgKglzY19tZW1fcmVzOwotCXN0cnVjdCByZXNvdXJjZSAqCXNjX2lycV9yZXM7CisJc3RydWN0 IHJlc291cmNlICoJc2NfaXJxX3Jlc1tCQ01fR1BJT19JUlFTXTsKIAlidXNfc3BhY2VfdGFnX3QJ CXNjX2JzdDsKIAlidXNfc3BhY2VfaGFuZGxlX3QJc2NfYnNoOwotCXZvaWQgKgkJCXNjX2ludHJo YW5kOworCXZvaWQgKgkJCXNjX2ludHJoYW5kW0JDTV9HUElPX0lSUVNdOwogCWludAkJCXNjX2dw aW9fbnBpbnM7CiAJaW50CQkJc2Nfcm9fbnBpbnM7CiAJaW50CQkJc2Nfcm9fcGluc1tCQ01fR1BJ T19QSU5TXTsKIAlzdHJ1Y3QgZ3Bpb19waW4JCXNjX2dwaW9fcGluc1tCQ01fR1BJT19QSU5TXTsK KwlzdHJ1Y3QgaW50cl9ldmVudCAqCXNjX2V2ZW50c1tCQ01fR1BJT19QSU5TXTsKIAlzdHJ1Y3Qg YmNtX2dwaW9fc3lzY3RsCXNjX3N5c2N0bFtCQ01fR1BJT19QSU5TXTsKKwllbnVtIGludHJfdHJp Z2dlcglzY19pcnFfdHJpZ2dlcltCQ01fR1BJT19QSU5TXTsKKwllbnVtIGludHJfcG9sYXJpdHkJ c2NfaXJxX3BvbGFyaXR5W0JDTV9HUElPX1BJTlNdOwogfTsKIAogZW51bSBiY21fZ3Bpb19wdWQg ewpAQCAtOTYsMTggKzExMCwzMyBAQAogI2RlZmluZQlCQ01fR1BJT19VTkxPQ0soX3NjKQltdHhf dW5sb2NrKCZfc2MtPnNjX210eCkKICNkZWZpbmUJQkNNX0dQSU9fTE9DS19BU1NFUlQoX3NjKQlt dHhfYXNzZXJ0KCZfc2MtPnNjX210eCwgTUFfT1dORUQpCiAKLSNkZWZpbmUJQkNNX0dQSU9fR1BG U0VMKF9iYW5rKQkweDAwICsgX2JhbmsgKiA0Ci0jZGVmaW5lCUJDTV9HUElPX0dQU0VUKF9iYW5r KQkweDFjICsgX2JhbmsgKiA0Ci0jZGVmaW5lCUJDTV9HUElPX0dQQ0xSKF9iYW5rKQkweDI4ICsg X2JhbmsgKiA0Ci0jZGVmaW5lCUJDTV9HUElPX0dQTEVWKF9iYW5rKQkweDM0ICsgX2JhbmsgKiA0 Ci0jZGVmaW5lCUJDTV9HUElPX0dQUFVEKF9iYW5rKQkweDk0Ci0jZGVmaW5lCUJDTV9HUElPX0dQ UFVEQ0xLKF9iYW5rKQkweDk4ICsgX2JhbmsgKiA0CisjZGVmaW5lCUJDTV9HUElPX0dQRlNFTChf YmFuaykJKDB4MDAgKyBfYmFuayAqIDQpCS8qIEZ1bmN0aW9uIFNlbGVjdCAqLworI2RlZmluZQlC Q01fR1BJT19HUFNFVChfYmFuaykJKDB4MWMgKyBfYmFuayAqIDQpCS8qIFBpbiBPdXQgU2V0ICov CisjZGVmaW5lCUJDTV9HUElPX0dQQ0xSKF9iYW5rKQkoMHgyOCArIF9iYW5rICogNCkJLyogUGlu IE91dCBDbGVhciAqLworI2RlZmluZQlCQ01fR1BJT19HUExFVihfYmFuaykJKDB4MzQgKyBfYmFu ayAqIDQpCS8qIFBpbiBMZXZlbCAqLworI2RlZmluZQlCQ01fR1BJT19HUEVEUyhfYmFuaykJKDB4 NDAgKyBfYmFuayAqIDQpCS8qIEV2ZW50IFN0YXR1cyAqLworI2RlZmluZQlCQ01fR1BJT19HUFJF TihfYmFuaykJKDB4NGMgKyBfYmFuayAqIDQpCS8qIFJpc2luZyBFZGdlIGlzciAqLworI2RlZmlu ZQlCQ01fR1BJT19HUEZFTihfYmFuaykJKDB4NTggKyBfYmFuayAqIDQpCS8qIEZhbGxpbmcgRWRn ZSBpc3IgKi8KKyNkZWZpbmUJQkNNX0dQSU9fR1BIRU4oX2JhbmspCSgweDY0ICsgX2JhbmsgKiA0 KQkvKiBIaWdoIExldmVsIGlzciAqLworI2RlZmluZQlCQ01fR1BJT19HUExFTihfYmFuaykJKDB4 NzAgKyBfYmFuayAqIDQpCS8qIExvdyBMZXZlbCBpc3IgKi8KKyNkZWZpbmUJQkNNX0dQSU9fR1BB UkVOKF9iYW5rKQkoMHg3YyArIF9iYW5rICogNCkJLyogQXN5bmMgUmlzaW5nIEVkZ2UgKi8KKyNk ZWZpbmUJQkNNX0dQSU9fR1BBRkVOKF9iYW5rKQkoMHg4OCArIF9iYW5rICogNCkJLyogQXN5bmMg RmFsbGluZyBFZ2RlICovCisjZGVmaW5lCUJDTV9HUElPX0dQUFVEKF9iYW5rKQkoMHg5NCkJCQkv KiBQaW4gUHVsbCB1cC9kb3duICovCisjZGVmaW5lCUJDTV9HUElPX0dQUFVEQ0xLKF9iYW5rKSAo MHg5OCArIF9iYW5rICogNCkJLyogUGluIFB1bGwgdXAgY2xvY2sgKi8KIAogI2RlZmluZQlCQ01f R1BJT19XUklURShfc2MsIF9vZmYsIF92YWwpCQlcCiAgICAgYnVzX3NwYWNlX3dyaXRlXzQoX3Nj LT5zY19ic3QsIF9zYy0+c2NfYnNoLCBfb2ZmLCBfdmFsKQogI2RlZmluZQlCQ01fR1BJT19SRUFE KF9zYywgX29mZikJCVwKICAgICBidXNfc3BhY2VfcmVhZF80KF9zYy0+c2NfYnN0LCBfc2MtPnNj X2JzaCwgX29mZikKKyNkZWZpbmUJQkNNX0dQSU9fQ0xFQVJfQklUUyhfc2MsIF9vZmYsIF9iaXRz KQlcCisgICAgQkNNX0dQSU9fV1JJVEUoX3NjLCBfb2ZmLCBCQ01fR1BJT19SRUFEKF9zYywgX29m ZikgJiB+KF9iaXRzKSk7CisjZGVmaW5lCUJDTV9HUElPX1NFVF9CSVRTKF9zYywgX29mZiwgX2Jp dHMpCVwKKyAgICBCQ01fR1BJT19XUklURShfc2MsIF9vZmYsIEJDTV9HUElPX1JFQUQoX3NjLCBf b2ZmKSB8IF9iaXRzKTsKIAorc3RhdGljIHN0cnVjdCBiY21fZ3Bpb19zb2Z0YyAqYmNtX2dwaW9f c2MgPSBOVUxMOworCitzdGF0aWMgaW50IGJjbV9ncGlvX2ludHIodm9pZCAqKTsKKwogc3RhdGlj IGludAogYmNtX2dwaW9fcGluX2lzX3JvKHN0cnVjdCBiY21fZ3Bpb19zb2Z0YyAqc2MsIGludCBw aW4pCiB7CkBAIC02ODYsMTUgKzcxNSw1MCBAQAogfQogCiBzdGF0aWMgaW50CitiY21fZ3Bpb19p bnRyX2F0dGFjaChkZXZpY2VfdCBkZXYpCit7CisJc3RydWN0IGJjbV9ncGlvX3NvZnRjICpzYzsK KwlpbnQgaTsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCWZvciAoaSA9IDA7IGkg PCBCQ01fR1BJT19JUlFTOyBpKyspIHsKKwkJaWYgKGJ1c19zZXR1cF9pbnRyKGRldiwgc2MtPnNj X2lycV9yZXNbaV0sIElOVFJfVFlQRV9NSVNDLAorCQkgICAgYmNtX2dwaW9faW50ciwgTlVMTCwg c2MsICZzYy0+c2NfaW50cmhhbmRbaV0pICE9IDApIHsKKwkJCXJldHVybiAoLTEpOworCQl9CisJ fQorCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIHZvaWQKK2JjbV9ncGlvX2ludHJfZGV0YWNo KGRldmljZV90IGRldikKK3sKKwlzdHJ1Y3QgYmNtX2dwaW9fc29mdGMgKnNjOworCWludCBpOwor CisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CisJZm9yIChpID0gMDsgaSA8IEJDTV9HUElP X0lSUVM7IGkrKykgeworCQlpZiAoc2MtPnNjX2ludHJoYW5kW2ldKSB7CisJCQlidXNfdGVhcmRv d25faW50cihkZXYsIHNjLT5zY19pcnFfcmVzW2ldLAorCQkgICAgc2MtPnNjX2ludHJoYW5kW2ld KTsKKwkJfQorCX0KK30KKworc3RhdGljIGludAogYmNtX2dwaW9fYXR0YWNoKGRldmljZV90IGRl dikKIHsKLQlzdHJ1Y3QgYmNtX2dwaW9fc29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYp OworCXN0cnVjdCBiY21fZ3Bpb19zb2Z0YyAqc2M7CiAJdWludDMyX3QgZnVuYzsKIAlpbnQgaSwg aiwgcmlkOwogCXBoYW5kbGVfdCBncGlvOwogCi0Jc2MtPnNjX2RldiA9IGRldjsKKwlpZiAoYmNt X2dwaW9fc2MgIT0gTlVMTCkKKwkJcmV0dXJuIChFTlhJTyk7CiAKKwliY21fZ3Bpb19zYyA9IHNj ID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCiAJbXR4X2luaXQoJnNjLT5zY19tdHgsICJiY20g Z3BpbyIsICJncGlvIiwgTVRYX0RFRik7CiAKIAlyaWQgPSAwOwpAQCAtNzA4LDE1ICs3NzIsMTkg QEAKIAlzYy0+c2NfYnN0ID0gcm1hbl9nZXRfYnVzdGFnKHNjLT5zY19tZW1fcmVzKTsKIAlzYy0+ c2NfYnNoID0gcm1hbl9nZXRfYnVzaGFuZGxlKHNjLT5zY19tZW1fcmVzKTsKIAotCXJpZCA9IDA7 Ci0Jc2MtPnNjX2lycV9yZXMgPSBidXNfYWxsb2NfcmVzb3VyY2VfYW55KGRldiwgU1lTX1JFU19J UlEsICZyaWQsCi0JICAgIFJGX0FDVElWRSk7Ci0JaWYgKCFzYy0+c2NfaXJxX3JlcykgeworCS8q IFJlcXVlc3QgdGhlIElSUSByZXNvdXJjZXMuICovCisJaWYgKGJ1c19hbGxvY19yZXNvdXJjZXMo ZGV2LCBiY21fZ3Bpb19pcnFfc3BlYywgc2MtPnNjX2lycV9yZXMpKSB7CiAJCWJ1c19yZWxlYXNl X3Jlc291cmNlKGRldiwgU1lTX1JFU19NRU1PUlksIDAsIHNjLT5zY19tZW1fcmVzKTsKLQkJZGV2 aWNlX3ByaW50ZihkZXYsICJjYW5ub3QgYWxsb2NhdGUgaW50ZXJydXB0XG4iKTsKKwkJZGV2aWNl X3ByaW50ZihkZXYsICJjYW5ub3QgYWxsb2NhdGUgaXJxIHJlc291cmNlc1xuIik7CiAJCXJldHVy biAoRU5YSU8pOwogCX0KIAorCS8qIFNldHVwIHRoZSBHUElPIGludGVycnVwdCBoYW5kbGVyLiAq LworCWlmIChiY21fZ3Bpb19pbnRyX2F0dGFjaChkZXYpKSB7CisJCWRldmljZV9wcmludGYoZGV2 LCAidW5hYmxlIHRvIHNldHVwIHRoZSBncGlvIGlycSBoYW5kbGVyXG4iKTsKKwkJZ290byBmYWls OworCX0KKyAKIAkvKiBGaW5kIG91ciBub2RlLiAqLwogCWdwaW8gPSBvZndfYnVzX2dldF9ub2Rl KHNjLT5zY19kZXYpOwogCkBAIC03NDEsNiArODA5LDkgQEAKIAkJc2MtPnNjX2dwaW9fcGluc1tp XS5ncF9waW4gPSBqOwogCQlzYy0+c2NfZ3Bpb19waW5zW2ldLmdwX2NhcHMgPSBCQ01fR1BJT19E RUZBVUxUX0NBUFM7CiAJCXNjLT5zY19ncGlvX3BpbnNbaV0uZ3BfZmxhZ3MgPSBiY21fZ3Bpb19m dW5jX2ZsYWcoZnVuYyk7CisJCS8qIFRoZSBkZWZhdWx0IGlzIGFjdGl2ZS1sb3cgaW50ZXJydXB0 cy4gKi8KKwkJc2MtPnNjX2lycV90cmlnZ2VyW2ldID0gSU5UUl9UUklHR0VSX0xFVkVMOworCQlz Yy0+c2NfaXJxX3BvbGFyaXR5W2ldID0gSU5UUl9QT0xBUklUWV9MT1c7CiAJCWkrKzsKIAl9CiAJ c2MtPnNjX2dwaW9fbnBpbnMgPSBpOwpAQCAtNzQ5LDEzICs4MjAsMTUgQEAKIAogCWRldmljZV9h ZGRfY2hpbGQoZGV2LCAiZ3Bpb2MiLCBkZXZpY2VfZ2V0X3VuaXQoZGV2KSk7CiAJZGV2aWNlX2Fk ZF9jaGlsZChkZXYsICJncGlvYnVzIiwgZGV2aWNlX2dldF91bml0KGRldikpOworCiAJcmV0dXJu IChidXNfZ2VuZXJpY19hdHRhY2goZGV2KSk7CiAKIGZhaWw6Ci0JaWYgKHNjLT5zY19pcnFfcmVz KQotCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYsIFNZU19SRVNfSVJRLCAwLCBzYy0+c2NfaXJx X3Jlcyk7CisJYmNtX2dwaW9faW50cl9kZXRhY2goZGV2KTsKKwlidXNfcmVsZWFzZV9yZXNvdXJj ZXMoZGV2LCBiY21fZ3Bpb19pcnFfc3BlYywgc2MtPnNjX2lycV9yZXMpOwogCWlmIChzYy0+c2Nf bWVtX3JlcykKIAkJYnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2LCBTWVNfUkVTX01FTU9SWSwgMCwg c2MtPnNjX21lbV9yZXMpOworCiAJcmV0dXJuIChFTlhJTyk7CiB9CiAKQEAgLTc2Niw2ICs4Mzks MjMzIEBACiAJcmV0dXJuIChFQlVTWSk7CiB9CiAKK3N0YXRpYyB1aW50MzJfdAorYmNtX2dwaW9f aW50cl9yZWcoc3RydWN0IGJjbV9ncGlvX3NvZnRjICpzYywgdW5zaWduZWQgaW50IGlycSwgdWlu dDMyX3QgYmFuaykKK3sKKworCWlmIChpcnEgPiBCQ01fR1BJT19QSU5TKQorCQlyZXR1cm4gKDAp OworCisJaWYgKHNjLT5zY19pcnFfdHJpZ2dlcltpcnFdID09IElOVFJfVFJJR0dFUl9MRVZFTCkg eworCQlpZiAoc2MtPnNjX2lycV9wb2xhcml0eVtpcnFdID09IElOVFJfUE9MQVJJVFlfTE9XKQor CQkJcmV0dXJuIChCQ01fR1BJT19HUExFTihiYW5rKSk7CisJCWVsc2UgaWYgKHNjLT5zY19pcnFf cG9sYXJpdHlbaXJxXSA9PSBJTlRSX1BPTEFSSVRZX0hJR0gpCisJCQlyZXR1cm4gKEJDTV9HUElP X0dQSEVOKGJhbmspKTsKKwl9IGVsc2UgaWYgKHNjLT5zY19pcnFfdHJpZ2dlcltpcnFdID09IElO VFJfVFJJR0dFUl9FREdFKSB7CisJCWlmIChzYy0+c2NfaXJxX3BvbGFyaXR5W2lycV0gPT0gSU5U Ul9QT0xBUklUWV9MT1cpCisJCQlyZXR1cm4gKEJDTV9HUElPX0dQRkVOKGJhbmspKTsKKwkJZWxz ZSBpZiAoc2MtPnNjX2lycV9wb2xhcml0eVtpcnFdID09IElOVFJfUE9MQVJJVFlfSElHSCkKKwkJ CXJldHVybiAoQkNNX0dQSU9fR1BSRU4oYmFuaykpOworCX0KKworCXJldHVybiAoMCk7Cit9CisK K3N0YXRpYyB2b2lkCitiY21fZ3Bpb19tYXNrX2lycSh2b2lkICpzb3VyY2UpCit7CisJdWludDMy X3QgYmFuaywgbWFzaywgcmVnOworCXVuc2lnbmVkIGludCBpcnE7CisKKwlpcnEgPSAodW5zaWdu ZWQgaW50KXNvdXJjZTsKKwlpZiAoaXJxID4gQkNNX0dQSU9fUElOUykKKwkJcmV0dXJuOworCWlm IChiY21fZ3Bpb19waW5faXNfcm8oYmNtX2dwaW9fc2MsIGlycSkpCisJCXJldHVybjsKKworCWJh bmsgPSBpcnEgLyBCQ01fR1BJT19QSU5TX1BFUl9CQU5LOworCW1hc2sgPSAoMVUgPDwgKGlycSAl IEJDTV9HUElPX1BJTlNfUEVSX0JBTkspKTsKKworCUJDTV9HUElPX0xPQ0soYmNtX2dwaW9fc2Mp OworCXJlZyA9IGJjbV9ncGlvX2ludHJfcmVnKGJjbV9ncGlvX3NjLCBpcnEsIGJhbmspOworCWlm IChyZWcgIT0gMCkKKwkJQkNNX0dQSU9fQ0xFQVJfQklUUyhiY21fZ3Bpb19zYywgcmVnLCBtYXNr KTsKKwlCQ01fR1BJT19VTkxPQ0soYmNtX2dwaW9fc2MpOworfQorCitzdGF0aWMgdm9pZAorYmNt X2dwaW9fdW5tYXNrX2lycSh2b2lkICpzb3VyY2UpCit7CisJdWludDMyX3QgYmFuaywgbWFzaywg cmVnOworCXVuc2lnbmVkIGludCBpcnE7CisKKwlpcnEgPSAodW5zaWduZWQgaW50KXNvdXJjZTsK KwlpZiAoaXJxID4gQkNNX0dQSU9fUElOUykKKwkJcmV0dXJuOworCWlmIChiY21fZ3Bpb19waW5f aXNfcm8oYmNtX2dwaW9fc2MsIGlycSkpCisJCXJldHVybjsKKworCWJhbmsgPSBpcnEgLyBCQ01f R1BJT19QSU5TX1BFUl9CQU5LOworCW1hc2sgPSAoMVUgPDwgKGlycSAlIEJDTV9HUElPX1BJTlNf UEVSX0JBTkspKTsKKworCUJDTV9HUElPX0xPQ0soYmNtX2dwaW9fc2MpOworCXJlZyA9IGJjbV9n cGlvX2ludHJfcmVnKGJjbV9ncGlvX3NjLCBpcnEsIGJhbmspOworCWlmIChyZWcgIT0gMCkKKwkJ QkNNX0dQSU9fU0VUX0JJVFMoYmNtX2dwaW9fc2MsIHJlZywgbWFzayk7CisJQkNNX0dQSU9fVU5M T0NLKGJjbV9ncGlvX3NjKTsKK30KKworc3RhdGljIGludAorYmNtX2dwaW9fYWN0aXZhdGVfcmVz b3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCByaWQsCisJ c3RydWN0IHJlc291cmNlICpyZXMpCit7CisJaW50IHBpbjsKKworCWlmICh0eXBlICE9IFNZU19S RVNfSVJRKQorCQlyZXR1cm4gKEVOWElPKTsKKworCS8qIFVubWFzayB0aGUgaW50ZXJydXB0LiAq LworCXBpbiA9IHJtYW5fZ2V0X3N0YXJ0KHJlcyk7CisJYmNtX2dwaW9fdW5tYXNrX2lycSgodm9p ZCAqKXBpbik7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitiY21fZ3Bpb19kZWFj dGl2YXRlX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBp bnQgcmlkLAorCXN0cnVjdCByZXNvdXJjZSAqcmVzKQoreworCWludCBwaW47CisKKwlpZiAodHlw ZSAhPSBTWVNfUkVTX0lSUSkKKwkJcmV0dXJuIChFTlhJTyk7CisKKwkvKiBNYXNrIHRoZSBpbnRl cnJ1cHQuICovCisJcGluID0gcm1hbl9nZXRfc3RhcnQocmVzKTsKKwliY21fZ3Bpb19tYXNrX2ly cSgodm9pZCAqKXBpbik7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitiY21fZ3Bp b19jb25maWdfaW50cihkZXZpY2VfdCBkZXYsIGludCBpcnEsIGVudW0gaW50cl90cmlnZ2VyIHRy aWcsCisJZW51bSBpbnRyX3BvbGFyaXR5IHBvbCkKK3sKKwlpbnQgYmFuazsKKwlzdHJ1Y3QgYmNt X2dwaW9fc29mdGMgKnNjOworCXVpbnQzMl90IG1hc2ssIG9sZHJlZywgcmVnOworCisJaWYgKGly cSA+IEJDTV9HUElPX1BJTlMpCisJCXJldHVybiAoRUlOVkFMKTsKKworCS8qIFRoZXJlIGlzIG5v IHN0YW5kYXJkIHRyaWdnZXIgb3IgcG9sYXJpdHkuICovCisJaWYgKHRyaWcgPT0gSU5UUl9UUklH R0VSX0NPTkZPUk0gfHwgcG9sID09IElOVFJfUE9MQVJJVFlfQ09ORk9STSkKKwkJcmV0dXJuIChF SU5WQUwpOworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CisJaWYgKGJjbV9ncGlvX3Bp bl9pc19ybyhzYywgaXJxKSkKKwkJcmV0dXJuIChFSU5WQUwpOworCisJYmFuayA9IGlycSAvIEJD TV9HUElPX1BJTlNfUEVSX0JBTks7CisJbWFzayA9ICgxVUwgPDwgKGlycSAlIEJDTV9HUElPX1BJ TlNfUEVSX0JBTkspKTsKKworCUJDTV9HUElPX0xPQ0soc2MpOworCW9sZHJlZyA9IGJjbV9ncGlv X2ludHJfcmVnKHNjLCBpcnEsIGJhbmspOworCXNjLT5zY19pcnFfdHJpZ2dlcltpcnFdID0gdHJp ZzsKKwlzYy0+c2NfaXJxX3BvbGFyaXR5W2lycV0gPSBwb2w7CisJcmVnID0gYmNtX2dwaW9faW50 cl9yZWcoc2MsIGlycSwgYmFuayk7CisJaWYgKHJlZyAhPSAwKQorCQlCQ01fR1BJT19TRVRfQklU UyhzYywgcmVnLCBtYXNrKTsKKwlpZiAob2xkcmVnICE9IDApCisJCUJDTV9HUElPX0NMRUFSX0JJ VFMoc2MsIG9sZHJlZywgbWFzayk7CisJQkNNX0dQSU9fVU5MT0NLKHNjKTsKKworCXJldHVybiAo MCk7Cit9CisKK3N0YXRpYyBpbnQKK2JjbV9ncGlvX3NldHVwX2ludHIoZGV2aWNlX3QgYnVzLCBk ZXZpY2VfdCBjaGlsZCwgc3RydWN0IHJlc291cmNlICppcmVzLAorCWludCBmbGFncywgZHJpdmVy X2ZpbHRlcl90ICpmaWx0LCBkcml2ZXJfaW50cl90ICpoYW5kbGVyLAorCXZvaWQgKmFyZywgdm9p ZCAqKmNvb2tpZXApCit7CisJc3RydWN0IGJjbV9ncGlvX3NvZnRjICpzYzsKKwlzdHJ1Y3QgaW50 cl9ldmVudCAqZXZlbnQ7CisJaW50IHBpbiwgZXJyb3I7CisKKwlzYyA9IGRldmljZV9nZXRfc29m dGMoYnVzKTsKKwlwaW4gPSBybWFuX2dldF9zdGFydChpcmVzKTsKKworCWlmIChwaW4gPiBCQ01f R1BJT19QSU5TKQorCQlwYW5pYygiJXM6IGJhZCBwaW4gJWQiLCBfX2Z1bmNfXywgcGluKTsKKwor CWV2ZW50ID0gc2MtPnNjX2V2ZW50c1twaW5dOworCWlmIChldmVudCA9PSBOVUxMKSB7CisJCWVy cm9yID0gaW50cl9ldmVudF9jcmVhdGUoJmV2ZW50LCAodm9pZCAqKXBpbiwgMCwgcGluLCAKKwkJ ICAgIGJjbV9ncGlvX21hc2tfaXJxLCBiY21fZ3Bpb191bm1hc2tfaXJxLCBOVUxMLCBOVUxMLAor CQkgICAgImdwaW8lZCBwaW4lZDoiLCBkZXZpY2VfZ2V0X3VuaXQoYnVzKSwgcGluKTsKKworCQlp ZiAoZXJyb3IgIT0gMCkKKwkJCXJldHVybiAoZXJyb3IpOworCisJCXNjLT5zY19ldmVudHNbcGlu XSA9IGV2ZW50OworCX0KKworCWludHJfZXZlbnRfYWRkX2hhbmRsZXIoZXZlbnQsIGRldmljZV9n ZXRfbmFtZXVuaXQoY2hpbGQpLCBmaWx0LAorCSAgICBoYW5kbGVyLCBhcmcsIGludHJfcHJpb3Jp dHkoZmxhZ3MpLCBmbGFncywgY29va2llcCk7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMg aW50CitiY21fZ3Bpb190ZWFyZG93bl9pbnRyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQs IHN0cnVjdCByZXNvdXJjZSAqaXJlcywKKwl2b2lkICpjb29raWUpCit7CisJc3RydWN0IGJjbV9n cGlvX3NvZnRjICpzYzsKKwlpbnQgcGluLCBlcnI7CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMo ZGV2KTsKKwlwaW4gPSBybWFuX2dldF9zdGFydChpcmVzKTsKKwlpZiAocGluID4gQkNNX0dQSU9f UElOUykKKwkJcGFuaWMoIiVzOiBiYWQgcGluICVkIiwgX19mdW5jX18sIHBpbik7CisKKwlpZiAo c2MtPnNjX2V2ZW50c1twaW5dID09IE5VTEwpCisJCXBhbmljKCJUcnlpbmcgdG8gdGVhcmRvd24g dW5vY2N1cGllZCBJUlEiKTsKKworCWVyciA9IGludHJfZXZlbnRfcmVtb3ZlX2hhbmRsZXIoY29v a2llKTsKKwlpZiAoIWVycikKKwkJc2MtPnNjX2V2ZW50c1twaW5dID0gTlVMTDsKKworCXJldHVy biAoZXJyKTsKK30KKworc3RhdGljIGludAorYmNtX2dwaW9faW50cih2b2lkICphcmcpCit7CisJ c3RydWN0IGJjbV9ncGlvX3NvZnRjICpzYzsKKwlzdHJ1Y3QgaW50cl9ldmVudCAqZXZlbnQ7CisJ dWludDMyX3QgYmFuaywgbWFzaywgcmVnOworCWludCBiYW5rX2xhc3QsIGlycTsKKworCXNjID0g KHN0cnVjdCBiY21fZ3Bpb19zb2Z0YyAqKWFyZzsKKworCWJhbmtfbGFzdCA9IC0xOworCWZvciAo aXJxID0gMDsgaXJxIDwgQkNNX0dQSU9fUElOUzsgaXJxKyspIHsKKworCQliYW5rID0gaXJxIC8g QkNNX0dQSU9fUElOU19QRVJfQkFOSzsKKwkJbWFzayA9ICgxVSA8PCAoaXJxICUgQkNNX0dQSU9f UElOU19QRVJfQkFOSykpOworCisJCWlmIChiYW5rICE9IGJhbmtfbGFzdCkgeworCQkJcmVnID0g QkNNX0dQSU9fUkVBRChzYywgQkNNX0dQSU9fR1BFRFMoYmFuaykpOworCQkJYmFua19sYXN0ID0g YmFuazsKKwkJfQorCisJCWlmIChyZWcgJiBtYXNrKSB7CisJCQlldmVudCA9IHNjLT5zY19ldmVu dHNbaXJxXTsKKwkJCWlmIChldmVudCAhPSBOVUxMICYmICFUQUlMUV9FTVBUWSgmZXZlbnQtPmll X2hhbmRsZXJzKSkKKwkJCQlpbnRyX2V2ZW50X2hhbmRsZShldmVudCwgTlVMTCk7CisJCQllbHNl IHsKKwkJCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsICJTdHJheSBJUlEgJWRcbiIsCisJCQkJ ICAgIGlycSk7CisJCQl9CisKKwkJCS8qIENsZWFyIHRoZSBTdGF0dXMgYml0IGJ5IHdyaXRpbmcg JzEnIHRvIGl0LiAqLworCQkJQkNNX0dQSU9fV1JJVEUoc2MsIEJDTV9HUElPX0dQRURTKGJhbmsp LCBtYXNrKTsKKwkJfQorCX0KKworCXJldHVybiAoRklMVEVSX0hBTkRMRUQpOworfQorCiBzdGF0 aWMgcGhhbmRsZV90CiBiY21fZ3Bpb19nZXRfbm9kZShkZXZpY2VfdCBidXMsIGRldmljZV90IGRl dikKIHsKQEAgLTc5MCw2ICsxMDkwLDEzIEBACiAJREVWTUVUSE9EKGdwaW9fcGluX3NldCwJCWJj bV9ncGlvX3Bpbl9zZXQpLAogCURFVk1FVEhPRChncGlvX3Bpbl90b2dnbGUsCWJjbV9ncGlvX3Bp bl90b2dnbGUpLAogCisJLyogQnVzIGludGVyZmFjZSAqLworCURFVk1FVEhPRChidXNfYWN0aXZh dGVfcmVzb3VyY2UsCWJjbV9ncGlvX2FjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZNRVRIT0QoYnVz X2RlYWN0aXZhdGVfcmVzb3VyY2UsCWJjbV9ncGlvX2RlYWN0aXZhdGVfcmVzb3VyY2UpLAorCURF Vk1FVEhPRChidXNfY29uZmlnX2ludHIsCWJjbV9ncGlvX2NvbmZpZ19pbnRyKSwKKwlERVZNRVRI T0QoYnVzX3NldHVwX2ludHIsCWJjbV9ncGlvX3NldHVwX2ludHIpLAorCURFVk1FVEhPRChidXNf dGVhcmRvd25faW50ciwJYmNtX2dwaW9fdGVhcmRvd25faW50ciksCisKIAkvKiBvZndfYnVzIGlu dGVyZmFjZSAqLwogCURFVk1FVEhPRChvZndfYnVzX2dldF9ub2RlLAliY21fZ3Bpb19nZXRfbm9k ZSksCiAK --001a11c335ce38a5b404f96138f2 Content-Type: text/plain; charset=US-ASCII; name="gpio-intr.diff" Content-Disposition: attachment; filename="gpio-intr.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hv6zeuus3 SW5kZXg6IHN5cy9jb25mL2ZpbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jb25mL2ZpbGVzCShyZXZp c2lvbiAyNjU4MTcpCisrKyBzeXMvY29uZi9maWxlcwkod29ya2luZyBjb3B5KQpAQCAtMTM5Nyw5 ICsxMzk3LDggQEAKIGRldi9nZW0vaWZfZ2VtX3NidXMuYwkJb3B0aW9uYWwgZ2VtIHNidXMKIGRl di9ncGlvL2dwaW9idXMuYwkJb3B0aW9uYWwgZ3BpbwkJCQlcCiAJZGVwZW5kZW5jeQkiZ3Bpb2J1 c19pZi5oIgotZGV2L2dwaW8vZ3Bpb2MuYwkJb3B0aW9uYWwgZ3BpbwkJCQlcCi0JZGVwZW5kZW5j eQkiZ3Bpb19pZi5oIgogZGV2L2dwaW8vZ3Bpb2lpYy5jCQlvcHRpb25hbCBncGlvaWljCitkZXYv Z3Bpby9ncGlvaW50ci5jCQlvcHRpb25hbCBncGlvaW50cgogZGV2L2dwaW8vZ3Bpb2xlZC5jCQlv cHRpb25hbCBncGlvbGVkCiBkZXYvZ3Bpby9ncGlvX2lmLm0JCW9wdGlvbmFsIGdwaW8KIGRldi9n cGlvL2dwaW9idXNfaWYubQkJb3B0aW9uYWwgZ3BpbwpJbmRleDogc3lzL2Rldi9ncGlvL2dwaW9i dXMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2dwaW8vZ3Bpb2J1cy5jCShyZXZpc2lvbiAyNjU4 MTcpCisrKyBzeXMvZGV2L2dwaW8vZ3Bpb2J1cy5jCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz MCw4IEBACiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CiAj aW5jbHVkZSA8c3lzL2J1cy5oPgorI2luY2x1ZGUgPHN5cy9jb25mLmg+CisjaW5jbHVkZSA8c3lz L2dwaW8uaD4KICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiAjaW5jbHVkZSA8c3lzL21hbGxvYy5o PgogI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4KQEAgLTM4LDYgKzQwLDEzIEBACiAKICNpbmNsdWRl ICJncGlvYnVzX2lmLmgiCiAKKyN1bmRlZiBHUElPQlVTX0RFQlVHCisjaWZkZWYgR1BJT0JVU19E RUJVRworI2RlZmluZQlkcHJpbnRmIHByaW50ZgorI2Vsc2UKKyNkZWZpbmUJZHByaW50Zih4LCBh cmcuLi4pCisjZW5kaWYKKwogc3RhdGljIGludCBncGlvYnVzX3BhcnNlX3BpbnMoc3RydWN0IGdw aW9idXNfc29mdGMgKiwgZGV2aWNlX3QsIGludCk7CiBzdGF0aWMgaW50IGdwaW9idXNfcHJvYmUo ZGV2aWNlX3QpOwogc3RhdGljIGludCBncGlvYnVzX2F0dGFjaChkZXZpY2VfdCk7CkBAIC02NCw2 ICs3MywyNCBAQAogc3RhdGljIGludCBncGlvYnVzX3Bpbl9nZXQoZGV2aWNlX3QsIGRldmljZV90 LCB1aW50MzJfdCwgdW5zaWduZWQgaW50Kik7CiBzdGF0aWMgaW50IGdwaW9idXNfcGluX3RvZ2ds ZShkZXZpY2VfdCwgZGV2aWNlX3QsIHVpbnQzMl90KTsKIAorc3RhdGljIGRfaW9jdGxfdCBncGlv YnVzX2lvY3RsOworc3RhdGljIGRfa3FmaWx0ZXJfdCBncGlvYnVzX2txZmlsdGVyOworc3RhdGlj IHZvaWQgZ3Bpb2J1c19maWx0X2RldGFjaChzdHJ1Y3Qga25vdGUgKmtuKTsKK3N0YXRpYyBpbnQg Z3Bpb2J1c19maWx0X3JlYWQoc3RydWN0IGtub3RlICprbiwgbG9uZyBoaW50KTsKKworc3RhdGlj IHN0cnVjdCBjZGV2c3cgZ3Bpb2J1c19jZGV2c3cgPSB7CisJLmRfdmVyc2lvbiAgICAgID0gRF9W RVJTSU9OLAorCS5kX2lvY3RsICAgICAgICA9IGdwaW9idXNfaW9jdGwsCisJLmRfa3FmaWx0ZXIJ PSBncGlvYnVzX2txZmlsdGVyLAorCS5kX25hbWUgICAgICAgICA9ICJncGlvYyIsCit9OworCitz dHJ1Y3QgZmlsdGVyb3BzIGdwaW9idXNfcmZpbHRvcHMgPSB7CisJLmZfaXNmZCA9IDEsCisJLmZf ZGV0YWNoID0gZ3Bpb2J1c19maWx0X2RldGFjaCwKKwkuZl9ldmVudCA9IGdwaW9idXNfZmlsdF9y ZWFkLAorfTsKKwogdm9pZAogZ3Bpb2J1c19wcmludF9waW5zKHN0cnVjdCBncGlvYnVzX2l2YXIg KmRldmkpCiB7CkBAIC05OSw2ICsxMjYsNjIgQEAKIAkJcHJpbnRmKCIlZCIsIHJhbmdlX3N0YXJ0 KTsKIH0KIAoraW50CitncGlvYnVzX2luaXRfc29mdGMoZGV2aWNlX3QgZGV2KQoreworCXN0cnVj dCBncGlvYnVzX3NvZnRjICpzYzsKKwlpbnQgaTsKKworIAlzYyA9IEdQSU9CVVNfU09GVEMoZGV2 KTsKKwlzYy0+c2NfYnVzZGV2ID0gZGV2OworCXNjLT5zY19kZXYgPSBkZXZpY2VfZ2V0X3BhcmVu dChkZXYpOworCXNjLT5zY19pbnRyX3JtYW4ucm1fdHlwZSA9IFJNQU5fQVJSQVk7CisJc2MtPnNj X2ludHJfcm1hbi5ybV9kZXNjciA9ICJHUElPIEludGVycnVwdHMiOworCWlmIChybWFuX2luaXQo JnNjLT5zY19pbnRyX3JtYW4pICE9IDAgfHwKKwkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+ c2NfaW50cl9ybWFuLCAwLCB+MCkgIT0gMCkKKwkJcGFuaWMoIiVzOiBmYWlsZWQgdG8gc2V0IHVw IHJtYW4uIiwgX19mdW5jX18pOworCisJaWYgKEdQSU9fUElOX01BWChzYy0+c2NfZGV2LCAmc2Mt PnNjX25waW5zKSAhPSAwKQorCQlyZXR1cm4gKEVOWElPKTsKKworCUtBU1NFUlQoc2MtPnNjX25w aW5zICE9IDAsICgiR1BJTyBkZXZpY2Ugd2l0aCBubyBwaW5zIikpOworCisJLyogSW5jcmVhc2Ug dGhlIG51bWJlciBvZiBwaW5zLiAqLworCXNjLT5zY19ucGlucysrOworCisJLyogQWxsb2MgdGhl IHBpbiBkYXRhLiAqLworCXNjLT5zY19waW5zID0gbWFsbG9jKHNpemVvZigqc2MtPnNjX3BpbnMp ICogc2MtPnNjX25waW5zLCBNX0RFVkJVRiwKKwkgICAgTV9OT1dBSVQgfCBNX1pFUk8pOworCWlm IChzYy0+c2NfcGlucyA9PSBOVUxMKQorCQlyZXR1cm4gKEVOT01FTSk7CisJc2MtPnNjX3Bpbl9h cmcgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBncGlvYnVzX3Bpbl9hcmcpICogc2MtPnNjX25waW5z LAorCSAgICBNX0RFVkJVRiwgTV9OT1dBSVQgfCBNX1pFUk8pOworCWlmIChzYy0+c2NfcGluX2Fy ZyA9PSBOVUxMKSB7CisJCWZyZWUoc2MtPnNjX3BpbnMsIE1fREVWQlVGKTsKKwkJcmV0dXJuIChF Tk9NRU0pOworCX0KKworCS8qIENyZWF0ZSB0aGUgZ3Bpb2MlZCBkZXZpY2UuICovCisJc2MtPnNj X2N0bF9kZXYgPSBtYWtlX2RldigmZ3Bpb2J1c19jZGV2c3csIGRldmljZV9nZXRfdW5pdChkZXYp LAorCSAgICBVSURfUk9PVCwgR0lEX1dIRUVMLCAwNjAwLCAiZ3Bpb2MlZCIsIGRldmljZV9nZXRf dW5pdChkZXYpKTsKKwlpZiAoc2MtPnNjX2N0bF9kZXYgPT0gTlVMTCkgeworCQlwcmludGYoIkZh aWxlZCB0byBjcmVhdGUgZ3Bpb2MlZCIsIGRldmljZV9nZXRfdW5pdChkZXYpKTsKKwkJZnJlZShz Yy0+c2NfcGluX2FyZywgTV9ERVZCVUYpOworCQlmcmVlKHNjLT5zY19waW5zLCBNX0RFVkJVRik7 CisJCXJldHVybiAoRU5YSU8pOworCX0KKwlzYy0+c2NfY3RsX2Rldi0+c2lfZHJ2MSA9IHNjOwor CisJLyogSW5pdGlhbGl6ZSB0aGUgYnVzIGxvY2suICovCisJR1BJT0JVU19MT0NLX0lOSVQoc2Mp OworCisJLyogSW5pdGlhbGl6ZSB0aGUgcGlucyBrbmxpc3QuICovCisJZm9yIChpID0gMDsgaSA8 IHNjLT5zY19ucGluczsgaSsrKQorCQlrbmxpc3RfaW5pdF9tdHgoJnNjLT5zY19waW5zW2ldLnNl bC5zaV9ub3RlLCAmc2MtPnNjX210eCk7CisKKwlyZXR1cm4gKDApOworfQorCiBzdGF0aWMgaW50 CiBncGlvYnVzX3BhcnNlX3BpbnMoc3RydWN0IGdwaW9idXNfc29mdGMgKnNjLCBkZXZpY2VfdCBj aGlsZCwgaW50IG1hc2spCiB7CkBAIC0xNDAsMTMgKzIyMywxMyBAQAogCQkvKgogCQkgKiBNYXJr IHBpbiBhcyBtYXBwZWQgYW5kIGdpdmUgd2FybmluZyBpZiBpdCdzIGFscmVhZHkgbWFwcGVkCiAJ CSAqLwotCQlpZiAoc2MtPnNjX3BpbnNfbWFwcGVkW2ldKSB7CisJCWlmIChzYy0+c2NfcGluc1tp XS5tYXBwZWQpIHsKIAkJCWRldmljZV9wcmludGYoY2hpbGQsIAogCQkJICAgICJ3YXJuaW5nOiBw aW4gJWQgaXMgYWxyZWFkeSBtYXBwZWRcbiIsIGkpOwogCQkJZnJlZShkZXZpLT5waW5zLCBNX0RF VkJVRik7CiAJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KLQkJc2MtPnNjX3BpbnNfbWFwcGVkW2ld ID0gMTsKKwkJc2MtPnNjX3BpbnNbaV0ubWFwcGVkID0gMTsKIAl9CiAKIAlyZXR1cm4gKDApOwpA QCAtMTUzLDQxICsyMzYsMTQ3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWdwaW9idXNfcHJvYmUoZGV2 aWNlX3QgZGV2KQorZ3Bpb2J1c19rcWZpbHRlcihzdHJ1Y3QgY2RldiAqY2Rldiwgc3RydWN0IGtu b3RlICprbikKIHsKLQlkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiR1BJTyBidXMiKTsKKwlpbnQgcGlu OworCXN0cnVjdCBncGlvYnVzX3NvZnRjICpzYzsKIAotCXJldHVybiAoQlVTX1BST0JFX0dFTkVS SUMpOworCXNjID0gKHN0cnVjdCBncGlvYnVzX3NvZnRjICopY2Rldi0+c2lfZHJ2MTsKKwlwaW4g PSBrbi0+a25fc2RhdGE7CisKKwkvKiBDaGVjayBpZiB3ZSBhcmUgbW9uaXRvcmluZyBhIHZhbGlk IGludGVycnVwdC4gKi8KKwlpZiAoc2MtPnNjX3Bpbl9hcmdbcGluXS5zYyAhPSBzYykKKwkJcmV0 dXJuIChFSU5WQUwpOworCisJc3dpdGNoIChrbi0+a25fZmlsdGVyKSB7CisJY2FzZSBFVkZJTFRf UkVBRDoKKwkJa24tPmtuX2hvb2sgPSAmc2MtPnNjX3Bpbl9hcmdbcGluXTsKKwkJa24tPmtuX2Zv cCA9ICZncGlvYnVzX3JmaWx0b3BzOworCQlrbmxpc3RfYWRkKCZzYy0+c2NfcGluc1twaW5dLnNl bC5zaV9ub3RlLCBrbiwgMCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAoRUlOVkFM KTsKKwl9CisKKwlyZXR1cm4gKDApOwogfQogCitzdGF0aWMgdm9pZAorZ3Bpb2J1c19maWx0X2Rl dGFjaChzdHJ1Y3Qga25vdGUgKmtuKQoreworCWludCBwaW47CisJc3RydWN0IGdwaW9idXNfc29m dGMgKnNjOworCXN0cnVjdCBncGlvYnVzX3Bpbl9hcmcgKmFyZzsKKworCWFyZyA9IChzdHJ1Y3Qg Z3Bpb2J1c19waW5fYXJnICopa24tPmtuX2hvb2s7CisJc2MgPSBhcmctPnNjOworCXBpbiA9IGFy Zy0+cGluOworCWtubGlzdF9yZW1vdmUoJnNjLT5zY19waW5zW3Bpbl0uc2VsLnNpX25vdGUsIGtu LCAwKTsKK30KKwogc3RhdGljIGludAotZ3Bpb2J1c19hdHRhY2goZGV2aWNlX3QgZGV2KQorZ3Bp b2J1c19maWx0X3JlYWQoc3RydWN0IGtub3RlICprbiwgbG9uZyBoaW50KQogewotCXN0cnVjdCBn cGlvYnVzX3NvZnRjICpzYyA9IEdQSU9CVVNfU09GVEMoZGV2KTsKLQlpbnQgcmVzOworCXN0YXRp YyBsb25nIGxhc3QgPSAtMTsKKwlpbnQgbm90aWZ5OwogCi0Jc2MtPnNjX2J1c2RldiA9IGRldjsK LQlzYy0+c2NfZGV2ID0gZGV2aWNlX2dldF9wYXJlbnQoZGV2KTsKLQlyZXMgPSBHUElPX1BJTl9N QVgoc2MtPnNjX2RldiwgJnNjLT5zY19ucGlucyk7Ci0JaWYgKHJlcykKLQkJcmV0dXJuIChFTlhJ Tyk7CisJaWYgKGhpbnQgPiAwKQorCQkvKiBSZXR1cm4gdGhlIG9yaWdpbmFsIHBpbiB2YWx1ZS4g Ki8KKwkJa24tPmtuX2RhdGEgPSBoaW50IC0gMTsKIAotCUtBU1NFUlQoc2MtPnNjX25waW5zICE9 IDAsICgiR1BJTyBkZXZpY2Ugd2l0aCBubyBwaW5zIikpOworCWlmIChoaW50ID4gMCB8fCBsYXN0 ID4gMCkKKwkJbm90aWZ5ID0gMTsKKwllbHNlCisJCW5vdGlmeSA9IDA7CiAKLQkvKgotCSAqIElu Y3JlYXNlIHRvIGdldCBudW1iZXIgb2YgcGlucwotCSAqLwotCXNjLT5zY19ucGlucysrOworCWxh c3QgPSBoaW50OwogCi0Jc2MtPnNjX3BpbnNfbWFwcGVkID0gbWFsbG9jKHNpemVvZihpbnQpICog c2MtPnNjX25waW5zLCBNX0RFVkJVRiwgCi0JICAgIE1fTk9XQUlUIHwgTV9aRVJPKTsKKwlyZXR1 cm4gKG5vdGlmeSk7Cit9CiAKLQlpZiAoIXNjLT5zY19waW5zX21hcHBlZCkKLQkJcmV0dXJuIChF Tk9NRU0pOworc3RhdGljIGludCAKK2dwaW9idXNfaW9jdGwoc3RydWN0IGNkZXYgKmNkZXYsIHVf bG9uZyBjbWQsIGNhZGRyX3QgYXJnLCBpbnQgZmZsYWcsIAorICAgIHN0cnVjdCB0aHJlYWQgKnRk KQoreworCWludCBtYXhfcGluLCByZXM7CisJc3RydWN0IGdwaW9idXNfc29mdGMgKnNjOworCXN0 cnVjdCBncGlvX3BpbiBwaW47CisJc3RydWN0IGdwaW9fcmVxIHJlcTsKIAotCS8qIGluaXQgYnVz IGxvY2sgKi8KLQlHUElPQlVTX0xPQ0tfSU5JVChzYyk7CisJc2MgPSBjZGV2LT5zaV9kcnYxOwor CUdQSU9CVVNfTE9DSyhzYyk7CisJc3dpdGNoIChjbWQpIHsKKwkJY2FzZSBHUElPTUFYUElOOgor CQkJbWF4X3BpbiA9IC0xOworCQkJcmVzID0gR1BJT19QSU5fTUFYKHNjLT5zY19kZXYsICZtYXhf cGluKTsKKwkJCWJjb3B5KCZtYXhfcGluLCBhcmcsIHNpemVvZihtYXhfcGluKSk7CisJCQlicmVh azsKKwkJY2FzZSBHUElPR0VUQ09ORklHOgorCQkJYmNvcHkoYXJnLCAmcGluLCBzaXplb2YocGlu KSk7CisJCQlkcHJpbnRmKCJnZXQgY29uZmlnIHBpbiAlZFxuIiwgcGluLmdwX3Bpbik7CisJCQly ZXMgPSBHUElPX1BJTl9HRVRGTEFHUyhzYy0+c2NfZGV2LCBwaW4uZ3BfcGluLAorCQkJICAgICZw aW4uZ3BfZmxhZ3MpOworCQkJLyogRmFpbCBlYXJseSAqLworCQkJaWYgKHJlcykKKwkJCQlicmVh azsKKwkJCUdQSU9fUElOX0dFVENBUFMoc2MtPnNjX2RldiwgcGluLmdwX3BpbiwgJnBpbi5ncF9j YXBzKTsKKwkJCUdQSU9fUElOX0dFVE5BTUUoc2MtPnNjX2RldiwgcGluLmdwX3BpbiwgcGluLmdw X25hbWUpOworCQkJYmNvcHkoJnBpbiwgYXJnLCBzaXplb2YocGluKSk7CisJCQlicmVhazsKKwkJ Y2FzZSBHUElPU0VUQ09ORklHOgorCQkJYmNvcHkoYXJnLCAmcGluLCBzaXplb2YocGluKSk7CisJ CQlkcHJpbnRmKCJzZXQgY29uZmlnIHBpbiAlZFxuIiwgcGluLmdwX3Bpbik7CisJCQlyZXMgPSBH UElPX1BJTl9TRVRGTEFHUyhzYy0+c2NfZGV2LCBwaW4uZ3BfcGluLAorCQkJICAgIHBpbi5ncF9m bGFncyk7CisJCQlicmVhazsKKwkJY2FzZSBHUElPR0VUOgorCQkJYmNvcHkoYXJnLCAmcmVxLCBz aXplb2YocmVxKSk7CisJCQlyZXMgPSBHUElPX1BJTl9HRVQoc2MtPnNjX2RldiwgcmVxLmdwX3Bp biwKKwkJCSAgICAmcmVxLmdwX3ZhbHVlKTsKKwkJICAgICAgICBkcHJpbnRmKCJyZWFkIHBpbiAl ZCAtPiAlZFxuIiwgCisJCQkgICAgcmVxLmdwX3BpbiwgcmVxLmdwX3ZhbHVlKTsKKwkJCWJjb3B5 KCZyZXEsIGFyZywgc2l6ZW9mKHJlcSkpOworCQkJYnJlYWs7CisJCWNhc2UgR1BJT1NFVDoKKwkJ CWJjb3B5KGFyZywgJnJlcSwgc2l6ZW9mKHJlcSkpOworCQkJcmVzID0gR1BJT19QSU5fU0VUKHNj LT5zY19kZXYsIHJlcS5ncF9waW4sIAorCQkJICAgIHJlcS5ncF92YWx1ZSk7CisJCQlkcHJpbnRm KCJ3cml0ZSBwaW4gJWQgLT4gJWRcbiIsIAorCQkJICAgIHJlcS5ncF9waW4sIHJlcS5ncF92YWx1 ZSk7CisJCQlicmVhazsKKwkJY2FzZSBHUElPVE9HR0xFOgorCQkJYmNvcHkoYXJnLCAmcmVxLCBz aXplb2YocmVxKSk7CisJCQlkcHJpbnRmKCJ0b2dnbGUgcGluICVkXG4iLCAKKwkJCSAgICByZXEu Z3BfcGluKTsKKwkJCXJlcyA9IEdQSU9fUElOX1RPR0dMRShzYy0+c2NfZGV2LCByZXEuZ3BfcGlu KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJR1BJT0JVU19VTkxPQ0soc2MpOworCQkJcmV0 dXJuIChFTk9UVFkpOworCQkJYnJlYWs7CisJfQorCUdQSU9CVVNfVU5MT0NLKHNjKTsKIAorCXJl dHVybiAocmVzKTsKK30KKworc3RhdGljIGludAorZ3Bpb2J1c19wcm9iZShkZXZpY2VfdCBkZXYp Cit7CisJZGV2aWNlX3NldF9kZXNjKGRldiwgIkdQSU8gYnVzIik7CisKKwlyZXR1cm4gKEJVU19Q Uk9CRV9HRU5FUklDKTsKK30KKworc3RhdGljIGludAorZ3Bpb2J1c19hdHRhY2goZGV2aWNlX3Qg ZGV2KQoreworCWludCBlcnI7CisKKwllcnIgPSBncGlvYnVzX2luaXRfc29mdGMoZGV2KTsKKwlp ZiAoZXJyICE9IDApCisJCXJldHVybiAoZXJyKTsKKwogCS8qCiAJICogR2V0IHBhcmVudCdzIHBp bnMgYW5kIG1hcmsgdGhlbSBhcyB1bm1hcHBlZAogCSAqLwpAQCAtMjE0LDYgKzQwMyw5IEBACiAJ ICAgICgiZ3Bpb2J1cyBtdXRleCBub3QgaW5pdGlhbGl6ZWQiKSk7CiAJR1BJT0JVU19MT0NLX0RF U1RST1koc2MpOwogCisJaWYgKHNjLT5zY19jdGxfZGV2KQorCQlkZXN0cm95X2RldihzYy0+c2Nf Y3RsX2Rldik7CisKIAlpZiAoKGVyciA9IGJ1c19nZW5lcmljX2RldGFjaChkZXYpKSAhPSAwKQog CQlyZXR1cm4gKGVycik7CiAKQEAgLTIyOSwxMCArNDIxLDE0IEBACiAJfQogCWZyZWUoZGV2bGlz dCwgTV9URU1QKTsKIAotCWlmIChzYy0+c2NfcGluc19tYXBwZWQpIHsKLQkJZnJlZShzYy0+c2Nf cGluc19tYXBwZWQsIE1fREVWQlVGKTsKLQkJc2MtPnNjX3BpbnNfbWFwcGVkID0gTlVMTDsKKwlp ZiAoc2MtPnNjX3Bpbl9hcmcpIHsKKwkJZnJlZShzYy0+c2NfcGluX2FyZywgTV9ERVZCVUYpOwor CQlzYy0+c2NfcGluX2FyZyA9IE5VTEw7CiAJfQorCWlmIChzYy0+c2NfcGlucykgeworCQlmcmVl KHNjLT5zY19waW5zLCBNX0RFVkJVRik7CisJCXNjLT5zY19waW5zID0gTlVMTDsKKwl9CiAKIAly ZXR1cm4gKDApOwogfQpAQCAtMjYwLDYgKzQ1Niw3IEBACiAJcmV0dmFsICs9IGJ1c19wcmludF9j aGlsZF9oZWFkZXIoZGV2LCBjaGlsZCk7CiAJcmV0dmFsICs9IHByaW50ZigiIGF0IHBpbihzKSAi KTsKIAlncGlvYnVzX3ByaW50X3BpbnMoZGV2aSk7CisJcmVzb3VyY2VfbGlzdF9wcmludF90eXBl KCZkZXZpLT5ybCwgImlycSIsIFNZU19SRVNfSVJRLCAiJWxkIik7CiAJcmV0dmFsICs9IGJ1c19w cmludF9jaGlsZF9mb290ZXIoZGV2LCBjaGlsZCk7CiAKIAlyZXR1cm4gKHJldHZhbCk7CkBAIC0y OTcsNiArNDk0LDcgQEAKIAkJZGV2aWNlX2RlbGV0ZV9jaGlsZChkZXYsIGNoaWxkKTsKIAkJcmV0 dXJuICgwKTsKIAl9CisJcmVzb3VyY2VfbGlzdF9pbml0KCZkZXZpLT5ybCk7CiAJZGV2aWNlX3Nl dF9pdmFycyhjaGlsZCwgZGV2aSk7CiAJcmV0dXJuIChjaGlsZCk7CiB9CkBAIC0zMDcsMTYgKzUw NSw0MiBAQAogCXN0cnVjdCBncGlvYnVzX3NvZnRjICpzYyA9IEdQSU9CVVNfU09GVEMoYnVzKTsK IAlzdHJ1Y3QgZ3Bpb2J1c19pdmFyICpkZXZpOwogCWRldmljZV90IGNoaWxkOwotCWludCBwaW5z OworCWludCBpcnEsIHBpbnM7CiAKLQogCWNoaWxkID0gQlVTX0FERF9DSElMRChidXMsIDAsIGRu YW1lLCBkdW5pdCk7CiAJZGV2aSA9IEdQSU9CVVNfSVZBUihjaGlsZCk7CiAJcmVzb3VyY2VfaW50 X3ZhbHVlKGRuYW1lLCBkdW5pdCwgInBpbnMiLCAmcGlucyk7CiAJaWYgKGdwaW9idXNfcGFyc2Vf cGlucyhzYywgY2hpbGQsIHBpbnMpKQogCQlkZXZpY2VfZGVsZXRlX2NoaWxkKGJ1cywgY2hpbGQp OworCWlmIChyZXNvdXJjZV9pbnRfdmFsdWUoZG5hbWUsIGR1bml0LCAiaXJxIiwgJmlycSkgPT0g MCkgeworCQlpZiAoYnVzX3NldF9yZXNvdXJjZShjaGlsZCwgU1lTX1JFU19JUlEsIDAsIGlycSwg MSkgIT0gMCkKKwkJCWRldmljZV9wcmludGYoYnVzLAorCQkJICAgICJ3YXJuaW5nOiBidXNfc2V0 X3Jlc291cmNlKCkgZmFpbGVkXG4iKTsKKwl9CiB9CiAKK3N0YXRpYyBpbnQKK2dwaW9idXNfc2V0 X3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlk LAorICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGNvdW50KQoreworCXN0cnVjdCBncGlvYnVzX2l2 YXIgKmRldmk7CisJc3RydWN0IHJlc291cmNlX2xpc3QgKnJsOworCXN0cnVjdCByZXNvdXJjZV9s aXN0X2VudHJ5ICpybGU7CisKKwlkZXZpID0gR1BJT0JVU19JVkFSKGNoaWxkKTsKKwlybCA9ICZk ZXZpLT5ybDsKKworCWRwcmludGYoIiVzOiBlbnRyeSAoJXAsICVwLCAlZCwgJWQsICVwLCAlbGQp XG4iLAorCSAgICBfX2Z1bmNfXywgZGV2LCBjaGlsZCwgdHlwZSwgcmlkLCAodm9pZCAqKShpbnRw dHJfdClzdGFydCwgY291bnQpOworCisJcmxlID0gcmVzb3VyY2VfbGlzdF9hZGQocmwsIHR5cGUs IHJpZCwgc3RhcnQsIHN0YXJ0ICsgY291bnQgLSAxLAorCSAgICBjb3VudCk7CisJaWYgKHJsZSA9 PSBOVUxMKQorCQlyZXR1cm4gKEVOWElPKTsKKworCXJldHVybiAoMCk7Cit9CisKIHN0YXRpYyB2 b2lkCiBncGlvYnVzX2xvY2tfYnVzKGRldmljZV90IGJ1c2RldikKIHsKQEAgLTQ0Myw2ICs2Njcs MTgwIEBACiAJcmV0dXJuIEdQSU9fUElOX1RPR0dMRShzYy0+c2NfZGV2LCBkZXZpLT5waW5zW3Bp bl0pOwogfQogCitzdGF0aWMgaW50CitncGlvYnVzX2ludHJfZmlsdGVyKHZvaWQgKmFyZykKK3sK KwlpbnQgcGluOworCXN0cnVjdCBncGlvYnVzX3Bpbl9hcmcgKmludHI7CisJc3RydWN0IGdwaW9i dXNfc29mdGMgKnNjOworCXN0cnVjdCBpbnRyX2V2ZW50ICpldmVudDsKKworCWludHIgPSAoc3Ry dWN0IGdwaW9idXNfcGluX2FyZyAqKWFyZzsKKwlzYyA9IGludHItPnNjOworCXBpbiA9IGludHIt PnBpbjsKKworCWV2ZW50ID0gc2MtPnNjX3BpbnNbcGluXS5ldmVudDsKKwlpZiAoZXZlbnQgPT0g TlVMTCB8fCBUQUlMUV9FTVBUWSgmZXZlbnQtPmllX2hhbmRsZXJzKSkgeworCQlkZXZpY2VfcHJp bnRmKHNjLT5zY19kZXYsICJTdHJheSBJUlEgJWRcbiIsIHBpbik7CisJCXJldHVybiAoRklMVEVS X0hBTkRMRUQpOworCX0KKworCWludHJfZXZlbnRfaGFuZGxlKGV2ZW50LCBOVUxMKTsKKworCXJl dHVybiAoRklMVEVSX1NDSEVEVUxFX1RIUkVBRCk7Cit9CisKK3N0YXRpYyB2b2lkCitncGlvYnVz X2ludHJfaXRocmVhZCh2b2lkICphcmcpCit7CisJaW50IHBpbjsKKwlzdHJ1Y3QgZ3Bpb2J1c19w aW5fYXJnICppbnRyOworCXN0cnVjdCBncGlvYnVzX3NvZnRjICpzYzsKKworCWludHIgPSAoc3Ry dWN0IGdwaW9idXNfcGluX2FyZyAqKWFyZzsKKwlzYyA9IGludHItPnNjOworCXBpbiA9IGludHIt PnBpbjsKKworCS8qIEFkZCAxIHRvIEdQSU8gcGluLCBhbGxvd2luZyB0aGUgdXNlIG9mIHBpbiAw LiAqLworCUtOT1RFX1VOTE9DS0VEKCZzYy0+c2NfcGluc1twaW5dLnNlbC5zaV9ub3RlLCBwaW4g KyAxKTsKK30KKworc3RhdGljIGludAorZ3Bpb2J1c19zZXR1cF9pbnRyKGRldmljZV90IGRldiwg ZGV2aWNlX3QgY2hpbGQsIHN0cnVjdCByZXNvdXJjZSAqaXJlcywKKwlpbnQgZmxhZ3MsIGRyaXZl cl9maWx0ZXJfdCAqZmlsdCwgZHJpdmVyX2ludHJfdCAqaGFuZGxlciwKKwl2b2lkICphcmcsIHZv aWQgKipjb29raWVwKQoreworCXN0cnVjdCBncGlvYnVzX3NvZnRjICpzYzsKKwlzdHJ1Y3QgaW50 cl9ldmVudCAqZXZlbnQ7CisJaW50IHBpbiwgZXJyb3I7CisKKwlzYyA9IEdQSU9CVVNfU09GVEMo ZGV2KTsKKwlwaW4gPSBybWFuX2dldF9zdGFydChpcmVzKTsKKworCWlmIChwaW4gPiBzYy0+c2Nf bnBpbnMpCisJCXBhbmljKCIlczogYmFkIHBpbiAlZCAobWF4OiAlZCkiLCBfX2Z1bmNfXywgcGlu LCBzYy0+c2NfbnBpbnMpOworCisJLyogU2V0dXAgdGhlIGNoaWxkIGludGVycnVwdCBmaWx0ZXIv aGFuZGxlci4gKi8KKwlldmVudCA9IHNjLT5zY19waW5zW3Bpbl0uZXZlbnQ7CisJaWYgKGV2ZW50 ID09IE5VTEwpIHsKKwkJZXJyb3IgPSBpbnRyX2V2ZW50X2NyZWF0ZSgmZXZlbnQsICh2b2lkICop KHVpbnRwdHJfdClwaW4sIDAsCisJCSAgICBwaW4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICJn cGlvYnVzJWQgcGluJWQ6IiwKKwkJICAgIGRldmljZV9nZXRfdW5pdChkZXYpLCBwaW4pOworCisJ CWlmIChlcnJvciAhPSAwKQorCQkJcmV0dXJuIChlcnJvcik7CisKKwkJc2MtPnNjX3BpbnNbcGlu XS5ldmVudCA9IGV2ZW50OworCX0KKworCWludHJfZXZlbnRfYWRkX2hhbmRsZXIoZXZlbnQsIGRl dmljZV9nZXRfbmFtZXVuaXQoY2hpbGQpLCBmaWx0LAorCSAgICBoYW5kbGVyLCBhcmcsIGludHJf cHJpb3JpdHkoZmxhZ3MpLCBmbGFncywgY29va2llcCk7CisKKwlzYy0+c2NfcGluX2FyZ1twaW5d LnNjID0gc2M7CisJc2MtPnNjX3Bpbl9hcmdbcGluXS5waW4gPSBwaW47CisKKwkvKiBBbmQgbm93 IHJlZ2lzdGVyIG91ciBpbnRlcnJ1cHQgZmlsdGVyLiAqLworCXJldHVybiAoQlVTX1NFVFVQX0lO VFIoZGV2aWNlX2dldF9wYXJlbnQoZGV2KSwgY2hpbGQsIGlyZXMsIGZsYWdzLAorCSAgICBncGlv YnVzX2ludHJfZmlsdGVyLCBncGlvYnVzX2ludHJfaXRocmVhZCwgJnNjLT5zY19waW5fYXJnW3Bp bl0sCisJICAgICZzYy0+c2NfcGluc1twaW5dLmlycV9oZGwpKTsKK30KKworc3RhdGljIGludAor Z3Bpb2J1c190ZWFyZG93bl9pbnRyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIHN0cnVj dCByZXNvdXJjZSAqaXJlcywKKwl2b2lkICpjb29raWUpCit7CisJc3RydWN0IGdwaW9idXNfc29m dGMgKnNjOworCWludCBwaW4sIGVycjsKKworCXNjID0gR1BJT0JVU19TT0ZUQyhkZXYpOworCXBp biA9IHJtYW5fZ2V0X3N0YXJ0KGlyZXMpOworCisJaWYgKHBpbiA+IHNjLT5zY19ucGlucykKKwkJ cGFuaWMoIiVzOiBiYWQgcGluICVkIChtYXggJWQpIiwgX19mdW5jX18sIHBpbiwgc2MtPnNjX25w aW5zKTsKKworCWlmIChzYy0+c2NfcGluc1twaW5dLmV2ZW50ID09IE5VTEwpCisJCXBhbmljKCJU cnlpbmcgdG8gdGVhcmRvd24gdW5vY2N1cGllZCBJUlEiKTsKKworCWVyciA9IGludHJfZXZlbnRf cmVtb3ZlX2hhbmRsZXIoY29va2llKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gKGVycik7CisJc2Mt PnNjX3BpbnNbcGluXS5ldmVudCA9IE5VTEw7CisKKwlyZXR1cm4gKEJVU19URUFSRE9XTl9JTlRS KGRldmljZV9nZXRfcGFyZW50KGRldiksIGNoaWxkLCBpcmVzLAorCSAgICAmc2MtPnNjX3BpbnNb cGluXS5pcnFfaGRsKSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKgorZ3Bpb2J1c19h bGxvY19yZXNvdXJjZShkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50 ICpyaWQsCisgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50 IGZsYWdzKQoreworCXN0cnVjdCBncGlvYnVzX3NvZnRjICpzYzsKKwlzdHJ1Y3QgcmVzb3VyY2Ug KnJ2OworCXN0cnVjdCByZXNvdXJjZV9saXN0ICpybDsKKwlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9l bnRyeSAqcmxlOworCWludCBpc2RlZmF1bHQ7CisKKwlpZiAodHlwZSAhPSBTWVNfUkVTX0lSUSkK KwkJcmV0dXJuIChOVUxMKTsKKworCWlzZGVmYXVsdCA9IChzdGFydCA9PSAwVUwgJiYgZW5kID09 IH4wVUwgJiYgY291bnQgPT0gMSk7CisJcmxlID0gTlVMTDsKKworCWlmIChpc2RlZmF1bHQpIHsK KwkJcmwgPSBCVVNfR0VUX1JFU09VUkNFX0xJU1QoYnVzLCBjaGlsZCk7CisJCWlmIChybCA9PSBO VUxMKQorCQkJcmV0dXJuIChOVUxMKTsKKwkJcmxlID0gcmVzb3VyY2VfbGlzdF9maW5kKHJsLCB0 eXBlLCAqcmlkKTsKKwkJaWYgKHJsZSA9PSBOVUxMKQorCQkJcmV0dXJuIChOVUxMKTsKKwkJaWYg KHJsZS0+cmVzICE9IE5VTEwpCisJCQlwYW5pYygiJXM6IHJlc291cmNlIGVudHJ5IGlzIGJ1c3ki LCBfX2Z1bmNfXyk7CisJCXN0YXJ0ID0gcmxlLT5zdGFydDsKKwkJY291bnQgPSBybGUtPmNvdW50 OworCQllbmQgPSBybGUtPmVuZDsKKwl9CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMoYnVzKTsK KwlydiA9IHJtYW5fcmVzZXJ2ZV9yZXNvdXJjZSgmc2MtPnNjX2ludHJfcm1hbiwgc3RhcnQsIGVu ZCwgY291bnQsIGZsYWdzLAorCSAgICBjaGlsZCk7CisJaWYgKHJ2ID09IE5VTEwpCisJCXJldHVy biAoTlVMTCk7CisJcm1hbl9zZXRfcmlkKHJ2LCAqcmlkKTsKKworCWlmICgoZmxhZ3MgJiBSRl9B Q1RJVkUpICE9IDAgJiYKKwkgICAgYnVzX2FjdGl2YXRlX3Jlc291cmNlKGNoaWxkLCB0eXBlLCAq cmlkLCBydikgIT0gMCkgeworCQlybWFuX3JlbGVhc2VfcmVzb3VyY2UocnYpOworCQlyZXR1cm4g KE5VTEwpOworCX0KKworCXJldHVybiAocnYpOworfQorCitzdGF0aWMgaW50CitncGlvYnVzX3Jl bGVhc2VfcmVzb3VyY2UoZGV2aWNlX3QgYnVzIF9fdW51c2VkLCBkZXZpY2VfdCBjaGlsZCwgaW50 IHR5cGUsCisgICAgaW50IHJpZCwgc3RydWN0IHJlc291cmNlICpyKQoreworCWludCBlcnJvcjsK KworCWlmICgocm1hbl9nZXRfZmxhZ3MocikgJiBSRl9BQ1RJVkUpICE9IDApIHsKKwkJZXJyb3Ig PSBidXNfZGVhY3RpdmF0ZV9yZXNvdXJjZShjaGlsZCwgdHlwZSwgcmlkLCByKTsKKwkJaWYgKGVy cm9yKQorCQkJcmV0dXJuIChlcnJvcik7CisJfQorCisJcmV0dXJuIChybWFuX3JlbGVhc2VfcmVz b3VyY2UocikpOworfQorCitzdGF0aWMgc3RydWN0IHJlc291cmNlX2xpc3QgKgorZ3Bpb2J1c19n ZXRfcmVzb3VyY2VfbGlzdChkZXZpY2VfdCBidXMgX191bnVzZWQsIGRldmljZV90IGNoaWxkKQor eworCXN0cnVjdCBncGlvYnVzX2l2YXIgKml2YXI7CisKKwlpdmFyID0gR1BJT0JVU19JVkFSKGNo aWxkKTsKKworCXJldHVybiAoJml2YXItPnJsKTsKK30KKwogc3RhdGljIGRldmljZV9tZXRob2Rf dCBncGlvYnVzX21ldGhvZHNbXSA9IHsKIAkvKiBEZXZpY2UgaW50ZXJmYWNlICovCiAJREVWTUVU SE9EKGRldmljZV9wcm9iZSwJCWdwaW9idXNfcHJvYmUpLApAQCAtNDUzLDYgKzg1MSwxNSBAQAog CURFVk1FVEhPRChkZXZpY2VfcmVzdW1lLAlncGlvYnVzX3Jlc3VtZSksCiAKIAkvKiBCdXMgaW50 ZXJmYWNlICovCisJREVWTUVUSE9EKGJ1c19zZXR1cF9pbnRyLAlncGlvYnVzX3NldHVwX2ludHIp LAorCURFVk1FVEhPRChidXNfY29uZmlnX2ludHIsCWJ1c19nZW5lcmljX2NvbmZpZ19pbnRyKSwK KwlERVZNRVRIT0QoYnVzX3RlYXJkb3duX2ludHIsCWdwaW9idXNfdGVhcmRvd25faW50ciksCisJ REVWTUVUSE9EKGJ1c19zZXRfcmVzb3VyY2UsCWdwaW9idXNfc2V0X3Jlc291cmNlKSwKKwlERVZN RVRIT0QoYnVzX2FsbG9jX3Jlc291cmNlLAlncGlvYnVzX2FsbG9jX3Jlc291cmNlKSwKKwlERVZN RVRIT0QoYnVzX3JlbGVhc2VfcmVzb3VyY2UsCWdwaW9idXNfcmVsZWFzZV9yZXNvdXJjZSksCisJ REVWTUVUSE9EKGJ1c19hY3RpdmF0ZV9yZXNvdXJjZSwJYnVzX2dlbmVyaWNfYWN0aXZhdGVfcmVz b3VyY2UpLAorCURFVk1FVEhPRChidXNfZGVhY3RpdmF0ZV9yZXNvdXJjZSwJYnVzX2dlbmVyaWNf ZGVhY3RpdmF0ZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19nZXRfcmVzb3VyY2VfbGlzdCwJ Z3Bpb2J1c19nZXRfcmVzb3VyY2VfbGlzdCksCiAJREVWTUVUSE9EKGJ1c19hZGRfY2hpbGQsCWdw aW9idXNfYWRkX2NoaWxkKSwKIAlERVZNRVRIT0QoYnVzX3ByaW50X2NoaWxkLAlncGlvYnVzX3By aW50X2NoaWxkKSwKIAlERVZNRVRIT0QoYnVzX2NoaWxkX3BucGluZm9fc3RyLCBncGlvYnVzX2No aWxkX3BucGluZm9fc3RyKSwKSW5kZXg6IHN5cy9kZXYvZ3Bpby9ncGlvYnVzdmFyLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3lzL2Rldi9ncGlvL2dwaW9idXN2YXIuaAkocmV2aXNpb24gMjY1ODE3KQorKysg c3lzL2Rldi9ncGlvL2dwaW9idXN2YXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsMTEg QEAKIAogI2luY2x1ZGUgIm9wdF9wbGF0Zm9ybS5oIgogCisjaW5jbHVkZSA8c3lzL2ludGVycnVw dC5oPgogI2luY2x1ZGUgPHN5cy9sb2NrLmg+CiAjaW5jbHVkZSA8c3lzL211dGV4Lmg+CisjaW5j bHVkZSA8c3lzL3JtYW4uaD4KKyNpbmNsdWRlIDxzeXMvc2VsaW5mby5oPgogCiAjaWZkZWYgRkRU CiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4KQEAgLTQxLDcgKzQ0LDEyIEBACiAK ICNpbmNsdWRlICJncGlvX2lmLmgiCiAKKyNpZmRlZiBGRFQKKyNkZWZpbmUJR1BJT0JVU19JVkFS KGQpIChzdHJ1Y3QgZ3Bpb2J1c19pdmFyICopCQkJCVwKKwkmKChzdHJ1Y3Qgb2Z3X2dwaW9idXNf ZGV2aW5mbyAqKWRldmljZV9nZXRfaXZhcnMoZCkpLT5vcGRfZGluZm8KKyNlbHNlCiAjZGVmaW5l CUdQSU9CVVNfSVZBUihkKSAoc3RydWN0IGdwaW9idXNfaXZhciAqKSBkZXZpY2VfZ2V0X2l2YXJz KGQpCisjZW5kaWYKICNkZWZpbmUJR1BJT0JVU19TT0ZUQyhkKSAoc3RydWN0IGdwaW9idXNfc29m dGMgKikgZGV2aWNlX2dldF9zb2Z0YyhkKQogI2RlZmluZQlHUElPQlVTX0xPQ0soX3NjKSBtdHhf bG9jaygmKF9zYyktPnNjX210eCkKICNkZWZpbmUJR1BJT0JVU19VTkxPQ0soX3NjKSBtdHhfdW5s b2NrKCYoX3NjKS0+c2NfbXR4KQpAQCAtNTEsMTggKzU5LDM4IEBACiAjZGVmaW5lCUdQSU9CVVNf QVNTRVJUX0xPQ0tFRChfc2MpIG10eF9hc3NlcnQoJl9zYy0+c2NfbXR4LCBNQV9PV05FRCkKICNk ZWZpbmUJR1BJT0JVU19BU1NFUlRfVU5MT0NLRUQoX3NjKSBtdHhfYXNzZXJ0KCZfc2MtPnNjX210 eCwgTUFfTk9UT1dORUQpCiAKK3N0cnVjdCBncGlvYnVzX3NvZnRjOworCitzdHJ1Y3QgZ3Bpb2J1 c19waW5fYXJnCit7CisJc3RydWN0IGdwaW9idXNfc29mdGMgKnNjOworCWludCBwaW47Cit9Owor CitzdHJ1Y3QgZ3Bpb2J1c19waW4KK3sKKwlzdHJ1Y3QgaW50cl9ldmVudAkqZXZlbnQ7CS8qIGlz ciBldmVudCAqLworCXN0cnVjdCBzZWxpbmZvCXNlbDsJCS8qIGtubGlzdCBkYXRhICovCisJaW50 CQltYXBwZWQ7CQkvKiBwaW4gaXMgbWFwcGVkID8gKi8KKwl2b2lkCQkqaXJxX2hkbDsJLyogaXNy IGhhbmRsZXIgY29va2llICovCit9OworCiBzdHJ1Y3QgZ3Bpb2J1c19zb2Z0YwogeworCXN0cnVj dCBjZGV2CSpzY19jdGxfZGV2OwkvKiBjb250cm9sbGVyIGRldmljZSAqLwogCXN0cnVjdCBtdHgJ c2NfbXR4OwkJLyogYnVzIG11dGV4ICovCisJc3RydWN0IGdwaW9idXNfcGluCSpzY19waW5zOyAv KiBncGlvYnVzIHBpbnMgKi8KKwlzdHJ1Y3QgZ3Bpb2J1c19waW5fYXJnCSpzY19waW5fYXJnOyAv KiBpc3IgYXJnICovCisJc3RydWN0IHJtYW4Jc2NfaW50cl9ybWFuOwkvKiBpc3IgcmVzb3VyY2Vz ICovCiAJZGV2aWNlX3QJc2NfYnVzZGV2OwkvKiBidXMgZGV2aWNlICovCiAJZGV2aWNlX3QJc2Nf b3duZXI7CS8qIGJ1cyBvd25lciAqLwogCWRldmljZV90CXNjX2RldjsJCS8qIGRyaXZlciBkZXZp Y2UgKi8KIAlpbnQJCXNjX25waW5zOwkvKiB0b3RhbCBwaW5zIG9uIGJ1cyAqLwotCWludAkJKnNj X3BpbnNfbWFwcGVkOyAvKiBtYXJrIG1hcHBlZCBwaW5zICovCiB9OwogCiBzdHJ1Y3QgZ3Bpb2J1 c19pdmFyCiB7CisJc3RydWN0IHJlc291cmNlX2xpc3QJcmw7CS8qIGlzciByZXNvdXJjZSBsaXN0 ICovCiAJdWludDMyX3QJbnBpbnM7CS8qIHBpbnMgdG90YWwgKi8KIAl1aW50MzJfdAkqZmxhZ3M7 CS8qIHBpbnMgZmxhZ3MgKi8KIAl1aW50MzJfdAkqcGluczsJLyogcGlucyBtYXAgKi8KQEAgLTg0 LDYgKzExMiw3IEBACiBkZXZpY2VfdCBvZndfZ3Bpb2J1c19hZGRfZmR0X2NoaWxkKGRldmljZV90 LCBwaGFuZGxlX3QpOwogI2VuZGlmCiB2b2lkIGdwaW9idXNfcHJpbnRfcGlucyhzdHJ1Y3QgZ3Bp b2J1c19pdmFyICopOworaW50IGdwaW9idXNfaW5pdF9zb2Z0YyhkZXZpY2VfdCk7CiAKIGV4dGVy biBkcml2ZXJfdCBncGlvYnVzX2RyaXZlcjsKIApJbmRleDogc3lzL2Rldi9ncGlvL29md19ncGlv YnVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9ncGlvL29md19ncGlvYnVzLmMJKHJldmlzaW9u IDI2NTgxNykKKysrIHN5cy9kZXYvZ3Bpby9vZndfZ3Bpb2J1cy5jCSh3b3JraW5nIGNvcHkpCkBA IC0xMDMsNiArMTAzLDcgQEAKIAlpbnQgY2VsbHMsIGksIGosIGxlbjsKIAlwY2VsbF90ICpncGlv czsKIAlwaGFuZGxlX3QgZ3BpbzsKKwlzdHJ1Y3QgZ3Bpb2J1c19waW4gKnBpbjsKIAogCS8qIFJl dHJpZXZlIHRoZSBncGlvcyBwcm9wZXJ0eS4gKi8KIAlpZiAoKGxlbiA9IE9GX2dldHByb3BsZW4o Y2hpbGQsICJncGlvcyIpKSA8IDApCkBAIC0xOTUsMTAgKzE5NiwxMiBAQAogCQkJcmV0dXJuIChF SU5WQUwpOwogCQl9CiAKKwkJcGluID0gJnNjLT5zY19waW5zW2RpbmZvLT5waW5zW2pdXTsKKwog CQkvKgogCQkgKiBNYXJrIHBpbiBhcyBtYXBwZWQgYW5kIGdpdmUgd2FybmluZyBpZiBpdCdzIGFs cmVhZHkgbWFwcGVkLgogCQkgKi8KLQkJaWYgKHNjLT5zY19waW5zX21hcHBlZFtkaW5mby0+cGlu c1tqXV0pIHsKKwkJaWYgKHBpbi0+bWFwcGVkKSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19i dXNkZXYsCiAJCQkgICAgIndhcm5pbmc6IHBpbiAlZCBpcyBhbHJlYWR5IG1hcHBlZFxuIiwKIAkJ CSAgICBkaW5mby0+cGluc1tqXSk7CkBAIC0yMDYsNyArMjA5LDcgQEAKIAkJCWZyZWUoZ3Bpb3Ms IE1fREVWQlVGKTsKIAkJCXJldHVybiAoRUlOVkFMKTsKIAkJfQotCQlzYy0+c2NfcGluc19tYXBw ZWRbZGluZm8tPnBpbnNbal1dID0gMTsKKwkJcGluLT5tYXBwZWQgPSAxOwogCiAJCWkgKz0gY2Vs bHMgKyAxOwogCQlqKys7CkBAIC0yMjIsNiArMjI1LDkgQEAKIHsKIAlzdHJ1Y3QgZ3Bpb2J1c19z b2Z0YyAqc2M7CiAJc3RydWN0IG9md19ncGlvYnVzX2RldmluZm8gKmRpbmZvOworCXVpbnQzMl90 ICppbnRyLCBpY2VsbHM7CisJcGhhbmRsZV90IGlwYXJlbnQ7CisJaW50IGksIG5pbnRyOwogCiAJ c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJZGluZm8gPSBtYWxsb2Moc2l6ZW9mKCpkaW5m byksIE1fREVWQlVGLCBNX05PV0FJVCB8IE1fWkVSTyk7CkBAIC0yMzksNiArMjQ1LDI0IEBACiAJ CXJldHVybiAoTlVMTCk7CiAJfQogCisJcmVzb3VyY2VfbGlzdF9pbml0KCZkaW5mby0+b3BkX2Rp bmZvLnJsKTsKKwluaW50ciA9IE9GX2dldGVuY3Byb3BfYWxsb2Mobm9kZSwgImludGVycnVwdHMi LCAgc2l6ZW9mKCppbnRyKSwKKwkgICAgKHZvaWQgKiopJmludHIpOworCWlmIChuaW50ciA+IDAp IHsKKwkJaXBhcmVudCA9IDA7CisJCU9GX3NlYXJjaGVuY3Byb3Aobm9kZSwgImludGVycnVwdC1w YXJlbnQiLCAmaXBhcmVudCwKKwkJICAgIHNpemVvZihpcGFyZW50KSk7CisJCU9GX3NlYXJjaGVu Y3Byb3AoT0ZfeHJlZl9waGFuZGxlKGlwYXJlbnQpLCAiI2ludGVycnVwdC1jZWxscyIsCisJCSAg ICAmaWNlbGxzLCBzaXplb2YoaWNlbGxzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBuaW50cjsgaSs9 IGljZWxscykgeworCQkJaW50cltpXSA9IG9md19idXNfbWFwX2ludHIoZGV2LCBpcGFyZW50LCBp Y2VsbHMsCisJCQkgICAgJmludHJbaV0pOworCQkJcmVzb3VyY2VfbGlzdF9hZGQoJmRpbmZvLT5v cGRfZGluZm8ucmwsIFNZU19SRVNfSVJRLAorCQkJICAgIGksIGludHJbaV0sIGludHJbaV0sIDEp OworCQl9CisJCWZyZWUoaW50ciwgTV9PRldQUk9QKTsKKwl9CisKIAlyZXR1cm4gKGRpbmZvKTsK IH0KIApAQCAtMjQ2LDYgKzI3MCw3IEBACiBvZndfZ3Bpb2J1c19kZXN0cm95X2RldmluZm8oc3Ry dWN0IG9md19ncGlvYnVzX2RldmluZm8gKmRpbmZvKQogewogCisJcmVzb3VyY2VfbGlzdF9mcmVl KCZkaW5mby0+b3BkX2RpbmZvLnJsKTsKIAlvZndfYnVzX2dlbl9kZXN0cm95X2RldmluZm8oJmRp bmZvLT5vcGRfb2JkaW5mbyk7CiAJZnJlZShkaW5mbywgTV9ERVZCVUYpOwogfQpAQCAtMjY0LDMz ICsyODksMTMgQEAKIHN0YXRpYyBpbnQKIG9md19ncGlvYnVzX2F0dGFjaChkZXZpY2VfdCBkZXYp CiB7Ci0Jc3RydWN0IGdwaW9idXNfc29mdGMgKnNjOworCWludCBlcnI7CiAJcGhhbmRsZV90IGNo aWxkOwogCi0Jc2MgPSBHUElPQlVTX1NPRlRDKGRldik7Ci0Jc2MtPnNjX2J1c2RldiA9IGRldjsK LQlzYy0+c2NfZGV2ID0gZGV2aWNlX2dldF9wYXJlbnQoZGV2KTsKKwllcnIgPSBncGlvYnVzX2lu aXRfc29mdGMoZGV2KTsKKwlpZiAoZXJyICE9IDApCisJCXJldHVybiAoZXJyKTsKIAotCS8qIFJl YWQgdGhlIHBpbiBtYXguIHZhbHVlICovCi0JaWYgKEdQSU9fUElOX01BWChzYy0+c2NfZGV2LCAm c2MtPnNjX25waW5zKSAhPSAwKQotCQlyZXR1cm4gKEVOWElPKTsKLQotCUtBU1NFUlQoc2MtPnNj X25waW5zICE9IDAsICgiR1BJTyBkZXZpY2Ugd2l0aCBubyBwaW5zIikpOwotCi0JLyoKLQkgKiBJ bmNyZWFzZSB0byBnZXQgbnVtYmVyIG9mIHBpbnMuCi0JICovCi0Jc2MtPnNjX25waW5zKys7Ci0K LQlzYy0+c2NfcGluc19tYXBwZWQgPSBtYWxsb2Moc2l6ZW9mKGludCkgKiBzYy0+c2NfbnBpbnMs IE1fREVWQlVGLCAKLQkgICAgTV9OT1dBSVQgfCBNX1pFUk8pOwotCi0JaWYgKCFzYy0+c2NfcGlu c19tYXBwZWQpCi0JCXJldHVybiAoRU5PTUVNKTsKLQotCS8qIEluaXQgdGhlIGJ1cyBsb2NrLiAq LwotCUdQSU9CVVNfTE9DS19JTklUKHNjKTsKLQogCWJ1c19nZW5lcmljX3Byb2JlKGRldik7CiAJ YnVzX2VudW1lcmF0ZV9oaW50ZWRfY2hpbGRyZW4oZGV2KTsKIApAQCAtMzQ2LDYgKzM1MSw4IEBA CiAJcmV0dmFsICs9IGJ1c19wcmludF9jaGlsZF9oZWFkZXIoZGV2LCBjaGlsZCk7CiAJcmV0dmFs ICs9IHByaW50ZigiIGF0IHBpbihzKSAiKTsKIAlncGlvYnVzX3ByaW50X3BpbnMoJmRldmktPm9w ZF9kaW5mbyk7CisJcmVzb3VyY2VfbGlzdF9wcmludF90eXBlKCZkZXZpLT5vcGRfZGluZm8ucmws ICJpcnEiLCBTWVNfUkVTX0lSUSwKKwkgICAgIiVsZCIpOwogCXJldHZhbCArPSBidXNfcHJpbnRf Y2hpbGRfZm9vdGVyKGRldiwgY2hpbGQpOwogCiAJcmV0dXJuIChyZXR2YWwpOwo= --001a11c335ce38a5b404f96138f2 Content-Type: text/plain; charset=US-ASCII; name="ti_gpio-intr.diff" Content-Disposition: attachment; filename="ti_gpio-intr.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hv6zeuvh4 SW5kZXg6IHN5cy9hcm0vdGkvdGlfZ3Bpby5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9hcm0vdGkvdGlf Z3Bpby5jCShyZXZpc2lvbiAyNjU4NDIpCisrKyBzeXMvYXJtL3RpL3RpX2dwaW8uYwkod29ya2lu ZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPHN5cy9sb2NrLmg+CiAjaW5jbHVk ZSA8c3lzL211dGV4Lmg+CiAjaW5jbHVkZSA8c3lzL2dwaW8uaD4KKyNpbmNsdWRlIDxzeXMvaW50 ZXJydXB0Lmg+CiAKICNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUv cmVzb3VyY2UuaD4KQEAgLTE0OCw2ICsxNDksNyBAQAogI2VuZGlmCiAjZGVmaW5lCVBJTlNfUEVS X0JBTksJCQkzMgogI2RlZmluZQlNQVhfR1BJT19JTlRSUwkJCU1BWF9HUElPX0JBTktTICogSU5U Ul9QRVJfQkFOSworI2RlZmluZQlNQVhfR1BJT19QSU5TCQkJTUFYX0dQSU9fQkFOS1MgKiBQSU5T X1BFUl9CQU5LCiAKIC8qKgogICoJdGlfZ3Bpb19tZW1fc3BlYyAtIFJlc291cmNlIHNwZWNpZmlj YXRpb24gdXNlZCB3aGVuIGFsbG9jYXRpbmcgcmVzb3VyY2VzCkBAIC0xOTgsNiArMjAwLDEwIEBA CiBzdHJ1Y3QgdGlfZ3Bpb19zb2Z0YyB7CiAJZGV2aWNlX3QJCXNjX2RldjsKIAorCS8qIEludGVy cnVwdCB0cmlnZ2VyIHR5cGUgYW5kIGxldmVsLiAqLworCWVudW0gaW50cl90cmlnZ2VyCXNjX2ly cV90cmlnZ2VyW01BWF9HUElPX1BJTlNdOworCWVudW0gaW50cl9wb2xhcml0eQlzY19pcnFfcG9s YXJpdHlbTUFYX0dQSU9fUElOU107CisKIAkvKgogCSAqIFRoZSBtZW1vcnkgcmVzb3VyY2Uocykg Zm9yIHRoZSBQUkNNIHJlZ2lzdGVyIHNldCwgd2hlbiB0aGUgZGV2aWNlIGlzCiAJICogY3JlYXRl ZCB0aGUgY2FsbGVyIGNhbiBhc3NpZ24gdXAgdG8gNiBtZW1vcnkgcmVnaW9ucyBkZXBlbmRpbmcg b24KQEAgLTIwNiw2ICsyMTIsOSBAQAogCXN0cnVjdCByZXNvdXJjZQkJKnNjX21lbV9yZXNbTUFY X0dQSU9fQkFOS1NdOwogCXN0cnVjdCByZXNvdXJjZQkJKnNjX2lycV9yZXNbTUFYX0dQSU9fSU5U UlNdOwogCisJLyogSW50ZXJydXB0IGV2ZW50cy4gKi8KKwlzdHJ1Y3QgaW50cl9ldmVudAkqc2Nf ZXZlbnRzW01BWF9HUElPX1BJTlNdOworCiAJLyogVGhlIGhhbmRsZSBmb3IgdGhlIHJlZ2lzdGVy IElSUSBoYW5kbGVycy4gKi8KIAl2b2lkCQkJKnNjX2lycV9oZGxbTUFYX0dQSU9fSU5UUlNdOwog CkBAIC0yMjAsMTUgKzIyOSwxNyBAQAogLyoqCiAgKglNYWNyb3MgZm9yIGRyaXZlciBtdXRleCBs b2NraW5nCiAgKi8KLSNkZWZpbmUJVElfR1BJT19MT0NLKF9zYykJCW10eF9sb2NrKCYoX3NjKS0+ c2NfbXR4KQotI2RlZmluZQlUSV9HUElPX1VOTE9DSyhfc2MpCQltdHhfdW5sb2NrKCYoX3NjKS0+ c2NfbXR4KQorI2RlZmluZQlUSV9HUElPX0xPQ0soX3NjKQkJbXR4X2xvY2tfc3BpbigmKF9zYykt PnNjX210eCkKKyNkZWZpbmUJVElfR1BJT19VTkxPQ0soX3NjKQkJbXR4X3VubG9ja19zcGluKCYo X3NjKS0+c2NfbXR4KQogI2RlZmluZQlUSV9HUElPX0xPQ0tfSU5JVChfc2MpCQlcCiAJbXR4X2lu aXQoJl9zYy0+c2NfbXR4LCBkZXZpY2VfZ2V0X25hbWV1bml0KF9zYy0+c2NfZGV2KSwgXAotCSAg ICAidGlfZ3BpbyIsIE1UWF9ERUYpCisJICAgICJ0aV9ncGlvIiwgTVRYX1NQSU4pCiAjZGVmaW5l CVRJX0dQSU9fTE9DS19ERVNUUk9ZKF9zYykJbXR4X2Rlc3Ryb3koJl9zYy0+c2NfbXR4KQogI2Rl ZmluZQlUSV9HUElPX0FTU0VSVF9MT0NLRUQoX3NjKQltdHhfYXNzZXJ0KCZfc2MtPnNjX210eCwg TUFfT1dORUQpCiAjZGVmaW5lCVRJX0dQSU9fQVNTRVJUX1VOTE9DS0VEKF9zYykJbXR4X2Fzc2Vy dCgmX3NjLT5zY19tdHgsIE1BX05PVE9XTkVEKQogCitzdGF0aWMgc3RydWN0IHRpX2dwaW9fc29m dGMgKnRpX2dwaW9fc2MgPSBOVUxMOworCiAvKioKICAqCXRpX2dwaW9fcmVhZF80IC0gcmVhZHMg YSAxNi1iaXQgdmFsdWUgZnJvbSBvbmUgb2YgdGhlIFBBRENPTkZTIHJlZ2lzdGVycwogICoJQHNj OiBHUElPIGRldmljZSBjb250ZXh0CkBAIC0yNzYsNiArMjg3LDUwIEBACiAjZW5kaWYKIH0KIAor c3RhdGljIGlubGluZSB2b2lkCit0aV9ncGlvX2ludHJfc2V0KHN0cnVjdCB0aV9ncGlvX3NvZnRj ICpzYywgdW5zaWduZWQgaW50IGJhbmssIHVpbnQzMl90IG1hc2spCit7CisKKwkvKgorCSAqIE9u IE9NQVAzIGFuZCBPTUFQNCB3ZSB1bm1hc2sgb25seSB0aGUgTVBVIGludGVycnVwdCBhbmQgb24g QU0zMzV4CisJICogd2UgYWxzbyBhY3RpdmF0ZSBvbmx5IHRoZSBmaXJzdCBpbnRlcnJ1cHQuCisJ ICovCisjaWYgZGVmaW5lZChTT0NfT01BUDQpIHx8IGRlZmluZWQoU09DX1RJX0FNMzM1WCkKKwl0 aV9ncGlvX3dyaXRlXzQoc2MsIGJhbmssIFRJX0dQSU9fSVJRU1RBVFVTX1NFVF8wLCBtYXNrKTsK KyNlbHNlCisJdGlfZ3Bpb193cml0ZV80KHNjLCBiYW5rLCBUSV9HUElPX0NMRUFSSVJRRU5BQkxF MSwgbWFzayk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0aV9ncGlvX2ludHJf YWNrKHN0cnVjdCB0aV9ncGlvX3NvZnRjICpzYywgdW5zaWduZWQgaW50IGJhbmssIHVpbnQzMl90 IG1hc2spCit7CisKKyNpZiBkZWZpbmVkKFNPQ19PTUFQNCkgfHwgZGVmaW5lZChTT0NfVElfQU0z MzVYKQorCXRpX2dwaW9fd3JpdGVfNChzYywgYmFuaywgVElfR1BJT19JUlFTVEFUVVNfMCwgbWFz ayk7CisJdGlfZ3Bpb193cml0ZV80KHNjLCBiYW5rLCBUSV9HUElPX0lSUVNUQVRVU18xLCBtYXNr KTsKKyNlbHNlCisJdGlfZ3Bpb193cml0ZV80KHNjLCBiYW5rLCBUSV9HUElPX0lSUVNUQVRVUzEs IG1hc2spOworCXRpX2dwaW9fd3JpdGVfNChzYywgYmFuaywgVElfR1BJT19JUlFTVEFUVVMyLCBt YXNrKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90Cit0aV9ncGlvX2ludHJf c3RhdHVzKHN0cnVjdCB0aV9ncGlvX3NvZnRjICpzYywgdW5zaWduZWQgaW50IGJhbmspCit7CisJ dWludDMyX3QgcmVnOworCisjaWYgZGVmaW5lZChTT0NfT01BUDQpIHx8IGRlZmluZWQoU09DX1RJ X0FNMzM1WCkKKwlyZWcgPSB0aV9ncGlvX3JlYWRfNChzYywgYmFuaywgVElfR1BJT19JUlFTVEFU VVNfMCk7CisJcmVnIHw9IHRpX2dwaW9fcmVhZF80KHNjLCBiYW5rLCBUSV9HUElPX0lSUVNUQVRV U18xKTsKKyNlbHNlCisJcmVnID0gdGlfZ3Bpb19yZWFkXzQoc2MsIGJhbmssIFRJX0dQSU9fSVJR U1RBVFVTMSk7CisJcmVnIHw9IHRpX2dwaW9fcmVhZF80KHNjLCBiYW5rLCBUSV9HUElPX0lSUVNU QVRVUzIpOworI2VuZGlmCisKKwlyZXR1cm4gKHJlZyk7Cit9CisKIC8qKgogICoJdGlfZ3Bpb19w aW5fbWF4IC0gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgR1BJTyBwaW5zCiAgKglAZGV2 OiBncGlvIGRldmljZSBoYW5kbGUKQEAgLTYyNSwxNCArNjgwLDQyIEBACiAgKglJbnRlcm5hbGx5 IGxvY2tzIHRoZSBjb250ZXh0CiAgKgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogdGlf Z3Bpb19pbnRyKHZvaWQgKmFyZykKIHsKLQlzdHJ1Y3QgdGlfZ3Bpb19zb2Z0YyAqc2MgPSBhcmc7 CisJaW50IGJhbmssIGJhbmtfbGFzdCwgaXJxOworCXN0cnVjdCBpbnRyX2V2ZW50ICpldmVudDsK KwlzdHJ1Y3QgdGlfZ3Bpb19zb2Z0YyAqc2M7CisJdWludDMyX3QgbWFzaywgcmVnOwogCi0JVElf R1BJT19MT0NLKHNjKTsKLQkvKiBUT0RPOiBzb21ldGhpbmcgdXNlZnVsICovCi0JVElfR1BJT19V TkxPQ0soc2MpOworCXNjID0gKHN0cnVjdCB0aV9ncGlvX3NvZnRjICopYXJnOworCisJYmFua19s YXN0ID0gLTE7CisJZm9yIChpcnEgPSAwOyBpcnEgPCBNQVhfR1BJT19QSU5TOyBpcnErKykgewor CisJCWJhbmsgPSBpcnEgLyBQSU5TX1BFUl9CQU5LOworCQltYXNrID0gKDFVTCA8PCAoaXJxICUg UElOU19QRVJfQkFOSykpOworCisJCWlmIChiYW5rICE9IGJhbmtfbGFzdCkgeworCQkJcmVnID0g dGlfZ3Bpb19pbnRyX3N0YXR1cyhzYywgYmFuayk7CisJCQliYW5rX2xhc3QgPSBiYW5rOworCQl9 CisKKwkJaWYgKHJlZyAmIG1hc2spIHsKKwkJCWV2ZW50ID0gc2MtPnNjX2V2ZW50c1tpcnFdOwor CQkJaWYgKGV2ZW50ICE9IE5VTEwgJiYgIVRBSUxRX0VNUFRZKCZldmVudC0+aWVfaGFuZGxlcnMp KQorCQkJCWludHJfZXZlbnRfaGFuZGxlKGV2ZW50LCBOVUxMKTsKKwkJCWVsc2UgeworCQkJCWRl dmljZV9wcmludGYoc2MtPnNjX2RldiwgIlN0cmF5IElSUSAlZFxuIiwKKwkJCQkgICAgaXJxKTsK KwkJCX0KKworCQkJLyogQWNrIHRoZSBJUlEgU3RhdHVzIGJpdC4gKi8KKwkJCXRpX2dwaW9faW50 cl9hY2soc2MsIGJhbmssIG1hc2spOworCQl9CisJfQorCisJcmV0dXJuIChGSUxURVJfSEFORExF RCk7CiB9CiAKIC8qKgpAQCAtNjc0LDEzICs3NTcsMTMgQEAKIAkJCWJyZWFrOwogCiAJCS8qCi0J CSAqIFJlZ2lzdGVyIG91ciBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgZWFjaCBvZiB0aGUgSVJRIHJl c291cmNlcy4KKwkJICogUmVnaXN0ZXIgb3VyIGludGVycnVwdCBmaWx0ZXIgZm9yIGVhY2ggb2Yg dGhlIElSUSByZXNvdXJjZXMuCiAJCSAqLwogCQlpZiAoYnVzX3NldHVwX2ludHIoZGV2LCBzYy0+ c2NfaXJxX3Jlc1tpXSwKLQkJICAgIElOVFJfVFlQRV9NSVNDIHwgSU5UUl9NUFNBRkUsIE5VTEws IHRpX2dwaW9faW50ciwgc2MsCisJCSAgICBJTlRSX1RZUEVfTUlTQyB8IElOVFJfTVBTQUZFLCB0 aV9ncGlvX2ludHIsIE5VTEwsIHNjLAogCQkgICAgJnNjLT5zY19pcnFfaGRsW2ldKSAhPSAwKSB7 CiAJCQlkZXZpY2VfcHJpbnRmKGRldiwKLQkJCSAgICAiV0FSTklORzogdW5hYmxlIHRvIHJlZ2lz dGVyIGludGVycnVwdCBoYW5kbGVyXG4iKTsKKwkJCSAgICAiV0FSTklORzogdW5hYmxlIHRvIHJl Z2lzdGVyIGludGVycnVwdCBmaWx0ZXJcbiIpOwogCQkJcmV0dXJuICgtMSk7CiAJCX0KIAl9CkBA IC02OTQsNyArNzc3LDcgQEAKIAlpbnQgaTsKIAlzdHJ1Y3QgdGlfZ3Bpb19zb2Z0YyAqc2M7CiAK LQkvKiBUZWFyZG93biBvdXIgaW50ZXJydXB0IGhhbmRsZXJzLiAqLworCS8qIFRlYXJkb3duIG91 ciBpbnRlcnJ1cHQgZmlsdGVycy4gKi8KIAlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKIAlm b3IgKGkgPSAwOyBpIDwgTUFYX0dQSU9fSU5UUlM7IGkrKykgewogCQlpZiAoc2MtPnNjX2lycV9y ZXNbaV0gPT0gTlVMTCkKQEAgLTc3Miw3ICs4NTUsMTAgQEAKIAl1bnNpZ25lZCBpbnQgaTsKIAlp bnQgZXJyOwogCi0gCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCWlmICh0aV9ncGlvX3Nj ICE9IE5VTEwpCisJCXJldHVybiAoRU5YSU8pOworCisJdGlfZ3Bpb19zYyA9IHNjID0gZGV2aWNl X2dldF9zb2Z0YyhkZXYpOwogCXNjLT5zY19kZXYgPSBkZXY7CiAKIAlUSV9HUElPX0xPQ0tfSU5J VChzYyk7CkBAIC04MjEsNiArOTA3LDEyIEBACiAJCX0KIAl9CiAKKwkvKiBUaGUgZGVmYXVsdCBp cyBhY3RpdmUtbG93IGludGVycnVwdHMuICovCisJZm9yIChpID0gMDsgaSA8IE1BWF9HUElPX1BJ TlM7IGkrKykgeworCQlzYy0+c2NfaXJxX3RyaWdnZXJbaV0gPSBJTlRSX1RSSUdHRVJfTEVWRUw7 CisJCXNjLT5zY19pcnFfcG9sYXJpdHlbaV0gPSBJTlRSX1BPTEFSSVRZX0xPVzsKKwl9CisKIAkv KiBGaW5pc2ggb2YgdGhlIHByb2JlIGNhbGwgKi8KIAlkZXZpY2VfYWRkX2NoaWxkKGRldiwgImdw aW9jIiwgZGV2aWNlX2dldF91bml0KGRldikpOwogCWRldmljZV9hZGRfY2hpbGQoZGV2LCAiZ3Bp b2J1cyIsIGRldmljZV9nZXRfdW5pdChkZXYpKTsKQEAgLTg2Nyw2ICs5NTksMjExIEBACiAJcmV0 dXJuICgwKTsKIH0KIAorc3RhdGljIHVpbnQzMl90Cit0aV9ncGlvX2ludHJfcmVnKHN0cnVjdCB0 aV9ncGlvX3NvZnRjICpzYywgaW50IGlycSkKK3sKKworCWlmIChpcnEgPiBNQVhfR1BJT19QSU5T KQorCQlyZXR1cm4gKDApOworCisJaWYgKHNjLT5zY19pcnFfdHJpZ2dlcltpcnFdID09IElOVFJf VFJJR0dFUl9MRVZFTCkgeworCQlpZiAoc2MtPnNjX2lycV9wb2xhcml0eVtpcnFdID09IElOVFJf UE9MQVJJVFlfTE9XKQorCQkJcmV0dXJuIChUSV9HUElPX0xFVkVMREVURUNUMCk7CisJCWVsc2Ug aWYgKHNjLT5zY19pcnFfcG9sYXJpdHlbaXJxXSA9PSBJTlRSX1BPTEFSSVRZX0hJR0gpCisJCQly ZXR1cm4gKFRJX0dQSU9fTEVWRUxERVRFQ1QxKTsKKwl9IGVsc2UgaWYgKHNjLT5zY19pcnFfdHJp Z2dlcltpcnFdID09IElOVFJfVFJJR0dFUl9FREdFKSB7CisJCWlmIChzYy0+c2NfaXJxX3BvbGFy aXR5W2lycV0gPT0gSU5UUl9QT0xBUklUWV9MT1cpCisJCQlyZXR1cm4gKFRJX0dQSU9fRkFMTElO R0RFVEVDVCk7CisJCWVsc2UgaWYgKHNjLT5zY19pcnFfcG9sYXJpdHlbaXJxXSA9PSBJTlRSX1BP TEFSSVRZX0hJR0gpCisJCQlyZXR1cm4gKFRJX0dQSU9fUklTSU5HREVURUNUKTsKKwl9CisKKwly ZXR1cm4gKDApOworfQorCitzdGF0aWMgdm9pZAordGlfZ3Bpb19tYXNrX2lycSh2b2lkICpzb3Vy Y2UpCit7CisJaW50IGJhbmssIGlycTsKKwl1aW50MzJfdCBtYXNrLCByZWcsIHZhbDsKKworCWly cSA9IChpbnQpc291cmNlOworCWlmIChpcnEgPiBNQVhfR1BJT19QSU5TKQorCQlyZXR1cm47CisK KwliYW5rID0gaXJxIC8gUElOU19QRVJfQkFOSzsKKwltYXNrID0gKDFVTCA8PCAoaXJxICUgUElO U19QRVJfQkFOSykpOworCisJVElfR1BJT19MT0NLKHRpX2dwaW9fc2MpOworCXRpX2dwaW9faW50 cl9jbHIodGlfZ3Bpb19zYywgYmFuaywgbWFzayk7CisJcmVnID0gdGlfZ3Bpb19pbnRyX3JlZyh0 aV9ncGlvX3NjLCBpcnEpOworCWlmIChyZWcgIT0gMCkgeworCQl2YWwgPSB0aV9ncGlvX3JlYWRf NCh0aV9ncGlvX3NjLCBiYW5rLCByZWcpOworCQl0aV9ncGlvX3dyaXRlXzQodGlfZ3Bpb19zYywg YmFuaywgcmVnLCB2YWwgJiB+bWFzayk7CisJfQorCVRJX0dQSU9fVU5MT0NLKHRpX2dwaW9fc2Mp OworfQorCitzdGF0aWMgdm9pZAordGlfZ3Bpb191bm1hc2tfaXJxKHZvaWQgKnNvdXJjZSkKK3sK KwlpbnQgYmFuaywgaXJxOworCXVpbnQzMl90IG1hc2ssIHJlZywgdmFsOworCisJaXJxID0gKGlu dClzb3VyY2U7CisJaWYgKGlycSA+IE1BWF9HUElPX1BJTlMpCisJCXJldHVybjsKKworCWJhbmsg PSBpcnEgLyBQSU5TX1BFUl9CQU5LOworCW1hc2sgPSAoMVVMIDw8IChpcnEgJSBQSU5TX1BFUl9C QU5LKSk7CisKKwlUSV9HUElPX0xPQ0sodGlfZ3Bpb19zYyk7CisJcmVnID0gdGlfZ3Bpb19pbnRy X3JlZyh0aV9ncGlvX3NjLCBpcnEpOworCWlmIChyZWcgIT0gMCkgeworCQl2YWwgPSB0aV9ncGlv X3JlYWRfNCh0aV9ncGlvX3NjLCBiYW5rLCByZWcpOworCQl0aV9ncGlvX3dyaXRlXzQodGlfZ3Bp b19zYywgYmFuaywgcmVnLCB2YWwgfCBtYXNrKTsKKwl9CisJdGlfZ3Bpb19pbnRyX3NldCh0aV9n cGlvX3NjLCBiYW5rLCBtYXNrKTsKKwlUSV9HUElPX1VOTE9DSyh0aV9ncGlvX3NjKTsKK30KKwor c3RhdGljIGludAordGlfZ3Bpb19hY3RpdmF0ZV9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmlj ZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKK3sK KwlpbnQgcGluOworCXN0cnVjdCB0aV9ncGlvX3NvZnRjICpzYzsKKworCWlmICh0eXBlICE9IFNZ U19SRVNfSVJRKQorCQlyZXR1cm4gKEVOWElPKTsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0Yyhk ZXYpOworCisJLyogVW5tYXNrIHRoZSBpbnRlcnJ1cHQuICovCisJcGluID0gcm1hbl9nZXRfc3Rh cnQocmVzKTsKKwl0aV9ncGlvX3VubWFza19pcnEoKHZvaWQgKikodWludHB0cl90KXBpbik7CisK KwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50Cit0aV9ncGlvX2RlYWN0aXZhdGVfcmVzb3Vy Y2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCByaWQsCisJc3Ry dWN0IHJlc291cmNlICpyZXMpCit7CisJaW50IHBpbjsKKwlzdHJ1Y3QgdGlfZ3Bpb19zb2Z0YyAq c2M7CisKKwlpZiAodHlwZSAhPSBTWVNfUkVTX0lSUSkKKwkJcmV0dXJuIChFTlhJTyk7CisKKwlz YyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKKworCS8qIE1hc2sgdGhlIGludGVycnVwdC4gKi8K KwlwaW4gPSBybWFuX2dldF9zdGFydChyZXMpOworCXRpX2dwaW9fbWFza19pcnEoKHZvaWQgKiko dWludHB0cl90KXBpbik7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50Cit0aV9ncGlv X2NvbmZpZ19pbnRyKGRldmljZV90IGRldiwgaW50IGlycSwgZW51bSBpbnRyX3RyaWdnZXIgdHJp ZywKKwllbnVtIGludHJfcG9sYXJpdHkgcG9sKQoreworCWludCBiYW5rOworCXN0cnVjdCB0aV9n cGlvX3NvZnRjICpzYzsKKwl1aW50MzJfdCBtYXNrLCBvbGRyZWcsIHJlZywgdmFsOworCisJaWYg KGlycSA+IE1BWF9HUElPX1BJTlMpCisJCXJldHVybiAoRUlOVkFMKTsKKworCS8qIFRoZXJlIGlz IG5vIHN0YW5kYXJkIHRyaWdnZXIgb3IgcG9sYXJpdHkuICovCisJaWYgKHRyaWcgPT0gSU5UUl9U UklHR0VSX0NPTkZPUk0gfHwgcG9sID09IElOVFJfUE9MQVJJVFlfQ09ORk9STSkKKwkJcmV0dXJu IChFSU5WQUwpOworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CisJYmFuayA9IGlycSAv IFBJTlNfUEVSX0JBTks7CisJbWFzayA9ICgxVUwgPDwgKGlycSAlIFBJTlNfUEVSX0JBTkspKTsK KworCVRJX0dQSU9fTE9DSyh0aV9ncGlvX3NjKTsKKwkvKgorCSAqIFRSTSByZWNvbW1lbmRzIGFk ZCB0aGUgbmV3IGV2ZW50IGJlZm9yZSByZW1vdmUgdGhlIG9sZCBvbmUgdG8KKwkgKiBhdm9pZCBs b3NpbmcgaW50ZXJydXB0cy4KKwkgKi8KKwlvbGRyZWcgPSB0aV9ncGlvX2ludHJfcmVnKHNjLCBp cnEpOworCXNjLT5zY19pcnFfdHJpZ2dlcltpcnFdID0gdHJpZzsKKwlzYy0+c2NfaXJxX3BvbGFy aXR5W2lycV0gPSBwb2w7CisJcmVnID0gdGlfZ3Bpb19pbnRyX3JlZyhzYywgaXJxKTsKKwlpZiAo cmVnICE9IDApIHsKKwkJLyogQXBwbHkgdGhlIG5ldyBzZXR0aW5ncy4gKi8KKwkJdmFsID0gdGlf Z3Bpb19yZWFkXzQoc2MsIGJhbmssIHJlZyk7CisJCXRpX2dwaW9fd3JpdGVfNChzYywgYmFuaywg cmVnLCB2YWwgfCBtYXNrKTsKKwl9CisJaWYgKG9sZHJlZyAhPSAwKSB7CisJCS8qIFJlbW92ZSB0 aGUgb2xkIHNldHRpbmdzLiAqLworCQl2YWwgPSB0aV9ncGlvX3JlYWRfNChzYywgYmFuaywgb2xk cmVnKTsKKwkJdGlfZ3Bpb193cml0ZV80KHNjLCBiYW5rLCBvbGRyZWcsIHZhbCAmIH5tYXNrKTsK Kwl9CisJVElfR1BJT19VTkxPQ0sodGlfZ3Bpb19zYyk7CisKKwlyZXR1cm4gKDApOworfQorCitz dGF0aWMgaW50Cit0aV9ncGlvX3NldHVwX2ludHIoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGls ZCwgc3RydWN0IHJlc291cmNlICppcmVzLAorCWludCBmbGFncywgZHJpdmVyX2ZpbHRlcl90ICpm aWx0LCBkcml2ZXJfaW50cl90ICpoYW5kbGVyLAorCXZvaWQgKmFyZywgdm9pZCAqKmNvb2tpZXAp Cit7CisJc3RydWN0IHRpX2dwaW9fc29mdGMgKnNjOworCXN0cnVjdCBpbnRyX2V2ZW50ICpldmVu dDsKKwlpbnQgcGluLCBlcnJvcjsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCXBp biA9IHJtYW5fZ2V0X3N0YXJ0KGlyZXMpOworCisJaWYgKHBpbiA+IE1BWF9HUElPX1BJTlMpCisJ CXBhbmljKCIlczogYmFkIHBpbiAlZCIsIF9fZnVuY19fLCBwaW4pOworCisJZXZlbnQgPSBzYy0+ c2NfZXZlbnRzW3Bpbl07CisJaWYgKGV2ZW50ID09IE5VTEwpIHsKKwkJZXJyb3IgPSBpbnRyX2V2 ZW50X2NyZWF0ZSgmZXZlbnQsICh2b2lkICopKHVpbnRwdHJfdClwaW4sIDAsCisJCSAgICBwaW4s IHRpX2dwaW9fbWFza19pcnEsIHRpX2dwaW9fdW5tYXNrX2lycSwgTlVMTCwgTlVMTCwKKwkJICAg ICJncGlvJWQgcGluJWQ6IiwgZGV2aWNlX2dldF91bml0KGRldiksIHBpbik7CisKKwkJaWYgKGVy cm9yICE9IDApCisJCQlyZXR1cm4gKGVycm9yKTsKKworCQlzYy0+c2NfZXZlbnRzW3Bpbl0gPSBl dmVudDsKKwl9CisKKwlpbnRyX2V2ZW50X2FkZF9oYW5kbGVyKGV2ZW50LCBkZXZpY2VfZ2V0X25h bWV1bml0KGNoaWxkKSwgZmlsdCwKKwkgICAgaGFuZGxlciwgYXJnLCBpbnRyX3ByaW9yaXR5KGZs YWdzKSwgZmxhZ3MsIGNvb2tpZXApOworCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAor dGlfZ3Bpb190ZWFyZG93bl9pbnRyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIHN0cnVj dCByZXNvdXJjZSAqaXJlcywKKwl2b2lkICpjb29raWUpCit7CisJc3RydWN0IHRpX2dwaW9fc29m dGMgKnNjOworCWludCBwaW4sIGVycjsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOwor CXBpbiA9IHJtYW5fZ2V0X3N0YXJ0KGlyZXMpOworCisJaWYgKHBpbiA+IE1BWF9HUElPX1BJTlMp CisJCXBhbmljKCIlczogYmFkIHBpbiAlZCIsIF9fZnVuY19fLCBwaW4pOworCisJaWYgKHNjLT5z Y19ldmVudHNbcGluXSA9PSBOVUxMKQorCQlwYW5pYygiVHJ5aW5nIHRvIHRlYXJkb3duIHVub2Nj dXBpZWQgSVJRIik7CisKKwllcnIgPSBpbnRyX2V2ZW50X3JlbW92ZV9oYW5kbGVyKGNvb2tpZSk7 CisJaWYgKCFlcnIpCisJCXNjLT5zY19ldmVudHNbcGluXSA9IE5VTEw7CisKKwlyZXR1cm4gKGVy cik7Cit9CisKIHN0YXRpYyBwaGFuZGxlX3QKIHRpX2dwaW9fZ2V0X25vZGUoZGV2aWNlX3QgYnVz LCBkZXZpY2VfdCBkZXYpCiB7CkBAIC04OTAsNiArMTE4NywxMyBAQAogCURFVk1FVEhPRChncGlv X3Bpbl9zZXQsIHRpX2dwaW9fcGluX3NldCksCiAJREVWTUVUSE9EKGdwaW9fcGluX3RvZ2dsZSwg dGlfZ3Bpb19waW5fdG9nZ2xlKSwKIAorCS8qIEJ1cyBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0Qo YnVzX2FjdGl2YXRlX3Jlc291cmNlLCB0aV9ncGlvX2FjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZN RVRIT0QoYnVzX2RlYWN0aXZhdGVfcmVzb3VyY2UsIHRpX2dwaW9fZGVhY3RpdmF0ZV9yZXNvdXJj ZSksCisJREVWTUVUSE9EKGJ1c19jb25maWdfaW50ciwgdGlfZ3Bpb19jb25maWdfaW50ciksCisJ REVWTUVUSE9EKGJ1c19zZXR1cF9pbnRyLCB0aV9ncGlvX3NldHVwX2ludHIpLAorCURFVk1FVEhP RChidXNfdGVhcmRvd25faW50ciwgdGlfZ3Bpb190ZWFyZG93bl9pbnRyKSwKKwogCS8qIG9md19i dXMgaW50ZXJmYWNlICovCiAJREVWTUVUSE9EKG9md19idXNfZ2V0X25vZGUsIHRpX2dwaW9fZ2V0 X25vZGUpLAogCg== --001a11c335ce38a5b404f96138f2--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ8CS7pqo-ONpVfo-3mTEpREw5OUKo0GDxWD9%2BfN7FPRkJ6LdA>