From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jitao Shi Subject: [2/2] drm/panel: support for BOE tv101wum-n16 wuxga dsi video mode panel Date: Sat, 8 Jun 2019 15:02:30 +0800 Message-ID: <20190608070230.55381-2-jitao.shi@mediatek.com> References: <20190608070230.55381-1-jitao.shi@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190608070230.55381-1-jitao.shi@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , linux-pwm@vger.kernel.org, David Airlie , Matthias Brugger Cc: stonea168@163.com, dri-devel@lists.freedesktop.org, Andy Yan , Ajay Kumar , Vincent Palatin , cawa.cheng@mediatek.com, Russell King , Thierry Reding , devicetree@vger.kernel.org, Jitao Shi , linux-mediatek@lists.infradead.org, yingjoe.chen@mediatek.com, eddie.huang@mediatek.com, linux-arm-kernel@lists.infradead.org, Rahul Sharma , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Sascha Hauer , Sean Paul List-Id: devicetree@vger.kernel.org QWRkIGRyaXZlciBmb3IgQk9FIHR2MTAxd3VtLW5sNiBwYW5lbCBpcyBhIDEwLjEiIDEyMDB4MTky MCBwYW5lbC4KClNpZ25lZC1vZmYtYnk6IEppdGFvIFNoaSA8aml0YW8uc2hpQG1lZGlhdGVrLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAg MTAgKwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAx ICsKIC4uLi9ncHUvZHJtL3BhbmVsL3BhbmVsLWJvZS10djEwMXd1bS1ubDYuYyAgICB8IDcwMCAr KysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNzExIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtYm9lLXR2MTAxd3Vt LW5sNi5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwppbmRleCBlMzZkYmI0ZGY4NjcuLjVkYWQwMjhlMzVm MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL0tjb25maWcKQEAgLTI3Miw0ICsyNzIsMTQgQEAgY29uZmlnIERSTV9Q QU5FTF9UUlVMWV9OVDM1NTk3X1dRWEdBCiAJaGVscAogCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2Fu dCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBXUVhHQSBEdWFsIERTSQogCSAg VmlkZW8gTW9kZSBwYW5lbAorCitjb25maWcgRFJNX1BBTkVMX0JPRV9UVjEwMVdVTV9OTDYKKwl0 cmlzdGF0ZSAiQk9FIFRWMTAxV1VNIDEyMDB4MTkyMCBwYW5lbCIKKwlkZXBlbmRzIG9uIE9GCisJ ZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJ Q0UKKwloZWxwCisJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgZm9yIEJPRSBU VjEwMVdVTSBXVVhHQSBQQU5FTAorCSAgRFNJIFZpZGVvIE1vZGUgcGFuZWwKKwogZW5kbWVudQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL01ha2VmaWxlCmluZGV4IDc4ZTNkYzM3NmJkZC4uZmM1OTQ0MjMxYWE4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL01ha2VmaWxlCkBAIC0yOCwzICsyOCw0IEBAIG9iai0kKENPTkZJR19EUk1fUEFO RUxfU0lUUk9OSVhfU1Q3NzAxKSArPSBwYW5lbC1zaXRyb25peC1zdDc3MDEubwogb2JqLSQoQ09O RklHX0RSTV9QQU5FTF9TSVRST05JWF9TVDc3ODlWKSArPSBwYW5lbC1zaXRyb25peC1zdDc3ODl2 Lm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFBPX1RQRzExMCkgKz0gcGFuZWwtdHBvLXRwZzEx MC5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EpICs9IHBhbmVs LXRydWx5LW50MzU1OTcubworb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9CT0VfVFYxMDFXVU1fTkw2 KSArPSBwYW5lbC1ib2UtdHYxMDF3dW0tbmw2Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC1ib2UtdHYxMDF3dW0tbmw2LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtYm9lLXR2MTAxd3VtLW5sNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMTk1OTA2NjRjMzM3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL3BhbmVsLWJvZS10djEwMXd1bS1ubDYuYwpAQCAtMCwwICsxLDcwMCBAQAorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgg TWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaXRhbyBTaGkgPGppdGFvLnNoaUBtZWRpYXRlay5j b20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgorI2luY2x1ZGUgPGxpbnV4 L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxs aW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgorCisjaW5j bHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX21pcGlfZHNpLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorCisjaW5jbHVk ZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+CisKK3N0cnVjdCBib2VfcGFuZWwgeworCXN0cnVjdCBk cm1fcGFuZWwgYmFzZTsKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2k7CisKKwlzdHJ1Y3Qg YmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0OworCXN0cnVjdCByZWd1bGF0b3IgKnBwMTgwMDsK KwlzdHJ1Y3QgcmVndWxhdG9yICphdmVlOworCXN0cnVjdCByZWd1bGF0b3IgKmF2ZGQ7CisJc3Ry dWN0IGdwaW9fZGVzYyAqZW5hYmxlX2dwaW87CisKKwlib29sIHByZXBhcmVkOworCWJvb2wgZW5h YmxlZDsKKworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOworfTsKKworZW51 bSBkc2lfY21kX3R5cGUgeworCUlOSVRfR0VORU5JQ19DTUQsCisJSU5JVF9EQ1NfQ01ELAorCURF TEFZX0NNRCwKK307CisKK3N0cnVjdCBwYW5lbF9pbml0X2NtZCB7CisJZW51bSBkc2lfY21kX3R5 cGUgdHlwZTsKKwlzaXplX3QgbGVuOworCWNvbnN0IGNoYXIgKmRhdGE7Cit9OworCisjZGVmaW5l IF9JTklUX0NNRCguLi4pIHsgXAorCS50eXBlID0gSU5JVF9HRU5FTklDX0NNRCxcCisJLmxlbiA9 IHNpemVvZigoY2hhcltdKXtfX1ZBX0FSR1NfX30pLCBcCisJLmRhdGEgPSAoY2hhcltdKXtfX1ZB X0FSR1NfX30gfQorCisjZGVmaW5lIF9JTklUX0RDU19DTUQoLi4uKSB7IFwKKwkudHlwZSA9IElO SVRfRENTX0NNRCwgXAorCS5sZW4gPSBzaXplb2YoKGNoYXJbXSl7X19WQV9BUkdTX199KSwgXAor CS5kYXRhID0gKGNoYXJbXSl7X19WQV9BUkdTX199IH0KKworI2RlZmluZSBfSU5JVF9ERUxBWV9D TUQoLi4uKSB7IFwKKwkudHlwZSA9IERFTEFZX0NNRCxcCisJLmxlbiA9IHNpemVvZigoY2hhcltd KXtfX1ZBX0FSR1NfX30pLCBcCisJLmRhdGEgPSAoY2hhcltdKXtfX1ZBX0FSR1NfX30gfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IHBhbmVsX2luaXRfY21kIGJvZV9pbml0X2NtZFtdID0geworCV9J TklUX0RFTEFZX0NNRCgyNCksCisJX0lOSVRfRENTX0NNRCgweEIwLCAweDA1KSwKKwlfSU5JVF9E Q1NfQ01EKDB4QjEsIDB4RTUpLAorCV9JTklUX0RDU19DTUQoMHhCMywgMHg1MiksCisKKwlfSU5J VF9EQ1NfQ01EKDB4QjAsIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhCMywgMHg4OCksCisJX0lO SVRfRENTX0NNRCgweEIwLCAweDA0KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjgsIDB4MDApLAorCisJ X0lOSVRfRENTX0NNRCgweEIwLCAweDAwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjYsIDB4MDMpLAor CV9JTklUX0RDU19DTUQoMHhCQSwgMHg4QiksCisJX0lOSVRfRENTX0NNRCgweEJGLCAweDFBKSwK KwlfSU5JVF9EQ1NfQ01EKDB4QzAsIDB4MEYpLAorCV9JTklUX0RDU19DTUQoMHhDMiwgMHgwQyks CisJX0lOSVRfRENTX0NNRCgweEMzLCAweDAyKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzQsIDB4MEMp LAorCV9JTklUX0RDU19DTUQoMHhDNSwgMHgwMiksCisKKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4 MDEpLAorCV9JTklUX0RDU19DTUQoMHhFMCwgMHgyNiksCisJX0lOSVRfRENTX0NNRCgweEUxLCAw eDI2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4REMsIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhERCwg MHgwMCksCisJX0lOSVRfRENTX0NNRCgweENDLCAweDI2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0Qs IDB4MjYpLAorCV9JTklUX0RDU19DTUQoMHhDOCwgMHgwMCksCisJX0lOSVRfRENTX0NNRCgweEM5 LCAweDAwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4RDIsIDB4MDMpLAorCV9JTklUX0RDU19DTUQoMHhE MywgMHgwMyksCisJX0lOSVRfRENTX0NNRCgweEU2LCAweDA0KSwKKwlfSU5JVF9EQ1NfQ01EKDB4 RTcsIDB4MDQpLAorCV9JTklUX0RDU19DTUQoMHhDNCwgMHgwOSksCisJX0lOSVRfRENTX0NNRCgw eEM1LCAweDA5KSwKKwlfSU5JVF9EQ1NfQ01EKDB4RDgsIDB4MEEpLAorCV9JTklUX0RDU19DTUQo MHhEOSwgMHgwQSksCisJX0lOSVRfRENTX0NNRCgweEMyLCAweDBCKSwKKwlfSU5JVF9EQ1NfQ01E KDB4QzMsIDB4MEIpLAorCV9JTklUX0RDU19DTUQoMHhENiwgMHgwQyksCisJX0lOSVRfRENTX0NN RCgweEQ3LCAweDBDKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzAsIDB4MDUpLAorCV9JTklUX0RDU19D TUQoMHhDMSwgMHgwNSksCisJX0lOSVRfRENTX0NNRCgweEQ0LCAweDA2KSwKKwlfSU5JVF9EQ1Nf Q01EKDB4RDUsIDB4MDYpLAorCV9JTklUX0RDU19DTUQoMHhDQSwgMHgwNyksCisJX0lOSVRfRENT X0NNRCgweENCLCAweDA3KSwKKwlfSU5JVF9EQ1NfQ01EKDB4REUsIDB4MDgpLAorCV9JTklUX0RD U19DTUQoMHhERiwgMHgwOCksCisKKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDIpLAorCV9JTklU X0RDU19DTUQoMHhDMCwgMHgwMCksCisJX0lOSVRfRENTX0NNRCgweEMxLCAweDBEKSwKKwlfSU5J VF9EQ1NfQ01EKDB4QzIsIDB4MTcpLAorCV9JTklUX0RDU19DTUQoMHhDMywgMHgyNiksCisJX0lO SVRfRENTX0NNRCgweEM0LCAweDMxKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzUsIDB4MUMpLAorCV9J TklUX0RDU19DTUQoMHhDNiwgMHgyQyksCisJX0lOSVRfRENTX0NNRCgweEM3LCAweDMzKSwKKwlf SU5JVF9EQ1NfQ01EKDB4QzgsIDB4MzEpLAorCV9JTklUX0RDU19DTUQoMHhDOSwgMHgzNyksCisJ X0lOSVRfRENTX0NNRCgweENBLCAweDM3KSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0IsIDB4MzcpLAor CV9JTklUX0RDU19DTUQoMHhDQywgMHgzOSksCisJX0lOSVRfRENTX0NNRCgweENELCAweDJFKSwK KwlfSU5JVF9EQ1NfQ01EKDB4Q0UsIDB4MkYpLAorCV9JTklUX0RDU19DTUQoMHhDRiwgMHgyRiks CisJX0lOSVRfRENTX0NNRCgweEQwLCAweDA3KSwKKwlfSU5JVF9EQ1NfQ01EKDB4RDIsIDB4MDAp LAorCV9JTklUX0RDU19DTUQoMHhEMywgMHgwRCksCisJX0lOSVRfRENTX0NNRCgweEQ0LCAweDE3 KSwKKwlfSU5JVF9EQ1NfQ01EKDB4RDUsIDB4MjYpLAorCV9JTklUX0RDU19DTUQoMHhENiwgMHgz MSksCisJX0lOSVRfRENTX0NNRCgweEQ3LCAweDNGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4RDgsIDB4 M0YpLAorCV9JTklUX0RDU19DTUQoMHhEOSwgMHgzRiksCisJX0lOSVRfRENTX0NNRCgweERBLCAw eDNGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4REIsIDB4MzcpLAorCV9JTklUX0RDU19DTUQoMHhEQywg MHgzNyksCisJX0lOSVRfRENTX0NNRCgweERELCAweDM3KSwKKwlfSU5JVF9EQ1NfQ01EKDB4REUs IDB4MzkpLAorCV9JTklUX0RDU19DTUQoMHhERiwgMHgyRSksCisJX0lOSVRfRENTX0NNRCgweEUw LCAweDJGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4RTEsIDB4MkYpLAorCV9JTklUX0RDU19DTUQoMHhF MiwgMHgwNyksCisKKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDMpLAorCV9JTklUX0RDU19DTUQo MHhDOCwgMHgwQiksCisJX0lOSVRfRENTX0NNRCgweEM5LCAweDA3KSwKKwlfSU5JVF9EQ1NfQ01E KDB4QzMsIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhFNywgMHgwMCksCisJX0lOSVRfRENTX0NN RCgweEM1LCAweDJBKSwKKwlfSU5JVF9EQ1NfQ01EKDB4REUsIDB4MkEpLAorCV9JTklUX0RDU19D TUQoMHhDQSwgMHg0MyksCisJX0lOSVRfRENTX0NNRCgweEM5LCAweDA3KSwKKwlfSU5JVF9EQ1Nf Q01EKDB4RTQsIDB4QzApLAorCV9JTklUX0RDU19DTUQoMHhFNSwgMHgwRCksCisJX0lOSVRfRENT X0NNRCgweENCLCAweDAwKSwKKworCV9JTklUX0RDU19DTUQoMHhCMCwgMHgwNiksCisJX0lOSVRf RENTX0NNRCgweEI4LCAweEE1KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzAsIDB4QTUpLAorCV9JTklU X0RDU19DTUQoMHhDNywgMHgwRiksCisJX0lOSVRfRENTX0NNRCgweEQ1LCAweDMyKSwKKwlfSU5J VF9EQ1NfQ01EKDB4QjgsIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhDMCwgMHgwMCksCisJX0lO SVRfRENTX0NNRCgweEJDLCAweDAwKSwKKworCV9JTklUX0RDU19DTUQoMHhCMCwgMHgwNyksCisJ X0lOSVRfRENTX0NNRCgweEIxLCAweDAwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjIsIDB4MDIpLAor CV9JTklUX0RDU19DTUQoMHhCMywgMHgwRiksCisJX0lOSVRfRENTX0NNRCgweEI0LCAweDI1KSwK KwlfSU5JVF9EQ1NfQ01EKDB4QjUsIDB4MzkpLAorCV9JTklUX0RDU19DTUQoMHhCNiwgMHg0RSks CisJX0lOSVRfRENTX0NNRCgweEI3LCAweDcyKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjgsIDB4OTcp LAorCV9JTklUX0RDU19DTUQoMHhCOSwgMHhEQyksCisJX0lOSVRfRENTX0NNRCgweEJBLCAweDIy KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkIsIDB4QTQpLAorCV9JTklUX0RDU19DTUQoMHhCQywgMHgy QiksCisJX0lOSVRfRENTX0NNRCgweEJELCAweDJGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkUsIDB4 QTkpLAorCV9JTklUX0RDU19DTUQoMHhCRiwgMHgyNSksCisJX0lOSVRfRENTX0NNRCgweEMwLCAw eDYxKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzEsIDB4OTcpLAorCV9JTklUX0RDU19DTUQoMHhDMiwg MHhCMiksCisJX0lOSVRfRENTX0NNRCgweEMzLCAweENEKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzQs IDB4RDkpLAorCV9JTklUX0RDU19DTUQoMHhDNSwgMHhFNyksCisJX0lOSVRfRENTX0NNRCgweEM2 LCAweEY0KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzcsIDB4RkEpLAorCV9JTklUX0RDU19DTUQoMHhD OCwgMHhGQyksCisJX0lOSVRfRENTX0NNRCgweEM5LCAweDAwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4 Q0EsIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhDQiwgMHgxNiksCisJX0lOSVRfRENTX0NNRCgw eENDLCAweEFGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0QsIDB4RkYpLAorCV9JTklUX0RDU19DTUQo MHhDRSwgMHhGRiksCisKKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDgpLAorCV9JTklUX0RDU19D TUQoMHhCMSwgMHgwNCksCisJX0lOSVRfRENTX0NNRCgweEIyLCAweDA1KSwKKwlfSU5JVF9EQ1Nf Q01EKDB4QjMsIDB4MTEpLAorCV9JTklUX0RDU19DTUQoMHhCNCwgMHgyNCksCisJX0lOSVRfRENT X0NNRCgweEI1LCAweDM5KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjYsIDB4NEYpLAorCV9JTklUX0RD U19DTUQoMHhCNywgMHg3MiksCisJX0lOSVRfRENTX0NNRCgweEI4LCAweDk4KSwKKwlfSU5JVF9E Q1NfQ01EKDB4QjksIDB4REMpLAorCV9JTklUX0RDU19DTUQoMHhCQSwgMHgyMyksCisJX0lOSVRf RENTX0NNRCgweEJCLCAweEE2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkMsIDB4MkMpLAorCV9JTklU X0RDU19DTUQoMHhCRCwgMHgzMCksCisJX0lOSVRfRENTX0NNRCgweEJFLCAweEFBKSwKKwlfSU5J VF9EQ1NfQ01EKDB4QkYsIDB4MjYpLAorCV9JTklUX0RDU19DTUQoMHhDMCwgMHg2MiksCisJX0lO SVRfRENTX0NNRCgweEMxLCAweDlCKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzIsIDB4QjUpLAorCV9J TklUX0RDU19DTUQoMHhDMywgMHhDRiksCisJX0lOSVRfRENTX0NNRCgweEM0LCAweERCKSwKKwlf SU5JVF9EQ1NfQ01EKDB4QzUsIDB4RTgpLAorCV9JTklUX0RDU19DTUQoMHhDNiwgMHhGNSksCisJ X0lOSVRfRENTX0NNRCgweEM3LCAweEZBKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzgsIDB4RkMpLAor CV9JTklUX0RDU19DTUQoMHhDOSwgMHgwMCksCisJX0lOSVRfRENTX0NNRCgweENBLCAweDAwKSwK KwlfSU5JVF9EQ1NfQ01EKDB4Q0IsIDB4MTYpLAorCV9JTklUX0RDU19DTUQoMHhDQywgMHhBRiks CisJX0lOSVRfRENTX0NNRCgweENELCAweEZGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0UsIDB4RkYp LAorCisJX0lOSVRfRENTX0NNRCgweEIwLCAweDA5KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjEsIDB4 MDQpLAorCV9JTklUX0RDU19DTUQoMHhCMiwgMHgwMiksCisJX0lOSVRfRENTX0NNRCgweEIzLCAw eDE2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjQsIDB4MjQpLAorCV9JTklUX0RDU19DTUQoMHhCNSwg MHgzQiksCisJX0lOSVRfRENTX0NNRCgweEI2LCAweDRGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4Qjcs IDB4NzMpLAorCV9JTklUX0RDU19DTUQoMHhCOCwgMHg5OSksCisJX0lOSVRfRENTX0NNRCgweEI5 LCAweEUwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkEsIDB4MjYpLAorCV9JTklUX0RDU19DTUQoMHhC QiwgMHhBRCksCisJX0lOSVRfRENTX0NNRCgweEJDLCAweDM2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4 QkQsIDB4M0EpLAorCV9JTklUX0RDU19DTUQoMHhCRSwgMHhBRSksCisJX0lOSVRfRENTX0NNRCgw eEJGLCAweDJBKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzAsIDB4NjYpLAorCV9JTklUX0RDU19DTUQo MHhDMSwgMHg5RSksCisJX0lOSVRfRENTX0NNRCgweEMyLCAweEI4KSwKKwlfSU5JVF9EQ1NfQ01E KDB4QzMsIDB4RDEpLAorCV9JTklUX0RDU19DTUQoMHhDNCwgMHhERCksCisJX0lOSVRfRENTX0NN RCgweEM1LCAweEU5KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzYsIDB4RjYpLAorCV9JTklUX0RDU19D TUQoMHhDNywgMHhGQSksCisJX0lOSVRfRENTX0NNRCgweEM4LCAweEZDKSwKKwlfSU5JVF9EQ1Nf Q01EKDB4QzksIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhDQSwgMHgwMCksCisJX0lOSVRfRENT X0NNRCgweENCLCAweDE2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0MsIDB4QUYpLAorCV9JTklUX0RD U19DTUQoMHhDRCwgMHhGRiksCisJX0lOSVRfRENTX0NNRCgweENFLCAweEZGKSwKKworCV9JTklU X0RDU19DTUQoMHhCMCwgMHgwQSksCisJX0lOSVRfRENTX0NNRCgweEIxLCAweDAwKSwKKwlfSU5J VF9EQ1NfQ01EKDB4QjIsIDB4MDIpLAorCV9JTklUX0RDU19DTUQoMHhCMywgMHgwRiksCisJX0lO SVRfRENTX0NNRCgweEI0LCAweDI1KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjUsIDB4MzkpLAorCV9J TklUX0RDU19DTUQoMHhCNiwgMHg0RSksCisJX0lOSVRfRENTX0NNRCgweEI3LCAweDcyKSwKKwlf SU5JVF9EQ1NfQ01EKDB4QjgsIDB4OTcpLAorCV9JTklUX0RDU19DTUQoMHhCOSwgMHhEQyksCisJ X0lOSVRfRENTX0NNRCgweEJBLCAweDIyKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkIsIDB4QTQpLAor CV9JTklUX0RDU19DTUQoMHhCQywgMHgyQiksCisJX0lOSVRfRENTX0NNRCgweEJELCAweDJGKSwK KwlfSU5JVF9EQ1NfQ01EKDB4QkUsIDB4QTkpLAorCV9JTklUX0RDU19DTUQoMHhCRiwgMHgyNSks CisJX0lOSVRfRENTX0NNRCgweEMwLCAweDYxKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzEsIDB4OTcp LAorCV9JTklUX0RDU19DTUQoMHhDMiwgMHhCMiksCisJX0lOSVRfRENTX0NNRCgweEMzLCAweENE KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzQsIDB4RDkpLAorCV9JTklUX0RDU19DTUQoMHhDNSwgMHhF NyksCisJX0lOSVRfRENTX0NNRCgweEM2LCAweEY0KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzcsIDB4 RkEpLAorCV9JTklUX0RDU19DTUQoMHhDOCwgMHhGQyksCisJX0lOSVRfRENTX0NNRCgweEM5LCAw eDAwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0EsIDB4MDApLAorCV9JTklUX0RDU19DTUQoMHhDQiwg MHgxNiksCisJX0lOSVRfRENTX0NNRCgweENDLCAweEFGKSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0Qs IDB4RkYpLAorCV9JTklUX0RDU19DTUQoMHhDRSwgMHhGRiksCisKKwlfSU5JVF9EQ1NfQ01EKDB4 QjAsIDB4MEIpLAorCV9JTklUX0RDU19DTUQoMHhCMSwgMHgwNCksCisJX0lOSVRfRENTX0NNRCgw eEIyLCAweDA1KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjMsIDB4MTEpLAorCV9JTklUX0RDU19DTUQo MHhCNCwgMHgyNCksCisJX0lOSVRfRENTX0NNRCgweEI1LCAweDM5KSwKKwlfSU5JVF9EQ1NfQ01E KDB4QjYsIDB4NEYpLAorCV9JTklUX0RDU19DTUQoMHhCNywgMHg3MiksCisJX0lOSVRfRENTX0NN RCgweEI4LCAweDk4KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjksIDB4REMpLAorCV9JTklUX0RDU19D TUQoMHhCQSwgMHgyMyksCisJX0lOSVRfRENTX0NNRCgweEJCLCAweEE2KSwKKwlfSU5JVF9EQ1Nf Q01EKDB4QkMsIDB4MkMpLAorCV9JTklUX0RDU19DTUQoMHhCRCwgMHgzMCksCisJX0lOSVRfRENT X0NNRCgweEJFLCAweEFBKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkYsIDB4MjYpLAorCV9JTklUX0RD U19DTUQoMHhDMCwgMHg2MiksCisJX0lOSVRfRENTX0NNRCgweEMxLCAweDlCKSwKKwlfSU5JVF9E Q1NfQ01EKDB4QzIsIDB4QjUpLAorCV9JTklUX0RDU19DTUQoMHhDMywgMHhDRiksCisJX0lOSVRf RENTX0NNRCgweEM0LCAweERCKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzUsIDB4RTgpLAorCV9JTklU X0RDU19DTUQoMHhDNiwgMHhGNSksCisJX0lOSVRfRENTX0NNRCgweEM3LCAweEZBKSwKKwlfSU5J VF9EQ1NfQ01EKDB4QzgsIDB4RkMpLAorCV9JTklUX0RDU19DTUQoMHhDOSwgMHgwMCksCisJX0lO SVRfRENTX0NNRCgweENBLCAweDAwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4Q0IsIDB4MTYpLAorCV9J TklUX0RDU19DTUQoMHhDQywgMHhBRiksCisJX0lOSVRfRENTX0NNRCgweENELCAweEZGKSwKKwlf SU5JVF9EQ1NfQ01EKDB4Q0UsIDB4RkYpLAorCisJX0lOSVRfRENTX0NNRCgweEIwLCAweDBDKSwK KwlfSU5JVF9EQ1NfQ01EKDB4QjEsIDB4MDQpLAorCV9JTklUX0RDU19DTUQoMHhCMiwgMHgwMiks CisJX0lOSVRfRENTX0NNRCgweEIzLCAweDE2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjQsIDB4MjQp LAorCV9JTklUX0RDU19DTUQoMHhCNSwgMHgzQiksCisJX0lOSVRfRENTX0NNRCgweEI2LCAweDRG KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjcsIDB4NzMpLAorCV9JTklUX0RDU19DTUQoMHhCOCwgMHg5 OSksCisJX0lOSVRfRENTX0NNRCgweEI5LCAweEUwKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkEsIDB4 MjYpLAorCV9JTklUX0RDU19DTUQoMHhCQiwgMHhBRCksCisJX0lOSVRfRENTX0NNRCgweEJDLCAw eDM2KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QkQsIDB4M0EpLAorCV9JTklUX0RDU19DTUQoMHhCRSwg MHhBRSksCisJX0lOSVRfRENTX0NNRCgweEJGLCAweDJBKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzAs IDB4NjYpLAorCV9JTklUX0RDU19DTUQoMHhDMSwgMHg5RSksCisJX0lOSVRfRENTX0NNRCgweEMy LCAweEI4KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzMsIDB4RDEpLAorCV9JTklUX0RDU19DTUQoMHhD NCwgMHhERCksCisJX0lOSVRfRENTX0NNRCgweEM1LCAweEU5KSwKKwlfSU5JVF9EQ1NfQ01EKDB4 QzYsIDB4RjYpLAorCV9JTklUX0RDU19DTUQoMHhDNywgMHhGQSksCisJX0lOSVRfRENTX0NNRCgw eEM4LCAweEZDKSwKKwlfSU5JVF9EQ1NfQ01EKDB4QzksIDB4MDApLAorCV9JTklUX0RDU19DTUQo MHhDQSwgMHgwMCksCisJX0lOSVRfRENTX0NNRCgweENCLCAweDE2KSwKKwlfSU5JVF9EQ1NfQ01E KDB4Q0MsIDB4QUYpLAorCV9JTklUX0RDU19DTUQoMHhDRCwgMHhGRiksCisJX0lOSVRfRENTX0NN RCgweENFLCAweEZGKSwKKworCV9JTklUX0RDU19DTUQoMHhCMCwgMHgwMCksCisJX0lOSVRfRENT X0NNRCgweEIzLCAweDA4KSwKKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDQpLAorCV9JTklUX0RD U19DTUQoMHhCOCwgMHg2OCksCisJX0lOSVRfREVMQVlfQ01EKDE1MCksCisJe30sCit9OworCitz dGF0aWMgaW5saW5lIHN0cnVjdCBib2VfcGFuZWwgKnRvX2JvZV9wYW5lbChzdHJ1Y3QgZHJtX3Bh bmVsICpwYW5lbCkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgYm9lX3Bh bmVsLCBiYXNlKTsKK30KKworc3RhdGljIGludCBib2VfcGFuZWxfaW5pdChzdHJ1Y3QgYm9lX3Bh bmVsICpib2UpCit7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gYm9lLT5kc2k7CisJ c3RydWN0IGRybV9wYW5lbCAqcGFuZWwgPSAmYm9lLT5iYXNlOworCWludCBlcnIsIGk7CisKKwlm b3IgKGkgPSAwOyBib2VfaW5pdF9jbWRbaV0ubGVuICE9IDA7IGkrKykgeworCQljb25zdCBzdHJ1 Y3QgcGFuZWxfaW5pdF9jbWQgKmNtZCA9ICZib2VfaW5pdF9jbWRbaV07CisKKwkJc3dpdGNoIChj bWQtPnR5cGUpIHsKKwkJY2FzZSBJTklUX0RDU19DTUQ6CisJCQllcnIgPSBtaXBpX2RzaV9kY3Nf d3JpdGUoZHNpLCBjbWQtPmRhdGFbMF0sCisJCQkJCQkgKGNtZC0+bGVuIDw9IDEpID8gTlVMTCA6 CisJCQkJCQkgJmNtZC0+ZGF0YVsxXSwgY21kLT5sZW4gLSAxKTsKKwkJCWJyZWFrOworCisJCWNh c2UgREVMQVlfQ01EOgorCQkJbXNsZWVwKGNtZC0+ZGF0YVswXSk7CisJCQllcnIgPSAwOworCQkJ YnJlYWs7CisKKwkJY2FzZSBJTklUX0dFTkVOSUNfQ01EOgorCQlkZWZhdWx0OgorCQkJZXJyID0g bWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIGNtZC0+ZGF0YSwgY21kLT5sZW4pOworCQkJYnJl YWs7CisJCX0KKworCQlpZiAoZXJyIDwgMCkgeworCQkJZGV2X2VycihwYW5lbC0+ZGV2LAorCQkJ CSJmYWlsZWQgdG8gd3JpdGUgY29tbWFuZCAldVxuIiwgaSk7CisJCQlyZXR1cm4gZXJyOworCQl9 CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVsX29mZihzdHJ1Y3Qg Ym9lX3BhbmVsICpib2UpCit7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gYm9lLT5k c2k7CisJaW50IHJldDsKKworCWRzaS0+bW9kZV9mbGFncyAmPSB+TUlQSV9EU0lfTU9ERV9MUE07 CisKKwlyZXQgPSBtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShkc2kpOworCWlmIChyZXQg PCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm9lX3Bh bmVsX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGJvZV9wYW5l bCAqYm9lID0gdG9fYm9lX3BhbmVsKHBhbmVsKTsKKworCWlmICghYm9lLT5lbmFibGVkKQorCQly ZXR1cm4gMDsKKworCWJhY2tsaWdodF9kaXNhYmxlKGJvZS0+YmFja2xpZ2h0KTsKKworCWJvZS0+ ZW5hYmxlZCA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVs X3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgYm9lX3BhbmVs ICpib2UgPSB0b19ib2VfcGFuZWwocGFuZWwpOworCWludCByZXQ7CisKKwlpZiAoIWJvZS0+cHJl cGFyZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gYm9lX3BhbmVsX29mZihib2UpOworCWlmIChy ZXQgPCAwKSB7CisJCWRldl9lcnIocGFuZWwtPmRldiwgImZhaWxlZCB0byBzZXQgcGFuZWwgb2Zm OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc2xlZXAoMTUwKTsKKwlpZiAo Ym9lLT5lbmFibGVfZ3BpbykKKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGJvZS0+ZW5hYmxlX2dwaW8sIDAp OworCXVzbGVlcF9yYW5nZSg1MDAsIDEwMDApOworCXJlZ3VsYXRvcl9kaXNhYmxlKGJvZS0+YXZl ZSk7CisJcmVndWxhdG9yX2Rpc2FibGUoYm9lLT5hdmRkKTsKKwl1c2xlZXBfcmFuZ2UoNTAwMCwg NzAwMCk7CisJcmVndWxhdG9yX2Rpc2FibGUoYm9lLT5wcDE4MDApOworCisJYm9lLT5wcmVwYXJl ZCA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVsX3ByZXBh cmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGJvZV9wYW5lbCAqYm9lID0g dG9fYm9lX3BhbmVsKHBhbmVsKTsKKwlpbnQgcmV0OworCisJaWYgKGJvZS0+cHJlcGFyZWQpCisJ CXJldHVybiAwOworCisJaWYgKGJvZS0+ZW5hYmxlX2dwaW8pIHsKKwkJZ3Bpb2Rfc2V0X3ZhbHVl KGJvZS0+ZW5hYmxlX2dwaW8sIDApOworCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMTUwMCk7CisJfQor CisJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShib2UtPnBwMTgwMCk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwl1c2xlZXBfcmFuZ2UoMzAwMCwgNTAwMCk7CisKKwlyZXQgPSByZWd1 bGF0b3JfZW5hYmxlKGJvZS0+YXZkZCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gcG93ZXJvZmYx djg7CisJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShib2UtPmF2ZWUpOworCWlmIChyZXQgPCAwKQor CQlnb3RvIHBvd2Vyb2ZmYXZkZDsKKworCW1zbGVlcCgxMDApOworCisJaWYgKGJvZS0+ZW5hYmxl X2dwaW8pIHsKKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGJvZS0+ZW5hYmxlX2dwaW8sIDEpOworCQl1c2xl ZXBfcmFuZ2UoMTAwMDAsIDEyMDAwKTsKKwl9CisKKwlyZXQgPSBib2VfcGFuZWxfaW5pdChib2Up OworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIocGFuZWwtPmRldiwgImZhaWxlZCB0byBpbml0 IHBhbmVsOiAlZFxuIiwgcmV0KTsKKwkJZ290byBwb3dlcm9mZjsKKwl9CisKKwlib2UtPnByZXBh cmVkID0gdHJ1ZTsKKworCXJldHVybiAwOworCitwb3dlcm9mZjoKKwlyZWd1bGF0b3JfZGlzYWJs ZShib2UtPmF2ZWUpOworcG93ZXJvZmZhdmRkOgorCXJlZ3VsYXRvcl9kaXNhYmxlKGJvZS0+YXZk ZCk7Citwb3dlcm9mZjF2ODoKKwl1c2xlZXBfcmFuZ2UoNTAwMCwgNzAwMCk7CisJcmVndWxhdG9y X2Rpc2FibGUoYm9lLT5wcDE4MDApOworCWlmIChib2UtPmVuYWJsZV9ncGlvKQorCQlncGlvZF9z ZXRfdmFsdWUoYm9lLT5lbmFibGVfZ3BpbywgMCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBib2VfcGFuZWxfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVj dCBib2VfcGFuZWwgKmJvZSA9IHRvX2JvZV9wYW5lbChwYW5lbCk7CisJaW50IHJldDsKKworCWlm IChib2UtPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gYmFja2xpZ2h0X2VuYWJsZShi b2UtPmJhY2tsaWdodCk7CisJaWYgKHJldCkgeworCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kcm0t PmRldiwKKwkJCSAgICAgICJGYWlsZWQgdG8gZW5hYmxlIGJhY2tsaWdodCAlZFxuIiwgcmV0KTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwlib2UtPmVuYWJsZWQgPSB0cnVlOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUg PSB7CisJLmNsb2NrID0gMTU5NDI1LAorCS5oZGlzcGxheSA9IDEyMDAsCisJLmhzeW5jX3N0YXJ0 ID0gMTIwMCArIDEwMCwKKwkuaHN5bmNfZW5kID0gMTIwMCArIDEwMCArIDQwLAorCS5odG90YWwg PSAxMjAwICsgMTAwICsgNDAgKyAyNCwKKwkudmRpc3BsYXkgPSAxOTIwLAorCS52c3luY19zdGFy dCA9IDE5MjAgKyAxMCwKKwkudnN5bmNfZW5kID0gMTkyMCArIDEwICsgMTQsCisJLnZ0b3RhbCA9 IDE5MjAgKyAxMCArIDE0ICsgNCwKKwkudnJlZnJlc2ggPSA2MCwKK307CisKK3N0YXRpYyBpbnQg Ym9lX3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFu ZWwtPmRybSwgJmRlZmF1bHRfbW9kZSk7CisJaWYgKCFtb2RlKSB7CisJCWRldl9lcnIocGFuZWwt PmRybS0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1eEAldVxuIiwKKwkJCWRlZmF1bHRf bW9kZS5oZGlzcGxheSwgZGVmYXVsdF9tb2RlLnZkaXNwbGF5LAorCQkJZGVmYXVsdF9tb2RlLnZy ZWZyZXNoKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZHJtX21vZGVfc2V0X25hbWUobW9k ZSk7CisKKwlkcm1fbW9kZV9wcm9iZWRfYWRkKHBhbmVsLT5jb25uZWN0b3IsIG1vZGUpOworCisJ cGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gMTM1OworCXBhbmVsLT5j b25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAyMTY7CisJcGFuZWwtPmNvbm5lY3Rv ci0+ZGlzcGxheV9pbmZvLmJwYyA9IDg7CisKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgYm9lX3BhbmVsX2Z1bmNzID0geworCS5kaXNhYmxlID0g Ym9lX3BhbmVsX2Rpc2FibGUsCisJLnVucHJlcGFyZSA9IGJvZV9wYW5lbF91bnByZXBhcmUsCisJ LnByZXBhcmUgPSBib2VfcGFuZWxfcHJlcGFyZSwKKwkuZW5hYmxlID0gYm9lX3BhbmVsX2VuYWJs ZSwKKwkuZ2V0X21vZGVzID0gYm9lX3BhbmVsX2dldF9tb2RlcywKK307CisKK3N0YXRpYyBpbnQg Ym9lX3BhbmVsX2FkZChzdHJ1Y3QgYm9lX3BhbmVsICpib2UpCit7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gJmJvZS0+ZHNpLT5kZXY7CisKKwlib2UtPmF2ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXQo ZGV2LCAiYXZkZCIpOworCWlmIChJU19FUlIoYm9lLT5hdmRkKSkKKwkJcmV0dXJuIFBUUl9FUlIo Ym9lLT5hdmRkKTsKKworCWJvZS0+YXZlZSA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJhdmVl Iik7CisJaWYgKElTX0VSUihib2UtPmF2ZWUpKQorCQlyZXR1cm4gUFRSX0VSUihib2UtPmF2ZWUp OworCisJYm9lLT5wcDE4MDAgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAicHAxODAwIik7CisJ aWYgKElTX0VSUihib2UtPnBwMTgwMCkpCisJCXJldHVybiBQVFJfRVJSKGJvZS0+cHAxODAwKTsK KworCWJvZS0+ZW5hYmxlX2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJlbmFibGUiLCBHUElP RF9PVVRfTE9XKTsKKwlpZiAoSVNfRVJSKGJvZS0+ZW5hYmxlX2dwaW8pKSB7CisJCWRldl9lcnIo ZGV2LCAiY2Fubm90IGdldCByZXNldC1ncGlvcyAlbGRcbiIsCisJCQlQVFJfRVJSKGJvZS0+ZW5h YmxlX2dwaW8pKTsKKwkJYm9lLT5lbmFibGVfZ3BpbyA9IE5VTEw7CisJfSBlbHNlIHsKKwkJZ3Bp b2Rfc2V0X3ZhbHVlKGJvZS0+ZW5hYmxlX2dwaW8sIDApOworCX0KKworCWJvZS0+YmFja2xpZ2h0 ID0gZGV2bV9vZl9maW5kX2JhY2tsaWdodChkZXYpOworCWlmIChJU19FUlIoYm9lLT5iYWNrbGln aHQpKQorCQlyZXR1cm4gUFRSX0VSUihib2UtPmJhY2tsaWdodCk7CisKKwlkcm1fcGFuZWxfaW5p dCgmYm9lLT5iYXNlKTsKKwlib2UtPmJhc2UuZnVuY3MgPSAmYm9lX3BhbmVsX2Z1bmNzOworCWJv ZS0+YmFzZS5kZXYgPSAmYm9lLT5kc2ktPmRldjsKKworCXJldHVybiBkcm1fcGFuZWxfYWRkKCZi b2UtPmJhc2UpOworfQorCitzdGF0aWMgdm9pZCBib2VfcGFuZWxfZGVsKHN0cnVjdCBib2VfcGFu ZWwgKmJvZSkKK3sKKwlpZiAoYm9lLT5iYXNlLmRldikKKwkJZHJtX3BhbmVsX3JlbW92ZSgmYm9l LT5iYXNlKTsKK30KKworc3RhdGljIGludCBib2VfcGFuZWxfcHJvYmUoc3RydWN0IG1pcGlfZHNp X2RldmljZSAqZHNpKQoreworCXN0cnVjdCBib2VfcGFuZWwgKmJvZTsKKwlpbnQgcmV0OworCisJ ZHNpLT5sYW5lcyA9IDQ7CisJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4OworCWRz aS0+bW9kZV9mbGFncyA9IE1JUElfRFNJX01PREVfVklERU8gfCBNSVBJX0RTSV9NT0RFX1ZJREVP X1NZTkNfUFVMU0UgfAorCQkgTUlQSV9EU0lfTU9ERV9MUE07CisKKwlib2UgPSBkZXZtX2t6YWxs b2MoJmRzaS0+ZGV2LCBzaXplb2YoKmJvZSksIEdGUF9LRVJORUwpOworCWlmICghYm9lKQorCQly ZXR1cm4gLUVOT01FTTsKKworCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgYm9lKTsKKworCWJv ZS0+ZHNpID0gZHNpOworCisJcmV0ID0gYm9lX3BhbmVsX2FkZChib2UpOworCWlmIChyZXQgPCAw KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIG1pcGlfZHNpX2F0dGFjaChkc2kpOworfQorCitz dGF0aWMgaW50IGJvZV9wYW5lbF9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQor eworCXN0cnVjdCBib2VfcGFuZWwgKmJvZSA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7CisJ aW50IHJldDsKKworCXJldCA9IGJvZV9wYW5lbF9kaXNhYmxlKCZib2UtPmJhc2UpOworCWlmIChy ZXQgPCAwKQorCQlkZXZfZXJyKCZkc2ktPmRldiwgImZhaWxlZCB0byBkaXNhYmxlIHBhbmVsOiAl ZFxuIiwgcmV0KTsKKworCXJldCA9IG1pcGlfZHNpX2RldGFjaChkc2kpOworCWlmIChyZXQgPCAw KQorCQlkZXZfZXJyKCZkc2ktPmRldiwgImZhaWxlZCB0byBkZXRhY2ggZnJvbSBEU0kgaG9zdDog JWRcbiIsIHJldCk7CisKKwlib2VfcGFuZWxfZGVsKGJvZSk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgYm9lX3BhbmVsX3NodXRkb3duKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRz aSkKK3sKKwlzdHJ1Y3QgYm9lX3BhbmVsICpib2UgPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kp OworCisJYm9lX3BhbmVsX2Rpc2FibGUoJmJvZS0+YmFzZSk7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIGJvZV9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAi Ym9lLHR2MTAxd3VtLW5sNiIsIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg Ym9lX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBtaXBpX2RzaV9kcml2ZXIgYm9lX3BhbmVs X2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJwYW5lbC1ib2UtdHYxMDF3dW0t bmw2IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gYm9lX29mX21hdGNoLAorCX0sCisJLnByb2JlID0g Ym9lX3BhbmVsX3Byb2JlLAorCS5yZW1vdmUgPSBib2VfcGFuZWxfcmVtb3ZlLAorCS5zaHV0ZG93 biA9IGJvZV9wYW5lbF9zaHV0ZG93biwKK307Cittb2R1bGVfbWlwaV9kc2lfZHJpdmVyKGJvZV9w YW5lbF9kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJKaXRhbyBTaGkgPGppdGFvLnNoaUBtZWRp YXRlay5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkJPRSB0djEwMXd1bS1ubDYgMTIwMHgx OTIwIHZpZGVvIG1vZGUgcGFuZWwgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7 Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==