From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1b2ave-0002Da-OF for barebox@lists.infradead.org; Tue, 17 May 2016 09:04:40 +0000 From: Sascha Hauer Date: Tue, 17 May 2016 11:04:12 +0200 Message-Id: <1463475854-30224-1-git-send-email-s.hauer@pengutronix.de> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 1/3] ARM: i.MX: IIM: Add functions to access fuses field wise To: Barebox List QWNjZXNzaW5nIHRoZSBJSU0gcmVnaXN0ZXJzIGlzIGN1bWJlcnNvbWUuIFRoZSBmdXNlcyBhcmUg ZG9jdW1lbnRlZCB3aXRoCmRpZmZlcmVudCByZWdpc3RlciBzdHJpZGVzIGFuZCB0aGVyZSBpcyBu byBoZWFkZXIgZmlsZSBhdmFpbGFibGUsIHNvIHRoZQpkaWZmZXJlbnQgZmllbGRzIGhhdmUgdG8g YmUgcmVhZCBpbiB0aGUgZGF0YXNoZWV0cyBhbmQgdHJhbnNsYXRlZCBpbnRvCnRoZSBiYXJlYm94 IGZvcm1hdCBvdmVyIGFuZCBvdmVyIGFnYWluLiBUaGlzIHBhdGNoIGFkZHMgYSBoZWFkZXIgZmls ZQp3aGljaCBoYXMgZGVmaW5lcyBmb3IgdGhlIHZhcmlvdXMgZnVzZXMgKGZvciBpLk1YMjUgb25s eSBzbyBmYXIsIGJ1dApvdGhlcnMgY2FuIGJlIGFkZGVkIGxhdGVyKSBhbG9uZyB3aXRoIEMgZnVu Y3Rpb25zIHRvIHJlYWQvd3JpdGUgdGhlCmZpZWxkcy4KClNpZ25lZC1vZmYtYnk6IFNhc2NoYSBI YXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLS0tCiBhcmNoL2FybS9tYWNoLWlteC9paW0u YyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU3ICsrKysrKwogYXJjaC9hcm0vbWFjaC1pbXgv aW5jbHVkZS9tYWNoL2lpbS5oICAgICAgICAgICB8ICAxOSArKwogYXJjaC9hcm0vbWFjaC1pbXgv aW5jbHVkZS9tYWNoL2lteDI1LWZ1c2VtYXAuaCB8IDI3MiArKysrKysrKysrKysrKysrKysrKysr KysrCiAzIGZpbGVzIGNoYW5nZWQsIDM0OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm0vbWFjaC1pbXgvaW5jbHVkZS9tYWNoL2lteDI1LWZ1c2VtYXAuaAoKZGlmZiAt LWdpdCBhL2FyY2gvYXJtL21hY2gtaW14L2lpbS5jIGIvYXJjaC9hcm0vbWFjaC1pbXgvaWltLmMK aW5kZXggZWNhYTdlNi4uM2FiYTAyZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pbXgvaWlt LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1pbXgvaWltLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs dWRlIDxtYWNoL2lteDUxLXJlZ3MuaD4KICNpbmNsdWRlIDxtYWNoL2lteDUzLXJlZ3MuaD4KICNp bmNsdWRlIDxtYWNoL2Nsb2NrLWlteDUxXzUzLmg+CisjaW5jbHVkZSA8bWFjaC9pbXgyNS1mdXNl bWFwLmg+CiAKICNkZWZpbmUgRFJJVkVSTkFNRQkiaW14X2lpbSIKICNkZWZpbmUgSUlNX05VTV9C QU5LUwk4CkBAIC02NSw2ICs2Niw2MiBAQCBzdHJ1Y3QgaW14X2lpbV9kcnZkYXRhIHsKIAogc3Rh dGljIHN0cnVjdCBpaW1fcHJpdiAqaW14X2lpbTsKIAorc3RhdGljIHZvaWQgaW14X2lpbV9maWVs ZF9kZWNvZGUodWludDMyX3QgZmllbGQsIHVuc2lnbmVkICpiYW5rLCB1bnNpZ25lZCAqYnl0ZSwK KwkJCQkgdW5zaWduZWQgKmJpdCwgdW5zaWduZWQgKm1hc2spCit7CisJdW5zaWduZWQgd2lkdGg7 CisKKwkqYmFuayA9IChmaWVsZCA+PiBJSU1fQkFOS19NQVNLX1NISUZUKSAmICgoMSA8PCBJSU1f QkFOS19NQVNLX1dJRFRIKSAtIDEpOworCSpieXRlID0gKGZpZWxkID4+IElJTV9CWVRFX01BU0tf U0hJRlQpICYgKCgxIDw8IElJTV9CWVRFX01BU0tfV0lEVEgpIC0gMSk7CisJKmJpdCA9IChmaWVs ZCA+PiBJSU1fQklUX01BU0tfU0hJRlQpICYgKCgxIDw8IElJTV9CSVRfTUFTS19XSURUSCkgLSAx KTsKKwl3aWR0aCA9ICgoZmllbGQgPj4gSUlNX1dJRFRIX01BU0tfU0hJRlQpICYgKCgxIDw8IElJ TV9XSURUSF9NQVNLX1dJRFRIKSAtIDEpKSArIDE7CisJKm1hc2sgPSAoMSA8PCB3aWR0aCkgLSAx OworfQorCitpbnQgaW14X2lpbV9yZWFkX2ZpZWxkKHVpbnQzMl90IGZpZWxkLCB1bnNpZ25lZCAq dmFsdWUpCit7CisJdW5zaWduZWQgYmFuaywgYnl0ZSwgYml0LCBtYXNrOworCWludCByZXQ7CisJ dW5zaWduZWQgdjsKKworCWlmICghaW14X2lpbSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpbXhf aWltX2ZpZWxkX2RlY29kZShmaWVsZCwgJmJhbmssICZieXRlLCAmYml0LCAmbWFzayk7CisKKwlk ZXZfZGJnKCZpbXhfaWltLT5kZXYsICJyZWFkX2ZpZWxkOiAweCUwOHggYmFuayAlZCBieXRlICVk IGJpdCAlZCB3aWR0aCAweCV4XG4iLAorCQlmaWVsZCwgYmFuaywgYnl0ZSwgYml0LCBtYXNrKTsK KworCXJldCA9IHJlZ21hcF9yZWFkKGlteF9paW0tPmJhbmtbYmFua10tPm1hcCwgYnl0ZSwgJnYp OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJdiA+Pj0gYml0OworCXYgJj0gbWFz azsKKworCSp2YWx1ZSA9IHY7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGlteF9paW1fd3JpdGVf ZmllbGQodWludDMyX3QgZmllbGQsIHVuc2lnbmVkIHZhbHVlKQoreworCXVuc2lnbmVkIGJhbmss IGJ5dGUsIGJpdCwgbWFzazsKKworCWlmICghaW14X2lpbSkKKwkJcmV0dXJuIC1FTk9ERVY7CisK KwlpbXhfaWltX2ZpZWxkX2RlY29kZShmaWVsZCwgJmJhbmssICZieXRlLCAmYml0LCAmbWFzayk7 CisKKwl2YWx1ZSAmPSBtYXNrOworCXZhbHVlIDw8PSBiaXQ7CisKKwlkZXZfZGJnKCZpbXhfaWlt LT5kZXYsICJ3cml0ZV9maWVsZDogMHglMDh4IGJhbmsgJWQgYnl0ZSAlZCBiaXQgJWQgd2lkdGgg MHgleFxuIiwKKwkgICAgICAgZmllbGQsIGJhbmssIGJ5dGUsIGJpdCwgbWFzayk7CisKKwlyZXR1 cm4gcmVnbWFwX3dyaXRlKGlteF9paW0tPmJhbmtbYmFua10tPm1hcCwgYnl0ZSwgdmFsdWUpOwor fQorCiBzdGF0aWMgaW50IGlteF9paW1fZnVzZV9zZW5zZShzdHJ1Y3QgaWltX2JhbmsgKmJhbmss IHVuc2lnbmVkIGludCByb3cpCiB7CiAJc3RydWN0IGlpbV9wcml2ICppaW0gPSBiYW5rLT5paW07 CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlteC9pbmNsdWRlL21hY2gvaWltLmggYi9hcmNo L2FybS9tYWNoLWlteC9pbmNsdWRlL21hY2gvaWltLmgKaW5kZXggMWQyODE0OS4uZjYzNzEyZSAx MDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pbXgvaW5jbHVkZS9tYWNoL2lpbS5oCisrKyBiL2Fy Y2gvYXJtL21hY2gtaW14L2luY2x1ZGUvbWFjaC9paW0uaApAQCAtODEsNCArODEsMjMgQEAgc3Rh dGljIGlubGluZSBpbnQgaW14MjVfaWltX3JlZ2lzdGVyX2ZlY19ldGhhZGRyKHZvaWQpCiAJcmV0 dXJuIDA7CiB9CiAKKyNkZWZpbmUgSUlNX0JBTktfTUFTS19XSURUSAkzCisjZGVmaW5lIElJTV9C QU5LX01BU0tfU0hJRlQJMAorI2RlZmluZSBJSU1fQkFOSyhuKQkJKCgobikgJiAoKDEgPDwgSUlN X0JBTktfTUFTS19XSURUSCkgLSAxKSkgPDwgSUlNX0JBTktfTUFTS19TSElGVCkKKworI2RlZmlu ZSBJSU1fQllURV9NQVNLX1dJRFRICTUKKyNkZWZpbmUgSUlNX0JZVEVfTUFTS19TSElGVAlJSU1f QkFOS19NQVNLX1dJRFRICisjZGVmaW5lIElJTV9CWVRFKG4pCQkoKCgobikgPj4gMikgJiAoKDEg PDwgSUlNX0JZVEVfTUFTS19XSURUSCkgLSAxKSkgPDwgSUlNX0JZVEVfTUFTS19TSElGVCkKKwor I2RlZmluZSBJSU1fQklUX01BU0tfV0lEVEgJMworI2RlZmluZSBJSU1fQklUX01BU0tfU0hJRlQJ KElJTV9CWVRFX01BU0tfU0hJRlQgKyBJSU1fQllURV9NQVNLX1dJRFRIKQorI2RlZmluZSBJSU1f QklUKG4pCQkoKChuKSAmICgoMSA8PCBJSU1fQklUX01BU0tfV0lEVEgpIC0gMSkpIDw8IElJTV9C SVRfTUFTS19TSElGVCkKKworI2RlZmluZSBJSU1fV0lEVEhfTUFTS19XSURUSAkzCisjZGVmaW5l IElJTV9XSURUSF9NQVNLX1NISUZUCShJSU1fQklUX01BU0tfU0hJRlQgKyBJSU1fQklUX01BU0tf V0lEVEgpCisjZGVmaW5lIElJTV9XSURUSChuKQkJKCgoKG4pIC0gMSkgJiAoKDEgPDwgSUlNX1dJ RFRIX01BU0tfV0lEVEgpIC0gMSkpIDw8IElJTV9XSURUSF9NQVNLX1NISUZUKQorCitpbnQgaW14 X2lpbV9yZWFkX2ZpZWxkKHVpbnQzMl90IGZpZWxkLCB1bnNpZ25lZCAqdmFsdWUpOworaW50IGlt eF9paW1fd3JpdGVfZmllbGQodWludDMyX3QgZmllbGQsIHVuc2lnbmVkIHZhbHVlKTsKKwogI2Vu ZGlmIC8qIF9fTUFDSF9JTVhfSUlNX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW14 L2luY2x1ZGUvbWFjaC9pbXgyNS1mdXNlbWFwLmggYi9hcmNoL2FybS9tYWNoLWlteC9pbmNsdWRl L21hY2gvaW14MjUtZnVzZW1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu Ljc0OWIwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWlteC9pbmNsdWRlL21h Y2gvaW14MjUtZnVzZW1hcC5oCkBAIC0wLDAgKzEsMjcyIEBACisjaWZuZGVmIF9fTUFDSF9JTVgy NV9GVVNFTUFQX0gKKyNkZWZpbmUgX19NQUNIX0lNWDI1X0ZVU0VNQVBfSAorCisjaW5jbHVkZSA8 bWFjaC9paW0uaD4KKworLyogRnVzZSBiYW5rIHdyaXRlIHByb3RlY3QgKi8KKyNkZWZpbmUgSU1Y MjVfSUlNX0ZCV1AoYmFuaykJCShJSU1fQkFOSyhiYW5rKSB8IElJTV9CWVRFKDApIHwgSUlNX0JJ VCg3KSkKKy8qIEZ1c2UgQmFuayBPdmVycmlkZSBQcm90ZWN0ICovCisjZGVmaW5lIElNWDI1X0lJ TV9GQk9QKGJhbmspCQkoSUlNX0JBTksoYmFuaykgfCBJSU1fQllURSgwKSB8IElJTV9CSVQoNikp CisvKiBGdXNlIEJhbmsgUmVhZCBQcm90ZWN0ICovCisjZGVmaW5lIElNWDI1X0lJTV9GQlJQKGJh bmspCQkoSUlNX0JBTksoYmFuaykgfCBJSU1fQllURSgwKSB8IElJTV9CSVQoNSkpCisvKiBUZXN0 ZXIgZnVzZXMuIEJ1cm50IG9uIHRoZSB0ZXN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgd2FmZXIgc29y dCwgbG9ja3MgYmFuazAsIHJvd3MgMDAxQy0wMDNDICovCisjZGVmaW5lIElNWDI1X0lJTV9URVNU RVJfTE9DSwkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMCkgfCBJSU1fQklUKDQpKQorLyogRnVz ZSBCYW5rcyBFeHBsaWNpdCBTZW5zZSBQcm90ZWN0ICovCisjZGVmaW5lIElNWDI1X0lJTV9GQkVT UChiYW5rKQkJKElJTV9CQU5LKGJhbmspIHwgSUlNX0JZVEUoMCkgfCBJSU1fQklUKDMpKQorLyog TG9ja2luZyByb3cgMDA2OC0wMDdDLCBmdXNlYmFuazAgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX01B Q19BRERSX0xPQ0sJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDApIHwgSUlNX0JJVCgyKSkKKy8q IExvY2tpbmcgcm93cyAwMDA4IDAwNTQtMDA2NCwgZnVzZWJhbmswICovCisjZGVmaW5lIElNWDI1 X0lJTV9UUklNX0xPQ0sJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDApIHwgSUlNX0JJVCgxKSkK Ky8qIExvY2tpbmcgcm93cyAwMDA0LCAwMDBDLTAwMTgsIDAwNDAtMDA0NCwgZnVzZWJhbmswICov CisjZGVmaW5lIElNWDI1X0lJTV9CT09UX0xPQ0sJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDAp IHwgSUlNX0JJVCgwKSkKKy8qIERpc2FibGluZyB0aGUgU2VjdXJlIEpUQUcgQ29udHJvbGxlciBt b2R1bGUgY2xvY2sgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX1NKQ19ESVNBQkxFCQkoSUlNX0JBTkso MCkgfCBJSU1fQllURSg0KSB8IElJTV9CSVQoNykpCisKKy8qIENvbnRyb2xzIHRoZSBzZWN1cml0 eSBtb2RlIG9mIHRoZSBKVEFHIGRlYnVnIGludGVyZmFjZSAqLworI2RlZmluZSBJTVgyNV9JSU1f SlRBR19TTU9ERQkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoNCkgfCBJSU1fQklUKDUpIHwgSUlN X1dJRFRIKDIpKQorCisvKiBEaXNhYmxlIFNDQyBkZWJ1ZyB0aHJvdWdoIFNKQyAqLworI2RlZmlu ZSBJTVgyNV9JSU1fSlRBR19TQ0MJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDQpIHwgSUlNX0JJ VCg0KSkKKworLyogSlRBRyBIQUIgRW5hYmxlIE92ZXJyaWRlICgxID0gSEFCIG1heSBub3QgZW5h YmxlIEpUQUcgZGVidWcgYWNjZXNzICovCisjZGVmaW5lIElNWDI1X0lJTV9KVEFHX0hFTwkJKElJ TV9CQU5LKDApIHwgSUlNX0JZVEUoNCkgfCBJSU1fQklUKDMpKQorCisvKiBTZWN1cmUgSlRBRyBS ZS1lbmFibGUuCisgKiAwIFNlY3VyZSBKVEFHIEJ5cGFzcyBmdXNlIGlzIG5vdCBvdmVycmlkZGVu IChzZWN1cmUgSlRBRyBieXBhc3MgaXMgYWxsb3dlZCkKKyAqIDEgU2VjdXJlIEpUQUcgQnlwYXNz IGZ1c2UgaXMgb3ZlcnJpZGRlbiAoc2VjdXJlIEpUQUcgYnlwYXNzIGlzIG5vdCBhbGxvd2VkKQor ICovCisjZGVmaW5lIElNWDI1X0lJTV9TRUNfSlRBR19SRQkJKElJTV9CQU5LKDApIHwgSUlNX0JZ VEUoNCkgfCBJSU1fQklUKDEpKQorCisvKiBKVEFHIERlYnVnIFNlY3VyaXR5IEJ5cGFzcy4KKyAq IDAgSlRBRyBTZWN1cml0eSBieXBhc3MgaXMgbm90IGFjdGl2ZQorICogMSBKVEFHIFNlY3VyaXR5 IGJ5cGFzcyBpcyBhY3RpdmUKKyAqLworI2RlZmluZSBJTVgyNV9JSU1fSlRBR19CUAkJKElJTV9C QU5LKDApIHwgSUlNX0JZVEUoNCkgfCBJSU1fQklUKDApKQorCisvKiAgSGlnaCBUZW1wZXJhdHVy ZSBEZXRlY3QgQ29uZmlndXJhdGlvbi4gQSBmaWVsZCBpbiBEcnlJY2UgQW5hbG9nIENvbmZpZ3Vy YXRpb24gUmVnaXN0ZXIgKERBQ1IpICovCisjZGVmaW5lIElNWDI1X0lJTV9IVERDCQkJKElJTV9C QU5LKDApIHwgSUlNX0JZVEUoOCkgfCBJSU1fQklUKDMpIHwgSUlNX1dJRFRIKDMpKQorCisvKiAg TG93IFRlbXBlcmF0dXJlIERldGVjdCBDb25maWd1cmF0aW9uLiBBIGZpZWxkIGluIERyeUljZSBB bmFsb2cgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAoREFDUikgKi8KKyNkZWZpbmUgSU1YMjVfSUlN X0xUREMJCQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSg4KSB8IElJTV9CSVQoMCkgfCBJSU1fV0lE VEgoMykpCisKKyAvKiAgQ2hvb3NpbmcgdGhlIHNwZWNpZmljIGVTREhDLCBDU1BJIG9yIEkyQyBj b250cm9sbGVyIGZvciBib290aW5nIGZyb20uICovCisjZGVmaW5lIElNWDI1X0lJTV9CVF9TUkMJ CShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDB4YykgfCBJSU1fQklUKDYpIHwgSUlNX1dJRFRIKDIp KQorCisvKiBTTEMvTUxDIE5BTkQgZGV2aWNlLiAoRm9ybWVyIEJUX0VDQ19TRUwgZnVzZSkgQWxz byB1c2VkIGFzIGEgZmFzdCBib290IG1vZGUgaW5kaWNhdGlvbiBmb3IgZU1NQyA0LjMgcHJvdG9j b2wuCisgKglJZiB0aGUgYm9vdGFibGUgZGV2aWNlIGlzIE5BTkQgdGhlbgorICoJCTAgU0xDIE5B TkQgZGV2aWNlCisgKgkJMSBNTEMgTkFORCBkZXZpY2UKKyAqCUlmIHRoZSBib290YWJsZSBkZXZp Y2UgaXMgTU1DIHRoZW4KKyAqCQkwIERvIG5vdCB1c2UgZU1NQyBmYXN0IGJvb3QgbW9kZQorICoJ CTEgVXNlIGVNTUMgZmFzdCBib290IG1vZGUKKyAqLworI2RlZmluZSBJTVgyNV9JSU1fQlRfTUxD X1NFTAkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMHhjKSB8IElJTV9CSVQoNSkpCisKKy8qIFNw ZWNpZmllcyB0aGUgc2l6ZSBvZiBzcGFyZSBieXRlcyBmb3IgNEtCIHBhZ2Ugc2l6ZSBOQU5EIEZs YXNoIGRldmljZXMuCisgKglJZiB0aGUgYm9vdGFibGUgZGV2aWNlIGlzIE5BTkQgdGhlbgorICoJ CTAgMTI4IGJ5dGVzIHNwYXJlIChTYW1zdW5nKSAoNC1JSU1fQklUIEVDQykKKyAqCQkxIDIxOCBi eXRlcyBzcGFyZSAoTWljcm9uLCBUb3NoaWJhKSAoOC1JSU1fQklUIEVDQykKKyAqCUlmIHRoZSBi b290YWJsZSBkZXZpY2UgaXMgU0QgdGhlbgorICoJCTAg4oCYRkFTVF9CT09U4oCZIElJTV9CSVQg MjkgaW4gQUNNRDQxIGFyZ3VtZW50IGlzIDAKKyAqCQkxIOKAmEZBU1RfQk9PVOKAmSBJSU1fQklU IDI5IGluIEFDTUQ0MSBhcmd1bWVudCBpcyAxCisgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX0JUX1NQ QVJFX1NJWkUJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDB4YykgfCBJSU1fQklUKDIpKQorCisg LyogQnlwYXNzaW5nIGEgcHVsbHVwIG9uIEQrIGxpbmUgaW4gY2FzZSBvZiBMUEIuCisgICoJMSBO byBwdWxsdXAgb24gRCsgbGluZS4KKyAgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX0JUX0RQTFVTX0JZ UEFTUwkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweGMpIHwgSUlNX0JJVCgxKSkKKworLyogVVNC IGJvb3Qgc291cmNlIHNlbGVjdGlvbi4gSGFzIGEgY29ycmVzcG9uZGluZyBHUElPIHBpbi4KKyAq CTAgVVNCIE9URyBJbnRlcm5hbCBQSFkgKFVUTUkpCisgKgkxIFVTQiBPVEcgRXh0ZXJuYWwgUEhZ IChVTFBJKQorICovCisjZGVmaW5lIElNWDI1X0lJTV9CVF9VU0JfU1JDCQkoSUlNX0JBTksoMCkg fCBJSU1fQllURSgweGMpIHwgSUlNX0JJVCgwKSkKKworLyogTkFORCBGbGFzaCBQYWdlIFNpemUu CisgKglJZiBCVF9NRU1fQ1RMID0gTkFORCBGbGFzaCwgdGhlbgorICoJCTAwIDUxMiBieXRlcwor ICoJCTAxIDJLIGJ5dGVzCisgKgkJMTAgNEsgYnl0ZXMKKyAqCQkxMSBSZXNlcnZlZAorICovCisj ZGVmaW5lIElNWDI1X0lJTV9CVF9QQUdFX1NJWkUJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDB4 MTApIHwgSUlNX0JJVCg1KSB8IElJTV9XSURUSCgyKSkKKworLyogU2VsZWN0cyB3aGV0aGVyIEVF UFJPTSBkZXZpY2UgaXMgdXNlZCBmb3IgbG9hZCBvZiBjb25maWd1cmF0aW9uIERDRCBkYXRhCisg KgkwIFVzZSBFRVBST00gRENECisgKgkxIERvIG5vdCB1c2UgRUVQUk9NIERDRAorICovCisjZGVm aW5lIElNWDI1X0lJTV9CVF9FRVBST01fQ0ZHCQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweDEw KSB8IElJTV9CSVQoNCkpCisKKy8qICBHUElPIEJvb3QgU2VsZWN0LiBEZXRlcm1pbmVzIHdoZXRo ZXIgY2VydGFpbiBib290IGZ1c2UgdmFsdWVzIGFyZSBjb250cm9sbGVkIGZyb20gR1BJTyBwaW5z IG9yIElJTS4KKyAqCTAgVGhlIGZ1c2UgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IEdQSU8gcGlu cworICoJMSBUaGUgZnVzZSB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgZnVzZXMKKyAqLworI2Rl ZmluZSBJTVgyNV9JSU1fR1BJT19CVF9TRUwJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDB4MTAp IHwgSUlNX0JJVCgzKSkKKworLyogU2VjdXJpdHkgVHlwZS4KKyAqCTAwMSBFbmdpbmVlcmluZyAo YWxsb3dzIGFueSBjb2RlIHRvIGJlIGZsYXNoZWQgYW5kIGV4ZWN1dGVkLCBldmVuIGlmIGRvZXMg bm90IGhhdmUgYSB2YWxpZCBzaWduYXR1cmUpCisgKgkxMDAgU2VjdXJpdHkgRGlzYWJsZWQgKGZv cmludGVybmFsL3Rlc3RpbmcgdXNlKQorICoJT3RoZXJzIFByb2R1Y3Rpb24gKFNlY3VyaXR5IE9u KQorICovCisjZGVmaW5lIElNWDI1X0lJTV9IQUJfVFlQRQkJKElJTV9CQU5LKDApIHwgSUlNX0JZ VEUoMHgxMCkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDMpKQorCisvKiBCb290IE1lbW9yeSBU eXBlLgorICoJSWYgQlRfTUVNX0NUTCA9IFdFSU0sIHRoZW4KKyAqCQkwMCBOT1IKKyAqCQkwMSBS ZXNlcnZlZAorICoJCTEwIE9uZU5hbmQKKyAqCQkxMSBSZXNlcnZlZAorICoJSWYgQlRfTUVNX0NU TCA9IE5BTkQgRmxhc2gKKyAqCQkwMCAzIGFkZHJlc3MgY3ljbGVzCisgKgkJMDEgNCBhZGRyZXNz IGN5Y2xlcworICoJCTEwIDUgYWRkcmVzcyBjeWNsZXMKKyAqCQkxMSBSZXNlcnZlZAorICoJSWYg QlRfTUVNX0NUTCA9IEV4cGFuc2lvbiBDYXJkIERldmljZQorICoJCTAwIFNEL01NQy9Nb3ZpTkFO RCBIREQKKyAqCQkwMSBSZXNlcnZlZAorICoJCTEwIFNlcmlhbCBST00gdmlhIEkyQworICoJCTEx IFNlcmlhbCBST00gdmlhIFNQSQorICovCisjZGVmaW5lIElNWDI1X0lJTV9CVF9NRU1fVFlQRQkJ KElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMHgxNCkgfCBJSU1fQklUKDUpIHwgSUlNX1dJRFRIKDIp KQorCisvKiBCdXMgSUlNX1dJRFRIIGFuZCBtdXhlZC91bm11eGVkIGludGVyZmFjZS4gSGFzIGEg Y29ycmVzcG9uZGluZyBHUElPIHBpbi4KKyAqCUlmIEJUX01FTV9DVEw9TkFORCB0aGVuCisgKgkJ MDAgOCBJSU1fQklUIGJ1cywKKyAqCQkwMSAxNiBJSU1fQklUIGJ1cworICoJCTF4IFJlc2VydmVk CisgKglJZiBCVF9NRU1fQ1RMPVdFSU0gdGhlbgorICoJCTAwIDE2IElJTV9CSVQgYWRkci9kYXRh IG11eGVkCisgKgkJMDEgMTYgSUlNX0JJVCBhZGRyL2RhdGEgdW5tdXhlZAorICoJCTF4IFJlc2Vy dmVkCisgKglJZiBCVF9NRU1fQ1RMPVNQSSB0aGVuCisgKgkJMDAgMi1hZGRyIHdvcmQgU1BJICgx Ni1JSU1fQklUKQorICoJCTAxIDMtYWRkciB3b3JkIFNQSSAoMjQtSUlNX0JJVCkKKyAqCQkxeCBS ZXNlcnZlZAorICovCisjZGVmaW5lIElNWDI1X0lJTV9CVF9CVVNfV0lEVEgJCShJSU1fQkFOSygw KSB8IElJTV9CWVRFKDB4MTQpIHwgSUlNX0JJVCgzKSB8IElJTV9XSURUSCgyKSkKKworLyogQm9v dCBNZW1vcnkgQ29udHJvbCBUeXBlLiAobWVtb3J5IGRldmljZSkKKyAqCTAwIFdFSU0KKyAqCTAx IE5BTkQgRmxhc2gKKyAqCTEwIEFUQSBIREQKKyAqCTExIEV4cGFuc2lvbiBEZXZpY2UKKyAqCShT RC9NTUMsIHN1cHBvcnQgaGlnaCBzdG9yYWdlLCBFRVBST01zLiBTZWUgQlRfTUVNX1RZUEVbMTow XSBzZXR0aW5ncyBmb3IgZGV0YWlscy4KKyAqLworI2RlZmluZSBJTVgyNV9JSU1fQlRfTUVNX0NU TAkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMHgxNCkgfCBJSU1fQklUKDEpIHwgSUlNX1dJRFRI KDIpKQorCisvKiBEaXJlY3QgRXh0ZXJuYWwgTWVtb3J5IEJvb3QgRGlzYWJsZS4KKyAqCTAgRGly ZWN0IGJvb3QgZnJvbSBleHRlcm5hbCBtZW1vcnkgaXMgYWxsb3dlZAorICoJMSBEaXJlY3QgYm9v dCBmcm9tIGV4dGVybmFsIG1lbW9yeSBpcyBub3QgYWxsb3dlZAorICovCisjZGVmaW5lIElNWDI1 X0lJTV9ESVJfQlRfRElTCQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweDE0KSB8IElJTV9CSVQo MCkpCisKKy8qIEhBQiBDdXN0b21lciBDb2RlLiBTZWxlY3QgY3VzdG9tZXIgY29kZSBhcyBpbnB1 dCB0byBIQUIuICovCisjZGVmaW5lIElNWDI1X0lJTV9IQUJfQ1VTCQkoSUlNX0JBTksoMCkgfCBJ SU1fQllURSgweDE4KSB8IElJTV9CSVQoMCkgfCBJSU1fV0lEVEgoOCkpCisKKy8qIFNpbGljb24g cmV2aXNpb24gbnVtYmVyLiAwIFJldjEuMCAxIFJldjEuMSAqLworI2RlZmluZSBJTVgyNV9JSU1f U0lfUkVWCQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweDFjKSB8IElJTV9CSVQoMCkgfCBJSU1f V0lEVEgoOCkpCisKKy8qIDY0LUlJTV9CSVQgVW5pcXVlIElELiAwIDw9IG4gPD0gNyAqLworI2Rl ZmluZSBJTVgyNV9JSU1fVUlEKG4pCQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweDIwICsgMHg0 ICogKG4pKSB8IElJTV9CSVQoMCkgfCBJSU1fV0lEVEgoOCkpCisKKy8qIExQQiBBUk0gY29yZSBm cmVxdWVuY3kuIEhhcyBhIGNvcnJlc3BvbmRpbmcgR1BJTyBwaW4uCisgKgkwMDAgMTMzIE1IeiAo RGVmYXVsdCkKKyAqCTAwMSAyNE1IegorICoJMDEwIDU1LjMzIE1IegorICoJMDExIDY2IE1Iegor ICoJMTAwIDgzIE1IegorICoJMTAxIDE2NiBNSHoKKyAqCTExMCAyNjYgTUh6CisgKgkxMTEgTm9y bWFsIGJvb3QgZnJlcXVlbmN5CisgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX0JUX0xQQl9GUkVRCQko SUlNX0JBTksoMCkgfCBJSU1fQllURSgweDQ0KSB8IElJTV9CSVQoNSkgfCBJSU1fV0lEVEgoMykp CisKKy8qIENob29zaW5nIHRoZSBzcGVjaWZpYyBVQVJUIGNvbnRyb2xsZXIgZm9yIGJvb3Rpbmcg ZnJvbS4gKi8KKyNkZWZpbmUgSU1YMjVfSUlNX0JUX1VBUlRfU1JDCQkoSUlNX0JBTksoMCkgfCBJ SU1fQllURSgweDQ0KSB8IElJTV9CSVQoMikgfCBJSU1fV0lEVEgoMykpCisKKy8qIE9wdGlvbnMg Zm9yIExvdyBQb3dlciBCb290IG1vZGUuCisgKgkwMCBMUEIgZGlzYWJsZWQKKyAqCTAxIEdlbmVy aWMgUE1JQyBhbmQgb25lIEdQSU8gaW5wdXQgKExvdyBiYXR0ZXJ5KQorICoJMTAgR2VuZXJpYyBQ TUlDIGFuZCB0d28gR1BJTyBpbnB1dHMgKExvdyBiYXR0ZXJ5IGFuZCBDaGFyZ2VyIGRldGVjdCkK KyAqCTExIEF0bGFzIEFQIFBvd2VyIE1hbmFnZW1lbnQgSUMuCisgKi8KKyNkZWZpbmUgSU1YMjVf SUlNX0JUX0xQQgkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMHg0NCkgfCBJSU1fQklUKDApIHwg SUlNX1dJRFRIKDIpKQorCisvKiBBcHBsaWNhdGlvbiBQcm9jZXNzb3IgQm9vdCBJbWFnZSBWZXJz aW9uLiAqLworI2RlZmluZSBJTVgyNV9JSU1fQVBfQklfVkVSXzE1XzgJKElJTV9CQU5LKDApIHwg SUlNX0JZVEUoMHg0OCkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDgpKQorCisvKiBBcHBsaWNh dGlvbiBQcm9jZXNzb3IgQm9vdCBJbWFnZSBWZXJzaW9uLiAqLworI2RlZmluZSBJTVgyNV9JSU1f QVBfQklfVkVSXzdfMAkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMHg0YykgfCBJSU1fQklUKDAp IHwgSUlNX1dJRFRIKDgpKQorCisvKiBNb3N0IHNpZ25pZmljYW50IElJTV9CWVRFIG9mIDI1Ni1J SU1fQklUIGhhc2ggdmFsdWUgb2YgQVAgc3VwZXIgcm9vdCBrZXkgKFNSSzBfSEFTSCkgKi8KKyNk ZWZpbmUgSU1YMjVfSUlNX1NSSzBfSEFTSF8wCQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweDUw KSB8IElJTV9CSVQoMCkgfCBJSU1fV0lEVEgoOCkpCisKKy8qIEZvciBTUEMgc3RhdGlzdGljcyBk dXJpbmcgcHJvZHVjdGlvbi4gKi8KKyNkZWZpbmUgSU1YMjVfSUlNX1NUT1JFX0NPVU5UCQkoSUlN X0JBTksoMCkgfCBJSU1fQllURSgweDU0KSB8IElJTV9CSVQoMCkgfCBJSU1fV0lEVEgoOCkpCisK Ky8qIFVzZSBmb3IgYWRqdXN0bWVudCB0aGUgY29tcGVuc2F0b3IgZGVsYXlzIG9uIHNpbGljb24g YW5kIHRoZSBzeXN0ZW0gd29ya3MgYXMgYSB3aG9sZSBhdCAxLjBWIGFuZCAxLjJWIChEVkZTKSAq LworI2RlZmluZSBJTVgyNV9JSU1fRFZGU19ERUxBWV9BREpVU1QJKElJTV9CQU5LKDApIHwgSUlN X0JZVEUoMHg1OCkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDgpKQorCisvKiBQVEMgdmVyc2lv biBjb250cm9sIG51bWJlci4gKi8KKyNkZWZpbmUgSU1YMjVfSUlNX1BUQ19WRVIJCShJSU1fQkFO SygwKSB8IElJTV9CWVRFKDB4NWMpIHwgSUlNX0JJVCg1KSB8IElJTV9XSURUSCgzKSkKKworI2Rl ZmluZSBJTVgyNV9JSU1fR0RQVENWX1ZBTElECQkoSUlNX0JBTksoMCkgfCBJSU1fQllURSgweDVj KSB8IElJTV9CSVQoNCkpCisKKy8qIEdQIGRvbWFpbiBEUFRDL1NQQyBUZXN0IFZvbHRhZ2UuICov CisjZGVmaW5lIElNWDI1X0lJTV9HRFBUQ1YJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDB4NWMp IHwgSUlNX0JJVCgwKSB8IElJTV9XSURUSCg0KSkKKworLyogVm9sdGFnZSBSZWZlcmVuY2UgQ29u ZmlndXJhdGlvbi4gQSBmaWVsZCBpbiBEcnlJY2UgQW5hbG9nIENvbmZpZ3VyYXRpb24gUmVnaXN0 ZXIgKERBQ1IpICovCisjZGVmaW5lIElNWDI1X0lJTV9WUkMJCQkoSUlNX0JBTksoMCkgfCBJSU1f QllURSgweDYwKSB8IElJTV9CSVQoNSkgfCBJSU1fV0lEVEgoMykpCisKKyNkZWZpbmUgSU1YMjVf SUlNX0xEUFRDVl9WQUxJRAkJKElJTV9CQU5LKDApIHwgSUlNX0JZVEUoMHg2MCkgfCBJSU1fQklU KDQpKQorCisvKiBMUCBkb21haW4gRFBUQyBUZXN0IFZvbHRhZ2UuICovCisjZGVmaW5lIElNWDI1 X0lJTV9MRFBUQ1YJCShJSU1fQkFOSygwKSB8IElJTV9CWVRFKDB4NjApIHwgSUlNX0JJVCgwKSB8 IElJTV9XSURUSCg0KSkKKworLyogV2VsbCBCaWFzIENoYXJnZSBQdW1wIEZyZXF1ZW5jeSBBZGp1 c3QuIEFkanVzdGluZyB0aGUgZnJlcXVlbmN5IG9mIHRoZSBpbnRlcm5hbCBmcmVlLXJ1bm5pbmcg b3NjaWxsYXRvci4gKi8KKyNkZWZpbmUgSU1YMjVfSUlNX0NQRkEJCQkoSUlNX0JBTksoMCkgfCBJ SU1fQllURSgweDY0KSB8IElJTV9CSVQoNCkpCisKKy8qIFdlbGwgQmlhcyBDaGFyZ2UgUHVtcCBT ZXQgUG9pbnQgQWRqdXN0bWVudC4gKi8KKyNkZWZpbmUgSU1YMjVfSUlNX0NQU1BBCQkJKElJTV9C QU5LKDApIHwgSUlNX0JZVEUoMHg2NCkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDQpKQorCisv KiBFdGhlcm5ldCBNQUMgQWRkcmVzcywgMCA8PSBuIDw9IDUgKi8KKyNkZWZpbmUgSU1YMjVfSUlN X01BQ19BRERSKG4pCQkoSUlNX0JBTksoMSkgfCBJSU1fQllURSgweDY4ICsgMHg0ICogKG4pKSB8 IElJTV9CSVQoMCkgfCBJSU1fV0lEVEgoOCkpCisKKy8qIExvY2tpbmcgcm93IDAwNTgsIGZ1c2Vi YW5rIDEgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX1VTUjVfTE9DSwkJKElJTV9CQU5LKDEpIHwgSUlN X0JZVEUoMCkgfCBJSU1fQklUKDQpKQorCisvKiBMb2NrIGZvciByb3dzIDAwNzjigJMwMDdDIG9m IGZ1c2ViYW5rIDEgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX1VTUjZfTE9DSwkJKElJTV9CQU5LKDEp IHwgSUlNX0JZVEUoMCkgfCBJSU1fQklUKDIpKQorCisvKiBMb2NraW5nIDAwMDgtMDAyMCwgZnVz ZWJhbmsxICovCisjZGVmaW5lIElNWDI1X0lJTV9TSkNfUkVTUF9MT0NLCQkoSUlNX0JBTksoMSkg fCBJSU1fQllURSgwKSB8IElJTV9CSVQoMSkpCisKKy8qIExvY2tpbmcgU0NDX0tFWVsyNTU6MF0g Ki8KKyNkZWZpbmUgSU1YMjVfSUlNX1NDQ19MT0NLCQkoSUlNX0JBTksoMSkgfCBJSU1fQllURSgw KSB8IElJTV9CSVQoMCkpCisKKy8qIFNDQyBTZWNyZXQgS2V5LCAwIDw9IG4gPD0gMjAgKi8KKyNk ZWZpbmUgSU1YMjVfSUlNX1NDQ19LRVkobikJCShJSU1fQkFOSygxKSB8IElJTV9CWVRFKDB4NCAr IDB4NCAqIChuKSkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDgpKQorCisvKiBGdXNlcyBhdmFp bGFibGUgZm9yIHNvZnR3YXJlL2N1c3RvbWVycyAqLworI2RlZmluZSBJTVgyNV9JSU1fVVNSNQkJ CShJSU1fQkFOSygxKSB8IElJTV9CWVRFKDB4NTgpIHwgSUlNX0JJVCgwKSB8IElJTV9XSURUSCg4 KSkKKworLyogUmVzcG9uc2UgcmVmZXJlbmNlIHZhbHVlIGZvciB0aGUgc2VjdXJlIEpUQUcgY29u dHJvbGxlciwgMCA8PSBuIDw9IDcgKi8KKyNkZWZpbmUgSU1YMjVfSUlNX1NKQ19SRVNQKG4pCQko SUlNX0JBTksoMSkgfCBJSU1fQllURSgweDVjICsgMHg0ICogKG4pKSB8IElJTV9CSVQoMCkgfCBJ SU1fV0lEVEgoOCkpCisKKy8qIEZ1c2VzIGF2YWlsYWJsZSBmb3Igc29mdHdhcmUvY3VzdG9tZXJz LiAwIDw9IG4gPD0gMSAqLworI2RlZmluZSBJTVgyNV9JSU1fVVNSNihuKQkJKElJTV9CQU5LKDEp IHwgSUlNX0JZVEUoMHg3OCArIDB4NCAqIChuKSkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDgp KQorCisvKiBMb2NrIGZvciBTUktfSEFTSFsyNTU6MTYwXSBmdXNlcyBpbiByb3cgMHgwMDUwLCBm dXNlYmFuazAgYW5kIGluIHJvd3MgMHgwMDA0LTB4MDAyQywgZnVzZWJhbmszICovCisjZGVmaW5l IElNWDI1X0lJTV9TUkswX0xPQ0s5NgkJKElJTV9CQU5LKDIpIHwgSUlNX0JZVEUoMCkgfCBJSU1f QklUKDEpKQorCisvKiBMb2NrIGZvciBTUkswX0hBU0hbMTU5OjBdIGZ1c2VzIGluIHJvd3MgMHgw MDMwLTB4MDA3QyAqLworI2RlZmluZSBJTVgyNV9JSU1fU1JLMF9MT0NLMTYwCQkoSUlNX0JBTkso MikgfCBJSU1fQllURSgwKSB8IElJTV9CSVQoMCkpCisKKy8qIEFQIFN1cGVyIFJvb3QgS2V5IGhh c2gsIGJpdHMgWzI0NzowXS4KKyAqIE1vc3Qgc2lnbmlmaWNhbnQgSUlNX0JZVEUgU1JLX0hBU0hb MjU1OjI0OF0gaXMgaW4gdGhlIGZ1c2UgYmFuayAjMCwgMDA1MAorICogMSA8PSBuIDw9IDMxCisg Ki8KKyNkZWZpbmUgSU1YMjVfSUlNX1NSSzBfSEFTSF8xXzMxKG4pCShJSU1fQkFOSygyKSB8IElJ TV9CWVRFKDB4NCAqIChuKSkgfCBJSU1fQklUKDApIHwgSUlNX1dJRFRIKDgpKQorCisjZW5kaWYg LyogX19NQUNIX0lNWDI1X0ZVU0VNQVBfSCAqLwotLSAKMi44LjAucmMzCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYmFyZWJveCBtYWlsaW5nIGxpc3QK YmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vYmFyZWJveAo=