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=-10.6 required=3.0 tests=BAYES_00, CHARSET_FARAWAY_HEADER,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 7663AC2B9F4 for ; Mon, 28 Jun 2021 11:36:40 +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 CBA0961C6C for ; Mon, 28 Jun 2021 11:36:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CBA0961C6C 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 2706C82DCE; Mon, 28 Jun 2021 13:36:09 +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 581F082D8F; Mon, 28 Jun 2021 11:32:17 +0200 (CEST) Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.70.195]) (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 2136882D22 for ; Mon, 28 Jun 2021 11:32:11 +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.13]) by regular1.263xmail.com (Postfix) with ESMTP id 9DE741CB4; Mon, 28 Jun 2021 17:32:05 +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 P30156T139874101348096S1624872725333138_; Mon, 28 Jun 2021 17:32:06 +0800 (CST) X-IP-DOMAINF: 1 X-UNIQUE-TAG: <1cb5a55dc0b6b0feadc59e3a1a3301bf> 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: Mon, 28 Jun 2021 17:32:08 +0800 Organization: =?GB2312?B?yPDQvs6itefX0w==?= From: =?GB2312?B?1dTSx7fl?= To: "Jaehoon Chung" , sjg , =?GB2312?B?0e6/rQ==?= Cc: "Peng Fan" , "Philipp Tomsich" , u-boot Subject: Re: Re: [PATCH v1 1/2] mmc: rockchip_sdhci: add phy and clock config for rk3399 References: <20210607073815.4459-1-yifeng.zhao@rock-chips.com>, , <20210607073815.4459-2-yifeng.zhao@rock-chips.com>, <86d6a68b-d5c8-83f3-9d23-c35729f289d1@samsung.com> X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7.2.21.453[cn] Mime-Version: 1.0 Message-ID: <20210628173108077724143@rock-chips.com> X-Mailman-Approved-At: Mon, 28 Jun 2021 13:35:54 +0200 Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.34 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 SGkgSmFlaG9vbiwNCg0KPiBEb2VzIGl0IGltcG9zc2libGUgdG8gbW92ZSB0byBwaHkgc3Vic3lz dGVtIGFib3V0IGNvZGVzIHJlbGV2YW50IHRvIHBoeT8NCkkgYWxyZWFkeSBjaGVjayB0aGUgbW1j IGNvZGUsIGJ1dCBJIGRpZG4ndCBmaW5kIHRoYXQgdGhlIHNkaGNpIGZyYW1ld29yaw0Kc3VwcG9y dHMgdGhlIFBIWSBpbnRlcmZhY2UuIEl0IHdvdWxkIGJlIHRyb3VibGVzb21lIHRvIHN1cHBvcnQg aXQuIA0KQXQgcHJlc2VudCwgb25seSB0aGUgRU1NQyBvZiByazMzOTkgaGFzIFBIWSwgd2hpbGUg cmszNTY4IG9ubHkgaGFzIHNvbWUNCmNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGZvciBJTy4NCg0K VGhlIG90aGVyIHN1Z2dlc3Rpb25zIGZyb20geW91IGhhdmUgYmVlbiBtb2RpZmllZCBvbiBWMiBh bmQgaGF2ZSBiZWVuIG1haWxlZC4NClBsZWFzZSBjaGVjayBpdCBhZ2Fpbi4gDQoNClRoYW5rIHlv dS4NCg0KWWlmZW5nLnpoYW8NCiANCg0KDQo+DQpIaSBZaWZlbmcsDQogDQpPbiA2LzcvMjEgNDoz OCBQTSwgWWlmZW5nIFpoYW8gd3JvdGU6DQo+IEFkZCBjbG9jaywgcGh5IGFuZCBvdGhlciBjb25m aWd1cmF0aW9uLCBpdCBpcyBjb252ZW5pZW50IHRvIHN1cHBvcnQNCj4gbmV3IGNvbnRyb2xsZXIu IEhlcmUgYSBzaG9ydCBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2VzOg0KPiAtIHN1cHBvcnQgSFMyMDAg YW5kIEhTNDAwIGNvbmZpZyBieSBkdHMNCj4gLSBSZW1vdmUgT0ZfUExBVERBVEEgcmVsYXRlZCBj b2RlDQo+IC0gUmVvcmRlciBoZWFkZXIgaW5jbHVzaW9uDQo+IC0gQWRkIGRhdGEgd2lkdGggY29u ZmlnIGZvciAxLCA0LCA4IGJpdHMNCj4gLSBBZGQgcGh5IG9wcw0KPiAtIGFkZCBvcHMgc2V0X2lv c19wb3N0IHRvIG1vZGlmeSB0aGUgcGFyYW1ldGVycyBvZiBwaHkgd2hlbiB0aGUNCj4gICBjbG9j ayBjaGFuZ2VzDQogDQpEb2VzIGl0IGltcG9zc2libGUgdG8gbW92ZSB0byBwaHkgc3Vic3lzdGVt IGFib3V0IGNvZGVzIHJlbGV2YW50IHRvIHBoeT8NCiANCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFlp ZmVuZyBaaGFvIDx5aWZlbmcuemhhb0Byb2NrLWNoaXBzLmNvbT4NCj4gLS0tDQo+IA0KPiAgZHJp dmVycy9tbWMvcm9ja2NoaXBfc2RoY2kuYyB8IDMzNCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDMwMyBpbnNlcnRpb25zKCspLCAzMSBkZWxl dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9yb2NrY2hpcF9zZGhjaS5j IGIvZHJpdmVycy9tbWMvcm9ja2NoaXBfc2RoY2kuYw0KPiBpbmRleCBkOTVmOGIyYTE1Li4wNWVk OTk4ZWNhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21tYy9yb2NrY2hpcF9zZGhjaS5jDQo+ICsr KyBiL2RyaXZlcnMvbW1jL3JvY2tjaGlwX3NkaGNpLmMNCj4gQEAgLTYsMzMgKzYsMjg1IEBADQo+ ICAgKi8NCj4gIA0KPiAgI2luY2x1ZGUgPGNvbW1vbi5oPg0KPiArI2luY2x1ZGUgPGNsay5oPg0K PiAgI2luY2x1ZGUgPGRtLmg+DQo+ICsjaW5jbHVkZSA8ZG0vb2Zub2RlLmg+DQo+ICAjaW5jbHVk ZSA8ZHQtc3RydWN0cy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ICAjaW5jbHVk ZSA8bGludXgvZXJyLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvbGliZmR0Lmg+DQo+ICAjaW5jbHVk ZSA8bWFsbG9jLmg+DQo+ICAjaW5jbHVkZSA8bWFwbWVtLmg+DQo+ICAjaW5jbHVkZSA8c2RoY2ku aD4NCj4gLSNpbmNsdWRlIDxjbGsuaD4NCj4gKyNpbmNsdWRlIDxzeXNjb24uaD4NCj4gIA0KPiAr I2luY2x1ZGUgPGFzbS9hcmNoLXJvY2tjaGlwL2Nsb2NrLmg+DQo+ICsjaW5jbHVkZSA8YXNtL2Fy Y2gtcm9ja2NoaXAvaGFyZHdhcmUuaD4NCj4gIC8qIDQwMEtIeiBpcyBtYXggZnJlcSBmb3IgY2Fy ZCBJRCBldGMuIFVzZSB0aGF0IGFzIG1pbiAqLw0KPiAgI2RlZmluZSBFTU1DX01JTl9GUkVRIDQw MDAwMA0KPiArI2RlZmluZSBLSHogKDEwMDApDQo+ICsjZGVmaW5lIE1IeiAoMTAwMCAqIEtIeikN Cj4gKw0KPiArI2RlZmluZSBQSFlDVFJMX0NBTERPTkVfTUFTSyAweDENCj4gKyNkZWZpbmUgUEhZ Q1RSTF9DQUxET05FX1NISUZUIDB4Ng0KPiArI2RlZmluZSBQSFlDVFJMX0NBTERPTkVfRE9ORSAw eDENCj4gKyNkZWZpbmUgUEhZQ1RSTF9ETExSRFlfTUFTSyAweDENCj4gKyNkZWZpbmUgUEhZQ1RS TF9ETExSRFlfU0hJRlQgMHg1DQo+ICsjZGVmaW5lIFBIWUNUUkxfRExMUkRZX0RPTkUgMHgxDQo+ ICsjZGVmaW5lIFBIWUNUUkxfRlJFUVNFTF8yMDBNIDB4MA0KPiArI2RlZmluZSBQSFlDVFJMX0ZS RVFTRUxfNTBNIDB4MQ0KPiArI2RlZmluZSBQSFlDVFJMX0ZSRVFTRUxfMTAwTSAweDINCj4gKyNk ZWZpbmUgUEhZQ1RSTF9GUkVRU0VMXzE1ME0gMHgzDQo+ICANCj4gIHN0cnVjdCByb2NrY2hpcF9z ZGhjX3BsYXQgew0KPiAtI2lmIENPTkZJR19JU19FTkFCTEVEKE9GX1BMQVREQVRBKQ0KPiAtIHN0 cnVjdCBkdGRfcm9ja2NoaXBfcmszMzk5X3NkaGNpXzVfMSBkdHBsYXQ7DQo+IC0jZW5kaWYNCj4g IHN0cnVjdCBtbWNfY29uZmlnIGNmZzsNCj4gIHN0cnVjdCBtbWMgbW1jOw0KPiAgfTsNCj4gIA0K PiArc3RydWN0IHJvY2tjaGlwX2VtbWNfcGh5IHsNCj4gKyB1MzIgZW1tY3BoeV9jb25bN107DQo+ ICsgdTMyIHJlc2VydmVkOw0KPiArIHUzMiBlbW1jcGh5X3N0YXR1czsNCj4gK307DQo+ICsNCj4g IHN0cnVjdCByb2NrY2hpcF9zZGhjIHsNCj4gIHN0cnVjdCBzZGhjaV9ob3N0IGhvc3Q7DQo+ICsg c3RydWN0IHVkZXZpY2UgKmRldjsNCj4gIHZvaWQgKmJhc2U7DQo+ICsgc3RydWN0IHJvY2tjaGlw X2VtbWNfcGh5ICpwaHk7DQo+ICsgc3RydWN0IGNsayBlbW1jX2NsazsNCj4gK307DQo+ICsNCj4g K3N0cnVjdCBzZGhjaV9kYXRhIHsNCj4gKyBpbnQgKCplbW1jX3NldF9jbG9jaykoc3RydWN0IHNk aGNpX2hvc3QgKmhvc3QsIHVuc2lnbmVkIGludCBjbG9jayk7DQo+ICsgaW50ICgqZW1tY19waHlf aW5pdCkoc3RydWN0IHVkZXZpY2UgKmRldik7DQo+ICsgaW50ICgqZ2V0X3BoeSkoc3RydWN0IHVk ZXZpY2UgKmRldik7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IHJrMzM5OV9lbW1jX3BoeV9p bml0KHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkIHJrMzM5OV9lbW1jX3BoeV9wb3dlcl9vbihzdHJ1Y3Qgcm9ja2NoaXBf ZW1tY19waHkgKnBoeSwgdTMyIGNsb2NrKQ0KPiArew0KPiArIHUzMiBjYWxkb25lLCBkbGxyZHks IGZyZXFzZWw7DQo+ICsgdWludCBzdGFydDsNCj4gKw0KPiArIHdyaXRlbChSS19DTFJTRVRCSVRT KDcgPDwgNCwgMCksICZwaHktPmVtbWNwaHlfY29uWzZdKTsNCj4gKyB3cml0ZWwoUktfQ0xSU0VU QklUUygxIDw8IDExLCAxIDw8IDExKSwgJnBoeS0+ZW1tY3BoeV9jb25bMF0pOw0KPiArIHdyaXRl bChSS19DTFJTRVRCSVRTKDB4ZiA8PCA3LCA2IDw8IDcpLCAmcGh5LT5lbW1jcGh5X2NvblswXSk7 DQo+ICsNCj4gKyAvKg0KPiArICogQWNjb3JkaW5nIHRvIHRoZSB1c2VyIG1hbnVhbCwgY2FscGFk IGNhbGlicmF0aW9uDQo+ICsgKiBjeWNsZSB0YWtlcyBtb3JlIHRoYW4gMnVzIHdpdGhvdXQgdGhl IG1pbmltYWwgcmVjb21tZW5kZWQNCj4gKyAqIHZhbHVlLCBzbyB3ZSBtYXkgbmVlZCBhIGxpdHRs ZSBtYXJnaW4gaGVyZQ0KPiArICovDQo+ICsgdWRlbGF5KDMpOw0KPiArIHdyaXRlbChSS19DTFJT RVRCSVRTKDEsIDEpLCAmcGh5LT5lbW1jcGh5X2Nvbls2XSk7DQo+ICsNCj4gKyAvKg0KPiArICog QWNjb3JkaW5nIHRvIHRoZSB1c2VyIG1hbnVhbCwgaXQgYXNrcyBkcml2ZXIgdG8NCj4gKyAqIHdh aXQgNXVzIGZvciBjYWxwYWQgYnVzeSB0cmltbWluZy4gQnV0IGl0IHNlZW1zIHRoYXQNCj4gKyAq IDV1cyBvZiBjYWxkb25lIGlzbid0IGVub3VnaCBmb3IgYWxsIGNhc2VzLg0KPiArICovDQo+ICsg dWRlbGF5KDUwMCk7DQo+ICsgY2FsZG9uZSA9IHJlYWRsKCZwaHktPmVtbWNwaHlfc3RhdHVzKTsN Cj4gKyBjYWxkb25lID0gKGNhbGRvbmUgPj4gUEhZQ1RSTF9DQUxET05FX1NISUZUKSAmIFBIWUNU UkxfQ0FMRE9ORV9NQVNLOw0KPiArIGlmIChjYWxkb25lICE9IFBIWUNUUkxfQ0FMRE9ORV9ET05F KSB7DQo+ICsgcHJpbnRmKCIlczogY2FsZG9uZSB0aW1lb3V0LlxuIiwgX19mdW5jX18pOw0KPiAr IHJldHVybjsNCj4gKyB9DQo+ICsNCj4gKyAvKiBTZXQgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgRExM IG9wZXJhdGlvbiAqLw0KPiArIGlmIChjbG9jayA8IDc1ICogTUh6KQ0KPiArIGZyZXFzZWwgPSBQ SFlDVFJMX0ZSRVFTRUxfNTBNOw0KPiArIGVsc2UgaWYgKGNsb2NrIDwgMTI1ICogTUh6KQ0KPiAr IGZyZXFzZWwgPSBQSFlDVFJMX0ZSRVFTRUxfMTAwTTsNCj4gKyBlbHNlIGlmIChjbG9jayA8IDE3 NSAqIE1IeikNCj4gKyBmcmVxc2VsID0gUEhZQ1RSTF9GUkVRU0VMXzE1ME07DQo+ICsgZWxzZQ0K PiArIGZyZXFzZWwgPSBQSFlDVFJMX0ZSRVFTRUxfMjAwTTsNCj4gKw0KPiArIC8qIFNldCB0aGUg ZnJlcXVlbmN5IG9mIHRoZSBETEwgb3BlcmF0aW9uICovDQo+ICsgd3JpdGVsKFJLX0NMUlNFVEJJ VFMoMyA8PCAxMiwgZnJlcXNlbCA8PCAxMiksICZwaHktPmVtbWNwaHlfY29uWzBdKTsNCj4gKyB3 cml0ZWwoUktfQ0xSU0VUQklUUygxIDw8IDEsIDEgPDwgMSksICZwaHktPmVtbWNwaHlfY29uWzZd KTsNCj4gKw0KPiArIHN0YXJ0ID0gZ2V0X3RpbWVyKDApOw0KPiArDQo+ICsgZG8gew0KPiArIHVk ZWxheSgxKTsNCj4gKyBkbGxyZHkgPSByZWFkbCgmcGh5LT5lbW1jcGh5X3N0YXR1cyk7DQo+ICsg ZGxscmR5ID0gKGRsbHJkeSA+PiBQSFlDVFJMX0RMTFJEWV9TSElGVCkgJiBQSFlDVFJMX0RMTFJE WV9NQVNLOw0KPiArIGlmIChkbGxyZHkgPT0gUEhZQ1RSTF9ETExSRFlfRE9ORSkNCj4gKyBicmVh azsNCj4gKyB9IHdoaWxlIChnZXRfdGltZXIoc3RhcnQpIDwgNTAwMDApOw0KPiArDQo+ICsgaWYg KGRsbHJkeSAhPSBQSFlDVFJMX0RMTFJEWV9ET05FKQ0KPiArIHByaW50ZigiJXM6IGRsbHJkeSB0 aW1lb3V0LlxuIiwgX19mdW5jX18pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCByazMzOTlf ZW1tY19waHlfcG93ZXJfb2ZmKHN0cnVjdCByb2NrY2hpcF9lbW1jX3BoeSAqcGh5KQ0KPiArew0K PiArIHdyaXRlbChSS19DTFJTRVRCSVRTKDEsIDApLCAmcGh5LT5lbW1jcGh5X2Nvbls2XSk7DQo+ ICsgd3JpdGVsKFJLX0NMUlNFVEJJVFMoMSA8PCAxLCAwKSwgJnBoeS0+ZW1tY3BoeV9jb25bNl0p Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHJvY2tjaGlwX2VtbWNfc2V0X2Nsb2NrKHN0cnVj dCBzZGhjaV9ob3N0ICpob3N0LCB1bnNpZ25lZCBpbnQgY2xvY2spDQogDQpEb2VzIGl0IGltcG9z c2libGUgdG8gcmV1c2Ugc2RoY2lfc2V0X2Nsb2NrKCk/IEl0J3MgYWxtbW9zdCBzaW1pbGFyLCBl eGNlcHQgY2xrX3NldF9yYXRlKCkuDQogDQo+ICt7DQo+ICsgdW5zaWduZWQgaW50IGRpdiwgY2xr ID0gMCwgdGltZW91dDsNCj4gKyB1bnNpZ25lZCBpbnQgaW5wdXRfY2xrOw0KPiArIHN0cnVjdCBy b2NrY2hpcF9zZGhjICpwcml2ID0NCj4gKyBjb250YWluZXJfb2YoaG9zdCwgc3RydWN0IHJvY2tj aGlwX3NkaGMsIGhvc3QpOw0KPiArDQo+ICsgLyogV2FpdCBtYXggMjAgbXMgKi8NCj4gKyB0aW1l b3V0ID0gMjAwMDsNCj4gKyB3aGlsZSAoc2RoY2lfcmVhZGwoaG9zdCwgU0RIQ0lfUFJFU0VOVF9T VEFURSkgJg0KPiArICAgIChTREhDSV9DTURfSU5ISUJJVCB8IFNESENJX0RBVEFfSU5ISUJJVCkp IHsNCj4gKyBpZiAodGltZW91dCA9PSAwKSB7DQo+ICsgcHJpbnRmKCIlczogVGltZW91dCB0byB3 YWl0IGNtZCAmIGRhdGEgaW5oaWJpdFxuIiwNCj4gKyAgICAgICAgX19mdW5jX18pOw0KPiArIHJl dHVybiAtRUJVU1k7DQo+ICsgfQ0KPiArDQo+ICsgdGltZW91dC0tOw0KPiArIHVkZWxheSgxMCk7 DQo+ICsgfQ0KPiArIHNkaGNpX3dyaXRldyhob3N0LCAwLCBTREhDSV9DTE9DS19DT05UUk9MKTsN Cj4gKw0KPiArIGlmIChjbG9jayA9PSAwKQ0KPiArIHJldHVybiAwOw0KPiArDQo+ICsgaW5wdXRf Y2xrID0gY2xrX3NldF9yYXRlKCZwcml2LT5lbW1jX2NsaywgY2xvY2spOw0KPiArIGlmIChJU19F UlJfVkFMVUUoaW5wdXRfY2xrKSkNCj4gKyBpbnB1dF9jbGsgPSBob3N0LT5tYXhfY2xrOw0KPiAr DQo+ICsgaWYgKFNESENJX0dFVF9WRVJTSU9OKGhvc3QpID49IFNESENJX1NQRUNfMzAwKSB7DQo+ ICsgLyoNCj4gKyAqIENoZWNrIGlmIHRoZSBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydHMgUHJvZ3Jh bW1hYmxlIENsb2NrDQo+ICsgKiBNb2RlLg0KPiArICovDQo+ICsgaWYgKGhvc3QtPmNsa19tdWwp IHsNCj4gKyBmb3IgKGRpdiA9IDE7IGRpdiA8PSAxMDI0OyBkaXYrKykgew0KPiArIGlmICgoaW5w dXRfY2xrIC8gZGl2KSA8PSBjbG9jaykNCj4gKyBicmVhazsNCj4gKyB9DQo+ICsNCj4gKyAvKg0K PiArICogU2V0IFByb2dyYW1tYWJsZSBDbG9jayBNb2RlIGluIHRoZSBDbG9jaw0KPiArICogQ29u dHJvbCByZWdpc3Rlci4NCj4gKyAqLw0KPiArIGNsayA9IFNESENJX1BST0dfQ0xPQ0tfTU9ERTsN Cj4gKyBkaXYtLTsNCj4gKyB9IGVsc2Ugew0KPiArIC8qIFZlcnNpb24gMy4wMCBkaXZpc29ycyBt dXN0IGJlIGEgbXVsdGlwbGUgb2YgMi4gKi8NCj4gKyBpZiAoaW5wdXRfY2xrIDw9IGNsb2NrKSB7 DQo+ICsgZGl2ID0gMTsNCj4gKyB9IGVsc2Ugew0KPiArIGZvciAoZGl2ID0gMjsNCj4gKyAgICAg IGRpdiA8IFNESENJX01BWF9ESVZfU1BFQ18zMDA7DQo+ICsgICAgICBkaXYgKz0gMikgew0KPiAr IGlmICgoaW5wdXRfY2xrIC8gZGl2KSA8PSBjbG9jaykNCj4gKyBicmVhazsNCj4gKyB9DQo+ICsg fQ0KPiArIGRpdiA+Pj0gMTsNCj4gKyB9DQo+ICsgfSBlbHNlIHsNCj4gKyAvKiBWZXJzaW9uIDIu MDAgZGl2aXNvcnMgbXVzdCBiZSBhIHBvd2VyIG9mIDIuICovDQo+ICsgZm9yIChkaXYgPSAxOyBk aXYgPCBTREhDSV9NQVhfRElWX1NQRUNfMjAwOyBkaXYgKj0gMikgew0KPiArIGlmICgoaW5wdXRf Y2xrIC8gZGl2KSA8PSBjbG9jaykNCj4gKyBicmVhazsNCj4gKyB9DQo+ICsgZGl2ID4+PSAxOw0K PiArIH0NCj4gKw0KPiArIGNsayB8PSAoZGl2ICYgU0RIQ0lfRElWX01BU0spIDw8IFNESENJX0RJ VklERVJfU0hJRlQ7DQo+ICsgY2xrIHw9ICgoZGl2ICYgU0RIQ0lfRElWX0hJX01BU0spID4+IFNE SENJX0RJVl9NQVNLX0xFTikNCj4gKyA8PCBTREhDSV9ESVZJREVSX0hJX1NISUZUOw0KPiArIGNs ayB8PSBTREhDSV9DTE9DS19JTlRfRU47DQo+ICsgc2RoY2lfd3JpdGV3KGhvc3QsIGNsaywgU0RI Q0lfQ0xPQ0tfQ09OVFJPTCk7DQo+ICsNCj4gKyAvKiBXYWl0IG1heCAyMCBtcyAqLw0KPiArIHRp bWVvdXQgPSAyMDAwOw0KPiArIHdoaWxlICghKChjbGsgPSBzZGhjaV9yZWFkdyhob3N0LCBTREhD SV9DTE9DS19DT05UUk9MKSkNCj4gKyAmIFNESENJX0NMT0NLX0lOVF9TVEFCTEUpKSB7DQo+ICsg aWYgKHRpbWVvdXQgPT0gMCkgew0KPiArIHByaW50ZigiJXM6IEludGVybmFsIGNsb2NrIG5ldmVy IHN0YWJpbGlzZWQuXG4iLA0KPiArICAgICAgICBfX2Z1bmNfXyk7DQo+ICsgcmV0dXJuIC1FQlVT WTsNCj4gKyB9DQo+ICsgdGltZW91dC0tOw0KPiArIHVkZWxheSgxMCk7DQo+ICsgfQ0KPiArIGNs ayB8PSBTREhDSV9DTE9DS19DQVJEX0VOOw0KPiArIHNkaGNpX3dyaXRldyhob3N0LCBjbGssIFNE SENJX0NMT0NLX0NPTlRST0wpOw0KPiArIGhvc3QtPmNsb2NrID0gY2xvY2s7DQo+ICsNCj4gKyBy ZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCByazMzOTlfZW1tY19nZXRfcGh5KHN0 cnVjdCB1ZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgc3RydWN0IHJvY2tjaGlwX3NkaGMgKnByaXYg PSBkZXZfZ2V0X3ByaXYoZGV2KTsNCj4gKw0KPiArIG9mbm9kZSBwaHlfbm9kZTsNCj4gKyB2b2lk ICpncmZfYmFzZTsNCj4gKyB1MzIgZ3JmX3BoeV9vZmZzZXQsIHBoYW5kbGU7DQo+ICsNCj4gKyBw aGFuZGxlID0gZGV2X3JlYWRfdTMyX2RlZmF1bHQoZGV2LCAicGh5cyIsIDApOw0KPiArIHBoeV9u b2RlID0gb2Zub2RlX2dldF9ieV9waGFuZGxlKHBoYW5kbGUpOw0KPiArIGlmICghb2Zub2RlX3Zh bGlkKHBoeV9ub2RlKSkgew0KPiArIGRlYnVnKCJOb3QgZm91bmQgZW1tYyBwaHkgZGV2aWNlXG4i KTsNCj4gKyByZXR1cm4gLUVOT0RFVjsNCj4gKyB9DQo+ICsNCj4gKyBncmZfYmFzZSA9IHN5c2Nv bl9nZXRfZmlyc3RfcmFuZ2UoUk9DS0NISVBfU1lTQ09OX0dSRik7DQo+ICsgaWYgKGdyZl9iYXNl IDwgMCkNCj4gKyBwcmludGYoIiVzIEdldCBzeXNjb24gZ3JmIGZhaWxlZCIsIF9fZnVuY19fKTsN Cj4gKyBncmZfcGh5X29mZnNldCA9IG9mbm9kZV9yZWFkX3UzMl9kZWZhdWx0KHBoeV9ub2RlLCAi cmVnIiwgMCk7DQo+ICsNCj4gKyBwcml2LT5waHkgPSAoc3RydWN0IHJvY2tjaGlwX2VtbWNfcGh5 ICopKGdyZl9iYXNlICsgZ3JmX3BoeV9vZmZzZXQpOw0KPiArDQo+ICsgcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQgcmszMzk5X3NkaGNpX2VtbWNfc2V0X2Nsb2NrKHN0cnVjdCBz ZGhjaV9ob3N0ICpob3N0LCB1bnNpZ25lZCBpbnQgY2xvY2spDQo+ICt7DQo+ICsgc3RydWN0IHJv Y2tjaGlwX3NkaGMgKnByaXYgPQ0KPiArIGNvbnRhaW5lcl9vZihob3N0LCBzdHJ1Y3Qgcm9ja2No aXBfc2RoYywgaG9zdCk7DQo+ICsgaW50IGN5Y2xlX3BoeSA9IGhvc3QtPmNsb2NrICE9IGNsb2Nr ICYmDQo+ICsgY2xvY2sgPiBFTU1DX01JTl9GUkVROw0KPiArDQo+ICsgaWYgKGN5Y2xlX3BoeSkN Cj4gKyByazMzOTlfZW1tY19waHlfcG93ZXJfb2ZmKHByaXYtPnBoeSk7DQo+ICsNCj4gKyByb2Nr Y2hpcF9lbW1jX3NldF9jbG9jayhob3N0LCBjbG9jayk7DQo+ICsNCj4gKyBpZiAoY3ljbGVfcGh5 KQ0KPiArIHJrMzM5OV9lbW1jX3BoeV9wb3dlcl9vbihwcml2LT5waHksIGNsb2NrKTsNCj4gKw0K PiArIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHNkaGNpX3NldF9pb3NfcG9z dChzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCkNCiANCnJvY2tjaGlwX3NkaGNpX3NldF9pb3NfcG9z dD8NCiANCj4gK3sNCj4gKyBzdHJ1Y3QgbW1jICptbWMgPSBob3N0LT5tbWM7DQo+ICsgc3RydWN0 IHJvY2tjaGlwX3NkaGMgKnByaXYgPSBjb250YWluZXJfb2YoaG9zdCwgc3RydWN0IHJvY2tjaGlw X3NkaGMsIGhvc3QpOw0KPiArIHN0cnVjdCBzZGhjaV9kYXRhICpkYXRhID0gKHN0cnVjdCBzZGhj aV9kYXRhICopZGV2X2dldF9kcml2ZXJfZGF0YShwcml2LT5kZXYpOw0KPiArDQo+ICsgZGF0YS0+ ZW1tY19zZXRfY2xvY2soaG9zdCwgbW1jLT5jbG9jayk7DQo+ICsNCj4gKyByZXR1cm4gMDsNCj4g K30NCj4gKw0KPiArc3RhdGljIHN0cnVjdCBzZGhjaV9vcHMgcm9ja2NoaXBfc2RoY2lfb3BzID0g ew0KPiArIC5zZXRfaW9zX3Bvc3QgPSBzZGhjaV9zZXRfaW9zX3Bvc3QsDQo+ICB9Ow0KPiAgDQo+ IC1zdGF0aWMgaW50IGFyYXNhbl9zZGhjaV9wcm9iZShzdHJ1Y3QgdWRldmljZSAqZGV2KQ0KPiAr c3RhdGljIGludCByb2NrY2hpcF9zZGhjaV9wcm9iZShzdHJ1Y3QgdWRldmljZSAqZGV2KQ0KPiAg ew0KPiArIHN0cnVjdCBzZGhjaV9kYXRhICpkYXRhID0gKHN0cnVjdCBzZGhjaV9kYXRhICopZGV2 X2dldF9kcml2ZXJfZGF0YShkZXYpOw0KPiAgc3RydWN0IG1tY191Y2xhc3NfcHJpdiAqdXByaXYg PSBkZXZfZ2V0X3VjbGFzc19wcml2KGRldik7DQo+ICBzdHJ1Y3Qgcm9ja2NoaXBfc2RoY19wbGF0 ICpwbGF0ID0gZGV2X2dldF9wbGF0KGRldik7DQo+ICBzdHJ1Y3Qgcm9ja2NoaXBfc2RoYyAqcHJ2 ID0gZGV2X2dldF9wcml2KGRldik7DQo+IEBAIC00MCwxNyArMjkyLDIyIEBAIHN0YXRpYyBpbnQg YXJhc2FuX3NkaGNpX3Byb2JlKHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+ICBpbnQgbWF4X2ZyZXF1 ZW5jeSwgcmV0Ow0KPiAgc3RydWN0IGNsayBjbGs7DQo+ICANCj4gLSNpZiBDT05GSUdfSVNfRU5B QkxFRChPRl9QTEFUREFUQSkNCj4gLSBzdHJ1Y3QgZHRkX3JvY2tjaGlwX3JrMzM5OV9zZGhjaV81 XzEgKmR0cGxhdCA9ICZwbGF0LT5kdHBsYXQ7DQo+IC0NCj4gLSBob3N0LT5uYW1lID0gZGV2LT5u YW1lOw0KPiAtIGhvc3QtPmlvYWRkciA9IG1hcF9zeXNtZW0oZHRwbGF0LT5yZWdbMF0sIGR0cGxh dC0+cmVnWzFdKTsNCj4gLSBtYXhfZnJlcXVlbmN5ID0gZHRwbGF0LT5tYXhfZnJlcXVlbmN5Ow0K PiAtIHJldCA9IGNsa19nZXRfYnlfZHJpdmVyX2luZm8oZGV2LCBkdHBsYXQtPmNsb2NrcywgJmNs ayk7DQo+IC0jZWxzZQ0KPiAgbWF4X2ZyZXF1ZW5jeSA9IGRldl9yZWFkX3UzMl9kZWZhdWx0KGRl diwgIm1heC1mcmVxdWVuY3kiLCAwKTsNCj4gKyBzd2l0Y2ggKGRldl9yZWFkX3UzMl9kZWZhdWx0 KGRldiwgImJ1cy13aWR0aCIsIDQpKSB7DQo+ICsgY2FzZSA4Og0KPiArIGhvc3QtPmhvc3RfY2Fw cyB8PSBNTUNfTU9ERV84QklUOw0KPiArIGJyZWFrOw0KPiArIGNhc2UgNDoNCj4gKyBob3N0LT5o b3N0X2NhcHMgfD0gTU1DX01PREVfNEJJVDsNCj4gKyBicmVhazsNCj4gKyBjYXNlIDE6DQo+ICsg YnJlYWs7DQo+ICsgZGVmYXVsdDoNCj4gKyBwcmludGYoIkludmFsaWQgXCJidXMtd2lkdGhcIiB2 YWx1ZVxuIik7DQo+ICsgcmV0dXJuIC1FSU5WQUw7DQo+ICsgfQ0KIA0KVXNlIG1tY19vZl9wYXJz ZSgpLg0KIA0KPiAgcmV0ID0gY2xrX2dldF9ieV9pbmRleChkZXYsIDAsICZjbGspOw0KPiAtI2Vu ZGlmDQo+ICsNCj4gIGlmICghcmV0KSB7DQo+ICByZXQgPSBjbGtfc2V0X3JhdGUoJmNsaywgbWF4 X2ZyZXF1ZW5jeSk7DQo+ICBpZiAoSVNfRVJSX1ZBTFVFKHJldCkpDQo+IEBAIC01OSwxNiArMzE2 LDI1IEBAIHN0YXRpYyBpbnQgYXJhc2FuX3NkaGNpX3Byb2JlKHN0cnVjdCB1ZGV2aWNlICpkZXYp DQo+ICBwcmludGYoIiVzIGZhaWwgdG8gZ2V0IGNsa1xuIiwgX19mdW5jX18pOw0KPiAgfQ0KPiAg DQo+ICsgcHJ2LT5lbW1jX2NsayA9IGNsazsNCj4gKyBwcnYtPmRldiA9IGRldjsNCj4gKyByZXQg PSBkYXRhLT5nZXRfcGh5KGRldik7DQo+ICsgaWYgKHJldCkNCj4gKyByZXR1cm4gcmV0Ow0KPiAr DQo+ICsgcmV0ID0gZGF0YS0+ZW1tY19waHlfaW5pdChkZXYpOw0KPiArIGlmIChyZXQpDQo+ICsg cmV0dXJuIHJldDsNCj4gKw0KPiArIGhvc3QtPm9wcyA9ICZyb2NrY2hpcF9zZGhjaV9vcHM7DQo+ ICsNCj4gIGhvc3QtPnF1aXJrcyA9IFNESENJX1FVSVJLX1dBSVRfU0VORF9DTUQ7DQo+ICBob3N0 LT5tYXhfY2xrID0gbWF4X2ZyZXF1ZW5jeTsNCj4gLSAvKg0KPiAtICogVGhlIHNkaGNpLWRyaXZl ciBvbmx5IHN1cHBvcnRzIDRiaXQgYW5kIDhiaXQsIGFzIHNkaGNpX3NldHVwX2NmZw0KPiAtICog ZG9lc24ndCBhbGxvdyB1cyB0byBjbGVhciBNTUNfTU9ERV80QklULiAgQ29uc2VxdWVudGx5LCB3 ZSBkb24ndA0KPiAtICogY2hlY2sgZm9yIG90aGVyIGJ1cy13aWR0aCB2YWx1ZXMuDQo+IC0gKi8N Cj4gLSBpZiAoaG9zdC0+YnVzX3dpZHRoID09IDgpDQo+IC0gaG9zdC0+aG9zdF9jYXBzIHw9IE1N Q19NT0RFXzhCSVQ7DQo+ICANCj4gKyBpZiAoZGV2X3JlYWRfYm9vbChkZXYsICJtbWMtaHMyMDAt MV84diIpKQ0KPiArIGhvc3QtPmhvc3RfY2FwcyB8PSBNTUNfTU9ERV9IUzIwMDsNCj4gKyBlbHNl IGlmIChkZXZfcmVhZF9ib29sKGRldiwgIm1tYy1oczQwMC0xXzh2IikpDQo+ICsgaG9zdC0+aG9z dF9jYXBzIHw9IE1NQ19NT0RFX0hTNDAwOw0KPiAgaG9zdC0+bW1jID0gJnBsYXQtPm1tYzsNCj4g IGhvc3QtPm1tYy0+cHJpdiA9ICZwcnYtPmhvc3Q7DQo+ICBob3N0LT5tbWMtPmRldiA9IGRldjsN Cj4gQEAgLTgxLDE1ICszNDcsMTIgQEAgc3RhdGljIGludCBhcmFzYW5fc2RoY2lfcHJvYmUoc3Ry dWN0IHVkZXZpY2UgKmRldikNCj4gIHJldHVybiBzZGhjaV9wcm9iZShkZXYpOw0KPiAgfQ0KPiAg DQo+IC1zdGF0aWMgaW50IGFyYXNhbl9zZGhjaV9vZl90b19wbGF0KHN0cnVjdCB1ZGV2aWNlICpk ZXYpDQo+ICtzdGF0aWMgaW50IHNkaGNpX29mX3RvX3BsYXQoc3RydWN0IHVkZXZpY2UgKmRldikN Cj4gIHsNCj4gLSNpZiAhQ09ORklHX0lTX0VOQUJMRUQoT0ZfUExBVERBVEEpDQo+ICBzdHJ1Y3Qg c2RoY2lfaG9zdCAqaG9zdCA9IGRldl9nZXRfcHJpdihkZXYpOw0KPiAgDQo+ICBob3N0LT5uYW1l ID0gZGV2LT5uYW1lOw0KPiAgaG9zdC0+aW9hZGRyID0gZGV2X3JlYWRfYWRkcl9wdHIoZGV2KTsN Cj4gLSBob3N0LT5idXNfd2lkdGggPSBkZXZfcmVhZF91MzJfZGVmYXVsdChkZXYsICJidXMtd2lk dGgiLCA0KTsNCj4gLSNlbmRpZg0KPiAgDQo+ICByZXR1cm4gMDsNCj4gIH0NCj4gQEAgLTEwMSwx OSArMzY0LDI4IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfc2RoY2lfYmluZChzdHJ1Y3QgdWRldmlj ZSAqZGV2KQ0KPiAgcmV0dXJuIHNkaGNpX2JpbmQoZGV2LCAmcGxhdC0+bW1jLCAmcGxhdC0+Y2Zn KTsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2aWNlX2lkIGFyYXNhbl9z ZGhjaV9pZHNbXSA9IHsNCj4gLSB7IC5jb21wYXRpYmxlID0gImFyYXNhbixzZGhjaS01LjEiIH0s DQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNkaGNpX2RhdGEgcmszMzk5X2RhdGEgPSB7DQo+ICsg LmVtbWNfc2V0X2Nsb2NrID0gcmszMzk5X3NkaGNpX2VtbWNfc2V0X2Nsb2NrLA0KPiArIC5nZXRf cGh5ID0gcmszMzk5X2VtbWNfZ2V0X3BoeSwNCj4gKyAuZW1tY19waHlfaW5pdCA9IHJrMzM5OV9l bW1jX3BoeV9pbml0LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2aWNl X2lkIHNkaGNpX2lkc1tdID0gew0KPiArIHsNCj4gKyAuY29tcGF0aWJsZSA9ICJhcmFzYW4sc2Ro Y2ktNS4xIiwNCj4gKyAuZGF0YSA9ICh1bG9uZykmcmszMzk5X2RhdGEsDQo+ICsgfSwNCj4gIHsg fQ0KPiAgfTsNCj4gIA0KPiAgVV9CT09UX0RSSVZFUihhcmFzYW5fc2RoY2lfZHJ2KSA9IHsNCj4g LSAubmFtZSA9ICJyb2NrY2hpcF9yazMzOTlfc2RoY2lfNV8xIiwNCj4gKyAubmFtZSA9ICJyb2Nr Y2hpcF9zZGhjaV81XzEiLA0KPiAgLmlkID0gVUNMQVNTX01NQywNCj4gLSAub2ZfbWF0Y2ggPSBh cmFzYW5fc2RoY2lfaWRzLA0KPiAtIC5vZl90b19wbGF0ID0gYXJhc2FuX3NkaGNpX29mX3RvX3Bs YXQsDQo+ICsgLm9mX21hdGNoID0gc2RoY2lfaWRzLA0KPiArIC5vZl90b19wbGF0ID0gc2RoY2lf b2ZfdG9fcGxhdCwNCj4gIC5vcHMgPSAmc2RoY2lfb3BzLA0KPiAgLmJpbmQgPSByb2NrY2hpcF9z ZGhjaV9iaW5kLA0KPiAtIC5wcm9iZSA9IGFyYXNhbl9zZGhjaV9wcm9iZSwNCj4gKyAucHJvYmUg PSByb2NrY2hpcF9zZGhjaV9wcm9iZSwNCj4gIC5wcml2X2F1dG8gPSBzaXplb2Yoc3RydWN0IHJv Y2tjaGlwX3NkaGMpLA0KPiAgLnBsYXRfYXV0byA9IHNpemVvZihzdHJ1Y3Qgcm9ja2NoaXBfc2Ro Y19wbGF0KSwNCj4gIH07DQo+IA0KIA0KIA0KIA0KIA0K