Received: by 10.223.185.116 with SMTP id b49csp524079wrg; Fri, 23 Feb 2018 02:34:46 -0800 (PST) X-Google-Smtp-Source: AH8x224jvVAFavvdG/U5Q+jRvrIWWOUcN1UJqLG+8U9qpkpm4KXu23d9VBryCrRnUjA0fcapBbDn X-Received: by 10.101.73.197 with SMTP id t5mr1096972pgs.426.1519382085961; Fri, 23 Feb 2018 02:34:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519382085; cv=none; d=google.com; s=arc-20160816; b=w9gvAfkltRCmCgWx0IlAMTHzKGTjjNbd/D00MW2NTTp1v0nXkygl4lrrGc74YLOflB o8AXkvtOhigqmdOoIBu6Cmud/4E/DOt2p5EKBKn/z3nMVnXxdsL8yURnfNokirj42mPq vsB3p/qTox2XspHGmVuWZMEaMA/WAdZvXDLzYcad3Zx+4gDs8PiIUxn+kN3DsQqkHRUr /qp1sVWCAgsrknmKiKbCwI4bucGyEBeYBMzmn6N5UMVliZ9OWYvj9Y7OPG0hN0UF1Ii9 FzUon5WSE7gpTBbPbH7Sdofe4ZNqaqx5EwdrBvEP2ng9o3MjFkMBIjowdD+z6A9emDRX GXyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:arc-authentication-results; bh=EWiMADcb+ZflDdvRLE/GEHE+0uSAUwHuh4oyg8IZees=; b=urmsODvwnwPswaJaPqSWT/Z+QqazFOAe/HOBrU/dEt0ltzW6qtjdrLXkTT97kG0bQt HPXFAKu3JxE+kf1G8g0OOqGtG3G/Cf2hEKscNMwfw6FIQDC5K2Vd0yVxk0zGd+IgtULj L3QWL0GDI/Q98bzsZT9MiINoD2B/yl7TxA2/pfXRH8pHwWWEEUueB79WVtgFmxsRIuUj 6ZI+UoVlo/021pK6wdVtC2oVKG7d706WHgWuRhLuCnike78ShDAyV8sU3i7ab80Pl032 WT7O77oIVHp3oIn/9O4uxu832GH8mOeIBkTgnKwc/JYQN2MMEBTfFPWfPQ5j7N2nKLou cqHw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u66si1631801pfb.4.2018.02.23.02.34.31; Fri, 23 Feb 2018 02:34:45 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751497AbeBWKdR (ORCPT + 99 others); Fri, 23 Feb 2018 05:33:17 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:42614 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750798AbeBWKdO (ORCPT ); Fri, 23 Feb 2018 05:33:14 -0500 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w1NATE3L022205; Fri, 23 Feb 2018 11:32:56 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2g9bpk9h3f-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 23 Feb 2018 11:32:56 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id B387D38; Fri, 23 Feb 2018 10:32:55 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag6node2.st.com [10.75.127.17]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 6A9871588; Fri, 23 Feb 2018 10:32:55 +0000 (GMT) Received: from SFHDAG6NODE3.st.com (10.75.127.18) by SFHDAG6NODE2.st.com (10.75.127.17) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 23 Feb 2018 11:32:54 +0100 Received: from SFHDAG6NODE3.st.com ([fe80::d04:5337:ab17:b6f6]) by SFHDAG6NODE3.st.com ([fe80::d04:5337:ab17:b6f6%20]) with mapi id 15.00.1347.000; Fri, 23 Feb 2018 11:32:54 +0100 From: Philippe CORNU To: Yannick FERTRE , Thierry Reding , David Airlie , Rob Herring , Mark Rutland , "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: Andrzej Hajda , Benjamin Gaignard , Vincent ABRIOU , Alexandre TORGUE Subject: Re: [PATCH v1 2/2] drm/panel: Add support for Raydium rm68200 panel driver Thread-Topic: [PATCH v1 2/2] drm/panel: Add support for Raydium rm68200 panel driver Thread-Index: AQHToOlo+Z2legm/SkeP6PbfDW4c/aOxrtYAgAAh4gA= Date: Fri, 23 Feb 2018 10:32:54 +0000 Message-ID: References: <20180208143026.23009-1-philippe.cornu@st.com> <20180208143026.23009-3-philippe.cornu@st.com> In-Reply-To: Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.50] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-23_03:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgVGhpZXJyeSAmIERhdmlkLA0KDQpEbyB5b3UgaGF2ZSBhbnkgY29tbWVudHMgb24gdGhpcyBu ZXcgNzIwcCBwYW5lbCBwYXRjaD8NCg0KTm90ZTogSSBwbGFuIHRvIGFkZCAyIG5ldyBwYXRjaHMg b24gdG9wIG9uIHRoaXMgcGF0Y2ggaW4gdGhlIGZ1dHVyZSANCmxpbmtlZCB0byB0aGUgcmVjZW50 IGJhY2tsaWdodCB1cGRhdGVzIChvZl9maW5kX2JhY2tsaWdodCgpICYgDQpiYWNrbGlnaHRfZW5h YmxlL2Rpc2FibGUgaGVscGVycykuDQoNClRoYW5rIHlvdSwNClBoaWxpcHBlIDotKQ0KDQoNCk9u IDAyLzIzLzIwMTggMDk6MzEgQU0sIFlhbm5pY2sgRkVSVFJFIHdyb3RlOg0KPiBSZXZpZXdlZC1i eTogWWFubmljayBGZXJ0csOpIDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+DQo+IA0KPiANCj4gT24g MDIvMDgvMjAxOCAwMzozMCBQTSwgUGhpbGlwcGUgQ29ybnUgd3JvdGU6DQo+PiBUaGlzIHBhdGNo IGFkZHMgUmF5ZGl1bSBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uIHJtNjgyMDANCj4+IDUuNSIg NzIweDEyODAgVEZUIExDRCBwYW5lbCBkcml2ZXIgKE1JUEktRFNJIHZpZGVvIG1vZGUpLg0KPj4N Cj4+IFNpZ25lZC1vZmYtYnk6IFBoaWxpcHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+ DQo+PiAtLS0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAg ICAgICB8ICAgOCArDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAg ICAgICAgICAgfCAgIDEgKw0KPj4gICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJheWRp dW0tcm02ODIwMC5jIHwgNDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAgICAzIGZp bGVzIGNoYW5nZWQsIDQ3MyBpbnNlcnRpb25zKCspDQo+PiAgICBjcmVhdGUgbW9kZSAxMDA3NTUg ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJheWRpdW0tcm02ODIwMC5jDQo+Pg0KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL0tjb25maWcNCj4+IGluZGV4IDk4ODA0OGViY2MyMi4uMDhkOTlkZDQ2NzY1IDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcNCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnDQo+PiBAQCAtMTA4LDYgKzEwOCwxNCBAQCBjb25maWcg RFJNX1BBTkVMX1JBU1BCRVJSWVBJX1RPVUNIU0NSRUVODQo+PiAgICAJICBQaSA3IiBUb3VjaHNj cmVlbi4gIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsDQo+PiAgICAJICBjaG9v c2UgTSBoZXJlLg0KPj4gICAgDQo+PiArY29uZmlnIERSTV9QQU5FTF9SQVlESVVNX1JNNjgyMDAN Cj4+ICsJdHJpc3RhdGUgIlJheWRpdW0gcm02ODIwMCA3MjB4MTI4MCBkc2kgMmRsIHZpZGVvIG1v ZGUgcGFuZWwiDQo+PiArCWRlcGVuZHMgb24gT0YNCj4+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9E U0kNCj4+ICsJaGVscA0KPj4gKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1 cHBvcnQgZm9yIFJheWRpdW0gcm02ODIwMA0KPj4gKwkgIDcyMHgxMjgwIGRzaSAyZGwgdmlkZW8g bW9kZSBwYW5lbA0KPj4gKw0KPj4gICAgY29uZmlnIERSTV9QQU5FTF9TQU1TVU5HX1M2RTNIQTIN Cj4+ICAgIAl0cmlzdGF0ZSAiU2Ftc3VuZyBTNkUzSEEyIERTSSB2aWRlbyBtb2RlIHBhbmVsIg0K Pj4gICAgCWRlcGVuZHMgb24gT0YNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUNCj4+IGluZGV4IDNk MmE4OGQwZTk2NS4uZjI2ZWZjMTFkNzQ2IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUN Cj4+IEBAIC05LDYgKzksNyBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xHX0xHNDU3MykgKz0g cGFuZWwtbGctbGc0NTczLm8NCj4+ICAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfT1JJU0VURUNI X09UTTgwMDlBKSArPSBwYW5lbC1vcmlzZXRlY2gtb3RtODAwOWEubw0KPj4gICAgb2JqLSQoQ09O RklHX0RSTV9QQU5FTF9QQU5BU09OSUNfVlZYMTBGMDM0TjAwKSArPSBwYW5lbC1wYW5hc29uaWMt dnZ4MTBmMDM0bjAwLm8NCj4+ICAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElf VE9VQ0hTQ1JFRU4pICs9IHBhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLm8NCj4+ICtvYmot JChDT05GSUdfRFJNX1BBTkVMX1JBWURJVU1fUk02ODIwMCkgKz0gcGFuZWwtcmF5ZGl1bS1ybTY4 MjAwLm8NCj4+ICAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19MRDkwNDApICs9IHBh bmVsLXNhbXN1bmctbGQ5MDQwLm8NCj4+ICAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VO R19TNkUzSEEyKSArPSBwYW5lbC1zYW1zdW5nLXM2ZTNoYTIubw0KPj4gICAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzSjBYMDMpICs9IHBhbmVsLXNhbXN1bmctczZlNjNqMHgw My5vDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJheWRpdW0t cm02ODIwMC5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJheWRpdW0tcm02ODIwMC5j DQo+PiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mM2UxNTg3 M2QwNWENCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9w YW5lbC1yYXlkaXVtLXJtNjgyMDAuYw0KPj4gQEAgLTAsMCArMSw0NjQgQEANCj4+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gKy8qDQo+PiArICogQ29weXJpZ2h0IChD KSBTVE1pY3JvZWxlY3Ryb25pY3MgU0EgMjAxNw0KPj4gKyAqDQo+PiArICogQXV0aG9yczogUGhp bGlwcGUgQ29ybnUgPHBoaWxpcHBlLmNvcm51QHN0LmNvbT4NCj4+ICsgKiAgICAgICAgICBZYW5u aWNrIEZlcnRyZSA8eWFubmljay5mZXJ0cmVAc3QuY29tPg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNp bmNsdWRlIDxkcm0vZHJtUC5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+DQo+ PiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvYmFja2xp Z2h0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4NCj4+ICsjaW5jbHVk ZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+DQo+PiArI2luY2x1ZGUgPHZpZGVvL21pcGlf ZGlzcGxheS5oPg0KPj4gKw0KPj4gKyNkZWZpbmUgRFJWX05BTUUgInJheWRpdW1fcm02ODIwMCIN Cj4+ICsNCj4+ICsvKioqIE1hbnVmYWN0dXJlciBDb21tYW5kIFNldCAqKiovDQo+PiArI2RlZmlu ZSBNQ1NfQ01EX01PREVfU1cJMHhGRSAvKiBDTUQgTW9kZSBTd2l0Y2ggKi8NCj4+ICsjZGVmaW5l IE1DU19DTUQxX1VDUwkweDAwIC8qIFVzZXIgQ29tbWFuZCBTZXQgKFVDUyA9IENNRDEpICovDQo+ PiArI2RlZmluZSBNQ1NfQ01EMl9QMAkweDAxIC8qIE1hbnVmYWN0dXJlIENvbW1hbmQgU2V0IFBh Z2UwIChDTUQyIFAwKSAqLw0KPj4gKyNkZWZpbmUgTUNTX0NNRDJfUDEJMHgwMiAvKiBNYW51ZmFj dHVyZSBDb21tYW5kIFNldCBQYWdlMSAoQ01EMiBQMSkgKi8NCj4+ICsjZGVmaW5lIE1DU19DTUQy X1AyCTB4MDMgLyogTWFudWZhY3R1cmUgQ29tbWFuZCBTZXQgUGFnZTIgKENNRDIgUDIpICovDQo+ PiArI2RlZmluZSBNQ1NfQ01EMl9QMwkweDA0IC8qIE1hbnVmYWN0dXJlIENvbW1hbmQgU2V0IFBh Z2UzIChDTUQyIFAzKSAqLw0KPj4gKw0KPj4gKy8qIENNRDIgUDAgY29tbWFuZHMgKERpc3BsYXkg T3B0aW9ucyBhbmQgUG93ZXIpICovDQo+PiArI2RlZmluZSBNQ1NfU1RCQ1RSCTB4MTIgLyogVEUx IE91dHB1dCBTZXR0aW5nIFppZy1aYWcgQ29ubmVjdGlvbiAqLw0KPj4gKyNkZWZpbmUgTUNTX1NH T1BDVFIJMHgxNiAvKiBTb3VyY2UgQmlhcyBDdXJyZW50ICovDQo+PiArI2RlZmluZSBNQ1NfU0RD VFIJMHgxQSAvKiBTb3VyY2UgT3V0cHV0IERlbGF5IFRpbWUgKi8NCj4+ICsjZGVmaW5lIE1DU19J TlZDVFIJMHgxQiAvKiBJbnZlcnNpb24gVHlwZSAqLw0KPj4gKyNkZWZpbmUgTUNTX0VYVF9QV1Jf SUMJMHgyNCAvKiBFeHRlcm5hbCBQV1IgSUMgQ29udHJvbCAqLw0KPj4gKyNkZWZpbmUgTUNTX1NF VEFWREQJMHgyNyAvKiBQRk0gQ29udHJvbCBmb3IgQVZERCBPdXRwdXQgKi8NCj4+ICsjZGVmaW5l IE1DU19TRVRBVkVFCTB4MjkgLyogUEZNIENvbnRyb2wgZm9yIEFWRUUgT3V0cHV0ICovDQo+PiAr I2RlZmluZSBNQ1NfQlQyQ1RSCTB4MkIgLyogRERWREwgQ2hhcmdlIFB1bXAgQ29udHJvbCAqLw0K Pj4gKyNkZWZpbmUgTUNTX0JUM0NUUgkweDJGIC8qIFZHSCBDaGFyZ2UgUHVtcCBDb250cm9sICov DQo+PiArI2RlZmluZSBNQ1NfQlQ0Q1RSCTB4MzQgLyogVkdMIENoYXJnZSBQdW1wIENvbnRyb2wg Ki8NCj4+ICsjZGVmaW5lIE1DU19WQ01DVFIJMHg0NiAvKiBWQ09NIE91dHB1dCBMZXZlbCBDb250 cm9sICovDQo+PiArI2RlZmluZSBNQ1NfU0VUVkdOCTB4NTIgLyogVkcgTS9TIE4gQ29udHJvbCAq Lw0KPj4gKyNkZWZpbmUgTUNTX1NFVFZHUAkweDU0IC8qIFZHIE0vUyBQIENvbnRyb2wgKi8NCj4+ ICsjZGVmaW5lIE1DU19TV19DVFJMCTB4NUYgLyogSW50ZXJmYWNlIENvbnRyb2wgZm9yIFBGTSBh bmQgTUlQSSAqLw0KPj4gKw0KPj4gKy8qIENNRDIgUDIgY29tbWFuZHMgKEdPQSBUaW1pbmcgQ29u dHJvbCkgLSBubyBkZXNjcmlwdGlvbiBpbiBkYXRhc2hlZXQgKi8NCj4+ICsjZGVmaW5lIEdPQV9W U1RWMQkweDAwDQo+PiArI2RlZmluZSBHT0FfVlNUVjIJMHgwNw0KPj4gKyNkZWZpbmUgR09BX1ZD TEsxCTB4MEUNCj4+ICsjZGVmaW5lIEdPQV9WQ0xLMgkweDE3DQo+PiArI2RlZmluZSBHT0FfVkNM S19PUFQxCTB4MjANCj4+ICsjZGVmaW5lIEdPQV9CSUNMSzEJMHgyQQ0KPj4gKyNkZWZpbmUgR09B X0JJQ0xLMgkweDM3DQo+PiArI2RlZmluZSBHT0FfQklDTEszCTB4NDQNCj4+ICsjZGVmaW5lIEdP QV9CSUNMSzQJMHg0Rg0KPj4gKyNkZWZpbmUgR09BX0JJQ0xLX09QVDEJMHg1Qg0KPj4gKyNkZWZp bmUgR09BX0JJQ0xLX09QVDIJMHg2MA0KPj4gKyNkZWZpbmUgTUNTX0dPQV9HUE8xCTB4NkQNCj4+ ICsjZGVmaW5lIE1DU19HT0FfR1BPMgkweDcxDQo+PiArI2RlZmluZSBNQ1NfR09BX0VRCTB4NzQN Cj4+ICsjZGVmaW5lIE1DU19HT0FfQ0xLX0dBTExPTiAweDdDDQo+PiArI2RlZmluZSBNQ1NfR09B X0ZTX1NFTDAJMHg3RQ0KPj4gKyNkZWZpbmUgTUNTX0dPQV9GU19TRUwxCTB4ODcNCj4+ICsjZGVm aW5lIE1DU19HT0FfRlNfU0VMMgkweDkxDQo+PiArI2RlZmluZSBNQ1NfR09BX0ZTX1NFTDMJMHg5 Qg0KPj4gKyNkZWZpbmUgTUNTX0dPQV9CU19TRUwwCTB4QUMNCj4+ICsjZGVmaW5lIE1DU19HT0Ff QlNfU0VMMQkweEI1DQo+PiArI2RlZmluZSBNQ1NfR09BX0JTX1NFTDIJMHhCRg0KPj4gKyNkZWZp bmUgTUNTX0dPQV9CU19TRUwzCTB4QzkNCj4+ICsjZGVmaW5lIE1DU19HT0FfQlNfU0VMNAkweEQz DQo+PiArDQo+PiArLyogQ01EMiBQMyBjb21tYW5kcyAoR2FtbWEpICovDQo+PiArI2RlZmluZSBN Q1NfR0FNTUFfVlAJMHg2MCAvKiBHYW1tYSBWUDF+VlAxNiAqLw0KPj4gKyNkZWZpbmUgTUNTX0dB TU1BX1ZOCTB4NzAgLyogR2FtbWEgVk4xflZOMTYgKi8NCj4+ICsNCj4+ICtzdHJ1Y3Qgcm02ODIw MCB7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4+ICsJc3RydWN0IGRybV9wYW5lbCBwYW5l bDsNCj4+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsNCj4+ICsJc3RydWN0IHJlZ3Vs YXRvciAqc3VwcGx5Ow0KPj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2Ow0KPj4g Kwlib29sIHByZXBhcmVkOw0KPj4gKwlib29sIGVuYWJsZWQ7DQo+PiArfTsNCj4+ICsNCj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZGVmYXVsdF9tb2RlID0gew0KPj4g KwkuY2xvY2sgPSA1MjU4MiwNCj4+ICsJLmhkaXNwbGF5ID0gNzIwLA0KPj4gKwkuaHN5bmNfc3Rh cnQgPSA3MjAgKyAzOCwNCj4+ICsJLmhzeW5jX2VuZCA9IDcyMCArIDM4ICsgOCwNCj4+ICsJLmh0 b3RhbCA9IDcyMCArIDM4ICsgOCArIDM4LA0KPj4gKwkudmRpc3BsYXkgPSAxMjgwLA0KPj4gKwku dnN5bmNfc3RhcnQgPSAxMjgwICsgMTIsDQo+PiArCS52c3luY19lbmQgPSAxMjgwICsgMTIgKyA0 LA0KPj4gKwkudnRvdGFsID0gMTI4MCArIDEyICsgNCArIDEyLA0KPj4gKwkudnJlZnJlc2ggPSA1 MCwNCj4+ICsJLmZsYWdzID0gMCwNCj4+ICsJLndpZHRoX21tID0gNjgsDQo+PiArCS5oZWlnaHRf bW0gPSAxMjIsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBybTY4MjAw ICpwYW5lbF90b19ybTY4MjAwKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQ0KPj4gK3sNCj4+ICsJ cmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHJtNjgyMDAsIHBhbmVsKTsNCj4+ICt9 DQo+PiArDQo+PiArc3RhdGljIHZvaWQgcm02ODIwMF9kY3Nfd3JpdGVfYnVmKHN0cnVjdCBybTY4 MjAwICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsDQo+PiArCQkJCSAgc2l6ZV90IGxlbikNCj4+ICt7 DQo+PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShj dHgtPmRldik7DQo+PiArDQo+PiArCWlmIChtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaSwg ZGF0YSwgbGVuKSA8IDApDQo+PiArCQlEUk1fV0FSTigibWlwaSBkc2kgZGNzIHdyaXRlIGJ1ZmZl ciBmYWlsZWRcbiIpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBybTY4MjAwX2Rjc193 cml0ZV9jbWQoc3RydWN0IHJtNjgyMDAgKmN0eCwgdTggY21kLCB1OCB2YWx1ZSkNCj4+ICt7DQo+ PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgt PmRldik7DQo+PiArDQo+PiArCWlmIChtaXBpX2RzaV9kY3Nfd3JpdGUoZHNpLCBjbWQsICZ2YWx1 ZSwgMSkgPCAwKQ0KPj4gKwkJRFJNX1dBUk4oIm1pcGkgZHNpIGRjcyB3cml0ZSBmYWlsZWRcbiIp Ow0KPj4gK30NCj4+ICsNCj4+ICsjZGVmaW5lIGRjc193cml0ZV9zZXEoY3R4LCBzZXEuLi4pCQkJ CVwNCj4+ICsoewkJCQkJCQkJXA0KPj4gKwlzdGF0aWMgY29uc3QgdTggZFtdID0geyBzZXEgfTsJ CQkJXA0KPj4gKwlybTY4MjAwX2Rjc193cml0ZV9idWYoY3R4LCBkLCBBUlJBWV9TSVpFKGQpKTsJ CVwNCj4+ICt9KQ0KPj4gKw0KPj4gKy8qDQo+PiArICogVGhpcyBwYW5lbCBpcyBub3QgYWJsZSB0 byBhdXRvLWluY3JlbWVudCBhbGwgY21kIGFkZHJlc3NlcyBzbyBmb3Igc29tZSBvZg0KPj4gKyAq IHRoZW0sIHdlIG5lZWQgdG8gc2VuZCB0aGVtIG9uZSBieSBvbmUuLi4NCj4+ICsgKi8NCj4+ICsj ZGVmaW5lIGRjc193cml0ZV9jbWRfc2VxKGN0eCwgY21kLCBzZXEuLi4pCQkJXA0KPj4gKyh7CQkJ CQkJCQlcDQo+PiArCXN0YXRpYyBjb25zdCB1OCBkW10gPSB7IHNlcSB9OwkJCQlcDQo+PiArCXN0 YXRpYyBpbnQgaTsJCQkJCQlcDQo+PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGQpIDsg aSsrKQkJCVwNCj4+ICsJCXJtNjgyMDBfZGNzX3dyaXRlX2NtZChjdHgsIGNtZCArIGksIGRbaV0p OwlcDQo+PiArfSkNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBybTY4MjAwX2luaXRfc2VxdWVuY2Uo c3RydWN0IHJtNjgyMDAgKmN0eCkNCj4+ICt7DQo+PiArCS8qIEVudGVyIENNRDIgd2l0aCBwYWdl IDAgKi8NCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19DTURfTU9ERV9TVywgTUNTX0NNRDJf UDApOw0KPj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIE1DU19FWFRfUFdSX0lDLCAweEMwLCAw eDUzLCAweDAwKTsNCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19CVDJDVFIsIDB4RTUpOw0K Pj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1NFVEFWREQsIDB4MEEpOw0KPj4gKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgTUNTX1NFVEFWRUUsIDB4MEEpOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwg TUNTX1NHT1BDVFIsIDB4NTIpOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0JUM0NUUiwg MHg1Myk7DQo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQlQ0Q1RSLCAweDVBKTsNCj4+ICsJ ZGNzX3dyaXRlX3NlcShjdHgsIE1DU19JTlZDVFIsIDB4MDApOw0KPj4gKwlkY3Nfd3JpdGVfc2Vx KGN0eCwgTUNTX1NUQkNUUiwgMHgwQSk7DQo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU0RD VFIsIDB4MDYpOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1ZDTUNUUiwgMHg1Nik7DQo+ PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU0VUVkdOLCAweEEwLCAweDAwKTsNCj4+ICsJZGNz X3dyaXRlX3NlcShjdHgsIE1DU19TRVRWR1AsIDB4QTAsIDB4MDApOw0KPj4gKwlkY3Nfd3JpdGVf c2VxKGN0eCwgTUNTX1NXX0NUUkwsIDB4MTEpOyAvKiAyIGRhdGEgbGFuZXMsIHNlZSBkb2MgKi8N Cj4+ICsNCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19DTURfTU9ERV9TVywgTUNTX0NNRDJf UDIpOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX1ZTVFYxLCAweDA1KTsNCj4+ICsJZGNz X3dyaXRlX3NlcShjdHgsIDB4MDIsIDB4MEIpOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHgw MywgMHgwRik7DQo+PiArCWRjc193cml0ZV9zZXEoY3R4LCAweDA0LCAweDdELCAweDAwLCAweDUw KTsNCj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBHT0FfVlNUVjIsIDB4MDUsIDB4MTYsIDB4 MEQsIDB4MTEsIDB4N0QsIDB4MDAsDQo+PiArCQkJICAweDUwKTsNCj4+ICsJZGNzX3dyaXRlX2Nt ZF9zZXEoY3R4LCBHT0FfVkNMSzEsIDB4MDcsIDB4MDgsIDB4MDEsIDB4MDIsIDB4MDAsIDB4N0Qs DQo+PiArCQkJICAweDAwLCAweDg1LCAweDA4KTsNCj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4 LCBHT0FfVkNMSzIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDAsIDB4N0QsDQo+PiArCQkJ ICAweDAwLCAweDg1LCAweDA4KTsNCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIEdPQV9WQ0xLX09Q VDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+PiArCQkgICAgICAweDAw LCAweDAwLCAweDAwLCAweDAwKTsNCj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBHT0FfQklD TEsxLCAweDA3LCAweDA4KTsNCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4MkQsIDB4MDEpOw0K Pj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHgyRiwgMHgwMiwgMHgwMCwgMHg0MCwgMHgwNSwgMHgw OCwgMHg1NCwgMHg3RCwNCj4+ICsJCSAgICAgIDB4MDApOw0KPj4gKwlkY3Nfd3JpdGVfY21kX3Nl cShjdHgsIEdPQV9CSUNMSzIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDApOw0KPj4gKwlk Y3Nfd3JpdGVfc2VxKGN0eCwgMHgzRCwgMHg0MCk7DQo+PiArCWRjc193cml0ZV9zZXEoY3R4LCAw eDNGLCAweDA1LCAweDA4LCAweDU0LCAweDdELCAweDAwKTsNCj4+ICsJZGNzX3dyaXRlX3NlcShj dHgsIEdPQV9CSUNMSzMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+PiAr CQkgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwKTsNCj4+ICsJZGNzX3dyaXRlX3Nl cShjdHgsIEdPQV9CSUNMSzQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+ PiArCQkgICAgICAweDAwLCAweDAwKTsNCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4NTgsIDB4 MDAsIDB4MDAsIDB4MDApOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX0JJQ0xLX09QVDEs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDApOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwg R09BX0JJQ0xLX09QVDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+PiAr CQkgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwKTsNCj4+ICsJ ZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0FfR1BPMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7 DQo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfR09BX0dQTzIsIDB4MDAsIDB4MjAsIDB4MDAp Ow0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0dPQV9FUSwgMHgwOCwgMHgwOCwgMHgwOCwg MHgwOCwgMHgwOCwgMHgwOCwNCj4+ICsJCSAgICAgIDB4MDAsIDB4MDApOw0KPj4gKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgTUNTX0dPQV9DTEtfR0FMTE9OLCAweDAwLCAweDAwKTsNCj4+ICsJZGNzX3dy aXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0ZTX1NFTDAsIDB4QkYsIDB4MDIsIDB4MDYsIDB4MTQs IDB4MTAsDQo+PiArCQkJICAweDE2LCAweDEyLCAweDA4LCAweDNGKTsNCj4+ICsJZGNzX3dyaXRl X2NtZF9zZXEoY3R4LCBNQ1NfR09BX0ZTX1NFTDEsIDB4M0YsIDB4M0YsIDB4M0YsIDB4M0YsIDB4 MEMsDQo+PiArCQkJICAweDBBLCAweDBFLCAweDNGLCAweDNGLCAweDAwKTsNCj4+ICsJZGNzX3dy aXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0ZTX1NFTDIsIDB4MDQsIDB4M0YsIDB4M0YsIDB4M0Ys IDB4M0YsDQo+PiArCQkJICAweDA1LCAweDAxLCAweDNGLCAweDNGLCAweDBGKTsNCj4+ICsJZGNz X3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0ZTX1NFTDMsIDB4MEIsIDB4MEQsIDB4M0YsIDB4 M0YsIDB4M0YsDQo+PiArCQkJICAweDNGKTsNCj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCAw eEEyLCAweDNGLCAweDA5LCAweDEzLCAweDE3LCAweDExLCAweDE1KTsNCj4+ICsJZGNzX3dyaXRl X2NtZF9zZXEoY3R4LCAweEE5LCAweDA3LCAweDAzLCAweDNGKTsNCj4+ICsJZGNzX3dyaXRlX2Nt ZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDAsIDB4M0YsIDB4MDUsIDB4MDEsIDB4MTcsIDB4MTMs DQo+PiArCQkJICAweDE1LCAweDExLCAweDBGLCAweDNGKTsNCj4+ICsJZGNzX3dyaXRlX2NtZF9z ZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDEsIDB4M0YsIDB4M0YsIDB4M0YsIDB4M0YsIDB4MEIsDQo+ PiArCQkJICAweDBELCAweDA5LCAweDNGLCAweDNGLCAweDA3KTsNCj4+ICsJZGNzX3dyaXRlX2Nt ZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDIsIDB4MDMsIDB4M0YsIDB4M0YsIDB4M0YsIDB4M0Ys DQo+PiArCQkJICAweDAyLCAweDA2LCAweDNGLCAweDNGLCAweDA4KTsNCj4+ICsJZGNzX3dyaXRl X2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDMsIDB4MEMsIDB4MEEsIDB4M0YsIDB4M0YsIDB4 M0YsDQo+PiArCQkJICAweDNGLCAweDNGLCAweDBFLCAweDEwLCAweDE0KTsNCj4+ICsJZGNzX3dy aXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDQsIDB4MTIsIDB4MTYsIDB4MDAsIDB4MDQs IDB4M0YpOw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHhEQywgMHgwMik7DQo+PiArCWRjc193 cml0ZV9zZXEoY3R4LCAweERFLCAweDEyKTsNCj4+ICsNCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgs IE1DU19DTURfTU9ERV9TVywgMHgwRSk7IC8qIE5vIGRvY3VtZW50YXRpb24gKi8NCj4+ICsJZGNz X3dyaXRlX3NlcShjdHgsIDB4MDEsIDB4NzUpOw0KPj4gKw0KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0 eCwgTUNTX0NNRF9NT0RFX1NXLCBNQ1NfQ01EMl9QMyk7DQo+PiArCWRjc193cml0ZV9jbWRfc2Vx KGN0eCwgTUNTX0dBTU1BX1ZQLCAweDAwLCAweDBDLCAweDEyLCAweDBFLCAweDA2LA0KPj4gKwkJ CSAgMHgxMiwgMHgwRSwgMHgwQiwgMHgxNSwgMHgwQiwgMHgxMCwgMHgwNywgMHgwRiwNCj4+ICsJ CQkgIDB4MTIsIDB4MEMsIDB4MDApOw0KPj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIE1DU19H QU1NQV9WTiwgMHgwMCwgMHgwQywgMHgxMiwgMHgwRSwgMHgwNiwNCj4+ICsJCQkgIDB4MTIsIDB4 MEUsIDB4MEIsIDB4MTUsIDB4MEIsIDB4MTAsIDB4MDcsIDB4MEYsDQo+PiArCQkJICAweDEyLCAw eDBDLCAweDAwKTsNCj4+ICsNCj4+ICsJLyogRXhpdCBDTUQyICovDQo+PiArCWRjc193cml0ZV9z ZXEoY3R4LCBNQ1NfQ01EX01PREVfU1csIE1DU19DTUQxX1VDUyk7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBpbnQgcm02ODIwMF9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQ0KPj4g K3sNCj4+ICsJc3RydWN0IHJtNjgyMDAgKmN0eCA9IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwpOw0K Pj4gKw0KPj4gKwlpZiAoIWN0eC0+ZW5hYmxlZCkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4g KwlpZiAoY3R4LT5ibF9kZXYpIHsNCj4+ICsJCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZC X0JMQU5LX1BPV0VSRE9XTjsNCj4+ICsJCWN0eC0+YmxfZGV2LT5wcm9wcy5zdGF0ZSB8PSBCTF9D T1JFX0ZCQkxBTks7DQo+PiArCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhjdHgtPmJsX2Rldik7 DQo+PiArCX0NCj4+ICsNCj4+ICsJY3R4LT5lbmFibGVkID0gZmFsc2U7DQo+PiArDQo+PiArCXJl dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHJtNjgyMDBfdW5wcmVwYXJlKHN0 cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJtNjgyMDAgKmN0eCA9 IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwpOw0KPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOw0KPj4gKwlpbnQgcmV0Ow0KPj4gKw0K Pj4gKwlpZiAoIWN0eC0+cHJlcGFyZWQpDQo+PiArCQlyZXR1cm4gMDsNCj4+ICsNCj4+ICsJcmV0 ID0gbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29mZihkc2kpOw0KPj4gKwlpZiAocmV0KQ0KPj4g KwkJRFJNX1dBUk4oImZhaWxlZCB0byBzZXQgZGlzcGxheSBvZmY6ICVkXG4iLCByZXQpOw0KPj4g Kw0KPj4gKwlyZXQgPSBtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShkc2kpOw0KPj4gKwlp ZiAocmV0KQ0KPj4gKwkJRFJNX1dBUk4oImZhaWxlZCB0byBlbnRlciBzbGVlcCBtb2RlOiAlZFxu IiwgcmV0KTsNCj4+ICsNCj4+ICsJbXNsZWVwKDEyMCk7DQo+PiArDQo+PiArCWlmIChjdHgtPnJl c2V0X2dwaW8pIHsNCj4+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dw aW8sIDEpOw0KPj4gKwkJbXNsZWVwKDIwKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZWd1bGF0b3Jf ZGlzYWJsZShjdHgtPnN1cHBseSk7DQo+PiArDQo+PiArCWN0eC0+cHJlcGFyZWQgPSBmYWxzZTsN Cj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgcm02ODIw MF9wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJt NjgyMDAgKmN0eCA9IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwpOw0KPj4gKwlzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOw0KPj4gKwlpbnQg cmV0Ow0KPj4gKw0KPj4gKwlpZiAoY3R4LT5wcmVwYXJlZCkNCj4+ICsJCXJldHVybiAwOw0KPj4g Kw0KPj4gKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGN0eC0+c3VwcGx5KTsNCj4+ICsJaWYgKHJl dCA8IDApIHsNCj4+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSBzdXBwbHk6ICVkXG4i LCByZXQpOw0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoY3R4LT5y ZXNldF9ncGlvKSB7DQo+PiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9n cGlvLCAwKTsNCj4+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8s IDEpOw0KPj4gKwkJbXNsZWVwKDIwKTsNCj4+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChj dHgtPnJlc2V0X2dwaW8sIDApOw0KPj4gKwkJbXNsZWVwKDEwMCk7DQo+PiArCX0NCj4+ICsNCj4+ ICsJcm02ODIwMF9pbml0X3NlcXVlbmNlKGN0eCk7DQo+PiArDQo+PiArCXJldCA9IG1pcGlfZHNp X2Rjc19leGl0X3NsZWVwX21vZGUoZHNpKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXJldHVybiBy ZXQ7DQo+PiArDQo+PiArCW1zbGVlcCgxMjUpOw0KPj4gKw0KPj4gKwlyZXQgPSBtaXBpX2RzaV9k Y3Nfc2V0X2Rpc3BsYXlfb24oZHNpKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXJldHVybiByZXQ7 DQo+PiArDQo+PiArCW1zbGVlcCgyMCk7DQo+PiArDQo+PiArCWN0eC0+cHJlcGFyZWQgPSB0cnVl Ow0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBybTY4 MjAwX2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkNCj4+ICt7DQo+PiArCXN0cnVjdCBy bTY4MjAwICpjdHggPSBwYW5lbF90b19ybTY4MjAwKHBhbmVsKTsNCj4+ICsNCj4+ICsJaWYgKGN0 eC0+ZW5hYmxlZCkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4gKwlpZiAoY3R4LT5ibF9kZXYp IHsNCj4+ICsJCWN0eC0+YmxfZGV2LT5wcm9wcy5zdGF0ZSAmPSB+QkxfQ09SRV9GQkJMQU5LOw0K Pj4gKwkJY3R4LT5ibF9kZXYtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsNCj4+ICsJ CWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGN0eC0+YmxfZGV2KTsNCj4+ICsJfQ0KPj4gKw0KPj4g KwljdHgtPmVuYWJsZWQgPSB0cnVlOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIGludCBybTY4MjAwX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkNCj4+ICt7DQo+PiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOw0KPj4gKw0KPj4g Kwltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21vZGUpOw0K Pj4gKwlpZiAoIW1vZGUpIHsNCj4+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFkZCBtb2RlICV1 eCV1eEAldVxuIiwNCj4+ICsJCQkgIGRlZmF1bHRfbW9kZS5oZGlzcGxheSwgZGVmYXVsdF9tb2Rl LnZkaXNwbGF5LA0KPj4gKwkJCSAgZGVmYXVsdF9tb2RlLnZyZWZyZXNoKTsNCj4+ICsJCXJldHVy biAtRU5PTUVNOw0KPj4gKwl9DQo+PiArDQo+PiArCWRybV9tb2RlX3NldF9uYW1lKG1vZGUpOw0K Pj4gKw0KPj4gKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9U WVBFX1BSRUZFUlJFRDsNCj4+ICsJZHJtX21vZGVfcHJvYmVkX2FkZChwYW5lbC0+Y29ubmVjdG9y LCBtb2RlKTsNCj4+ICsNCj4+ICsJcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRo X21tID0gbW9kZS0+d2lkdGhfbW07DQo+PiArCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5m by5oZWlnaHRfbW0gPSBtb2RlLT5oZWlnaHRfbW07DQo+PiArDQo+PiArCXJldHVybiAxOw0KPj4g K30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBybTY4MjAw X2RybV9mdW5jcyA9IHsNCj4+ICsJLmRpc2FibGUgICA9IHJtNjgyMDBfZGlzYWJsZSwNCj4+ICsJ LnVucHJlcGFyZSA9IHJtNjgyMDBfdW5wcmVwYXJlLA0KPj4gKwkucHJlcGFyZSAgID0gcm02ODIw MF9wcmVwYXJlLA0KPj4gKwkuZW5hYmxlICAgID0gcm02ODIwMF9lbmFibGUsDQo+PiArCS5nZXRf bW9kZXMgPSBybTY4MjAwX2dldF9tb2RlcywNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg cm02ODIwMF9wcm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpDQo+PiArew0KPj4gKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmZHNpLT5kZXY7DQo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAq YmFja2xpZ2h0Ow0KPj4gKwlzdHJ1Y3Qgcm02ODIwMCAqY3R4Ow0KPj4gKwlpbnQgcmV0Ow0KPj4g Kw0KPj4gKwljdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwp Ow0KPj4gKwlpZiAoIWN0eCkNCj4+ICsJCXJldHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKwljdHgt PnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJyZXNldCIsIEdQSU9E X09VVF9MT1cpOw0KPj4gKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsNCj4+ICsJCWRl dl9lcnIoZGV2LCAiY2Fubm90IGdldCByZXNldC1ncGlvXG4iKTsNCj4+ICsJCXJldHVybiBQVFJf RVJSKGN0eC0+cmVzZXRfZ3Bpbyk7DQo+PiArCX0NCj4+ICsNCj4+ICsJY3R4LT5zdXBwbHkgPSBk ZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAicG93ZXIiKTsNCj4+ICsJaWYgKElTX0VSUihjdHgtPnN1 cHBseSkpIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCByZWd1bGF0b3JcbiIpOw0K Pj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5zdXBwbHkpOw0KPj4gKwl9DQo+PiArDQo+PiArCWJh Y2tsaWdodCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAiYmFja2xpZ2h0IiwgMCk7 DQo+PiArCWlmIChiYWNrbGlnaHQpIHsNCj4+ICsJCWN0eC0+YmxfZGV2ID0gb2ZfZmluZF9iYWNr bGlnaHRfYnlfbm9kZShiYWNrbGlnaHQpOw0KPj4gKwkJb2Zfbm9kZV9wdXQoYmFja2xpZ2h0KTsN Cj4+ICsNCj4+ICsJCWlmICghY3R4LT5ibF9kZXYpDQo+PiArCQkJcmV0dXJuIC1FUFJPQkVfREVG RVI7DQo+PiArCX0NCj4+ICsNCj4+ICsJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOw0K Pj4gKw0KPj4gKwljdHgtPmRldiA9IGRldjsNCj4+ICsNCj4+ICsJZHNpLT5sYW5lcyA9IDI7DQo+ PiArCWRzaS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsNCj4+ICsJZHNpLT5tb2RlX2Zs YWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfVklERU9fQlVSU1QgfA0K Pj4gKwkJCSAgTUlQSV9EU0lfTU9ERV9MUE07DQo+PiArDQo+PiArCWRybV9wYW5lbF9pbml0KCZj dHgtPnBhbmVsKTsNCj4+ICsJY3R4LT5wYW5lbC5kZXYgPSBkZXY7DQo+PiArCWN0eC0+cGFuZWwu ZnVuY3MgPSAmcm02ODIwMF9kcm1fZnVuY3M7DQo+PiArDQo+PiArCWRybV9wYW5lbF9hZGQoJmN0 eC0+cGFuZWwpOw0KPj4gKw0KPj4gKwlyZXQgPSBtaXBpX2RzaV9hdHRhY2goZHNpKTsNCj4+ICsJ aWYgKHJldCA8IDApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAibWlwaV9kc2lfYXR0YWNoIGZhaWxl ZC4gSXMgaG9zdCByZWFkeT9cbiIpOw0KPj4gKwkJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5l bCk7DQo+PiArCQlpZiAoY3R4LT5ibF9kZXYpDQo+PiArCQkJcHV0X2RldmljZSgmY3R4LT5ibF9k ZXYtPmRldik7DQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwl9DQo+PiArDQo+PiArCURSTV9JTkZP KERSVl9OQU1FICJfcGFuZWwgJXV4JXVAJXUgJXVicHAgZHNpICV1ZGwgLSByZWFkeVxuIiwNCj4+ ICsJCSBkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRlZmF1bHRfbW9kZS52ZGlzcGxheSwNCj4+ICsJ CSBkZWZhdWx0X21vZGUudnJlZnJlc2gsDQo+PiArCQkgbWlwaV9kc2lfcGl4ZWxfZm9ybWF0X3Rv X2JwcChkc2ktPmZvcm1hdCksIGRzaS0+bGFuZXMpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBybTY4MjAwX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2kpDQo+PiArew0KPj4gKwlzdHJ1Y3Qgcm02ODIwMCAqY3R4ID0gbWlwaV9kc2lf Z2V0X2RydmRhdGEoZHNpKTsNCj4+ICsNCj4+ICsJaWYgKGN0eC0+YmxfZGV2KQ0KPj4gKwkJcHV0 X2RldmljZSgmY3R4LT5ibF9kZXYtPmRldik7DQo+PiArDQo+PiArCW1pcGlfZHNpX2RldGFjaChk c2kpOw0KPj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsNCj4+ICsNCj4+ICsJcmV0 dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHJheWRpdW1fcm02ODIwMF9vZl9tYXRjaFtdID0gew0KPj4gKwl7IC5jb21wYXRpYmxlID0gInJh eWRpdW0scm02ODIwMCIgfSwNCj4+ICsJeyB9DQo+PiArfTsNCj4+ICtNT0RVTEVfREVWSUNFX1RB QkxFKG9mLCByYXlkaXVtX3JtNjgyMDBfb2ZfbWF0Y2gpOw0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1 Y3QgbWlwaV9kc2lfZHJpdmVyIHJheWRpdW1fcm02ODIwMF9kcml2ZXIgPSB7DQo+PiArCS5wcm9i ZSAgPSBybTY4MjAwX3Byb2JlLA0KPj4gKwkucmVtb3ZlID0gcm02ODIwMF9yZW1vdmUsDQo+PiAr CS5kcml2ZXIgPSB7DQo+PiArCQkubmFtZSA9IERSVl9OQU1FICJfcGFuZWwiLA0KPj4gKwkJLm9m X21hdGNoX3RhYmxlID0gcmF5ZGl1bV9ybTY4MjAwX29mX21hdGNoLA0KPj4gKwl9LA0KPj4gK307 DQo+PiArbW9kdWxlX21pcGlfZHNpX2RyaXZlcihyYXlkaXVtX3JtNjgyMDBfZHJpdmVyKTsNCj4+ ICsNCj4+ICtNT0RVTEVfQVVUSE9SKCJQaGlsaXBwZSBDb3JudSA8cGhpbGlwcGUuY29ybnVAc3Qu Y29tPiIpOw0KPj4gK01PRFVMRV9BVVRIT1IoIllhbm5pY2sgRmVydHJlIDx5YW5uaWNrLmZlcnRy ZUBzdC5jb20+Iik7DQo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJEUk0gRHJpdmVyIGZvciBSYXlk aXVtIFJNNjgyMDAgTUlQSSBEU0kgcGFuZWwiKTsNCj4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYy Iik7