Received: by 10.223.185.116 with SMTP id b49csp420790wrg; Fri, 23 Feb 2018 00:34:03 -0800 (PST) X-Google-Smtp-Source: AH8x224W1QTmWDsNw0McmRL2ZrIEla3oif7fmjLLlSezMBCcuJpAjfVYalJKFNxnKKxn4elZqLbm X-Received: by 2002:a17:902:ad0a:: with SMTP id i10-v6mr1004629plr.130.1519374843751; Fri, 23 Feb 2018 00:34:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519374843; cv=none; d=google.com; s=arc-20160816; b=DAwMXlCPHKU5Gft8oN7e/Cw+jdxNhlR071sS6rWBdMRWHfi23rmEFLm/WbkTIJEZr1 ZvP01KUZfbr7iBeAoHtrSfhAzwODwJM9eIWKfrdVAn8L/mIy3d8cSERuaUWOwIZDsCLl t19GxNU2/dYRLoh5PX3Xh8GkovWfiq+p1vJfdvI61szVWnX13yKItS9z6lrEz0XdLfwZ pZckl9cHFKCqW+rw708wJgS9VksrwkcwIZtV6Ojd1XoOobtcS4Jiub1KrUdKNfi625gw n5Ht+hjSd1E0t6py8iaHiSPHKPi5UZSKsynodV74TER4isdBPj5c8l0i13+tUvfPTQ+X tM+g== 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=hBJW9m4XCCmCoAjM0ZsQcC7FMM5czW49POSPQteJpkE=; b=T7BPlz7kWgYcSlbK844f7oBtDamznY4whuubiuBazTygwy0euJkrgqjn3a6UiXuRZ9 fIdsOfodRzzhXJJDQxSwUkDBz63x6voMseVrGIhzXkvLmAfzQotxyJpna4ceBZ4fphFx 7TxZuFoCWhXNyIoiASH/8YxqDJKN4h35md3K1dO1h7HWWgVh5zLi5JxSvxil605fHjcn jAVZdDuBE7p1A/MJgNuyBEUMbBNtBnCwGFplECkG+oQDrayfwmCC9S8IncEuMOdWkbDv pYmdxQ45VsNqezVb9GRh3NcQdnVenBcPn4iIvzIDnnFRTIZEGAQMP6IinCRLiEkdSR6m rG0A== 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 r63si1464530pfj.95.2018.02.23.00.33.49; Fri, 23 Feb 2018 00:34:03 -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 S1751625AbeBWIby (ORCPT + 99 others); Fri, 23 Feb 2018 03:31:54 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:34027 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751510AbeBWIbv (ORCPT ); Fri, 23 Feb 2018 03:31:51 -0500 Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w1N8TD9h007778; Fri, 23 Feb 2018 09:31:36 +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 2g9bqd0x43-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 23 Feb 2018 09:31:36 +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 C9C8F31; Fri, 23 Feb 2018 08:31:35 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag5node1.st.com [10.75.127.13]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 6CDA62602; Fri, 23 Feb 2018 08:31:35 +0000 (GMT) Received: from SFHDAG6NODE1.st.com (10.75.127.16) by SFHDAG5NODE1.st.com (10.75.127.13) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 23 Feb 2018 09:31:35 +0100 Received: from SFHDAG6NODE1.st.com ([fe80::8d96:4406:44e3:eb27]) by SFHDAG6NODE1.st.com ([fe80::8d96:4406:44e3:eb27%20]) with mapi id 15.00.1347.000; Fri, 23 Feb 2018 09:31:34 +0100 From: Yannick FERTRE To: Philippe CORNU , 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/aOxrtYA Date: Fri, 23 Feb 2018 08:31:34 +0000 Message-ID: References: <20180208143026.23009-1-philippe.cornu@st.com> <20180208143026.23009-3-philippe.cornu@st.com> In-Reply-To: <20180208143026.23009-3-philippe.cornu@st.com> 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.48] Content-Type: text/plain; charset="utf-8" Content-ID: <8C78A9425D5814449EBA09CF6C74165A@st.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-23_02:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org UmV2aWV3ZWQtYnk6IFlhbm5pY2sgRmVydHLDqSA8eWFubmljay5mZXJ0cmVAc3QuY29tPg0KDQoN Ck9uIDAyLzA4LzIwMTggMDM6MzAgUE0sIFBoaWxpcHBlIENvcm51IHdyb3RlOg0KPiBUaGlzIHBh dGNoIGFkZHMgUmF5ZGl1bSBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uIHJtNjgyMDANCj4gNS41 IiA3MjB4MTI4MCBURlQgTENEIHBhbmVsIGRyaXZlciAoTUlQSS1EU0kgdmlkZW8gbW9kZSkuDQo+ DQo+IFNpZ25lZC1vZmYtYnk6IFBoaWxpcHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+ DQo+IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAg ICB8ICAgOCArDQo+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAg ICAgIHwgICAxICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcmF5ZGl1bS1ybTY4 MjAwLmMgfCA0NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICAzIGZpbGVzIGNoYW5n ZWQsIDQ3MyBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNzU1IGRyaXZlcnMvZ3B1 L2RybS9wYW5lbC9wYW5lbC1yYXlkaXVtLXJtNjgyMDAuYw0KPg0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZp Zw0KPiBpbmRleCA5ODgwNDhlYmNjMjIuLjA4ZDk5ZGQ0Njc2NSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVs L0tjb25maWcNCj4gQEAgLTEwOCw2ICsxMDgsMTQgQEAgY29uZmlnIERSTV9QQU5FTF9SQVNQQkVS UllQSV9UT1VDSFNDUkVFTg0KPiAgIAkgIFBpIDciIFRvdWNoc2NyZWVuLiAgVG8gY29tcGlsZSB0 aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwNCj4gICAJICBjaG9vc2UgTSBoZXJlLg0KPiAgIA0KPiAr Y29uZmlnIERSTV9QQU5FTF9SQVlESVVNX1JNNjgyMDANCj4gKwl0cmlzdGF0ZSAiUmF5ZGl1bSBy bTY4MjAwIDcyMHgxMjgwIGRzaSAyZGwgdmlkZW8gbW9kZSBwYW5lbCINCj4gKwlkZXBlbmRzIG9u IE9GDQo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kNCj4gKwloZWxwDQo+ICsJICBTYXkgWSBo ZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBSYXlkaXVtIHJtNjgyMDANCj4g KwkgIDcyMHgxMjgwIGRzaSAyZGwgdmlkZW8gbW9kZSBwYW5lbA0KPiArDQo+ICAgY29uZmlnIERS TV9QQU5FTF9TQU1TVU5HX1M2RTNIQTINCj4gICAJdHJpc3RhdGUgIlNhbXN1bmcgUzZFM0hBMiBE U0kgdmlkZW8gbW9kZSBwYW5lbCINCj4gICAJZGVwZW5kcyBvbiBPRg0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01h a2VmaWxlDQo+IGluZGV4IDNkMmE4OGQwZTk2NS4uZjI2ZWZjMTFkNzQ2IDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlDQo+IEBAIC05LDYgKzksNyBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVM X0xHX0xHNDU3MykgKz0gcGFuZWwtbGctbGc0NTczLm8NCj4gICBvYmotJChDT05GSUdfRFJNX1BB TkVMX09SSVNFVEVDSF9PVE04MDA5QSkgKz0gcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlhLm8NCj4g ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1BBTkFTT05JQ19WVlgxMEYwMzROMDApICs9IHBhbmVs LXBhbmFzb25pYy12dngxMGYwMzRuMDAubw0KPiAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfUkFT UEJFUlJZUElfVE9VQ0hTQ1JFRU4pICs9IHBhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLm8N Cj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfUkFZRElVTV9STTY4MjAwKSArPSBwYW5lbC1yYXlk aXVtLXJtNjgyMDAubw0KPiAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19MRDkwNDAp ICs9IHBhbmVsLXNhbXN1bmctbGQ5MDQwLm8NCj4gICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NB TVNVTkdfUzZFM0hBMikgKz0gcGFuZWwtc2Ftc3VuZy1zNmUzaGEyLm8NCj4gICBvYmotJChDT05G SUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFNjNKMFgwMykgKz0gcGFuZWwtc2Ftc3VuZy1zNmU2M2ow eDAzLm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yYXlkaXVt LXJtNjgyMDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yYXlkaXVtLXJtNjgyMDAu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYzZTE1ODcz ZDA1YQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1yYXlkaXVtLXJtNjgyMDAuYw0KPiBAQCAtMCwwICsxLDQ2NCBAQA0KPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIFNUTWlj cm9lbGVjdHJvbmljcyBTQSAyMDE3DQo+ICsgKg0KPiArICogQXV0aG9yczogUGhpbGlwcGUgQ29y bnUgPHBoaWxpcHBlLmNvcm51QHN0LmNvbT4NCj4gKyAqICAgICAgICAgIFlhbm5pY2sgRmVydHJl IDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGRybS9k cm1QLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPg0KPiArI2luY2x1ZGUgPGRy bS9kcm1fcGFuZWwuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9y L2NvbnN1bWVyLmg+DQo+ICsjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+DQo+ICsNCj4g KyNkZWZpbmUgRFJWX05BTUUgInJheWRpdW1fcm02ODIwMCINCj4gKw0KPiArLyoqKiBNYW51ZmFj dHVyZXIgQ29tbWFuZCBTZXQgKioqLw0KPiArI2RlZmluZSBNQ1NfQ01EX01PREVfU1cJMHhGRSAv KiBDTUQgTW9kZSBTd2l0Y2ggKi8NCj4gKyNkZWZpbmUgTUNTX0NNRDFfVUNTCTB4MDAgLyogVXNl ciBDb21tYW5kIFNldCAoVUNTID0gQ01EMSkgKi8NCj4gKyNkZWZpbmUgTUNTX0NNRDJfUDAJMHgw MSAvKiBNYW51ZmFjdHVyZSBDb21tYW5kIFNldCBQYWdlMCAoQ01EMiBQMCkgKi8NCj4gKyNkZWZp bmUgTUNTX0NNRDJfUDEJMHgwMiAvKiBNYW51ZmFjdHVyZSBDb21tYW5kIFNldCBQYWdlMSAoQ01E MiBQMSkgKi8NCj4gKyNkZWZpbmUgTUNTX0NNRDJfUDIJMHgwMyAvKiBNYW51ZmFjdHVyZSBDb21t YW5kIFNldCBQYWdlMiAoQ01EMiBQMikgKi8NCj4gKyNkZWZpbmUgTUNTX0NNRDJfUDMJMHgwNCAv KiBNYW51ZmFjdHVyZSBDb21tYW5kIFNldCBQYWdlMyAoQ01EMiBQMykgKi8NCj4gKw0KPiArLyog Q01EMiBQMCBjb21tYW5kcyAoRGlzcGxheSBPcHRpb25zIGFuZCBQb3dlcikgKi8NCj4gKyNkZWZp bmUgTUNTX1NUQkNUUgkweDEyIC8qIFRFMSBPdXRwdXQgU2V0dGluZyBaaWctWmFnIENvbm5lY3Rp b24gKi8NCj4gKyNkZWZpbmUgTUNTX1NHT1BDVFIJMHgxNiAvKiBTb3VyY2UgQmlhcyBDdXJyZW50 ICovDQo+ICsjZGVmaW5lIE1DU19TRENUUgkweDFBIC8qIFNvdXJjZSBPdXRwdXQgRGVsYXkgVGlt ZSAqLw0KPiArI2RlZmluZSBNQ1NfSU5WQ1RSCTB4MUIgLyogSW52ZXJzaW9uIFR5cGUgKi8NCj4g KyNkZWZpbmUgTUNTX0VYVF9QV1JfSUMJMHgyNCAvKiBFeHRlcm5hbCBQV1IgSUMgQ29udHJvbCAq Lw0KPiArI2RlZmluZSBNQ1NfU0VUQVZERAkweDI3IC8qIFBGTSBDb250cm9sIGZvciBBVkREIE91 dHB1dCAqLw0KPiArI2RlZmluZSBNQ1NfU0VUQVZFRQkweDI5IC8qIFBGTSBDb250cm9sIGZvciBB VkVFIE91dHB1dCAqLw0KPiArI2RlZmluZSBNQ1NfQlQyQ1RSCTB4MkIgLyogRERWREwgQ2hhcmdl IFB1bXAgQ29udHJvbCAqLw0KPiArI2RlZmluZSBNQ1NfQlQzQ1RSCTB4MkYgLyogVkdIIENoYXJn ZSBQdW1wIENvbnRyb2wgKi8NCj4gKyNkZWZpbmUgTUNTX0JUNENUUgkweDM0IC8qIFZHTCBDaGFy Z2UgUHVtcCBDb250cm9sICovDQo+ICsjZGVmaW5lIE1DU19WQ01DVFIJMHg0NiAvKiBWQ09NIE91 dHB1dCBMZXZlbCBDb250cm9sICovDQo+ICsjZGVmaW5lIE1DU19TRVRWR04JMHg1MiAvKiBWRyBN L1MgTiBDb250cm9sICovDQo+ICsjZGVmaW5lIE1DU19TRVRWR1AJMHg1NCAvKiBWRyBNL1MgUCBD b250cm9sICovDQo+ICsjZGVmaW5lIE1DU19TV19DVFJMCTB4NUYgLyogSW50ZXJmYWNlIENvbnRy b2wgZm9yIFBGTSBhbmQgTUlQSSAqLw0KPiArDQo+ICsvKiBDTUQyIFAyIGNvbW1hbmRzIChHT0Eg VGltaW5nIENvbnRyb2wpIC0gbm8gZGVzY3JpcHRpb24gaW4gZGF0YXNoZWV0ICovDQo+ICsjZGVm aW5lIEdPQV9WU1RWMQkweDAwDQo+ICsjZGVmaW5lIEdPQV9WU1RWMgkweDA3DQo+ICsjZGVmaW5l IEdPQV9WQ0xLMQkweDBFDQo+ICsjZGVmaW5lIEdPQV9WQ0xLMgkweDE3DQo+ICsjZGVmaW5lIEdP QV9WQ0xLX09QVDEJMHgyMA0KPiArI2RlZmluZSBHT0FfQklDTEsxCTB4MkENCj4gKyNkZWZpbmUg R09BX0JJQ0xLMgkweDM3DQo+ICsjZGVmaW5lIEdPQV9CSUNMSzMJMHg0NA0KPiArI2RlZmluZSBH T0FfQklDTEs0CTB4NEYNCj4gKyNkZWZpbmUgR09BX0JJQ0xLX09QVDEJMHg1Qg0KPiArI2RlZmlu ZSBHT0FfQklDTEtfT1BUMgkweDYwDQo+ICsjZGVmaW5lIE1DU19HT0FfR1BPMQkweDZEDQo+ICsj ZGVmaW5lIE1DU19HT0FfR1BPMgkweDcxDQo+ICsjZGVmaW5lIE1DU19HT0FfRVEJMHg3NA0KPiAr I2RlZmluZSBNQ1NfR09BX0NMS19HQUxMT04gMHg3Qw0KPiArI2RlZmluZSBNQ1NfR09BX0ZTX1NF TDAJMHg3RQ0KPiArI2RlZmluZSBNQ1NfR09BX0ZTX1NFTDEJMHg4Nw0KPiArI2RlZmluZSBNQ1Nf R09BX0ZTX1NFTDIJMHg5MQ0KPiArI2RlZmluZSBNQ1NfR09BX0ZTX1NFTDMJMHg5Qg0KPiArI2Rl ZmluZSBNQ1NfR09BX0JTX1NFTDAJMHhBQw0KPiArI2RlZmluZSBNQ1NfR09BX0JTX1NFTDEJMHhC NQ0KPiArI2RlZmluZSBNQ1NfR09BX0JTX1NFTDIJMHhCRg0KPiArI2RlZmluZSBNQ1NfR09BX0JT X1NFTDMJMHhDOQ0KPiArI2RlZmluZSBNQ1NfR09BX0JTX1NFTDQJMHhEMw0KPiArDQo+ICsvKiBD TUQyIFAzIGNvbW1hbmRzIChHYW1tYSkgKi8NCj4gKyNkZWZpbmUgTUNTX0dBTU1BX1ZQCTB4NjAg LyogR2FtbWEgVlAxflZQMTYgKi8NCj4gKyNkZWZpbmUgTUNTX0dBTU1BX1ZOCTB4NzAgLyogR2Ft bWEgVk4xflZOMTYgKi8NCj4gKw0KPiArc3RydWN0IHJtNjgyMDAgew0KPiArCXN0cnVjdCBkZXZp Y2UgKmRldjsNCj4gKwlzdHJ1Y3QgZHJtX3BhbmVsIHBhbmVsOw0KPiArCXN0cnVjdCBncGlvX2Rl c2MgKnJlc2V0X2dwaW87DQo+ICsJc3RydWN0IHJlZ3VsYXRvciAqc3VwcGx5Ow0KPiArCXN0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXY7DQo+ICsJYm9vbCBwcmVwYXJlZDsNCj4gKwlib29s IGVuYWJsZWQ7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgZGVmYXVsdF9tb2RlID0gew0KPiArCS5jbG9jayA9IDUyNTgyLA0KPiArCS5oZGlzcGxh eSA9IDcyMCwNCj4gKwkuaHN5bmNfc3RhcnQgPSA3MjAgKyAzOCwNCj4gKwkuaHN5bmNfZW5kID0g NzIwICsgMzggKyA4LA0KPiArCS5odG90YWwgPSA3MjAgKyAzOCArIDggKyAzOCwNCj4gKwkudmRp c3BsYXkgPSAxMjgwLA0KPiArCS52c3luY19zdGFydCA9IDEyODAgKyAxMiwNCj4gKwkudnN5bmNf ZW5kID0gMTI4MCArIDEyICsgNCwNCj4gKwkudnRvdGFsID0gMTI4MCArIDEyICsgNCArIDEyLA0K PiArCS52cmVmcmVzaCA9IDUwLA0KPiArCS5mbGFncyA9IDAsDQo+ICsJLndpZHRoX21tID0gNjgs DQo+ICsJLmhlaWdodF9tbSA9IDEyMiwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IHJtNjgyMDAgKnBhbmVsX3RvX3JtNjgyMDAoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpDQo+ ICt7DQo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHJtNjgyMDAsIHBhbmVs KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgcm02ODIwMF9kY3Nfd3JpdGVfYnVmKHN0cnVj dCBybTY4MjAwICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsDQo+ICsJCQkJICBzaXplX3QgbGVuKQ0K PiArew0KPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2Rldmlj ZShjdHgtPmRldik7DQo+ICsNCj4gKwlpZiAobWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2ks IGRhdGEsIGxlbikgPCAwKQ0KPiArCQlEUk1fV0FSTigibWlwaSBkc2kgZGNzIHdyaXRlIGJ1ZmZl ciBmYWlsZWRcbiIpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBybTY4MjAwX2Rjc193cml0 ZV9jbWQoc3RydWN0IHJtNjgyMDAgKmN0eCwgdTggY21kLCB1OCB2YWx1ZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYp Ow0KPiArDQo+ICsJaWYgKG1pcGlfZHNpX2Rjc193cml0ZShkc2ksIGNtZCwgJnZhbHVlLCAxKSA8 IDApDQo+ICsJCURSTV9XQVJOKCJtaXBpIGRzaSBkY3Mgd3JpdGUgZmFpbGVkXG4iKTsNCj4gK30N Cj4gKw0KPiArI2RlZmluZSBkY3Nfd3JpdGVfc2VxKGN0eCwgc2VxLi4uKQkJCQlcDQo+ICsoewkJ CQkJCQkJXA0KPiArCXN0YXRpYyBjb25zdCB1OCBkW10gPSB7IHNlcSB9OwkJCQlcDQo+ICsJcm02 ODIwMF9kY3Nfd3JpdGVfYnVmKGN0eCwgZCwgQVJSQVlfU0laRShkKSk7CQlcDQo+ICt9KQ0KPiAr DQo+ICsvKg0KPiArICogVGhpcyBwYW5lbCBpcyBub3QgYWJsZSB0byBhdXRvLWluY3JlbWVudCBh bGwgY21kIGFkZHJlc3NlcyBzbyBmb3Igc29tZSBvZg0KPiArICogdGhlbSwgd2UgbmVlZCB0byBz ZW5kIHRoZW0gb25lIGJ5IG9uZS4uLg0KPiArICovDQo+ICsjZGVmaW5lIGRjc193cml0ZV9jbWRf c2VxKGN0eCwgY21kLCBzZXEuLi4pCQkJXA0KPiArKHsJCQkJCQkJCVwNCj4gKwlzdGF0aWMgY29u c3QgdTggZFtdID0geyBzZXEgfTsJCQkJXA0KPiArCXN0YXRpYyBpbnQgaTsJCQkJCQlcDQo+ICsJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZCkgOyBpKyspCQkJXA0KPiArCQlybTY4MjAwX2Rj c193cml0ZV9jbWQoY3R4LCBjbWQgKyBpLCBkW2ldKTsJXA0KPiArfSkNCj4gKw0KPiArc3RhdGlj IHZvaWQgcm02ODIwMF9pbml0X3NlcXVlbmNlKHN0cnVjdCBybTY4MjAwICpjdHgpDQo+ICt7DQo+ ICsJLyogRW50ZXIgQ01EMiB3aXRoIHBhZ2UgMCAqLw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBN Q1NfQ01EX01PREVfU1csIE1DU19DTUQyX1AwKTsNCj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgs IE1DU19FWFRfUFdSX0lDLCAweEMwLCAweDUzLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0 eCwgTUNTX0JUMkNUUiwgMHhFNSk7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19TRVRBVkRE LCAweDBBKTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1NFVEFWRUUsIDB4MEEpOw0KPiAr CWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU0dPUENUUiwgMHg1Mik7DQo+ICsJZGNzX3dyaXRlX3Nl cShjdHgsIE1DU19CVDNDVFIsIDB4NTMpOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQlQ0 Q1RSLCAweDVBKTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0lOVkNUUiwgMHgwMCk7DQo+ ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19TVEJDVFIsIDB4MEEpOw0KPiArCWRjc193cml0ZV9z ZXEoY3R4LCBNQ1NfU0RDVFIsIDB4MDYpOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfVkNN Q1RSLCAweDU2KTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1NFVFZHTiwgMHhBMCwgMHgw MCk7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19TRVRWR1AsIDB4QTAsIDB4MDApOw0KPiAr CWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU1dfQ1RSTCwgMHgxMSk7IC8qIDIgZGF0YSBsYW5lcywg c2VlIGRvYyAqLw0KPiArDQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19DTURfTU9ERV9TVywg TUNTX0NNRDJfUDIpOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBHT0FfVlNUVjEsIDB4MDUpOw0K PiArCWRjc193cml0ZV9zZXEoY3R4LCAweDAyLCAweDBCKTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0 eCwgMHgwMywgMHgwRik7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4MDQsIDB4N0QsIDB4MDAs IDB4NTApOw0KPiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgR09BX1ZTVFYyLCAweDA1LCAweDE2 LCAweDBELCAweDExLCAweDdELCAweDAwLA0KPiArCQkJICAweDUwKTsNCj4gKwlkY3Nfd3JpdGVf Y21kX3NlcShjdHgsIEdPQV9WQ0xLMSwgMHgwNywgMHgwOCwgMHgwMSwgMHgwMiwgMHgwMCwgMHg3 RCwNCj4gKwkJCSAgMHgwMCwgMHg4NSwgMHgwOCk7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4 LCBHT0FfVkNMSzIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDAsIDB4N0QsDQo+ICsJCQkg IDB4MDAsIDB4ODUsIDB4MDgpOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBHT0FfVkNMS19PUFQx LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KPiArCQkgICAgICAweDAwLCAw eDAwLCAweDAwLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIEdPQV9CSUNMSzEs IDB4MDcsIDB4MDgpOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCAweDJELCAweDAxKTsNCj4gKwlk Y3Nfd3JpdGVfc2VxKGN0eCwgMHgyRiwgMHgwMiwgMHgwMCwgMHg0MCwgMHgwNSwgMHgwOCwgMHg1 NCwgMHg3RCwNCj4gKwkJICAgICAgMHgwMCk7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBH T0FfQklDTEsyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVf c2VxKGN0eCwgMHgzRCwgMHg0MCk7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4M0YsIDB4MDUs IDB4MDgsIDB4NTQsIDB4N0QsIDB4MDApOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBHT0FfQklD TEszLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KPiArCQkgICAgICAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX0JJ Q0xLNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCj4gKwkJICAgICAgMHgw MCwgMHgwMCk7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4NTgsIDB4MDAsIDB4MDAsIDB4MDAp Ow0KPiArCWRjc193cml0ZV9zZXEoY3R4LCBHT0FfQklDTEtfT1BUMSwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCk7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIEdPQV9CSUNMS19PUFQyLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KPiArCQkgICAgICAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwg TUNTX0dPQV9HUE8xLCAweDAwLCAweDAwLCAweDAwLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfc2Vx KGN0eCwgTUNTX0dPQV9HUE8yLCAweDAwLCAweDIwLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfc2Vx KGN0eCwgTUNTX0dPQV9FUSwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwNCj4g KwkJICAgICAgMHgwMCwgMHgwMCk7DQo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0FfQ0xL X0dBTExPTiwgMHgwMCwgMHgwMCk7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09B X0ZTX1NFTDAsIDB4QkYsIDB4MDIsIDB4MDYsIDB4MTQsIDB4MTAsDQo+ICsJCQkgIDB4MTYsIDB4 MTIsIDB4MDgsIDB4M0YpOw0KPiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9GU19T RUwxLCAweDNGLCAweDNGLCAweDNGLCAweDNGLCAweDBDLA0KPiArCQkJICAweDBBLCAweDBFLCAw eDNGLCAweDNGLCAweDAwKTsNCj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIE1DU19HT0FfRlNf U0VMMiwgMHgwNCwgMHgzRiwgMHgzRiwgMHgzRiwgMHgzRiwNCj4gKwkJCSAgMHgwNSwgMHgwMSwg MHgzRiwgMHgzRiwgMHgwRik7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0ZT X1NFTDMsIDB4MEIsIDB4MEQsIDB4M0YsIDB4M0YsIDB4M0YsDQo+ICsJCQkgIDB4M0YpOw0KPiAr CWRjc193cml0ZV9jbWRfc2VxKGN0eCwgMHhBMiwgMHgzRiwgMHgwOSwgMHgxMywgMHgxNywgMHgx MSwgMHgxNSk7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCAweEE5LCAweDA3LCAweDAzLCAw eDNGKTsNCj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIE1DU19HT0FfQlNfU0VMMCwgMHgzRiwg MHgwNSwgMHgwMSwgMHgxNywgMHgxMywNCj4gKwkJCSAgMHgxNSwgMHgxMSwgMHgwRiwgMHgzRik7 DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDEsIDB4M0YsIDB4M0Ys IDB4M0YsIDB4M0YsIDB4MEIsDQo+ICsJCQkgIDB4MEQsIDB4MDksIDB4M0YsIDB4M0YsIDB4MDcp Ow0KPiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9CU19TRUwyLCAweDAzLCAweDNG LCAweDNGLCAweDNGLCAweDNGLA0KPiArCQkJICAweDAyLCAweDA2LCAweDNGLCAweDNGLCAweDA4 KTsNCj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIE1DU19HT0FfQlNfU0VMMywgMHgwQywgMHgw QSwgMHgzRiwgMHgzRiwgMHgzRiwNCj4gKwkJCSAgMHgzRiwgMHgzRiwgMHgwRSwgMHgxMCwgMHgx NCk7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDQsIDB4MTIsIDB4 MTYsIDB4MDAsIDB4MDQsIDB4M0YpOw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCAweERDLCAweDAy KTsNCj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHhERSwgMHgxMik7DQo+ICsNCj4gKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgTUNTX0NNRF9NT0RFX1NXLCAweDBFKTsgLyogTm8gZG9jdW1lbnRhdGlvbiAq Lw0KPiArCWRjc193cml0ZV9zZXEoY3R4LCAweDAxLCAweDc1KTsNCj4gKw0KPiArCWRjc193cml0 ZV9zZXEoY3R4LCBNQ1NfQ01EX01PREVfU1csIE1DU19DTUQyX1AzKTsNCj4gKwlkY3Nfd3JpdGVf Y21kX3NlcShjdHgsIE1DU19HQU1NQV9WUCwgMHgwMCwgMHgwQywgMHgxMiwgMHgwRSwgMHgwNiwN Cj4gKwkJCSAgMHgxMiwgMHgwRSwgMHgwQiwgMHgxNSwgMHgwQiwgMHgxMCwgMHgwNywgMHgwRiwN Cj4gKwkJCSAgMHgxMiwgMHgwQywgMHgwMCk7DQo+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBN Q1NfR0FNTUFfVk4sIDB4MDAsIDB4MEMsIDB4MTIsIDB4MEUsIDB4MDYsDQo+ICsJCQkgIDB4MTIs IDB4MEUsIDB4MEIsIDB4MTUsIDB4MEIsIDB4MTAsIDB4MDcsIDB4MEYsDQo+ICsJCQkgIDB4MTIs IDB4MEMsIDB4MDApOw0KPiArDQo+ICsJLyogRXhpdCBDTUQyICovDQo+ICsJZGNzX3dyaXRlX3Nl cShjdHgsIE1DU19DTURfTU9ERV9TVywgTUNTX0NNRDFfVUNTKTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGludCBybTY4MjAwX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpDQo+ICt7DQo+ ICsJc3RydWN0IHJtNjgyMDAgKmN0eCA9IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwpOw0KPiArDQo+ ICsJaWYgKCFjdHgtPmVuYWJsZWQpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJaWYgKGN0eC0+ YmxfZGV2KSB7DQo+ICsJCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VS RE9XTjsNCj4gKwkJY3R4LT5ibF9kZXYtPnByb3BzLnN0YXRlIHw9IEJMX0NPUkVfRkJCTEFOSzsN Cj4gKwkJYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoY3R4LT5ibF9kZXYpOw0KPiArCX0NCj4gKw0K PiArCWN0eC0+ZW5hYmxlZCA9IGZhbHNlOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgcm02ODIwMF91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwp DQo+ICt7DQo+ICsJc3RydWN0IHJtNjgyMDAgKmN0eCA9IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwp Ow0KPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShj dHgtPmRldik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmICghY3R4LT5wcmVwYXJlZCkNCj4g KwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2Zm KGRzaSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJRFJNX1dBUk4oImZhaWxlZCB0byBzZXQgZGlzcGxh eSBvZmY6ICVkXG4iLCByZXQpOw0KPiArDQo+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX2VudGVyX3Ns ZWVwX21vZGUoZHNpKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlEUk1fV0FSTigiZmFpbGVkIHRvIGVu dGVyIHNsZWVwIG1vZGU6ICVkXG4iLCByZXQpOw0KPiArDQo+ICsJbXNsZWVwKDEyMCk7DQo+ICsN Cj4gKwlpZiAoY3R4LT5yZXNldF9ncGlvKSB7DQo+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVl cChjdHgtPnJlc2V0X2dwaW8sIDEpOw0KPiArCQltc2xlZXAoMjApOw0KPiArCX0NCj4gKw0KPiAr CXJlZ3VsYXRvcl9kaXNhYmxlKGN0eC0+c3VwcGx5KTsNCj4gKw0KPiArCWN0eC0+cHJlcGFyZWQg PSBmYWxzZTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHJt NjgyMDBfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkNCj4gK3sNCj4gKwlzdHJ1Y3Qg cm02ODIwMCAqY3R4ID0gcGFuZWxfdG9fcm02ODIwMChwYW5lbCk7DQo+ICsJc3RydWN0IG1pcGlf ZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsNCj4gKwlpbnQg cmV0Ow0KPiArDQo+ICsJaWYgKGN0eC0+cHJlcGFyZWQpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShjdHgtPnN1cHBseSk7DQo+ICsJaWYgKHJldCA8IDAp IHsNCj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIHN1cHBseTogJWRcbiIsIHJldCk7 DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGN0eC0+cmVzZXRfZ3Bpbykg ew0KPiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAwKTsNCj4g KwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGN0eC0+cmVzZXRfZ3BpbywgMSk7DQo+ICsJCW1z bGVlcCgyMCk7DQo+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8s IDApOw0KPiArCQltc2xlZXAoMTAwKTsNCj4gKwl9DQo+ICsNCj4gKwlybTY4MjAwX2luaXRfc2Vx dWVuY2UoY3R4KTsNCj4gKw0KPiArCXJldCA9IG1pcGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUo ZHNpKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJbXNsZWVwKDEy NSk7DQo+ICsNCj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24oZHNpKTsNCj4g KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJbXNsZWVwKDIwKTsNCj4gKw0K PiArCWN0eC0+cHJlcGFyZWQgPSB0cnVlOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgcm02ODIwMF9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpDQo+ ICt7DQo+ICsJc3RydWN0IHJtNjgyMDAgKmN0eCA9IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwpOw0K PiArDQo+ICsJaWYgKGN0eC0+ZW5hYmxlZCkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlpZiAo Y3R4LT5ibF9kZXYpIHsNCj4gKwkJY3R4LT5ibF9kZXYtPnByb3BzLnN0YXRlICY9IH5CTF9DT1JF X0ZCQkxBTks7DQo+ICsJCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VOQkxB Tks7DQo+ICsJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGN0eC0+YmxfZGV2KTsNCj4gKwl9DQo+ ICsNCj4gKwljdHgtPmVuYWJsZWQgPSB0cnVlOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgcm02ODIwMF9nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFu ZWwpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7DQo+ICsNCj4gKwlt b2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21vZGUpOw0KPiAr CWlmICghbW9kZSkgew0KPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBhZGQgbW9kZSAldXgldXhA JXVcbiIsDQo+ICsJCQkgIGRlZmF1bHRfbW9kZS5oZGlzcGxheSwgZGVmYXVsdF9tb2RlLnZkaXNw bGF5LA0KPiArCQkJICBkZWZhdWx0X21vZGUudnJlZnJlc2gpOw0KPiArCQlyZXR1cm4gLUVOT01F TTsNCj4gKwl9DQo+ICsNCj4gKwlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsNCj4gKw0KPiArCW1v ZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVE Ow0KPiArCWRybV9tb2RlX3Byb2JlZF9hZGQocGFuZWwtPmNvbm5lY3RvciwgbW9kZSk7DQo+ICsN Cj4gKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2RlLT53aWR0 aF9tbTsNCj4gKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gbW9k ZS0+aGVpZ2h0X21tOw0KPiArDQo+ICsJcmV0dXJuIDE7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIHJtNjgyMDBfZHJtX2Z1bmNzID0gew0KPiArCS5k aXNhYmxlICAgPSBybTY4MjAwX2Rpc2FibGUsDQo+ICsJLnVucHJlcGFyZSA9IHJtNjgyMDBfdW5w cmVwYXJlLA0KPiArCS5wcmVwYXJlICAgPSBybTY4MjAwX3ByZXBhcmUsDQo+ICsJLmVuYWJsZSAg ICA9IHJtNjgyMDBfZW5hYmxlLA0KPiArCS5nZXRfbW9kZXMgPSBybTY4MjAwX2dldF9tb2RlcywN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgcm02ODIwMF9wcm9iZShzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2kpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmRzaS0+ZGV2Ow0K PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqYmFja2xpZ2h0Ow0KPiArCXN0cnVjdCBybTY4MjAwICpj dHg7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWN0eCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVv ZigqY3R4KSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFjdHgpDQo+ICsJCXJldHVybiAtRU5PTUVN Ow0KPiArDQo+ICsJY3R4LT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2 LCAicmVzZXQiLCBHUElPRF9PVVRfTE9XKTsNCj4gKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3Bp bykpIHsNCj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlc2V0LWdwaW9cbiIpOw0KPiAr CQlyZXR1cm4gUFRSX0VSUihjdHgtPnJlc2V0X2dwaW8pOw0KPiArCX0NCj4gKw0KPiArCWN0eC0+ c3VwcGx5ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgInBvd2VyIik7DQo+ICsJaWYgKElTX0VS UihjdHgtPnN1cHBseSkpIHsNCj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlZ3VsYXRv clxuIik7DQo+ICsJCXJldHVybiBQVFJfRVJSKGN0eC0+c3VwcGx5KTsNCj4gKwl9DQo+ICsNCj4g KwliYWNrbGlnaHQgPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgImJhY2tsaWdodCIs IDApOw0KPiArCWlmIChiYWNrbGlnaHQpIHsNCj4gKwkJY3R4LT5ibF9kZXYgPSBvZl9maW5kX2Jh Y2tsaWdodF9ieV9ub2RlKGJhY2tsaWdodCk7DQo+ICsJCW9mX25vZGVfcHV0KGJhY2tsaWdodCk7 DQo+ICsNCj4gKwkJaWYgKCFjdHgtPmJsX2RldikNCj4gKwkJCXJldHVybiAtRVBST0JFX0RFRkVS Ow0KPiArCX0NCj4gKw0KPiArCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgY3R4KTsNCj4gKw0K PiArCWN0eC0+ZGV2ID0gZGV2Ow0KPiArDQo+ICsJZHNpLT5sYW5lcyA9IDI7DQo+ICsJZHNpLT5m b3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4Ow0KPiArCWRzaS0+bW9kZV9mbGFncyA9IE1JUElf RFNJX01PREVfVklERU8gfCBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUIHwNCj4gKwkJCSAgTUlQ SV9EU0lfTU9ERV9MUE07DQo+ICsNCj4gKwlkcm1fcGFuZWxfaW5pdCgmY3R4LT5wYW5lbCk7DQo+ ICsJY3R4LT5wYW5lbC5kZXYgPSBkZXY7DQo+ICsJY3R4LT5wYW5lbC5mdW5jcyA9ICZybTY4MjAw X2RybV9mdW5jczsNCj4gKw0KPiArCWRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOw0KPiArDQo+ ICsJcmV0ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7DQo+ICsJaWYgKHJldCA8IDApIHsNCj4gKwkJ ZGV2X2VycihkZXYsICJtaXBpX2RzaV9hdHRhY2ggZmFpbGVkLiBJcyBob3N0IHJlYWR5P1xuIik7 DQo+ICsJCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOw0KPiArCQlpZiAoY3R4LT5ibF9k ZXYpDQo+ICsJCQlwdXRfZGV2aWNlKCZjdHgtPmJsX2Rldi0+ZGV2KTsNCj4gKwkJcmV0dXJuIHJl dDsNCj4gKwl9DQo+ICsNCj4gKwlEUk1fSU5GTyhEUlZfTkFNRSAiX3BhbmVsICV1eCV1QCV1ICV1 YnBwIGRzaSAldWRsIC0gcmVhZHlcbiIsDQo+ICsJCSBkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRl ZmF1bHRfbW9kZS52ZGlzcGxheSwNCj4gKwkJIGRlZmF1bHRfbW9kZS52cmVmcmVzaCwNCj4gKwkJ IG1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAoZHNpLT5mb3JtYXQpLCBkc2ktPmxhbmVzKTsN Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHJtNjgyMDBfcmVt b3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkNCj4gK3sNCj4gKwlzdHJ1Y3Qgcm02ODIw MCAqY3R4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsNCj4gKw0KPiArCWlmIChjdHgtPmJs X2RldikNCj4gKwkJcHV0X2RldmljZSgmY3R4LT5ibF9kZXYtPmRldik7DQo+ICsNCj4gKwltaXBp X2RzaV9kZXRhY2goZHNpKTsNCj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsNCj4g Kw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCByYXlkaXVtX3JtNjgyMDBfb2ZfbWF0Y2hbXSA9IHsNCj4gKwl7IC5jb21wYXRpYmxl ID0gInJheWRpdW0scm02ODIwMCIgfSwNCj4gKwl7IH0NCj4gK307DQo+ICtNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCByYXlkaXVtX3JtNjgyMDBfb2ZfbWF0Y2gpOw0KPiArDQo+ICtzdGF0aWMgc3Ry dWN0IG1pcGlfZHNpX2RyaXZlciByYXlkaXVtX3JtNjgyMDBfZHJpdmVyID0gew0KPiArCS5wcm9i ZSAgPSBybTY4MjAwX3Byb2JlLA0KPiArCS5yZW1vdmUgPSBybTY4MjAwX3JlbW92ZSwNCj4gKwku ZHJpdmVyID0gew0KPiArCQkubmFtZSA9IERSVl9OQU1FICJfcGFuZWwiLA0KPiArCQkub2ZfbWF0 Y2hfdGFibGUgPSByYXlkaXVtX3JtNjgyMDBfb2ZfbWF0Y2gsDQo+ICsJfSwNCj4gK307DQo+ICtt b2R1bGVfbWlwaV9kc2lfZHJpdmVyKHJheWRpdW1fcm02ODIwMF9kcml2ZXIpOw0KPiArDQo+ICtN T0RVTEVfQVVUSE9SKCJQaGlsaXBwZSBDb3JudSA8cGhpbGlwcGUuY29ybnVAc3QuY29tPiIpOw0K PiArTU9EVUxFX0FVVEhPUigiWWFubmljayBGZXJ0cmUgPHlhbm5pY2suZmVydHJlQHN0LmNvbT4i KTsNCj4gK01PRFVMRV9ERVNDUklQVElPTigiRFJNIERyaXZlciBmb3IgUmF5ZGl1bSBSTTY4MjAw IE1JUEkgRFNJIHBhbmVsIik7DQo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo=