From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: [PATCH v5 5/9] drm/bridge: tc358764: Add DSI to LVDS bridge driver Date: Wed, 25 Jul 2018 17:46:40 +0200 Message-ID: <20180725154644.25412-6-a.hajda@samsung.com> References: <20180725154644.25412-1-a.hajda@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <20180725154644.25412-1-a.hajda@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, Inki Dae Cc: Laurent Pinchart , Bartlomiej Zolnierkiewicz , Rob Herring , Maciej Purski , Thierry Reding , Krzysztof Kozlowski , Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org QWRkIGEgZHJtX2JyaWRnZSBkcml2ZXIgZm9yIHRoZSBUb3NoaWJhIFRDMzU4NzY0IERTSSB0byBM VkRTIGJyaWRnZS4KCkNoYW5nZXMgaW4gdjQ6Ci0gcmVtb3ZlZCBsaWNlbnNlIGJsb2IsCi0gb3Jk ZXJlZCBpbmNsdWRlcywKLSBhZGRlZCBlcnJvciBoYW5kbGluZywKLSBmaXhlZCByZXNldCBHUElP IGhhbmRsaW5nLAotIGFkZGVkIG1pc3NpbmcgY2FsbHMgdG8gdGhlIHBhbmVsLAotIGN1c3RvbSBP RiBncmFwaCBjb2RlIHJlcGxhY2VkIHdpdGggaGVscGVycywKLSByZW1vdmVkIHRjMzU4NzY0X3Bv d2Vyb2ZmIGZyb20gcmVtb3ZlIGNhbGxiYWNrLgp2NToKLSBmaXhlZCBzdXBwbHkgbmFtZXMsCi0g Zml4ZWQgYnJva2VuIGNvbnNvbGUgLSBhZGRlZCBjb25uZWN0b3IgdG8gZmJfaGVscGVyLAotIGFk ZGVkIGRldGFjaCBjYWxsYmFjayAtIHVuYmluZGluZyB3b3JrcywKLSBmaXhlZCB0eXBvIGluIGVy cm9yIGNoZWNraW5nIGNvZGUsCi0gcmVtb3ZlZCBzcGFyc2UgYnJpZGdlLT5lbmNvZGVyIGNoZWNr IC0gY29yZSBkb2VzIGl0IGFscmVhZHkuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIEhhamRhIDxh LmhhamRhQHNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYWNpZWogUHVyc2tpIDxtLnB1cnNr aUBzYW1zdW5nLmNvbT4KWyBhLmhhamRhQHNhbXN1bmcuY29tOiB2NCwgdjUgXQpTaWduZWQtb2Zm LWJ5OiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvS2NvbmZpZyAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01h a2VmaWxlICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2NC5jIHwgNDk5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1MDggaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMz NTg3NjQuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCBmYTJjNzk5N2UyZmQuLmYzZGE4YTcx NjgzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwpAQCAtMTEwLDYgKzExMCwxNCBAQCBjb25maWcg RFJNX1RISU5FX1RIQzYzTFZEMTAyNAogCS0tLWhlbHAtLS0KIAkgIFRoaW5lIFRIQzYzTFZEMTAy NCBMVkRTL3BhcmFsbGVsIGNvbnZlcnRlciBkcml2ZXIuCiAKK2NvbmZpZyBEUk1fVE9TSElCQV9U QzM1ODc2NAorCXRyaXN0YXRlICJUQzM1ODc2NCBEU0kvTFZEUyBicmlkZ2UiCisJZGVwZW5kcyBv biBEUk0gJiYgRFJNX1BBTkVMCisJZGVwZW5kcyBvbiBPRgorCXNlbGVjdCBEUk1fTUlQSV9EU0kK KwloZWxwCisJICBUb3NoaWJhIFRDMzU4NzY0IERTSS9MVkRTIGJyaWRnZSBkcml2ZXIuCisKIGNv bmZpZyBEUk1fVE9TSElCQV9UQzM1ODc2NwogCXRyaXN0YXRlICJUb3NoaWJhIFRDMzU4NzY3IGVE UCBicmlkZ2UiCiAJZGVwZW5kcyBvbiBPRgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKaW5kZXggMzVm ODhkNDhlYzIwLi5iZjdjMGNlY2YyMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQpAQCAtMTAs NiArMTAsNyBAQCBvYmotJChDT05GSUdfRFJNX1NJTF9TSUk4NjIwKSArPSBzaWwtc2lpODYyMC5v CiBvYmotJChDT05GSUdfRFJNX1NJSTkwMlgpICs9IHNpaTkwMngubwogb2JqLSQoQ09ORklHX0RS TV9TSUk5MjM0KSArPSBzaWk5MjM0Lm8KIG9iai0kKENPTkZJR19EUk1fVEhJTkVfVEhDNjNMVkQx MDI0KSArPSB0aGM2M2x2ZDEwMjQubworb2JqLSQoQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY0 KSArPSB0YzM1ODc2NC5vCiBvYmotJChDT05GSUdfRFJNX1RPU0hJQkFfVEMzNTg3NjcpICs9IHRj MzU4NzY3Lm8KIG9iai0kKENPTkZJR19EUk1fQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4Lwogb2Jq LSQoQ09ORklHX0RSTV9JMkNfQURWNzUxMSkgKz0gYWR2NzUxMS8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjQuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMz NTg3NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3OWJjNWZj ZTIyYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjQu YwpAQCAtMCwwICsxLDQ5OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZAor ICoKKyAqIEF1dGhvcnM6CisgKglBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgor ICoJTWFjaWVqIFB1cnNraSA8bS5wdXJza2lAc2Ftc3VuZy5jb20+CisgKi8KKworI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBl ci5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX29m Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1ZGUgPGRybS9kcm1QLmg+Cisj aW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBo Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8dmlk ZW8vbWlwaV9kaXNwbGF5Lmg+CisKKyNkZWZpbmUgRkxEX01BU0soc3RhcnQsIGVuZCkgICAgKCgo MSA8PCAoKHN0YXJ0KSAtIChlbmQpICsgMSkpIC0gMSkgPDwgKGVuZCkpCisjZGVmaW5lIEZMRF9W QUwodmFsLCBzdGFydCwgZW5kKSAoKCh2YWwpIDw8IChlbmQpKSAmIEZMRF9NQVNLKHN0YXJ0LCBl bmQpKQorCisvKiBQUEkgbGF5ZXIgcmVnaXN0ZXJzICovCisjZGVmaW5lIFBQSV9TVEFSVFBQSQkJ MHgwMTA0IC8qIFNUQVJUIGNvbnRyb2wgYml0ICovCisjZGVmaW5lIFBQSV9MUFRYVElNRUNOVAkJ MHgwMTE0IC8qIExQVFggdGltaW5nIHNpZ25hbCAqLworI2RlZmluZSBQUElfTEFORUVOQUJMRQkJ MHgwMTM0IC8qIEVuYWJsZXMgZWFjaCBsYW5lICovCisjZGVmaW5lIFBQSV9UWF9SWF9UQQkJMHgw MTNDIC8qIEJUQSB0aW1pbmcgcGFyYW1ldGVycyAqLworI2RlZmluZSBQUElfRDBTX0NMUlNJUE9D T1VOVAkweDAxNjQgLyogQXNzZXJ0aW9uIHRpbWVyIGZvciBMYW5lIDAgKi8KKyNkZWZpbmUgUFBJ X0QxU19DTFJTSVBPQ09VTlQJMHgwMTY4IC8qIEFzc2VydGlvbiB0aW1lciBmb3IgTGFuZSAxICov CisjZGVmaW5lIFBQSV9EMlNfQ0xSU0lQT0NPVU5UCTB4MDE2QyAvKiBBc3NlcnRpb24gdGltZXIg Zm9yIExhbmUgMiAqLworI2RlZmluZSBQUElfRDNTX0NMUlNJUE9DT1VOVAkweDAxNzAgLyogQXNz ZXJ0aW9uIHRpbWVyIGZvciBMYW5lIDMgKi8KKyNkZWZpbmUgUFBJX1NUQVJUX0ZVTkNUSU9OCTEK KworLyogRFNJIGxheWVyIHJlZ2lzdGVycyAqLworI2RlZmluZSBEU0lfU1RBUlREU0kJCTB4MDIw NCAvKiBTVEFSVCBjb250cm9sIGJpdCBvZiBEU0ktVFggKi8KKyNkZWZpbmUgRFNJX0xBTkVFTkFC TEUJCTB4MDIxMCAvKiBFbmFibGVzIGVhY2ggbGFuZSAqLworI2RlZmluZSBEU0lfUlhfU1RBUlQJ CTEKKworLyogVmlkZW8gcGF0aCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgVlBfQ1RSTAkJCTB4MDQ1 MCAvKiBWaWRlbyBQYXRoIENvbnRyb2wgKi8KKyNkZWZpbmUgVlBfQ1RSTF9NU0YodikJCUZMRF9W QUwodiwgMCwgMCkgLyogTWFnaWMgc3F1YXJlIGluIFJHQjY2NiAqLworI2RlZmluZSBWUF9DVFJM X1ZUR0VOKHYpCUZMRF9WQUwodiwgNCwgNCkgLyogVXNlIGNoaXAgY2xvY2sgZm9yIHRpbWluZyAq LworI2RlZmluZSBWUF9DVFJMX0VWVE1PREUodikJRkxEX1ZBTCh2LCA1LCA1KSAvKiBFdmVudCBt b2RlICovCisjZGVmaW5lIFZQX0NUUkxfUkdCODg4KHYpCUZMRF9WQUwodiwgOCwgOCkgLyogUkdC ODg4IG1vZGUgKi8KKyNkZWZpbmUgVlBfQ1RSTF9WU0RFTEFZKHYpCUZMRF9WQUwodiwgMzEsIDIw KSAvKiBWU1lOQyBkZWxheSAqLworI2RlZmluZSBWUF9DVFJMX0hTUE9MCQlCSVQoMTcpIC8qIFBv bGFyaXR5IG9mIEhTWU5DIHNpZ25hbCAqLworI2RlZmluZSBWUF9DVFJMX0RFUE9MCQlCSVQoMTgp IC8qIFBvbGFyaXR5IG9mIERFIHNpZ25hbCAqLworI2RlZmluZSBWUF9DVFJMX1ZTUE9MCQlCSVQo MTkpIC8qIFBvbGFyaXR5IG9mIFZTWU5DIHNpZ25hbCAqLworI2RlZmluZSBWUF9IVElNMQkJMHgw NDU0IC8qIEhvcml6b250YWwgVGltaW5nIENvbnRyb2wgMSAqLworI2RlZmluZSBWUF9IVElNMV9I QlAodikJCUZMRF9WQUwodiwgMjQsIDE2KQorI2RlZmluZSBWUF9IVElNMV9IU1lOQyh2KQlGTERf VkFMKHYsIDgsIDApCisjZGVmaW5lIFZQX0hUSU0yCQkweDA0NTggLyogSG9yaXpvbnRhbCBUaW1p bmcgQ29udHJvbCAyICovCisjZGVmaW5lIFZQX0hUSU0yX0hGUCh2KQkJRkxEX1ZBTCh2LCAyNCwg MTYpCisjZGVmaW5lIFZQX0hUSU0yX0hBQ1QodikJRkxEX1ZBTCh2LCAxMCwgMCkKKyNkZWZpbmUg VlBfVlRJTTEJCTB4MDQ1QyAvKiBWZXJ0aWNhbCBUaW1pbmcgQ29udHJvbCAxICovCisjZGVmaW5l IFZQX1ZUSU0xX1ZCUCh2KQkJRkxEX1ZBTCh2LCAyMywgMTYpCisjZGVmaW5lIFZQX1ZUSU0xX1ZT WU5DKHYpCUZMRF9WQUwodiwgNywgMCkKKyNkZWZpbmUgVlBfVlRJTTIJCTB4MDQ2MCAvKiBWZXJ0 aWNhbCBUaW1pbmcgQ29udHJvbCAyICovCisjZGVmaW5lIFZQX1ZUSU0yX1ZGUCh2KQkJRkxEX1ZB TCh2LCAyMywgMTYpCisjZGVmaW5lIFZQX1ZUSU0yX1ZBQ1QodikJRkxEX1ZBTCh2LCAxMCwgMCkK KyNkZWZpbmUgVlBfVkZVRU4JCTB4MDQ2NCAvKiBWaWRlbyBGcmFtZSBUaW1pbmcgVXBkYXRlIEVu YWJsZSAqLworCisvKiBMVkRTIHJlZ2lzdGVycyAqLworI2RlZmluZSBMVl9NWDAwMDMJCTB4MDQ4 MCAvKiBNdXggaW5wdXQgYml0IDAgdG8gMyAqLworI2RlZmluZSBMVl9NWDA0MDcJCTB4MDQ4NCAv KiBNdXggaW5wdXQgYml0IDQgdG8gNyAqLworI2RlZmluZSBMVl9NWDA4MTEJCTB4MDQ4OCAvKiBN dXggaW5wdXQgYml0IDggdG8gMTEgKi8KKyNkZWZpbmUgTFZfTVgxMjE1CQkweDA0OEMgLyogTXV4 IGlucHV0IGJpdCAxMiB0byAxNSAqLworI2RlZmluZSBMVl9NWDE2MTkJCTB4MDQ5MCAvKiBNdXgg aW5wdXQgYml0IDE2IHRvIDE5ICovCisjZGVmaW5lIExWX01YMjAyMwkJMHgwNDk0IC8qIE11eCBp bnB1dCBiaXQgMjAgdG8gMjMgKi8KKyNkZWZpbmUgTFZfTVgyNDI3CQkweDA0OTggLyogTXV4IGlu cHV0IGJpdCAyNCB0byAyNyAqLworI2RlZmluZSBMVl9NWChiMCwgYjEsIGIyLCBiMykJKEZMRF9W QUwoYjAsIDQsIDApIHwgRkxEX1ZBTChiMSwgMTIsIDgpIHwgXAorCQkJCUZMRF9WQUwoYjIsIDIw LCAxNikgfCBGTERfVkFMKGIzLCAyOCwgMjQpKQorCisvKiBJbnB1dCBiaXQgbnVtYmVycyB1c2Vk IGluIG11eCByZWdpc3RlcnMgKi8KK2VudW0geworCUxWSV9SMCwKKwlMVklfUjEsCisJTFZJX1Iy LAorCUxWSV9SMywKKwlMVklfUjQsCisJTFZJX1I1LAorCUxWSV9SNiwKKwlMVklfUjcsCisJTFZJ X0cwLAorCUxWSV9HMSwKKwlMVklfRzIsCisJTFZJX0czLAorCUxWSV9HNCwKKwlMVklfRzUsCisJ TFZJX0c2LAorCUxWSV9HNywKKwlMVklfQjAsCisJTFZJX0IxLAorCUxWSV9CMiwKKwlMVklfQjMs CisJTFZJX0I0LAorCUxWSV9CNSwKKwlMVklfQjYsCisJTFZJX0I3LAorCUxWSV9IUywKKwlMVklf VlMsCisJTFZJX0RFLAorCUxWSV9MMAorfTsKKworI2RlZmluZSBMVl9DRkcJCQkweDA0OUMgLyog TFZEUyBDb25maWd1cmF0aW9uICovCisjZGVmaW5lIExWX1BIWTAJCQkweDA0QTAgLyogTFZEUyBQ SFkgMCAqLworI2RlZmluZSBMVl9QSFkwX1JTVCh2KQkJRkxEX1ZBTCh2LCAyMiwgMjIpIC8qIFBI WSByZXNldCAqLworI2RlZmluZSBMVl9QSFkwX0lTKHYpCQlGTERfVkFMKHYsIDE1LCAxNCkKKyNk ZWZpbmUgTFZfUEhZMF9ORCh2KQkJRkxEX1ZBTCh2LCA0LCAwKSAvKiBGcmVxdWVuY3kgcmFuZ2Ug c2VsZWN0ICovCisjZGVmaW5lIExWX1BIWTBfUFJCU19PTih2KQlGTERfVkFMKHYsIDIwLCAxNikg LyogQ2xvY2svRGF0YSBGbGFnIHBpbnMgKi8KKworLyogU3lzdGVtIHJlZ2lzdGVycyAqLworI2Rl ZmluZSBTWVNfUlNUCQkJMHgwNTA0IC8qIFN5c3RlbSBSZXNldCAqLworI2RlZmluZSBTWVNfSUQJ CQkweDA1ODAgLyogU3lzdGVtIElEICovCisKKyNkZWZpbmUgU1lTX1JTVF9JMkNTCQlCSVQoMCkg LyogUmVzZXQgSTJDLVNsYXZlIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgU1lTX1JTVF9JMkNNCQlC SVQoMSkgLyogUmVzZXQgSTJDLU1hc3RlciBjb250cm9sbGVyICovCisjZGVmaW5lIFNZU19SU1Rf TENECQlCSVQoMikgLyogUmVzZXQgTENEIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgU1lTX1JTVF9C TQkJQklUKDMpIC8qIFJlc2V0IEJ1cyBNYW5hZ2VtZW50IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUg U1lTX1JTVF9EU0lSWAkJQklUKDQpIC8qIFJlc2V0IERTSS1SWCBhbmQgQXBwIGNvbnRyb2xsZXIg Ki8KKyNkZWZpbmUgU1lTX1JTVF9SRUcJCUJJVCg1KSAvKiBSZXNldCBSZWdpc3RlciBtb2R1bGUg Ki8KKworI2RlZmluZSBMUFhfUEVSSU9ECQkyCisjZGVmaW5lIFRUQV9TVVJFCQkzCisjZGVmaW5l IFRUQV9HRVQJCQkweDIwMDAwCisKKy8qIExhbmUgZW5hYmxlIFBQSSBhbmQgRFNJIHJlZ2lzdGVy IGJpdHMgKi8KKyNkZWZpbmUgTEFORUVOQUJMRV9DTEVOCQlCSVQoMCkKKyNkZWZpbmUgTEFORUVO QUJMRV9MMEVOCQlCSVQoMSkKKyNkZWZpbmUgTEFORUVOQUJMRV9MMUVOCQlCSVQoMikKKyNkZWZp bmUgTEFORUVOQUJMRV9MMkVOCQlCSVQoMykKKyNkZWZpbmUgTEFORUVOQUJMRV9MM0VOCQlCSVQo NCkKKworLyogTFZDRkcgZmllbGRzICovCisjZGVmaW5lIExWX0NGR19MVkVOCQlCSVQoMCkKKyNk ZWZpbmUgTFZfQ0ZHX0xWRExJTksJCUJJVCgxKQorI2RlZmluZSBMVl9DRkdfQ0xLUE9MMQkJQklU KDIpCisjZGVmaW5lIExWX0NGR19DTEtQT0wyCQlCSVQoMykKKworc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCB0YzM1ODc2NF9zdXBwbGllc1tdID0geworCSJ2ZGRjIiwgInZkZGlvIiwgInZkZGx2 ZHMiCit9OworCitzdHJ1Y3QgdGMzNTg3NjQgeworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1 Y3QgZHJtX2JyaWRnZSBicmlkZ2U7CisJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwor CXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzW0FSUkFZX1NJWkUodGMzNTg3NjRf c3VwcGxpZXMpXTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX3Jlc2V0OworCXN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsOworCWludCBlcnJvcjsKK307CisKK3N0YXRpYyBpbnQgdGMzNTg3NjRfY2xl YXJfZXJyb3Ioc3RydWN0IHRjMzU4NzY0ICpjdHgpCit7CisJaW50IHJldCA9IGN0eC0+ZXJyb3I7 CisKKwljdHgtPmVycm9yID0gMDsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB0YzM1 ODc2NF9yZWFkKHN0cnVjdCB0YzM1ODc2NCAqY3R4LCB1MTYgYWRkciwgdTMyICp2YWwpCit7CisJ c3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2 KTsKKwlzc2l6ZV90IHJldDsKKworCWlmIChjdHgtPmVycm9yKQorCQlyZXR1cm47CisKKwljcHVf dG9fbGUxNnMoJmFkZHIpOworCXJldCA9IG1pcGlfZHNpX2dlbmVyaWNfcmVhZChkc2ksICZhZGRy LCBzaXplb2YoYWRkciksIHZhbCwgc2l6ZW9mKCp2YWwpKTsKKwlpZiAocmV0ID49IDApCisJCWxl MzJfdG9fY3B1cyh2YWwpOworCisJZGV2X2RiZyhjdHgtPmRldiwgInJlYWQ6ICVkLCBhZGRyOiAl ZFxuIiwgYWRkciwgKnZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIHRjMzU4NzY0X3dyaXRlKHN0cnVj dCB0YzM1ODc2NCAqY3R4LCB1MTYgYWRkciwgdTMyIHZhbCkKK3sKKwlzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOworCXNzaXplX3QgcmV0 OworCXU4IGRhdGFbNl07CisKKwlpZiAoY3R4LT5lcnJvcikKKwkJcmV0dXJuOworCisJZGF0YVsw XSA9IGFkZHI7CisJZGF0YVsxXSA9IGFkZHIgPj4gODsKKwlkYXRhWzJdID0gdmFsOworCWRhdGFb M10gPSB2YWwgPj4gODsKKwlkYXRhWzRdID0gdmFsID4+IDE2OworCWRhdGFbNV0gPSB2YWwgPj4g MjQ7CisKKwlyZXQgPSBtaXBpX2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgZGF0YSwgc2l6ZW9mKGRh dGEpKTsKKwlpZiAocmV0IDwgMCkKKwkJY3R4LT5lcnJvciA9IHJldDsKK30KKworc3RhdGljIGlu bGluZSBzdHJ1Y3QgdGMzNTg3NjQgKmJyaWRnZV90b190YzM1ODc2NChzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQoreworCXJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgdGMzNTg3 NjQsIGJyaWRnZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUKK3N0cnVjdCB0YzM1ODc2NCAqY29ubmVj dG9yX3RvX3RjMzU4NzY0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0 dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCB0YzM1ODc2NCwgY29ubmVjdG9yKTsK K30KKworc3RhdGljIGludCB0YzM1ODc2NF9pbml0KHN0cnVjdCB0YzM1ODc2NCAqY3R4KQorewor CXUzMiB2ID0gMDsKKworCXRjMzU4NzY0X3JlYWQoY3R4LCBTWVNfSUQsICZ2KTsKKwlpZiAoY3R4 LT5lcnJvcikKKwkJcmV0dXJuIHRjMzU4NzY0X2NsZWFyX2Vycm9yKGN0eCk7CisJZGV2X2luZm8o Y3R4LT5kZXYsICJJRDogJSN4XG4iLCB2KTsKKworCS8qIGNvbmZpZ3VyZSBQUEkgY291bnRlcnMg Ki8KKwl0YzM1ODc2NF93cml0ZShjdHgsIFBQSV9UWF9SWF9UQSwgVFRBX0dFVCB8IFRUQV9TVVJF KTsKKwl0YzM1ODc2NF93cml0ZShjdHgsIFBQSV9MUFRYVElNRUNOVCwgTFBYX1BFUklPRCk7CisJ dGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfRDBTX0NMUlNJUE9DT1VOVCwgNSk7CisJdGMzNTg3NjRf d3JpdGUoY3R4LCBQUElfRDFTX0NMUlNJUE9DT1VOVCwgNSk7CisJdGMzNTg3NjRfd3JpdGUoY3R4 LCBQUElfRDJTX0NMUlNJUE9DT1VOVCwgNSk7CisJdGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfRDNT X0NMUlNJUE9DT1VOVCwgNSk7CisKKwkvKiBlbmFibGUgZm91ciBkYXRhIGxhbmVzIGFuZCBjbG9j ayBsYW5lICovCisJdGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfTEFORUVOQUJMRSwgTEFORUVOQUJM RV9MM0VOIHwgTEFORUVOQUJMRV9MMkVOIHwKKwkJICAgICAgIExBTkVFTkFCTEVfTDFFTiB8IExB TkVFTkFCTEVfTDBFTiB8IExBTkVFTkFCTEVfQ0xFTik7CisJdGMzNTg3NjRfd3JpdGUoY3R4LCBE U0lfTEFORUVOQUJMRSwgTEFORUVOQUJMRV9MM0VOIHwgTEFORUVOQUJMRV9MMkVOIHwKKwkJICAg ICAgIExBTkVFTkFCTEVfTDFFTiB8IExBTkVFTkFCTEVfTDBFTiB8IExBTkVFTkFCTEVfQ0xFTik7 CisKKwkvKiBzdGFydCAqLworCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX1NUQVJUUFBJLCBQUElf U1RBUlRfRlVOQ1RJT04pOworCXRjMzU4NzY0X3dyaXRlKGN0eCwgRFNJX1NUQVJURFNJLCBEU0lf UlhfU1RBUlQpOworCisJLyogY29uZmlndXJlIHZpZGVvIHBhdGggKi8KKwl0YzM1ODc2NF93cml0 ZShjdHgsIFZQX0NUUkwsIFZQX0NUUkxfVlNERUxBWSgxNSkgfCBWUF9DVFJMX1JHQjg4OCgxKSB8 CisJCSAgICAgICBWUF9DVFJMX0VWVE1PREUoMSkgfCBWUF9DVFJMX0hTUE9MIHwgVlBfQ1RSTF9W U1BPTCk7CisKKwkvKiByZXNldCBQSFkgKi8KKwl0YzM1ODc2NF93cml0ZShjdHgsIExWX1BIWTAs IExWX1BIWTBfUlNUKDEpIHwKKwkJICAgICAgIExWX1BIWTBfUFJCU19PTig0KSB8IExWX1BIWTBf SVMoMikgfCBMVl9QSFkwX05EKDYpKTsKKwl0YzM1ODc2NF93cml0ZShjdHgsIExWX1BIWTAsIExW X1BIWTBfUFJCU19PTig0KSB8IExWX1BIWTBfSVMoMikgfAorCQkgICAgICAgTFZfUEhZMF9ORCg2 KSk7CisKKwkvKiByZXNldCBicmlkZ2UgKi8KKwl0YzM1ODc2NF93cml0ZShjdHgsIFNZU19SU1Qs IFNZU19SU1RfTENEKTsKKworCS8qIHNldCBiaXQgb3JkZXIgKi8KKwl0YzM1ODc2NF93cml0ZShj dHgsIExWX01YMDAwMywgTFZfTVgoTFZJX1IwLCBMVklfUjEsIExWSV9SMiwgTFZJX1IzKSk7CisJ dGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9NWDA0MDcsIExWX01YKExWSV9SNCwgTFZJX1I3LCBMVklf UjUsIExWSV9HMCkpOworCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfTVgwODExLCBMVl9NWChMVklf RzEsIExWSV9HMiwgTFZJX0c2LCBMVklfRzcpKTsKKwl0YzM1ODc2NF93cml0ZShjdHgsIExWX01Y MTIxNSwgTFZfTVgoTFZJX0czLCBMVklfRzQsIExWSV9HNSwgTFZJX0IwKSk7CisJdGMzNTg3NjRf d3JpdGUoY3R4LCBMVl9NWDE2MTksIExWX01YKExWSV9CNiwgTFZJX0I3LCBMVklfQjEsIExWSV9C MikpOworCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfTVgyMDIzLCBMVl9NWChMVklfQjMsIExWSV9C NCwgTFZJX0I1LCBMVklfTDApKTsKKwl0YzM1ODc2NF93cml0ZShjdHgsIExWX01YMjQyNywgTFZf TVgoTFZJX0hTLCBMVklfVlMsIExWSV9ERSwgTFZJX1I2KSk7CisJdGMzNTg3NjRfd3JpdGUoY3R4 LCBMVl9DRkcsIExWX0NGR19DTEtQT0wyIHwgTFZfQ0ZHX0NMS1BPTDEgfAorCQkgICAgICAgTFZf Q0ZHX0xWRU4pOworCisJcmV0dXJuIHRjMzU4NzY0X2NsZWFyX2Vycm9yKGN0eCk7Cit9CisKK3N0 YXRpYyB2b2lkIHRjMzU4NzY0X3Jlc2V0KHN0cnVjdCB0YzM1ODc2NCAqY3R4KQoreworCWdwaW9k X3NldF92YWx1ZShjdHgtPmdwaW9fcmVzZXQsIDEpOworCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAw KTsKKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5ncGlvX3Jlc2V0LCAwKTsKKwl1c2xlZXBfcmFuZ2Uo MTAwMCwgMjAwMCk7Cit9CisKK3N0YXRpYyBpbnQgdGMzNTg3NjRfZ2V0X21vZGVzKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IHRjMzU4NzY0ICpjdHggPSBjb25u ZWN0b3JfdG9fdGMzNTg3NjQoY29ubmVjdG9yKTsKKworCXJldHVybiBkcm1fcGFuZWxfZ2V0X21v ZGVzKGN0eC0+cGFuZWwpOworfQorCitzdGF0aWMgY29uc3QKK3N0cnVjdCBkcm1fY29ubmVjdG9y X2hlbHBlcl9mdW5jcyB0YzM1ODc2NF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0geworCS5nZXRf bW9kZXMgPSB0YzM1ODc2NF9nZXRfbW9kZXMsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3JfZnVuY3MgdGMzNTg3NjRfY29ubmVjdG9yX2Z1bmNzID0geworCS5maWxsX21v ZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXN0cm95 ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAorCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9yZXNldCwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVs cGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0g ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCit9OworCitzdGF0aWMg dm9pZCB0YzM1ODc2NF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJc3Ry dWN0IHRjMzU4NzY0ICpjdHggPSBicmlkZ2VfdG9fdGMzNTg3NjQoYnJpZGdlKTsKKwlpbnQgcmV0 ID0gZHJtX3BhbmVsX2Rpc2FibGUoYnJpZGdlX3RvX3RjMzU4NzY0KGJyaWRnZSktPnBhbmVsKTsK KworCWlmIChyZXQgPCAwKQorCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZXJyb3IgZGlzYWJsaW5nIHBh bmVsICglZClcbiIsIHJldCk7Cit9CisKK3N0YXRpYyB2b2lkIHRjMzU4NzY0X3Bvc3RfZGlzYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCXN0cnVjdCB0YzM1ODc2NCAqY3R4ID0g YnJpZGdlX3RvX3RjMzU4NzY0KGJyaWRnZSk7CisJaW50IHJldDsKKworCXJldCA9IGRybV9wYW5l bF91bnByZXBhcmUoY3R4LT5wYW5lbCk7CisJaWYgKHJldCA8IDApCisJCWRldl9lcnIoY3R4LT5k ZXYsICJlcnJvciB1bnByZXBhcmluZyBwYW5lbCAoJWQpXG4iLCByZXQpOworCXRjMzU4NzY0X3Jl c2V0KGN0eCk7CisJdXNsZWVwX3JhbmdlKDEwMDAwLCAxNTAwMCk7CisJcmV0ID0gcmVndWxhdG9y X2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsK KwlpZiAocmV0IDwgMCkKKwkJZGV2X2VycihjdHgtPmRldiwgImVycm9yIGRpc2FibGluZyByZWd1 bGF0b3JzICglZClcbiIsIHJldCk7Cit9CisKK3N0YXRpYyB2b2lkIHRjMzU4NzY0X3ByZV9lbmFi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgdGMzNTg3NjQgKmN0eCA9 IGJyaWRnZV90b190YzM1ODc2NChicmlkZ2UpOworCWludCByZXQ7CisKKwlyZXQgPSByZWd1bGF0 b3JfYnVsa19lbmFibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7 CisJaWYgKHJldCA8IDApCisJCWRldl9lcnIoY3R4LT5kZXYsICJlcnJvciBlbmFibGluZyByZWd1 bGF0b3JzICglZClcbiIsIHJldCk7CisJdXNsZWVwX3JhbmdlKDEwMDAwLCAxNTAwMCk7CisJdGMz NTg3NjRfcmVzZXQoY3R4KTsKKwlyZXQgPSB0YzM1ODc2NF9pbml0KGN0eCk7CisJaWYgKHJldCA8 IDApCisJCWRldl9lcnIoY3R4LT5kZXYsICJlcnJvciBpbml0aWFsaXppbmcgYnJpZGdlICglZClc biIsIHJldCk7CisJcmV0ID0gZHJtX3BhbmVsX3ByZXBhcmUoY3R4LT5wYW5lbCk7CisJaWYgKHJl dCA8IDApCisJCWRldl9lcnIoY3R4LT5kZXYsICJlcnJvciBwcmVwYXJpbmcgcGFuZWwgKCVkKVxu IiwgcmV0KTsKK30KKworc3RhdGljIHZvaWQgdGMzNTg3NjRfZW5hYmxlKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UpCit7CisJc3RydWN0IHRjMzU4NzY0ICpjdHggPSBicmlkZ2VfdG9fdGMzNTg3 NjQoYnJpZGdlKTsKKwlpbnQgcmV0ID0gZHJtX3BhbmVsX2VuYWJsZShjdHgtPnBhbmVsKTsKKwor CWlmIChyZXQgPCAwKQorCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZXJyb3IgZW5hYmxpbmcgcGFuZWwg KCVkKVxuIiwgcmV0KTsKK30KKworc3RhdGljIGludCB0YzM1ODc2NF9hdHRhY2goc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgdGMzNTg3NjQgKmN0eCA9IGJyaWRnZV90b190 YzM1ODc2NChicmlkZ2UpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBicmlkZ2UtPmRldjsK KwlpbnQgcmV0OworCisJY3R4LT5jb25uZWN0b3IucG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xM X0hQRDsKKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZHJtLCAmY3R4LT5jb25uZWN0b3IsCisJ CQkJICZ0YzM1ODc2NF9jb25uZWN0b3JfZnVuY3MsCisJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9M VkRTKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgY29u bmVjdG9yXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9h ZGQoJmN0eC0+Y29ubmVjdG9yLAorCQkJCSAmdGMzNTg3NjRfY29ubmVjdG9yX2hlbHBlcl9mdW5j cyk7CisJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZjdHgtPmNvbm5lY3Rvciwg YnJpZGdlLT5lbmNvZGVyKTsKKwlkcm1fcGFuZWxfYXR0YWNoKGN0eC0+cGFuZWwsICZjdHgtPmNv bm5lY3Rvcik7CisJY3R4LT5jb25uZWN0b3IuZnVuY3MtPnJlc2V0KCZjdHgtPmNvbm5lY3Rvcik7 CisJZHJtX2ZiX2hlbHBlcl9hZGRfb25lX2Nvbm5lY3Rvcihkcm0tPmZiX2hlbHBlciwgJmN0eC0+ Y29ubmVjdG9yKTsKKwlkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKCZjdHgtPmNvbm5lY3Rvcik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGMzNTg3NjRfZGV0YWNoKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UpCit7CisJc3RydWN0IHRjMzU4NzY0ICpjdHggPSBicmlkZ2VfdG9fdGMz NTg3NjQoYnJpZGdlKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gYnJpZGdlLT5kZXY7CisK Kwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoJmN0eC0+Y29ubmVjdG9yKTsKKwlkcm1fZmJfaGVs cGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKGRybS0+ZmJfaGVscGVyLCAmY3R4LT5jb25uZWN0b3Ip OworCWRybV9wYW5lbF9kZXRhY2goY3R4LT5wYW5lbCk7CisJY3R4LT5wYW5lbCA9IE5VTEw7CisJ ZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZSgmY3R4LT5jb25uZWN0b3IpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgdGMzNTg3NjRfYnJpZGdlX2Z1bmNzID0gewor CS5kaXNhYmxlID0gdGMzNTg3NjRfZGlzYWJsZSwKKwkucG9zdF9kaXNhYmxlID0gdGMzNTg3NjRf cG9zdF9kaXNhYmxlLAorCS5lbmFibGUgPSB0YzM1ODc2NF9lbmFibGUsCisJLnByZV9lbmFibGUg PSB0YzM1ODc2NF9wcmVfZW5hYmxlLAorCS5hdHRhY2ggPSB0YzM1ODc2NF9hdHRhY2gsCisJLmRl dGFjaCA9IHRjMzU4NzY0X2RldGFjaCwKK307CisKK3N0YXRpYyBpbnQgdGMzNTg3NjRfcGFyc2Vf ZHQoc3RydWN0IHRjMzU4NzY0ICpjdHgpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5k ZXY7CisJaW50IHJldDsKKworCWN0eC0+Z3Bpb19yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwg InJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7CisJaWYgKElTX0VSUihjdHgtPmdwaW9fcmVzZXQpKSB7 CisJCWRldl9lcnIoZGV2LCAibm8gcmVzZXQgR1BJTyBwaW4gcHJvdmlkZWRcbiIpOworCQlyZXR1 cm4gUFRSX0VSUihjdHgtPmdwaW9fcmVzZXQpOworCX0KKworCXJldCA9IGRybV9vZl9maW5kX3Bh bmVsX29yX2JyaWRnZShjdHgtPmRldi0+b2Zfbm9kZSwgMSwgMCwgJmN0eC0+cGFuZWwsCisJCQkJ CSAgTlVMTCk7CisJaWYgKHJldCAmJiByZXQgIT0gLUVQUk9CRV9ERUZFUikKKwkJZGV2X2Vycihk ZXYsICJjYW5ub3QgZmluZCBwYW5lbCAoJWQpXG4iLCByZXQpOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludCB0YzM1ODc2NF9jb25maWd1cmVfcmVndWxhdG9ycyhzdHJ1Y3QgdGMzNTg3 NjQgKmN0eCkKK3sKKwlpbnQgaSwgcmV0OworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo Y3R4LT5zdXBwbGllcyk7ICsraSkKKwkJY3R4LT5zdXBwbGllc1tpXS5zdXBwbHkgPSB0YzM1ODc2 NF9zdXBwbGllc1tpXTsKKworCXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGN0eC0+ZGV2 LCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLAorCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOwor CWlmIChyZXQgPCAwKQorCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0 b3JzOiAlZFxuIiwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdGMzNTg3 NjRfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZkc2ktPmRldjsKKwlzdHJ1Y3QgdGMzNTg3NjQgKmN0eDsKKwlpbnQgcmV0OworCisJ Y3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKHN0cnVjdCB0YzM1ODc2NCksIEdGUF9LRVJO RUwpOworCWlmICghY3R4KQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1pcGlfZHNpX3NldF9kcnZk YXRhKGRzaSwgY3R4KTsKKworCWN0eC0+ZGV2ID0gZGV2OworCisJZHNpLT5sYW5lcyA9IDQ7CisJ ZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4OworCWRzaS0+bW9kZV9mbGFncyA9IE1J UElfRFNJX01PREVfVklERU8gfCBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUCisJCXwgTUlQSV9E U0lfTU9ERV9WSURFT19BVVRPX1ZFUlQgfCBNSVBJX0RTSV9NT0RFX0xQTTsKKworCXJldCA9IHRj MzU4NzY0X3BhcnNlX2R0KGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwly ZXQgPSB0YzM1ODc2NF9jb25maWd1cmVfcmVndWxhdG9ycyhjdHgpOworCWlmIChyZXQgPCAwKQor CQlyZXR1cm4gcmV0OworCisJY3R4LT5icmlkZ2UuZnVuY3MgPSAmdGMzNTg3NjRfYnJpZGdlX2Z1 bmNzOworCWN0eC0+YnJpZGdlLm9mX25vZGUgPSBkZXYtPm9mX25vZGU7CisKKwlkcm1fYnJpZGdl X2FkZCgmY3R4LT5icmlkZ2UpOworCisJcmV0ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJaWYg KHJldCA8IDApIHsKKwkJZHJtX2JyaWRnZV9yZW1vdmUoJmN0eC0+YnJpZGdlKTsKKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gYXR0YWNoIGRzaVxuIik7CisJfQorCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludCB0YzM1ODc2NF9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNp KQoreworCXN0cnVjdCB0YzM1ODc2NCAqY3R4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsK KworCW1pcGlfZHNpX2RldGFjaChkc2kpOworCWRybV9icmlkZ2VfcmVtb3ZlKCZjdHgtPmJyaWRn ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg dGMzNTg3NjRfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInRvc2hpYmEsdGMzNTg3 NjQiIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGMzNTg3NjRfb2ZfbWF0 Y2gpOworCitzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciB0YzM1ODc2NF9kcml2ZXIgPSB7 CisJLnByb2JlID0gdGMzNTg3NjRfcHJvYmUsCisJLnJlbW92ZSA9IHRjMzU4NzY0X3JlbW92ZSwK KwkuZHJpdmVyID0geworCQkubmFtZSA9ICJ0YzM1ODc2NCIsCisJCS5vd25lciA9IFRISVNfTU9E VUxFLAorCQkub2ZfbWF0Y2hfdGFibGUgPSB0YzM1ODc2NF9vZl9tYXRjaCwKKwl9LAorfTsKK21v ZHVsZV9taXBpX2RzaV9kcml2ZXIodGMzNTg3NjRfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigi QW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIk1h Y2llaiBQdXJza2kgPG0ucHVyc2tpQHNhbXN1bmcuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9O KCJNSVBJLURTSSBiYXNlZCBEcml2ZXIgZm9yIFRDMzU4NzY0IERTSS9MVkRTIEJyaWRnZSIpOwor TU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotLSAKMi4xOC4wCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK