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 X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08514C433E0 for ; Fri, 31 Jul 2020 15:03:45 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BB8432072A for ; Fri, 31 Jul 2020 15:03:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="bXhpLzHg"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="rC6w2Bdb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BB8432072A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=GyFKkcm87NQB+vVffh1nde4NBVcl+ecaC/NTT7GBxds=; b=bXhpLzHg0zcVrH6EbuOrZNXmV kOewY7ggZzgx1RWM+HgmQhbAmWIG1DZvep+MXwvuAkAY3zngMY+wfGNfdo7yaZRKfJbw7OrvMsqxc SYgv45u5UUlSLtM3KQ8/bp9oVkrlms5w1IIKK0QMWCB/b2hi3rz+wnNZpCa4YaGv9EtS1jY5jyTiP gFSKk95Ac31cMPP8vnhRniGiAMibKepCCp2fPlsl3jE4gIavHRYlSl3ZhdPq/6jbqAPrrHPKhjAV6 OWuBSW1S1zL48Xtu+/T3pqQRC6urD7qlWL7siIa8/1EJrwIoa+Z8jQN3E6dpYZivn/amx47walx6x sYDHMSpyg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k1WZI-0002Wg-Jq; Fri, 31 Jul 2020 15:03:32 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k1WZE-0002VY-VK; Fri, 31 Jul 2020 15:03:29 +0000 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8399B2072A; Fri, 31 Jul 2020 15:03:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596207807; bh=7h1OZHbAgQvVQeo/mlH8Cx5sljeX0uW5NmyH1puDdGs=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=rC6w2BdbZHer5sg8rkIhuCYTCqE4Dd8OBJIe55xAqvD3OQ3BESKCb+VADzVG46LmW 6yO8OfoIpi0mz0FyoaFuG8NSyTozh2Ld6bRfJv599TLwSRdeI9wdcQ00z3AV95Y5F0 u5oprR8dwg9TBKTA6xzKTwN4qm6jAhGJLNvHvC7s= Received: by mail-ej1-f50.google.com with SMTP id qc22so16944615ejb.4; Fri, 31 Jul 2020 08:03:27 -0700 (PDT) X-Gm-Message-State: AOAM5316s3GLlPoZG0KO8wZFRbeol76zBKpWGIjCavw+wKJUhmnIl/Vb VFbxsIO4fGcTM3LrWuZyKwNzxuQBU1tXXJUpgQ== X-Google-Smtp-Source: ABdhPJwP4TSzU3Z1rmBZBBnob1tAI88DNAqSYDEhOduU/lrwrcHZ+ITzAQsm6yLNkXkN0Ec1U4rsT9BPsaaefbqnK+c= X-Received: by 2002:a17:906:b6d0:: with SMTP id ec16mr4465558ejb.94.1596207806008; Fri, 31 Jul 2020 08:03:26 -0700 (PDT) MIME-Version: 1.0 References: <1596010690-13178-1-git-send-email-neal.liu@mediatek.com> <1596010690-13178-3-git-send-email-neal.liu@mediatek.com> <1596163478.3932.17.camel@mtkswgap22> In-Reply-To: <1596163478.3932.17.camel@mtkswgap22> From: Chun-Kuang Hu Date: Fri, 31 Jul 2020 23:03:14 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 2/2] soc: mediatek: add mtk-devapc driver To: Neal Liu X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200731_110329_165053_6F90FAA2 X-CRM114-Status: GOOD ( 45.82 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chun-Kuang Hu , wsd_upstream , devicetree@vger.kernel.org, lkml , Rob Herring , "moderated list:ARM/Mediatek SoC support" , Matthias Brugger , Linux ARM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGksIE5lYWw6CgpOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfm nIgzMeaXpSDpgLHkupQg5LiK5Y2IMTA6NDTlr6vpgZPvvJoKPgo+IEhpIENodW4tS3VhbmcsCj4K Pgo+IE9uIFRodSwgMjAyMC0wNy0zMCBhdCAwMDozOCArMDgwMCwgQ2h1bi1LdWFuZyBIdSB3cm90 ZToKPiA+IEhpLCBOZWFsOgo+ID4KPiA+IE5lYWwgTGl1IDxuZWFsLmxpdUBtZWRpYXRlay5jb20+ IOaWvCAyMDIw5bm0N+aciDI55pelIOmAseS4iSDkuIvljYg0OjI55a+r6YGT77yaCj4gPiA+Cj4g PiA+IE1lZGlhVGVrIGJ1cyBmYWJyaWMgcHJvdmlkZXMgVHJ1c3Rab25lIHNlY3VyaXR5IHN1cHBv cnQgYW5kIGRhdGEKPiA+ID4gcHJvdGVjdGlvbiB0byBwcmV2ZW50IHNsYXZlcyBmcm9tIGJlaW5n IGFjY2Vzc2VkIGJ5IHVuZXhwZWN0ZWQKPiA+ID4gbWFzdGVycy4KPiA+ID4gVGhlIHNlY3VyaXR5 IHZpb2xhdGlvbiBpcyBsb2dnZWQgYW5kIHNlbnQgdG8gdGhlIHByb2Nlc3NvciBmb3IKPiA+ID4g ZnVydGhlciBhbmFseXNpcyBvciBjb3VudGVybWVhc3VyZXMuCj4gPiA+Cj4gPiA+IEFueSBvY2N1 cnJlbmNlIG9mIHNlY3VyaXR5IHZpb2xhdGlvbiB3b3VsZCByYWlzZSBhbiBpbnRlcnJ1cHQsIGFu ZAo+ID4gPiBpdCB3aWxsIGJlIGhhbmRsZWQgYnkgbXRrLWRldmFwYyBkcml2ZXIuIFRoZSB2aW9s YXRpb24KPiA+ID4gaW5mb3JtYXRpb24gaXMgcHJpbnRlZCBpbiBvcmRlciB0byBmaW5kIHRoZSBt dXJkZXJlci4KPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTmVhbCBMaXUgPG5lYWwubGl1QG1l ZGlhdGVrLmNvbT4KPiA+ID4gLS0tCj4gPgo+ID4gW3NuaXBdCj4gPgo+ID4gPiArCj4gPiA+ICtz dGF0aWMgaW50IGdldF9zaGlmdF9ncm91cChzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0ICpjdHgp Cj4gPiA+ICt7Cj4gPiA+ICsgICAgICAgdTMyIHZpb19zaGlmdF9zdGE7Cj4gPiA+ICsgICAgICAg dm9pZCBfX2lvbWVtICpyZWc7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICByZWcgPSBjdHgtPmRldmFw Y19wZF9iYXNlICsgY3R4LT5vZmZzZXQtPnZpb19zaGlmdF9zdGE7Cj4gPiA+ICsgICAgICAgdmlv X3NoaWZ0X3N0YSA9IHJlYWRsKHJlZyk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICBpZiAodmlvX3No aWZ0X3N0YSkKPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBfX2Zmcyh2aW9fc2hpZnRfc3Rh KTsKPiA+ID4gKwo+ID4gPiArICAgICAgIHJldHVybiAtRUlPOwo+ID4gPiArfQo+ID4KPiA+IGdl dF9zaGlmdF9ncm91cCgpIGlzIGEgc21hbGwgZnVuY3Rpb24sIEkgd291bGQgbGlrZSB0byBtZXJn ZSB0aGlzCj4gPiBmdW5jdGlvbiBpbnRvIHN5bmNfdmlvX2RiZygpIHRvIG1ha2UgY29kZSBtb3Jl IHNpbXBsZS4KPgo+IFRoaXMgZnVuY3Rpb24gaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHku IEFuZCBpdCB3b3VsZCBtYWtlIHRoaXMKPiBkcml2ZXIgbW9yZSByZWFkYWJpbGl0eS4gSSB3b3Vs ZCBsaWtlIHRvIGtlZXAgaXQgYXMgYSBmdW5jdGlvbi4gSXMgdGhhdAo+IG9rYXkgZm9yIHlvdT8K CkFmdGVyIG1lcmdlLCB0aGUgZnVuY3Rpb24gd291bGQgYmU6CgpzdGF0aWMgYm9vbCBzeW5jX21p bl9zaGlmdF9ncm91cF92aW9fZGJnKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmN0eCkKewog aW50IG1pbl9zaGlmdF9ncm91cDsKIGludCByZXQ7CiB1MzIgdmFsOwoKIC8qIGZpbmQgdGhlIG1p bmltdW0gc2hpZnQgZ3JvdXAgd2hpY2ggaGFzIHZpb2xhdGlvbiAqLwogdmFsID0gcmVhZGwoY3R4 LT5kZXZhcGNfcGRfYmFzZSArIGN0eC0+b2Zmc2V0LT52aW9fc2hpZnRfc3RhKTsKIGlmICghdmFs KQogICAgcmV0dXJuIGZhbHNlOwoKIG1pbl9zaGlmdF9ncm91cCA9IF9fZmZzKHZhbCk7CgogLyog QXNzaWduIHRoZSBncm91cCB0byBzeW5jICovCiB3cml0ZWwoMHgxIDw8IG1pbl9zaGlmdF9ncm91 cCwgY3R4LT5kZXZhcGNfcGRfYmFzZSArCmN0eC0+b2Zmc2V0LT52aW9fc2hpZnRfc2VsKTsKCiAv KiBTdGFydCBzeW5jaW5nICovCiB3cml0ZWwoMHgxLCBjdHgtPmRldmFwY19wZF9iYXNlICsgY3R4 LT5vZmZzZXQtPnZpb19zaGlmdF9jb24pOwoKIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChwZF92 aW9fc2hpZnRfY29uX3JlZywgdmFsLCB2YWwgPT0gMHgzLCAwLAogICAgIFBIWV9ERVZBUENfVElN RU9VVCk7CiBpZiAocmV0KSB7CiAgZGV2X2VycihjdHgtPmRldiwgIiVzOiBTaGlmdCB2aW9sYXRp b24gaW5mbyBmYWlsZWRcbiIsIF9fZnVuY19fKTsKICByZXR1cm4gZmFsc2U7CiB9CgogLyogU3Rv cCBzeW5jaW5nICovCiB3cml0ZWwoMHgwLCBjdHgtPmRldmFwY19wZF9iYXNlICsgY3R4LT5vZmZz ZXQtPnZpb19zaGlmdF9jb24pOwoKIC8qID8gKi8KIHdyaXRlbCgweDEgPDwgbWluX3NoaWZ0X2dy b3VwLCBjdHgtPmRldmFwY19wZF9iYXNlICsKY3R4LT5vZmZzZXQtPnZpb19zaGlmdF9zdGEpOwoK IHJldHVybiB0cnVlOwp9CgpUaGUgd2hvbGUgZnVuY3Rpb24gaXMgdG8gc3luYyBtaW5fc2hpZnRf Z3JvdXAgdmlvbGF0aW9uIGluZm8sIEkgZG9uJ3QKa25vdyB3aHkgc2VwYXJhdGUgYW55IHBhcnQg dG8gYW4gaW5kZXBlbmRlbnQgZnVuY3Rpb24/IEFueSBmdW5jdGlvbgpjYWxsIHdvdWxkIGNhdXNl IHBlbmFsdHkgb24gQ1BVIHBlcmZvcm1hbmNlLCBzbyBJIGRvZXMgbm90IGxpa2UgdG8KYnJlYWsg dGhpcyBmdW5jdGlvbi4gQWZ0ZXIgZ29vZCBjb21tZW50LCBJIHRoaW5rIGV2ZXJ5IGJvZHkgY291 bGQKdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gb2YgZWFjaCByZWdpc3Rlci4KQWZ0ZXIgdGhlIG1l cmdlLCB0aGUgY29kZSB3b3VsZCBiZSBzbyBzaW1wbGUgYXM6Cgp3aGlsZShzeW5jX21pbl9zaGlm dF9ncm91cF92aW9fZGJnKGN0eCkpCiAgICBkZXZhcGNfZXh0cmFjdF92aW9fZGJnKGN0eCk7Cgo+ Cj4gPgo+ID4gPiArCj4gPgo+ID4gW3NuaXBdCj4gPgo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIFBI WV9ERVZBUENfVElNRU9VVCAgICAgMHgxMDAwMAo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICog c3luY192aW9fZGJnIC0gZG8gInNoaWZ0IiBtZWNoYW5zaW0iIHRvIGdldCBmdWxsIHZpb2xhdGlv biBpbmZvcm1hdGlvbi4KPiA+ID4gKyAqICAgICAgICAgICAgICAgIHNoaWZ0IG1lY2hhbmlzbSBp cyBkZXBlbmRzIG9uIGRldmFwYyBoYXJkd2FyZSBkZXNpZ24uCj4gPiA+ICsgKiAgICAgICAgICAg ICAgICBNZWRpYXRlayBkZXZhcGMgc2V0IG11bHRpcGxlIHNsYXZlcyBhcyBhIGdyb3VwLiBXaGVu IHZpb2xhdGlvbgo+ID4gPiArICogICAgICAgICAgICAgICAgaXMgdHJpZ2dlcmVkLCB2aW9sYXRp b24gaW5mbyBpcyBrZXB0IGluc2lkZSBkZXZhcGMgaGFyZHdhcmUuCj4gPiA+ICsgKiAgICAgICAg ICAgICAgICBEcml2ZXIgc2hvdWxkIGRvIHNoaWZ0IG1lY2hhbnNpbSB0byAic2hpZnQiIGZ1bGwg dmlvbGF0aW9uCj4gPiA+ICsgKiAgICAgICAgICAgICAgICBpbmZvIHRvIFZJT19EQkdzIHJlZ2lz dGVycy4KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbnQgc3luY192aW9fZGJn KHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmN0eCwgdTMyIHNoaWZ0X2JpdCkKPiA+ID4gK3sK PiA+ID4gKyAgICAgICB2b2lkIF9faW9tZW0gKnBkX3Zpb19zaGlmdF9zdGFfcmVnOwo+ID4gPiAr ICAgICAgIHZvaWQgX19pb21lbSAqcGRfdmlvX3NoaWZ0X3NlbF9yZWc7Cj4gPiA+ICsgICAgICAg dm9pZCBfX2lvbWVtICpwZF92aW9fc2hpZnRfY29uX3JlZzsKPiA+ID4gKyAgICAgICBpbnQgcmV0 Owo+ID4gPiArICAgICAgIHUzMiB2YWw7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICBwZF92aW9fc2hp ZnRfc3RhX3JlZyA9IGN0eC0+ZGV2YXBjX3BkX2Jhc2UgKyBjdHgtPm9mZnNldC0+dmlvX3NoaWZ0 X3N0YTsKPiA+ID4gKyAgICAgICBwZF92aW9fc2hpZnRfc2VsX3JlZyA9IGN0eC0+ZGV2YXBjX3Bk X2Jhc2UgKyBjdHgtPm9mZnNldC0+dmlvX3NoaWZ0X3NlbDsKPiA+ID4gKyAgICAgICBwZF92aW9f c2hpZnRfY29uX3JlZyA9IGN0eC0+ZGV2YXBjX3BkX2Jhc2UgKyBjdHgtPm9mZnNldC0+dmlvX3No aWZ0X2NvbjsKPiA+ID4gKwo+ID4gPiArICAgICAgIC8qIEVuYWJsZSBzaGlmdCBtZWNoYW5zaW0g Ki8KPiA+ID4gKyAgICAgICB3cml0ZWwoMHgxIDw8IHNoaWZ0X2JpdCwgcGRfdmlvX3NoaWZ0X3Nl bF9yZWcpOwo+ID4gPiArICAgICAgIHdyaXRlbCgweDEsIHBkX3Zpb19zaGlmdF9jb25fcmVnKTsK PiA+ID4gKwo+ID4gPiArICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChwZF92aW9fc2hp ZnRfY29uX3JlZywgdmFsLCB2YWwgPT0gMHgzLCAwLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQSFlfREVWQVBDX1RJTUVPVVQpOwo+ID4gPiArICAgICAgIGlmIChyZXQp Cj4gPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGN0eC0+ZGV2LCAiJXM6IFNoaWZ0IHZpb2xh dGlvbiBpbmZvIGZhaWxlZFxuIiwgX19mdW5jX18pOwo+ID4gPiArCj4gPiA+ICsgICAgICAgLyog RGlzYWJsZSBzaGlmdCBtZWNoYW5pc20gKi8KPiA+ID4gKyAgICAgICB3cml0ZWwoMHgwLCBwZF92 aW9fc2hpZnRfY29uX3JlZyk7Cj4gPiA+ICsgICAgICAgd3JpdGVsKDB4MCwgcGRfdmlvX3NoaWZ0 X3NlbF9yZWcpOwo+ID4gPiArICAgICAgIHdyaXRlbCgweDEgPDwgc2hpZnRfYml0LCBwZF92aW9f c2hpZnRfc3RhX3JlZyk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICByZXR1cm4gcmV0Owo+ID4gPiAr fQo+ID4gPiArCj4gPgo+ID4gW3NuaXBdCj4gPgo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICog ZGV2YXBjX2V4dHJhY3RfdmlvX2RiZyAtIGV4dHJhY3QgZnVsbCB2aW9sYXRpb24gaW5mb3JtYXRp b24gYWZ0ZXIgZG9pbmcKPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCBt ZWNoYW5pc20uCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyB2b2lkIGRldmFwY19leHRyYWN0X3Zp b19kYmcoc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqY3R4KQo+ID4gPiArewo+ID4gPiArICAg ICAgIGNvbnN0IHN0cnVjdCBtdGtfZGV2YXBjX3Zpb19kYmdzICp2aW9fZGJnczsKPiA+ID4gKyAg ICAgICBzdHJ1Y3QgbXRrX2RldmFwY192aW9faW5mbyAqdmlvX2luZm87Cj4gPiA+ICsgICAgICAg dm9pZCBfX2lvbWVtICp2aW9fZGJnMF9yZWc7Cj4gPiA+ICsgICAgICAgdm9pZCBfX2lvbWVtICp2 aW9fZGJnMV9yZWc7Cj4gPiA+ICsgICAgICAgdTMyIGRiZzA7Cj4gPiA+ICsKPiA+ID4gKyAgICAg ICB2aW9fZGJnMF9yZWcgPSBjdHgtPmRldmFwY19wZF9iYXNlICsgY3R4LT5vZmZzZXQtPnZpb19k YmcwOwo+ID4gPiArICAgICAgIHZpb19kYmcxX3JlZyA9IGN0eC0+ZGV2YXBjX3BkX2Jhc2UgKyBj dHgtPm9mZnNldC0+dmlvX2RiZzE7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICB2aW9fZGJncyA9IGN0 eC0+dmlvX2RiZ3M7Cj4gPiA+ICsgICAgICAgdmlvX2luZm8gPSBjdHgtPnZpb19pbmZvOwo+ID4g PiArCj4gPiA+ICsgICAgICAgLyogU3RhcnRzIHRvIGV4dHJhY3QgdmlvbGF0aW9uIGluZm9ybWF0 aW9uICovCj4gPiA+ICsgICAgICAgZGJnMCA9IHJlYWRsKHZpb19kYmcwX3JlZyk7Cj4gPiA+ICsg ICAgICAgdmlvX2luZm8tPnZpb19hZGRyID0gcmVhZGwodmlvX2RiZzFfcmVnKTsKPiA+ID4gKwo+ ID4gPiArICAgICAgIHZpb19pbmZvLT5tYXN0ZXJfaWQgPSAoZGJnMCAmIHZpb19kYmdzLT5tc3Rp ZC5tYXNrKSA+Pgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9fZGJncy0+ bXN0aWQuc3RhcnQ7Cj4gPgo+ID4gV2hhdCBpcyBtYXN0ZXJfaWQ/IEhvdyBjb3VsZCB3ZSB1c2Ug aXQgdG8gZGVidWc/IEZvciBleGFtcGxlLCBpZiB3ZQo+ID4gZ2V0IGEgbWFzdGVyX2lkID0gMSwg d2hhdCBzaG91bGQgd2UgZG8gZm9yIHRoaXM/Cj4gPgo+ID4gPiArICAgICAgIHZpb19pbmZvLT5k b21haW5faWQgPSAoZGJnMCAmIHZpb19kYmdzLT5kbW5pZC5tYXNrKSA+Pgo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2aW9fZGJncy0+ZG1uaWQuc3RhcnQ7Cj4gPgo+ID4gV2hh dCBpcyBkb21haW5faWQ/IEhvdyBjb3VsZCB3ZSB1c2UgaXQgdG8gZGVidWc/IEZvciBleGFtcGxl LCBpZiB3ZQo+ID4gZ2V0IGEgZG9tYWluX2lkID0gMiwgd2hhdCBzaG91bGQgd2UgZG8gZm9yIHRo aXM/Cj4gPgo+Cj4gbWFzdGVyX2lkIGFuZCBkb21haW5faWQgYmVsb25ncyBvdXIgYnVzIHNpZGUt YmFuZCBzaWduYWwgaW5mby4gSXQgY2FuCj4gaGVscCB1cyB0byBmaW5kIHRoZSB2aW9sYXRpb24g bWFzdGVyLgoKRG9lcyAndmlvbGF0aW9uIG1hc3RlcicgbWVhbnMgdGhlIGhhcmR3YXJlIGNvdWxk IGFjY2VzcyB0aGUgcHJvdGVjdGVkCnJlZ2lzdGVyPyAoZXguIENQVSwgR0NFLCAuLi4pIElmIHNv LCBJIHRoaW5rIGl0J3MgYmV0dGVyIHRvIGFkZApjb21tZW50IHRvIGV4cGxhaW4gaG93IHRvIG1h cCAobWFzdGVyX2lkLCBkb21haW5faWQpIHRvIGEgaGFyZHdhcmUKKG1heWJlIHRoZSBkZXZpY2Ug aW4gZGV2aWNlIHRyZWUpIGJlY2F1c2UgZXZlcnkgYm9keSBkb2VzIG5vdCBrbm93CndoYXQgdGhl IG51bWJlciBtZWFucy4gRG9uJ3QgdHJ5IHRvIHRyYW5zbGF0ZSB0aGUgbnVtYmVyIHRvIGEgc3Ry aW5nCmJlY2F1c2UgdGhpcyB3b3VsZCBjb3N0IG11Y2ggdGltZSB0byBkbyB0aGlzLiBKdXN0IHBy aW50IGEgbnVtYmVyIGFuZAp3ZSBjb3VsZCBmaW5kIG91dCB0aGUgbWFzdGVyIGJ5IHRoZSBjb21t ZW50LgoKPgo+ID4gPiArICAgICAgIHZpb19pbmZvLT53cml0ZSA9ICgoZGJnMCAmIHZpb19kYmdz LT52aW9fdy5tYXNrKSA+Pgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlvX2Ri Z3MtPnZpb193LnN0YXJ0KSA9PSAxOwo+ID4gPiArICAgICAgIHZpb19pbmZvLT5yZWFkID0gKChk YmcwICYgdmlvX2RiZ3MtPnZpb19yLm1hc2spID4+Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgdmlvX2RiZ3MtPnZpb19yLnN0YXJ0KSA9PSAxOwo+ID4gPiArICAgICAgIHZpb19pbmZv LT52aW9fYWRkcl9oaWdoID0gKGRiZzAgJiB2aW9fZGJncy0+YWRkcl9oLm1hc2spID4+Cj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9fZGJncy0+YWRkcl9oLnN0YXJ0 Owo+ID4KPiA+IFdoYXQgaXMgdmlvX2FkZHJfaGlnaD8gQXMgSSBrbm93IGFsbCByZWdpc3RlciBh ZGRyZXNzIGFyZSAzMiBiaXRzLCBpcwo+ID4gdmlvX2FkZHJfaGlnaCB0aGUgYWRkcmVzcyBhYm92 ZSAzMiBiaXRzPwo+Cj4gWWVzLCB5b3UgYXJlIHJpZ2h0LiBJbiBNVDY3NzksIGFsbCByZWdpc3Rl ciBiYXNlIGFyZSAzMiBiaXRzLiBXZSBjYW4KPiBpZ25vcmUgdGhpcyBpbmZvIGZvciBjdXJyZW50 IGRyaXZlci4gSSdsbCB1cGRhdGUgb24gbmV4dCBwYXRjaC4KPiBUaGFua3MgIQoKU3VjaCBhIHN0 cmFuZ2UgaGFyZHdhcmUsIGFsbCByZWdpc3RlciBpcyAzMiBiaXRzIGJ1dCBpdCBoYXMgYQp2aW9f YWRkcl9oaWdoIGluIGl0cyByZWdpc3Rlci4gT0ssIGp1c3QgZHJvcCB0aGlzLgoKPgo+ID4KPiA+ ID4gKwo+ID4gPiArICAgICAgIGRldmFwY192aW9faW5mb19wcmludChjdHgpOwo+ID4gPiArfQo+ ID4gPiArCj4gPgo+ID4gW3NuaXBdCj4gPgo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiArICogZGV2 YXBjX3Zpb2xhdGlvbl9pcnEgLSB0aGUgZGV2YXBjIEludGVycnVwdCBTZXJ2aWNlIFJvdXRpbmUg KElTUikgd2lsbCBkdW1wCj4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGlv biBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgd2hpY2ggbWFzdGVyIHZpb2xhdGVzCj4gPiA+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBzbGF2ZS4KPiA+ID4gKyAqLwo+ID4gPiArc3Rh dGljIGlycXJldHVybl90IGRldmFwY192aW9sYXRpb25faXJxKGludCBpcnFfbnVtYmVyLAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG10a19kZXZh cGNfY29udGV4dCAqY3R4KQo+ID4gPiArewo+ID4gPiArICAgICAgIHUzMiB2aW9faWR4Owo+ID4g PiArCj4gPiA+ICsgICAgICAgLyoKPiA+ID4gKyAgICAgICAgKiBNYXNrIHNsYXZlJ3MgaXJxIGJl Zm9yZSBjbGVhcmluZyB2aW8gc3RhdHVzLgo+ID4gPiArICAgICAgICAqIE11c3QgZG8gaXQgdG8g YXZvaWQgbmVzdGVkIGludGVycnVwdCBhbmQgcHJldmVudAo+ID4gPiArICAgICAgICAqIHVuZXhw ZWN0ZWQgYmVoYXZpb3IuCj4gPiA+ICsgICAgICAgICovCj4gPiA+ICsgICAgICAgZm9yICh2aW9f aWR4ID0gMDsgdmlvX2lkeCA8IGN0eC0+dmlvX2lkeF9udW07IHZpb19pZHgrKykKPiA+ID4gKyAg ICAgICAgICAgICAgIG1hc2tfbW9kdWxlX2lycShjdHgsIHZpb19pZHgsIHRydWUpOwo+ID4KPiA+ IEkgd291bGQgbGlrZSB0byByZXdyaXRlIHRoaXMgZm9yLWxvb3AgYXMgYmVsb3cgdG8gcHJldmVu dCB0b28gbWFueQo+ID4gZnVuY3Rpb24gY2FsbCBpbiBpcnEgaGFuZGxlci4KPiA+Cj4gPiBmb3Ig KGkgPSAwOyBpIDwgVklPX01PRF9UT19SRUdfSU5EKGN0eC0+dmlvX2lkeF9udW0pOyBpKyspCj4g PiAgICAgd3JpdGVsKDB4ZmZmZmZmZmYsIGN0eC0+ZGV2YXBjX3BkX2Jhc2UgKyBjdHgtPm9mZnNl dC0+dmlvX21hc2sgKyA0ICogaSk7Cj4gPgo+Cj4gVGhpcyBpZGVhIGlzIG9rYXkgZm9yIG1lLiBJ cyB0aGVyZSBhbnkgbWFjcm8gdG8gcmVwbGFjZSAweGZmZmZmZmZmPwoKR0VOTUFTSygzMSwgMCk7 Cgo+Cj4gPiByZWcgID0gcmVhZGwoY3R4LT5kZXZhcGNfcGRfYmFzZSArIGN0eC0+b2Zmc2V0LT52 aW9fbWFzayArIDQgKiBpKTsKPiA+IHJlZyB8PSAxIDw8IChjdHgtPnZpb19pZHhfbnVtIC0gMzIg KiBpICsgMSkgLSAxOwo+ID4gd3JpdGVsKHJlZywgY3R4LT5kZXZhcGNfcGRfYmFzZSArIGN0eC0+ b2Zmc2V0LT52aW9fbWFzayArIDQgKiBpKTsKPgo+IEFyZSB5b3UgdHJ5aW5nIHRvIGNsZWFyIHRo ZSBiaXRzIHdoaWNoIG92ZXIgdmlvX2lkeF9udW0/Cj4gSWYgeWVzLCBJIHRoaW5rIHRoZSBzZWNv bmQgbGluZSBzaG91bGQgYmU6Cj4gcmVnICY9IDEgPDwgKGN0eC0+dmlvX2lkeF9udW0gLSAzMiAq IGkpIC0gMTsKPgo+IEZvciBleGFtcGxlLCBpZiB2aW9faWR4X251bSBpcyA0MDoKPiBhZnRlciBm b3IgbG9vcDoKPiB2aW9fbWFzazAgPSAweGZmZmZmZmZmOwo+IHZpb19tYXNrMSA9IDB4ZmZmZmZm ZmY7Cgp3aGVuIHZpb19pZHhfbnVtIGlzIDQwLCBWSU9fTU9EX1RPX1JFR19JTkQoY3R4LT52aW9f aWR4X251bSkgaXMgMSwgc28KYWZ0ZXIgZm9yLWxvb3A6CnZpb19tYXNrMCA9IDB4ZmZmZmZmZmY7 CgpBbmQgdGhlIGNvZGUgYWZ0ZXIgZm9yLWxvb3AganVzdCB0byBkbyB0aGlzOgp2aW9fbWFzazEg PSAweGZmOwoKPgo+IHJlZyA9IHJlYWRsKHZpb19tYXNrMSk7Cj4gcmVnICY9ICgxIDw8IDgpIC0g MTsgKHdoaWNoIGlzIDB4MDAwMDAwZmYpCj4gcmVnIHdpbGwgYmUgMHhmZgo+IHdyaXRlbChyZWcs IHZpb19tYXNrMSk7Cj4KPiBEb2VzIGl0IG1ha2Ugc2Vuc2U/Cj4KPiBBY3R1YWxseSwgaXQgaXMg b2theSB0byBvdmVyd3JpdGUgdGhlIHVudXNlZCByZWdpc3RlciBiaXRzLgo+IFNvIGl0J3Mgbm8g bWF0dGVyIHRvIGRvIHRoaXMgc3RlcC4KCk9LLCB0aGUgY29kZSB3b3VsZCBiZQoKZm9yIChpID0g MDsgaSA8PSBWSU9fTU9EX1RPX1JFR19JTkQoY3R4LT52aW9faWR4X251bSAtIDEpOyBpKyspCiAg ICB3cml0ZWwoR0VOTUFTSygzMSwgMCksIGN0eC0+ZGV2YXBjX3BkX2Jhc2UgKyBjdHgtPm9mZnNl dC0+dmlvX21hc2sgKyA0ICogaSk7CgpSZWdhcmRzLApDaHVuLUt1YW5nLgoKPgo+ID4KPiA+ID4g Kwo+ID4gPiArICAgICAgIGRldmFwY19kdW1wX3Zpb19kYmcoY3R4KTsKPiA+ID4gKwo+ID4gPiAr ICAgICAgIC8qCj4gPiA+ICsgICAgICAgICogRW5zdXJlIHRoYXQgdmlvbGF0aW9uIGluZm8gYXJl IHdyaXR0ZW4KPiA+ID4gKyAgICAgICAgKiBiZWZvcmUgZnVydGhlciBvcGVyYXRpb25zCj4gPiA+ ICsgICAgICAgICovCj4gPiA+ICsgICAgICAgc21wX21iKCk7Cj4gPiA+ICsKPiA+ID4gKyAgICAg ICBmb3IgKHZpb19pZHggPSAwOyB2aW9faWR4IDwgY3R4LT52aW9faWR4X251bTsgdmlvX2lkeCsr KSB7Cj4gPiA+ICsgICAgICAgICAgICAgICBjbGVhcl92aW9fc3RhdHVzKGN0eCwgdmlvX2lkeCk7 Cj4gPiA+ICsgICAgICAgICAgICAgICBtYXNrX21vZHVsZV9pcnEoY3R4LCB2aW9faWR4LCBmYWxz ZSk7Cj4gPiA+ICsgICAgICAgfQo+ID4KPiA+IERpdHRvIGZvciB0aGlzIGZvci1sb29wLgo+Cj4g RGl0dG8uCj4KPiA+Cj4gPiA+ICsKPiA+ID4gKyAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+Cj4gPiBbc25pcF0KPiA+Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBp bnQgbXRrX2RldmFwY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiAr ewo+ID4gPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBkZXYtPmRldi5vZl9u b2RlOwo+ID4gPiArICAgICAgIHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmN0eDsKPiA+ID4g KyAgICAgICBzdHJ1Y3QgY2xrICpkZXZhcGNfaW5mcmFfY2xrOwo+ID4gPiArICAgICAgIHUzMiBk ZXZhcGNfaXJxOwo+ID4gPiArICAgICAgIGludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICBp ZiAoSVNfRVJSKG5vZGUpKQo+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4g PiA+ICsKPiA+ID4gKyAgICAgICBjdHggPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9m KCpjdHgpLCBHRlBfS0VSTkVMKTsKPiA+ID4gKyAgICAgICBpZiAoIWN0eCkKPiA+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsgICAgICAgY3R4ID0gKHN0 cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKilvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBkZXYt PmRldik7Cj4gPiA+ICsgICAgICAgY3R4LT5kZXYgPSAmcGRldi0+ZGV2Owo+ID4gPiArCj4gPiA+ ICsgICAgICAgY3R4LT52aW9faW5mbyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBtdGtfZGV2 YXBjX3Zpb19pbmZvKSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdGUF9LRVJORUwpOwo+ID4gPiArICAgICAgIGlmICghY3R4LT52aW9faW5mbykKPiA+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsgICAgICAgY3R4LT5k ZXZhcGNfcGRfYmFzZSA9IG9mX2lvbWFwKG5vZGUsIDApOwo+ID4gPiArICAgICAgIGlmICghY3R4 LT5kZXZhcGNfcGRfYmFzZSkKPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ID4gPiArCj4gPiA+ICsgICAgICAgZGV2YXBjX2lycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5v ZGUsIDApOwo+ID4gPiArICAgICAgIGlmICghZGV2YXBjX2lycSkKPiA+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsgICAgICAgZGV2YXBjX2luZnJhX2Ns ayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAiZGV2YXBjLWluZnJhLWNsb2NrIik7Cj4gPiA+ ICsgICAgICAgaWYgKElTX0VSUihkZXZhcGNfaW5mcmFfY2xrKSkKPiA+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsgICAgICAgaWYgKGNsa19wcmVwYXJl X2VuYWJsZShkZXZhcGNfaW5mcmFfY2xrKSkKPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+ID4gPiArCj4gPiA+ICsgICAgICAgcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRl di0+ZGV2LCBkZXZhcGNfaXJxLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlycV9oYW5kbGVyX3QpZGV2YXBjX3Zpb2xhdGlvbl9pcnEsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJUlFGX1RSSUdHRVJfTk9ORSwgImRldmFwYyIsIGN0eCk7Cj4gPiA+ ICsgICAgICAgaWYgKHJldCkKPiA+Cj4gPiBZb3Ugc2hvdWxkIGNsa19kaXNhYmxlX3VucHJlcGFy ZShkZXZhcGNfaW5mcmFfY2xrKTsKPgo+IFllcywgSSBtaXNzIHRoaXMgcGFydC4gVGhhbmtzIGZv ciB5b3VyIHJlbWluZC4KPiBJJ2xsIHVwZGF0ZSBpdCBvbiBuZXh0IHBhdGNoLgo+Cj4gPgo+ID4g PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKwo+ID4gPiArICAgICAgIHN0YXJ0 X2RldmFwYyhjdHgpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbXRrX2RldmFwY19yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqZGV2KQo+ID4gPiArewo+ID4KPiA+IERpdHRvLgo+Cj4gRGl0dG8uCj4KPiA+Cj4g PiBSZWdhcmRzLAo+ID4gQ2h1bi1LdWFuZy4KPiA+Cj4gPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19k ZXZhcGNfZHJpdmVyID0gewo+ID4gPiArICAgICAgIC5wcm9iZSA9IG10a19kZXZhcGNfcHJvYmUs Cj4gPiA+ICsgICAgICAgLnJlbW92ZSA9IG10a19kZXZhcGNfcmVtb3ZlLAo+ID4gPiArICAgICAg IC5kcml2ZXIgPSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9IEtCVUlMRF9NT0ROQU1F LAo+ID4gPiArICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gbXRrX2RldmFwY19kdF9t YXRjaCwKPiA+ID4gKyAgICAgICB9LAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArbW9kdWxlX3Bs YXRmb3JtX2RyaXZlcihtdGtfZGV2YXBjX2RyaXZlcik7Cj4gPiA+ICsKPgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbWVkaWF0ZWsgbWFpbGlu ZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRlawo=