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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 33EE7C11F66 for ; Tue, 29 Jun 2021 11:39:13 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DEC7461DC0 for ; Tue, 29 Jun 2021 11:39:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DEC7461DC0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4DBBF82E5F; Tue, 29 Jun 2021 13:39:10 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id A5CC182E8B; Tue, 29 Jun 2021 09:16:00 +0200 (CEST) Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.70.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D0B1282E8B for ; Tue, 29 Jun 2021 09:15:54 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=zyf@rock-chips.com Received: from localhost (unknown [192.168.167.69]) by regular1.263xmail.com (Postfix) with ESMTP id DBE4D12EC; Tue, 29 Jun 2021 15:15:50 +0800 (CST) X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-ADDR-CHECKED4: 1 X-SKE-CHECKED: 1 X-ABS-CHECKED: 1 X-ANTISPAM-LEVEL: 2 Received: from hp1216 (unknown [58.22.7.114]) by smtp.263.net (postfix) whith ESMTP id P12341T139824203822848S1624950946456315_; Tue, 29 Jun 2021 15:15:47 +0800 (CST) X-IP-DOMAINF: 1 X-UNIQUE-TAG: <7a5fc7d51ac2ff51c1226e99f6828655> X-RL-SENDER: zyf@rock-chips.com X-SENDER: zyf@rock-chips.com X-LOGIN-NAME: zyf@rock-chips.com X-FST-TO: jh80.chung@samsung.com X-RCPT-COUNT: 7 X-SENDER-IP: 58.22.7.114 X-ATTACHMENT-NUM: 0 X-System-Flag: 0 Date: Tue, 29 Jun 2021 15:15:47 +0800 Organization: =?utf-8?B?55Ge6Iqv5b6u55S15a2Q?= From: =?utf-8?B?6LW15Luq5bOw?= To: "Jaehoon Chung" , sjg , =?utf-8?B?5p2o5Yev?= Cc: "Peng Fan" , "Philipp Tomsich" , u-boot Subject: Re: Re: [PATCH v2 1/3] mmc: rockchip_sdhci: add phy and clock config for rk3399 References: <20210628091952.29533-1-yifeng.zhao@rock-chips.com>, , <20210628091952.29533-2-yifeng.zhao@rock-chips.com>, X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7.2.21.453[cn] Mime-Version: 1.0 Message-ID: <20210629151447310449173@rock-chips.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Mailman-Approved-At: Tue, 29 Jun 2021 13:39:07 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean SGkgSmFlaG9vbiwKCgo+UktfQ0xSU0VUQklUUyBtYWNybyBpcyAoKChjbHIpIHwgKHNldCkpKSA8 PCAxNikgfCAoc2V0KS4KCj5XaGljaCBiaXQgaXMgY2xlYXJlZD8gV2hlbiAoNyA8PCA0KSBpcyBz ZXQsIGl0IG1lYW5zIHRoYXQgY2xlYXJlZD8KClllcywgdGhpcyBvcHMgY2xlYXIgdGhlIGJpdDQt Yml0Ni4KCgo+PiArCgo+PiArCQlpZiAob3Bjb2RlID09IE1NQ19DTURfU0VORF9UVU5JTkdfQkxP Q0tfSFMyMDAgJiYgaG9zdC0+bW1jLT5idXNfd2lkdGggPT0gOCkKCj4+ICsJCQlzZGhjaV93cml0 ZXcoaG9zdCwgU0RIQ0lfTUFLRV9CTEtTWig3LCAxMjgpLCBTREhDSV9CTE9DS19TSVpFKTsKCj4+ ICsJCWVsc2UKCj4+ICsJCQlzZGhjaV93cml0ZXcoaG9zdCwgU0RIQ0lfTUFLRV9CTEtTWig3LCA2 NCksIFNESENJX0JMT0NLX1NJWkUpOwoKPgoKPldoeSBpdCBuZWVkcyB0byBwYXNzIHRvIDc/IEl0 IHNlZW1zIHRoYXQgYWx3YXlzIChkbWEgJiAweDcpIGluIFNESENJX01BS0VfQkxLU1ouCgo+I2Rl ZmluZSBTREhDSV9NQUtFX0JMS1NaKGJsa3N6KSAoMSA8PCAxMikgfCAoYmxrc3ogJiAweEZGRik/ CgpJbiBzZGhjaS5oIGRlZmluZWQg77yaIAojZGVmaW5lICBTREhDSV9NQUtFX0JMS1NaKGRtYSwg Ymxrc3opICgoKGRtYSAmIDB4NykgPDwgMTIpIHwgKGJsa3N6ICYgMHhGRkYpKQouLi4uCiNkZWZp bmUgU0RIQ0lfREVGQVVMVF9CT1VOREFSWV9BUkcJKDcpCgpJIHdpbGwgbW9kaWZ5IHRoZSBjb2Rl IHVzaW5nIFNESENJX0RFRkFVTFRfQk9VTkRBUllfQVJH77yMIHJlZmVyIHRvIGlwcm9jX3NkaGNp LmMKCmJsa19zaXplID0gU0RIQ0lfTUFLRV9CTEtTWihTREhDSV9ERUZBVUxUX0JPVU5EQVJZX0FS RywgNjQpOwppZiAob3Bjb2RlID09IE1NQ19DTURfU0VORF9UVU5JTkdfQkxPQ0tfSFMyMDAgJiYg aG9zdC0+bW1jLT5idXNfd2lkdGggPT0gOCkKCWJsa19zaXplID0gU0RIQ0lfTUFLRV9CTEtTWihT REhDSV9ERUZBVUxUX0JPVU5EQVJZX0FSRywgMTI4KTsKc2RoY2lfd3JpdGV3KGhvc3QsIGJsa19z aXplLCBTREhDSV9CTE9DS19TSVpFKTsKCgoKCj5IaSBZaWZlbmcsCgoKCj4KCgoKPk9uIDYvMjgv MjEgNjoxOSBQTSwgWWlmZW5nIFpoYW8gd3JvdGU6CgoKCj4+IEFkZCBjbG9jaywgcGh5IGFuZCBv dGhlciBjb25maWd1cmF0aW9uLCBpdCBpcyBjb252ZW5pZW50IHRvIHN1cHBvcnQKCgoKPj4gbmV3 IGNvbnRyb2xsZXIuIEhlcmUgYSBzaG9ydCBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2VzOgoKCgo+PiAt IEFkZCBtbWNfb2ZfcGFyc2UgdG8gcGFyc2UgZHRzIGNvbmZpZy4KCgoKPj4gLSBSZW1vdmUgT0Zf UExBVERBVEEgcmVsYXRlZCBjb2RlLgoKCgo+PiAtIFJlb3JkZXIgaGVhZGVyIGluY2x1c2lvbi4K CgoKPj4gLSBBZGQgcGh5IG9wcy4KCgoKPj4gLSBhZGQgb3BzIHNldF9pb3NfcG9zdCB0byBtb2Rp ZnkgdGhlIHBhcmFtZXRlcnMgb2YgcGh5IHdoZW4gdGhlCgoKCj4+wqDCoCBjbG9jayBjaGFuZ2Vz LgoKCgo+PiAtIEFkZCBleGVjdXRlIHR1bmluZyBhcGkgZm9yIGhzMjAwIHR1bmluZwoKCgo+PiAK CgoKPj4gU2lnbmVkLW9mZi1ieTogWWlmZW5nIFpoYW8gPHlpZmVuZy56aGFvQHJvY2stY2hpcHMu Y29tPgoKCgo+PiAtLS0KCgoKPj4gCgoKCj4+IENoYW5nZXMgaW4gdjI6CgoKCj4+IC0gQWRkIG1t Y19vZl9wYXJzZSB0byBwYXJzZSBkdHMgY29uZmlnLgoKCgo+PiAtIFVzZWQgcmVhZF9wb2xsX3Rp bWVvdXQgYXBpIHRvIGNoZWNrIGRsbCBsb2NrIHN0YXR1cwoKCgo+PiAtIEFkZCBleGVjdXRlIHR1 bmluZyBhcGkgZm9yIGhzMjAwIHR1bmluZwoKCgo+PiAKCgoKPj7CoCBkcml2ZXJzL21tYy9yb2Nr Y2hpcF9zZGhjaS5jIHwgMzEwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCgoK Cj4+wqAgMSBmaWxlIGNoYW5nZWQsIDI3NCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkK CgoKPj4gCgoKCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9yb2NrY2hpcF9zZGhjaS5jIGIv ZHJpdmVycy9tbWMvcm9ja2NoaXBfc2RoY2kuYwoKCgo+PiBpbmRleCBkOTVmOGIyYTE1Li4yOTcz OTExNDQ2IDEwMDY0NAoKCgo+PiAtLS0gYS9kcml2ZXJzL21tYy9yb2NrY2hpcF9zZGhjaS5jCgoK Cj4+ICsrKyBiL2RyaXZlcnMvbW1jL3JvY2tjaGlwX3NkaGNpLmMKCgoKPj4gQEAgLTYsOTAgKzYs MzE5IEBACgoKCj4+wqDCoCAqLwoKCgo+PsKgIAoKCgo+PsKgICNpbmNsdWRlIDxjb21tb24uaD4K CgoKPj4gKyNpbmNsdWRlIDxjbGsuaD4KCgoKPj7CoCAjaW5jbHVkZSA8ZG0uaD4KCgoKPj4gKyNp bmNsdWRlIDxkbS9vZm5vZGUuaD4KCgoKPj7CoCAjaW5jbHVkZSA8ZHQtc3RydWN0cy5oPgoKCgo+ PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CgoKCj4+wqAgI2luY2x1ZGUgPGxpbnV4L2Vyci5o PgoKCgo+PsKgICNpbmNsdWRlIDxsaW51eC9saWJmZHQuaD4KCgoKPj4gKyNpbmNsdWRlIDxsaW51 eC9pb3BvbGwuaD4KCgoKPj7CoCAjaW5jbHVkZSA8bWFsbG9jLmg+CgoKCj4+wqAgI2luY2x1ZGUg PG1hcG1lbS5oPgoKCgo+PiArI2luY2x1ZGUgIm1tY19wcml2YXRlLmgiCgoKCj4+wqAgI2luY2x1 ZGUgPHNkaGNpLmg+CgoKCj4+IC0jaW5jbHVkZSA8Y2xrLmg+CgoKCj4+ICsjaW5jbHVkZSA8c3lz Y29uLmg+CgoKCj4+ICsjaW5jbHVkZSA8YXNtL2FyY2gtcm9ja2NoaXAvY2xvY2suaD4KCgoKPj4g KyNpbmNsdWRlIDxhc20vYXJjaC1yb2NrY2hpcC9oYXJkd2FyZS5oPgoKCgo+PsKgIAoKCgo+PsKg IC8qIDQwMEtIeiBpcyBtYXggZnJlcSBmb3IgY2FyZCBJRCBldGMuIFVzZSB0aGF0IGFzIG1pbiAq LwoKCgo+PsKgICNkZWZpbmUgRU1NQ19NSU5fRlJFUQk0MDAwMDAKCgoKPj4gKyNkZWZpbmUgS0h6 CSgxMDAwKQoKCgo+PiArI2RlZmluZSBNSHoJKDEwMDAgKiBLSHopCgoKCj4+ICsjZGVmaW5lIFNE SENJX1RVTklOR19MT09QX0NPVU5UCQk0MAoKCgo+PiArCgoKCj4+ICsjZGVmaW5lIFBIWUNUUkxf Q0FMRE9ORV9NQVNLCQkweDEKCgoKPj4gKyNkZWZpbmUgUEhZQ1RSTF9DQUxET05FX1NISUZUCQkw eDYKCgoKPj4gKyNkZWZpbmUgUEhZQ1RSTF9DQUxET05FX0RPTkUJCTB4MQoKCgo+PiArI2RlZmlu ZSBQSFlDVFJMX0RMTFJEWV9NQVNLCQkweDEKCgoKPj4gKyNkZWZpbmUgUEhZQ1RSTF9ETExSRFlf U0hJRlQJCTB4NQoKCgo+PiArI2RlZmluZSBQSFlDVFJMX0RMTFJEWV9ET05FCQkweDEKCgoKPj4g KyNkZWZpbmUgUEhZQ1RSTF9GUkVRU0VMXzIwME0JCTB4MAoKCgo+PiArI2RlZmluZSBQSFlDVFJM X0ZSRVFTRUxfNTBNCQkweDEKCgoKPj4gKyNkZWZpbmUgUEhZQ1RSTF9GUkVRU0VMXzEwME0JCTB4 MgoKCgo+PiArI2RlZmluZSBQSFlDVFJMX0ZSRVFTRUxfMTUwTQkJMHgzCgoKCj4+ICsjZGVmaW5l IFBIWUNUUkxfRExMX0xPQ0tfV09fVE1PVVQoeCkJXAoKCgo+PiArCSgoKCh4KSA+PiBQSFlDVFJM X0RMTFJEWV9TSElGVCkgJiBQSFlDVFJMX0RMTFJEWV9NQVNLKSA9PVwKCgoKPj4gKwlQSFlDVFJM X0RMTFJEWV9ET05FKQoKCgo+PsKgIAoKCgo+PsKgIHN0cnVjdCByb2NrY2hpcF9zZGhjX3BsYXQg ewoKCgo+PiAtI2lmIENPTkZJR19JU19FTkFCTEVEKE9GX1BMQVREQVRBKQoKCgo+PiAtCXN0cnVj dCBkdGRfcm9ja2NoaXBfcmszMzk5X3NkaGNpXzVfMSBkdHBsYXQ7CgoKCj4+IC0jZW5kaWYKCgoK Pj7CoCAJc3RydWN0IG1tY19jb25maWcgY2ZnOwoKCgo+PsKgIAlzdHJ1Y3QgbW1jIG1tYzsKCgoK Pj7CoCB9OwoKCgo+PsKgIAoKCgo+PiArc3RydWN0IHJvY2tjaGlwX2VtbWNfcGh5IHsKCgoKPj4g Kwl1MzIgZW1tY3BoeV9jb25bN107CgoKCj4+ICsJdTMyIHJlc2VydmVkOwoKCgo+PiArCXUzMiBl bW1jcGh5X3N0YXR1czsKCgoKPj4gK307CgoKCj4+ICsKCgoKPj7CoCBzdHJ1Y3Qgcm9ja2NoaXBf c2RoYyB7CgoKCj4+wqAgCXN0cnVjdCBzZGhjaV9ob3N0IGhvc3Q7CgoKCj4+ICsJc3RydWN0IHVk ZXZpY2UgKmRldjsKCgoKPj7CoCAJdm9pZCAqYmFzZTsKCgoKPj4gKwlzdHJ1Y3Qgcm9ja2NoaXBf ZW1tY19waHkgKnBoeTsKCgoKPj4gKwlzdHJ1Y3QgY2xrIGVtbWNfY2xrOwoKCgo+PiArfTsKCgoK Pj4gKwoKCgo+PiArc3RydWN0IHNkaGNpX2RhdGEgewoKCgo+PiArCWludCAoKmVtbWNfc2V0X2Ns b2NrKShzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwgdW5zaWduZWQgaW50IGNsb2NrKTsKCgoKPj4g KwlpbnQgKCplbW1jX3BoeV9pbml0KShzdHJ1Y3QgdWRldmljZSAqZGV2KTsKCgoKPj4gKwlpbnQg KCpnZXRfcGh5KShzdHJ1Y3QgdWRldmljZSAqZGV2KTsKCgoKPj4gK307CgoKCj4+ICsKCgoKPj4g K3N0YXRpYyBpbnQgcmszMzk5X2VtbWNfcGh5X2luaXQoc3RydWN0IHVkZXZpY2UgKmRldikKCgoK Pj4gK3sKCgoKPj4gKwlyZXR1cm4gMDsKCgoKPj4gK30KCgoKPj4gKwoKCgo+PiArc3RhdGljIHZv aWQgcmszMzk5X2VtbWNfcGh5X3Bvd2VyX29uKHN0cnVjdCByb2NrY2hpcF9lbW1jX3BoeSAqcGh5 LCB1MzIgY2xvY2spCgoKCj4+ICt7CgoKCj4+ICsJdTMyIGNhbGRvbmUsIGRsbHJkeSwgZnJlcXNl bDsKCgoKPj4gKwoKCgo+PiArCXdyaXRlbChSS19DTFJTRVRCSVRTKDcgPDwgNCwgMCksICZwaHkt PmVtbWNwaHlfY29uWzZdKTsKCgoKPgoKCgo+UktfQ0xSU0VUQklUUyBtYWNybyBpcyAoKChjbHIp IHwgKHNldCkpKSA8PCAxNikgfCAoc2V0KS4KCgoKPldoaWNoIGJpdCBpcyBjbGVhcmVkPyBXaGVu ICg3IDw8IDQpIGlzIHNldCwgaXQgbWVhbnMgdGhhdCBjbGVhcmVkPwoKCgo+CgoKCj4KCgoKPj4g Kwl3cml0ZWwoUktfQ0xSU0VUQklUUygxIDw8IDExLCAxIDw8IDExKSwgJnBoeS0+ZW1tY3BoeV9j b25bMF0pOwoKCgo+PiArCXdyaXRlbChSS19DTFJTRVRCSVRTKDB4ZiA8PCA3LCA2IDw8IDcpLCAm cGh5LT5lbW1jcGh5X2NvblswXSk7CgoKCj4+ICsKCgoKPj4gKwkvKgoKCgo+PiArCSAqIEFjY29y ZGluZyB0byB0aGUgdXNlciBtYW51YWwsIGNhbHBhZCBjYWxpYnJhdGlvbgoKCgo+PiArCSAqIGN5 Y2xlIHRha2VzIG1vcmUgdGhhbiAydXMgd2l0aG91dCB0aGUgbWluaW1hbCByZWNvbW1lbmRlZAoK Cgo+PiArCSAqIHZhbHVlLCBzbyB3ZSBtYXkgbmVlZCBhIGxpdHRsZSBtYXJnaW4gaGVyZQoKCgo+ PiArCSAqLwoKCgo+PiArCXVkZWxheSgzKTsKCgoKPj4gKwl3cml0ZWwoUktfQ0xSU0VUQklUUygx LCAxKSwgJnBoeS0+ZW1tY3BoeV9jb25bNl0pOwoKCgo+PiArCgoKCj4+ICsJLyoKCgoKPj4gKwkg KiBBY2NvcmRpbmcgdG8gdGhlIHVzZXIgbWFudWFsLCBpdCBhc2tzIGRyaXZlciB0bwoKCgo+PiAr CSAqIHdhaXQgNXVzIGZvciBjYWxwYWQgYnVzeSB0cmltbWluZy4gQnV0IGl0IHNlZW1zIHRoYXQK CgoKPj4gKwkgKiA1dXMgb2YgY2FsZG9uZSBpc24ndCBlbm91Z2ggZm9yIGFsbCBjYXNlcy4KCgoK Pj4gKwkgKi8KCgoKPj4gKwl1ZGVsYXkoNTAwKTsKCgoKPj4gKwljYWxkb25lID0gcmVhZGwoJnBo eS0+ZW1tY3BoeV9zdGF0dXMpOwoKCgo+PiArCWNhbGRvbmUgPSAoY2FsZG9uZSA+PiBQSFlDVFJM X0NBTERPTkVfU0hJRlQpICYgUEhZQ1RSTF9DQUxET05FX01BU0s7CgoKCj4+ICsJaWYgKGNhbGRv bmUgIT0gUEhZQ1RSTF9DQUxET05FX0RPTkUpIHsKCgoKPj4gKwkJcHJpbnRmKCIlczogY2FsZG9u ZSB0aW1lb3V0LlxuIiwgX19mdW5jX18pOwoKCgo+PiArCQlyZXR1cm47CgoKCj4+ICsJfQoKCgo+ PiArCgoKCj4+ICsJLyogU2V0IHRoZSBmcmVxdWVuY3kgb2YgdGhlIERMTCBvcGVyYXRpb24gKi8K CgoKPj4gKwlpZiAoY2xvY2sgPCA3NSAqIE1IeikKCgoKPj4gKwkJZnJlcXNlbCA9IFBIWUNUUkxf RlJFUVNFTF81ME07CgoKCj4+ICsJZWxzZSBpZiAoY2xvY2sgPCAxMjUgKiBNSHopCgoKCj4+ICsJ CWZyZXFzZWwgPSBQSFlDVFJMX0ZSRVFTRUxfMTAwTTsKCgoKPj4gKwllbHNlIGlmIChjbG9jayA8 IDE3NSAqIE1IeikKCgoKPj4gKwkJZnJlcXNlbCA9IFBIWUNUUkxfRlJFUVNFTF8xNTBNOwoKCgo+ PiArCWVsc2UKCgoKPj4gKwkJZnJlcXNlbCA9IFBIWUNUUkxfRlJFUVNFTF8yMDBNOwoKCgo+PiAr CgoKCj4+ICsJLyogU2V0IHRoZSBmcmVxdWVuY3kgb2YgdGhlIERMTCBvcGVyYXRpb24gKi8KCgoK Pj4gKwl3cml0ZWwoUktfQ0xSU0VUQklUUygzIDw8IDEyLCBmcmVxc2VsIDw8IDEyKSwgJnBoeS0+ ZW1tY3BoeV9jb25bMF0pOwoKCgo+PiArCXdyaXRlbChSS19DTFJTRVRCSVRTKDEgPDwgMSwgMSA8 PCAxKSwgJnBoeS0+ZW1tY3BoeV9jb25bNl0pOwoKCgo+PiArCgoKCj4+ICsJcmVhZF9wb2xsX3Rp bWVvdXQocmVhZGwsICZwaHktPmVtbWNwaHlfc3RhdHVzLCBkbGxyZHksCgoKCj4+ICsJCQnCoCBQ SFlDVFJMX0RMTF9MT0NLX1dPX1RNT1VUKGRsbHJkeSksIDEsIDUwMDApOwoKCgo+PiArfQoKCgo+ PiArCgoKCj4+ICtzdGF0aWMgdm9pZCByazMzOTlfZW1tY19waHlfcG93ZXJfb2ZmKHN0cnVjdCBy b2NrY2hpcF9lbW1jX3BoeSAqcGh5KQoKCgo+PiArewoKCgo+PiArCXdyaXRlbChSS19DTFJTRVRC SVRTKDEsIDApLCAmcGh5LT5lbW1jcGh5X2Nvbls2XSk7CgoKCj4+ICsJd3JpdGVsKFJLX0NMUlNF VEJJVFMoMSA8PCAxLCAwKSwgJnBoeS0+ZW1tY3BoeV9jb25bNl0pOwoKCgo+PiArfQoKCgo+PiAr CgoKCj4+ICtzdGF0aWMgaW50IHJrMzM5OV9lbW1jX2dldF9waHkoc3RydWN0IHVkZXZpY2UgKmRl dikKCgoKPj4gK3sKCgoKPj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfc2RoYyAqcHJpdiA9IGRldl9nZXRf cHJpdihkZXYpOwoKCgo+PiArCgoKCj4+ICsJb2Zub2RlIHBoeV9ub2RlOwoKCgo+PiArCXZvaWQg KmdyZl9iYXNlOwoKCgo+PiArCXUzMiBncmZfcGh5X29mZnNldCwgcGhhbmRsZTsKCgoKPj4gKwoK Cgo+PiArCXBoYW5kbGUgPSBkZXZfcmVhZF91MzJfZGVmYXVsdChkZXYsICJwaHlzIiwgMCk7CgoK Cj4+ICsJcGh5X25vZGUgPSBvZm5vZGVfZ2V0X2J5X3BoYW5kbGUocGhhbmRsZSk7CgoKCj4+ICsJ aWYgKCFvZm5vZGVfdmFsaWQocGh5X25vZGUpKSB7CgoKCj4+ICsJCWRlYnVnKCJOb3QgZm91bmQg ZW1tYyBwaHkgZGV2aWNlXG4iKTsKCgoKPj4gKwkJcmV0dXJuIC1FTk9ERVY7CgoKCj4+ICsJfQoK Cgo+PiArCgoKCj4+ICsJZ3JmX2Jhc2UgPSBzeXNjb25fZ2V0X2ZpcnN0X3JhbmdlKFJPQ0tDSElQ X1NZU0NPTl9HUkYpOwoKCgo+PiArCWlmIChncmZfYmFzZSA8IDApCgoKCj4+ICsJCXByaW50Zigi JXMgR2V0IHN5c2NvbiBncmYgZmFpbGVkIiwgX19mdW5jX18pOwoKCgo+PiArCWdyZl9waHlfb2Zm c2V0ID0gb2Zub2RlX3JlYWRfdTMyX2RlZmF1bHQocGh5X25vZGUsICJyZWciLCAwKTsKCgoKPj4g KwoKCgo+PiArCXByaXYtPnBoeSA9IChzdHJ1Y3Qgcm9ja2NoaXBfZW1tY19waHkgKikoZ3JmX2Jh c2UgKyBncmZfcGh5X29mZnNldCk7CgoKCj4KCgoKPklmIGdyZl9iYXNlIGlzIGZhaWxlZCB0byBn ZXQsIGlzIChncmZfYmFzZSArIGdycF9waHlfb2Zmc2V0KSBjb3JyZWN0PwoKCgo+CgoKCj4+ICsK CgoKPj4gKwlyZXR1cm4gMDsKCgoKPj4gK30KCgoKPj4gKwoKCgo+PiArc3RhdGljIGludCByazMz OTlfc2RoY2lfZW1tY19zZXRfY2xvY2soc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHVuc2lnbmVk IGludCBjbG9jaykKCgoKPj4gK3sKCgoKPj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfc2RoYyAqcHJpdiA9 IGNvbnRhaW5lcl9vZihob3N0LCBzdHJ1Y3Qgcm9ja2NoaXBfc2RoYywgaG9zdCk7CgoKCj4+ICsJ aW50IGN5Y2xlX3BoeSA9IGhvc3QtPmNsb2NrICE9IGNsb2NrICYmIGNsb2NrID4gRU1NQ19NSU5f RlJFUTsKCgoKPj4gKwlpbnQgbWF4X2NsayA9IGhvc3QtPm1heF9jbGs7CgoKCj4+ICsJdW5zaWdu ZWQgbG9uZyBtbWNfY2xvY2s7CgoKCj4+ICsKCgoKPj4gKwlpZiAoY3ljbGVfcGh5KQoKCgo+PiAr CQlyazMzOTlfZW1tY19waHlfcG93ZXJfb2ZmKHByaXYtPnBoeSk7CgoKCj4+ICsKCgoKPj4gKwlp ZiAoY2xvY2spIHsKCgoKPj4gKwkJbW1jX2Nsb2NrID0gY2xrX3NldF9yYXRlKCZwcml2LT5lbW1j X2NsaywgY2xvY2spOwoKCgo+PiArCQlpZiAoSVNfRVJSX1ZBTFVFKG1tY19jbG9jaykpCgoKCj4+ ICsJCQlob3N0LT5tYXhfY2xrID0gbWF4X2NsazsKCgoKPj4gKwkJZWxzZQoKCgo+PiArCQkJaG9z dC0+bWF4X2NsayA9IG1tY19jbG9jazsKCgoKPj4gKwl9CgoKCj4+ICsJc2RoY2lfc2V0X2Nsb2Nr KGhvc3QtPm1tYywgY2xvY2spOwoKCgo+PiArCWlmICghY2xvY2spCgoKCj4+ICsJCXJldHVybiAw OwoKCgo+PiArCWhvc3QtPm1heF9jbGsgPSBtYXhfY2xrOwoKCgo+PiArCgoKCj4+ICsJaWYgKGN5 Y2xlX3BoeSkKCgoKPj4gKwkJcmszMzk5X2VtbWNfcGh5X3Bvd2VyX29uKHByaXYtPnBoeSwgY2xv Y2spOwoKCgo+PiArCgoKCj4+ICsJcmV0dXJuIDA7CgoKCj4+ICt9CgoKCj4+ICsKCgoKPj4gK3N0 YXRpYyBpbnQgcm9ja2NoaXBfc2RoY2lfc2V0X2lvc19wb3N0KHN0cnVjdCBzZGhjaV9ob3N0ICpo b3N0KQoKCgo+PiArewoKCgo+PiArCXN0cnVjdCByb2NrY2hpcF9zZGhjICpwcml2ID0gY29udGFp bmVyX29mKGhvc3QsIHN0cnVjdCByb2NrY2hpcF9zZGhjLCBob3N0KTsKCgoKPj4gKwlzdHJ1Y3Qg c2RoY2lfZGF0YSAqZGF0YSA9IChzdHJ1Y3Qgc2RoY2lfZGF0YSAqKWRldl9nZXRfZHJpdmVyX2Rh dGEocHJpdi0+ZGV2KTsKCgoKPj4gKwlzdHJ1Y3QgbW1jICptbWMgPSBob3N0LT5tbWM7CgoKCj4+ ICsJdWludCBjbG9jayA9IG1tYy0+dHJhbl9zcGVlZDsKCgoKPj4gKwl1MzIgcmVnOwoKCgo+PiAr CgoKCj4+ICsJaWYgKCFjbG9jaykKCgoKPj4gKwkJY2xvY2sgPSBtbWMtPmNsb2NrOwoKCgo+PiAr CWRhdGEtPmVtbWNfc2V0X2Nsb2NrKGhvc3QsIGNsb2NrKTsKCgoKPgoKCgo+SSB0aGluayB0aGF0 IGl0IG5lZWRzIHRvIGNoZWNrIHdoZXRoZXIgY2FsbGJhY2sgZnVuY3Rpb24gaXMgbnVsbCBvciBu b3QuCgoKCj5JdCdzIHBvc3NpYmxlIHRvIGV4aXN0IHRoZSBjYXNlIHRoYXQgbm90IHRvIGFzc2ln biB0byBjYWxsYmFjayBmdW5jdGlvbiBpbiBmdXR1cmUuCgoKCj4KCgoKPj4gKwoKCgo+PiArCWlm IChtbWMtPnNlbGVjdGVkX21vZGUgPT0gTU1DX0hTXzQwMCB8fCBtbWMtPnNlbGVjdGVkX21vZGUg PT0gTU1DX0hTXzQwMF9FUykgewoKCgo+PiArCQlyZWcgPSBzZGhjaV9yZWFkdyhob3N0LCBTREhD SV9IT1NUX0NPTlRST0wyKTsKCgoKPj4gKwkJcmVnICY9IH5TREhDSV9DVFJMX1VIU19NQVNLOwoK Cgo+PiArCQlyZWcgfD0gU0RIQ0lfQ1RSTF9IUzQwMDsKCgoKPj4gKwkJc2RoY2lfd3JpdGV3KGhv c3QsIHJlZywgU0RIQ0lfSE9TVF9DT05UUk9MMik7CgoKCj4+ICsJfSBlbHNlIHsKCgoKPj4gKwkJ c2RoY2lfc2V0X3Voc190aW1pbmcoaG9zdCk7CgoKCj4+ICsJfQoKCgo+PiArCgoKCj4+ICsJcmV0 dXJuIDA7CgoKCj4+ICt9CgoKCj4+ICsKCgoKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfc2RoY2lf ZXhlY3V0ZV90dW5pbmcoc3RydWN0IG1tYyAqbW1jLCB1OCBvcGNvZGUpCgoKCj4+ICt7CgoKCj4+ ICsJc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QgPSBkZXZfZ2V0X3ByaXYobW1jLT5kZXYpOwoKCgo+ PiArCWNoYXIgdHVuaW5nX2xvb3BfY291bnRlciA9IFNESENJX1RVTklOR19MT09QX0NPVU5UOwoK Cgo+PiArCXN0cnVjdCBtbWNfY21kIGNtZDsKCgoKPj4gKwl1MzIgY3RybDsKCgoKPj4gKwlpbnQg cmV0ID0gMDsKCgoKPj4gKwoKCgo+PiArCWN0cmwgPSBzZGhjaV9yZWFkdyhob3N0LCBTREhDSV9I T1NUX0NPTlRST0wyKTsKCgoKPj4gKwljdHJsIHw9IFNESENJX0NUUkxfRVhFQ19UVU5JTkc7CgoK Cj4+ICsJc2RoY2lfd3JpdGV3KGhvc3QsIGN0cmwsIFNESENJX0hPU1RfQ09OVFJPTDIpOwoKCgo+ PiArCXNkaGNpX3dyaXRlbChob3N0LCBTREhDSV9JTlRfREFUQV9BVkFJTCwgU0RIQ0lfSU5UX0VO QUJMRSk7CgoKCj4+ICsJc2RoY2lfd3JpdGVsKGhvc3QsIFNESENJX0lOVF9EQVRBX0FWQUlMLCBT REhDSV9TSUdOQUxfRU5BQkxFKTsKCgoKPj4gKwoKCgo+PiArCWRvIHsKCgoKPj4gKwkJY21kLmNt ZGlkeCA9IG9wY29kZTsKCgoKPj4gKwkJY21kLnJlc3BfdHlwZSA9IE1NQ19SU1BfUjE7CgoKCj4+ ICsJCWNtZC5jbWRhcmcgPSAwOwoKCgo+PiArCgoKCj4+ICsJCWlmICh0dW5pbmdfbG9vcF9jb3Vu dGVyLS0gPT0gMCkKCgoKPj4gKwkJCWJyZWFrOwoKCgo+PiArCgoKCj4+ICsJCWlmIChvcGNvZGUg PT0gTU1DX0NNRF9TRU5EX1RVTklOR19CTE9DS19IUzIwMCAmJiBob3N0LT5tbWMtPmJ1c193aWR0 aCA9PSA4KQoKCgo+PiArCQkJc2RoY2lfd3JpdGV3KGhvc3QsIFNESENJX01BS0VfQkxLU1ooNywg MTI4KSwgU0RIQ0lfQkxPQ0tfU0laRSk7CgoKCj4+ICsJCWVsc2UKCgoKPj4gKwkJCXNkaGNpX3dy aXRldyhob3N0LCBTREhDSV9NQUtFX0JMS1NaKDcsIDY0KSwgU0RIQ0lfQkxPQ0tfU0laRSk7CgoK Cj4KCgoKPldoeSBpdCBuZWVkcyB0byBwYXNzIHRvIDc/IEl0IHNlZW1zIHRoYXQgYWx3YXlzIChk bWEgJiAweDcpIGluIFNESENJX01BS0VfQkxLU1ouCgoKCj4jZGVmaW5lIFNESENJX01BS0VfQkxL U1ooYmxrc3opICgxIDw8IDEyKSB8IChibGtzeiAmIDB4RkZGKT8KCgoKPgoKCgo+CgoKCj4+ICsK CgoKPj4gKwkJc2RoY2lfd3JpdGV3KGhvc3QsIFNESENJX1RSTlNfUkVBRCwgU0RIQ0lfVFJBTlNG RVJfTU9ERSk7CgoKCj4+ICsKCgoKPj4gKwkJbW1jX3NlbmRfY21kKG1tYywgJmNtZCwgTlVMTCk7 CgoKCj4+ICsKCgoKPj4gKwkJY3RybCA9IHNkaGNpX3JlYWR3KGhvc3QsIFNESENJX0hPU1RfQ09O VFJPTDIpOwoKCgo+PiArCX0gd2hpbGUgKGN0cmwgJiBTREhDSV9DVFJMX0VYRUNfVFVOSU5HKTsK CgoKPj4gKwoKCgo+PiArCWlmICghKGN0cmwgJiBTREhDSV9DVFJMX1RVTkVEX0NMSykpIHsKCgoK Pj4gKwkJcHJpbnRmKCIlczpUdW5pbmcgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CgoKCj4+ICsJCXJl dCA9IC0xOwoKCgo+PiArCX0KCgoKPj4gKwoKCgo+PiArCWlmICh0dW5pbmdfbG9vcF9jb3VudGVy IDwgMCkgewoKCgo+PiArCQljdHJsICY9IH5TREhDSV9DVFJMX1RVTkVEX0NMSzsKCgoKPj4gKwkJ c2RoY2lfd3JpdGVsKGhvc3QsIGN0cmwsIFNESENJX0hPU1RfQ09OVFJPTDIpOwoKCgo+PiArCX0K CgoKPj4gKwoKCgo+PiArCS8qIEVuYWJsZSBvbmx5IGludGVycnVwdHMgc2VydmVkIGJ5IHRoZSBT RCBjb250cm9sbGVyICovCgoKCj4+ICsJc2RoY2lfd3JpdGVsKGhvc3QsIFNESENJX0lOVF9EQVRB X01BU0sgfCBTREhDSV9JTlRfQ01EX01BU0ssIFNESENJX0lOVF9FTkFCTEUpOwoKCgo+PiArCS8q IE1hc2sgYWxsIHNkaGNpIGludGVycnVwdCBzb3VyY2VzICovCgoKCj4+ICsJc2RoY2lfd3JpdGVs KGhvc3QsIDB4MCwgU0RIQ0lfU0lHTkFMX0VOQUJMRSk7CgoKCj4+ICsKCgoKPj4gKwlyZXR1cm4g MDsKCgoKPgoKCgo+RG9lc24ndCBuZWVkIHRvIHJldHVybiAicmV0IiB3aGVuIGl0J3MgZmFpbGVk PwoKCgo+CgoKCj4+ICt9CgoKCj4+ICsKCgoKPj4gK3N0YXRpYyBzdHJ1Y3Qgc2RoY2lfb3BzIHJv Y2tjaGlwX3NkaGNpX29wcyA9IHsKCgoKPj4gKwkuc2V0X2lvc19wb3N0CT0gcm9ja2NoaXBfc2Ro Y2lfc2V0X2lvc19wb3N0LAoKCgo+PiArCS5wbGF0Zm9ybV9leGVjdXRlX3R1bmluZyA9ICZyb2Nr Y2hpcF9zZGhjaV9leGVjdXRlX3R1bmluZywKCgoKPj7CoCB9OwoKCgo+PsKgIAoKCgo+PiAtc3Rh dGljIGludCBhcmFzYW5fc2RoY2lfcHJvYmUoc3RydWN0IHVkZXZpY2UgKmRldikKCgoKPj4gK3N0 YXRpYyBpbnQgcm9ja2NoaXBfc2RoY2lfcHJvYmUoc3RydWN0IHVkZXZpY2UgKmRldikKCgoKPj7C oCB7CgoKCj4+ICsJc3RydWN0IHNkaGNpX2RhdGEgKmRhdGEgPSAoc3RydWN0IHNkaGNpX2RhdGEg KilkZXZfZ2V0X2RyaXZlcl9kYXRhKGRldik7CgoKCj4+wqAgCXN0cnVjdCBtbWNfdWNsYXNzX3By aXYgKnVwcml2ID0gZGV2X2dldF91Y2xhc3NfcHJpdihkZXYpOwoKCgo+PsKgIAlzdHJ1Y3Qgcm9j a2NoaXBfc2RoY19wbGF0ICpwbGF0ID0gZGV2X2dldF9wbGF0KGRldik7CgoKCj4+wqAgCXN0cnVj dCByb2NrY2hpcF9zZGhjICpwcnYgPSBkZXZfZ2V0X3ByaXYoZGV2KTsKCgoKPj4gKwlzdHJ1Y3Qg bW1jX2NvbmZpZyAqY2ZnID0gJnBsYXQtPmNmZzsKCgoKPj7CoCAJc3RydWN0IHNkaGNpX2hvc3Qg Kmhvc3QgPSAmcHJ2LT5ob3N0OwoKCgo+PiAtCWludCBtYXhfZnJlcXVlbmN5LCByZXQ7CgoKCj4+ wqAgCXN0cnVjdCBjbGsgY2xrOwoKCgo+PiArCWludCByZXQ7CgoKCj4+wqAgCgoKCj4+IC0jaWYg Q09ORklHX0lTX0VOQUJMRUQoT0ZfUExBVERBVEEpCgoKCj4+IC0Jc3RydWN0IGR0ZF9yb2NrY2hp cF9yazMzOTlfc2RoY2lfNV8xICpkdHBsYXQgPSAmcGxhdC0+ZHRwbGF0OwoKCgo+PiAtCgoKCj4+ IC0JaG9zdC0+bmFtZSA9IGRldi0+bmFtZTsKCgoKPj4gLQlob3N0LT5pb2FkZHIgPSBtYXBfc3lz bWVtKGR0cGxhdC0+cmVnWzBdLCBkdHBsYXQtPnJlZ1sxXSk7CgoKCj4+IC0JbWF4X2ZyZXF1ZW5j eSA9IGR0cGxhdC0+bWF4X2ZyZXF1ZW5jeTsKCgoKPj4gLQlyZXQgPSBjbGtfZ2V0X2J5X2RyaXZl cl9pbmZvKGRldiwgZHRwbGF0LT5jbG9ja3MsICZjbGspOwoKCgo+PiAtI2Vsc2UKCgoKPj4gLQlt YXhfZnJlcXVlbmN5ID0gZGV2X3JlYWRfdTMyX2RlZmF1bHQoZGV2LCAibWF4LWZyZXF1ZW5jeSIs IDApOwoKCgo+PiArCWhvc3QtPm1heF9jbGsgPSBjZmctPmZfbWF4OwoKCgo+PsKgIAlyZXQgPSBj bGtfZ2V0X2J5X2luZGV4KGRldiwgMCwgJmNsayk7CgoKCj4+IC0jZW5kaWYKCgoKPj7CoCAJaWYg KCFyZXQpIHsKCgoKPj4gLQkJcmV0ID0gY2xrX3NldF9yYXRlKCZjbGssIG1heF9mcmVxdWVuY3kp OwoKCgo+PiArCQlyZXQgPSBjbGtfc2V0X3JhdGUoJmNsaywgaG9zdC0+bWF4X2Nsayk7CgoKCj4+ wqAgCQlpZiAoSVNfRVJSX1ZBTFVFKHJldCkpCgoKCj4+wqAgCQkJcHJpbnRmKCIlcyBjbGsgc2V0 IHJhdGUgZmFpbCFcbiIsIF9fZnVuY19fKTsKCgoKPj7CoCAJfSBlbHNlIHsKCgoKPj7CoCAJCXBy aW50ZigiJXMgZmFpbCB0byBnZXQgY2xrXG4iLCBfX2Z1bmNfXyk7CgoKCj4+wqAgCX0KCgoKPj7C oCAKCgoKPj4gKwlwcnYtPmVtbWNfY2xrID0gY2xrOwoKCgo+PiArCXBydi0+ZGV2ID0gZGV2OwoK Cgo+PiArCXJldCA9IGRhdGEtPmdldF9waHkoZGV2KTsKCgoKPgoKCgo+RGl0dG8uIENoZWNrIGRh dGEtPmdldF9waHkuCgoKCj4KCgoKPj4gKwlpZiAocmV0KQoKCgo+PiArCQlyZXR1cm4gcmV0OwoK Cgo+PiArCgoKCj4+ICsJcmV0ID0gZGF0YS0+ZW1tY19waHlfaW5pdChkZXYpOwoKCgo+CgoKCj5E aXR0by4KCgoKPgoKCgo+QmVzdCBSZWdhcmRzLAoKCgo+SmFlaG9vbiBDaHVuZwoKCgo+CgoKCj4+ ICsJaWYgKHJldCkKCgoKPj4gKwkJcmV0dXJuIHJldDsKCgoKPj4gKwoKCgo+PiArCWhvc3QtPm9w cyA9ICZyb2NrY2hpcF9zZGhjaV9vcHM7CgoKCj4+ICsKCgoKPj7CoCAJaG9zdC0+cXVpcmtzID0g U0RIQ0lfUVVJUktfV0FJVF9TRU5EX0NNRDsKCgoKPj4gLQlob3N0LT5tYXhfY2xrID0gbWF4X2Zy ZXF1ZW5jeTsKCgoKPj4gLQkvKgoKCgo+PiAtCSAqIFRoZSBzZGhjaS1kcml2ZXIgb25seSBzdXBw b3J0cyA0Yml0IGFuZCA4Yml0LCBhcyBzZGhjaV9zZXR1cF9jZmcKCgoKPj4gLQkgKiBkb2Vzbid0 IGFsbG93IHVzIHRvIGNsZWFyIE1NQ19NT0RFXzRCSVQuwqAgQ29uc2VxdWVudGx5LCB3ZSBkb24n dAoKCgo+PiAtCSAqIGNoZWNrIGZvciBvdGhlciBidXMtd2lkdGggdmFsdWVzLgoKCgo+PiAtCSAq LwoKCgo+PiAtCWlmIChob3N0LT5idXNfd2lkdGggPT0gOCkKCgoKPj4gLQkJaG9zdC0+aG9zdF9j YXBzIHw9IE1NQ19NT0RFXzhCSVQ7CgoKCj4+wqAgCgoKCj4+wqAgCWhvc3QtPm1tYyA9ICZwbGF0 LT5tbWM7CgoKCj4+wqAgCWhvc3QtPm1tYy0+cHJpdiA9ICZwcnYtPmhvc3Q7CgoKCj4+wqAgCWhv c3QtPm1tYy0+ZGV2ID0gZGV2OwoKCgo+PsKgIAl1cHJpdi0+bW1jID0gaG9zdC0+bW1jOwoKCgo+ PsKgIAoKCgo+PiAtCXJldCA9IHNkaGNpX3NldHVwX2NmZygmcGxhdC0+Y2ZnLCBob3N0LCAwLCBF TU1DX01JTl9GUkVRKTsKCgoKPj4gKwlyZXQgPSBzZGhjaV9zZXR1cF9jZmcoY2ZnLCBob3N0LCBj ZmctPmZfbWF4LCBFTU1DX01JTl9GUkVRKTsKCgoKPj7CoCAJaWYgKHJldCkKCgoKPj7CoCAJCXJl dHVybiByZXQ7CgoKCj4+wqAgCgoKCj4+wqAgCXJldHVybiBzZGhjaV9wcm9iZShkZXYpOwoKCgo+ PsKgIH0KCgoKPj7CoCAKCgoKPj4gLXN0YXRpYyBpbnQgYXJhc2FuX3NkaGNpX29mX3RvX3BsYXQo c3RydWN0IHVkZXZpY2UgKmRldikKCgoKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfc2RoY2lfb2Zf dG9fcGxhdChzdHJ1Y3QgdWRldmljZSAqZGV2KQoKCgo+PsKgIHsKCgoKPj4gLSNpZiAhQ09ORklH X0lTX0VOQUJMRUQoT0ZfUExBVERBVEEpCgoKCj4+ICsJc3RydWN0IHJvY2tjaGlwX3NkaGNfcGxh dCAqcGxhdCA9IGRldl9nZXRfcGxhdChkZXYpOwoKCgo+PsKgIAlzdHJ1Y3Qgc2RoY2lfaG9zdCAq aG9zdCA9IGRldl9nZXRfcHJpdihkZXYpOwoKCgo+PiArCXN0cnVjdCBtbWNfY29uZmlnICpjZmcg PSAmcGxhdC0+Y2ZnOwoKCgo+PiArCWludCByZXQ7CgoKCj4+wqAgCgoKCj4+wqAgCWhvc3QtPm5h bWUgPSBkZXYtPm5hbWU7CgoKCj4+wqAgCWhvc3QtPmlvYWRkciA9IGRldl9yZWFkX2FkZHJfcHRy KGRldik7CgoKCj4+IC0JaG9zdC0+YnVzX3dpZHRoID0gZGV2X3JlYWRfdTMyX2RlZmF1bHQoZGV2 LCAiYnVzLXdpZHRoIiwgNCk7CgoKCj4+IC0jZW5kaWYKCgoKPj4gKwoKCgo+PiArCXJldCA9IG1t Y19vZl9wYXJzZShkZXYsIGNmZyk7CgoKCj4+ICsJaWYgKHJldCkKCgoKPj4gKwkJcmV0dXJuIHJl dDsKCgoKPj7CoCAKCgoKPj7CoCAJcmV0dXJuIDA7CgoKCj4+wqAgfQoKCgo+PiBAQCAtMTAxLDE5 ICszMzAsMjggQEAgc3RhdGljIGludCByb2NrY2hpcF9zZGhjaV9iaW5kKHN0cnVjdCB1ZGV2aWNl ICpkZXYpCgoKCj4+wqAgCXJldHVybiBzZGhjaV9iaW5kKGRldiwgJnBsYXQtPm1tYywgJnBsYXQt PmNmZyk7CgoKCj4+wqAgfQoKCgo+PsKgIAoKCgo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2 aWNlX2lkIGFyYXNhbl9zZGhjaV9pZHNbXSA9IHsKCgoKPj4gLQl7IC5jb21wYXRpYmxlID0gImFy YXNhbixzZGhjaS01LjEiIH0sCgoKCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNkaGNpX2RhdGEg cmszMzk5X2RhdGEgPSB7CgoKCj4+ICsJLmVtbWNfc2V0X2Nsb2NrID0gcmszMzk5X3NkaGNpX2Vt bWNfc2V0X2Nsb2NrLAoKCgo+PiArCS5nZXRfcGh5ID0gcmszMzk5X2VtbWNfZ2V0X3BoeSwKCgoK Pj4gKwkuZW1tY19waHlfaW5pdCA9IHJrMzM5OV9lbW1jX3BoeV9pbml0LAoKCgo+PiArfTsKCgoK Pj4gKwoKCgo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2aWNlX2lkIHNkaGNpX2lkc1tdID0g ewoKCgo+PiArCXsKCgoKPj4gKwkJLmNvbXBhdGlibGUgPSAiYXJhc2FuLHNkaGNpLTUuMSIsCgoK Cj4+ICsJCS5kYXRhID0gKHVsb25nKSZyazMzOTlfZGF0YSwKCgoKPj4gKwl9LAoKCgo+PsKgIAl7 IH0KCgoKPj7CoCB9OwoKCgo+PsKgIAoKCgo+PsKgIFVfQk9PVF9EUklWRVIoYXJhc2FuX3NkaGNp X2RydikgPSB7CgoKCj4+IC0JLm5hbWUJCT0gInJvY2tjaGlwX3JrMzM5OV9zZGhjaV81XzEiLAoK Cgo+PiArCS5uYW1lCQk9ICJyb2NrY2hpcF9zZGhjaV81XzEiLAoKCgo+PsKgIAkuaWQJCT0gVUNM QVNTX01NQywKCgoKPj4gLQkub2ZfbWF0Y2gJPSBhcmFzYW5fc2RoY2lfaWRzLAoKCgo+PiAtCS5v Zl90b19wbGF0ID0gYXJhc2FuX3NkaGNpX29mX3RvX3BsYXQsCgoKCj4+ICsJLm9mX21hdGNoCT0g c2RoY2lfaWRzLAoKCgo+PiArCS5vZl90b19wbGF0CT0gcm9ja2NoaXBfc2RoY2lfb2ZfdG9fcGxh dCwKCgoKPj7CoCAJLm9wcwkJPSAmc2RoY2lfb3BzLAoKCgo+PsKgIAkuYmluZAkJPSByb2NrY2hp cF9zZGhjaV9iaW5kLAoKCgo+PiAtCS5wcm9iZQkJPSBhcmFzYW5fc2RoY2lfcHJvYmUsCgoKCj4+ ICsJLnByb2JlCQk9IHJvY2tjaGlwX3NkaGNpX3Byb2JlLAoKCgo+PsKgIAkucHJpdl9hdXRvCT0g c2l6ZW9mKHN0cnVjdCByb2NrY2hpcF9zZGhjKSwKCgoKPj7CoCAJLnBsYXRfYXV0bwk9IHNpemVv ZihzdHJ1Y3Qgcm9ja2NoaXBfc2RoY19wbGF0KSwKCgoKPj7CoCB9OwoKCgo+PiAKCgoKPgoKCgo+ CgoKCj4KCgoKPgoKCg==