From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1107DECAAA1 for ; Tue, 13 Sep 2022 01:14:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Message-ID:Mime-Version:References: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: List-Owner; bh=/uR+UR5qhSxGNe5JNmsHa7TikgwglPq/mPd/oRY1IFU=; b=Wf5l90fpF4TBEB eVOJuJAYXW3X6kcvkGpjlZn7HiufFoj0/dRwQnc5VQWMQP40v04vgpVyVMvKolXDYouHdIErOpdoF DFhTDRkTCdUcyfhvvf4W4AICPKD7IOlvKjIqnQDDR99dssPxmS7YrYsLsCWD9AfFrmoKex1YNbmBC vFoJaby5j0e7R8inOg+jsr3Eatpz5PNws0HgxVJXAsWy7r8ldWd2piw4M+DKZtWIT8RVVtNrwopEm ymROnR7dZi1QKGzt3JgIoF1EIFYGP7aDxoMbVBBlCFZOam6OLi3qSs4At1GrOoDHYeEsX82hJ7Ti7 uzg1PkenrqpgZ6epDa6g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oXuV8-00H35Q-My; Tue, 13 Sep 2022 01:14:10 +0000 Received: from mail-m11883.qiye.163.com ([115.236.118.83]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oXuV0-00H30v-Lh for linux-rockchip@lists.infradead.org; Tue, 13 Sep 2022 01:14:05 +0000 Received: from DESKTOP-SG5V5EA (unknown [58.22.7.114]) by mail-m11883.qiye.163.com (Hmail) with ESMTPA id 2384F84018B; Tue, 13 Sep 2022 09:14:00 +0800 (CST) Date: Tue, 13 Sep 2022 09:14:00 +0800 From: "jay.xu@rock-chips.com" To: "Johan Jonker" , =?UTF-8?B?SGVpa28gU3TDvGJuZXI=?= , linus.walleij , "Andy Shevchenko" Cc: "Bartosz Golaszewski" , linux-gpio , "open list:ARM/Rockchip SoC..." Subject: Re: Re: [PATCH 6/6] gpio: rockchip: support acpi References: <20220909090558.3609190-1-jay.xu@rock-chips.com>, <20220909090558.3609190-7-jay.xu@rock-chips.com>, X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7.2.19.158[cn] Mime-Version: 1.0 Message-ID: <2022091309140003123871@rock-chips.com> X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFJSktLSjdXWS1ZQUlXWQ8JGhUIEh9ZQVlDHxhMVksZH0xDQ0MYGENDHlUTARMWGhIXJB QOD1lXWRgSC1lBWU5DVUlJVUxVSkpPWVdZFhoPEhUdFFlBWU9LSFVKSktISkxVSktLWQY+ X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6PDI6Cww5GD0oLiorMQoVLBVR MStPCgxVSlVKTU1IS0hKTU9LQ0tKVTMWGhIXVREaAlUDDjsJFBgQVhgTEgsIVRgUFkVZV1kSC1lB WU5DVUlJVUxVSkpPWVdZCAFZQUpDSEJPNwY+ X-HM-Tid: 0a83346900fd2eb8kusn2384f84018b X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220912_181403_430371_5649CDEF X-CRM114-Status: GOOD ( 28.97 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgSm9oYW4KCi0tLS0tLS0tLS0tLS0tCmpheS54dUByb2NrLWNoaXBzLmNvbQo+SGkgSmlhbnF1 biwKPgo+U29tZSBjb21tZW50cyBhYm91dCBjbG9ja3MuIEhhdmUgYSBsb29rIGlmIGl0J3MgdXNl ZnVsbC4KPgo+T24gOS85LzIyIDExOjA1LCBKaWFucXVuIFh1IHdyb3RlOgo+PiBUaGUgZ3BpbyBk cml2ZXIgZm9yIHJvY2tjaGlwIGdwaW8gY29udHJvbGxlciBpcyBzZXBlcmF0ZWQgZnJvbSByb2Nr Y2hpcAo+PiBwaW5jdHJsIGRyaXZlciwgYXQgdGhlIGZpcnN0IHZlcnNpb24sIGl0IGtlZXBzIHRo aW5ncyBvcmlnaW5hbCB0byBtYWtlCj4+IHRoZSBwYXRjaCBlYXN5IHRvIGJlIHJldmlld2VkLCBz dWNoIGFzIHRoZSBncGlvIGRyaXZlciBtdXN0IHdvcmsgd2l0aAo+PiB0aGUgcGluY3RybCBkdCBu b2RlIHRvIGJlIGl0cyBwYXJlbnQgbm9kZS4KPj4KPj4gVGhpcyBwYXRjaCB3YW50cyB0byBmaXgg ZHJpdmVyIHRvIHN1cHBvcnQgYWNwaSBzaW5jZSBncGlvIGNvbnRyb2xsZXIKPj4gc2hvdWxkIHdv cmsgd2VsbCBkdXJpbmcgYWNwaSBpcyBlbmFibGVkLiBCdXQgZHVyaW5nIHVwc3RyZWFtLCBkcml2 ZXIgaXMKPj4gYmV0dGVyIHRvIGZpeCBvdGhlciB0aGluZyB0b2dldGhlciBpbmNsdWRlczoKPj7C oCAtIGFkZCAnY2xvY2stbmFtZXMnIHRvIGFsbG93IGRyaXZlciB0byBnZXQgY2xvY2tzIGJ5IGRl dm1fY2xrX2dldCgpLgo+PsKgIC0gZ2V0IGlvIHJlc291cmNlIGFuZCBpcnEgYnkgcGxhdGZvcm0g Y29tbW9uIGFwaXMuCj4+wqAgLSB1c2UgZndub2RlIGluc3RlYWQgb2Ygb2Zfbm9kZSBmcm9tIGRl dmljZSBzdHJ1Y3R1cmUuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEppYW5xdW4gWHUgPGpheS54dUBy b2NrLWNoaXBzLmNvbT4KPj4gLS0tCj4+wqAgZHJpdmVycy9ncGlvL2dwaW8tcm9ja2NoaXAuYyB8 IDE5NyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+PsKgIDEgZmlsZSBjaGFu Z2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwaW8vZ3Bpby1yb2NrY2hpcC5jIGIvZHJpdmVycy9ncGlvL2dwaW8tcm9ja2No aXAuYwo+PiBpbmRleCBlYmI1MGMyNWE0NjEuLmNhMDEyY2YxOTlhNiAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncGlvL2dwaW8tcm9ja2NoaXAuYwo+PiArKysgYi9kcml2ZXJzL2dwaW8vZ3Bpby1y b2NrY2hpcC5jCj4+IEBAIC02LDkgKzYsOSBAQAo+PsKgwqAgKiBDb3B5cmlnaHQgKGMpIDIwMjEg Um9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uIEx0ZC4KPj7CoMKgICovCj4+wqAKPj4gKyNpbmNsdWRl IDxsaW51eC9hY3BpLmg+Cj4+wqAgI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+PsKgICNpbmNs dWRlIDxsaW51eC9jbGsuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPj7CoCAjaW5j bHVkZSA8bGludXgvZXJyLmg+Cj4+wqAgI2luY2x1ZGUgPGxpbnV4L2dwaW8vZHJpdmVyLmg+Cj4+ wqAgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4gQEAgLTE2LDEwICsxNiw5IEBACj4+wqAgI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+Cj4+wqAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PsKgICNp bmNsdWRlIDxsaW51eC9vZi5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPj4g LSNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9vZl9pcnEu aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj7CoCAjaW5jbHVkZSA8 bGludXgvcGluY3RybC9waW5jb25mLWdlbmVyaWMuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wcm9w ZXJ0eS5oPgo+PsKgICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj7CoAo+PsKgICNpbmNsdWRl ICIuLi9waW5jdHJsL2NvcmUuaCIKPj4gQEAgLTI5LDYgKzI4LDggQEAKPj7CoCAjZGVmaW5lIEdQ SU9fVFlQRV9WMgkoMHgwMTAwMEMyQinCoCAvKiBHUElPIFZlcnNpb24gSUQgMHgwMTAwMEMyQiAq Lwo+PsKgICNkZWZpbmUgR1BJT19UWVBFX1YyXzEJKDB4MDEwMTE1N0MpwqAgLyogR1BJTyBWZXJz aW9uIElEIDB4MDEwMTE1N0MgKi8KPj7CoAo+PiArI2RlZmluZSBHUElPX01BWF9QSU5TCSgzMikK Pj4gKwo+PsKgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfZ3Bpb19yZWdzIGdwaW9fcmVn c192MSA9IHsKPj7CoCAucG9ydF9kciA9IDB4MDAsCj4+wqAgLnBvcnRfZGRyID0gMHgwNCwKPj4g QEAgLTIwMCw2ICsyMDEsOSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2dwaW9fc2V0X2RlYm91bmNl KHN0cnVjdCBncGlvX2NoaXAgKmdjLAo+PsKgIGlmIChiYW5rLT5ncGlvX3R5cGUgPT0gR1BJT19U WVBFX1YyICYmICFJU19FUlIoYmFuay0+ZGJfY2xrKSkgewo+PsKgIGRpdl9kZWJvdW5jZV9zdXBw b3J0ID0gdHJ1ZTsKPj7CoCBmcmVxID0gY2xrX2dldF9yYXRlKGJhbmstPmRiX2Nsayk7Cj4+ICsJ aWYgKCFmcmVxKQo+PiArCXJldHVybiAtRUlOVkFMOwo+PiArCj4+wqAgbWF4X2RlYm91bmNlID0g KEdFTk1BU0soMjMsIDApICsgMSkgKiAyICogMTAwMDAwMCAvIGZyZXE7Cj4+wqAgaWYgKGRlYm91 bmNlID4gbWF4X2RlYm91bmNlKQo+PsKgIHJldHVybiAtRUlOVkFMOwo+PiBAQCAtNTA3LDE1ICs1 MTEsMTYgQEAgc3RhdGljIGludCByb2NrY2hpcF9pbnRlcnJ1cHRzX3JlZ2lzdGVyKHN0cnVjdCBy b2NrY2hpcF9waW5fYmFuayAqYmFuaykKPj7CoCBzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJpYyAqZ2M7 Cj4+wqAgaW50IHJldDsKPj7CoAo+PiAtCWJhbmstPmRvbWFpbiA9IGlycV9kb21haW5fYWRkX2xp bmVhcihiYW5rLT5vZl9ub2RlLCAzMiwKPj4gLQkmaXJxX2dlbmVyaWNfY2hpcF9vcHMsIE5VTEwp Owo+PiArCWJhbmstPmRvbWFpbiA9IGlycV9kb21haW5fY3JlYXRlX2xpbmVhcihkZXZfZndub2Rl KGJhbmstPmRldiksCj4+ICsJR1BJT19NQVhfUElOUywKPj4gKwkmaXJxX2dlbmVyaWNfY2hpcF9v cHMsIE5VTEwpOwo+PsKgIGlmICghYmFuay0+ZG9tYWluKSB7Cj4+wqAgZGV2X3dhcm4oYmFuay0+ ZGV2LCAiY291bGQgbm90IGluaXQgaXJxIGRvbWFpbiBmb3IgYmFuayAlc1xuIiwKPj7CoCBiYW5r LT5uYW1lKTsKPj7CoCByZXR1cm4gLUVJTlZBTDsKPj7CoCB9Cj4+wqAKPj4gLQlyZXQgPSBpcnFf YWxsb2NfZG9tYWluX2dlbmVyaWNfY2hpcHMoYmFuay0+ZG9tYWluLCAzMiwgMSwKPj4gKwlyZXQg PSBpcnFfYWxsb2NfZG9tYWluX2dlbmVyaWNfY2hpcHMoYmFuay0+ZG9tYWluLCBHUElPX01BWF9Q SU5TLCAxLAo+PsKgIMKgwqDCoMKgICJyb2NrY2hpcF9ncGlvX2lycSIsCj4+wqAgwqDCoMKgwqAg aGFuZGxlX2xldmVsX2lycSwKPj7CoCDCoMKgwqDCoCBjbHIsIDAsIDApOwo+PiBAQCAtNTY1LDcg KzU3MCw4IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfaW50ZXJydXB0c19yZWdpc3RlcihzdHJ1Y3Qg cm9ja2NoaXBfcGluX2JhbmsgKmJhbmspCj4+wqAgcmV0dXJuIDA7Cj4+wqAgfQo+PsKgCj4+IC1z dGF0aWMgaW50IHJvY2tjaGlwX2dwaW9saWJfcmVnaXN0ZXIoc3RydWN0IHJvY2tjaGlwX3Bpbl9i YW5rICpiYW5rKQo+PiArc3RhdGljIGludCByb2NrY2hpcF9ncGlvbGliX3JlZ2lzdGVyKHN0cnVj dCByb2NrY2hpcF9waW5fYmFuayAqYmFuaywKPj4gKwnCoMKgwqDCoCBzdHJ1Y3QgcGluY3RybF9k ZXYgKnBjdGxkZXYpCj4+wqAgewo+PsKgIHN0cnVjdCBncGlvX2NoaXAgKmdjOwo+PsKgIGludCBy ZXQ7Cj4+IEBAIC01NzgsNiArNTg0LDE3IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZ3Bpb2xpYl9y ZWdpc3RlcihzdHJ1Y3Qgcm9ja2NoaXBfcGluX2JhbmsgKmJhbmspCj4+wqAgZ2MtPmxhYmVsID0g YmFuay0+bmFtZTsKPj7CoCBnYy0+cGFyZW50ID0gYmFuay0+ZGV2Owo+PsKgCj4+ICsJaWYgKCFn Yy0+YmFzZSkKPj4gKwlnYy0+YmFzZSA9IEdQSU9fTUFYX1BJTlMgKiBiYW5rLT5iYW5rX251bTsK Pj4gKwlpZiAoIWdjLT5uZ3BpbykKPj4gKwlnYy0+bmdwaW8gPSBHUElPX01BWF9QSU5TOwo+PiAr CWlmICghZ2MtPmxhYmVsKSB7Cj4+ICsJZ2MtPmxhYmVsID0gZGV2bV9rYXNwcmludGYoYmFuay0+ ZGV2LCBHRlBfS0VSTkVMLCAiZ3BpbyVkIiwKPj4gKwnCoMKgIGJhbmstPmJhbmtfbnVtKTsKPj4g KwlpZiAoIWdjLT5sYWJlbCkKPj4gKwlyZXR1cm4gLUVOT01FTTsKPj4gKwl9Cj4+ICsKPj7CoCBy ZXQgPSBncGlvY2hpcF9hZGRfZGF0YShnYywgYmFuayk7Cj4+wqAgaWYgKHJldCkgewo+PsKgIGRl dl9lcnIoYmFuay0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBncGlvY2hpcCAlcywgJWRcbiIsCj4+IEBA IC01OTUsMTcgKzYxMiw3IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZ3Bpb2xpYl9yZWdpc3Rlcihz dHJ1Y3Qgcm9ja2NoaXBfcGluX2JhbmsgKmJhbmspCj4+wqAgKiBmaWxlcyB3aGljaCBkb24ndCBz ZXQgdGhlICJncGlvLXJhbmdlcyIgcHJvcGVydHkgb3Igc3lzdGVtcyB0aGF0Cj4+wqAgKiB1dGls aXplIEFDUEkgdGhlIGRyaXZlciBoYXMgdG8gY2FsbCBncGlvY2hpcF9hZGRfcGluX3JhbmdlKCku Cj4+wqAgKi8KPj4gLQlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfYm9vbChiYW5rLT5vZl9ub2RlLCAi Z3Bpby1yYW5nZXMiKSkgewo+PiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGN0bG5wID0gb2ZfZ2V0 X3BhcmVudChiYW5rLT5vZl9ub2RlKTsKPj4gLQlzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYg PSBOVUxMOwo+PiAtCj4+IC0JaWYgKCFwY3RsbnApCj4+IC0JcmV0dXJuIC1FTk9EQVRBOwo+PiAt Cj4+IC0JcGN0bGRldiA9IG9mX3BpbmN0cmxfZ2V0KHBjdGxucCk7Cj4+IC0JaWYgKCFwY3RsZGV2 KQo+PiAtCXJldHVybiAtRU5PREVWOwo+PiAtCj4+ICsJaWYgKCFkZXZpY2VfcHJvcGVydHlfcmVh ZF9ib29sKGJhbmstPmRldiwgImdwaW8tcmFuZ2VzIikgJiYgcGN0bGRldikgewo+PsKgIHJldCA9 IGdwaW9jaGlwX2FkZF9waW5fcmFuZ2UoZ2MsIGRldl9uYW1lKHBjdGxkZXYtPmRldiksIDAsCj4+ wqAgwqDCoMKgwqAgZ2MtPmJhc2UsIGdjLT5uZ3Bpbyk7Cj4+wqAgaWYgKHJldCkgewo+PiBAQCAt NjI4LDQ1ICs2MzUsNDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9ncGlvbGliX3JlZ2lzdGVyKHN0 cnVjdCByb2NrY2hpcF9waW5fYmFuayAqYmFuaykKPj7CoCByZXR1cm4gcmV0Owo+PsKgIH0KPj7C oAo+PiAtc3RhdGljIGludCByb2NrY2hpcF9nZXRfYmFua19kYXRhKHN0cnVjdCByb2NrY2hpcF9w aW5fYmFuayAqYmFuaykKPj4gK3N0YXRpYyB2b2lkIHJvY2tjaGlwX2dwaW9fc2V0X3JlZ3Moc3Ry dWN0IHJvY2tjaGlwX3Bpbl9iYW5rICpiYW5rKQo+PsKgIHsKPj4gLQlzdHJ1Y3QgcmVzb3VyY2Ug cmVzOwo+PiAtCWludCBpZCA9IDA7Cj4+IC0KPj4gLQlpZiAob2ZfYWRkcmVzc190b19yZXNvdXJj ZShiYW5rLT5vZl9ub2RlLCAwLCAmcmVzKSkgewo+PiAtCWRldl9lcnIoYmFuay0+ZGV2LCAiY2Fu bm90IGZpbmQgSU8gcmVzb3VyY2UgZm9yIGJhbmtcbiIpOwo+PiAtCXJldHVybiAtRU5PRU5UOwo+ PiAtCX0KPj4gLQo+PiAtCWJhbmstPnJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGJh bmstPmRldiwgJnJlcyk7Cj4+IC0JaWYgKElTX0VSUihiYW5rLT5yZWdfYmFzZSkpCj4+IC0JcmV0 dXJuIFBUUl9FUlIoYmFuay0+cmVnX2Jhc2UpOwo+PiAtCj4+IC0JYmFuay0+aXJxID0gaXJxX29m X3BhcnNlX2FuZF9tYXAoYmFuay0+b2Zfbm9kZSwgMCk7Cj4+IC0JaWYgKCFiYW5rLT5pcnEpCj4+ IC0JcmV0dXJuIC1FSU5WQUw7Cj4+IC0KPj4gLQliYW5rLT5jbGsgPSBvZl9jbGtfZ2V0KGJhbmst Pm9mX25vZGUsIDApOwo+PiAtCWlmIChJU19FUlIoYmFuay0+Y2xrKSkKPj4gLQlyZXR1cm4gUFRS X0VSUihiYW5rLT5jbGspOwo+PiAtCj4+IC0JY2xrX3ByZXBhcmVfZW5hYmxlKGJhbmstPmNsayk7 Cj4+IC0JaWQgPSByZWFkbChiYW5rLT5yZWdfYmFzZSArIGdwaW9fcmVnc192Mi52ZXJzaW9uX2lk KTsKPj4gKwlpbnQgaWQgPSByZWFkbChiYW5rLT5yZWdfYmFzZSArIGdwaW9fcmVnc192Mi52ZXJz aW9uX2lkKTsKPj7CoAo+PsKgIC8qIElmIG5vdCBncGlvIHYyLCB0aGF0IGlzIGRlZmF1bHQgdG8g djEuICovCj4+wqAgaWYgKGlkID09IEdQSU9fVFlQRV9WMiB8fCBpZCA9PSBHUElPX1RZUEVfVjJf MSkgewo+PsKgIGJhbmstPmdwaW9fcmVncyA9ICZncGlvX3JlZ3NfdjI7Cj4+wqAgYmFuay0+Z3Bp b190eXBlID0gR1BJT19UWVBFX1YyOwo+PiAtCWJhbmstPmRiX2NsayA9IG9mX2Nsa19nZXQoYmFu ay0+b2Zfbm9kZSwgMSk7Cj4+IC0JaWYgKElTX0VSUihiYW5rLT5kYl9jbGspKSB7Cj4+IC0JZGV2 X2VycihiYW5rLT5kZXYsICJjYW5ub3QgZmluZCBkZWJvdW5jZSBjbGtcbiIpOwo+PiAtCWNsa19k aXNhYmxlX3VucHJlcGFyZShiYW5rLT5jbGspOwo+PiAtCXJldHVybiAtRUlOVkFMOwo+PiAtCX0K Pj7CoCB9IGVsc2Ugewo+PsKgIGJhbmstPmdwaW9fcmVncyA9ICZncGlvX3JlZ3NfdjE7Cj4+wqAg YmFuay0+Z3Bpb190eXBlID0gR1BJT19UWVBFX1YxOwo+PsKgIH0KPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCByb2NrY2hpcF9ncGlvX2dldF9jbG9ja3Moc3RydWN0IHJvY2tjaGlwX3Bpbl9iYW5r ICpiYW5rKQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGJhbmstPmRldjsKPj4gKwlz dHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlID0gZGV2X2Z3bm9kZShkZXYpOwo+PiArCWludCBy ZXQ7Cj4+ICsKPj4gKwlpZiAoIWlzX29mX25vZGUoZndub2RlKSkKPj4gKwlyZXR1cm4gMDsKPj4g Kwo+Cj4+ICsJYmFuay0+Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImJ1cyIpOwo+Cj4uLiBidXQg ZXhpc3RpbmcgRFRzIGFsc28gY29tZSB3aXRob3V0IGNsb2NrLW5hbWUgYW5kIG11c3Qgc3RpbGwg d29yay4KPgo+Q2hlY2sgY2xvY2stbmFtZXMgZmlyc3QgZWxzZSBmYWxsYmFjayB0byBjbG9jayBp bmRleCBvciBrZWVwIHVzaW5nIG9mX2Nsa19nZXQoKS4KPlVwIHRvIHRoZSBHUElPIG1haW50YWlu ZXIgb2YgY291cnNlLgo+Tm90IHN1cmUgaWYgYSBjbGsgaW5kZXggZnVuY3Rpb24gZm9yIGRldm0g ZXhpc3QsIGVsc2UgbWF5YmUgdXNlOiA/Pz8KPgo+CWJhbmstPmNsayA9IGNsa19nZXQoZGV2LCAi YnVzIik7Cj52cy4KPgliYW5rLT5jbGsgPSBvZl9jbGtfZ2V0X2J5X25hbWUobnAsICJidXMiKTsK Pgo+Cj4JaWYgKElTX0VSUihiYW5rLT5jbGspKSB7Cj4JYmFuay0+Y2xrID0gb2ZfY2xrX2dldChi YW5rLT5vZl9ub2RlLCAwKTsKPglpZiAoSVNfRVJSKGJhbmstPmNsaykpCj4JcmV0dXJuIFBUUl9F UlIoYmFuay0+Y2xrKTsKPgo+Q291bGQgeW91IGNoZWNrIGlmIHRoaXMgc3RpbGwgd29ya3M/Cj4g CkkgdHJ5IGl0LCB0aGFua3MKPj09PT0KPgo+UHJldmlvdXMgY29tbWVudHM6Cj4KPj4+WW91IGNh bid0IG1peCBkZXZtXyB3aXRoIG5vbi1kZXZtXyBjYWxscy4KPj4+Cj4+IE9rYXksIEkgYWRkICdj bG9jay1uYW1lcycgcHJvcGVydHkgZm9yIGFsbCBleGlzdGVkIHJlbGF0ZWQgZHQgZmlsZXMgYW5k IGZpeCBkcml2ZXIgdG8gb25seSB1c2UKPj4gZGV2bV9jbGtfZ2V0KCksIEkgcHVzaCBhIHZlcnNp b24gcGxlYXNlIGhlbHAgdG8gcmV2aWV3Cj4KPj09PT0KPgo+PiArCWlmIChJU19FUlIoYmFuay0+ Y2xrKSkgewo+PiArCWRldl9lcnIoZGV2LCAiZmFpbCB0byBnZXQgYXBiIGNsb2NrXG4iKTsKPj4g KwlyZXR1cm4gUFRSX0VSUihiYW5rLT5jbGspOwo+PiArCX0KPj4gKwo+Cj4+ICsJcmV0ID0gY2xr X3ByZXBhcmVfZW5hYmxlKGJhbmstPmNsayk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJcmV0dXJu IHJldDsKPj4gKwo+Cj5CbG9jayBvcmRlcjogZmlyc3QgZmluZCBhbGwgeW91ciBjbG9ja3MgdGhl biBlbmFibGUuCj5HZXQgeW91ciByZXNvdXJjZXMgZmlyc3QuCkdvdCBpdAo+IAo+PiArCWJhbmst PmRiX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJkYiIpOwo+PiArCWlmIChJU19FUlIoYmFuay0+ ZGJfY2xrKSkgewo+PiArCWJhbmstPmRiX2NsayA9IE5VTEw7Cj4+ICsJfQo+Cj5UaGUgY2xvY2st bmFtZSAiZGIiIGlzIG9ubHkgYXZhaWxhYmxlIGluIHJrMzU2eC5kdHNpCj4KPj4gKwo+PiArCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShiYW5rLT5kYl9jbGspOwo+PiArCWlmIChyZXQgPCAwKSB7 Cj4KPkl0IGlzIG5vdCBhbiBlcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0cy4KPk9uZSBtaWdodCB1 c2UgdGhlIGZ1bmN0aW9uIGRldm1fY2xrX2dldF9vcHRpb25hbCgpLgo+IApHb2l0IGl0Cj4+ICsJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGJhbmstPmNsayk7Cj4+ICsJcmV0dXJuIHJldDsKPj4gKwl9 Cj4+wqAKPj7CoCByZXR1cm4gMDsKPj7CoCB9Cj4+IEBAIC02OTAsNTcgKzcwMSw4NiBAQCByb2Nr Y2hpcF9ncGlvX2ZpbmRfYmFuayhzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsIGludCBpZCkK Pj7CoCByZXR1cm4gZm91bmQgPyBiYW5rIDogTlVMTDsKPj7CoCB9Cj4+wqAKPj4gLXN0YXRpYyBp bnQgcm9ja2NoaXBfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiAr c3RhdGljIGludCByb2NrY2hpcF9ncGlvX2dldF9iYW5rX2lkKHN0cnVjdCBkZXZpY2UgKmRldikK Pj7CoCB7Cj4+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPj4gLQlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOwo+PiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAq cGN0bG5wID0gb2ZfZ2V0X3BhcmVudChucCk7Cj4+IC0Jc3RydWN0IHBpbmN0cmxfZGV2ICpwY3Rs ZGV2ID0gTlVMTDsKPj4gLQlzdHJ1Y3Qgcm9ja2NoaXBfcGluX2JhbmsgKmJhbmsgPSBOVUxMOwo+ PiAtCXN0cnVjdCByb2NrY2hpcF9waW5fZGVmZXJyZWQgKmNmZzsKPj4gKwlzdHJ1Y3QgZndub2Rl X2hhbmRsZSAqZndub2RlID0gZGV2X2Z3bm9kZShkZXYpOwo+PiArCWludCBiYW5rX2lkID0gLUVJ TlZBTDsKPj4gKwl1NjQgdWlkOwo+PsKgIHN0YXRpYyBpbnQgZ3BpbzsKPj4gLQlpbnQgaWQsIHJl dDsKPj7CoAo+PiAtCWlmICghbnAgfHwgIXBjdGxucCkKPj4gLQlyZXR1cm4gLUVOT0RFVjsKPj4g KwlpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpIHsKPj4gKwlpZiAoIWFjcGlfZGV2X3VpZF90b19p bnRlZ2VyKEFDUElfQ09NUEFOSU9OKGRldiksICZ1aWQpKQo+PiArCWJhbmtfaWQgPSAoaW50KXVp ZDsKPj4gKwl9IGVsc2Ugewo+PiArCWJhbmtfaWQgPSBvZl9hbGlhc19nZXRfaWQodG9fb2Zfbm9k ZShmd25vZGUpLCAiZ3BpbyIpOwo+PiArCWlmIChiYW5rX2lkIDwgMCkKPj4gKwliYW5rX2lkID0g Z3BpbysrOwo+PiArCX0KPj7CoAo+PiAtCXBjdGxkZXYgPSBvZl9waW5jdHJsX2dldChwY3RsbnAp Owo+PiAtCWlmICghcGN0bGRldikKPj4gLQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPj4gKwlyZXR1 cm4gYmFua19pZDsKPj4gK30KPj7CoAo+PiAtCWlkID0gb2ZfYWxpYXNfZ2V0X2lkKG5wLCAiZ3Bp byIpOwo+PiAtCWlmIChpZCA8IDApCj4+IC0JaWQgPSBncGlvKys7Cj4+ICtzdGF0aWMgaW50IHJv Y2tjaGlwX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCXN0cnVjdCByb2NrY2hpcF9w aW5fYmFuayAqYmFuazsKPj4gKwlzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXY7Cj4+ICsJaW50 IGJhbmtfaWQ7Cj4+ICsJaW50IHJldDsKPj7CoAo+PiAtCWJhbmsgPSByb2NrY2hpcF9ncGlvX2Zp bmRfYmFuayhwY3RsZGV2LCBpZCk7Cj4+IC0JaWYgKCFiYW5rKQo+PiAtCXJldHVybiAtRUlOVkFM Owo+PiArCWJhbmtfaWQgPSByb2NrY2hpcF9ncGlvX2dldF9iYW5rX2lkKGRldik7Cj4+ICsJaWYg KGJhbmtfaWQgPCAwKQo+PiArCXJldHVybiBiYW5rX2lkOwo+PsKgCj4+ICsJcGN0bGRldiA9IGdl dF9waW5jdHJsX2Rldl9mcm9tX2Rldm5hbWUoInBpbmN0cmwiKTsKPj4gKwlpZiAocGN0bGRldikg ewo+PiArCWJhbmsgPSByb2NrY2hpcF9ncGlvX2ZpbmRfYmFuayhwY3RsZGV2LCBiYW5rX2lkKTsK Pj4gKwlpZiAoIWJhbmspCj4+ICsJcmV0dXJuIC1FTk9ERVY7Cj4+ICsJfSBlbHNlIHsKPj4gKwli YW5rID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpiYW5rKSwgR0ZQX0tFUk5FTCk7Cj4+ICsJ aWYgKCFiYW5rKQo+PiArCXJldHVybiAtRU5PTUVNOwo+PiArCX0KPj4gKwo+PiArCWJhbmstPmJh bmtfbnVtID0gYmFua19pZDsKPj7CoCBiYW5rLT5kZXYgPSBkZXY7Cj4+IC0JYmFuay0+b2Zfbm9k ZSA9IG5wOwo+PsKgCj4+IC0JcmF3X3NwaW5fbG9ja19pbml0KCZiYW5rLT5zbG9jayk7Cj4+ICsJ YmFuay0+cmVnX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7 Cj4+ICsJaWYgKElTX0VSUihiYW5rLT5yZWdfYmFzZSkpCj4+ICsJcmV0dXJuIFBUUl9FUlIoYmFu ay0+cmVnX2Jhc2UpOwo+PsKgCj4+IC0JcmV0ID0gcm9ja2NoaXBfZ2V0X2JhbmtfZGF0YShiYW5r KTsKPj4gKwliYW5rLT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOwo+PiArCWlmIChi YW5rLT5pcnEgPCAwKQo+PiArCXJldHVybiBiYW5rLT5pcnE7Cj4+ICsKPj4gKwlyZXQgPSByb2Nr Y2hpcF9ncGlvX2dldF9jbG9ja3MoYmFuayk7Cj4+wqAgaWYgKHJldCkKPj7CoCByZXR1cm4gcmV0 Owo+PsKgCj4+ICsJcmF3X3NwaW5fbG9ja19pbml0KCZiYW5rLT5zbG9jayk7Cj4+ICsJcm9ja2No aXBfZ3Bpb19zZXRfcmVncyhiYW5rKTsKPj4gKwo+PsKgIC8qCj4+wqAgKiBQcmV2ZW50IGNsYXNo ZXMgd2l0aCBhIGRlZmVycmVkIG91dHB1dCBzZXR0aW5nCj4+wqAgKiBiZWluZyBhZGRlZCByaWdo dCBhdCB0aGlzIG1vbWVudC4KPj7CoCAqLwo+PsKgIG11dGV4X2xvY2soJmJhbmstPmRlZmVycmVk X2xvY2spOwo+PsKgCj4+IC0JcmV0ID0gcm9ja2NoaXBfZ3Bpb2xpYl9yZWdpc3RlcihiYW5rKTsK Pj4gKwlyZXQgPSByb2NrY2hpcF9ncGlvbGliX3JlZ2lzdGVyKGJhbmssIHBjdGxkZXYpOwo+PsKg IGlmIChyZXQpIHsKPj4gLQljbGtfZGlzYWJsZV91bnByZXBhcmUoYmFuay0+Y2xrKTsKPj4gLQlt dXRleF91bmxvY2soJmJhbmstPmRlZmVycmVkX2xvY2spOwo+PiAtCXJldHVybiByZXQ7Cj4+ICsJ ZGV2X2VycihiYW5rLT5kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgZ3BpbyAlZFxuIiwgcmV0KTsK Pj4gKwlnb3RvIGVycl91bmxvY2s7Cj4+wqAgfQo+PsKgCj4+wqAgd2hpbGUgKCFsaXN0X2VtcHR5 KCZiYW5rLT5kZWZlcnJlZF9waW5zKSkgewo+PiArCXN0cnVjdCByb2NrY2hpcF9waW5fZGVmZXJy ZWQgKmNmZzsKPj4gKwo+PsKgIGNmZyA9IGxpc3RfZmlyc3RfZW50cnkoJmJhbmstPmRlZmVycmVk X3BpbnMsCj4+wqAgwqDCoMKgwqDCoMKgIHN0cnVjdCByb2NrY2hpcF9waW5fZGVmZXJyZWQsIGhl YWQpOwo+PiArCWlmICghY2ZnKQo+PiArCWJyZWFrOwo+PiArCj4+wqAgbGlzdF9kZWwoJmNmZy0+ aGVhZCk7Cj4+wqAKPj7CoCBzd2l0Y2ggKGNmZy0+cGFyYW0pIHsKPj4gQEAgLTc2NSw5ICs4MDUs MTUgQEAgc3RhdGljIGludCByb2NrY2hpcF9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4+wqAgbXV0ZXhfdW5sb2NrKCZiYW5rLT5kZWZlcnJlZF9sb2NrKTsKPj7CoAo+ PsKgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGJhbmspOwo+PiAtCWRldl9pbmZvKGRldiwg InByb2JlZCAlcE9GXG4iLCBucCk7Cj4+ICsJZGV2X2luZm8oZGV2LCAicHJvYmVkICVwZndcbiIs IGRldl9md25vZGUoZGV2KSk7Cj4+wqAKPj7CoCByZXR1cm4gMDsKPj4gK2Vycl91bmxvY2s6Cj4+ ICsJbXV0ZXhfdW5sb2NrKCZiYW5rLT5kZWZlcnJlZF9sb2NrKTsKPj4gKwljbGtfZGlzYWJsZV91 bnByZXBhcmUoYmFuay0+Y2xrKTsKPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoYmFuay0+ZGJf Y2xrKTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+wqAgfQo+PsKgCj4+wqAgc3RhdGljIGludCBy b2NrY2hpcF9ncGlvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiBAQCAt Nzc1LDYgKzgyMSw3IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZ3Bpb19yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPj7CoCBzdHJ1Y3Qgcm9ja2NoaXBfcGluX2JhbmsgKmJhbmsg PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj7CoAo+PsKgIGNsa19kaXNhYmxlX3VucHJl cGFyZShiYW5rLT5jbGspOwo+PiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShiYW5rLT5kYl9jbGsp Owo+PsKgIGdwaW9jaGlwX3JlbW92ZSgmYmFuay0+Z3Bpb19jaGlwKTsKPj7CoAo+PsKgIHJldHVy biAwOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51 eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tj aGlwCg==