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 A049EC6FA82 for ; Tue, 13 Sep 2022 01:12:33 +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=u3TUB7WxRcE+uWMOaZd/2XNSVvSiMdRAlAZynlmt7ls=; b=4Xswn7fYFoc6xB ba0sjyytOCZk9JQrnsnROVKdYtgDdVTS7GVSIYhBamvZKapHQZKCkRGcp714HvcT+MpCQ0g07mGIW xbR0yls6ot8dAmiX+f9pMlsJ5H2YistUN2nBHZMfiAlimZ9VLgpGsstIpZ5Lddnw13Ic4+txptqFL hljGTgKKklyvGhd8aAQg8P1K23+zzd8ApzrKD+m5MsSbZToItQW7uLHIkPaEogMMAnbBOhdVYATfz lFdDyPgg5naRDYPEZZMTVucBNURheAz30jCCKxwZ9jNLYBQ9BzX2fyXUc8AHPwTfdpNxTHumtZz7J EJ/yjeMKpV5IGRljZsAA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oXuTM-00H1Mh-EH; Tue, 13 Sep 2022 01:12:20 +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 1oXuTG-00H1CS-VG for linux-rockchip@lists.infradead.org; Tue, 13 Sep 2022 01:12:18 +0000 Received: from DESKTOP-SG5V5EA (unknown [58.22.7.114]) by mail-m11883.qiye.163.com (Hmail) with ESMTPA id D5D368401E3; Tue, 13 Sep 2022 09:12:12 +0800 (CST) Date: Tue, 13 Sep 2022 09:12:12 +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: <2022091309121244779369@rock-chips.com> X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFJSktLSjdXWS1ZQUlXWQ8JGhUIEh9ZQVlCShpLVh1LHkhLTUJJTx9JTFUTARMWGhIXJB QOD1lXWRgSC1lBWU5DVUlJVUxVSkpPWVdZFhoPEhUdFFlBWU9LSFVKSktISkxVSktLWQY+ X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Pzo6Sio6KT0eNioOIRBJOA8Q KhgKCR9VSlVKTU1IS0hKTkhITU9KVTMWGhIXVREaAlUDDjsJFBgQVhgTEgsIVRgUFkVZV1kSC1lB WU5DVUlJVUxVSkpPWVdZCAFZQUpDQ0tLNwY+ X-HM-Tid: 0a8334675df12eb8kusnd5d368401e3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220912_181216_029392_744B7771 X-CRM114-Status: GOOD ( 32.28 ) 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 d29yay4KPiAKQ291bGQgc29tZSBvbmUgY2FuIHNoYXJlIG1lIHRoYXQgZG9lcyB0aGUgZHJpdmVy IHNob3VsZCB3b3JrIHdlbGwgd2l0aCB0aGUgb2xkIGR0IGZpbGVzPwpJIHRoaW5rIHRoYXQgaWYg c29tZSBvbmUgdXBkYXRlIHRoZSBrZXJuZWwsIHRoZXkgc2hvdWxkIHVwZGF0ZSB0aGUgZHJpdmVy IGFuZCB0aGUgZHQgZmlsZXMgPwp0aGUgbmV3IGRyaXZlciB3aXRoIGEgbmV3IGNvcmUgZHQgZmls ZXMsIG5vdyBpZiBpIHVwZGF0ZSB0aGUgZHQgZmlsZXMgYW5kIGRyaXZlciBvbmNlIHRpbWUsIHNo b3VsZAp0aGUgZHJpdmVyIHN0aWxsIG5lZWQgdG8gd29yayB3aXRoIG9sZCBkdCBmaWxlcyA/Cgo+ Q2hlY2sgY2xvY2stbmFtZXMgZmlyc3QgZWxzZSBmYWxsYmFjayB0byBjbG9jayBpbmRleCBvciBr ZWVwIHVzaW5nIG9mX2Nsa19nZXQoKS4KPlVwIHRvIHRoZSBHUElPIG1haW50YWluZXIgb2YgY291 cnNlLgo+Tm90IHN1cmUgaWYgYSBjbGsgaW5kZXggZnVuY3Rpb24gZm9yIGRldm0gZXhpc3QsIGVs c2UgbWF5YmUgdXNlOiA/Pz8KPgo+CWJhbmstPmNsayA9IGNsa19nZXQoZGV2LCAiYnVzIik7Cj52 cy4KPgliYW5rLT5jbGsgPSBvZl9jbGtfZ2V0X2J5X25hbWUobnAsICJidXMiKTsKPgo+Cj4JaWYg KElTX0VSUihiYW5rLT5jbGspKSB7Cj4JYmFuay0+Y2xrID0gb2ZfY2xrX2dldChiYW5rLT5vZl9u b2RlLCAwKTsKPglpZiAoSVNfRVJSKGJhbmstPmNsaykpCj4JcmV0dXJuIFBUUl9FUlIoYmFuay0+ Y2xrKTsKPgo+Q291bGQgeW91IGNoZWNrIGlmIHRoaXMgc3RpbGwgd29ya3M/Cj4KPj09PT0KPgo+ UHJldmlvdXMgY29tbWVudHM6Cj4KPj4+WW91IGNhbid0IG1peCBkZXZtXyB3aXRoIG5vbi1kZXZt XyBjYWxscy4KPj4+Cj4+IE9rYXksIEkgYWRkICdjbG9jay1uYW1lcycgcHJvcGVydHkgZm9yIGFs bCBleGlzdGVkIHJlbGF0ZWQgZHQgZmlsZXMgYW5kIGZpeCBkcml2ZXIgdG8gb25seSB1c2UKPj4g ZGV2bV9jbGtfZ2V0KCksIEkgcHVzaCBhIHZlcnNpb24gcGxlYXNlIGhlbHAgdG8gcmV2aWV3Cj4K Pj09PT0KPgo+PiArCWlmIChJU19FUlIoYmFuay0+Y2xrKSkgewo+PiArCWRldl9lcnIoZGV2LCAi ZmFpbCB0byBnZXQgYXBiIGNsb2NrXG4iKTsKPj4gKwlyZXR1cm4gUFRSX0VSUihiYW5rLT5jbGsp Owo+PiArCX0KPj4gKwo+Cj4+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGJhbmstPmNsayk7 Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJcmV0dXJuIHJldDsKPj4gKwo+Cj5CbG9jayBvcmRlcjog Zmlyc3QgZmluZCBhbGwgeW91ciBjbG9ja3MgdGhlbiBlbmFibGUuCj5HZXQgeW91ciByZXNvdXJj ZXMgZmlyc3QuCj4KPj4gKwliYW5rLT5kYl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZGIiKTsK Pj4gKwlpZiAoSVNfRVJSKGJhbmstPmRiX2NsaykpIHsKPj4gKwliYW5rLT5kYl9jbGsgPSBOVUxM Owo+PiArCX0KPgo+VGhlIGNsb2NrLW5hbWUgImRiIiBpcyBvbmx5IGF2YWlsYWJsZSBpbiByazM1 NnguZHRzaQo+Cj4+ICsKPj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoYmFuay0+ZGJfY2xr KTsKPj4gKwlpZiAocmV0IDwgMCkgewo+Cj5JdCBpcyBub3QgYW4gZXJyb3IgaWYgaXQgZG9lc24n dCBleGlzdHMuCj5PbmUgbWlnaHQgdXNlIHRoZSBmdW5jdGlvbiBkZXZtX2Nsa19nZXRfb3B0aW9u YWwoKS4KPgo+PiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShiYW5rLT5jbGspOwo+PiArCXJldHVy biByZXQ7Cj4+ICsJfQo+PsKgCj4+wqAgcmV0dXJuIDA7Cj4+wqAgfQo+PiBAQCAtNjkwLDU3ICs3 MDEsODYgQEAgcm9ja2NoaXBfZ3Bpb19maW5kX2Jhbmsoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3Rs ZGV2LCBpbnQgaWQpCj4+wqAgcmV0dXJuIGZvdW5kID8gYmFuayA6IE5VTEw7Cj4+wqAgfQo+PsKg Cj4+IC1zdGF0aWMgaW50IHJvY2tjaGlwX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfZ3Bpb19nZXRfYmFua19pZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCj4+wqAgewo+PiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7 Cj4+IC0Jc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPj4gLQlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKnBjdGxucCA9IG9mX2dldF9wYXJlbnQobnApOwo+PiAtCXN0cnVjdCBwaW5j dHJsX2RldiAqcGN0bGRldiA9IE5VTEw7Cj4+IC0Jc3RydWN0IHJvY2tjaGlwX3Bpbl9iYW5rICpi YW5rID0gTlVMTDsKPj4gLQlzdHJ1Y3Qgcm9ja2NoaXBfcGluX2RlZmVycmVkICpjZmc7Cj4+ICsJ c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSA9IGRldl9md25vZGUoZGV2KTsKPj4gKwlpbnQg YmFua19pZCA9IC1FSU5WQUw7Cj4+ICsJdTY0IHVpZDsKPj7CoCBzdGF0aWMgaW50IGdwaW87Cj4+ IC0JaW50IGlkLCByZXQ7Cj4+wqAKPj4gLQlpZiAoIW5wIHx8ICFwY3RsbnApCj4+IC0JcmV0dXJu IC1FTk9ERVY7Cj4+ICsJaWYgKGlzX2FjcGlfbm9kZShmd25vZGUpKSB7Cj4+ICsJaWYgKCFhY3Bp X2Rldl91aWRfdG9faW50ZWdlcihBQ1BJX0NPTVBBTklPTihkZXYpLCAmdWlkKSkKPj4gKwliYW5r X2lkID0gKGludCl1aWQ7Cj4+ICsJfSBlbHNlIHsKPj4gKwliYW5rX2lkID0gb2ZfYWxpYXNfZ2V0 X2lkKHRvX29mX25vZGUoZndub2RlKSwgImdwaW8iKTsKPj4gKwlpZiAoYmFua19pZCA8IDApCj4+ ICsJYmFua19pZCA9IGdwaW8rKzsKPj4gKwl9Cj4+wqAKPj4gLQlwY3RsZGV2ID0gb2ZfcGluY3Ry bF9nZXQocGN0bG5wKTsKPj4gLQlpZiAoIXBjdGxkZXYpCj4+IC0JcmV0dXJuIC1FUFJPQkVfREVG RVI7Cj4+ICsJcmV0dXJuIGJhbmtfaWQ7Cj4+ICt9Cj4+wqAKPj4gLQlpZCA9IG9mX2FsaWFzX2dl dF9pZChucCwgImdwaW8iKTsKPj4gLQlpZiAoaWQgPCAwKQo+PiAtCWlkID0gZ3BpbysrOwo+PiAr c3RhdGljIGludCByb2NrY2hpcF9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPj4gKwlzdHJ1 Y3Qgcm9ja2NoaXBfcGluX2JhbmsgKmJhbms7Cj4+ICsJc3RydWN0IHBpbmN0cmxfZGV2ICpwY3Rs ZGV2Owo+PiArCWludCBiYW5rX2lkOwo+PiArCWludCByZXQ7Cj4+wqAKPj4gLQliYW5rID0gcm9j a2NoaXBfZ3Bpb19maW5kX2JhbmsocGN0bGRldiwgaWQpOwo+PiAtCWlmICghYmFuaykKPj4gLQly ZXR1cm4gLUVJTlZBTDsKPj4gKwliYW5rX2lkID0gcm9ja2NoaXBfZ3Bpb19nZXRfYmFua19pZChk ZXYpOwo+PiArCWlmIChiYW5rX2lkIDwgMCkKPj4gKwlyZXR1cm4gYmFua19pZDsKPj7CoAo+PiAr CXBjdGxkZXYgPSBnZXRfcGluY3RybF9kZXZfZnJvbV9kZXZuYW1lKCJwaW5jdHJsIik7Cj4+ICsJ aWYgKHBjdGxkZXYpIHsKPj4gKwliYW5rID0gcm9ja2NoaXBfZ3Bpb19maW5kX2JhbmsocGN0bGRl diwgYmFua19pZCk7Cj4+ICsJaWYgKCFiYW5rKQo+PiArCXJldHVybiAtRU5PREVWOwo+PiArCX0g ZWxzZSB7Cj4+ICsJYmFuayA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqYmFuayksIEdGUF9L RVJORUwpOwo+PiArCWlmICghYmFuaykKPj4gKwlyZXR1cm4gLUVOT01FTTsKPj4gKwl9Cj4+ICsK Pj4gKwliYW5rLT5iYW5rX251bSA9IGJhbmtfaWQ7Cj4+wqAgYmFuay0+ZGV2ID0gZGV2Owo+PiAt CWJhbmstPm9mX25vZGUgPSBucDsKPj7CoAo+PiAtCXJhd19zcGluX2xvY2tfaW5pdCgmYmFuay0+ c2xvY2spOwo+PiArCWJhbmstPnJlZ19iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDApOwo+PiArCWlmIChJU19FUlIoYmFuay0+cmVnX2Jhc2UpKQo+PiArCXJldHVy biBQVFJfRVJSKGJhbmstPnJlZ19iYXNlKTsKPj7CoAo+PiAtCXJldCA9IHJvY2tjaGlwX2dldF9i YW5rX2RhdGEoYmFuayk7Cj4+ICsJYmFuay0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAw KTsKPj4gKwlpZiAoYmFuay0+aXJxIDwgMCkKPj4gKwlyZXR1cm4gYmFuay0+aXJxOwo+PiArCj4+ ICsJcmV0ID0gcm9ja2NoaXBfZ3Bpb19nZXRfY2xvY2tzKGJhbmspOwo+PsKgIGlmIChyZXQpCj4+ wqAgcmV0dXJuIHJldDsKPj7CoAo+PiArCXJhd19zcGluX2xvY2tfaW5pdCgmYmFuay0+c2xvY2sp Owo+PiArCXJvY2tjaGlwX2dwaW9fc2V0X3JlZ3MoYmFuayk7Cj4+ICsKPj7CoCAvKgo+PsKgICog UHJldmVudCBjbGFzaGVzIHdpdGggYSBkZWZlcnJlZCBvdXRwdXQgc2V0dGluZwo+PsKgICogYmVp bmcgYWRkZWQgcmlnaHQgYXQgdGhpcyBtb21lbnQuCj4+wqAgKi8KPj7CoCBtdXRleF9sb2NrKCZi YW5rLT5kZWZlcnJlZF9sb2NrKTsKPj7CoAo+PiAtCXJldCA9IHJvY2tjaGlwX2dwaW9saWJfcmVn aXN0ZXIoYmFuayk7Cj4+ICsJcmV0ID0gcm9ja2NoaXBfZ3Bpb2xpYl9yZWdpc3RlcihiYW5rLCBw Y3RsZGV2KTsKPj7CoCBpZiAocmV0KSB7Cj4+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGJhbmst PmNsayk7Cj4+IC0JbXV0ZXhfdW5sb2NrKCZiYW5rLT5kZWZlcnJlZF9sb2NrKTsKPj4gLQlyZXR1 cm4gcmV0Owo+PiArCWRldl9lcnIoYmFuay0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGdwaW8g JWRcbiIsIHJldCk7Cj4+ICsJZ290byBlcnJfdW5sb2NrOwo+PsKgIH0KPj7CoAo+PsKgIHdoaWxl ICghbGlzdF9lbXB0eSgmYmFuay0+ZGVmZXJyZWRfcGlucykpIHsKPj4gKwlzdHJ1Y3Qgcm9ja2No aXBfcGluX2RlZmVycmVkICpjZmc7Cj4+ICsKPj7CoCBjZmcgPSBsaXN0X2ZpcnN0X2VudHJ5KCZi YW5rLT5kZWZlcnJlZF9waW5zLAo+PsKgIMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgcm9ja2NoaXBfcGlu X2RlZmVycmVkLCBoZWFkKTsKPj4gKwlpZiAoIWNmZykKPj4gKwlicmVhazsKPj4gKwo+PsKgIGxp c3RfZGVsKCZjZmctPmhlYWQpOwo+PsKgCj4+wqAgc3dpdGNoIChjZmctPnBhcmFtKSB7Cj4+IEBA IC03NjUsOSArODA1LDE1IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZ3Bpb19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PsKgIG11dGV4X3VubG9jaygmYmFuay0+ZGVmZXJyZWRf bG9jayk7Cj4+wqAKPj7CoCBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBiYW5rKTsKPj4gLQlk ZXZfaW5mbyhkZXYsICJwcm9iZWQgJXBPRlxuIiwgbnApOwo+PiArCWRldl9pbmZvKGRldiwgInBy b2JlZCAlcGZ3XG4iLCBkZXZfZndub2RlKGRldikpOwo+PsKgCj4+wqAgcmV0dXJuIDA7Cj4+ICtl cnJfdW5sb2NrOgo+PiArCW11dGV4X3VubG9jaygmYmFuay0+ZGVmZXJyZWRfbG9jayk7Cj4+ICsJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGJhbmstPmNsayk7Cj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGJhbmstPmRiX2Nsayk7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PsKgIH0KPj7CoAo+PsKg IHN0YXRpYyBpbnQgcm9ja2NoaXBfZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPj4gQEAgLTc3NSw2ICs4MjEsNyBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2dwaW9fcmVt b3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+wqAgc3RydWN0IHJvY2tjaGlwX3Bp bl9iYW5rICpiYW5rID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4+wqAKPj7CoCBjbGtf ZGlzYWJsZV91bnByZXBhcmUoYmFuay0+Y2xrKTsKPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUo YmFuay0+ZGJfY2xrKTsKPj7CoCBncGlvY2hpcF9yZW1vdmUoJmJhbmstPmdwaW9fY2hpcCk7Cj4+ wqAKPj7CoCByZXR1cm4gMDsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1yb2NrY2hpcAo=