From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH v3 8/9] drm/panel: Add driver for the Toppoly TD028TTEC1 panel Date: Tue, 13 Aug 2019 19:18:52 +0200 Message-ID: <20190813171852.GD30320@ravnborg.org> References: <20190813133311.26441-1-laurent.pinchart@ideasonboard.com> <20190813133311.26441-9-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asavdk3.altibox.net (asavdk3.altibox.net [109.247.116.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 765146E20B for ; Tue, 13 Aug 2019 17:18:55 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190813133311.26441-9-laurent.pinchart@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Thierry Reding , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgTGF1cmVudC4KCk9uIFR1ZSwgQXVnIDEzLCAyMDE5IGF0IDA0OjMzOjEwUE0gKzAzMDAsIExh dXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gVGhpcyBwYW5lbCBpcyB1c2VkIG9uIHRoZSBPcGVuTW9r byBOZW8gRnJlZVJ1bm5lciBhbmQgTmVvIDE5NzMuCj4gCj4gVGhlIGNvZGUgaXMgYmFzZWQgb24g dGhlIG9tYXBkcm0tc3BlY2lmaWMgcGFuZWwtdHBvLXRkMDI4dHRlYzEgZHJpdmVyLgo+IAo+IFNp Z25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJv YXJkLmNvbT4KClRoaXMgZHJpdmVyIGhhdmUgZXZlcnl0aGluZyBpbiB0aGUgZW5hYmxlL2Rpc2Fi bGUgcGFpci4KVGhlIGRyaXZlciBzaG91bGQgdXNlIHByZXBhcmUvdW5wcmVwYXJlIGZvciB0aGUg dGhpbmdzIHRoYXQgYmVsb25ncwp0aGVyZS4KCldpdGggdGhhdCBmaXhlZDoKUmV2aWV3ZWQtYnk6 IFNhbSBSYXZuYm9yZyA8c2FtQHJhdm5ib3JnLm9yZz4KCj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSB2 MjoKPiAKPiAtIENhbGwgZHJtX3BhbmVsX3VucHJlcGFyZSgpIGluIC5yZW1vdmUoKSBoYW5kbGVy Cj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAKPiAtIE1lbnRpb24gYm9hcmRzIHVzaW5nIHRoZSBw YW5lbCBpbiBLY29uZmlnCj4gLSBSZW5hbWVkIHRkMDI4dHRlYzFfZGV2aWNlIHRvIHRkMDI4dHRl YzFfcGFuZWwKPiAtIENvbW1lbnRzIHVwZGF0ZXMKPiAtIFJlbW92ZWQgdW5uZWVkZWQgcmV0IGNo ZWNrCj4gLSBTdG9yZSB3aWR0aF9tbSBhbmQgaGVpZ2h0X21tIGluIGRybV9kaXNwbGF5X21vZGUK PiAtIFVzZSBkcm1fcGFuZWxfZGlzYWJsZSgpIGluIC5yZW1vdmUoKSBoYW5kbGVyCj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgIHwgICA4ICsKPiAg ZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBk cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHBvLXRkMDI4dHRlYzEuYyB8IDM4MiArKysrKysr KysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKykKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cG8tdGQwMjh0dGVj MS5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnIGIvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiBpbmRleCBiMDU2NDliMzExOGEuLmMyNjg5NDIw ZDJkZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gQEAgLTMyNCw2ICszMjQsMTQgQEAgY29u ZmlnIERSTV9QQU5FTF9TT05ZX0FDWDU2NUFLTQo+ICAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50 IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgU29ueSBBQ1g1NjVBS00KPiAgCSAgODAweDYwMCAz LjUiIHBhbmVsIChmb3VuZCBvbiB0aGUgTm9raWEgTjkwMCkuCj4gIAo+ICtjb25maWcgRFJNX1BB TkVMX1RQT19URDAyOFRURUMxCj4gKwl0cmlzdGF0ZSAiVG9wcG9seSAoVFBPKSBURDAyOFRURUMx IHBhbmVsIGRyaXZlciIKPiArCWRlcGVuZHMgb24gT0YgJiYgU1BJCj4gKwlkZXBlbmRzIG9uIEJB Q0tMSUdIVF9DTEFTU19ERVZJQ0UKPiArCWhlbHAKPiArCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2Fu dCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVFBPIFREMDI4VFRFQzEgNDgweDY0MAo+ICsJICAyLjgi IHBhbmVsIChmb3VuZCBvbiB0aGUgT3Blbk1va28gTmVvIEZyZWVSdW5uZXIgYW5kIE5lbyAxOTcz KS4KPiArCj4gIGNvbmZpZyBEUk1fUEFORUxfVFBPX1RQRzExMAo+ICAJdHJpc3RhdGUgIlRQTyBU UEcgODAweDQwMCBwYW5lbCIKPiAgCWRlcGVuZHMgb24gT0YgJiYgU1BJICYmIEdQSU9MSUIKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL01ha2VmaWxlCj4gaW5kZXggMjhjZjIzMzJmZDA2Li4yN2I3NzY3MzdhZDMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gQEAgLTM0LDUgKzM0LDYgQEAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9TSEFSUF9MUzA0M1QxTEUwMSkgKz0gcGFuZWwtc2hhcnAtbHMwNDN0MWxlMDEu bwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJVFJPTklYX1NUNzcwMSkgKz0gcGFuZWwtc2l0 cm9uaXgtc3Q3NzAxLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSVRST05JWF9TVDc3ODlW KSArPSBwYW5lbC1zaXRyb25peC1zdDc3ODl2Lm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9T T05ZX0FDWDU2NUFLTSkgKz0gcGFuZWwtc29ueS1hY3g1NjVha20ubwo+ICtvYmotJChDT05GSUdf RFJNX1BBTkVMX1RQT19URDAyOFRURUMxKSArPSBwYW5lbC10cG8tdGQwMjh0dGVjMS5vCj4gIG9i ai0kKENPTkZJR19EUk1fUEFORUxfVFBPX1RQRzExMCkgKz0gcGFuZWwtdHBvLXRwZzExMC5vCj4g IG9iai0kKENPTkZJR19EUk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQSkgKz0gcGFuZWwtdHJ1 bHktbnQzNTU5Ny5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10 cG8tdGQwMjh0dGVjMS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDAyOHR0 ZWMxLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZGQ2OWZh Yzk4MDhmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC10cG8tdGQwMjh0dGVjMS5jCj4gQEAgLTAsMCArMSwzODIgQEAKPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogVG9wcG9seSBURDAyOFRURUMxIFBhbmVs IERyaXZlcgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgVGV4YXMgSW5zdHJ1bWVudHMg SW5jb3Jwb3JhdGVkCj4gKyAqCj4gKyAqIEJhc2VkIG9uIHRoZSBvbWFwZHJtLXNwZWNpZmljIHBh bmVsLXRwby10ZDAyOHR0ZWMxIGRyaXZlcgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDgg Tm9raWEgQ29ycG9yYXRpb24KPiArICogQXV0aG9yOiBUb21pIFZhbGtlaW5lbiA8dG9taS52YWxr ZWluZW5AdGkuY29tPgo+ICsgKgo+ICsgKiBOZW8gMTk3MyBjb2RlIChqYnQ2azc0LmMpOgo+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNyBPcGVuTW9rbywgSW5jLgo+ICsgKiBBdXRob3I6IEhh cmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cj4gKyAqCj4gKyAqIFBvcnRlZCBhbmQg YWRhcHRlZCBmcm9tIE5lbyAxOTczIFUtQm9vdCBieToKPiArICogSC4gTmlrb2xhdXMgU2NoYWxs ZXIgPGhuc0Bnb2xkZWxpY28uY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iYWNr bGlnaHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KPiArCj4gKyNpbmNsdWRlIDxk cm0vZHJtX2Nvbm5lY3Rvci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ICsKPiArI2RlZmluZSBKQlRfQ09NTUFORAkJCTB4MDAw Cj4gKyNkZWZpbmUgSkJUX0RBVEEJCQkweDEwMAo+ICsKPiArI2RlZmluZSBKQlRfUkVHX1NMRUVQ X0lOCQkweDEwCj4gKyNkZWZpbmUgSkJUX1JFR19TTEVFUF9PVVQJCTB4MTEKPiArCj4gKyNkZWZp bmUgSkJUX1JFR19ESVNQTEFZX09GRgkJMHgyOAo+ICsjZGVmaW5lIEpCVF9SRUdfRElTUExBWV9P TgkJMHgyOQo+ICsKPiArI2RlZmluZSBKQlRfUkVHX1JHQl9GT1JNQVQJCTB4M2EKPiArI2RlZmlu ZSBKQlRfUkVHX1FVQURfUkFURQkJMHgzYgo+ICsKPiArI2RlZmluZSBKQlRfUkVHX1BPV0VSX09O X09GRgkJMHhiMAo+ICsjZGVmaW5lIEpCVF9SRUdfQk9PU1RFUl9PUAkJMHhiMQo+ICsjZGVmaW5l IEpCVF9SRUdfQk9PU1RFUl9NT0RFCQkweGIyCj4gKyNkZWZpbmUgSkJUX1JFR19CT09TVEVSX0ZS RVEJCTB4YjMKPiArI2RlZmluZSBKQlRfUkVHX09QQU1QX1NZU0NMSwkJMHhiNAo+ICsjZGVmaW5l IEpCVF9SRUdfVlNDX1ZPTFRBR0UJCTB4YjUKPiArI2RlZmluZSBKQlRfUkVHX1ZDT01fVk9MVEFH RQkJMHhiNgo+ICsjZGVmaW5lIEpCVF9SRUdfRVhUX0RJU1BMCQkweGI3Cj4gKyNkZWZpbmUgSkJU X1JFR19PVVRQVVRfQ09OVFJPTAkJMHhiOAo+ICsjZGVmaW5lIEpCVF9SRUdfRENDTEtfRENFVgkJ MHhiOQo+ICsjZGVmaW5lIEpCVF9SRUdfRElTUExBWV9NT0RFMQkJMHhiYQo+ICsjZGVmaW5lIEpC VF9SRUdfRElTUExBWV9NT0RFMgkJMHhiYgo+ICsjZGVmaW5lIEpCVF9SRUdfRElTUExBWV9NT0RF CQkweGJjCj4gKyNkZWZpbmUgSkJUX1JFR19BU1dfU0xFVwkJMHhiZAo+ICsjZGVmaW5lIEpCVF9S RUdfRFVNTVlfRElTUExBWQkJMHhiZQo+ICsjZGVmaW5lIEpCVF9SRUdfRFJJVkVfU1lTVEVNCQkw eGJmCj4gKwo+ICsjZGVmaW5lIEpCVF9SRUdfU0xFRVBfT1VUX0ZSX0EJCTB4YzAKPiArI2RlZmlu ZSBKQlRfUkVHX1NMRUVQX09VVF9GUl9CCQkweGMxCj4gKyNkZWZpbmUgSkJUX1JFR19TTEVFUF9P VVRfRlJfQwkJMHhjMgo+ICsjZGVmaW5lIEpCVF9SRUdfU0xFRVBfSU5fTENDTlRfRAkweGMzCj4g KyNkZWZpbmUgSkJUX1JFR19TTEVFUF9JTl9MQ0NOVF9FCTB4YzQKPiArI2RlZmluZSBKQlRfUkVH X1NMRUVQX0lOX0xDQ05UX0YJMHhjNQo+ICsjZGVmaW5lIEpCVF9SRUdfU0xFRVBfSU5fTENDTlRf RwkweGM2Cj4gKwo+ICsjZGVmaW5lIEpCVF9SRUdfR0FNTUExX0ZJTkVfMQkJMHhjNwo+ICsjZGVm aW5lIEpCVF9SRUdfR0FNTUExX0ZJTkVfMgkJMHhjOAo+ICsjZGVmaW5lIEpCVF9SRUdfR0FNTUEx X0lOQ0xJTkFUSU9OCTB4YzkKPiArI2RlZmluZSBKQlRfUkVHX0dBTU1BMV9CTFVFX09GRlNFVAkw eGNhCj4gKwo+ICsjZGVmaW5lIEpCVF9SRUdfQkxBTktfQ09OVFJPTAkJMHhjZgo+ICsjZGVmaW5l IEpCVF9SRUdfQkxBTktfVEhfVFYJCTB4ZDAKPiArI2RlZmluZSBKQlRfUkVHX0NLVl9PTl9PRkYJ CTB4ZDEKPiArI2RlZmluZSBKQlRfUkVHX0NLVl8xXzIJCQkweGQyCj4gKyNkZWZpbmUgSkJUX1JF R19PRVZfVElNSU5HCQkweGQzCj4gKyNkZWZpbmUgSkJUX1JFR19BU1dfVElNSU5HXzEJCTB4ZDQK PiArI2RlZmluZSBKQlRfUkVHX0FTV19USU1JTkdfMgkJMHhkNQo+ICsKPiArI2RlZmluZSBKQlRf UkVHX0hDTE9DS19WR0EJCTB4ZWMKPiArI2RlZmluZSBKQlRfUkVHX0hDTE9DS19RVkdBCQkweGVk Cj4gKwo+ICtzdHJ1Y3QgdGQwMjh0dGVjMV9wYW5lbCB7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsIHBh bmVsOwo+ICsKPiArCXN0cnVjdCBzcGlfZGV2aWNlICpzcGk7Cj4gKwlzdHJ1Y3QgYmFja2xpZ2h0 X2RldmljZSAqYmFja2xpZ2h0Owo+ICt9Owo+ICsKPiArI2RlZmluZSB0b190ZDAyOHR0ZWMxX2Rl dmljZShwKSBjb250YWluZXJfb2YocCwgc3RydWN0IHRkMDI4dHRlYzFfcGFuZWwsIHBhbmVsKQo+ ICsKPiArc3RhdGljIGludCBqYnRfcmV0X3dyaXRlXzAoc3RydWN0IHRkMDI4dHRlYzFfcGFuZWwg KmxjZCwgdTggcmVnLCBpbnQgKmVycikKPiArewo+ICsJc3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9 IGxjZC0+c3BpOwo+ICsJdTE2IHR4X2J1ZiA9IEpCVF9DT01NQU5EIHwgcmVnOwo+ICsJaW50IHJl dDsKPiArCj4gKwlpZiAoZXJyICYmICplcnIpCj4gKwkJcmV0dXJuICplcnI7Cj4gKwo+ICsJcmV0 ID0gc3BpX3dyaXRlKHNwaSwgKHU4ICopJnR4X2J1Ziwgc2l6ZW9mKHR4X2J1ZikpOwo+ICsJaWYg KHJldCA8IDApIHsKPiArCQlkZXZfZXJyKCZzcGktPmRldiwgIiVzOiBTUEkgd3JpdGUgZmFpbGVk OiAlZFxuIiwgX19mdW5jX18sIHJldCk7Cj4gKwkJaWYgKGVycikKPiArCQkJKmVyciA9IHJldDsK PiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGpidF9yZWdf d3JpdGVfMShzdHJ1Y3QgdGQwMjh0dGVjMV9wYW5lbCAqbGNkLAo+ICsJCQkgICB1OCByZWcsIHU4 IGRhdGEsIGludCAqZXJyKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpID0gbGNkLT5z cGk7Cj4gKwl1MTYgdHhfYnVmWzJdOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoZXJyICYmICpl cnIpCj4gKwkJcmV0dXJuICplcnI7Cj4gKwo+ICsJdHhfYnVmWzBdID0gSkJUX0NPTU1BTkQgfCBy ZWc7Cj4gKwl0eF9idWZbMV0gPSBKQlRfREFUQSB8IGRhdGE7Cj4gKwo+ICsJcmV0ID0gc3BpX3dy aXRlKHNwaSwgKHU4ICopdHhfYnVmLCBzaXplb2YodHhfYnVmKSk7Cj4gKwlpZiAocmV0IDwgMCkg ewo+ICsJCWRldl9lcnIoJnNwaS0+ZGV2LCAiJXM6IFNQSSB3cml0ZSBmYWlsZWQ6ICVkXG4iLCBf X2Z1bmNfXywgcmV0KTsKPiArCQlpZiAoZXJyKQo+ICsJCQkqZXJyID0gcmV0Owo+ICsJfQo+ICsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgamJ0X3JlZ193cml0ZV8yKHN0 cnVjdCB0ZDAyOHR0ZWMxX3BhbmVsICpsY2QsCj4gKwkJCSAgIHU4IHJlZywgdTE2IGRhdGEsIGlu dCAqZXJyKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpID0gbGNkLT5zcGk7Cj4gKwl1 MTYgdHhfYnVmWzNdOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoZXJyICYmICplcnIpCj4gKwkJ cmV0dXJuICplcnI7Cj4gKwo+ICsJdHhfYnVmWzBdID0gSkJUX0NPTU1BTkQgfCByZWc7Cj4gKwl0 eF9idWZbMV0gPSBKQlRfREFUQSB8IChkYXRhID4+IDgpOwo+ICsJdHhfYnVmWzJdID0gSkJUX0RB VEEgfCAoZGF0YSAmIDB4ZmYpOwo+ICsKPiArCXJldCA9IHNwaV93cml0ZShzcGksICh1OCAqKXR4 X2J1Ziwgc2l6ZW9mKHR4X2J1ZikpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKCZz cGktPmRldiwgIiVzOiBTUEkgd3JpdGUgZmFpbGVkOiAlZFxuIiwgX19mdW5jX18sIHJldCk7Cj4g KwkJaWYgKGVycikKPiArCQkJKmVyciA9IHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRkMDI4dHRlYzFfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbCkKPiArewo+ICsJc3RydWN0IHRkMDI4dHRlYzFfcGFuZWwgKmxjZCA9IHRvX3RkMDI4 dHRlYzFfZGV2aWNlKHBhbmVsKTsKPiArCj4gKwliYWNrbGlnaHRfZGlzYWJsZShsY2QtPmJhY2ts aWdodCk7Cj4gKwo+ICsJamJ0X3JldF93cml0ZV8wKGxjZCwgSkJUX1JFR19ESVNQTEFZX09GRiwg TlVMTCk7Cj4gKwlqYnRfcmVnX3dyaXRlXzIobGNkLCBKQlRfUkVHX09VVFBVVF9DT05UUk9MLCAw eDgwMDIsIE5VTEwpOwo+ICsJamJ0X3JldF93cml0ZV8wKGxjZCwgSkJUX1JFR19TTEVFUF9JTiwg TlVMTCk7Cj4gKwlqYnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX1BPV0VSX09OX09GRiwgMHgw MCwgTlVMTCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdGQwMjh0 dGVjMV9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0ZDAy OHR0ZWMxX3BhbmVsICpsY2QgPSB0b190ZDAyOHR0ZWMxX2RldmljZShwYW5lbCk7Cj4gKwl1bnNp Z25lZCBpbnQgaTsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCS8qIFRocmVlIHRpbWVzIGNvbW1h bmQgemVybyAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDM7ICsraSkgewo+ICsJCWpidF9yZXRfd3Jp dGVfMChsY2QsIDB4MDAsICZyZXQpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKPiAr CX0KPiArCj4gKwkvKiBkZWVwIHN0YW5kYnkgb3V0ICovCj4gKwlqYnRfcmVnX3dyaXRlXzEobGNk LCBKQlRfUkVHX1BPV0VSX09OX09GRiwgMHgxNywgJnJldCk7Cj4gKwo+ICsJLyogUkdCIEkvRiBv biwgUkFNIHdyaXRlIG9mZiwgUVZHQSB0aHJvdWdoLCBTSUdDT04gZW5hYmxlICovCj4gKwlqYnRf cmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX0RJU1BMQVlfTU9ERSwgMHg4MCwgJnJldCk7Cj4gKwo+ ICsJLyogUXVhZCBtb2RlIG9mZiAqLwo+ICsJamJ0X3JlZ193cml0ZV8xKGxjZCwgSkJUX1JFR19R VUFEX1JBVEUsIDB4MDAsICZyZXQpOwo+ICsKPiArCS8qIEFWREQgb24sIFhWREQgb24gKi8KPiAr CWpidF9yZWdfd3JpdGVfMShsY2QsIEpCVF9SRUdfUE9XRVJfT05fT0ZGLCAweDE2LCAmcmV0KTsK PiArCj4gKwkvKiBPdXRwdXQgY29udHJvbCAqLwo+ICsJamJ0X3JlZ193cml0ZV8yKGxjZCwgSkJU X1JFR19PVVRQVVRfQ09OVFJPTCwgMHhmZmY5LCAmcmV0KTsKPiArCj4gKwkvKiBTbGVlcCBtb2Rl IG9mZiAqLwo+ICsJamJ0X3JldF93cml0ZV8wKGxjZCwgSkJUX1JFR19TTEVFUF9PVVQsICZyZXQp Owo+ICsKPiArCS8qIGF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBsaWtlIDUwJSBncmV5ICovCj4gKwo+ ICsJLyogaW5pdGlhbGl6ZSByZWdpc3RlciBzZXQgKi8KPiArCWpidF9yZWdfd3JpdGVfMShsY2Qs IEpCVF9SRUdfRElTUExBWV9NT0RFMSwgMHgwMSwgJnJldCk7Cj4gKwlqYnRfcmVnX3dyaXRlXzEo bGNkLCBKQlRfUkVHX0RJU1BMQVlfTU9ERTIsIDB4MDAsICZyZXQpOwo+ICsJamJ0X3JlZ193cml0 ZV8xKGxjZCwgSkJUX1JFR19SR0JfRk9STUFULCAweDYwLCAmcmV0KTsKPiArCWpidF9yZWdfd3Jp dGVfMShsY2QsIEpCVF9SRUdfRFJJVkVfU1lTVEVNLCAweDEwLCAmcmV0KTsKPiArCWpidF9yZWdf d3JpdGVfMShsY2QsIEpCVF9SRUdfQk9PU1RFUl9PUCwgMHg1NiwgJnJldCk7Cj4gKwlqYnRfcmVn X3dyaXRlXzEobGNkLCBKQlRfUkVHX0JPT1NURVJfTU9ERSwgMHgzMywgJnJldCk7Cj4gKwlqYnRf cmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX0JPT1NURVJfRlJFUSwgMHgxMSwgJnJldCk7Cj4gKwlq YnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX0JPT1NURVJfRlJFUSwgMHgxMSwgJnJldCk7Cj4g KwlqYnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX09QQU1QX1NZU0NMSywgMHgwMiwgJnJldCk7 Cj4gKwlqYnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX1ZTQ19WT0xUQUdFLCAweDJiLCAmcmV0 KTsKPiArCWpidF9yZWdfd3JpdGVfMShsY2QsIEpCVF9SRUdfVkNPTV9WT0xUQUdFLCAweDQwLCAm cmV0KTsKPiArCWpidF9yZWdfd3JpdGVfMShsY2QsIEpCVF9SRUdfRVhUX0RJU1BMLCAweDAzLCAm cmV0KTsKPiArCWpidF9yZWdfd3JpdGVfMShsY2QsIEpCVF9SRUdfRENDTEtfRENFViwgMHgwNCwg JnJldCk7Cj4gKwkvKgo+ICsJICogZGVmYXVsdCBvZiAweDAyIGluIEpCVF9SRUdfQVNXX1NMRVcg cmVzcG9uc2libGUgZm9yIDcySHogcmVxdWlyZW1lbnQKPiArCSAqIHRvIGF2b2lkIHJlZCAvIGJs dWUgZmxpY2tlcgo+ICsJICovCj4gKwlqYnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX0FTV19T TEVXLCAweDA0LCAmcmV0KTsKPiArCWpidF9yZWdfd3JpdGVfMShsY2QsIEpCVF9SRUdfRFVNTVlf RElTUExBWSwgMHgwMCwgJnJldCk7Cj4gKwo+ICsJamJ0X3JlZ193cml0ZV8xKGxjZCwgSkJUX1JF R19TTEVFUF9PVVRfRlJfQSwgMHgxMSwgJnJldCk7Cj4gKwlqYnRfcmVnX3dyaXRlXzEobGNkLCBK QlRfUkVHX1NMRUVQX09VVF9GUl9CLCAweDExLCAmcmV0KTsKPiArCWpidF9yZWdfd3JpdGVfMShs Y2QsIEpCVF9SRUdfU0xFRVBfT1VUX0ZSX0MsIDB4MTEsICZyZXQpOwo+ICsJamJ0X3JlZ193cml0 ZV8yKGxjZCwgSkJUX1JFR19TTEVFUF9JTl9MQ0NOVF9ELCAweDIwNDAsICZyZXQpOwo+ICsJamJ0 X3JlZ193cml0ZV8yKGxjZCwgSkJUX1JFR19TTEVFUF9JTl9MQ0NOVF9FLCAweDYwYzAsICZyZXQp Owo+ICsJamJ0X3JlZ193cml0ZV8yKGxjZCwgSkJUX1JFR19TTEVFUF9JTl9MQ0NOVF9GLCAweDEw MjAsICZyZXQpOwo+ICsJamJ0X3JlZ193cml0ZV8yKGxjZCwgSkJUX1JFR19TTEVFUF9JTl9MQ0NO VF9HLCAweDYwYzAsICZyZXQpOwo+ICsKPiArCWpidF9yZWdfd3JpdGVfMihsY2QsIEpCVF9SRUdf R0FNTUExX0ZJTkVfMSwgMHg1NTMzLCAmcmV0KTsKPiArCWpidF9yZWdfd3JpdGVfMShsY2QsIEpC VF9SRUdfR0FNTUExX0ZJTkVfMiwgMHgwMCwgJnJldCk7Cj4gKwlqYnRfcmVnX3dyaXRlXzEobGNk LCBKQlRfUkVHX0dBTU1BMV9JTkNMSU5BVElPTiwgMHgwMCwgJnJldCk7Cj4gKwlqYnRfcmVnX3dy aXRlXzEobGNkLCBKQlRfUkVHX0dBTU1BMV9CTFVFX09GRlNFVCwgMHgwMCwgJnJldCk7Cj4gKwo+ ICsJamJ0X3JlZ193cml0ZV8yKGxjZCwgSkJUX1JFR19IQ0xPQ0tfVkdBLCAweDFmMCwgJnJldCk7 Cj4gKwlqYnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX0JMQU5LX0NPTlRST0wsIDB4MDIsICZy ZXQpOwo+ICsJamJ0X3JlZ193cml0ZV8yKGxjZCwgSkJUX1JFR19CTEFOS19USF9UViwgMHgwODA0 LCAmcmV0KTsKPiArCj4gKwlqYnRfcmVnX3dyaXRlXzEobGNkLCBKQlRfUkVHX0NLVl9PTl9PRkYs IDB4MDEsICZyZXQpOwo+ICsJamJ0X3JlZ193cml0ZV8yKGxjZCwgSkJUX1JFR19DS1ZfMV8yLCAw eDAwMDAsICZyZXQpOwo+ICsKPiArCWpidF9yZWdfd3JpdGVfMihsY2QsIEpCVF9SRUdfT0VWX1RJ TUlORywgMHgwZDBlLCAmcmV0KTsKPiArCWpidF9yZWdfd3JpdGVfMihsY2QsIEpCVF9SRUdfQVNX X1RJTUlOR18xLCAweDExYTQsICZyZXQpOwo+ICsJamJ0X3JlZ193cml0ZV8xKGxjZCwgSkJUX1JF R19BU1dfVElNSU5HXzIsIDB4MGUsICZyZXQpOwo+ICsKPiArCWpidF9yZXRfd3JpdGVfMChsY2Qs IEpCVF9SRUdfRElTUExBWV9PTiwgJnJldCk7Cj4gKwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4g cmV0Owo+ICsKPiArCWJhY2tsaWdodF9lbmFibGUobGNkLT5iYWNrbGlnaHQpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg dGQwMjh0dGVjMV9tb2RlID0gewo+ICsJLmNsb2NrID0gMjIxNTMsCj4gKwkuaGRpc3BsYXkgPSA0 ODAsCj4gKwkuaHN5bmNfc3RhcnQgPSA0ODAgKyAyNCwKPiArCS5oc3luY19lbmQgPSA0ODAgKyAy NCArIDgsCj4gKwkuaHRvdGFsID0gNDgwICsgMjQgKyA4ICsgOCwKPiArCS52ZGlzcGxheSA9IDY0 MCwKPiArCS52c3luY19zdGFydCA9IDY0MCArIDQsCj4gKwkudnN5bmNfZW5kID0gNjQwICsgNCAr IDIsCj4gKwkudnRvdGFsID0gNjQwICsgNCArIDIgKyAyLAo+ICsJLnZyZWZyZXNoID0gNjYsCj4g KwkudHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQs Cj4gKwkuZmxhZ3MgPSBEUk1fTU9ERV9GTEFHX05IU1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5D LAo+ICsJLndpZHRoX21tID0gNDMsCj4gKwkuaGVpZ2h0X21tID0gNTgsCj4gK307Cj4gKwo+ICtz dGF0aWMgaW50IHRkMDI4dHRlYzFfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3Rv cjsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ICsKPiArCW1vZGUgPSBkcm1f bW9kZV9kdXBsaWNhdGUocGFuZWwtPmRybSwgJnRkMDI4dHRlYzFfbW9kZSk7Cj4gKwlpZiAoIW1v ZGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZHJtX21vZGVfc2V0X25hbWUobW9kZSk7 Cj4gKwlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7Cj4gKwo+ICsJY29ubmVj dG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSB0ZDAyOHR0ZWMxX21vZGUud2lkdGhfbW07Cj4g Kwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSB0ZDAyOHR0ZWMxX21vZGUuaGVp Z2h0X21tOwo+ICsJLyoKPiArCSAqIEZJWE1FOiBBY2NvcmRpbmcgdG8gdGhlIGRhdGFzaGVldCBz eW5jIHNpZ25hbHMgYXJlIHNhbXBsZWQgb24gdGhlCj4gKwkgKiByaXNpbmcgZWRnZSBvZiB0aGUg Y2xvY2ssIGJ1dCB0aGUgY29kZSBydW5uaW5nIG9uIHRoZSBPcGVuTW9rbyBOZW8KPiArCSAqIEZy ZWVSdW5uZXIgYW5kIE5lbyAxOTczIGluZGljYXRlcyBzYW1wbGluZyBvbiB0aGUgZmFsbGluZyBl ZGdlLiBUaGlzCj4gKwkgKiBzaG91bGQgYmUgdGVzdGVkIG9uIGEgcmVhbCBkZXZpY2UuCj4gKwkg Ki8KPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJ1c19mbGFncyA9IERSTV9CVVNfRkxBR19E RV9ISUdICj4gKwkJCQkJICB8IERSTV9CVVNfRkxBR19TWU5DX1NBTVBMRV9ORUdFREdFCj4gKwkJ CQkJICB8IERSTV9CVVNfRkxBR19QSVhEQVRBX1NBTVBMRV9QT1NFREdFOwo+ICsKPiArCXJldHVy biAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyB0ZDAy OHR0ZWMxX2Z1bmNzID0gewo+ICsJLmRpc2FibGUgPSB0ZDAyOHR0ZWMxX2Rpc2FibGUsCj4gKwku ZW5hYmxlID0gdGQwMjh0dGVjMV9lbmFibGUsCj4gKwkuZ2V0X21vZGVzID0gdGQwMjh0dGVjMV9n ZXRfbW9kZXMsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHRkMDI4dHRlYzFfcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKPiArewo+ICsJc3RydWN0IHRkMDI4dHRlYzFfcGFuZWwgKmxjZDsK PiArCWludCByZXQ7Cj4gKwo+ICsJbGNkID0gZGV2bV9remFsbG9jKCZzcGktPmRldiwgc2l6ZW9m KCpsY2QpLCBHRlBfS0VSTkVMKTsKPiArCWlmIChsY2QgPT0gTlVMTCkKPiArCQlyZXR1cm4gLUVO T01FTTsKPiArCj4gKwlzcGlfc2V0X2RydmRhdGEoc3BpLCBsY2QpOwo+ICsJbGNkLT5zcGkgPSBz cGk7Cj4gKwo+ICsJbGNkLT5iYWNrbGlnaHQgPSBkZXZtX29mX2ZpbmRfYmFja2xpZ2h0KCZzcGkt PmRldik7Cj4gKwlpZiAoSVNfRVJSKGxjZC0+YmFja2xpZ2h0KSkKPiArCQlyZXR1cm4gUFRSX0VS UihsY2QtPmJhY2tsaWdodCk7Cj4gKwo+ICsJc3BpLT5tb2RlID0gU1BJX01PREVfMzsKPiArCXNw aS0+Yml0c19wZXJfd29yZCA9IDk7Cj4gKwo+ICsJcmV0ID0gc3BpX3NldHVwKHNwaSk7Cj4gKwlp ZiAocmV0IDwgMCkgewo+ICsJCWRldl9lcnIoJnNwaS0+ZGV2LCAiZmFpbGVkIHRvIHNldHVwIFNQ STogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlkcm1fcGFuZWxf aW5pdCgmbGNkLT5wYW5lbCk7Cj4gKwlsY2QtPnBhbmVsLmRldiA9ICZsY2QtPnNwaS0+ZGV2Owo+ ICsJbGNkLT5wYW5lbC5mdW5jcyA9ICZ0ZDAyOHR0ZWMxX2Z1bmNzOwo+ICsKPiArCXJldHVybiBk cm1fcGFuZWxfYWRkKCZsY2QtPnBhbmVsKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZDAyOHR0 ZWMxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ICt7Cj4gKwlzdHJ1Y3QgdGQwMjh0 dGVjMV9wYW5lbCAqbGNkID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7Cj4gKwo+ICsJZHJtX3BhbmVs X3JlbW92ZSgmbGNkLT5wYW5lbCk7Cj4gKwlkcm1fcGFuZWxfZGlzYWJsZSgmbGNkLT5wYW5lbCk7 Cj4gKwlkcm1fcGFuZWxfdW5wcmVwYXJlKCZsY2QtPnBhbmVsKTsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGQwMjh0dGVjMV9v Zl9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJ0cG8sdGQwMjh0dGVjMSIsIH0sCj4g KwkvKiBEVCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqLwo+ICsJeyAuY29tcGF0aWJsZSA9ICJ0 b3Bwb2x5LHRkMDI4dHRlYzEiLCB9LAo+ICsJeyAvKiBzZW50aW5lbCAqLyB9LAo+ICt9Owo+ICsK PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGQwMjh0dGVjMV9vZl9tYXRjaCk7Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgdGQwMjh0dGVjMV9pZHNbXSA9IHsKPiAr CXsgInRwbyx0ZDAyOHR0ZWMxIiwgMH0sCj4gKwl7ICJ0b3Bwb2x5LHRkMDI4dHRlYzEiLCAwIH0s Cj4gKwl7IC8qIHNlbnRpbmVsICovIH0KPiArfTsKPiArCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUo c3BpLCB0ZDAyOHR0ZWMxX2lkcyk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgdGQw Mjh0dGVjMV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJCT0gdGQwMjh0dGVjMV9wcm9iZSwKPiArCS5y ZW1vdmUJCT0gdGQwMjh0dGVjMV9yZW1vdmUsCj4gKwkuaWRfdGFibGUJPSB0ZDAyOHR0ZWMxX2lk cywKPiArCS5kcml2ZXIJCT0gewo+ICsJCS5uYW1lICAgPSAicGFuZWwtdHBvLXRkMDI4dHRlYzEi LAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHRkMDI4dHRlYzFfb2ZfbWF0Y2gsCj4gKwl9LAo+ICt9 Owo+ICsKPiArbW9kdWxlX3NwaV9kcml2ZXIodGQwMjh0dGVjMV9kcml2ZXIpOwo+ICsKPiArTU9E VUxFX0FVVEhPUigiSC4gTmlrb2xhdXMgU2NoYWxsZXIgPGhuc0Bnb2xkZWxpY28uY29tPiIpOwo+ ICtNT0RVTEVfREVTQ1JJUFRJT04oIlRvcHBvbHkgVEQwMjhUVEVDMSBwYW5lbCBkcml2ZXIiKTsK PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+IC0tIAo+IFJlZ2FyZHMsCj4gCj4gTGF1cmVudCBQ aW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=