From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <51374B98.7030103@hilscher.com> Date: Wed, 06 Mar 2013 14:58:48 +0100 From: Jerome Poncin MIME-Version: 1.0 References: <512C806F.2020209@hilscher.com> <512C9E78.1060208@siemens.com> <512CC5C6.8050204@hilscher.com> <512CC6A3.1010005@siemens.com> <512F120A.5060109@hilscher.com> <512F4005.60000@siemens.com> <512F48AA.8020601@hilscher.com> <5130B39C.70300@hilscher.com> <513465CF.4030807@hilscher.com> <51350D5B.6060309@xenomai.org> <5135CCDE.5090401@hilscher.com> <5135D667.8060309@siemens.com> <51361281.20307@hilscher.com> <51364A61.3090002@xenomai.org> <5136F9E9.9030604@hilscher.com> <5136FC1E.6060608@xenomai.org> <51371B89.4020103@hilscher.com> <513730CE.2070102@xenomai.org> In-Reply-To: <513730CE.2070102@xenomai.org> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Subject: Re: [Xenomai] Hilscher driver for cifX boards List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "xenomai@xenomai.org" R2lsbGVzLAoKSSBkb24ndCBrbm93LCBwZXJoYXBzIEkgbWlzc2VkIHNvbWUgcmVtYXJrcywgaXQn cyBwb3NzaWJsZSAoYnkgZXJyb3Igb3IgCmJ5IG1pc3VuZGVyc3RhbmRpbmcpIC4KCk5vdyBJIHJl YWQgYWdhaW4gYWxsIGRpc2N1c3Npb24gd2l0aCB5b3UgYW5kIEphbi4KCkkgcmVhZCBhZ2FpbiBt eSBjb2RlIHRyeWluZyB0byBhcHBseSBhbGwgeW91ciByZW1hcmtzLiBJIGdpdmUgeW91IG15IAps YXN0IHBhdGNoLgpBZnRlciB0aGF0IEkgZG9uJ3Qga25vdyB3aGF0IHRvIGRvLi4uCkknbSBhZ3Jl ZSB0byB0ZXN0IGNvZGUgaWYgeW91IGhhdmUgc29tZSBmaXggdG8gYWRkLCB0aGVyZWZvcmUgZG9u J3QgCmhlc2l0YXRlIHRvIHNlbmQgbWUgdGhlbS4KClRoaXMgY29kZSB3aXRoIG1vZGlmaWNhdGlv biBpcyBub3QgdGVzdCwgSSdtIHdhaXRpbmcgdGhhdCB0aGUgY29kZSBpcyAKY29tcGxpYW50IHRv IGRvIGEgbGFzdCB0ZXN0LgoKVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgeW91ciBoZWxwLAoKSGls c2NoZXIgRnJhbmNlCjEyLCBydWUgZHUgMzXDqG1lIFLDqWdpbWVudCBkJ0F2aWF0aW9uCk1pbmlw YXJjIGR1IENow6puZQo2OTUwMCBCUk9OCkZyYW5jZQpUw6lsLiA6ICszMyAoMCkgNCA3MiAzNyA5 OCA0MApGYXggIDogKzMzICgwKSA0IDc4IDI2IDgzIDI3Cmh0dHA6Ly93d3cuaGlsc2NoZXIuZnIK SElMU0NIRVIgRlJBTkNFIAlKw6lyw7RtZSBQb25jaW4KanBvbmNpbkBoaWxzY2hlci5jb20KSW5n w6luaWV1ciBEw6l2ZWxvcHBlbWVudCBMb2dpY2llbApUw6lsLiA6ICszMyAoMCkgNCA3MiAzNyA5 OCA0NAoKCi0tLS0tLS0tLS0tLS0tIG5leHQgcGFydCAtLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9wY2lfaWRzLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3Bj aV9pZHMuaAppbmRleCBkMjk4YmY0Li4zZjhkN2NjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1n ZW5lcmljL3BjaV9pZHMuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3BjaV9pZHMuaApAQCAt NDAsNCArNDAsNDUgQEAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9QTFhfOTA1NiAweDkwNTYKICNl bmRpZgogCisvKiBjaWZ4ICovCisjaWZuZGVmIFBDSV9WRU5ET1JfSURfSElMU0NIRVIKKyNkZWZp bmUgUENJX1ZFTkRPUl9JRF9ISUxTQ0hFUiAweDE1Q0YKKyNlbmRpZgorCisjaWZuZGVmIFBDSV9E RVZJQ0VfSURfSElMU0NIRVJfTkVUWAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0hJTFNDSEVSX05F VFggMHgwMDAwCisjZW5kaWYKKworI2lmbmRlZiBQQ0lfREVWSUNFX0lEX0hJTFNDSEVSX05FVFBM QworI2RlZmluZSBQQ0lfREVWSUNFX0lEX0hJTFNDSEVSX05FVFBMQyAweDAwMTAKKyNlbmRpZgor CisjaWZuZGVmIFBDSV9ERVZJQ0VfSURfSElMU0NIRVJfTkVUSkFDSworI2RlZmluZSBQQ0lfREVW SUNFX0lEX0hJTFNDSEVSX05FVEpBQ0sgMHgwMDIwCisjZW5kaWYKKworI2lmbmRlZiBQQ0lfU1VC REVWSUNFX0lEX05YU0JfUENBCisjZGVmaW5lIFBDSV9TVUJERVZJQ0VfSURfTlhTQl9QQ0EgMHgz MjM1CisjZW5kaWYKKworI2lmbmRlZiBQQ0lfU1VCREVWSUNFX0lEX05YUENBCisjZGVmaW5lIFBD SV9TVUJERVZJQ0VfSURfTlhQQ0EgMHgzMzM1CisjZW5kaWYKKworI2lmbmRlZiBQQ0lfU1VCREVW SUNFX0lEX05FVFBMQ19SQU0KKyNkZWZpbmUgUENJX1NVQkRFVklDRV9JRF9ORVRQTENfUkFNIDB4 MDAwMAorI2VuZGlmCisKKyNpZm5kZWYgUENJX1NVQkRFVklDRV9JRF9ORVRQTENfRkxBU0gKKyNk ZWZpbmUgUENJX1NVQkRFVklDRV9JRF9ORVRQTENfRkxBU0ggMHgwMDAxCisjZW5kaWYKKworI2lm bmRlZiBQQ0lfU1VCREVWSUNFX0lEX05FVEpBQ0tfUkFNCisjZGVmaW5lIFBDSV9TVUJERVZJQ0Vf SURfTkVUSkFDS19SQU0gMHgwMDAwCisjZW5kaWYKKworI2lmbmRlZiBQQ0lfU1VCREVWSUNFX0lE X05FVEpBQ0tfRkxBU0gKKyNkZWZpbmUgUENJX1NVQkRFVklDRV9JRF9ORVRKQUNLX0ZMQVNIIDB4 MDAwMQorI2VuZGlmCisKICNlbmRpZiAvKiBfWEVOT19BU01fR0VORVJJQ19QQ0lfSURTX0ggKi8K ZGlmZiAtLWdpdCBhL2tzcmMvZHJpdmVycy9jaWZ4L0tjb25maWcgYi9rc3JjL2RyaXZlcnMvY2lm eC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNWE0NWUKLS0t IC9kZXYvbnVsbAorKysgYi9rc3JjL2RyaXZlcnMvY2lmeC9LY29uZmlnCkBAIC0wLDAgKzEsMTEg QEAKK21lbnUgIkhpbHNjaGVyIGNpZlggZHJpdmVyIgorCitjb25maWcgWEVOT19EUklWRVJTX0NJ RlgKKwlkZXBlbmRzIG9uIFhFTk9fU0tJTl9SVERNCisJdHJpc3RhdGUgIkhpbHNjaGVyIGNpZlgi CisJaGVscAorCisJVGhpcyBkcml2ZXIgcHJvdmlkZXMgSGlsc2NoZXIgY2lmWCAKKwlvdmVyIFJU RE0uCisKK2VuZG1lbnUKZGlmZiAtLWdpdCBhL2tzcmMvZHJpdmVycy9jaWZ4L01ha2VmaWxlIGIv a3NyYy9kcml2ZXJzL2NpZngvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNDI1NTBiZAotLS0gL2Rldi9udWxsCisrKyBiL2tzcmMvZHJpdmVycy9jaWZ4L01ha2Vm aWxlCkBAIC0wLDAgKzEsMTMgQEAKK2lmbmVxICgkKFZFUlNJT04pLiQoUEFUQ0hMRVZFTCksMi40 KQorCisjIE1ha2VmaWxlIGZyYWcgZm9yIExpbnV4IHYyLjYgYW5kIHYzLngKKworRVhUUkFfQ0ZM QUdTICs9IC1EX19JTl9YRU5PTUFJX18gLUlpbmNsdWRlL3hlbm9tYWkgLUlkcml2ZXJzL3hlbm9t YWkvY2lmeAorCitvYmotJChDT05GSUdfWEVOT19EUklWRVJTX0NJRlgpICs9IHhlbm9fY2lmeF9w Y2kubworCit4ZW5vX2NpZnhfcGNpLXkgOj0gY2lmeF9wY2kubworCit4ZW5vX2NpZnhfcGNpLSQo Q09ORklHX1hFTk9fRFJJVkVSU19SVElQQ19DSUZYKSArPSBjaWZ4X3BjaS5vCisKK2VuZGlmCmRp ZmYgLS1naXQgYS9rc3JjL2RyaXZlcnMvY2lmeC9jaWZ4X3BjaS5jIGIva3NyYy9kcml2ZXJzL2Np ZngvY2lmeF9wY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDRkZGI3 Ci0tLSAvZGV2L251bGwKKysrIGIva3NyYy9kcml2ZXJzL2NpZngvY2lmeF9wY2kuYwpAQCAtMCww ICsxLDYzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBIaWxzY2hlciBGcmFuY2UgKEpQ KSA8d3d3LmhpbHNjaGVyLmZyPgorICoKKyAqIFhlbm9tYWkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFhl bm9tYWkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0CisgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIFhlbm9tYWk7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor I2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8 bGludXgvbW1hbi5oPgorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMveGVub21haS9wY2lfaWRzLmg+ CisKKyNpbmNsdWRlIDxydGRtL3J0ZG1fZHJpdmVyLmg+CisKK01PRFVMRV9MSUNFTlNFKCJHUEwi KTsKK01PRFVMRV9ERVNDUklQVElPTigiUlRETSBib2FyZCBkcml2ZXIgZm9yIENpZlggY2FyZHMi KTsKK01PRFVMRV9BVVRIT1IoIkhpbHNjaGVyIEZyYW5jZSAoSlApIDx3d3cuaGlsc2NoZXIuZnI+ Iik7CisKKyNkZWZpbmUgRFBNX0hPU1RfSU5UX0VOMCAgICAgICAgICAgICAgICAweGZmZjAKKyNk ZWZpbmUgRFBNX0hPU1RfSU5UX1NUQVQwICAgICAgICAgICAgICAweGZmZTAKKyNkZWZpbmUgUExY X0dQSU9fT0ZGU0VUICAgICAgICAgICAgICAgICAweDE1CisjZGVmaW5lIFBMWF9USU1JTkdfT0ZG U0VUICAgICAgICAgICAgICAgMHgwYQorCisjZGVmaW5lIERQTV9IT1NUX0lOVF9NQVNLICAgICAg ICAgICAgICAgMHhlNjAwZmZmZgorI2RlZmluZSBEUE1fSE9TVF9JTlRfR0xPQkFMX0VOICAgICAg ICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgUExYX0dQSU9fREFUQTBfTUFTSyAgICAgICAgICAgICAw eDAwMDAwMDA0CisjZGVmaW5lIFBMWF9HUElPX0RBVEExX01BU0sgICAgICAgICAgICAgMHgwMDAw MDAyMAorCisjZGVmaW5lIE5YX1BDQV9QQ0lfOF9CSVRfRFBNX01PREUgICAgICAgMHg1NDMxRjk2 MgorI2RlZmluZSBOWF9QQ0FfUENJXzE2X0JJVF9EUE1fTU9ERSAgICAgIDB4NDA3M0Y4RTIKKyNk ZWZpbmUgTlhfUENBX1BDSV8zMl9CSVRfRFBNX01PREUgICAgICAweDQwODI0MTIyCisKKy8qIE51 bWJlciBvZiBiYXIgKi8KKy8qIHBvaW50cyB0byB0aGUgRFBNIC0+IG5ldFgsIG5ldFBMQywgbmV0 SkFDSyAqLworI2RlZmluZSBEUE1fQkFSICAgICAgICAgICAgICAgICAgICAgICAgIDAKKy8qIHBv aW50cyB0byB0aGUgb3B0aW9uYWwgZXh0ZW5kZWQgbWVtb3J5ICAgICAqLworI2RlZmluZSBFWFRf TUVNX0JBUiAgICAgICAgICAgICAgICAgICAgIDEKKy8qIHBvaW50cyB0byB0aGUgRFBNIC0+IG5l dFhQTFggICAgICAgICAgICAgICAqLworI2RlZmluZSBQTFhfRFBNX0JBUiAgICAgICAgICAgICAg ICAgICAgIDIKKy8qIHRpbWluZyBjb25maWcgcmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAq LworI2RlZmluZSBQWEFfUExYX0JBUiAgICAgICAgICAgICAgICAgICAgIDAKKworLyogSW5kZXgg b2YgaW9faW5mbyBzdHJ1Y3R1cmUncyBtZW1vcnkgYXJyYXkgKi8KKy8qIGZpcnN0IG1hcHBpbmcg ZGVzY3JpYmVzIERQTSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRFBNX0lOREVYICAgICAgICAg ICAgICAgICAgICAgICAwCisvKiBzZWNvbmQgbWFwcGluZyBkZXNjcmliZXMgZXh0ZW5kZWQgbWVt b3J5ICovCisjZGVmaW5lIEVYVF9NRU1fSU5ERVggICAgICAgICAgICAgICAgICAgMQorCisjZGVm aW5lIE1BWF9NQVBTICAgICAgICAgICAgICAgICAgICAgICAgMgorCisjZGVmaW5lIE1FTV9QSFlT ICAgICAgICAgICAgICAgICAgICAgICAgMQorCisjZGVmaW5lIERSSVZFUl9OQU1FICAgICAgICAg ICAgICAgICAgICAgInJ0ZG1fY2lmeCIKKyNkZWZpbmUgUEVSSVBIRVJBTF9OQU1FICAgICAgICAg ICAgICAgICAiY2lmeCIKKyNkZWZpbmUgUFJPVklERVJfTkFNRSAgICAgICAgICAgICAgICAgICAi SGlsc2NoZXIiCisKKy8qIG5hbWUgb2YgYSBOWFNCLVBDQSBvciBOWFBDQS1QQ0kgY2FyZCAqLwor I2RlZmluZSBDSUZYX1JURE1fUExYX0NBUkRfTkFNRSAgICAgICAgICJuZXR4X3BseCIKKy8qIG5h bWUgb2YgYSBjaWZYIFBDSSBjYXJkICAgICAgICAgICAgICAqLworI2RlZmluZSBDSUZYX1JURE1f Q0FSRF9OQU1FICAgICAgICAgICAgICJuZXR4IgorLyogbmFtZSBvZiBhIG5ldFBMQyBQQ0kgY2Fy ZCAgICAgICAgICAgICovCisjZGVmaW5lIENJRlhfUlRETV9ORVRQTENfQ0FSRF9OQU1FICAgICAg Im5ldHBsYyIKKy8qIG5hbWUgb2YgYSBuZXRKQUNLIFBDSSBjYXJkICAgICAgICAgICAqLworI2Rl ZmluZSBDSUZYX1JURE1fTkVUSkFDS19DQVJEX05BTUUgICAgICJuZXRqYWNrIgorCitzdHJ1Y3Qg aW9fbWVtIHsKKwl1aW50MzJfdCBhZGRyOworCXVpbnQzMl90IHNpemU7CisJaW50MzJfdCBtZW10 eXBlOworCXZvaWQgX19pb21lbSAqaW50ZXJuYWxfYWRkcjsKK307CisKK3N0cnVjdCBpb19pbmZv IHsKKwlzdHJ1Y3QgaW9fbWVtIG1lbVtNQVhfTUFQU107CisJaW50MzJfdCBpcnE7CisJYm9vbCBp cnFfZW5hYmxlOworCWJvb2wgaXJxX3JlZ2lzdGVyZWQ7CisJcnRkbV9pcnFfdCBpcnFfaGFuZGxl OworCXN0cnVjdCBleHRfaW9faW5mbyAqcHJpdjsKK307CisKK3N0cnVjdCBleHRfaW9faW5mbyB7 CisJdWludDMyX3QgX19pb21lbSAqcGx4OworCXVpbnQ4X3QgZHBtX21vZGU7CisJdWludDMyX3Qg cGx4X3RpbWluZzsKK307CisKK3N0cnVjdCBpb19tYXBfbWVtIHsKKwl1aW50MzJfdCBwaHlzX2Fk ZHI7CisJdm9pZCAqKnZpcnRfYWRkcjsKKwl1aW50MzJfdCBsZW5ndGg7Cit9OworCitzdGF0aWMg c3RydWN0IGlvX2luZm8gKmNpZnhfZ2V0X2RldmljZV9kYXRhKHN0cnVjdCBydGRtX2RldmljZSAq aW5mbyk7CitzdGF0aWMgc3RydWN0IGV4dF9pb19pbmZvICpjaWZ4X2dldF9wcml2YXRlKHN0cnVj dCBydGRtX2RldmljZSAqaW5mbyk7CisKK3N0YXRpYyBpbnQgY2lmeF9zZXRfcGx4X3RpbWluZyhz dHJ1Y3QgcnRkbV9kZXZpY2UgKmluZm8pOworc3RhdGljIGludCBjaWZ4X2dldF9wbHhfdGltaW5n KHN0cnVjdCBydGRtX2RldmljZSAqaW5mbyk7CitzdGF0aWMgaW50IGNpZnhfZ2V0X2RwbV9tb2Rl KHN0cnVjdCBydGRtX2RldmljZSAqaW5mbyk7CisKK3N0YXRpYyBpbnQgY2lmeF9wY2lfb3Blbihz dHJ1Y3QgcnRkbV9kZXZfY29udGV4dCAqY29udGV4dCwKKwkJCSBydGRtX3VzZXJfaW5mb190ICp1 c2VyX2luZm8sIGludCBvZmxhZ3MpOworc3RhdGljIGludCBjaWZ4X3BjaV9jbG9zZShzdHJ1Y3Qg cnRkbV9kZXZfY29udGV4dCAqY29udGV4dCwKKwkJCSAgcnRkbV91c2VyX2luZm9fdCAqdXNlcl9p bmZvKTsKK3N0YXRpYyBzc2l6ZV90IGNpZnhfcGNpX3JlYWQoc3RydWN0IHJ0ZG1fZGV2X2NvbnRl eHQgKmNvbnRleHQsCisJCQkgICAgIHJ0ZG1fdXNlcl9pbmZvX3QgKnVzZXJfaW5mbywgdm9pZCAq YnVmLAorCQkJICAgICBzaXplX3QgbmJ5dGUpOworc3RhdGljIHNzaXplX3QgY2lmeF9wY2lfd3Jp dGUoc3RydWN0IHJ0ZG1fZGV2X2NvbnRleHQgKmNvbnRleHQsCisJCQkgICAgICBydGRtX3VzZXJf aW5mb190ICp1c2VyX2luZm8sIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCSAgICAgIHNpemVfdCBuYnl0 ZSk7CisKK3N0YXRpYyBpbnQgY2lmeF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKmRldiwgY29u c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKTsKK3N0YXRpYyB2b2lkIGNpZnhfcGNpX3JlbW92 ZShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKKworLyogTnVtYmVyIG9yIGNpZnggZm91bmQgYW5kIG9w ZW4gKi8KK3N0YXRpYyBpbnQzMl90IGNpZnhfbnVtOworCisvKiBSVERNIERldmljZSBpbmZvcm1h dGlvbiBzdHJ1Y3R1cmUgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnRkbV9kZXZpY2UgX19pbml0 ZGF0YSBjaWZ4X2RldmljZV90bXBsID0geworCS5zdHJ1Y3RfdmVyc2lvbiA9IFJURE1fREVWSUNF X1NUUlVDVF9WRVIsCisKKwkuZGV2aWNlX2ZsYWdzID0gUlRETV9OQU1FRF9ERVZJQ0UsCisJLmNv bnRleHRfc2l6ZSA9IDAsCisJLmRldmljZV9uYW1lID0gIiIsCisKKwkub3Blbl9ucnQgPSBjaWZ4 X3BjaV9vcGVuLAorCisJLm9wcyA9IHsKKwkJLmNsb3NlX25ydCA9IGNpZnhfcGNpX2Nsb3NlLAor CisJCS5yZWFkX25ydCA9IGNpZnhfcGNpX3JlYWQsCisJCS53cml0ZV9ucnQgPSBjaWZ4X3BjaV93 cml0ZSwKKworCQkuaW9jdGxfcnQgPSBOVUxMLAorCQkuaW9jdGxfbnJ0ID0gTlVMTCwKKworCQku cmVhZF9ydCA9IE5VTEwsCisJCS53cml0ZV9ydCA9IE5VTEwsCisJCX0sCisKKwkuZGV2aWNlX2Ns YXNzID0gUlRETV9DTEFTU19FWFBFUklNRU5UQUwsCisJLmRldmljZV9zdWJfY2xhc3MgPSBSVERN X1NVQkNMQVNTX0dFTkVSSUMsCisJLnByb2ZpbGVfdmVyc2lvbiA9IDEsCisJLmRyaXZlcl9uYW1l ID0gRFJJVkVSX05BTUUsCisJLmRyaXZlcl92ZXJzaW9uID0gUlRETV9EUklWRVJfVkVSKDEsIDAs IDApLAorCS5wcm92aWRlcl9uYW1lID0gUFJPVklERVJfTkFNRSwKK307CisKKy8qIERldmljZSB0 YWJsZSAqLworc3RhdGljIERFRklORV9QQ0lfREVWSUNFX1RBQkxFKGNpZnhfcGNpX3RibCkgPSB7 CisJe1BDSV9WRU5ET1JfSURfSElMU0NIRVIsIFBDSV9ERVZJQ0VfSURfSElMU0NIRVJfTkVUWCwK KwkwLCAwfSwKKwl7UENJX1ZFTkRPUl9JRF9QTFgsIFBDSV9ERVZJQ0VfSURfUExYXzkwMzAsCisJ UENJX1ZFTkRPUl9JRF9QTFgsIFBDSV9TVUJERVZJQ0VfSURfTlhTQl9QQ0F9LAorCXtQQ0lfVkVO RE9SX0lEX1BMWCwgUENJX0RFVklDRV9JRF9QTFhfOTAzMCwKKwlQQ0lfVkVORE9SX0lEX1BMWCwg UENJX1NVQkRFVklDRV9JRF9OWFBDQX0sCisJe1BDSV9WRU5ET1JfSURfSElMU0NIRVIsIFBDSV9E RVZJQ0VfSURfSElMU0NIRVJfTkVUUExDLAorCVBDSV9WRU5ET1JfSURfSElMU0NIRVIsIFBDSV9T VUJERVZJQ0VfSURfTkVUUExDX1JBTX0sCisJe1BDSV9WRU5ET1JfSURfSElMU0NIRVIsIFBDSV9E RVZJQ0VfSURfSElMU0NIRVJfTkVUUExDLAorCVBDSV9WRU5ET1JfSURfSElMU0NIRVIsIFBDSV9T VUJERVZJQ0VfSURfTkVUUExDX0ZMQVNIfSwKKwl7UENJX1ZFTkRPUl9JRF9ISUxTQ0hFUiwgUENJ X0RFVklDRV9JRF9ISUxTQ0hFUl9ORVRKQUNLLAorCVBDSV9WRU5ET1JfSURfSElMU0NIRVIsIFBD SV9TVUJERVZJQ0VfSURfTkVUSkFDS19SQU19LAorCXtQQ0lfVkVORE9SX0lEX0hJTFNDSEVSLCBQ Q0lfREVWSUNFX0lEX0hJTFNDSEVSX05FVEpBQ0ssCisJUENJX1ZFTkRPUl9JRF9ISUxTQ0hFUiwg UENJX1NVQkRFVklDRV9JRF9ORVRKQUNLX0ZMQVNIfSwKKwl7IDAsfQorfTsKKworLyogUlRETSBj aWZYIERyaXZlciAqLworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGNpZnhfcGNpX2RyaXZlciA9 IHsKKwkubmFtZSA9ICJjaWZ4IiwKKwkuaWRfdGFibGUgPSBjaWZ4X3BjaV90YmwsCisJLnByb2Jl ID0gY2lmeF9wY2lfcHJvYmUsCisJLnJlbW92ZSA9IGNpZnhfcGNpX3JlbW92ZSwKK307CisKKy8q CisgKgljaWZ4X3J0ZG1fZGV2aWNlX3RvX2RldmljZV9kYXRhCisgKglHZXQgZGV2aWNlX2RhdGEg c3RydWN0dXJlCisgKi8KK3N0YXRpYyBzdHJ1Y3QgaW9faW5mbyAqY2lmeF9nZXRfZGV2aWNlX2Rh dGEoc3RydWN0IHJ0ZG1fZGV2aWNlICppbmZvKQoreworCXJldHVybiBpbmZvLT5kZXZpY2VfZGF0 YTsKK30KKworLyoKKyAqCWNpZnhfcnRkbV9kZXZpY2VfdG9fcHJpdmF0ZQorICoJR2V0IGV4dF9p b19pbmZvIHN0cnVjdHVyZQorICovCitzdGF0aWMgc3RydWN0IGV4dF9pb19pbmZvICpjaWZ4X2dl dF9wcml2YXRlKHN0cnVjdCBydGRtX2RldmljZSAqaW5mbykKK3sKKwlyZXR1cm4gKChzdHJ1Y3Qg aW9faW5mbyAqKWluZm8tPmRldmljZV9kYXRhKS0+cHJpdjsKK30KKworLyoKKyAqCWNpZnhfc2V0 X3BseF90aW1pbmcKKyAqCVNldCBwbHggdGltaW5nCisgKi8KK3N0YXRpYyBpbnQgY2lmeF9zZXRf cGx4X3RpbWluZyhzdHJ1Y3QgcnRkbV9kZXZpY2UgKmluZm8pCit7CisJc3RydWN0IGV4dF9pb19p bmZvICpleHRfaW5mbyA9IGNpZnhfZ2V0X3ByaXZhdGUoaW5mbyk7CisJdWludDMyX3QgX19pb21l bSAqcGx4X3RpbWluZzsKKworCWlmIChleHRfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT0RF VjsKKworCXBseF90aW1pbmcgPSBleHRfaW5mby0+cGx4ICsgUExYX1RJTUlOR19PRkZTRVQ7CisJ KnBseF90aW1pbmcgPSBleHRfaW5mby0+cGx4X3RpbWluZzsKKworCXJldHVybiAwOworfQorCisv KgorICogY2lmeF9nZXRfcGx4X3RpbWluZworICogR2V0IHBseCB0aW1pbmcKKyAqLworc3RhdGlj IGludCBjaWZ4X2dldF9wbHhfdGltaW5nKHN0cnVjdCBydGRtX2RldmljZSAqaW5mbykKK3sKKwlz dHJ1Y3QgZXh0X2lvX2luZm8gKmV4dF9pbmZvID0gY2lmeF9nZXRfcHJpdmF0ZShpbmZvKTsKKwor CWlmIChleHRfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXN3aXRjaCAoZXh0 X2luZm8tPmRwbV9tb2RlKSB7CisJY2FzZSA4OgorCQlleHRfaW5mby0+cGx4X3RpbWluZyA9IE5Y X1BDQV9QQ0lfOF9CSVRfRFBNX01PREU7CisJCWJyZWFrOworCWNhc2UgMTY6CisJCWV4dF9pbmZv LT5wbHhfdGltaW5nID0gTlhfUENBX1BDSV8xNl9CSVRfRFBNX01PREU7CisJCWJyZWFrOworCWNh c2UgMzI6CisJCWV4dF9pbmZvLT5wbHhfdGltaW5nID0gTlhfUENBX1BDSV8zMl9CSVRfRFBNX01P REU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVy biAwOworfQorCisvKgorICogY2lmeF9nZXRfZHBtX21vZGUKKyAqIEdldCBkcG0gbW9kZQorICov CitzdGF0aWMgaW50IGNpZnhfZ2V0X2RwbV9tb2RlKHN0cnVjdCBydGRtX2RldmljZSAqaW5mbykK K3sKKwlzdHJ1Y3QgZXh0X2lvX2luZm8gKmV4dF9pbmZvID0gY2lmeF9nZXRfcHJpdmF0ZShpbmZv KTsKKwl1aW50MzJfdCBfX2lvbWVtICpwbHhfZ3BpbzsKKworCWlmIChleHRfaW5mbyA9PSBOVUxM KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXBseF9ncGlvID0gZXh0X2luZm8tPnBseCArIFBMWF9H UElPX09GRlNFVDsKKworCWlmICgoKnBseF9ncGlvICYgUExYX0dQSU9fREFUQTBfTUFTSykKKwkg ICAgJiYgfigqcGx4X2dwaW8gJiBQTFhfR1BJT19EQVRBMV9NQVNLKSkKKwkJZXh0X2luZm8tPmRw bV9tb2RlID0gODsKKwllbHNlIGlmICh+KCpwbHhfZ3BpbyAmIFBMWF9HUElPX0RBVEEwX01BU0sp CisJCSAmJiAoKnBseF9ncGlvICYgUExYX0dQSU9fREFUQTFfTUFTSykpCisJCWV4dF9pbmZvLT5k cG1fbW9kZSA9IDMyOworCWVsc2UgaWYgKH4oKnBseF9ncGlvICYgUExYX0dQSU9fREFUQTBfTUFT SykKKwkJICYmIH4oKnBseF9ncGlvICYgUExYX0dQSU9fREFUQTFfTUFTSykpCisJCWV4dF9pbmZv LT5kcG1fbW9kZSA9IDE2OworCWVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsK K30KKworLyoKKyAqIGNpZnhfcGNpX29wZW4KKyAqIE9wZW4gUlRETSBjaWZ4IHBjaSBkcml2ZXIK KyAqLworc3RhdGljIGludCBjaWZ4X3BjaV9vcGVuKHN0cnVjdCBydGRtX2Rldl9jb250ZXh0ICpj b250ZXh0LAorCQkJIHJ0ZG1fdXNlcl9pbmZvX3QgKnVzZXJfaW5mbywgaW50IG9mbGFncykKK3sK KwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGNpZnhfcGNpX2Nsb3NlCisgKiBDbG9zZSBSVERNIGNp ZnggcGNpIGRyaXZlcgorICovCitzdGF0aWMgaW50IGNpZnhfcGNpX2Nsb3NlKHN0cnVjdCBydGRt X2Rldl9jb250ZXh0ICpjb250ZXh0LAorCQkJICBydGRtX3VzZXJfaW5mb190ICp1c2VyX2luZm8p Cit7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBjaWZ4X3BjaV9yZWFkCisgKiBSZWFkCisgKi8K K3N0YXRpYyBzc2l6ZV90IGNpZnhfcGNpX3JlYWQoc3RydWN0IHJ0ZG1fZGV2X2NvbnRleHQgKmNv bnRleHQsCisJCQkgICAgIHJ0ZG1fdXNlcl9pbmZvX3QgKnVzZXJfaW5mbywgdm9pZCAqYnVmLAor CQkJICAgICBzaXplX3QgbmJ5dGUpCit7CisJc3RydWN0IHJ0ZG1fZGV2aWNlICppbmZvID0gKHN0 cnVjdCBydGRtX2RldmljZSAqKWNvbnRleHQtPmRldmljZTsKKworCWlmIChuYnl0ZSA+IHNpemVv ZihzdHJ1Y3QgaW9faW5mbykpCisJCXJldHVybiAwOworCisJLyogQ29weSBkYXRhIGluZm9ybWF0 aW9uIGZvciB1c2VybGFuZCAqLworCWlmIChydGRtX3NhZmVfY29weV90b191c2VyKHVzZXJfaW5m bywgYnVmLCBpbmZvLT5kZXZpY2VfZGF0YSwgbmJ5dGUpKQorCQlyZXR1cm4gMDsKKworCXJldHVy biBuYnl0ZTsKK30KKworLyoKKyAqIGNpZnhfcGNpX3dyaXRlCisgKiB3cml0ZQorICovCitzdGF0 aWMgc3NpemVfdCBjaWZ4X3BjaV93cml0ZShzdHJ1Y3QgcnRkbV9kZXZfY29udGV4dCAqY29udGV4 dCwKKwkJCSAgICAgIHJ0ZG1fdXNlcl9pbmZvX3QgKnVzZXJfaW5mbywgY29uc3Qgdm9pZCAqYnVm LAorCQkJICAgICAgc2l6ZV90IG5ieXRlKQoreworCXN0cnVjdCBpb19tYXBfbWVtIG1hcF9tZW07 CisJaW50IHJldDsKKworCXN3aXRjaCAobmJ5dGUpIHsKKwljYXNlIHNpemVvZihtYXBfbWVtKToK KwkJLyogQ29weSBkYXRhIGluZm9ybWF0aW9uIGZvciBLZXJuZWwgKi8KKwkJaWYgKHJ0ZG1fc2Fm ZV9jb3B5X2Zyb21fdXNlcih1c2VyX2luZm8sICZtYXBfbWVtLCBidWYsIG5ieXRlKSkKKwkJCXJl dHVybiAwOworCisJCWlmICgqbWFwX21lbS52aXJ0X2FkZHIgPT0gTlVMTCkgeworCQkJLyogTWFw IHBoeXNpY2FsIG9uIHZpcnR1YWwgbWVtb3J5ICovCisJCQlyZXQgPSBydGRtX2lvbWFwX3RvX3Vz ZXIodXNlcl9pbmZvLAorCQkJCQkJbWFwX21lbS4KKwkJCQkJCXBoeXNfYWRkciwKKwkJCQkJCW1h cF9tZW0ubGVuZ3RoLAorCQkJCQkJKFBST1RfUkVBRCB8IFBST1RfV1JJVEUpLAorCQkJCQkJbWFw X21lbS52aXJ0X2FkZHIsCisJCQkJCQlOVUxMLAorCQkJCQkJTlVMTCk7CisKKwkJCWlmIChyZXQg IT0gMCkKKwkJCQlyZXR1cm4gMDsKKwkJfSBlbHNlIHsKKwkJCS8qIFVuYXAgdmlydHVhbCBtZW1v cnkgKi8KKwkJCXJldCA9IHJ0ZG1fbXVubWFwKHVzZXJfaW5mbywKKwkJCQkJKm1hcF9tZW0udmly dF9hZGRyLAorCQkJCQltYXBfbWVtLmxlbmd0aCk7CisKKwkJCWlmIChyZXQgIT0gMCkKKwkJCQly ZXR1cm4gMDsKKwkJfQorCQlicmVhazsKKworCWRlZmF1bHQ6CisJCS8qIEVycm9yICovCisJCXJl dHVybiAwOworCX0KKworCXJldHVybiBuYnl0ZTsKK30KKworc3RhdGljIGludCBjaWZ4X3BjaV9w cm9iZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQp Cit7CisJc3RydWN0IHJ0ZG1fZGV2aWNlICppbmZvID0gTlVMTDsKKwlzdHJ1Y3QgaW9faW5mbyAq ZGV2aWNlX2RhdGEgPSBOVUxMOworCWludDMyX3QgYmFyOworCWludDMyX3QgcmV0OworCisJLyog QWxsb2NhdGUgZGV2aWNlIGRyaXZlciBzdHJ1Y3R1cmUgKi8KKwlpbmZvID0gcnRkbV9tYWxsb2Mo c2l6ZW9mKHN0cnVjdCBydGRtX2RldmljZSkpOworCisJaWYgKGluZm8gPT0gTlVMTCkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlyZXQgPSBwY2lfZW5hYmxlX2RldmljZShkZXYpOworCWlmIChyZXQg IT0gMCkKKwkJZ290byBvdXRfZnJlZTsKKworCXJldCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMoZGV2 LCBEUklWRVJfTkFNRSk7CisJaWYgKHJldCAhPSAwKQorCQlnb3RvIG91dF9kaXNhYmxlOworCisJ LyogSW5pdGlhbGl6ZSBzdHJ1Y3R1cmUgd2l0aCBkZWZhdWx0IHZhbHVlcyAqLworCW1lbWNweShp bmZvLCAmY2lmeF9kZXZpY2VfdG1wbCwgc2l6ZW9mKCppbmZvKSk7CisKKwlpbmZvLT5kZXZpY2Vf aWQgPSBpZC0+ZGV2aWNlOworCXNucHJpbnRmKGluZm8tPmRldmljZV9uYW1lLCBSVERNX01BWF9E RVZOQU1FX0xFTiwgImNpZnglaSIsIGNpZnhfbnVtKTsKKwlpbmZvLT5wcm9jX25hbWUgPSBpbmZv LT5kZXZpY2VfbmFtZTsKKworCXN3aXRjaCAoaWQtPmRldmljZSkgeworCWNhc2UgUENJX0RFVklD RV9JRF9ISUxTQ0hFUl9ORVRYOgorCQliYXIgPSBEUE1fQkFSOworCQlpbmZvLT5wZXJpcGhlcmFs X25hbWUgPSBDSUZYX1JURE1fQ0FSRF9OQU1FOworCQlicmVhazsKKwljYXNlIFBDSV9ERVZJQ0Vf SURfSElMU0NIRVJfTkVUUExDOgorCQliYXIgPSBEUE1fQkFSOworCQlpbmZvLT5wZXJpcGhlcmFs X25hbWUgPSBDSUZYX1JURE1fTkVUUExDX0NBUkRfTkFNRTsKKwkJYnJlYWs7CisJY2FzZSBQQ0lf REVWSUNFX0lEX0hJTFNDSEVSX05FVEpBQ0s6CisJCWJhciA9IERQTV9CQVI7CisJCWluZm8tPnBl cmlwaGVyYWxfbmFtZSA9IENJRlhfUlRETV9ORVRKQUNLX0NBUkRfTkFNRTsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJYmFyID0gUExYX0RQTV9CQVI7CisJCWluZm8tPnBlcmlwaGVyYWxfbmFtZSA9 IENJRlhfUlRETV9QTFhfQ0FSRF9OQU1FOworCQlicmVhazsKKwl9CisKKwlpbmZvLT5kZXZpY2Vf ZGF0YSA9IE5VTEw7CisKKwkvKiBBbGxvY2F0ZSBzcGVjaWZpYyBkYXRhIHN0cmN1dHVyZSBmb3Ig ZGV2aWNlICovCisJZGV2aWNlX2RhdGEgPSBydGRtX21hbGxvYyhzaXplb2YoKmRldmljZV9kYXRh KSk7CisKKwlpZiAoZGV2aWNlX2RhdGEgPT0gTlVMTCkKKwkJZ290byBvdXRfcmVsZWFzZTsKKwor CW1lbXNldChkZXZpY2VfZGF0YSwgMCwgc2l6ZW9mKCpkZXZpY2VfZGF0YSkpOworCisJLyogQkFS IDAgb3IgMiBwb2ludHMgdG8gdGhlIGNhcmQncyBkdWFsIHBvcnQgbWVtb3J5ICovCisJZGV2aWNl X2RhdGEtPm1lbVtEUE1fSU5ERVhdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBiYXIp OworCisJaWYgKGRldmljZV9kYXRhLT5tZW1bRFBNX0lOREVYXS5hZGRyID09IDApCisJCWdvdG8g b3V0X3JlbGVhc2U7CisKKwlkZXZpY2VfZGF0YS0+bWVtW0RQTV9JTkRFWF0uaW50ZXJuYWxfYWRk ciA9CisJICAgIGlvcmVtYXBfbm9jYWNoZShwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBiYXIpLAor CQkJCQkJcGNpX3Jlc291cmNlX2xlbihkZXYsIGJhcikpOworCisJaWYgKGRldmljZV9kYXRhLT5t ZW1bRFBNX0lOREVYXS5pbnRlcm5hbF9hZGRyID09IDApCisJCWdvdG8gb3V0X3JlbGVhc2U7CisK KwlkZXZfaW5mbygmZGV2LT5kZXYsICJEUE0gYXQgJTA4WFxuIiwgZGV2aWNlX2RhdGEtPm1lbVtE UE1fSU5ERVhdLmFkZHIpOworCWRldmljZV9kYXRhLT5tZW1bRFBNX0lOREVYXS5zaXplID0gcGNp X3Jlc291cmNlX2xlbihkZXYsIGJhcik7CisJZGV2aWNlX2RhdGEtPm1lbVtEUE1fSU5ERVhdLm1l bXR5cGUgPSBNRU1fUEhZUzsKKworCS8qIG1hcCBleHRlbmRlZCBtZW0gKEJBUiAxIHBvaW50cyB0 byB0aGUgZXh0ZW5kZWQgbWVtb3J5KSAqLworCWRldmljZV9kYXRhLT5tZW1bRVhUX01FTV9JTkRF WF0uYWRkciA9CisJCQkJCXBjaV9yZXNvdXJjZV9zdGFydChkZXYsIEVYVF9NRU1fQkFSKTsKKwor CS8qIGV4dGVuZGVkIG1lbW9yeSBpcyBvcHRpb25hbCwgc28gZG9uJ3QgY2FyZSBpZiBpdCBpcyBu b3QgcHJlc2VudCAqLworCWlmIChkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1fSU5ERVhdLmFkZHIg IT0gMCkgeworCQlkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1fSU5ERVhdLmludGVybmFsX2FkZHIg PQorCQkJaW9yZW1hcF9ub2NhY2hlKHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIEVYVF9NRU1fQkFS KSwKKwkJCQkJcGNpX3Jlc291cmNlX2xlbihkZXYsIEVYVF9NRU1fQkFSKSk7CisKKwkJaWYgKGRl dmljZV9kYXRhLT5tZW1bRVhUX01FTV9JTkRFWF0uaW50ZXJuYWxfYWRkciA9PSAwKQorCQkJZ290 byBvdXRfdW5tYXA7CisKKwkJZGV2X2luZm8oJmRldi0+ZGV2LAorCQkJCSJleHRlbmRlZCBtZW1v cnkgYXQgJTA4WFxuIiwKKwkJCQlkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1fSU5ERVhdLmFkZHIp OworCQlkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1fSU5ERVhdLnNpemUgPQorCQkJCQlwY2lfcmVz b3VyY2VfbGVuKGRldiwgRVhUX01FTV9CQVIpOworCQlkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1f SU5ERVhdLm1lbXR5cGUgPSBNRU1fUEhZUzsKKwl9CisKKwlpZiAoKGlkLT5kZXZpY2UgPT0gUENJ X0RFVklDRV9JRF9ISUxTQ0hFUl9ORVRYKQorCQl8fCAoaWQtPmRldmljZSA9PSBQQ0lfREVWSUNF X0lEX0hJTFNDSEVSX05FVFBMQykKKwkJfHwgKGlkLT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9I SUxTQ0hFUl9ORVRKQUNLKSkgeworCQkvKiBtYWtlIHN1cmUgYWxsIGludGVycnVwdHMgYXJlIGRp c2FibGVkICovCisJCWlvd3JpdGUzMigwLCBkZXZpY2VfZGF0YS0+bWVtW0RQTV9JTkRFWF0uaW50 ZXJuYWxfYWRkcgorCQkJCQkJCSsgRFBNX0hPU1RfSU5UX0VOMCk7CisJCWRldmljZV9kYXRhLT5w cml2ID0gTlVMTDsKKwl9IGVsc2UgaWYgKGlkLT5zdWJkZXZpY2UgPT0gUENJX1NVQkRFVklDRV9J RF9OWFBDQSkgeworCQkvKiBtYXAgUExYIHJlZ2lzdGVycyAqLworCQlzdHJ1Y3QgZXh0X2lvX2lu Zm8gKmV4dF9pbmZvOworCisJCWV4dF9pbmZvID0gcnRkbV9tYWxsb2Moc2l6ZW9mKCpleHRfaW5m bykpOworCisJCWlmIChleHRfaW5mbyA9PSBOVUxMKQorCQkJZ290byBvdXRfdW5tYXA7CisKKwkJ ZGV2aWNlX2RhdGEtPnByaXYgPSBleHRfaW5mbzsKKworCQkvKiBzZXQgUFhBIFBMWCBUaW1pbmdz ICovCisJCWV4dF9pbmZvLT5wbHggPSBpb3JlbWFwX25vY2FjaGUoCisJCQkJCXBjaV9yZXNvdXJj ZV9zdGFydChkZXYsIFBYQV9QTFhfQkFSKSwKKwkJCQkJcGNpX3Jlc291cmNlX2xlbihkZXYsIFBY QV9QTFhfQkFSKSk7CisKKwkJaWYgKGV4dF9pbmZvLT5wbHggPT0gTlVMTCkKKwkJCWdvdG8gb3V0 X3VubWFwOworCQlpZiAoY2lmeF9nZXRfZHBtX21vZGUoaW5mbykpCisJCQlnb3RvIG91dF91bm1h cF9wbHg7CisJCWlmIChjaWZ4X2dldF9wbHhfdGltaW5nKGluZm8pKQorCQkJZ290byBvdXRfdW5t YXBfcGx4OworCQlpZiAoY2lmeF9zZXRfcGx4X3RpbWluZyhpbmZvKSkKKwkJCWdvdG8gb3V0X3Vu bWFwX3BseDsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgZXh0X2lvX2luZm8gKmV4dF9pbmZvOworCisJ CWV4dF9pbmZvID0gcnRkbV9tYWxsb2Moc2l6ZW9mKCpleHRfaW5mbykpOworCisJCWlmIChleHRf aW5mbyA9PSBOVUxMKQorCQkJZ290byBvdXRfZnJlZV9weGE7CisKKwkJZXh0X2luZm8tPnBseCA9 IE5VTEw7CisJCWV4dF9pbmZvLT5wbHhfdGltaW5nID0gMDsKKwkJZXh0X2luZm8tPmRwbV9tb2Rl ID0gMDsKKwkJZGV2aWNlX2RhdGEtPnByaXYgPSBleHRfaW5mbzsKKwl9CisKKwkvKiBJbml0aWFs aXplIGlycSBkYXRhICovCisJZGV2aWNlX2RhdGEtPmlycSA9IGRldi0+aXJxOworCWRldmljZV9k YXRhLT5pcnFfZW5hYmxlID0gMDsKKwlkZXZpY2VfZGF0YS0+aXJxX3JlZ2lzdGVyZWQgPSAwOwor CisJaW5mby0+ZGV2aWNlX2RhdGEgPSBkZXZpY2VfZGF0YTsKKworCS8qIFJlZ2lzdGVyIFJURE0g ZGV2aWNlIGRyaXZlciAqLworCXJldCA9IHJ0ZG1fZGV2X3JlZ2lzdGVyKGluZm8pOworCWlmIChy ZXQgIT0gMCkgeworCQlpZiAoaWQtPnN1YmRldmljZSAhPSBQQ0lfU1VCREVWSUNFX0lEX05YUENB KQorCQkJZ290byBvdXRfdW5tYXA7CisJCWVsc2UKKwkJCWdvdG8gb3V0X3VubWFwX3BseDsKKwl9 CisKKwlwY2lfc2V0X2RydmRhdGEoZGV2LCBpbmZvKTsKKworCWlmIChpZC0+ZGV2aWNlID09IFBD SV9ERVZJQ0VfSURfSElMU0NIRVJfTkVUWCkKKwkJZGV2X2luZm8oJmRldi0+ZGV2LCAicmVnaXN0 ZXJlZCBDaWZYIGNhcmRcbiIpOworCWVsc2UgaWYgKGlkLT5kZXZpY2UgPT0gUENJX0RFVklDRV9J RF9ISUxTQ0hFUl9ORVRQTEMpCisJCWRldl9pbmZvKCZkZXYtPmRldiwgInJlZ2lzdGVyZWQgbmV0 UExDIGNhcmRcbiIpOworCWVsc2UgaWYgKGlkLT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9ISUxT Q0hFUl9ORVRKQUNLKQorCQlkZXZfaW5mbygmZGV2LT5kZXYsICJyZWdpc3RlcmVkIG5ldEpBQ0sg Y2FyZFxuIik7CisJZWxzZSBpZiAoaWQtPnN1YmRldmljZSA9PSBQQ0lfU1VCREVWSUNFX0lEX05Y U0JfUENBKQorCQlkZXZfaW5mbygmZGV2LT5kZXYsICJyZWdpc3RlcmVkIE5YU0ItUENBIGFkYXB0 ZXIgY2FyZFxuIik7CisJZWxzZSB7CisJCXN0cnVjdCBleHRfaW9faW5mbyAqZXh0X2luZm8gPSBk ZXZpY2VfZGF0YS0+cHJpdjsKKwkJZGV2X2luZm8oJmRldi0+ZGV2LAorCQkJInJlZ2lzdGVyZWQg TlhQQ0EtUENJIGFkYXB0ZXIgY2FyZCBpbiAlZCBiaXQgbW9kZVxuIiwKKwkJCSgoc3RydWN0IGV4 dF9pb19pbmZvICopZXh0X2luZm8pLT5kcG1fbW9kZSk7CisJfQorCisJY2lmeF9udW0rKzsKKwor CXJldHVybiAwOworCisgb3V0X3VubWFwX3BseDoKKwlpb3VubWFwKChkZXZpY2VfZGF0YS0+cHJp diktPnBseCk7CisKKyBvdXRfZnJlZV9weGE6CisJcnRkbV9mcmVlKGRldmljZV9kYXRhLT5wcml2 KTsKKworIG91dF91bm1hcDoKKwlpb3VubWFwKGRldmljZV9kYXRhLT5tZW1bRFBNX0lOREVYXS5p bnRlcm5hbF9hZGRyKTsKKwlpZiAoZGV2aWNlX2RhdGEtPm1lbVtFWFRfTUVNX0lOREVYXS5pbnRl cm5hbF9hZGRyICE9IDApCisJCWlvdW5tYXAoZGV2aWNlX2RhdGEtPm1lbVtFWFRfTUVNX0lOREVY XS5pbnRlcm5hbF9hZGRyKTsKKworIG91dF9yZWxlYXNlOgorCXBjaV9yZWxlYXNlX3JlZ2lvbnMo ZGV2KTsKKworIG91dF9kaXNhYmxlOgorCXBjaV9kaXNhYmxlX2RldmljZShkZXYpOworCisgb3V0 X2ZyZWU6CisJaWYgKGluZm8tPmRldmljZV9kYXRhICE9IE5VTEwpCisJCXJ0ZG1fZnJlZShpbmZv LT5kZXZpY2VfZGF0YSk7CisKKwlydGRtX2ZyZWUoaW5mbyk7CisKKwlyZXR1cm4gLUVOT0RFVjsK K30KKworc3RhdGljIHZvaWQgY2lmeF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7 CisJc3RydWN0IHJ0ZG1fZGV2aWNlICppbmZvID0gcGNpX2dldF9kcnZkYXRhKGRldik7CisJc3Ry dWN0IGlvX2luZm8gKmRldmljZV9kYXRhID0gY2lmeF9nZXRfZGV2aWNlX2RhdGEoaW5mbyk7CisJ c3RydWN0IGV4dF9pb19pbmZvICpleHRfaW5mbyA9IGNpZnhfZ2V0X3ByaXZhdGUoaW5mbyk7CisJ aW50MzJfdCByZXQ7CisKKwlpZiAoaW5mby0+ZGV2aWNlX2RhdGEgPT0gTlVMTCkKKwkJcmV0dXJu OworCisJaWYgKGV4dF9pbmZvICE9IE5VTEwpIHsKKwkJLyogRGlzYWJsZSBhbGwgaW50ZXJydXB0 cyAqLworCQlpb3dyaXRlMzIoMCwgZGV2aWNlX2RhdGEtPm1lbVtEUE1fSU5ERVhdLmludGVybmFs X2FkZHIKKwkJCQkJCQkrIERQTV9IT1NUX0lOVF9FTjApOworCisJCWlmIChleHRfaW5mby0+cGx4 ICE9IE5VTEwpCisJCQlpb3VubWFwKCh2b2lkICopZXh0X2luZm8tPnBseCk7CisKKwkJcnRkbV9m cmVlKCh2b2lkICopZXh0X2luZm8pOworCX0KKworCS8qIFVucmVnaXN0ZXIgUlRETSBkZXZpY2Ug ZHJpdmVyICovCisJcmV0ID0gcnRkbV9kZXZfdW5yZWdpc3RlcihpbmZvLCAxMDAwKTsKKwlpZiAo cmV0ICE9IDApCisJCXJldHVybjsKKworCXBjaV9yZWxlYXNlX3JlZ2lvbnMoZGV2KTsKKwlwY2lf ZGlzYWJsZV9kZXZpY2UoZGV2KTsKKwlwY2lfc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsKKworCS8q IFVubWFwIG1lbW9yeSAqLworCWlvdW5tYXAoZGV2aWNlX2RhdGEtPm1lbVtEUE1fSU5ERVhdLmlu dGVybmFsX2FkZHIpOworCWlmIChkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1fSU5ERVhdLmludGVy bmFsX2FkZHIgIT0gMCkKKwkJaW91bm1hcChkZXZpY2VfZGF0YS0+bWVtW0VYVF9NRU1fSU5ERVhd LmludGVybmFsX2FkZHIpOworCisJLyogUmVsZWFzZSBzdHJ1Y3R1cmUgbWVtb3J5IGFsbG9jYXRp b24gKi8KKwlydGRtX2ZyZWUoaW5mby0+ZGV2aWNlX2RhdGEpOworCXJ0ZG1fZnJlZShpbmZvKTsK KworCWlmIChjaWZ4X251bSA+IDApCisJCWNpZnhfbnVtLS07Cit9CisKK3N0YXRpYyBpbnQgX19p bml0IGNpZnhfcGNpX2luaXQodm9pZCkKK3sKKwljaWZ4X251bSA9IDA7CisKKwlyZXR1cm4gcGNp X3JlZ2lzdGVyX2RyaXZlcigmY2lmeF9wY2lfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19l eGl0IGNpZnhfcGNpX2V4aXQodm9pZCkKK3sKKwlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmNpZnhf cGNpX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KGNpZnhfcGNpX2luaXQpOworbW9kdWxlX2V4 aXQoY2lmeF9wY2lfZXhpdCk7CisKKy8qIEVuZCBvZiBmaWxlIDogY2lmeF9wY2kuYyAqLworCg==