From mboxrd@z Thu Jan 1 00:00:00 1970 From: Amit Singh Tomar Subject: [PATCH v2 2/3] xen/arm: Add MESON UART driver for Amlogic Meson SoCs Date: Thu, 21 Mar 2019 15:55:34 +0530 Message-ID: <1553163935-12862-2-git-send-email-amittomer25@gmail.com> References: <1553163935-12862-1-git-send-email-amittomer25@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h6ute-0008CW-UA for xen-devel@lists.xenproject.org; Thu, 21 Mar 2019 10:26:02 +0000 Received: by mail-pf1-x442.google.com with SMTP id d25so4002195pfn.8 for ; Thu, 21 Mar 2019 03:26:00 -0700 (PDT) In-Reply-To: <1553163935-12862-1-git-send-email-amittomer25@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: andre.przywara@arm.com, julien.grall@arm.com, sstabellini@kernel.org, Amit Singh Tomar List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGRyaXZlciBmb3IgVUFSVCBjb250cm9sbGVyIHByZXNlbnQgb24gQW1s b2dpYyBNZXNvbgpTb0NzIGFuZCBpdCBoYXMgYmVlbiB0ZXN0ZWQgb24gTmFub3BpIEsyIGJvYXJk IGJhc2VkIG9uIFM5MDUgU29DLgoKQ29udHJvbGxlciByZWdpc3RlcnMgZGVmaW5hdGlvbiBpcyB0 YWtlbiBmcm9tIExpbnV4IDQuMjAuCmh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9i bG9iL3Y0LjIwLXJjMS9kcml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jCgpTaWduZWQtb2Zm LWJ5OiBBbWl0IFNpbmdoIFRvbWFyIDxhbWl0dG9tZXIyNUBnbWFpbC5jb20+Ci0tLQpDaGFuZ2Vz IHNpbmNlIHYxOgoKICAgICAgICAqIFJlbW92ZWQgY2xyc2V0Yml0cyBtYWNyby4KICAgICAgICAq IEZpeGVkIGNvZGluZyBzdHlsZSBpc3N1ZS4KICAgICAgICAqIFVwZGF0ZWQgTUFJTlRBSU5FUlMg ZmlsZS4KCkNoYW5nZXMgc2luY2UgUkZDOgoKICAgICAgICAqIFJlbW92ZWQgUzkwNSByZWZlcmVu Y2UgYXMgb3RoZXIgQW1sb2dpYyBTb0NzCiAgICAgICAgICBoYXZlIHRoaXMgdWFydCBjb250cm9s bGVyLgogICAgICAgICogUmVwbGFjZWQgbWVzb25fczkwNV9yZWFkL3dyaXRlIGhlbHBlcgogICAg ICAgICAgd2l0aCBjbHJzZXRiaXQgYW5kIGZyaWVuZHMgaGVscGVyLgogICAgICAgICogRm9sbG93 ZWQgcHJvcGVyIFVBUlQgcmVzZXQgc2VxdWVuY2UuCiAgICAgICAgKiBMaXN0IGFsbCBVQVJUIGNv bXBhdGlibGUgc3RyaW5ncyBzYW1lIGFzIExpbnV4CiAgICAgICAgICBkcml2ZXIuCi0tLQogeGVu L2RyaXZlcnMvY2hhci9LY29uZmlnICAgICAgfCAgIDggKysKIHhlbi9kcml2ZXJzL2NoYXIvTWFr ZWZpbGUgICAgIHwgICAxICsKIHhlbi9kcml2ZXJzL2NoYXIvbWVzb24tdWFydC5jIHwgMjc2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk LCAyODUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9kcml2ZXJzL2NoYXIv bWVzb24tdWFydC5jCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hhci9LY29uZmlnIGIveGVu L2RyaXZlcnMvY2hhci9LY29uZmlnCmluZGV4IGIxZjA3ZjguLmI1NzIzMDUgMTAwNjQ0Ci0tLSBh L3hlbi9kcml2ZXJzL2NoYXIvS2NvbmZpZworKysgYi94ZW4vZHJpdmVycy9jaGFyL0tjb25maWcK QEAgLTIwLDYgKzIwLDE0IEBAIGNvbmZpZyBIQVNfTVZFQlUKIAkgIFRoaXMgc2VsZWN0cyB0aGUg TWFydmVsbCBNVkVCVSBVQVJULiBJZiB5b3UgaGF2ZSBhIEFSTUFEQSAzNzAwCiAJICBiYXNlZCBi b2FyZCwgc2F5IFkuCiAKK2NvbmZpZyBIQVNfTUVTT04KKwlib29sICJBbWxvZ2ljIE1FU09OIFVB UlQgZHJpdmVyIgorCWRlZmF1bHQgeQorCWRlcGVuZHMgb24gQVJNXzY0CisJaGVscAorCSAgVGhp cyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1FU09OIFVBUlQuIElmIHlvdSBoYXZlIGEgQW1sb2dpYyBi YXNlZAorCSAgYm9hcmQsIHNheSBZLgorCiBjb25maWcgSEFTX1BMMDExCiAJYm9vbCAiQVJNIFBM MDExIFVBUlQgZHJpdmVyIgogCWRlZmF1bHQgeQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hh ci9NYWtlZmlsZSBiL3hlbi9kcml2ZXJzL2NoYXIvTWFrZWZpbGUKaW5kZXggYjY4YzMzMC4uN2M2 NDZkNyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvY2hhci9NYWtlZmlsZQorKysgYi94ZW4vZHJp dmVycy9jaGFyL01ha2VmaWxlCkBAIC0zLDYgKzMsNyBAQCBvYmotJChDT05GSUdfSEFTX05TMTY1 NTApICs9IG5zMTY1NTAubwogb2JqLSQoQ09ORklHX0hBU19DQURFTkNFX1VBUlQpICs9IGNhZGVu Y2UtdWFydC5vCiBvYmotJChDT05GSUdfSEFTX1BMMDExKSArPSBwbDAxMS5vCiBvYmotJChDT05G SUdfSEFTX0VYWU5PUzQyMTApICs9IGV4eW5vczQyMTAtdWFydC5vCitvYmotJChDT05GSUdfSEFT X01FU09OKSArPSBtZXNvbi11YXJ0Lm8KIG9iai0kKENPTkZJR19IQVNfTVZFQlUpICs9IG12ZWJ1 LXVhcnQubwogb2JqLSQoQ09ORklHX0hBU19PTUFQKSArPSBvbWFwLXVhcnQubwogb2JqLSQoQ09O RklHX0hBU19TQ0lGKSArPSBzY2lmLXVhcnQubwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hh ci9tZXNvbi11YXJ0LmMgYi94ZW4vZHJpdmVycy9jaGFyL21lc29uLXVhcnQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTZjMTg4Ci0tLSAvZGV2L251bGwKKysrIGIveGVu L2RyaXZlcnMvY2hhci9tZXNvbi11YXJ0LmMKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiB4ZW4v ZHJpdmVycy9jaGFyL21lc29uLXVhcnQuYworICoKKyAqIERyaXZlciBmb3IgQW1sb2dpYyBNRVNP TiBVQVJUCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBBbWl0IFNpbmdoIFRvbWFyIDxhbWl0 dG9tZXIyNUBnbWFpbC5jb20+LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4vaXJxLmg+CisjaW5jbHVkZSA8eGVuL3NlcmlhbC5o PgorI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKy8qIFJlZ2lz dGVyIG9mZnNldHMgKi8KKyNkZWZpbmUgQU1MX1VBUlRfV0ZJRk9fUkVHICAgICAgICAgICAgICAw eDAwCisjZGVmaW5lIEFNTF9VQVJUX1JGSUZPX1JFRyAgICAgICAgICAgICAgMHgwNAorI2RlZmlu ZSBBTUxfVUFSVF9DT05UUk9MX1JFRyAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgQU1MX1VBUlRf U1RBVFVTX1JFRyAgICAgICAgICAgICAweDBjCisjZGVmaW5lIEFNTF9VQVJUX01JU0NfUkVHICAg ICAgICAgICAgICAgMHgxMAorCisvKiBVQVJUX0NPTlRST0wgYml0cyAqLworI2RlZmluZSBBTUxf VUFSVF9UWF9SU1QgICAgICAgICAgICAgICAgIEJJVCgyMikKKyNkZWZpbmUgQU1MX1VBUlRfUlhf UlNUICAgICAgICAgICAgICAgICBCSVQoMjMpCisjZGVmaW5lIEFNTF9VQVJUX0NMRUFSX0VSUiAg ICAgICAgICAgICAgQklUKDI0KQorI2RlZmluZSBBTUxfVUFSVF9SWF9JTlRfRU4gICAgICAgICAg ICAgIEJJVCgyNykKKyNkZWZpbmUgQU1MX1VBUlRfVFhfSU5UX0VOICAgICAgICAgICAgICBCSVQo MjgpCisKKy8qIFVBUlRfU1RBVFVTIGJpdHMgKi8KKyNkZWZpbmUgQU1MX1VBUlRfUlhfRklGT19F TVBUWSAgICAgICAgICBCSVQoMjApCisjZGVmaW5lIEFNTF9VQVJUX1RYX0ZJRk9fRlVMTCAgICAg ICAgICAgQklUKDIxKQorI2RlZmluZSBBTUxfVUFSVF9UWF9GSUZPX0VNUFRZICAgICAgICAgIEJJ VCgyMikKKyNkZWZpbmUgQU1MX1VBUlRfVFhfQ05UX01BU0sgICAgICAgICAgICBHRU5NQVNLKDE0 LCA4KQorCisvKiBBTUxfVUFSVF9NSVNDIGJpdHMgKi8KKyNkZWZpbmUgQU1MX1VBUlRfWE1JVF9J UlEoYykgICAgICAgICAgICAoKChjKSAmIDB4ZmYpIDw8IDgpCisjZGVmaW5lIEFNTF9VQVJUX1JF Q1ZfSVJRKGMpICAgICAgICAgICAgKChjKSAmIDB4ZmYpCisKKyNkZWZpbmUgVFhfRklGT19TSVpF ICAgICAgICAgICAgICAgICAgICA2NAorCisjZGVmaW5lIHNldGJpdHMoYWRkciwgc2V0KSAgICAg ICAgICAgICAgd3JpdGVsKChyZWFkbChhZGRyKSB8IChzZXQpKSwgKGFkZHIpKQorI2RlZmluZSBj bHJiaXRzKGFkZHIsIGNsZWFyKSAgICAgICAgICAgIHdyaXRlbCgocmVhZGwoYWRkcikgJiB+KGNs ZWFyKSksIChhZGRyKSkKKworc3RhdGljIHN0cnVjdCBtZXNvbl91YXJ0IHsKKyAgICB1bnNpZ25l ZCBpbnQgaXJxOworICAgIHZvaWQgX19pb21lbSAqcmVnczsKKyAgICBzdHJ1Y3QgaXJxYWN0aW9u IGlycWFjdGlvbjsKKyAgICBzdHJ1Y3QgdnVhcnRfaW5mbyB2dWFydDsKK30gbWVzb25fY29tOwor CitzdGF0aWMgdm9pZCBtZXNvbl91YXJ0X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkYXRhLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCit7CisgICAgc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0ID0gZGF0YTsKKyAgICBzdHJ1Y3Qg bWVzb25fdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7CisgICAgdWludDMyX3Qgc3QgPSByZWFkbCh1 YXJ0LT5yZWdzICsgQU1MX1VBUlRfU1RBVFVTX1JFRyk7CisKKyAgICBpZiAoICEoc3QgJiBBTUxf VUFSVF9SWF9GSUZPX0VNUFRZKSApCisgICAgICAgIHNlcmlhbF9yeF9pbnRlcnJ1cHQocG9ydCwg cmVncyk7CisKKyAgICBpZiAoICEoc3QgJiBBTUxfVUFSVF9UWF9GSUZPX0ZVTEwpICkKKyAgICAg ICAgc2VyaWFsX3R4X2ludGVycnVwdChwb3J0LCByZWdzKTsKK30KKworc3RhdGljIHZvaWQgX19p bml0IG1lc29uX3VhcnRfaW5pdF9wcmVpcnEoc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0KQorewor ICAgIHN0cnVjdCBtZXNvbl91YXJ0ICp1YXJ0ID0gcG9ydC0+dWFydDsKKworICAgIC8qIFJlc2V0 IFVBUlQgKi8KKyAgICBzZXRiaXRzKHVhcnQtPnJlZ3MgKyBBTUxfVUFSVF9DT05UUk9MX1JFRywK KyAgICAgICAgICAgIChBTUxfVUFSVF9SWF9SU1QgfCBBTUxfVUFSVF9UWF9SU1QgfCBBTUxfVUFS VF9DTEVBUl9FUlIpKTsKKworICAgIGNscmJpdHModWFydC0+cmVncyArIEFNTF9VQVJUX0NPTlRS T0xfUkVHLAorICAgICAgICAgICAgKEFNTF9VQVJUX1JYX1JTVCB8IEFNTF9VQVJUX1RYX1JTVCB8 IEFNTF9VQVJUX0NMRUFSX0VSUikpOworCisgICAgLyogRGlzYWJsZSBSeC9UeCBpbnRlcnJ1cHRz ICovCisgICAgY2xyYml0cyh1YXJ0LT5yZWdzICsgQU1MX1VBUlRfQ09OVFJPTF9SRUcsCisgICAg ICAgICAgICAgICAoQU1MX1VBUlRfUlhfSU5UX0VOIHwgQU1MX1VBUlRfVFhfSU5UX0VOKSk7Cit9 CisKK3N0YXRpYyB2b2lkIF9faW5pdCBtZXNvbl91YXJ0X2luaXRfcG9zdGlycShzdHJ1Y3Qgc2Vy aWFsX3BvcnQgKnBvcnQpCit7CisgICAgc3RydWN0IG1lc29uX3VhcnQgKnVhcnQgPSBwb3J0LT51 YXJ0OworCisgICAgdWFydC0+aXJxYWN0aW9uLmhhbmRsZXIgPSBtZXNvbl91YXJ0X2ludGVycnVw dDsKKyAgICB1YXJ0LT5pcnFhY3Rpb24ubmFtZSAgICA9ICJtZXNvbl91YXJ0IjsKKyAgICB1YXJ0 LT5pcnFhY3Rpb24uZGV2X2lkICA9IHBvcnQ7CisKKyAgICBpZiAoIHNldHVwX2lycSh1YXJ0LT5p cnEsIDAsICZ1YXJ0LT5pcnFhY3Rpb24pICE9IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJG YWlsZWQgdG8gYWxsb2NhdGVkIE1lc29uIFVBUlQgSVJRICVkXG4iLCB1YXJ0LT5pcnEpOworICAg ICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDb25maWd1cmUgUngvVHggaW50 ZXJydXB0cyBiYXNlZCBvbiBieXRlcyBpbiBGSUZPLCB0aGVzZSBiaXRzIGhhdmUKKyAgICAgKiB0 YWtlbiBmcm9tIExpbnV4IGRyaXZlcgorICAgICAqLworICAgIHdyaXRlbCgoQU1MX1VBUlRfUkVD Vl9JUlEoMSkgfCBBTUxfVUFSVF9YTUlUX0lSUShUWF9GSUZPX1NJWkUgLyAyKSksCisgICAgICAg ICAgIHVhcnQtPnJlZ3MgKyBBTUxfVUFSVF9NSVNDX1JFRyk7CisKKyAgICAvKiBNYWtlIHN1cmUg UngvVHggaW50ZXJydXB0cyBhcmUgZW5hYmxlZCBub3cgKi8KKyAgICBzZXRiaXRzKHVhcnQtPnJl Z3MgKyBBTUxfVUFSVF9DT05UUk9MX1JFRywKKyAgICAgICAgICAgIChBTUxfVUFSVF9SWF9JTlRf RU4gfCBBTUxfVUFSVF9UWF9JTlRfRU4pKTsKK30KKworc3RhdGljIHZvaWQgbWVzb25fdWFydF9z dXNwZW5kKHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydCkKK3sKKyAgICBCVUcoKTsKK30KKworc3Rh dGljIHZvaWQgbWVzb25fdWFydF9yZXN1bWUoc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0KQorewor ICAgIEJVRygpOworfQorCitzdGF0aWMgdm9pZCBtZXNvbl91YXJ0X3B1dGMoc3RydWN0IHNlcmlh bF9wb3J0ICpwb3J0LCBjaGFyIGMpCit7CisgICAgc3RydWN0IG1lc29uX3VhcnQgKnVhcnQgPSBw b3J0LT51YXJ0OworCisgICAgd3JpdGVsKGMsIHVhcnQtPnJlZ3MgKyBBTUxfVUFSVF9XRklGT19S RUcpOworfQorCitzdGF0aWMgaW50IG1lc29uX3VhcnRfZ2V0YyhzdHJ1Y3Qgc2VyaWFsX3BvcnQg KnBvcnQsIGNoYXIgKmMpCit7CisgICAgc3RydWN0IG1lc29uX3VhcnQgKnVhcnQgPSBwb3J0LT51 YXJ0OworCisgICAgaWYgKCAocmVhZGwodWFydC0+cmVncyArIEFNTF9VQVJUX1NUQVRVU19SRUcp ICYgQU1MX1VBUlRfUlhfRklGT19FTVBUWSkgKQorICAgICAgICByZXR1cm4gMDsKKworICAgICpj ID0gcmVhZGwodWFydC0+cmVncyArIEFNTF9VQVJUX1JGSUZPX1JFRykgJiAweGZmOworCisgICAg cmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IG1lc29uX2lycShzdHJ1Y3Qgc2VyaWFs X3BvcnQgKnBvcnQpCit7CisgICAgc3RydWN0IG1lc29uX3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0 OworCisgICAgcmV0dXJuIHVhcnQtPmlycTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2dWFy dF9pbmZvICptZXNvbl92dWFydF9pbmZvKHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydCkKK3sKKyAg ICBzdHJ1Y3QgbWVzb25fdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7CisKKyAgICByZXR1cm4gJnVh cnQtPnZ1YXJ0OworfQorCitzdGF0aWMgdm9pZCBtZXNvbl91YXJ0X3N0b3BfdHgoc3RydWN0IHNl cmlhbF9wb3J0ICpwb3J0KQoreworICAgIHN0cnVjdCBtZXNvbl91YXJ0ICp1YXJ0ID0gcG9ydC0+ dWFydDsKKworICAgIGNscmJpdHModWFydC0+cmVncyArIEFNTF9VQVJUX0NPTlRST0xfUkVHLCBB TUxfVUFSVF9UWF9JTlRfRU4pOworfQorCitzdGF0aWMgdm9pZCBtZXNvbl91YXJ0X3N0YXJ0X3R4 KHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydCkKK3sKKyAgICBzdHJ1Y3QgbWVzb25fdWFydCAqdWFy dCA9IHBvcnQtPnVhcnQ7CisKKyAgICBzZXRiaXRzKHVhcnQtPnJlZ3MgKyBBTUxfVUFSVF9DT05U Uk9MX1JFRywgQU1MX1VBUlRfVFhfSU5UX0VOKTsKK30KKworc3RhdGljIGludCBtZXNvbl91YXJ0 X3R4X3JlYWR5KHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydCkKK3sKKyAgICBzdHJ1Y3QgbWVzb25f dWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7CisgICAgdWludDMyX3QgcmVnOworCisgICAgcmVnID0g cmVhZGwodWFydC0+cmVncyArIEFNTF9VQVJUX1NUQVRVU19SRUcpOworCisgICAgaWYgKCByZWcg JiBBTUxfVUFSVF9UWF9GSUZPX0VNUFRZICkKKyAgICAgICAgcmV0dXJuIFRYX0ZJRk9fU0laRTsK KyAgICBpZiAoIHJlZyAmIEFNTF9VQVJUX1RYX0ZJRk9fRlVMTCApCisgICAgICAgIHJldHVybiAw OworCisgICAgcmV0dXJuIChyZWcgJiBBTUxfVUFSVF9UWF9DTlRfTUFTSykgPj4gODsKK30KKwor c3RhdGljIHN0cnVjdCB1YXJ0X2RyaXZlciBfX3JlYWRfbW9zdGx5IG1lc29uX3VhcnRfZHJpdmVy ID0geworICAgIC5pbml0X3ByZWlycSAgPSBtZXNvbl91YXJ0X2luaXRfcHJlaXJxLAorICAgIC5p bml0X3Bvc3RpcnEgPSBtZXNvbl91YXJ0X2luaXRfcG9zdGlycSwKKyAgICAuZW5kYm9vdCAgICAg ID0gTlVMTCwKKyAgICAuc3VzcGVuZCAgICAgID0gbWVzb25fdWFydF9zdXNwZW5kLAorICAgIC5y ZXN1bWUgICAgICAgPSBtZXNvbl91YXJ0X3Jlc3VtZSwKKyAgICAucHV0YyAgICAgICAgID0gbWVz b25fdWFydF9wdXRjLAorICAgIC5nZXRjICAgICAgICAgPSBtZXNvbl91YXJ0X2dldGMsCisgICAg LnR4X3JlYWR5ICAgICA9IG1lc29uX3VhcnRfdHhfcmVhZHksCisgICAgLnN0b3BfdHggICAgICA9 IG1lc29uX3VhcnRfc3RvcF90eCwKKyAgICAuc3RhcnRfdHggICAgID0gbWVzb25fdWFydF9zdGFy dF90eCwKKyAgICAuaXJxICAgICAgICAgID0gbWVzb25faXJxLAorICAgIC52dWFydF9pbmZvICAg PSBtZXNvbl92dWFydF9pbmZvLAorfTsKKworc3RhdGljIGludCBfX2luaXQgbWVzb25fdWFydF9p bml0KHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKQoreworICAg IGNvbnN0IGNoYXIgKmNvbmZpZyA9IGRhdGE7CisgICAgc3RydWN0IG1lc29uX3VhcnQgKnVhcnQ7 CisgICAgaW50IHJlczsKKyAgICB1NjQgYWRkciwgc2l6ZTsKKworICAgIGlmICggc3RyY21wKGNv bmZpZywgIiIpICkKKyAgICAgICAgcHJpbnRrKCJXQVJOSU5HOiBVQVJUIGNvbmZpZ3VyYXRpb24g aXMgbm90IHN1cHBvcnRlZFxuIik7CisKKyAgICB1YXJ0ID0gJm1lc29uX2NvbTsKKworICAgIHJl cyA9IGR0X2RldmljZV9nZXRfYWRkcmVzcyhkZXYsIDAsICZhZGRyLCAmc2l6ZSk7CisgICAgaWYg KCByZXMgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJtZXNvbjogVW5hYmxlIHRvIHJldHJpZXZl IHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFVBUlRcbiIpOworICAgICAgICByZXR1cm4gcmVzOwor ICAgIH0KKworICAgIHJlcyA9IHBsYXRmb3JtX2dldF9pcnEoZGV2LCAwKTsKKyAgICBpZiAoIHJl cyA8IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJtZXNvbjogVW5hYmxlIHRvIHJldHJpZXZl IHRoZSBJUlFcbiIpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICB1YXJ0 LT5pcnEgID0gcmVzOworCisgICAgdWFydC0+cmVncyA9IGlvcmVtYXBfbm9jYWNoZShhZGRyLCBz aXplKTsKKyAgICBpZiAoICF1YXJ0LT5yZWdzICkKKyAgICB7CisgICAgICAgIHByaW50aygibWVz b246IFVuYWJsZSB0byBtYXAgdGhlIFVBUlRcbiIpOworICAgICAgICByZXR1cm4gLUVOT01FTTsK KyAgICB9CisKKyAgICB1YXJ0LT52dWFydC5iYXNlX2FkZHIgPSBhZGRyOworICAgIHVhcnQtPnZ1 YXJ0LnNpemUgPSBzaXplOworICAgIHVhcnQtPnZ1YXJ0LmRhdGFfb2ZmID0gQU1MX1VBUlRfV0ZJ Rk9fUkVHOworICAgIHVhcnQtPnZ1YXJ0LnN0YXR1c19vZmYgPSBBTUxfVUFSVF9TVEFUVVNfUkVH OworICAgIHVhcnQtPnZ1YXJ0LnN0YXR1cyA9IEFNTF9VQVJUX1JYX0ZJRk9fRU1QVFkgfCBBTUxf VUFSVF9UWF9GSUZPX0VNUFRZOworCisgICAgLyogUmVnaXN0ZXIgd2l0aCBnZW5lcmljIHNlcmlh bCBkcml2ZXIuICovCisgICAgc2VyaWFsX3JlZ2lzdGVyX3VhcnQoU0VSSE5EX0RUVUFSVCwgJm1l c29uX3VhcnRfZHJpdmVyLCB1YXJ0KTsKKworICAgIGR0X2RldmljZV9zZXRfdXNlZF9ieShkZXYs IERPTUlEX1hFTik7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBk dF9kZXZpY2VfbWF0Y2ggbWVzb25fZHRfbWF0Y2hbXSBfX2luaXRjb25zdCA9Cit7CisgICAgRFRf TUFUQ0hfQ09NUEFUSUJMRSgiYW1sb2dpYyxtZXNvbi11YXJ0IiksCisgICAgRFRfTUFUQ0hfQ09N UEFUSUJMRSgiYW1sb2dpYyxtZXNvbjYtdWFydCIpLAorICAgIERUX01BVENIX0NPTVBBVElCTEUo ImFtbG9naWMsbWVzb244LXVhcnQiKSwKKyAgICBEVF9NQVRDSF9DT01QQVRJQkxFKCJhbWxvZ2lj LG1lc29uOGItdWFydCIpLAorICAgIERUX01BVENIX0NPTVBBVElCTEUoImFtbG9naWMsbWVzb24t Z3gtdWFydCIpLAorICAgIHsgLyogc2VudGluZWwgKi8gfSwKK307CisKK0RUX0RFVklDRV9TVEFS VChtZXNvbiwgIkFtbG9naWMgVUFSVCIsIERFVklDRV9TRVJJQUwpCisgICAgLmR0X21hdGNoID0g bWVzb25fZHRfbWF0Y2gsCisgICAgLmluaXQgPSBtZXNvbl91YXJ0X2luaXQsCitEVF9ERVZJQ0Vf RU5ECisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmls CisgKiBFbmQ6CisqLwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs