From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [2/2] drm/panel: support for BOE tv101wum-n16 wuxga dsi video mode panel Date: Sun, 9 Jun 2019 12:53:38 +0200 Message-ID: <20190609105338.GB28935@ravnborg.org> References: <20190608070230.55381-1-jitao.shi@mediatek.com> <20190608070230.55381-2-jitao.shi@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190608070230.55381-2-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: Jitao Shi Cc: Mark Rutland , devicetree@vger.kernel.org, David Airlie , stonea168@163.com, dri-devel@lists.freedesktop.org, Ajay Kumar , Vincent Palatin , cawa.cheng@mediatek.com, yingjoe.chen@mediatek.com, Thierry Reding , Sean Paul , linux-pwm@vger.kernel.org, Pawel Moll , Ian Campbell , Rob Herring , linux-mediatek@lists.infradead.org, Russell King , Matthias Brugger , eddie.huang@mediatek.com, linux-arm-kernel@lists.infradead.org, Rahul Sharma , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Sascha Hauer , Andy Yan List-Id: devicetree@vger.kernel.org SGkgSml0YW8uCgpUaGFua3MgZm9yIHRoaXMgbmV3IG5pY2UgZHJpdmVyIC0gYSBmZXcgY29tbWVu dHMgZm9sbG93cy4KCglTYW0KCk9uIFNhdCwgSnVuIDA4LCAyMDE5IGF0IDAzOjAyOjMwUE0gKzA4 MDAsIEppdGFvIFNoaSB3cm90ZToKPiBBZGQgZHJpdmVyIGZvciBCT0UgdHYxMDF3dW0tbmw2IHBh bmVsIGlzIGEgMTAuMSIgMTIwMHgxOTIwIHBhbmVsLgoKTGlrZSBpbiB0aGUgYmluZGluZyB0aGVy ZSBpcyBzb21lIGNvbmZ1c2lvbiBiZXR3ZWVuIG5sNiB2ZXJzdXMgbjE2LgpIZXJlIHRoZSBzdWJq ZWN0IHNheXMgb25lIHRoaW5nLCBhbmQgdGhlIGNoYW5nZWxvZ24gYW5vdGhlciB0aGluZy4KCj4g Cj4gU2lnbmVkLW9mZi1ieTogSml0YW8gU2hpIDxqaXRhby5zaGlAbWVkaWF0ZWsuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgMTAg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEg Kwo+ICAuLi4vZ3B1L2RybS9wYW5lbC9wYW5lbC1ib2UtdHYxMDF3dW0tbmw2LmMgICAgfCA3MDAg KysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzExIGluc2VydGlvbnMoKykK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1ib2UtdHYx MDF3dW0tbmw2LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IGluZGV4IGUzNmRiYjRkZjg2Ny4u NWRhZDAyOGUzNWYwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiBAQCAtMjcyLDQgKzI3Miwx NCBAQCBjb25maWcgRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EKPiAgCWhlbHAKPiAgCSAg U2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5 NyBXUVhHQSBEdWFsIERTSQo+ICAJICBWaWRlbyBNb2RlIHBhbmVsCj4gKwo+ICtjb25maWcgRFJN X1BBTkVMX0JPRV9UVjEwMVdVTV9OTDYKPiArCXRyaXN0YXRlICJCT0UgVFYxMDFXVU0gMTIwMHgx OTIwIHBhbmVsIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kK PiArCWRlcGVuZHMgb24gQkFDS0xJR0hUX0NMQVNTX0RFVklDRQo+ICsJaGVscAo+ICsJICBTYXkg WSBoZXJlIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgZm9yIEJPRSBUVjEwMVdVTSBXVVhHQSBQQU5F TAo+ICsJICBEU0kgVmlkZW8gTW9kZSBwYW5lbAo+ICsKTmV3IHBhbmVsIENPTkZJRyBzeW1ib2xz IGFyZSBhZGRlZCBpbiBhbHBoYWJldGljYWxseSBvcmRlci4KCj4gIGVuZG1lbnUKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL01ha2VmaWxlCj4gaW5kZXggNzhlM2RjMzc2YmRkLi5mYzU5NDQyMzFhYTggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL01ha2VmaWxlCj4gQEAgLTI4LDMgKzI4LDQgQEAgb2JqLSQoQ09ORklHX0RSTV9Q QU5FTF9TSVRST05JWF9TVDc3MDEpICs9IHBhbmVsLXNpdHJvbml4LXN0NzcwMS5vCj4gIG9iai0k KENPTkZJR19EUk1fUEFORUxfU0lUUk9OSVhfU1Q3Nzg5VikgKz0gcGFuZWwtc2l0cm9uaXgtc3Q3 Nzg5di5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFBPX1RQRzExMCkgKz0gcGFuZWwtdHBv LXRwZzExMC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQSkg Kz0gcGFuZWwtdHJ1bHktbnQzNTU5Ny5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfQk9FX1RW MTAxV1VNX05MNikgKz0gcGFuZWwtYm9lLXR2MTAxd3VtLW5sNi5vCgpEcml2ZXJzIGFyZSBhZGRl ZCBpbiBhbHBoYWJldGljYWxseSBvcmRlciBhZnRlciB0aGVpciBDT05GSUcgc3ltYm9sLgoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWJvZS10djEwMXd1bS1ubDYu YyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1ib2UtdHYxMDF3dW0tbmw2LmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTk1OTA2NjRjMzM3Cj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1ib2UtdHYxMDF3 dW0tbmw2LmMKPiBAQCAtMCwwICsxLDcwMCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTggTWVkaWFUZWsgSW5jLgo+ ICsgKiBBdXRob3I6IEppdGFvIFNoaSA8aml0YW8uc2hpQG1lZGlhdGVrLmNvbT4KPiArICovCj4g Kwo+ICsjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlv L2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxp bnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArCj4g KyNpbmNsdWRlIDxkcm0vZHJtUC5oPgpkcm1QLmggaXMgZGVwcmVjYXRlZCAtIGRvIG5vdCB1c2Ug aW4gbmV3IGRyaXZlcnMuCgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKwo+ ICsjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+Cj4gKwo+ICtzdHJ1Y3QgYm9lX3BhbmVs IHsKPiArCXN0cnVjdCBkcm1fcGFuZWwgYmFzZTsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2Ug KmRzaTsKPiArCj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0Owo+ICsJc3Ry dWN0IHJlZ3VsYXRvciAqcHAxODAwOwo+ICsJc3RydWN0IHJlZ3VsYXRvciAqYXZlZTsKPiArCXN0 cnVjdCByZWd1bGF0b3IgKmF2ZGQ7Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICplbmFibGVfZ3BpbzsK PiArCj4gKwlib29sIHByZXBhcmVkOwo+ICsJYm9vbCBlbmFibGVkOwo+ICsKPiArCWNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ICt9Owo+ICsKPiArZW51bSBkc2lfY21kX3R5 cGUgewo+ICsJSU5JVF9HRU5FTklDX0NNRCwKPiArCUlOSVRfRENTX0NNRCwKPiArCURFTEFZX0NN RCwKPiArfTsKPiArCj4gK3N0cnVjdCBwYW5lbF9pbml0X2NtZCB7Cj4gKwllbnVtIGRzaV9jbWRf dHlwZSB0eXBlOwo+ICsJc2l6ZV90IGxlbjsKPiArCWNvbnN0IGNoYXIgKmRhdGE7Cj4gK307Cj4g Kwo+ICsjZGVmaW5lIF9JTklUX0NNRCguLi4pIHsgXAo+ICsJLnR5cGUgPSBJTklUX0dFTkVOSUNf Q01ELFwKPiArCS5sZW4gPSBzaXplb2YoKGNoYXJbXSl7X19WQV9BUkdTX199KSwgXAo+ICsJLmRh dGEgPSAoY2hhcltdKXtfX1ZBX0FSR1NfX30gfQo+ICsKPiArI2RlZmluZSBfSU5JVF9EQ1NfQ01E KC4uLikgeyBcCj4gKwkudHlwZSA9IElOSVRfRENTX0NNRCwgXAo+ICsJLmxlbiA9IHNpemVvZigo Y2hhcltdKXtfX1ZBX0FSR1NfX30pLCBcCj4gKwkuZGF0YSA9IChjaGFyW10pe19fVkFfQVJHU19f fSB9Cj4gKwo+ICsjZGVmaW5lIF9JTklUX0RFTEFZX0NNRCguLi4pIHsgXAo+ICsJLnR5cGUgPSBE RUxBWV9DTUQsXAo+ICsJLmxlbiA9IHNpemVvZigoY2hhcltdKXtfX1ZBX0FSR1NfX30pLCBcCj4g KwkuZGF0YSA9IChjaGFyW10pe19fVkFfQVJHU19ffSB9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHBhbmVsX2luaXRfY21kIGJvZV9pbml0X2NtZFtdID0gewpJbiB0aGUgZm9sbG93aW5nIHRo ZXJlIGFyZSBzb21lIGVtcHR5IGxpbmVzLgpJZiB0aGV5IGhhdmUgYW55IHNlbWFudGljIHB1cnBv c2UgcGxlYXNlIGFkZCBhIGNvbW1lbnQuCklmIG5vdCwgdGhlbiBkcm9wIHRoZSBlbXB0eSBsaW5l cy4KPiArCV9JTklUX0RFTEFZX0NNRCgyNCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDUp LAo+ICsJX0lOSVRfRENTX0NNRCgweEIxLCAweEU1KSwKPiArCV9JTklUX0RDU19DTUQoMHhCMywg MHg1MiksCj4gKwo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDAwKSwKPiArCV9JTklUX0RDU19D TUQoMHhCMywgMHg4OCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDQpLAo+ICsJX0lOSVRf RENTX0NNRCgweEI4LCAweDAwKSwKPiArCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDApLAo+ ICsJX0lOSVRfRENTX0NNRCgweEI2LCAweDAzKSwKPiArCV9JTklUX0RDU19DTUQoMHhCQSwgMHg4 QiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkYsIDB4MUEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMw LCAweDBGKSwKPiArCV9JTklUX0RDU19DTUQoMHhDMiwgMHgwQyksCj4gKwlfSU5JVF9EQ1NfQ01E KDB4QzMsIDB4MDIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM0LCAweDBDKSwKPiArCV9JTklUX0RD U19DTUQoMHhDNSwgMHgwMiksCj4gKwo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDAxKSwKPiAr CV9JTklUX0RDU19DTUQoMHhFMCwgMHgyNiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4RTEsIDB4MjYp LAo+ICsJX0lOSVRfRENTX0NNRCgweERDLCAweDAwKSwKPiArCV9JTklUX0RDU19DTUQoMHhERCwg MHgwMCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0MsIDB4MjYpLAo+ICsJX0lOSVRfRENTX0NNRCgw eENELCAweDI2KSwKPiArCV9JTklUX0RDU19DTUQoMHhDOCwgMHgwMCksCj4gKwlfSU5JVF9EQ1Nf Q01EKDB4QzksIDB4MDApLAo+ICsJX0lOSVRfRENTX0NNRCgweEQyLCAweDAzKSwKPiArCV9JTklU X0RDU19DTUQoMHhEMywgMHgwMyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4RTYsIDB4MDQpLAo+ICsJ X0lOSVRfRENTX0NNRCgweEU3LCAweDA0KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNCwgMHgwOSks Cj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzUsIDB4MDkpLAo+ICsJX0lOSVRfRENTX0NNRCgweEQ4LCAw eDBBKSwKPiArCV9JTklUX0RDU19DTUQoMHhEOSwgMHgwQSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4 QzIsIDB4MEIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMzLCAweDBCKSwKPiArCV9JTklUX0RDU19D TUQoMHhENiwgMHgwQyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4RDcsIDB4MEMpLAo+ICsJX0lOSVRf RENTX0NNRCgweEMwLCAweDA1KSwKPiArCV9JTklUX0RDU19DTUQoMHhDMSwgMHgwNSksCj4gKwlf SU5JVF9EQ1NfQ01EKDB4RDQsIDB4MDYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEQ1LCAweDA2KSwK PiArCV9JTklUX0RDU19DTUQoMHhDQSwgMHgwNyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0IsIDB4 MDcpLAo+ICsJX0lOSVRfRENTX0NNRCgweERFLCAweDA4KSwKPiArCV9JTklUX0RDU19DTUQoMHhE RiwgMHgwOCksCj4gKwo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDAyKSwKPiArCV9JTklUX0RD U19DTUQoMHhDMCwgMHgwMCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzEsIDB4MEQpLAo+ICsJX0lO SVRfRENTX0NNRCgweEMyLCAweDE3KSwKPiArCV9JTklUX0RDU19DTUQoMHhDMywgMHgyNiksCj4g KwlfSU5JVF9EQ1NfQ01EKDB4QzQsIDB4MzEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM1LCAweDFD KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNiwgMHgyQyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Qzcs IDB4MzMpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM4LCAweDMxKSwKPiArCV9JTklUX0RDU19DTUQo MHhDOSwgMHgzNyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0EsIDB4MzcpLAo+ICsJX0lOSVRfRENT X0NNRCgweENCLCAweDM3KSwKPiArCV9JTklUX0RDU19DTUQoMHhDQywgMHgzOSksCj4gKwlfSU5J VF9EQ1NfQ01EKDB4Q0QsIDB4MkUpLAo+ICsJX0lOSVRfRENTX0NNRCgweENFLCAweDJGKSwKPiAr CV9JTklUX0RDU19DTUQoMHhDRiwgMHgyRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4RDAsIDB4MDcp LAo+ICsJX0lOSVRfRENTX0NNRCgweEQyLCAweDAwKSwKPiArCV9JTklUX0RDU19DTUQoMHhEMywg MHgwRCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4RDQsIDB4MTcpLAo+ICsJX0lOSVRfRENTX0NNRCgw eEQ1LCAweDI2KSwKPiArCV9JTklUX0RDU19DTUQoMHhENiwgMHgzMSksCj4gKwlfSU5JVF9EQ1Nf Q01EKDB4RDcsIDB4M0YpLAo+ICsJX0lOSVRfRENTX0NNRCgweEQ4LCAweDNGKSwKPiArCV9JTklU X0RDU19DTUQoMHhEOSwgMHgzRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4REEsIDB4M0YpLAo+ICsJ X0lOSVRfRENTX0NNRCgweERCLCAweDM3KSwKPiArCV9JTklUX0RDU19DTUQoMHhEQywgMHgzNyks Cj4gKwlfSU5JVF9EQ1NfQ01EKDB4REQsIDB4MzcpLAo+ICsJX0lOSVRfRENTX0NNRCgweERFLCAw eDM5KSwKPiArCV9JTklUX0RDU19DTUQoMHhERiwgMHgyRSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4 RTAsIDB4MkYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEUxLCAweDJGKSwKPiArCV9JTklUX0RDU19D TUQoMHhFMiwgMHgwNyksCj4gKwo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDAzKSwKPiArCV9J TklUX0RDU19DTUQoMHhDOCwgMHgwQiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzksIDB4MDcpLAo+ ICsJX0lOSVRfRENTX0NNRCgweEMzLCAweDAwKSwKPiArCV9JTklUX0RDU19DTUQoMHhFNywgMHgw MCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzUsIDB4MkEpLAo+ICsJX0lOSVRfRENTX0NNRCgweERF LCAweDJBKSwKPiArCV9JTklUX0RDU19DTUQoMHhDQSwgMHg0MyksCj4gKwlfSU5JVF9EQ1NfQ01E KDB4QzksIDB4MDcpLAo+ICsJX0lOSVRfRENTX0NNRCgweEU0LCAweEMwKSwKPiArCV9JTklUX0RD U19DTUQoMHhFNSwgMHgwRCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0IsIDB4MDApLAo+ICsKPiAr CV9JTklUX0RDU19DTUQoMHhCMCwgMHgwNiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjgsIDB4QTUp LAo+ICsJX0lOSVRfRENTX0NNRCgweEMwLCAweEE1KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNywg MHgwRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4RDUsIDB4MzIpLAo+ICsJX0lOSVRfRENTX0NNRCgw eEI4LCAweDAwKSwKPiArCV9JTklUX0RDU19DTUQoMHhDMCwgMHgwMCksCj4gKwlfSU5JVF9EQ1Nf Q01EKDB4QkMsIDB4MDApLAo+ICsKPiArCV9JTklUX0RDU19DTUQoMHhCMCwgMHgwNyksCj4gKwlf SU5JVF9EQ1NfQ01EKDB4QjEsIDB4MDApLAo+ICsJX0lOSVRfRENTX0NNRCgweEIyLCAweDAyKSwK PiArCV9JTklUX0RDU19DTUQoMHhCMywgMHgwRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjQsIDB4 MjUpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI1LCAweDM5KSwKPiArCV9JTklUX0RDU19DTUQoMHhC NiwgMHg0RSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjcsIDB4NzIpLAo+ICsJX0lOSVRfRENTX0NN RCgweEI4LCAweDk3KSwKPiArCV9JTklUX0RDU19DTUQoMHhCOSwgMHhEQyksCj4gKwlfSU5JVF9E Q1NfQ01EKDB4QkEsIDB4MjIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJCLCAweEE0KSwKPiArCV9J TklUX0RDU19DTUQoMHhCQywgMHgyQiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkQsIDB4MkYpLAo+ ICsJX0lOSVRfRENTX0NNRCgweEJFLCAweEE5KSwKPiArCV9JTklUX0RDU19DTUQoMHhCRiwgMHgy NSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzAsIDB4NjEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMx LCAweDk3KSwKPiArCV9JTklUX0RDU19DTUQoMHhDMiwgMHhCMiksCj4gKwlfSU5JVF9EQ1NfQ01E KDB4QzMsIDB4Q0QpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM0LCAweEQ5KSwKPiArCV9JTklUX0RD U19DTUQoMHhDNSwgMHhFNyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzYsIDB4RjQpLAo+ICsJX0lO SVRfRENTX0NNRCgweEM3LCAweEZBKSwKPiArCV9JTklUX0RDU19DTUQoMHhDOCwgMHhGQyksCj4g KwlfSU5JVF9EQ1NfQ01EKDB4QzksIDB4MDApLAo+ICsJX0lOSVRfRENTX0NNRCgweENBLCAweDAw KSwKPiArCV9JTklUX0RDU19DTUQoMHhDQiwgMHgxNiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0Ms IDB4QUYpLAo+ICsJX0lOSVRfRENTX0NNRCgweENELCAweEZGKSwKPiArCV9JTklUX0RDU19DTUQo MHhDRSwgMHhGRiksCj4gKwo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDA4KSwKPiArCV9JTklU X0RDU19DTUQoMHhCMSwgMHgwNCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjIsIDB4MDUpLAo+ICsJ X0lOSVRfRENTX0NNRCgweEIzLCAweDExKSwKPiArCV9JTklUX0RDU19DTUQoMHhCNCwgMHgyNCks Cj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjUsIDB4MzkpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI2LCAw eDRGKSwKPiArCV9JTklUX0RDU19DTUQoMHhCNywgMHg3MiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4 QjgsIDB4OTgpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI5LCAweERDKSwKPiArCV9JTklUX0RDU19D TUQoMHhCQSwgMHgyMyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkIsIDB4QTYpLAo+ICsJX0lOSVRf RENTX0NNRCgweEJDLCAweDJDKSwKPiArCV9JTklUX0RDU19DTUQoMHhCRCwgMHgzMCksCj4gKwlf SU5JVF9EQ1NfQ01EKDB4QkUsIDB4QUEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJGLCAweDI2KSwK PiArCV9JTklUX0RDU19DTUQoMHhDMCwgMHg2MiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzEsIDB4 OUIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMyLCAweEI1KSwKPiArCV9JTklUX0RDU19DTUQoMHhD MywgMHhDRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzQsIDB4REIpLAo+ICsJX0lOSVRfRENTX0NN RCgweEM1LCAweEU4KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNiwgMHhGNSksCj4gKwlfSU5JVF9E Q1NfQ01EKDB4QzcsIDB4RkEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM4LCAweEZDKSwKPiArCV9J TklUX0RDU19DTUQoMHhDOSwgMHgwMCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0EsIDB4MDApLAo+ ICsJX0lOSVRfRENTX0NNRCgweENCLCAweDE2KSwKPiArCV9JTklUX0RDU19DTUQoMHhDQywgMHhB RiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0QsIDB4RkYpLAo+ICsJX0lOSVRfRENTX0NNRCgweENF LCAweEZGKSwKPiArCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MDkpLAo+ICsJX0lOSVRfRENT X0NNRCgweEIxLCAweDA0KSwKPiArCV9JTklUX0RDU19DTUQoMHhCMiwgMHgwMiksCj4gKwlfSU5J VF9EQ1NfQ01EKDB4QjMsIDB4MTYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI0LCAweDI0KSwKPiAr CV9JTklUX0RDU19DTUQoMHhCNSwgMHgzQiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjYsIDB4NEYp LAo+ICsJX0lOSVRfRENTX0NNRCgweEI3LCAweDczKSwKPiArCV9JTklUX0RDU19DTUQoMHhCOCwg MHg5OSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjksIDB4RTApLAo+ICsJX0lOSVRfRENTX0NNRCgw eEJBLCAweDI2KSwKPiArCV9JTklUX0RDU19DTUQoMHhCQiwgMHhBRCksCj4gKwlfSU5JVF9EQ1Nf Q01EKDB4QkMsIDB4MzYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJELCAweDNBKSwKPiArCV9JTklU X0RDU19DTUQoMHhCRSwgMHhBRSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkYsIDB4MkEpLAo+ICsJ X0lOSVRfRENTX0NNRCgweEMwLCAweDY2KSwKPiArCV9JTklUX0RDU19DTUQoMHhDMSwgMHg5RSks Cj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzIsIDB4QjgpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMzLCAw eEQxKSwKPiArCV9JTklUX0RDU19DTUQoMHhDNCwgMHhERCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4 QzUsIDB4RTkpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM2LCAweEY2KSwKPiArCV9JTklUX0RDU19D TUQoMHhDNywgMHhGQSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzgsIDB4RkMpLAo+ICsJX0lOSVRf RENTX0NNRCgweEM5LCAweDAwKSwKPiArCV9JTklUX0RDU19DTUQoMHhDQSwgMHgwMCksCj4gKwlf SU5JVF9EQ1NfQ01EKDB4Q0IsIDB4MTYpLAo+ICsJX0lOSVRfRENTX0NNRCgweENDLCAweEFGKSwK PiArCV9JTklUX0RDU19DTUQoMHhDRCwgMHhGRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0UsIDB4 RkYpLAo+ICsKPiArCV9JTklUX0RDU19DTUQoMHhCMCwgMHgwQSksCj4gKwlfSU5JVF9EQ1NfQ01E KDB4QjEsIDB4MDApLAo+ICsJX0lOSVRfRENTX0NNRCgweEIyLCAweDAyKSwKPiArCV9JTklUX0RD U19DTUQoMHhCMywgMHgwRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjQsIDB4MjUpLAo+ICsJX0lO SVRfRENTX0NNRCgweEI1LCAweDM5KSwKPiArCV9JTklUX0RDU19DTUQoMHhCNiwgMHg0RSksCj4g KwlfSU5JVF9EQ1NfQ01EKDB4QjcsIDB4NzIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI4LCAweDk3 KSwKPiArCV9JTklUX0RDU19DTUQoMHhCOSwgMHhEQyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkEs IDB4MjIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJCLCAweEE0KSwKPiArCV9JTklUX0RDU19DTUQo MHhCQywgMHgyQiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkQsIDB4MkYpLAo+ICsJX0lOSVRfRENT X0NNRCgweEJFLCAweEE5KSwKPiArCV9JTklUX0RDU19DTUQoMHhCRiwgMHgyNSksCj4gKwlfSU5J VF9EQ1NfQ01EKDB4QzAsIDB4NjEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMxLCAweDk3KSwKPiAr CV9JTklUX0RDU19DTUQoMHhDMiwgMHhCMiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzMsIDB4Q0Qp LAo+ICsJX0lOSVRfRENTX0NNRCgweEM0LCAweEQ5KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNSwg MHhFNyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzYsIDB4RjQpLAo+ICsJX0lOSVRfRENTX0NNRCgw eEM3LCAweEZBKSwKPiArCV9JTklUX0RDU19DTUQoMHhDOCwgMHhGQyksCj4gKwlfSU5JVF9EQ1Nf Q01EKDB4QzksIDB4MDApLAo+ICsJX0lOSVRfRENTX0NNRCgweENBLCAweDAwKSwKPiArCV9JTklU X0RDU19DTUQoMHhDQiwgMHgxNiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0MsIDB4QUYpLAo+ICsJ X0lOSVRfRENTX0NNRCgweENELCAweEZGKSwKPiArCV9JTklUX0RDU19DTUQoMHhDRSwgMHhGRiks Cj4gKwo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDBCKSwKPiArCV9JTklUX0RDU19DTUQoMHhC MSwgMHgwNCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjIsIDB4MDUpLAo+ICsJX0lOSVRfRENTX0NN RCgweEIzLCAweDExKSwKPiArCV9JTklUX0RDU19DTUQoMHhCNCwgMHgyNCksCj4gKwlfSU5JVF9E Q1NfQ01EKDB4QjUsIDB4MzkpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI2LCAweDRGKSwKPiArCV9J TklUX0RDU19DTUQoMHhCNywgMHg3MiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjgsIDB4OTgpLAo+ ICsJX0lOSVRfRENTX0NNRCgweEI5LCAweERDKSwKPiArCV9JTklUX0RDU19DTUQoMHhCQSwgMHgy MyksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkIsIDB4QTYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJD LCAweDJDKSwKPiArCV9JTklUX0RDU19DTUQoMHhCRCwgMHgzMCksCj4gKwlfSU5JVF9EQ1NfQ01E KDB4QkUsIDB4QUEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJGLCAweDI2KSwKPiArCV9JTklUX0RD U19DTUQoMHhDMCwgMHg2MiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzEsIDB4OUIpLAo+ICsJX0lO SVRfRENTX0NNRCgweEMyLCAweEI1KSwKPiArCV9JTklUX0RDU19DTUQoMHhDMywgMHhDRiksCj4g KwlfSU5JVF9EQ1NfQ01EKDB4QzQsIDB4REIpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM1LCAweEU4 KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNiwgMHhGNSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Qzcs IDB4RkEpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM4LCAweEZDKSwKPiArCV9JTklUX0RDU19DTUQo MHhDOSwgMHgwMCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0EsIDB4MDApLAo+ICsJX0lOSVRfRENT X0NNRCgweENCLCAweDE2KSwKPiArCV9JTklUX0RDU19DTUQoMHhDQywgMHhBRiksCj4gKwlfSU5J VF9EQ1NfQ01EKDB4Q0QsIDB4RkYpLAo+ICsJX0lOSVRfRENTX0NNRCgweENFLCAweEZGKSwKPiAr Cj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjAsIDB4MEMpLAo+ICsJX0lOSVRfRENTX0NNRCgweEIxLCAw eDA0KSwKPiArCV9JTklUX0RDU19DTUQoMHhCMiwgMHgwMiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4 QjMsIDB4MTYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEI0LCAweDI0KSwKPiArCV9JTklUX0RDU19D TUQoMHhCNSwgMHgzQiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjYsIDB4NEYpLAo+ICsJX0lOSVRf RENTX0NNRCgweEI3LCAweDczKSwKPiArCV9JTklUX0RDU19DTUQoMHhCOCwgMHg5OSksCj4gKwlf SU5JVF9EQ1NfQ01EKDB4QjksIDB4RTApLAo+ICsJX0lOSVRfRENTX0NNRCgweEJBLCAweDI2KSwK PiArCV9JTklUX0RDU19DTUQoMHhCQiwgMHhBRCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkMsIDB4 MzYpLAo+ICsJX0lOSVRfRENTX0NNRCgweEJELCAweDNBKSwKPiArCV9JTklUX0RDU19DTUQoMHhC RSwgMHhBRSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QkYsIDB4MkEpLAo+ICsJX0lOSVRfRENTX0NN RCgweEMwLCAweDY2KSwKPiArCV9JTklUX0RDU19DTUQoMHhDMSwgMHg5RSksCj4gKwlfSU5JVF9E Q1NfQ01EKDB4QzIsIDB4QjgpLAo+ICsJX0lOSVRfRENTX0NNRCgweEMzLCAweEQxKSwKPiArCV9J TklUX0RDU19DTUQoMHhDNCwgMHhERCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzUsIDB4RTkpLAo+ ICsJX0lOSVRfRENTX0NNRCgweEM2LCAweEY2KSwKPiArCV9JTklUX0RDU19DTUQoMHhDNywgMHhG QSksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QzgsIDB4RkMpLAo+ICsJX0lOSVRfRENTX0NNRCgweEM5 LCAweDAwKSwKPiArCV9JTklUX0RDU19DTUQoMHhDQSwgMHgwMCksCj4gKwlfSU5JVF9EQ1NfQ01E KDB4Q0IsIDB4MTYpLAo+ICsJX0lOSVRfRENTX0NNRCgweENDLCAweEFGKSwKPiArCV9JTklUX0RD U19DTUQoMHhDRCwgMHhGRiksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4Q0UsIDB4RkYpLAo+ICsKPiAr CV9JTklUX0RDU19DTUQoMHhCMCwgMHgwMCksCj4gKwlfSU5JVF9EQ1NfQ01EKDB4QjMsIDB4MDgp LAo+ICsJX0lOSVRfRENTX0NNRCgweEIwLCAweDA0KSwKPiArCV9JTklUX0RDU19DTUQoMHhCOCwg MHg2OCksCj4gKwlfSU5JVF9ERUxBWV9DTUQoMTUwKSwKPiArCXt9LAo+ICt9Owo+ICsKPiArc3Rh dGljIGlubGluZSBzdHJ1Y3QgYm9lX3BhbmVsICp0b19ib2VfcGFuZWwoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCj4gK3sKPiArCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBib2Vf cGFuZWwsIGJhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGJvZV9wYW5lbF9pbml0KHN0cnVj dCBib2VfcGFuZWwgKmJvZSkKPiArewo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0g Ym9lLT5kc2k7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCA9ICZib2UtPmJhc2U7Cj4gKwlp bnQgZXJyLCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGJvZV9pbml0X2NtZFtpXS5sZW4gIT0gMDsg aSsrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IHBhbmVsX2luaXRfY21kICpjbWQgPSAmYm9lX2luaXRf Y21kW2ldOwo+ICsKPiArCQlzd2l0Y2ggKGNtZC0+dHlwZSkgewo+ICsJCWNhc2UgSU5JVF9EQ1Nf Q01EOgo+ICsJCQllcnIgPSBtaXBpX2RzaV9kY3Nfd3JpdGUoZHNpLCBjbWQtPmRhdGFbMF0sCj4g KwkJCQkJCSAoY21kLT5sZW4gPD0gMSkgPyBOVUxMIDoKPiArCQkJCQkJICZjbWQtPmRhdGFbMV0s IGNtZC0+bGVuIC0gMSk7Cj4gKwkJCWJyZWFrOwo+ICsKPiArCQljYXNlIERFTEFZX0NNRDoKPiAr CQkJbXNsZWVwKGNtZC0+ZGF0YVswXSk7Cj4gKwkJCWVyciA9IDA7Cj4gKwkJCWJyZWFrOwo+ICsK PiArCQljYXNlIElOSVRfR0VORU5JQ19DTUQ6Cj4gKwkJZGVmYXVsdDoKPiArCQkJZXJyID0gbWlw aV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIGNtZC0+ZGF0YSwgY21kLT5sZW4pOwo+ICsJCQlicmVh azsKPiArCQl9Cj4gKwo+ICsJCWlmIChlcnIgPCAwKSB7Cj4gKwkJCWRldl9lcnIocGFuZWwtPmRl diwKPiArCQkJCSJmYWlsZWQgdG8gd3JpdGUgY29tbWFuZCAldVxuIiwgaSk7Cj4gKwkJCXJldHVy biBlcnI7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGJvZV9wYW5lbF9vZmYoc3RydWN0IGJvZV9wYW5lbCAqYm9lKQo+ICt7Cj4gKwlzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlICpkc2kgPSBib2UtPmRzaTsKPiArCWludCByZXQ7Cj4gKwo+ICsJZHNp LT5tb2RlX2ZsYWdzICY9IH5NSVBJX0RTSV9NT0RFX0xQTTsKPiArCj4gKwlyZXQgPSBtaXBpX2Rz aV9kY3NfZW50ZXJfc2xlZXBfbW9kZShkc2kpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJu IHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBib2VfcGFuZWxf ZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGJvZV9wYW5l bCAqYm9lID0gdG9fYm9lX3BhbmVsKHBhbmVsKTsKPiArCj4gKwlpZiAoIWJvZS0+ZW5hYmxlZCkK PiArCQlyZXR1cm4gMDsKPiArCj4gKwliYWNrbGlnaHRfZGlzYWJsZShib2UtPmJhY2tsaWdodCk7 Cj4gKwo+ICsJYm9lLT5lbmFibGVkID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgYm9lX3BhbmVsX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKPiArewo+ICsJc3RydWN0IGJvZV9wYW5lbCAqYm9lID0gdG9fYm9lX3BhbmVsKHBhbmVsKTsK PiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFib2UtPnByZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCXJldCA9IGJvZV9wYW5lbF9vZmYoYm9lKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJ ZGV2X2VycihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBwYW5lbCBvZmY6ICVkXG4iLCByZXQp Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJbXNsZWVwKDE1MCk7Cj4gKwlpZiAoYm9l LT5lbmFibGVfZ3BpbykKPiArCQlncGlvZF9zZXRfdmFsdWUoYm9lLT5lbmFibGVfZ3BpbywgMCk7 Cj4gKwl1c2xlZXBfcmFuZ2UoNTAwLCAxMDAwKTsKPiArCXJlZ3VsYXRvcl9kaXNhYmxlKGJvZS0+ YXZlZSk7Cj4gKwlyZWd1bGF0b3JfZGlzYWJsZShib2UtPmF2ZGQpOwo+ICsJdXNsZWVwX3Jhbmdl KDUwMDAsIDcwMDApOwo+ICsJcmVndWxhdG9yX2Rpc2FibGUoYm9lLT5wcDE4MDApOwo+ICsKPiAr CWJvZS0+cHJlcGFyZWQgPSBmYWxzZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBib2VfcGFuZWxfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ ICsJc3RydWN0IGJvZV9wYW5lbCAqYm9lID0gdG9fYm9lX3BhbmVsKHBhbmVsKTsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJaWYgKGJvZS0+cHJlcGFyZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYg KGJvZS0+ZW5hYmxlX2dwaW8pIHsKPiArCQlncGlvZF9zZXRfdmFsdWUoYm9lLT5lbmFibGVfZ3Bp bywgMCk7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDE1MDApOwo+ICsJfQo+ICsKPiArCXJldCA9 IHJlZ3VsYXRvcl9lbmFibGUoYm9lLT5wcDE4MDApOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0 dXJuIHJldDsKPiArCj4gKwl1c2xlZXBfcmFuZ2UoMzAwMCwgNTAwMCk7Cj4gKwo+ICsJcmV0ID0g cmVndWxhdG9yX2VuYWJsZShib2UtPmF2ZGQpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBw b3dlcm9mZjF2ODsKPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoYm9lLT5hdmVlKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCWdvdG8gcG93ZXJvZmZhdmRkOwo+ICsKPiArCW1zbGVlcCgxMDApOwo+ ICsKPiArCWlmIChib2UtPmVuYWJsZV9ncGlvKSB7Cj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGJvZS0+ ZW5hYmxlX2dwaW8sIDEpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMDAwMCwgMTIwMDApOwo+ICsJfQo+ ICsKPiArCXJldCA9IGJvZV9wYW5lbF9pbml0KGJvZSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJ CWRldl9lcnIocGFuZWwtPmRldiwgImZhaWxlZCB0byBpbml0IHBhbmVsOiAlZFxuIiwgcmV0KTsK PiArCQlnb3RvIHBvd2Vyb2ZmOwo+ICsJfQo+ICsKPiArCWJvZS0+cHJlcGFyZWQgPSB0cnVlOwo+ ICsKPiArCXJldHVybiAwOwo+ICsKPiArcG93ZXJvZmY6Cj4gKwlyZWd1bGF0b3JfZGlzYWJsZShi b2UtPmF2ZWUpOwo+ICtwb3dlcm9mZmF2ZGQ6Cj4gKwlyZWd1bGF0b3JfZGlzYWJsZShib2UtPmF2 ZGQpOwo+ICtwb3dlcm9mZjF2ODoKPiArCXVzbGVlcF9yYW5nZSg1MDAwLCA3MDAwKTsKPiArCXJl Z3VsYXRvcl9kaXNhYmxlKGJvZS0+cHAxODAwKTsKPiArCWlmIChib2UtPmVuYWJsZV9ncGlvKQo+ ICsJCWdwaW9kX3NldF92YWx1ZShib2UtPmVuYWJsZV9ncGlvLCAwKTsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYm9lX3BhbmVsX2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGJvZV9wYW5lbCAqYm9lID0gdG9fYm9lX3BhbmVsKHBh bmVsKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKGJvZS0+ZW5hYmxlZCkKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlyZXQgPSBiYWNrbGlnaHRfZW5hYmxlKGJvZS0+YmFja2xpZ2h0KTsKPiArCWlm IChyZXQpIHsKPiArCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kcm0tPmRldiwKPiArCQkJICAgICAg IkZhaWxlZCB0byBlbmFibGUgYmFja2xpZ2h0ICVkXG4iLCByZXQpOwoKVGhlcmUgaXMgaW5jb25z aXN0ZW50IHVzZSBvZiBsb2dnaW5nLgpPbmUgcGxhY2UgdXNlcyBkZXZfZXJyKCksIGFuZCBoZXJl IERSTV9ERVZfRVJST1IoKS4KSSBsZWFybmVkIHRoYXQgbmVpdGhlciBhcmUgb3B0aW1hbCwgYnV0 IGZvciBub3cgc3RpY2sgd2l0aCBvbmUgd2F5IHRvIGRvCml0LgoKPiArCQlyZXR1cm4gcmV0Owo+ ICsJfQo+ICsKPiArCWJvZS0+ZW5hYmxlZCA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUg PSB7Cj4gKwkuY2xvY2sgPSAxNTk0MjUsCj4gKwkuaGRpc3BsYXkgPSAxMjAwLAo+ICsJLmhzeW5j X3N0YXJ0ID0gMTIwMCArIDEwMCwKPiArCS5oc3luY19lbmQgPSAxMjAwICsgMTAwICsgNDAsCj4g KwkuaHRvdGFsID0gMTIwMCArIDEwMCArIDQwICsgMjQsCj4gKwkudmRpc3BsYXkgPSAxOTIwLAo+ ICsJLnZzeW5jX3N0YXJ0ID0gMTkyMCArIDEwLAo+ICsJLnZzeW5jX2VuZCA9IDE5MjAgKyAxMCAr IDE0LAo+ICsJLnZ0b3RhbCA9IDE5MjAgKyAxMCArIDE0ICsgNCwKPiArCS52cmVmcmVzaCA9IDYw LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBib2VfcGFuZWxfZ2V0X21vZGVzKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiAr Cj4gKwltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21vZGUp Owo+ICsJaWYgKCFtb2RlKSB7Cj4gKwkJZGV2X2VycihwYW5lbC0+ZHJtLT5kZXYsICJmYWlsZWQg dG8gYWRkIG1vZGUgJXV4JXV4QCV1XG4iLApBbiBleHRyYSB4IGhhcyBzbmVha2VkIGluIGhlcmUu Cndyb25nOiAiZmFpbGVkIG9vIGFkZCBtb2RlICV1eCV1eEAldVxuIgpnb29kOiAgImZhaWxlZCB0 byBhZGQgbW9kZSAldXgldUAldVxuIgoKPiArCQkJZGVmYXVsdF9tb2RlLmhkaXNwbGF5LCBkZWZh dWx0X21vZGUudmRpc3BsYXksCj4gKwkJCWRlZmF1bHRfbW9kZS52cmVmcmVzaCk7Cj4gKwkJcmV0 dXJuIC1FTk9NRU07Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVfc2V0X25hbWUobW9kZSk7Cj4gKwo+ ICsJZHJtX21vZGVfcHJvYmVkX2FkZChwYW5lbC0+Y29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKwlw YW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSAxMzU7Cj4gKwlwYW5lbC0+ Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gMjE2Owo+ICsJcGFuZWwtPmNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvLmJwYyA9IDg7ClBsZWFzZSBlbWJlZCB0aGVzZSBjb25zdGFudHMg aW4gZGVmYXVsdF9tZGUsIGFuZCB0aGVuIHJlYWQgdGhlbSBmcm9tCnRoZXJlLiBTbyB5b3UgYXZv aWQgaGFyZGNvZGluZyBkaXNwbGF5IHBhcmFtZXRlcnMgaW4gbW9yZSBwbGFjZXMuCgpJIHRoaW5r IHlvdSBzaG91bGQgYWxzbyBhZGQgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQgLSBzZSBvdGhlciBk cml2ZXJzLgo+ICsKPiArCXJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9wYW5lbF9mdW5jcyBib2VfcGFuZWxfZnVuY3MgPSB7Cj4gKwkuZGlzYWJsZSA9IGJvZV9w YW5lbF9kaXNhYmxlLAo+ICsJLnVucHJlcGFyZSA9IGJvZV9wYW5lbF91bnByZXBhcmUsCj4gKwku cHJlcGFyZSA9IGJvZV9wYW5lbF9wcmVwYXJlLAo+ICsJLmVuYWJsZSA9IGJvZV9wYW5lbF9lbmFi bGUsCj4gKwkuZ2V0X21vZGVzID0gYm9lX3BhbmVsX2dldF9tb2RlcywKPiArfTsKPiArCj4gK3N0 YXRpYyBpbnQgYm9lX3BhbmVsX2FkZChzdHJ1Y3QgYm9lX3BhbmVsICpib2UpCj4gK3sKPiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZib2UtPmRzaS0+ZGV2Owo+ICsKPiArCWJvZS0+YXZkZCA9IGRl dm1fcmVndWxhdG9yX2dldChkZXYsICJhdmRkIik7Cj4gKwlpZiAoSVNfRVJSKGJvZS0+YXZkZCkp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoYm9lLT5hdmRkKTsKPiArCj4gKwlib2UtPmF2ZWUgPSBkZXZt X3JlZ3VsYXRvcl9nZXQoZGV2LCAiYXZlZSIpOwo+ICsJaWYgKElTX0VSUihib2UtPmF2ZWUpKQo+ ICsJCXJldHVybiBQVFJfRVJSKGJvZS0+YXZlZSk7Cj4gKwo+ICsJYm9lLT5wcDE4MDAgPSBkZXZt X3JlZ3VsYXRvcl9nZXQoZGV2LCAicHAxODAwIik7Cj4gKwlpZiAoSVNfRVJSKGJvZS0+cHAxODAw KSkKPiArCQlyZXR1cm4gUFRSX0VSUihib2UtPnBwMTgwMCk7Cj4gKwo+ICsJYm9lLT5lbmFibGVf Z3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgImVuYWJsZSIsIEdQSU9EX09VVF9MT1cpOwo+ICsJ aWYgKElTX0VSUihib2UtPmVuYWJsZV9ncGlvKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90 IGdldCByZXNldC1ncGlvcyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoYm9lLT5lbmFibGVfZ3Bpbykp Owo+ICsJCWJvZS0+ZW5hYmxlX2dwaW8gPSBOVUxMOwo+ICsJfSBlbHNlIHsKPiArCQlncGlvZF9z ZXRfdmFsdWUoYm9lLT5lbmFibGVfZ3BpbywgMCk7Cj4gKwl9ClRoZSBlbmFibGVfZ3BpbyBpcyBt YW5kYXRvcnkgYWNjb3JkaW5nIHRvIHRoZSBiaW5kaW5nLgpTbyBpZiB0aGlzIGlzIHRydWUgdGhl biBlcnJvciBvdXQgaWYgbWlzc2luZy4KQW5kIGRyb3AgYWxsIGNvZGUgdGhhdCBoYW5sZSB0aGF0 IGVuYWJsZV9ncGlvIGlzIG9wdGlvbmVsLgoKPiArCj4gKwlib2UtPmJhY2tsaWdodCA9IGRldm1f b2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKPiArCWlmIChJU19FUlIoYm9lLT5iYWNrbGlnaHQpKQo+ ICsJCXJldHVybiBQVFJfRVJSKGJvZS0+YmFja2xpZ2h0KTsKPiArCj4gKwlkcm1fcGFuZWxfaW5p dCgmYm9lLT5iYXNlKTsKPiArCWJvZS0+YmFzZS5mdW5jcyA9ICZib2VfcGFuZWxfZnVuY3M7Cj4g Kwlib2UtPmJhc2UuZGV2ID0gJmJvZS0+ZHNpLT5kZXY7Cj4gKwo+ICsJcmV0dXJuIGRybV9wYW5l bF9hZGQoJmJvZS0+YmFzZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGJvZV9wYW5lbF9kZWwo c3RydWN0IGJvZV9wYW5lbCAqYm9lKQo+ICt7Cj4gKwlpZiAoYm9lLT5iYXNlLmRldikKPiArCQlk cm1fcGFuZWxfcmVtb3ZlKCZib2UtPmJhc2UpOwo+ICt9ClRoZSBib2VfcGFuZWxfZGVsKCkgZnVu Y3Rpb24gb25seSBvYnNjdWZhdGVzIGl0LiBlbWJlZCBpdCBpbiB0aGUgb25seQpjYWxsZXIuCgo+ ICsKPiArc3RhdGljIGludCBib2VfcGFuZWxfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAq ZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgYm9lX3BhbmVsICpib2U7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CWRzaS0+bGFuZXMgPSA0Owo+ICsJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4Owo+ ICsJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVf VklERU9fU1lOQ19QVUxTRSB8Cj4gKwkJIE1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCWJvZSA9 IGRldm1fa3phbGxvYygmZHNpLT5kZXYsIHNpemVvZigqYm9lKSwgR0ZQX0tFUk5FTCk7Cj4gKwlp ZiAoIWJvZSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0 YShkc2ksIGJvZSk7Cj4gKwo+ICsJYm9lLT5kc2kgPSBkc2k7Cj4gKwo+ICsJcmV0ID0gYm9lX3Bh bmVsX2FkZChib2UpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwly ZXR1cm4gbWlwaV9kc2lfYXR0YWNoKGRzaSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYm9lX3Bh bmVsX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBi b2VfcGFuZWwgKmJvZSA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4gKwlpbnQgcmV0Owo+ ICsKPiArCXJldCA9IGJvZV9wYW5lbF9kaXNhYmxlKCZib2UtPmJhc2UpOwo+ICsJaWYgKHJldCA8 IDApCj4gKwkJZGV2X2VycigmZHNpLT5kZXYsICJmYWlsZWQgdG8gZGlzYWJsZSBwYW5lbDogJWRc biIsIHJldCk7Cj4gKwo+ICsJcmV0ID0gbWlwaV9kc2lfZGV0YWNoKGRzaSk7Cj4gKwlpZiAocmV0 IDwgMCkKPiArCQlkZXZfZXJyKCZkc2ktPmRldiwgImZhaWxlZCB0byBkZXRhY2ggZnJvbSBEU0kg aG9zdDogJWRcbiIsIHJldCk7Cj4gKwo+ICsJYm9lX3BhbmVsX2RlbChib2UpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBib2VfcGFuZWxfc2h1dGRvd24oc3RydWN0 IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgYm9lX3BhbmVsICpib2UgPSBt aXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ICsKPiArCWJvZV9wYW5lbF9kaXNhYmxlKCZib2Ut PmJhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBib2Vf b2ZfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAiYm9lLHR2MTAxd3VtLW5sNiIsIH0s Cj4gKwl7IH0KU29tZSBkcml2ZXJzIHVzZSB7IC8qIHNlbnRpbmVsICovIH0gaGVyZS4KCj4gK307 Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJvZV9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMg c3RydWN0IG1pcGlfZHNpX2RyaXZlciBib2VfcGFuZWxfZHJpdmVyID0gewo+ICsJLmRyaXZlciA9 IHsKPiArCQkubmFtZSA9ICJwYW5lbC1ib2UtdHYxMDF3dW0tbmw2IiwKPiArCQkub2ZfbWF0Y2hf dGFibGUgPSBib2Vfb2ZfbWF0Y2gsCj4gKwl9LAo+ICsJLnByb2JlID0gYm9lX3BhbmVsX3Byb2Jl LAo+ICsJLnJlbW92ZSA9IGJvZV9wYW5lbF9yZW1vdmUsCj4gKwkuc2h1dGRvd24gPSBib2VfcGFu ZWxfc2h1dGRvd24sCj4gK307Cj4gK21vZHVsZV9taXBpX2RzaV9kcml2ZXIoYm9lX3BhbmVsX2Ry aXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJKaXRhbyBTaGkgPGppdGFvLnNoaUBtZWRpYXRl ay5jb20+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiQk9FIHR2MTAxd3VtLW5sNiAxMjAweDE5 MjAgdmlkZW8gbW9kZSBwYW5lbCBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp Owo+IC0tIAo+IDIuMjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWw=