Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp6968332rwi; Mon, 24 Oct 2022 08:14:28 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7gIce7SPnfQgSzPb1CyqxB9+ildNMaBKWzFxZ/EDI3QjsmCXUNeuRp9XAoRg9pSPmVm4ap X-Received: by 2002:a17:907:3e06:b0:733:693:600e with SMTP id hp6-20020a1709073e0600b007330693600emr27148807ejc.410.1666624468048; Mon, 24 Oct 2022 08:14:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666624468; cv=none; d=google.com; s=arc-20160816; b=bPOtAbuvudNmlEc8xiPQb5IzhmOhmrSFjA4HC9dH4BySuBBd76wehuZPL1iI0lKcih 01uQiA8cKVABNfI03gXIy6mcfjKDoeDFQKEPR2bR7ePRV78lVdArITRBkzOnaEjXnCiI HCGk+VlJkv4CRxtGVYOaaSQRjLT8yJ/YNWsKgo5Y2XSjbLs1X9roGy6UF1VeufKRoEon AcximJBJ64UzWZyNGRhMVcTIY0nLmMoL/YcDL9jxTVEWqymSJpdjOhZC8+7S5OCX40M8 AiyJ1lCYasnuma/DztD4/4ywX1fNUGtm2OcZEyPX1ZWpzkgDCFv01Uumv8uQ93JN9HU3 IEXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=UxA9De5blXiZfHxNqVtFHe7ir4DoUWcEyKeCRACv8Gs=; b=fa/uh1vWu01EflmrWMnjY9jy/hhXG283JY7r18Il0ANjaWrvxgkSoTLW1X2cAfhBtD P4Zqttol8VA/W/94pp0BbR6KszNDYlJzcdbRgjqVk1zl9CpnMo6Iq/DdEvpaNx1CgyFa 0tunVRge6aFSMhoTJlGPICa8pkC4+DgVsTF0lYqr55Sx80e15e1rx6pxAJtnFB0lsXhl mbEzO1JjCTY5e1q6TyLpd/6gVrMur5P2SSnrDF5BC45OLe5HxzXoGIsvxnIQ2KJ/0B3Z /sJ7E4xIICyYvo7J7xxOxtEL+5CN9846j82dkP/zemWL71PEpc6/scrmLPzWIkqf6KrQ JHdQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ZqPsWhfQ; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b="p/28LGpi"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cs13-20020a0564020c4d00b0045c93142111si8710edb.70.2022.10.24.08.14.01; Mon, 24 Oct 2022 08:14:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ZqPsWhfQ; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b="p/28LGpi"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235050AbiJXOUZ (ORCPT + 99 others); Mon, 24 Oct 2022 10:20:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237011AbiJXOPc (ORCPT ); Mon, 24 Oct 2022 10:15:32 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DB9C52FE8 for ; Mon, 24 Oct 2022 05:55:14 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 6D1531FD4D; Mon, 24 Oct 2022 12:52:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1666615961; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=UxA9De5blXiZfHxNqVtFHe7ir4DoUWcEyKeCRACv8Gs=; b=ZqPsWhfQ+w2bZCGh9QgkBszO3F59xt+ZlkeLWpdunSPResD5omF0V/z3q5lDURwu5CnxCv ild1AnVqK4RTzBS5kooK+XyIO8NaroqAAqZFWS/zP8rv71li0VJBchxc6RmUcR91gQB1sq cNrv05raXLToOHcEh2PtW2pzr93uZ/o= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1666615961; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=UxA9De5blXiZfHxNqVtFHe7ir4DoUWcEyKeCRACv8Gs=; b=p/28LGpiQptgnUf1hdl3Tjd0xzDOBkU3AMrwJ2EfQ8f4+YZ0qjgms2Bn4UKX+evceyfNQs 8oeTDlLc6nWTQOAQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 2649513A79; Mon, 24 Oct 2022 12:52:41 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id zcpyCJmKVmPbaAAAMHmgww (envelope-from ); Mon, 24 Oct 2022 12:52:41 +0000 Message-ID: <8085a458-6466-4fd8-bae6-e984f47e54df@suse.de> Date: Mon, 24 Oct 2022 14:52:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: Re: [PATCH 2/2] drm/tiny: add support for tft displays based on ilitek, ili9488 Content-Language: en-US To: Tommaso Merciai Cc: michael@amarulasolutions.com, Sam Ravnborg , linuxfancy@googlegroups.com, Javier Martinez Canillas , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= , Maxime Ripard , kamlesh.gurudasani@gmail.com, linux-amarula@amarulasolutions.com References: <20221018164532.1705215-1-tommaso.merciai@amarulasolutions.com> <20221018164532.1705215-3-tommaso.merciai@amarulasolutions.com> From: Thomas Zimmermann In-Reply-To: <20221018164532.1705215-3-tommaso.merciai@amarulasolutions.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------0ib1OSjzOUSiubhmDX988yPa" X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------0ib1OSjzOUSiubhmDX988yPa Content-Type: multipart/mixed; boundary="------------MDLQV1xG3E5rIIzShYV0cbyr"; protected-headers="v1" From: Thomas Zimmermann To: Tommaso Merciai Cc: michael@amarulasolutions.com, Sam Ravnborg , linuxfancy@googlegroups.com, Javier Martinez Canillas , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= , Maxime Ripard , kamlesh.gurudasani@gmail.com, linux-amarula@amarulasolutions.com Message-ID: <8085a458-6466-4fd8-bae6-e984f47e54df@suse.de> Subject: Re: [PATCH 2/2] drm/tiny: add support for tft displays based on ilitek, ili9488 References: <20221018164532.1705215-1-tommaso.merciai@amarulasolutions.com> <20221018164532.1705215-3-tommaso.merciai@amarulasolutions.com> In-Reply-To: <20221018164532.1705215-3-tommaso.merciai@amarulasolutions.com> --------------MDLQV1xG3E5rIIzShYV0cbyr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGksDQoNCnRoYW5rcyBmb3IgeW91ciBkcml2ZXIgc3VibWlzc2lvbi4NCg0KQW0gMTguMTAu MjIgdW0gMTg6NDUgc2NocmllYiBUb21tYXNvIE1lcmNpYWk6DQo+IFRoaXMgYWRkcyBzdXBw b3J0IGZvciBpbGl0ZWssaWxpOTQ4OCBiYXNlZCBkaXNwbGF5cyB3aXRoIHNoaWZ0IHJlZ2lz dGVyDQo+IGluIGZyb250IG9mIGNvbnRyb2xsZXIuIFdhdmVzaGFyZSxwaWNvLXJlc3RvdWNo LWxjZC0zLjUgYXJlIHN1Y2ggZGlzcGxheXMNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFRvbW1h c28gTWVyY2lhaSA8dG9tbWFzby5tZXJjaWFpQGFtYXJ1bGFzb2x1dGlvbnMuY29tPg0KPiAt LS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnICAgfCAgMTMgKw0KPiAgIGRy aXZlcnMvZ3B1L2RybS90aW55L01ha2VmaWxlICB8ICAgMSArDQo+ICAgZHJpdmVycy9ncHUv ZHJtL3RpbnkvaWxpOTQ4OC5jIHwgNDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgNDU0IGluc2VydGlvbnMoKykNCj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3RpbnkvaWxpOTQ4OC5jDQo+IA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1 L2RybS90aW55L0tjb25maWcNCj4gaW5kZXggMDI3Y2Q4N2MzZDBkNy4uNmU3MDhlODQxNDgw NiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZw0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnDQo+IEBAIC0xNDgsNiArMTQ4LDE5IEBA IGNvbmZpZyBUSU5ZRFJNX0lMSTk0ODYNCj4gICANCj4gICAJICBJZiBNIGlzIHNlbGVjdGVk IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaWxpOTQ4Ni4NCj4gICANCj4gK2NvbmZpZyBU SU5ZRFJNX0lMSTk0ODgNCj4gKwl0cmlzdGF0ZSAiRFJNIHN1cHBvcnQgZm9yIElMSTk0ODgg ZGlzcGxheSBwYW5lbHMiDQo+ICsJZGVwZW5kcyBvbiBEUk0gJiYgU1BJDQo+ICsJc2VsZWN0 IERSTV9LTVNfSEVMUEVSDQo+ICsJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUg0KDQpUaGlz IGlzIG5vdyBjYWxsZWQgRFJNX0dFTV9ETUFfSEVMUEVSIGFuZCBhbGwgX2NtYV8gaW5maXhl cyBoYXZlIGJlZW4gDQpyZW5hbWVkIHRvIF9kbWFfLiBQbGVhc2UgcmViYXNlIG9udG8gZHJt LXRpcCBvciBkcm0tbWlzYy1uZXh0IGFuZCB5b3UnbGwgDQpub3RpY2UuDQoNCkJVVCBJIHRo aW5rIHRoaXMgZHJpdmVyIHNob3VsZCB1c2UgR0VNIFNITUVNIGhlbHBlcnMgaW5zdGVhZCAo c2VlIA0KRFJNX0dFTV9TSE1FTV9IRUxQRVIpLiBOb3RoaW5nIGhlcmUgbmVlZHMgRE1BIG1l bW9yeSBBRkFJQ1QuDQoNCg0KPiArCXNlbGVjdCBEUk1fTUlQSV9EQkkNCj4gKwlzZWxlY3Qg QkFDS0xJR0hUX0NMQVNTX0RFVklDRQ0KPiArCWhlbHANCj4gKwkgIERSTSBkcml2ZXIgZm9y IHRoZSBmb2xsb3dpbmcgSWxpdGVrIElMSTk0ODggcGFuZWxzOg0KPiArCSAgKiBMQ0QgMy41 IiAzMjB4NDgwIFRGVCAoV2F2ZXNoYXJlIFBpY28tUmVzVG91Y2gtTENELTMuNSIpDQo+ICsN Cj4gKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbGk5 NDg2Lg0KPiArDQo+ICAgY29uZmlnIFRJTllEUk1fTUkwMjgzUVQNCj4gICAJdHJpc3RhdGUg IkRSTSBzdXBwb3J0IGZvciBNSTAyODNRVCINCj4gICAJZGVwZW5kcyBvbiBEUk0gJiYgU1BJ DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS90aW55L01ha2VmaWxlDQo+IGluZGV4IDFkOWQ2MjI3ZTdhYjcuLmFhZDY2 ODNiMmFjNDAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L01ha2VmaWxl DQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L01ha2VmaWxlDQo+IEBAIC0xMSw2ICsx MSw3IEBAIG9iai0kKENPTkZJR19USU5ZRFJNX0lMSTkxNjMpCQkrPSBpbGk5MTYzLm8NCj4g ICBvYmotJChDT05GSUdfVElOWURSTV9JTEk5MjI1KQkJKz0gaWxpOTIyNS5vDQo+ICAgb2Jq LSQoQ09ORklHX1RJTllEUk1fSUxJOTM0MSkJCSs9IGlsaTkzNDEubw0KPiAgIG9iai0kKENP TkZJR19USU5ZRFJNX0lMSTk0ODYpCQkrPSBpbGk5NDg2Lm8NCj4gK29iai0kKENPTkZJR19U SU5ZRFJNX0lMSTk0ODgpCQkrPSBpbGk5NDg4Lm8NCj4gICBvYmotJChDT05GSUdfVElOWURS TV9NSTAyODNRVCkJCSs9IG1pMDI4M3F0Lm8NCj4gICBvYmotJChDT05GSUdfVElOWURSTV9S RVBBUEVSKQkJKz0gcmVwYXBlci5vDQo+ICAgb2JqLSQoQ09ORklHX1RJTllEUk1fU1Q3NTg2 KQkJKz0gc3Q3NTg2Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2ls aTk0ODguYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2lsaTk0ODguYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5iOTRkOWQ0ZmY0NTQ0DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvaWxpOTQ4OC5jDQo+ IEBAIC0wLDAgKzEsNDQwIEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCsNCj4gKy8qDQo+ICsgKiBEUk0gZHJpdmVyIGZvciBJbGl0ZWsgSUxJOTQ4OCBwYW5l bHMNCj4gKyAqDQo+ICsgKiBDb3B5cmlnaHQgMjAyMCBLYW1sZXNoIEd1cnVkYXNhbmkgPGth bWxlc2guZ3VydWRhc2FuaUBnbWFpbC5jb20+DQoNCkhlJ3MgYWxzbyBpbiBDQy4gU2hvdWxk bid0IGhlIGhhdmUgc2lnbmVkIG9mZiB0aGUgcGF0Y2g/DQoNCj4gKyAqLw0KPiArDQo+ICsj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+DQo+ICsjaW5j bHVkZSA8bGludXgvc3BpL3NwaS5oPg0KDQplbXB0eSBsaW5lIGhlcmUNCg0KPiArI2luY2x1 ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWNfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4NCj4gKyNpbmNs dWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dl bV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBl ci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZGFtYWdlX2hlbHBlci5oPg0KPiArI2luY2x1 ZGUgPGRybS9kcm1fZnJhbWVidWZmZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9h dG9taWNfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5o Pg0KPiArI2luY2x1ZGUgPGRybS9kcm1fbWFuYWdlZC5oPg0KPiArI2luY2x1ZGUgPGRybS9k cm1fbWlwaV9kYmkuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzZXRfaGVscGVyLmg+ DQoNClRoaXMgYmxvY2sgaGFzIHRvIGJlIG9yZGVyIGFscGhhYmV0aWNhbGx5Lg0KDQo+ICsN Cj4gKyNkZWZpbmUgSUxJOTQ4OF9WQ09NX0NPTlRST0xfMQkJCTB4QzUNCj4gKyNkZWZpbmUg SUxJOTQ4OF9DT0xVTU5fQUREUkVTU19TRVQJCTB4MkENCj4gKyNkZWZpbmUgSUxJOTQ4OF9Q QUdFX0FERFJFU1NfU0VUCQkweDJCDQo+ICsjZGVmaW5lIElMSTk0ODhfTUVNT1JZX1dSSVRF CQkJMHgyQw0KPiArI2RlZmluZSBJTEk5NDg4X1BPU0lUSVZFX0dBTU1BX0NPUlJFQ1RJT04J MHhFMA0KPiArI2RlZmluZSBJTEk5NDg4X05FR0FUSVZFX0dBTU1BX0NPUlJFQ1RJT04JMHhF MQ0KPiArI2RlZmluZSBJTEk5NDg4X1BPV0VSX0NPTlRST0xfMQkJCTB4QzANCj4gKyNkZWZp bmUgSUxJOTQ4OF9QT1dFUl9DT05UUk9MXzIJCQkweEMxDQo+ICsjZGVmaW5lIElMSTk0ODhf UE9XRVJfQ09OVFJPTF8zCQkJMHhDMg0KPiArI2RlZmluZSBJTEk5NDg4X01FTV9BQ0NFU1Nf Q09OVFJPTAkJMHgzNg0KPiArI2RlZmluZSBJTEk5NDg4X0NPTE1PRF9QSVhFTF9GT1JNQVRf U0VUCQkweDNBDQo+ICsjZGVmaW5lIElMSTk0ODhfSU5URVJGQUNFX01PREVfQ09OVFJPTAkJ MHhCMA0KPiArI2RlZmluZSBJTEk5NDg4X0ZSQU1FX1JBVEVfQ09OVFJPTF9QQVJUSUFMCTB4 QjMNCj4gKyNkZWZpbmUgSUxJOTQ4OF9ESVNQTEFZX0lOVkVSU0lPTl9PTgkJMHgyMQ0KPiAr I2RlZmluZSBJTEk5NDg4X0RJU1BMQVlfSU5WRVJTSU9OX0NPTlRST0wJMHhCNA0KPiArI2Rl ZmluZSBJTEk5NDg4X0RJU1BMQVlfRlVOQ1RJT05fQ09OVFJPTAkweEI2DQo+ICsjZGVmaW5l IElMSTk0ODhfRU5UUllfTU9ERV9TRVQJCQkweEI3DQo+ICsjZGVmaW5lIElMSTk0ODhfSFNf TEFORVNfQ09OVFJPTAkJMHhCRQ0KPiArI2RlZmluZSBJTEk5NDg4X1NFVF9JTUFHRV9GVU5D VElPTgkJMHhFOQ0KPiArI2RlZmluZSBJTEk5NDg4X0FESlVTVF9DT05UUk9MXzMJCTB4RjcN Cj4gKyNkZWZpbmUgSUxJOTQ4OF9ESVNQTEFZX09OCQkJMHgyOQ0KPiArI2RlZmluZSBJTEk5 NDg4X0RJU1BMQVlfT0ZGCQkJMHgyOA0KPiArI2RlZmluZSBJTEk5NDg4X0VOVEVSX1NMRUVQ X01PREUJCTB4MTANCj4gKyNkZWZpbmUgSUxJOTQ4OF9EQklfQlBQMTgJCQkweDA2DQo+ICsj ZGVmaW5lIElMSTk0ODhfREJJX0JQUDE2CQkJMHgwNQ0KPiArI2RlZmluZSBJTEk5NDg4X0RQ SV9CUFAyNAkJCTB4NzANCj4gKyNkZWZpbmUgSUxJOTQ4OF9EUElfQlBQMTgJCQkweDYwDQo+ ICsjZGVmaW5lIElMSTk0ODhfRFBJX0JQUDE2CQkJMHg1MA0KPiArI2RlZmluZSBJTEk5NDg4 X0ZSQU1FX1JBVEVfQ09OVFJPTF9OT1JNQUwJMHhCMQ0KPiArI2RlZmluZSBJTEk5NDg4X1NM RUVQX09VVAkJCTB4MTENCj4gKw0KPiArI2RlZmluZSBJTEk5NDg4X01BRENUTF9SR0IJQklU KDIpDQo+ICsjZGVmaW5lIElMSTk0ODhfTUFEQ1RMX0JHUglCSVQoMykNCj4gKyNkZWZpbmUg SUxJOTQ4OF9NQURDVExfTVYJQklUKDUpDQo+ICsjZGVmaW5lIElMSTk0ODhfTUFEQ1RMX01Y CUJJVCg2KQ0KPiArI2RlZmluZSBJTEk5NDg4X01BRENUTF9NWQlCSVQoNykNCj4gKw0KPiAr c3RhdGljIHZvaWQgaWxpOTQ4OF9yZ2I1NjVfdG9fcmdiNjY2X2xpbmUodTggKmRzdCwgdTE2 ICpzYnVmLA0KPiArCQkJCQkgIHVuc2lnbmVkIGludCBwaXhlbHMpDQo+ICt7DQo+ICsJdW5z aWduZWQgaW50IHg7DQo+ICsNCj4gKwlmb3IgKHggPSAwOyB4IDwgcGl4ZWxzOyB4KyspIHsN Cj4gKwkJKmRzdCsrID0gKCgqc2J1ZiAmIDB4RjgwMCkgPj4gOCk7DQo+ICsJCSpkc3QrKyA9 ICgoKnNidWYgJiAweDA3RTApID4+IDMpOw0KPiArCQkqZHN0KysgPSAoKCpzYnVmICYgMHgw MDFGKSA8PCAzKTsNCj4gKwkJc2J1ZisrOw0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgaWxpOTQ4OF9yZ2I1NjVfdG9fcmdiNjY2KHU4ICpkc3QsIHZvaWQgKnZhZGRyLA0K PiArCQkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsDQo+ICsJCQkJICAgICBz dHJ1Y3QgZHJtX3JlY3QgKnJlY3QpDQo+ICt7DQo+ICsJdW5zaWduZWQgbG9uZyBsaW5lcGl4 ZWxzID0gZHJtX3JlY3Rfd2lkdGgocmVjdCk7DQo+ICsJdW5zaWduZWQgbG9uZyBsaW5lcyA9 IGRybV9yZWN0X2hlaWdodChyZWN0KTsNCj4gKwlzaXplX3QgZHN0X2xlbiA9IGxpbmVwaXhl bHMgKiAzOw0KPiArCXNpemVfdCBzcmNfbGVuID0gbGluZXBpeGVscyAqIGZiLT5mb3JtYXQt PmNwcFswXTsNCj4gKwl1bnNpZ25lZCBpbnQgeTsNCj4gKwl1MTYgKnNidWY7DQo+ICsNCj4g KwkvKg0KPiArCSAqIFRoZSBjbWEgbWVtb3J5IGlzIHdyaXRlLWNvbWJpbmVkIHNvIHJlYWRz IGFyZSB1bmNhY2hlZC4NCj4gKwkgKiBTcGVlZCB1cCBieSBmZXRjaGluZyBvbmUgbGluZSBh dCBhIHRpbWUuDQo+ICsJICovDQo+ICsJc2J1ZiA9IGttYWxsb2Moc3JjX2xlbiwgR0ZQX0tF Uk5FTCk7DQo+ICsJaWYgKCFzYnVmKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwltZW1zZXQo c2J1ZiwgMCwgc3JjX2xlbik7DQo+ICsNCj4gKwl2YWRkciArPSByZWN0LT55MSAqIGZiLT5w aXRjaGVzWzBdICsgcmVjdC0+eDEgKiBmYi0+Zm9ybWF0LT5jcHBbMF07DQo+ICsJZm9yICh5 ID0gMDsgeSA8IGxpbmVzOyB5KyspIHsNCj4gKwkJbWVtY3B5KHNidWYsIHZhZGRyLCBzcmNf bGVuKTsNCj4gKwkJaWxpOTQ4OF9yZ2I1NjVfdG9fcmdiNjY2X2xpbmUoZHN0LCBzYnVmLCBs aW5lcGl4ZWxzKTsNCj4gKwkJdmFkZHIgKz0gZmItPnBpdGNoZXNbMF07DQo+ICsJCWRzdCAr PSBkc3RfbGVuOw0KPiArCX0NCj4gKwlrZnJlZShzYnVmKTsNCj4gK30NCg0KV2Ugbm93IGhh dmUgbXVjaCBiZXR0ZXIgc3VwcG9ydCBmb3IgZm9ybWF0IGNvbnZlcnNpb24uIEZyb20gcmVh ZGluZyB0aGUgDQpjb252ZXJzaW9uIGNvZGUsIHRoZSBuYXRpdmUgcGl4ZWwgaXMgMy1ieXRl IHdpZGUgd2l0aCA2IGZpbGxlciBiaXRzIGF0IA0KdGhlIE1TQi4gU28gdGhlIGNhbm9uaWNh bCBuYW1lIHNob3VsZCBiZSBEUk1fRk9STUFUX1hSR0I2NjY2Lg0KDQogIDEpIEFkZCBEUk1f Rk9STUFUX1hSR0I2NjY2IHRvIGluY2x1ZGUvdWFwaS9kcm0vZHJtX2ZvdXJjYy5oDQogIDIp IEFkZCB0aGUgUkdCNjY2IGZvcm1hdCBpbnRvIHRvIGRybV9mb3VyY2MuYw0KICAzKSBNb3Zl IHRoZSBoZWxwZXIgZnVuY3Rpb24gaWxpOTQ4OF9yZ2I1NjVfdG9fcmdiNjY2X2xpbmUoKSBp bnRvIA0KZHJtX2Zvcm1hdF9oZWxwZXIuYyB3aXRoIGFuIGFkYXB0ZWQgbmFtZTsgYW5kIHdp cmUgdXAgDQpEUk1fRk9STUFUX1hSR0I2NjY2IHdpdGggdGhlIGNvbnZlcnNpb24gaGVscGVy cy4gVGhlIGNvbnZlcnNpb24gYXQgWzFdIA0KaXMgYSBnb29kIGV4YW1wbGUgdG8gZHVwbGlj YXRlLg0KDQpbMV0gDQpodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92Ni4xLXJj Mi9zb3VyY2UvZHJpdmVycy9ncHUvZHJtL2RybV9mb3JtYXRfaGVscGVyLmMjTDY3Mw0KDQo+ ICsNCj4gK3N0YXRpYyBpbnQgaWxpOTQ4OF9idWZfY29weSh2b2lkICpkc3QsIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLA0KPiArCQkJICAgIHN0cnVjdCBkcm1fcmVjdCAqcmVjdCkN Cj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpjbWFfb2JqID0gZHJtX2Zi X2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7DQo+ICsJdm9pZCAqc3JjID0gY21hX29iai0+dmFk ZHI7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsNCj4gKwlyZXQgPSBkcm1fZ2VtX2ZiX2JlZ2lu X2NwdV9hY2Nlc3MoZmIsIERNQV9GUk9NX0RFVklDRSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJ cmV0dXJuIHJldDsNCj4gKw0KPiArCXN3aXRjaCAoZmItPmZvcm1hdC0+Zm9ybWF0KSB7DQo+ ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToNCj4gKwkJaWxpOTQ4OF9yZ2I1NjVfdG9fcmdi NjY2KGRzdCwgc3JjLCBmYiwgcmVjdCk7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ ICsJCWRldl9lcnJfb25jZShmYi0+ZGV2LT5kZXYsICJGb3JtYXQgaXMgbm90IHN1cHBvcnRl ZDogJXA0Y2NcbiIsDQo+ICsJCQkJJmZiLT5mb3JtYXQtPmZvcm1hdCk7DQo+ICsJCXJldHVy biAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCWRybV9nZW1fZmJfZW5kX2NwdV9hY2Nlc3Mo ZmIsIERNQV9GUk9NX0RFVklDRSk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdm9pZCBpbGk5NDg4X2RiaV9zZXRfd2luZG93X2FkZHJlc3Moc3RydWN0 IG1pcGlfZGJpX2RldiAqZGJpZGV2LA0KPiArCQkJCQl1bnNpZ25lZCBpbnQgeHMsIHVuc2ln bmVkIGludCB4ZSwNCj4gKwkJCQkJdW5zaWduZWQgaW50IHlzLCB1bnNpZ25lZCBpbnQgeWUp DQo+ICt7DQo+ICsJc3RydWN0IG1pcGlfZGJpICpkYmkgPSAmZGJpZGV2LT5kYmk7DQo+ICsN Cj4gKwl4cyArPSBkYmlkZXYtPmxlZnRfb2Zmc2V0Ow0KPiArCXhlICs9IGRiaWRldi0+bGVm dF9vZmZzZXQ7DQo+ICsJeXMgKz0gZGJpZGV2LT50b3Bfb2Zmc2V0Ow0KPiArCXllICs9IGRi aWRldi0+dG9wX29mZnNldDsNCj4gKw0KPiArCW1pcGlfZGJpX2NvbW1hbmQoZGJpLCBNSVBJ X0RDU19TRVRfQ09MVU1OX0FERFJFU1MsICh4cyA+PiA4KSAmIDB4ZmYsDQo+ICsJCQkgeHMg JiAweGZmLCAoeGUgPj4gOCkgJiAweGZmLCB4ZSAmIDB4ZmYpOw0KPiArCW1pcGlfZGJpX2Nv bW1hbmQoZGJpLCBNSVBJX0RDU19TRVRfUEFHRV9BRERSRVNTLCAoeXMgPj4gOCkgJiAweGZm LA0KPiArCQkJIHlzICYgMHhmZiwgKHllID4+IDgpICYgMHhmZiwgeWUgJiAweGZmKTsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgaWxpOTQ4OF9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwgc3RydWN0IGRybV9yZWN0ICpyZWN0KQ0KPiArew0KPiArCXN0cnVj dCBpb3N5c19tYXAgbWFwW0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQo+ICsJc3RydWN0IGlv c3lzX21hcCBkYXRhW0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQo+ICsJc3RydWN0IG1pcGlf ZGJpX2RldiAqZGJpZGV2ID0gZHJtX3RvX21pcGlfZGJpX2RldihmYi0+ZGV2KTsNCj4gKwl1 bnNpZ25lZCBpbnQgaGVpZ2h0ID0gcmVjdC0+eTIgLSByZWN0LT55MTsNCj4gKwl1bnNpZ25l ZCBpbnQgd2lkdGggPSByZWN0LT54MiAtIHJlY3QtPngxOw0KPiArCXN0cnVjdCBtaXBpX2Ri aSAqZGJpID0gJmRiaWRldi0+ZGJpOw0KPiArCWludCBpZHgsIHJldCA9IDA7DQo+ICsJYm9v bCBmdWxsOw0KPiArCXZvaWQgKnRyOw0KPiArDQo+ICsJaWYgKFdBUk5fT04oIWZiKSkNCj4g KwkJcmV0dXJuOw0KPiArDQo+ICsJaWYgKCFkcm1fZGV2X2VudGVyKGZiLT5kZXYsICZpZHgp KQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlyZXQgPSBkcm1fZ2VtX2ZiX3ZtYXAoZmIsIG1h cCwgZGF0YSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnJfZHJtX2Rldl9leGl0Ow0K DQpDYWxsaW5nIHZtYXAgaGVyZSBpcyB0b28gbGF0ZS4gSSBrbm93IHRoYXQgb3RoZXIgTUlQ SSBkcml2ZXJzIHRvIHRoaXMuIA0KVGhlIG92ZXJhbGwgTUlQSSBjb2RlIG5lZWRzIGFuIHVw ZGF0ZS4NCg0KVGhlIGNvcnJlY3Qgd2F5IGlzIHRvIHVzZSBzaGFkb3ctcGxhbmUgaGVscGVy cy4gVGhleSB3aWxsIGdpdmUgeW91IGEgDQpwbGFuZSBzdGF0ZSB3aXRoIHRoZSB2bWFwLWlu ZyBhbHJlYWR5IGVzdGFibGlzaGVkIGFuZCB0aGV5IHdpbGwgcmVtb3ZlIA0KdGhlIG1hcHBp bmcgYWZ0ZXIgdGhlIGNvbW1pdC4gRXJyb3JzIHdpbGwgYmUgaGFuZGxlZCBjb3JyZWN0bHku IFBsZWFzZSANCnNlZSBEUk1fR0VNX1NJTVBMRV9ESVNQTEFZX1BJUEVfU0hBRE9XX1BMQU5F X0ZVTkNTIHdpdGhpbiB0aGUgRFJNIA0KZHJpdmVycy4gSSB0aGluayB0aW55L2NpcnJ1cy5j IHNob3VsZCBiZSBhIGdvb2QgZXhhbXBsZS4NCg0KQmVjYXVzZSB0aGUgcmVzdCBvZiBNSVBJ IGlzbid0IHlldCB0aGVyZSwgaXQncyBvayB0byBrZWVwIHlvdXIgZHJpdmVyIA0KYXMtaXMu IEJ1dCBzaGFkb3ctcGxhbmUgaGVscGVycyBzaG91bGQgYmUgdXNlZCBhdCBzb21lIHBvaW50 Lg0KDQo+ICsNCj4gKwlmdWxsID0gd2lkdGggPT0gZmItPndpZHRoICYmIGhlaWdodCA9PSBm Yi0+aGVpZ2h0Ow0KPiArDQo+ICsJRFJNX0RFQlVHX0tNUygiRmx1c2hpbmcgW0ZCOiVkXSAi IERSTV9SRUNUX0ZNVCAiXG4iLCBmYi0+YmFzZS5pZCwgRFJNX1JFQ1RfQVJHKHJlY3QpKTsN Cj4gKw0KPiArCWlmICghZGJpLT5kYyB8fCAhZnVsbCB8fA0KPiArCSAgICBmYi0+Zm9ybWF0 LT5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUpIHsNCj4gKwkJdHIgPSBkYmlkZXYtPnR4 X2J1ZjsNCj4gKwkJcmV0ID0gaWxpOTQ4OF9idWZfY29weShkYmlkZXYtPnR4X2J1ZiwgZmIs IHJlY3QpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJZ290byBlcnJfbXNnOw0KPiArCX0gZWxz ZSB7DQo+ICsJCXRyID0gZGF0YVswXS52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJz dHJhY3Rpb24gcHJvcGVybHkgKi8NCj4gKwl9DQo+ICsNCj4gKwlpbGk5NDg4X2RiaV9zZXRf d2luZG93X2FkZHJlc3MoZGJpZGV2LCByZWN0LT54MSwgcmVjdC0+eDIgLSAxLCByZWN0LT55 MSwNCj4gKwkJCQkgICAgcmVjdC0+eTIgLSAxKTsNCj4gKw0KPiArCXJldCA9IG1pcGlfZGJp X2NvbW1hbmRfYnVmKGRiaSwgTUlQSV9EQ1NfV1JJVEVfTUVNT1JZX1NUQVJULCB0ciwNCj4g KwkJCQkgICB3aWR0aCAqIGhlaWdodCAqIDMpOw0KPiArZXJyX21zZzoNCj4gKwlpZiAocmV0 KQ0KPiArCQlkcm1fZXJyX29uY2UoZmItPmRldiwgIkZhaWxlZCB0byB1cGRhdGUgZGlzcGxh eSAlZFxuIiwgcmV0KTsNCj4gKw0KPiArCWRybV9nZW1fZmJfdnVubWFwKGZiLCBtYXApOw0K PiArDQo+ICtlcnJfZHJtX2Rldl9leGl0Og0KPiArCWRybV9kZXZfZXhpdChpZHgpOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpbGk5NDg4X3BpcGVfdXBkYXRlKHN0cnVjdCBkcm1f c2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpvbGRfc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUgPSBwaXBlLT5wbGFuZS5zdGF0ZTsNCj4gKwlzdHJ1Y3QgZHJtX3JlY3QgcmVj dDsNCj4gKw0KPiArCWlmICghcGlwZS0+Y3J0Yy5zdGF0ZS0+YWN0aXZlKQ0KPiArCQlyZXR1 cm47DQo+ICsNCj4gKwlpZiAoZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX21lcmdlZChvbGRf c3RhdGUsIHN0YXRlLCAmcmVjdCkpDQo+ICsJCWlsaTk0ODhfZmJfZGlydHkoc3RhdGUtPmZi LCAmcmVjdCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGlsaTk0ODhfcGlwZV9lbmFi bGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLA0KPiArCQkJCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gKwkJCQlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgbWlwaV9kYmlfZGV2ICpk YmlkZXYgPSBkcm1fdG9fbWlwaV9kYmlfZGV2KHBpcGUtPmNydGMuZGV2KTsNCj4gKwlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5mYjsNCj4gKwlzdHJ1Y3Qg bWlwaV9kYmkgKmRiaSA9ICZkYmlkZXYtPmRiaTsNCj4gKwl1OCBhZGRyX21vZGU7DQo+ICsJ c3RydWN0IGRybV9yZWN0IHJlY3QgPSB7DQo+ICsJCS54MSA9IDAsDQo+ICsJCS54MiA9IGZi LT53aWR0aCwNCj4gKwkJLnkxID0gMCwNCj4gKwkJLnkyID0gZmItPmhlaWdodCwNCj4gKwl9 Ow0KPiArCWludCByZXQsIGlkeDsNCj4gKw0KPiArCWlmICghZHJtX2Rldl9lbnRlcihwaXBl LT5jcnRjLmRldiwgJmlkeCkpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCURSTV9ERUJVR19L TVMoIlxuIik7DQo+ICsNCj4gKwlyZXQgPSBtaXBpX2RiaV9wb3dlcm9uX2NvbmRpdGlvbmFs X3Jlc2V0KGRiaWRldik7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCWdvdG8gb3V0X2V4aXQ7 DQo+ICsJaWYgKHJldCA9PSAxKQ0KPiArCQlnb3RvIG91dF9lbmFibGU7DQo+ICsNCj4gKwlt aXBpX2RiaV9jb21tYW5kKGRiaSwgSUxJOTQ4OF9ESVNQTEFZX0lOVkVSU0lPTl9PTik7DQo+ ICsJbWlwaV9kYmlfY29tbWFuZChkYmksIElMSTk0ODhfUE9XRVJfQ09OVFJPTF8zLCAweDMz KTsNCj4gKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgSUxJOTQ4OF9GUkFNRV9SQVRFX0NPTlRS T0xfTk9STUFMLCAweEIwKTsNCj4gKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgSUxJOTQ4OF9N RU1fQUNDRVNTX0NPTlRST0wsIDB4MjgpOw0KPiArDQo+ICsJbWlwaV9kYmlfY29tbWFuZChk YmksIE1JUElfRENTX1NFVF9QSVhFTF9GT1JNQVQsIDB4NjUpOw0KPiArDQo+ICsJbWlwaV9k YmlfY29tbWFuZChkYmksIElMSTk0ODhfUE9TSVRJVkVfR0FNTUFfQ09SUkVDVElPTiwNCj4g KwkJCSAweDAwLCAweDEzLCAweDE4LCAweDA0LCAweDBGLA0KPiArCQkJIDB4MDYsIDB4M0Es IDB4NTYsIDB4NEQsIDB4MDMsDQo+ICsJCQkgMHgwQSwgMHgwNiwgMHgzMCwgMHgzRSwgMHgw Rik7DQo+ICsJbWlwaV9kYmlfY29tbWFuZChkYmksIElMSTk0ODhfTkVHQVRJVkVfR0FNTUFf Q09SUkVDVElPTiwNCj4gKwkJCSAweDAwLCAweDEzLCAweDE4LCAweDAxLCAweDExLA0KPiAr CQkJIDB4MDYsIDB4MzgsIDB4M0EsIDB4NEQsIDB4MDYsDQo+ICsJCQkgMHgwRCwgMHgwQiwg MHgzMSwgMHgzNywgMHgwRik7DQo+ICsNCj4gKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgTUlQ SV9EQ1NfU0VUX1BJWEVMX0ZPUk1BVCwgTUlQSV9EQ1NfUElYRUxfRk1UXzE4QklUKTsNCj4g KwltaXBpX2RiaV9jb21tYW5kKGRiaSwgTUlQSV9EQ1NfRVhJVF9TTEVFUF9NT0RFKTsNCj4g Kwltc2xlZXAoMTIwKTsNCj4gKwltaXBpX2RiaV9jb21tYW5kKGRiaSwgTUlQSV9EQ1NfU0VU X0RJU1BMQVlfT04pOw0KPiArCW1zbGVlcCgxMDApOw0KPiArDQo+ICtvdXRfZW5hYmxlOg0K PiArCXN3aXRjaCAoZGJpZGV2LT5yb3RhdGlvbikgew0KPiArCWRlZmF1bHQ6DQo+ICsJCWFk ZHJfbW9kZSA9IElMSTk0ODhfTUFEQ1RMX01YOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDkw Og0KPiArCQlhZGRyX21vZGUgPSBJTEk5NDg4X01BRENUTF9NVjsNCj4gKwkJYnJlYWs7DQo+ ICsJY2FzZSAxODA6DQo+ICsJCWFkZHJfbW9kZSA9IElMSTk0ODhfTUFEQ1RMX01ZOw0KPiAr CQlicmVhazsNCj4gKwljYXNlIDI3MDoNCj4gKwkJYWRkcl9tb2RlID0gSUxJOTQ4OF9NQURD VExfTVYgfCBJTEk5NDg4X01BRENUTF9NWSB8DQo+ICsJCQlJTEk5NDg4X01BRENUTF9NWDsN Cj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiArCWFkZHJfbW9kZSB8PSBJTEk5NDg4X01BRENUTF9C R1I7DQo+ICsJbWlwaV9kYmlfY29tbWFuZChkYmksIE1JUElfRENTX1NFVF9BRERSRVNTX01P REUsIGFkZHJfbW9kZSk7DQo+ICsJaWxpOTQ4OF9mYl9kaXJ0eShmYiwgJnJlY3QpOw0KPiAr b3V0X2V4aXQ6DQo+ICsJZHJtX2Rldl9leGl0KGlkeCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIGlsaTk0ODhfcGlwZV9kaXNhYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZSAqcGlwZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgbWlwaV9kYmlfZGV2ICpkYmlkZXYgPSBk cm1fdG9fbWlwaV9kYmlfZGV2KHBpcGUtPmNydGMuZGV2KTsNCj4gKwkvKg0KPiArCSAqIFRo aXMgY2FsbGJhY2sgaXMgbm90IHByb3RlY3RlZCBieSBkcm1fZGV2X2VudGVyL2V4aXQgc2lu Y2Ugd2Ugd2FudCB0bw0KPiArCSAqIHR1cm4gb2ZmIHRoZSBkaXNwbGF5IG9uIHJlZ3VsYXIg ZHJpdmVyIHVubG9hZC4gSXQncyBoaWdobHkgdW5saWtlbHkNCj4gKwkgKiB0aGF0IHRoZSB1 bmRlcmx5aW5nIFNQSSBjb250cm9sbGVyIGlzIGdvbmUgc2hvdWxkIHRoaXMgYmUgY2FsbGVk DQo+ICsJICogYWZ0ZXIgdW5wbHVnLg0KPiArCSAqLw0KPiArDQo+ICsJRFJNX0RFQlVHX0tN UygiXG4iKTsNCj4gKw0KPiArCW1pcGlfZGJpX2NvbW1hbmQoJmRiaWRldi0+ZGJpLCBNSVBJ X0RDU19TRVRfRElTUExBWV9PRkYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3QgdTMy IGlsaTk0ODhfZm9ybWF0c1tdID0gew0KPiArCURSTV9GT1JNQVRfUkdCNTY1LA0KDQpBYm91 dCBmb3JtYXRzOiB0aGUgZGlwbGF5J3MgbmF0aXZlIGZvcm1hdHMgc2hvdWxkIGdvIGZpcnN0 LiBUaGVzZSBhcmUgDQooaW1wbGljaXRseSkgcHJlZmVycmVkIGJ5IHVzZXJzcGFjZS4gSWRl YWxseSB5b3VyIGRyaXZlciBzaG91bGQgYmUgYWJsZSANCnRvIGNvcHkgUkdCNjY2IGJ1ZmZl cnMgZGlyZWN0bHkgdG8gdGhlIGRldmljZS4gQnV0IFhSR0I2NjY2IGhhcyBubyANCnVzZXJz cGFjZSBzdXBwb3J0IGFueXdoZXJlIEFGQUlLLiBTbyBpdCdzIHByb2JhYmx5IG9rIHRvIG5v dCBleHBvcnQgdGhhdCANCmZvcm1hdC4NCg0KV2hhdCB5b3Ugc2hvdWxkIGRlZmluYXRlbHkg ZXhwb3J0IGlzIFhSR0I4ODg4LiBUaGF0J3Mgd2hhdCBtb3N0IA0KdXNlcnNwYWNlIGV4cGVj dHMgZnJvbSB0aGUgZHJpdmVyLiBZb3UnbGwgbmVlZCBjb252ZXJzaW9uIGNvZGUgc2ltaWxh cmx5IA0KdG8gdGhlIFJHQjU2NSBoZWxwZXJzLg0KDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIGlsaTk0ODhfcGlw ZV9mdW5jcyA9IHsNCj4gKwkuZW5hYmxlID0gaWxpOTQ4OF9waXBlX2VuYWJsZSwNCj4gKwku ZGlzYWJsZSA9IGlsaTk0ODhfcGlwZV9kaXNhYmxlLA0KPiArCS51cGRhdGUgPSBpbGk5NDg4 X3BpcGVfdXBkYXRlLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlIGlsaTk0ODhfbW9kZSA9IHsNCj4gKwlEUk1fU0lNUExFX01PREUoMzIw LCA0ODAsIDQ5LCA3MyksDQo+ICt9Ow0KPiArDQo+ICtERUZJTkVfRFJNX0dFTV9DTUFfRk9Q UyhpbGk5NDg4X2ZvcHMpOw0KPiArDQo+ICtzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgaWxp OTQ4OF9kcml2ZXIgPSB7DQo+ICsJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9HRU0gfCBE UklWRVJfTU9ERVNFVCB8IERSSVZFUl9BVE9NSUMsDQo+ICsJLmZvcHMJCQk9ICZpbGk5NDg4 X2ZvcHMsDQo+ICsJRFJNX0dFTV9DTUFfRFJJVkVSX09QU19WTUFQLA0KPiArCS5kZWJ1Z2Zz X2luaXQJCT0gbWlwaV9kYmlfZGVidWdmc19pbml0LA0KPiArCS5uYW1lCQkJPSAiaWxpOTQ4 OCIsDQo+ICsJLmRlc2MJCQk9ICJJbGl0ZWsgSUxJOTQ4OCIsDQo+ICsJLmRhdGUJCQk9ICIy MDIyMTAxNyIsDQo+ICsJLm1ham9yCQkJPSAxLA0KPiArCS5taW5vcgkJCT0gMCwNCj4gK307 DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlsaTk0ODhfb2Zf bWF0Y2hbXSA9IHsNCj4gKwl7IC5jb21wYXRpYmxlID0gIndhdmVzaGFyZSxwaWNvLXJ0LWxj ZC0zNSIgfSwNCj4gKwl7IH0NCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBp bGk5NDg4X29mX21hdGNoKTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2 aWNlX2lkIGlsaTk0ODhfaWRbXSA9IHsNCj4gKwl7ICJpbGk5NDg4IiwgMCB9LA0KPiArCXsg fQ0KPiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBpbGk5NDg4X2lkKTsNCj4g Kw0KPiArc3RhdGljIGludCBpbGk5NDg4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp DQo+ICt7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnNwaS0+ZGV2Ow0KPiArCXN0cnVj dCBtaXBpX2RiaV9kZXYgKmRiaWRldjsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOw0K PiArCXN0cnVjdCBtaXBpX2RiaSAqZGJpOw0KPiArCXN0cnVjdCBncGlvX2Rlc2MgKmRjOw0K PiArCXUzMiByb3RhdGlvbiA9IDA7DQo+ICsJc2l6ZV90IGJ1ZnNpemU7DQo+ICsJaW50IHJl dDsNCj4gKw0KPiArCWRiaWRldiA9IGRldm1fZHJtX2Rldl9hbGxvYyhkZXYsICZpbGk5NDg4 X2RyaXZlciwNCj4gKwkJCQkgICAgc3RydWN0IG1pcGlfZGJpX2RldiwgZHJtKTsNCj4gKwlp ZiAoSVNfRVJSKGRiaWRldikpDQo+ICsJCXJldHVybiBQVFJfRVJSKGRiaWRldik7DQo+ICsN Cj4gKwlkYmkgPSAmZGJpZGV2LT5kYmk7DQo+ICsJZHJtID0gJmRiaWRldi0+ZHJtOw0KPiAr DQo+ICsJYnVmc2l6ZSA9IGlsaTk0ODhfbW9kZS52ZGlzcGxheSAqIGlsaTk0ODhfbW9kZS5o ZGlzcGxheSAqIDM7DQo+ICsNCj4gKwlkYmktPnJlc2V0ID0gZGV2bV9ncGlvZF9nZXQoZGV2 LCAicmVzZXQiLCBHUElPRF9PVVRfSElHSCk7DQo+ICsJaWYgKElTX0VSUihkYmktPnJlc2V0 KSkgew0KPiArCQlEUk1fREVWX0VSUk9SKGRldiwgIkZhaWxlZCB0byBnZXQgZ3BpbyAncmVz ZXQnXG4iKTsNCj4gKwkJcmV0dXJuIFBUUl9FUlIoZGJpLT5yZXNldCk7DQo+ICsJfQ0KPiAr DQo+ICsJZGMgPSBkZXZtX2dwaW9kX2dldChkZXYsICJkYyIsIEdQSU9EX09VVF9MT1cpOw0K PiArCWlmIChJU19FUlIoZGMpKSB7DQo+ICsJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVk IHRvIGdldCBncGlvICdkYydcbiIpOw0KPiArCQlyZXR1cm4gUFRSX0VSUihkYyk7DQo+ICsJ fQ0KPiArDQo+ICsJZGJpZGV2LT5iYWNrbGlnaHQgPSBkZXZtX29mX2ZpbmRfYmFja2xpZ2h0 KGRldik7DQo+ICsJaWYgKElTX0VSUihkYmlkZXYtPmJhY2tsaWdodCkpDQo+ICsJCXJldHVy biBQVFJfRVJSKGRiaWRldi0+YmFja2xpZ2h0KTsNCj4gKw0KPiArCWRldmljZV9wcm9wZXJ0 eV9yZWFkX3UzMihkZXYsICJyb3RhdGlvbiIsICZyb3RhdGlvbik7DQo+ICsNCj4gKwlyZXQg PSBtaXBpX2RiaV9zcGlfaW5pdChzcGksIGRiaSwgZGMpOw0KPiArCWlmIChyZXQpDQo+ICsJ CXJldHVybiByZXQ7DQo+ICsNCj4gKwlkYmlkZXYtPmRybS5tb2RlX2NvbmZpZy5wcmVmZXJy ZWRfZGVwdGggPSAxNjsNCj4gKw0KPiArCXJldCA9IG1pcGlfZGJpX2Rldl9pbml0X3dpdGhf Zm9ybWF0cyhkYmlkZXYsICZpbGk5NDg4X3BpcGVfZnVuY3MsDQo+ICsJCQkJCSAgICAgaWxp OTQ4OF9mb3JtYXRzLA0KPiArCQkJCQkgICAgIEFSUkFZX1NJWkUoaWxpOTQ4OF9mb3JtYXRz KSwNCj4gKwkJCQkJICAgICAmaWxpOTQ4OF9tb2RlLCByb3RhdGlvbiwgYnVmc2l6ZSk7DQo+ ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCWRiaS0+c3dhcF9ieXRl cyA9IHRydWU7DQo+ICsJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7DQo+ICsNCj4gKwly ZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0 dXJuIHJldDsNCj4gKw0KPiArCXNwaV9zZXRfZHJ2ZGF0YShzcGksIGRybSk7DQoNClRoaXMg Y291bGQgYWxyZWFkeSBiZSB0b28gbGF0ZS4gQWZ0ZXIgZHJtX2Rldl9yZWdpc3RlcigpIHRo ZSBkZXZpY2UgZmlsZSANCndpbGwgYmUgdmlzaWJsZSB0byB1c2Vyc3BhY2UgYW5kIG1heWJl IGNhbGxlZCB3aXRob3V0IHRoaXMgZHJ2ZGF0YSBzZXQuDQoNCkFuZCBtYXliZSB5b3UgYWxz byBuZWVkIHRoZSBkcnZkYXRhIGZvciBlcnJvciBjbGVhbnVwcyBpZiBwcm9iZSBmYWlsczsg DQpkb24ndCBrbm93Lg0KDQpJdCdzIGJlc3QgdG8gc2V0IHRoaXMgYXMgc29vbiBhcyB5b3Ug aGF2ZSB0aGUgZHJtIHBvaW50ZXIuDQoNCkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4gKw0K PiArCWRybV9mYmRldl9nZW5lcmljX3NldHVwKGRybSwgMCk7DQo+ICsNCj4gKwlyZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaWxpOTQ4OF9yZW1vdmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gc3Bp X2dldF9kcnZkYXRhKHNwaSk7DQo+ICsNCj4gKwlkcm1fZGV2X3VucGx1Zyhkcm0pOw0KPiAr CWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRybSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIGlsaTk0ODhfc2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkNCj4gK3sN Cj4gKwlkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihzcGlfZ2V0X2RydmRhdGEoc3BpKSk7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBpbGk5NDg4X3NwaV9k cml2ZXIgPSB7DQo+ICsJLmRyaXZlciA9IHsNCj4gKwkJLm5hbWUgPSAiaWxpOTQ4OCIsDQo+ ICsJCS5vd25lciA9IFRISVNfTU9EVUxFLA0KPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBpbGk5 NDg4X29mX21hdGNoLA0KPiArCX0sDQo+ICsJLmlkX3RhYmxlID0gaWxpOTQ4OF9pZCwNCj4g KwkucHJvYmUgPSBpbGk5NDg4X3Byb2JlLA0KPiArCS5yZW1vdmUgPSBpbGk5NDg4X3JlbW92 ZSwNCj4gKwkuc2h1dGRvd24gPSBpbGk5NDg4X3NodXRkb3duLA0KPiArfTsNCj4gK21vZHVs ZV9zcGlfZHJpdmVyKGlsaTk0ODhfc3BpX2RyaXZlcik7DQo+ICsNCj4gK01PRFVMRV9ERVND UklQVElPTigiSWxpdGVrIElMSTk0ODggRFJNIGRyaXZlciIpOw0KPiArTU9EVUxFX0FVVEhP UigiS2FtbGVzaCBHdXJ1ZGFzYW5pIDxrYW1sZXNoLmd1cnVkYXNhbmlAZ21haWwuY29tPiIp Ow0KPiArTU9EVUxFX0FVVEhPUigiTWljaGFlbCBUcmltYXJjaGkgPG1pY2hhZWxAYW1hcnVs YXNvbHV0aW9ucy5jb20+Iik7DQo+ICtNT0RVTEVfQVVUSE9SKCJUb21tYXNvIE1lcmNpYWkg PHRvbW1hc28ubWVyY2lhaUBhbWFydWxhc29sdXRpb25zLmNvbT4iKTsNCj4gK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsNCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQoNCi0tIA0K VGhvbWFzIFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINClNVU0UgU29m dHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSA0KTWF4ZmVsZHN0ci4gNSwgOTA0MDkgTsO8 cm5iZXJnLCBHZXJtYW55DQooSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQpHZXNjaMOkZnRz ZsO8aHJlcjogSXZvIFRvdGV2DQo= --------------MDLQV1xG3E5rIIzShYV0cbyr-- --------------0ib1OSjzOUSiubhmDX988yPa Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmNWipgFAwAAAAAACgkQlh/E3EQov+CK GA//fthUyx9X0BrnvfRW/vn9mj8P23IwFQGkE5S8KeGRgyMxy5JmiDXDF9tPnYqn1sZZho6MOaiq KRUCUHtC+kE7gOTWGAaWyI+e8PK9Dx1vMItskkFrcep3R5HHyzIhdJfpWM1CgPexBPT0MnnxKA+W +8yAYGCiphy0apRvQSET3rzVG1Cey9GCW9liR3CrgMYvaiNU2zimYiyqZfbAtWxRg8zqv5G9Vyvm t0z429U3aOYqP3j2EHdgmIgb+gaNvhNw7EQcWqe5TEymwjwhLoNOnbzpgtq0PrrCPZ4LOjfmfia+ v9hQh+yJM7wIuGKnExgjKix0C0U9PIqBquOPRDgrBj9rFCCWmfVeTpOlvzBit38Rm3cxBEmkGefR Z/Gag6FcRrm06d7lrE8PHwEL/p7QgwKBUv/tqR1N086BIZbuBWtaUqE0heIpPp5NRX2xp7M1Dc7U pebRdQF1WMmqpCHdg1YI2PqzFdG0NDFSipiivapw/Rhk/k1jJiG5fWIN228E5FJaboK9GwdQphLx kxTcdoetkQndlmxdLVYiCHAtN7+Qkg4H43s8a3vw6ADPmGhBgcUIQknQ7Pgdu1W/hScp/B24mV3x +EutAEZCwIvW3MTnajkKanSp3T/zMe3BxSYA4GBd5QIZm14UA1kWO6hCdYt0lwIk3eWgqED1BF0W bLU= =9z9X -----END PGP SIGNATURE----- --------------0ib1OSjzOUSiubhmDX988yPa--