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 6FADAEB64DA for ; Wed, 5 Jul 2023 13:13: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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=HE5/FzpDamdxeQVniuHrLgosSdtrlxQrZHcXaqVxtlA=; b=RNi+Yi3zGVwj1+ LXzjMkkgZPNgB58/ZQ93efztByiuVUkJ8FxYn5Tbc9KoDp1KfurwsfA+rmI0nOZy8KGlv+xWZJ0Me 9qnv2dvnVTf6QnoefTJAbaCZDzGBwUTd8w82t+W/JZ5dSRzn5FAyw8iCgwcAlvwkItnNFjEGxL7Jl 13I+MTjrkNf1c2e+4nBCBuupgL18/Pew4EOWDNhiAgZFRuGoG9pQfhWMYaOMBqfzl3ss6cU6AqKFB l5PRR8M9+bm/5gxFLWOTmbbWbj2RkFBnsOjHazz9tAZceSE6lyNtVRbhW7T8QgMI4olBCTFPwB70+ arr4NvhUac0AVvf9O6Xg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qH2JT-00Fy4v-2K; Wed, 05 Jul 2023 13:12:55 +0000 Received: from mx1.tq-group.com ([93.104.207.81]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qH2JO-00Fy3T-2x for linux-arm-kernel@lists.infradead.org; Wed, 05 Jul 2023 13:12:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1688562770; x=1720098770; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=u+CYWz+wrcDqdmitNpoma5P/Hi2wWpeXsryCS80wey4=; b=BsXC1/J89PnEwv2cWSusruFP0agbnjvsDqhWb7aR86UZM9FB7VrLy2mf BxbPm/h3fN0NMQytBVIFyA4DM2EZLxecDtFiumw1dqi2RnL2L9iXVOvf2 6KYZvJ/XTjlRxRpJ2WBTdZYJWjRBwovGFXeUj7yViNIHhHDvL2o3XbaHS PVqBsPJtkO0CDCqaDK/jY8qwnb6UjF54KFdymiWtc07v9RBp/v0J9Q99O Nfu66Dlj1HtKu4xswpoOijlmiHKbeKp3lJK+Tcc0/UqucjFUeEd7xcZ1D kxit5FgN9B3QFhWES0L8RYNtXQiaGrRCyuIwY8+kxLvSFXu7QlhZ1xAiD A==; X-IronPort-AV: E=Sophos;i="6.01,183,1684792800"; d="scan'208";a="31771723" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 05 Jul 2023 15:12:46 +0200 Received: from steina-w.localnet (unknown [10.123.53.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by vtuxmail01.tq-net.de (Postfix) with ESMTPSA id 24CFD280078; Wed, 5 Jul 2023 15:12:46 +0200 (CEST) From: Alexander Stein To: Jacky Bai , "lgirdwood@gmail.com" , "broonie@kernel.org" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "conor+dt@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "linux-arm-kernel@lists.infradead.org" , Joy Zou Cc: "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v1 2/3] regulator: pca9450: add pca9451a support Date: Wed, 05 Jul 2023 15:12:45 +0200 Message-ID: <4630917.iIbC2pHGDl@steina-w> Organization: TQ-Systems GmbH In-Reply-To: References: <20230531065724.3671795-1-joy.zou@nxp.com> <3505527.iIbC2pHGDl@steina-w> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230705_061251_512245_63F3930B X-CRM114-Status: GOOD ( 26.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8sCgpBbSBNaXR0d29jaCwgNS4gSnVsaSAyMDIzLCAwODo1MDoyNCBDRVNUIHNjaHJpZWIg Sm95IFpvdToKPiAKPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBBbGV4 YW5kZXIgU3RlaW4gPGFsZXhhbmRlci5zdGVpbkBldy50cS1ncm91cC5jb20+Cj4gPiBTZW50OiAy MDIz5bm0NeaciDMx5pelIDE5OjM1Cj4gPiBUbzogSmFja3kgQmFpIDxwaW5nLmJhaUBueHAuY29t PjsgbGdpcmR3b29kQGdtYWlsLmNvbTsKPiA+IGJyb29uaWVAa2VybmVsLm9yZzsgcm9iaCtkdEBr ZXJuZWwub3JnOwo+ID4ga3J6eXN6dG9mLmtvemxvd3NraStkdEBsaW5hcm8ub3JnOwo+ID4gY29u b3IrZHRAa2VybmVsLm9yZzsgc2hhd25ndW9Aa2VybmVsLm9yZzsgcy5oYXVlckBwZW5ndXRyb25p eC5kZTsKPiA+IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ID4gQ2M6IGtl cm5lbEBwZW5ndXRyb25peC5kZTsgZmVzdGV2YW1AZ21haWwuY29tOyBkbC1saW51eC1pbXgKPiA+ IDxsaW51eC1pbXhAbnhwLmNvbT47IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOwo+ID4gbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnOyBKb3kKPiA+IFpvdQogPGpveS56b3VAbnhwLmNvbT4KPiA+IFN1YmplY3Q6IFtFWFRd IFJlOiBbUEFUQ0ggdjEgMi8zXSByZWd1bGF0b3I6IHBjYTk0NTA6IGFkZCBwY2E5NDUxYQo+ID4g c3VwcG9ydAo+ID4KPiA+Cj4gPgo+ID4gQ2F1dGlvbjogVGhpcyBpcyBhbiBleHRlcm5hbCBlbWFp bC4gUGxlYXNlIHRha2UgY2FyZSB3aGVuIGNsaWNraW5nIGxpbmtzCj4gPiBvcgogb3BlbmluZyBh dHRhY2htZW50cy4gV2hlbiBpbiBkb3VidCwgcmVwb3J0IHRoZSBtZXNzYWdlIHVzaW5nIHRoZQo+ ID4gJ1JlcG9ydCB0aGlzIGVtYWlsJyBidXR0b24KPiA+Cj4gPgo+ID4KPiA+Cj4gPiBIaSwKPiA+ Cj4gPgo+ID4KPiA+IEFtIE1pdHR3b2NoLCAzMS4gTWFpIDIwMjMsIDA4OjU3OjIzIENFU1Qgc2No cmllYiBKb3kgWm91Ogo+ID4gCj4gPiA+IEFkZGluZyBzdXBwb3J0IGZvciBwbWljIHBjYTk0NTFh Lgo+ID4gPgo+ID4gPgo+ID4gPgo+ID4gPiBUaGlzIHBhdGNoIHN1cHBvcnQgb2xkIGFuZCBuZXcg cG1pYyBwY2E5NDUxYS4gVGhlIG5ldyBwbWljIHRyaW1lZAo+ID4gCj4gPiBCVUNLMS4KPiA+IAo+ ID4gPiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBUb2ZmX0RlYiBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNo IHRoZSBvbGQgYW5kIG5ldwo+ID4gPiBwbWljLgo+ID4gPgo+ID4gPgo+ID4gPgo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBKb3kgWm91IDxqb3kuem91QG54cC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAKPiA+ ID4gIGRyaXZlcnMvcmVndWxhdG9yL3BjYTk0NTAtcmVndWxhdG9yLmMgfCAyNjIKPiA+IAo+ID4g KysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+IAo+ID4gPiAgaW5jbHVkZS9saW51eC9yZWd1 bGF0b3IvcGNhOTQ1MC5oICAgICB8ICAgMiArCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDI1MiBp bnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKPiA+ID4KPiA+ID4KPiA+ID4KPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcmVndWxhdG9yL3BjYTk0NTAtcmVndWxhdG9yLmMKPiA+ID4gYi9k cml2ZXJzL3JlZ3VsYXRvci9wY2E5NDUwLXJlZ3VsYXRvci5jIGluZGV4Cj4gPiA+IDkxYmZiN2Uw MjZjOS4uNjU0YWE0ZmJlNDk0Cj4gPiA+IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3JlZ3Vs YXRvci9wY2E5NDUwLXJlZ3VsYXRvci5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvcmVndWxhdG9yL3Bj YTk0NTAtcmVndWxhdG9yLmMKPiA+ID4gQEAgLTEwNCw3ICsxMDQsMTUgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCByZWd1bGF0b3Jfb3BzCj4gPiA+IHBjYTk0NTBfbGRvX3JlZ3VsYXRvcl9vcHMgPSB7 ICogMC42MCB0byAyLjE4NzVWICgxMi41bVYgc3RlcCkKPiA+ID4gCj4gPiA+ICAgKi8KPiA+ID4g IAo+ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBsaW5lYXJfcmFuZ2UgcGNhOTQ1MF9kdnNfYnVj a192b2x0c1tdID0gewo+ID4gPiAKPiA+ID4gLSAgICAgUkVHVUxBVE9SX0xJTkVBUl9SQU5HRSg2 MDAwMDAsICAweDAwLCAweDdGLCAxMjUwMCksCj4gPiA+ICsgICAgIFJFR1VMQVRPUl9MSU5FQVJf UkFOR0UoNjAwMDAwLCAweDAwLCAweDdGLCAxMjUwMCksIH07Cj4gPiA+ICsKPiA+ID4gKy8qCj4g PiA+ICsgKiBCVUNLMS8zCj4gPiA+ICsgKiAwLjY1IHRvIDIuMjM3NVYgKDEyLjVtViBzdGVwKQo+ ID4KPiA+Cj4gPgo+ID4gUmVhZGluZyB0aGlzIGNvbW1lbnQsIGl0IHNlZW1zIHRoZSBzYW1lIGRp c3RpbmN0aW9uIG5lZWRzIHRvIGJlIGRvbmUgZm9yCj4gPiBCVUNLMyBhcyB3ZWxsLCBubz8KPiAK PiBTb3JyeSBmb3IgdGhlIGxhdGUgcmVwbHkhCj4gVGhlIEJVQ0sxIGFuZCBCVUNLMyBhcmUgZHVh bCBwaGFzZSwgc28gZG9uJ3QgbmVlZCB0byBiZSBkb25lIGZvciBCVUNLMy4KPiAKPiA+Cj4gPgo+ ID4gPiArICovCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGxpbmVhcl9yYW5nZSBwY2E5NDUw X3RyaW1fZHZzX2J1Y2tfdm9sdHNbXSA9IHsKPiA+ID4gKyAgICAgUkVHVUxBVE9SX0xJTkVBUl9S QU5HRSg2NTAwMDAsIDB4MDAsIDB4N0YsIDEyNTAwKSwKPiA+ID4gCj4gPiA+ICB9Owo+ID4gPgo+ ID4gPgo+ID4gPgo+ID4gPiAgLyoKPiA+ID4gCj4gPiA+IEBAIC02NjMsNiArNjcxLDIwNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHBjYTk0NTBfcmVndWxhdG9yX2Rlc2MKPiA+ID4gcGNhOTQ1MGJj X3JlZ3VsYXRvcnNbXSA9IHsgfSwgIH07Cj4gPiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHBjYTk0NTBfcmVndWxhdG9yX2Rlc2MgcGNhOTQ1MWFfcmVndWxhdG9yc1td ID0gewo+ID4gPiArICAgICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmRlc2MgPSB7Cj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAubmFtZSA9ICJidWNrMSIsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAub2ZfbWF0Y2ggPSBvZl9tYXRjaF9wdHIoIkJVQ0sxIiksCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAucmVndWxhdG9yc19ub2RlID0gb2ZfbWF0Y2hfcHRyKCJyZWd1bGF0b3Jz IiksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuaWQgPSBQQ0E5NDUwX0JVQ0sxLAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgLm9wcyA9ICZwY2E5NDUwX2R2c19idWNrX3JlZ3VsYXRv cl9vcHMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAudHlwZSA9IFJFR1VMQVRPUl9WT0xU QUdFLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm5fdm9sdGFnZXMgPSBQQ0E5NDUwX0JV Q0sxX1ZPTFRBR0VfTlVNLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmxpbmVhcl9yYW5n ZXMgPSBwY2E5NDUwX2R2c19idWNrX3ZvbHRzLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg Lm5fbGluZWFyX3JhbmdlcyA9Cj4gPiAKPiA+IEFSUkFZX1NJWkUocGNhOTQ1MF9kdnNfYnVja192 b2x0cyksCj4gPiAKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC52c2VsX3JlZyA9IFBDQTk0 NTBfUkVHX0JVQ0sxT1VUX0RWUzAsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAudnNlbF9t YXNrID0gQlVDSzFPVVRfRFZTMF9NQVNLLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmVu YWJsZV9yZWcgPSBQQ0E5NDUwX1JFR19CVUNLMUNUUkwsCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAuZW5hYmxlX21hc2sgPSBCVUNLMV9FTk1PREVfTUFTSywKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgIC5lbmFibGVfdmFsID0gQlVDS19FTk1PREVfT05SRVEsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAucmFtcF9tYXNrID0gQlVDSzFfUkFNUF9NQVNLLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgLnJhbXBfZGVsYXlfdGFibGUgPQo+ID4gCj4gPiBwY2E5NDUwX2R2c19i dWNrX3JhbXBfdGFibGUsCj4gPiAKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5uX3JhbXBf dmFsdWVzID0KPiA+IAo+ID4gQVJSQVlfU0laRShwY2E5NDUwX2R2c19idWNrX3JhbXBfdGFibGUp LAo+ID4gCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAub3duZXIgPSBUSElTX01PRFVMRSwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5vZl9wYXJzZV9jYiA9IHBjYTk0NTBfc2V0X2R2 c19sZXZlbHMsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4gKyAgICAgICAgICAgICAuZHZz ID0gewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnJ1bl9yZWcgPSBQQ0E5NDUwX1JFR19C VUNLMU9VVF9EVlMwLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnJ1bl9tYXNrID0gQlVD SzFPVVRfRFZTMF9NQVNLLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnN0YW5kYnlfcmVn ID0gUENBOTQ1MF9SRUdfQlVDSzFPVVRfRFZTMSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IC5zdGFuZGJ5X21hc2sgPSBCVUNLMU9VVF9EVlMxX01BU0ssCj4gPiA+ICsgICAgICAgICAgICAg fSwKPiA+ID4gKyAgICAgfSwKPiA+ID4gKyAgICAgewo+ID4gPiArICAgICAgICAgICAgIC5kZXNj ID0gewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm5hbWUgPSAiYnVjazFfdHJpbSIsCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAub2ZfbWF0Y2ggPSBvZl9tYXRjaF9wdHIoIkJVQ0sx IiksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAucmVndWxhdG9yc19ub2RlID0gb2ZfbWF0 Y2hfcHRyKCJyZWd1bGF0b3JzIiksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuaWQgPSBQ Q0E5NDUwX0JVQ0sxLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm9wcyA9ICZwY2E5NDUw X2R2c19idWNrX3JlZ3VsYXRvcl9vcHMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAudHlw ZSA9IFJFR1VMQVRPUl9WT0xUQUdFLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm5fdm9s dGFnZXMgPSBQQ0E5NDUwX0JVQ0sxX1ZPTFRBR0VfTlVNLAo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgLmxpbmVhcl9yYW5nZXMgPSBwY2E5NDUwX3RyaW1fZHZzX2J1Y2tfdm9sdHMsCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAubl9saW5lYXJfcmFuZ2VzID0KPiA+IAo+ID4gQVJSQVlf U0laRShwY2E5NDUwX3RyaW1fZHZzX2J1Y2tfdm9sdHMpLAo+ID4gCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAudnNlbF9yZWcgPSBQQ0E5NDUwX1JFR19CVUNLMU9VVF9EVlMwLAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgLnZzZWxfbWFzayA9IEJVQ0sxT1VUX0RWUzBfTUFTSywKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfcmVnID0gUENBOTQ1MF9SRUdfQlVDSzFD VFJMLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmVuYWJsZV9tYXNrID0gQlVDSzFfRU5N T0RFX01BU0ssCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX3ZhbCA9IEJVQ0tf RU5NT0RFX09OUkVRLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnJhbXBfbWFzayA9IEJV Q0sxX1JBTVBfTUFTSywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5yYW1wX2RlbGF5X3Rh YmxlID0KPiA+IAo+ID4gcGNhOTQ1MF9kdnNfYnVja19yYW1wX3RhYmxlLAo+ID4gCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAubl9yYW1wX3ZhbHVlcyA9Cj4gPiAKPiA+IEFSUkFZX1NJWkUo cGNhOTQ1MF9kdnNfYnVja19yYW1wX3RhYmxlKSwKPiA+IAo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAu b2ZfcGFyc2VfY2IgPSBwY2E5NDUwX3NldF9kdnNfbGV2ZWxzLAo+ID4gPiArICAgICAgICAgICAg IH0sCj4gPiA+ICsgICAgICAgICAgICAgLmR2cyA9IHsKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIC5ydW5fcmVnID0gUENBOTQ1MF9SRUdfQlVDSzFPVVRfRFZTMCwKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIC5ydW5fbWFzayA9IEJVQ0sxT1VUX0RWUzBfTUFTSywKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgIC5zdGFuZGJ5X3JlZyA9IFBDQTk0NTBfUkVHX0JVQ0sxT1VUX0RWUzEs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuc3RhbmRieV9tYXNrID0gQlVDSzFPVVRfRFZT MV9NQVNLLAo+ID4gPiArICAgICAgICAgICAgIH0sCj4gPiA+ICsgICAgIH0sCj4gPiA+ICsgICAg IHsKPiA+ID4gKyAgICAgICAgICAgICAuZGVzYyA9IHsKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIC5uYW1lID0gImJ1Y2syIiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5vZl9tYXRj aCA9IG9mX21hdGNoX3B0cigiQlVDSzIiKSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5y ZWd1bGF0b3JzX25vZGUgPSBvZl9tYXRjaF9wdHIoInJlZ3VsYXRvcnMiKSwKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgIC5pZCA9IFBDQTk0NTBfQlVDSzIsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAub3BzID0gJnBjYTk0NTBfZHZzX2J1Y2tfcmVndWxhdG9yX29wcywKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIC50eXBlID0gUkVHVUxBVE9SX1ZPTFRBR0UsCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAubl92b2x0YWdlcyA9IFBDQTk0NTBfQlVDSzJfVk9MVEFHRV9OVU0s Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAubGluZWFyX3JhbmdlcyA9IHBjYTk0NTBfZHZz X2J1Y2tfdm9sdHMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAubl9saW5lYXJfcmFuZ2Vz ID0KPiA+IAo+ID4gQVJSQVlfU0laRShwY2E5NDUwX2R2c19idWNrX3ZvbHRzKSwKPiA+IAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgLnZzZWxfcmVnID0gUENBOTQ1MF9SRUdfQlVDSzJPVVRf RFZTMCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC52c2VsX21hc2sgPSBCVUNLMk9VVF9E VlMwX01BU0ssCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX3JlZyA9IFBDQTk0 NTBfUkVHX0JVQ0syQ1RSTCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfbWFz ayA9IEJVQ0syX0VOTU9ERV9NQVNLLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmVuYWJs ZV92YWwgPSBCVUNLX0VOTU9ERV9PTlJFUV9TVEJZUkVRLAo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgLnJhbXBfbWFzayA9IEJVQ0syX1JBTVBfTUFTSywKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIC5yYW1wX2RlbGF5X3RhYmxlID0KPiA+IAo+ID4gcGNhOTQ1MF9kdnNfYnVja19yYW1w X3RhYmxlLAo+ID4gCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAubl9yYW1wX3ZhbHVlcyA9 Cj4gPiAKPiA+IEFSUkFZX1NJWkUocGNhOTQ1MF9kdnNfYnVja19yYW1wX3RhYmxlKSwKPiA+IAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAub2ZfcGFyc2VfY2IgPSBwY2E5NDUwX3NldF9kdnNfbGV2ZWxz LAo+ID4gPiArICAgICAgICAgICAgIH0sCj4gPiA+ICsgICAgICAgICAgICAgLmR2cyA9IHsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIC5ydW5fcmVnID0gUENBOTQ1MF9SRUdfQlVDSzJPVVRf RFZTMCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5ydW5fbWFzayA9IEJVQ0syT1VUX0RW UzBfTUFTSywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5zdGFuZGJ5X3JlZyA9IFBDQTk0 NTBfUkVHX0JVQ0syT1VUX0RWUzEsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuc3RhbmRi eV9tYXNrID0gQlVDSzJPVVRfRFZTMV9NQVNLLAo+ID4gPiArICAgICAgICAgICAgIH0sCj4gPiA+ ICsgICAgIH0sCj4gPiA+ICsgICAgIHsKPiA+ID4gKyAgICAgICAgICAgICAuZGVzYyA9IHsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIC5uYW1lID0gImJ1Y2s0IiwKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIC5vZl9tYXRjaCA9IG9mX21hdGNoX3B0cigiQlVDSzQiKSwKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIC5yZWd1bGF0b3JzX25vZGUgPSBvZl9tYXRjaF9wdHIoInJlZ3Vs YXRvcnMiKSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5pZCA9IFBDQTk0NTBfQlVDSzQs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAub3BzID0gJnBjYTk0NTBfYnVja19yZWd1bGF0 b3Jfb3BzLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnR5cGUgPSBSRUdVTEFUT1JfVk9M VEFHRSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5uX3ZvbHRhZ2VzID0gUENBOTQ1MF9C VUNLNF9WT0xUQUdFX05VTSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5saW5lYXJfcmFu Z2VzID0gcGNhOTQ1MF9idWNrX3ZvbHRzLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm5f bGluZWFyX3JhbmdlcyA9Cj4gPiAKPiA+IEFSUkFZX1NJWkUocGNhOTQ1MF9idWNrX3ZvbHRzKSwK PiA+IAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnZzZWxfcmVnID0gUENBOTQ1MF9SRUdf QlVDSzRPVVQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAudnNlbF9tYXNrID0gQlVDSzRP VVRfTUFTSywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfcmVnID0gUENBOTQ1 MF9SRUdfQlVDSzRDVFJMLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmVuYWJsZV9tYXNr ID0gQlVDSzRfRU5NT0RFX01BU0ssCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuZW5hYmxl X3ZhbCA9IEJVQ0tfRU5NT0RFX09OUkVRLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm93 bmVyID0gVEhJU19NT0RVTEUsCj4gPiA+ICsgICAgICAgICAgICAgfSwKPiA+ID4gKyAgICAgfSwK PiA+ID4gKyAgICAgewo+ID4gPiArICAgICAgICAgICAgIC5kZXNjID0gewo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgLm5hbWUgPSAiYnVjazUiLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgLm9mX21hdGNoID0gb2ZfbWF0Y2hfcHRyKCJCVUNLNSIpLAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgLnJlZ3VsYXRvcnNfbm9kZSA9IG9mX21hdGNoX3B0cigicmVndWxhdG9ycyIpLAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmlkID0gUENBOTQ1MF9CVUNLNSwKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIC5vcHMgPSAmcGNhOTQ1MF9idWNrX3JlZ3VsYXRvcl9vcHMsCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAudHlwZSA9IFJFR1VMQVRPUl9WT0xUQUdFLAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgLm5fdm9sdGFnZXMgPSBQQ0E5NDUwX0JVQ0s1X1ZPTFRB R0VfTlVNLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmxpbmVhcl9yYW5nZXMgPSBwY2E5 NDUwX2J1Y2tfdm9sdHMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAubl9saW5lYXJfcmFu Z2VzID0KPiA+IAo+ID4gQVJSQVlfU0laRShwY2E5NDUwX2J1Y2tfdm9sdHMpLAo+ID4gCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAudnNlbF9yZWcgPSBQQ0E5NDUwX1JFR19CVUNLNU9VVCwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC52c2VsX21hc2sgPSBCVUNLNU9VVF9NQVNLLAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmVuYWJsZV9yZWcgPSBQQ0E5NDUwX1JFR19CVUNL NUNUUkwsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX21hc2sgPSBCVUNLNV9F Tk1PREVfTUFTSywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfdmFsID0gQlVD S19FTk1PREVfT05SRVEsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAub3duZXIgPSBUSElT X01PRFVMRSwKPiA+ID4gKyAgICAgICAgICAgICB9LAo+ID4gPiArICAgICB9LAo+ID4gPiArICAg ICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmRlc2MgPSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAubmFtZSA9ICJidWNrNiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAub2ZfbWF0 Y2ggPSBvZl9tYXRjaF9wdHIoIkJVQ0s2IiksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAu cmVndWxhdG9yc19ub2RlID0gb2ZfbWF0Y2hfcHRyKCJyZWd1bGF0b3JzIiksCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAuaWQgPSBQQ0E5NDUwX0JVQ0s2LAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgLm9wcyA9ICZwY2E5NDUwX2J1Y2tfcmVndWxhdG9yX29wcywKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgIC50eXBlID0gUkVHVUxBVE9SX1ZPTFRBR0UsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAubl92b2x0YWdlcyA9IFBDQTk0NTBfQlVDSzZfVk9MVEFHRV9OVU0sCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAubGluZWFyX3JhbmdlcyA9IHBjYTk0NTBfYnVja192 b2x0cywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5uX2xpbmVhcl9yYW5nZXMgPQo+ID4g Cj4gPiBBUlJBWV9TSVpFKHBjYTk0NTBfYnVja192b2x0cyksCj4gPiAKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIC52c2VsX3JlZyA9IFBDQTk0NTBfUkVHX0JVQ0s2T1VULAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgLnZzZWxfbWFzayA9IEJVQ0s2T1VUX01BU0ssCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAuZW5hYmxlX3JlZyA9IFBDQTk0NTBfUkVHX0JVQ0s2Q1RSTCwKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfbWFzayA9IEJVQ0s2X0VOTU9ERV9NQVNL LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmVuYWJsZV92YWwgPSBCVUNLX0VOTU9ERV9P TlJFUSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5vd25lciA9IFRISVNfTU9EVUxFLAo+ ID4gPiArICAgICAgICAgICAgIH0sCj4gPiA+ICsgICAgIH0sCj4gPiA+ICsgICAgIHsKPiA+ID4g KyAgICAgICAgICAgICAuZGVzYyA9IHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5uYW1l ID0gImxkbzEiLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm9mX21hdGNoID0gb2ZfbWF0 Y2hfcHRyKCJMRE8xIiksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAucmVndWxhdG9yc19u b2RlID0gb2ZfbWF0Y2hfcHRyKCJyZWd1bGF0b3JzIiksCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAuaWQgPSBQQ0E5NDUwX0xETzEsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAub3Bz ID0gJnBjYTk0NTBfbGRvX3JlZ3VsYXRvcl9vcHMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAudHlwZSA9IFJFR1VMQVRPUl9WT0xUQUdFLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg Lm5fdm9sdGFnZXMgPSBQQ0E5NDUwX0xETzFfVk9MVEFHRV9OVU0sCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAubGluZWFyX3JhbmdlcyA9IHBjYTk0NTBfbGRvMV92b2x0cywKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIC5uX2xpbmVhcl9yYW5nZXMgPQo+ID4gCj4gPiBBUlJBWV9TSVpF KHBjYTk0NTBfbGRvMV92b2x0cyksCj4gPiAKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC52 c2VsX3JlZyA9IFBDQTk0NTBfUkVHX0xETzFDVFJMLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgLnZzZWxfbWFzayA9IExETzFPVVRfTUFTSywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IC5lbmFibGVfcmVnID0gUENBOTQ1MF9SRUdfTERPMUNUUkwsCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAuZW5hYmxlX21hc2sgPSBMRE8xX0VOX01BU0ssCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAub3duZXIgPSBUSElTX01PRFVMRSwKPiA+ID4gKyAgICAgICAgICAgICB9LAo+ID4g PiArICAgICB9LAo+ID4gPiArICAgICB7Cj4gPiA+ICsgICAgICAgICAgICAgLmRlc2MgPSB7Cj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAubmFtZSA9ICJsZG80IiwKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIC5vZl9tYXRjaCA9IG9mX21hdGNoX3B0cigiTERPNCIpLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgLnJlZ3VsYXRvcnNfbm9kZSA9IG9mX21hdGNoX3B0cigicmVndWxh dG9ycyIpLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmlkID0gUENBOTQ1MF9MRE80LAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm9wcyA9ICZwY2E5NDUwX2xkb19yZWd1bGF0b3Jf b3BzLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnR5cGUgPSBSRUdVTEFUT1JfVk9MVEFH RSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5uX3ZvbHRhZ2VzID0gUENBOTQ1MF9MRE80 X1ZPTFRBR0VfTlVNLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLmxpbmVhcl9yYW5nZXMg PSBwY2E5NDUwX2xkbzM0X3ZvbHRzLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLm5fbGlu ZWFyX3JhbmdlcyA9Cj4gPiAKPiA+IEFSUkFZX1NJWkUocGNhOTQ1MF9sZG8zNF92b2x0cyksCj4g PiAKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC52c2VsX3JlZyA9IFBDQTk0NTBfUkVHX0xE TzRDVFJMLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnZzZWxfbWFzayA9IExETzRPVVRf TUFTSywKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfcmVnID0gUENBOTQ1MF9S RUdfTERPNENUUkwsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX21hc2sgPSBM RE80X0VOX01BU0ssCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAub3duZXIgPSBUSElTX01P RFVMRSwKPiA+ID4gKyAgICAgICAgICAgICB9LAo+ID4gPiArICAgICB9LAo+ID4gPiArICAgICB7 Cj4gPiA+ICsgICAgICAgICAgICAgLmRlc2MgPSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAubmFtZSA9ICJsZG81IiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC5vZl9tYXRjaCA9 IG9mX21hdGNoX3B0cigiTERPNSIpLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgLnJlZ3Vs YXRvcnNfbm9kZSA9IG9mX21hdGNoX3B0cigicmVndWxhdG9ycyIpLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgLmlkID0gUENBOTQ1MF9MRE81LAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgLm9wcyA9ICZwY2E5NDUwX2xkb19yZWd1bGF0b3Jfb3BzLAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgLnR5cGUgPSBSRUdVTEFUT1JfVk9MVEFHRSwKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIC5uX3ZvbHRhZ2VzID0gUENBOTQ1MF9MRE81X1ZPTFRBR0VfTlVNLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgLmxpbmVhcl9yYW5nZXMgPSBwY2E5NDUwX2xkbzVfdm9sdHMsCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAubl9saW5lYXJfcmFuZ2VzID0KPiA+IAo+ID4gQVJS QVlfU0laRShwY2E5NDUwX2xkbzVfdm9sdHMpLAo+ID4gCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAudnNlbF9yZWcgPSBQQ0E5NDUwX1JFR19MRE81Q1RSTF9ILAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgLnZzZWxfbWFzayA9IExETzVIT1VUX01BU0ssCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAuZW5hYmxlX3JlZyA9IFBDQTk0NTBfUkVHX0xETzVDVFJMX0gsCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX21hc2sgPSBMRE81SF9FTl9NQVNLLAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsCj4gPiA+ICsgICAgICAg ICAgICAgfSwKPiA+ID4gKyAgICAgfSwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gCj4gPiA+ICBz dGF0aWMgaXJxcmV0dXJuX3QgcGNhOTQ1MF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRh KSAgewo+ID4gPiAgCj4gPiA+ICAgICAgIHN0cnVjdCBwY2E5NDUwICpwY2E5NDUwID0gZGF0YTsK PiA+ID4gCj4gPiA+IEBAIC03MDgsOCArOTE3LDkgQEAgc3RhdGljIGludCBwY2E5NDUwX2kyY19w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ID4gPiAqaTJjKQo+ID4gPiAKPiA+ID4gICAgICAgY29u c3Qgc3RydWN0IHBjYTk0NTBfcmVndWxhdG9yX2Rlc2MgICAgICpyZWd1bGF0b3JfZGVzYzsKPiA+ ID4gICAgICAgc3RydWN0IHJlZ3VsYXRvcl9jb25maWcgY29uZmlnID0geyB9Owo+ID4gPiAgICAg ICBzdHJ1Y3QgcGNhOTQ1MCAqcGNhOTQ1MDsKPiA+ID4gCj4gPiA+IC0gICAgIHVuc2lnbmVkIGlu dCBkZXZpY2VfaWQsIGk7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGludCBkZXZpY2VfaWQsIGksIHZh bDsKPiA+ID4gCj4gPiA+ICAgICAgIHVuc2lnbmVkIGludCByZXNldF9jdHJsOwo+ID4gPiAKPiA+ ID4gKyAgICAgYm9vbCBwbWljX3RyaW0gPSBmYWxzZTsKPiA+ID4gCj4gPiA+ICAgICAgIGludCBy ZXQ7Cj4gPiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+ICAgICAgIGlmICghaTJjLT5pcnEpIHsKPiA+ID4g Cj4gPiA+IEBAIC03MjEsNiArOTMxLDIyIEBAIHN0YXRpYyBpbnQgcGNhOTQ1MF9pMmNfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiA+ID4gKmkyYykKPiA+ID4gCj4gPiA+ICAgICAgIGlmICghcGNh OTQ1MCkKPiA+ID4gICAgICAgCj4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4g PiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+ICsgICAgIHBjYTk0NTAtPnJlZ21hcCA9IGRldm1fcmVnbWFw X2luaXRfaTJjKGkyYywKPiA+ID4gKwo+ID4gCj4gPiAmcGNhOTQ1MF9yZWdtYXBfY29uZmlnKTsK PiA+IAo+ID4gPiArICAgICBpZiAoSVNfRVJSKHBjYTk0NTAtPnJlZ21hcCkpIHsKPiA+ID4gKyAg ICAgICAgICAgICBkZXZfZXJyKCZpMmMtPmRldiwgInJlZ21hcCBpbml0aWFsaXphdGlvbiBmYWls ZWRcbiIpOwo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHBjYTk0NTAtPnJlZ21h cCk7Cj4gPiA+ICsgICAgIH0KPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSByZWdtYXBfcmVhZChw Y2E5NDUwLT5yZWdtYXAsIFBDQTk0NTBfUkVHX1BXUkNUUkwsCj4gPiAKPiA+ICZ2YWwpOwo+ID4g Cj4gPiA+ICsgICAgIGlmIChyZXQpIHsKPiA+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKCZpMmMt PmRldiwgIlJlYWQgZGV2aWNlIGlkIGVycm9yXG4iKTsKPiA+ID4gKyAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKHZhbCAmIFBDQTk0 NTBfUkVHX1BXUkNUUkxfVE9GRl9ERUIpCj4gPiA+ICsgICAgICAgICAgICAgcG1pY190cmltID0g dHJ1ZTsKPiA+Cj4gPgo+ID4KPiA+IFBDQTk0NTBfUkVHX1BXUkNUUkwgaXMgYSByZWFkL3dyaXRl IHJlZ2lzdGVyLiBIb3cgaXMgaXQgcG9zc2libGUgdG8gZGV0ZWN0Cj4gPiBhIGNoaXAgcmV2aXNp b24gdXNpbmcgYSBiaXQgd2hpY2ggY2FuIGJlIGNoYW5nZWQgYnkgc29mdHdhcmUgZS5nLgo+ID4g Ym9vdGxvYWRlcj8gRGVzcGl0ZSB0aGF0IHRoaXMgYml0IHNldHMgZGVib3VuY2UgdGltZSBmb3Ig UE1JQ19PTl9SRVEsIGhvdwo+ID4gaXMgdGhpcyByZWxhdGVkIHRvIEJVQ0sxIHZvbHRhZ2UgcmFu Z2U/Cj4gCj4gVGhlcmUgYXJlIG9sZCBhbmQgbmV3IHR3byBraW5kIFBNSUMgcGNhOTQ1MWEuIAoK VGhlcmUgaXMgb25seSBvbmUgcGFydCBtZW50aW9uZWQgaW4gdGhlIG9yZGVyaW5nIG9wdGlvbnMu IEhvdyBjYW4gSSAKZGlzdGluZ3Vpc2ggdGhlbT8gQW55IGNoaXAgSUQsIGRhdGUgY29kZXMsIG1h cmtpbmdzPwoKPiBUaGlzIGJpdCBzZXRzIGRlYm91bmNlIHRpbWUgaW4KPiBQQ0E5NDUwX1JFR19Q V1JDVFJMIHdhcyBzZXQgZGlmZmVyZW50IHZhbHVlIGJ5IGhhcmR3YXJlIGluIG9yZGVyIHRvIG9u bHkKPiBkaXN0aW5ndWlzaCB0aGUgb2xkIGFuZCBuZXcgUE1JQy4gVGhpcyBiaXQgaXNuJ3QgcmVs YXRlZCB0byB0aGUgQlVDSzEKPiB2b2x0YWdlIHJhbmdlLiBJZiB0aGUgcG1pY190cmltIGlzIHRy dWUgdGhhdCBtZWFucyBpdCdzIG5ldyBwY2E5NDUxYS4KCkJ1dCB0aGlzIGJpdCBpcyB3cml0YWJs ZS4gSG93IGRvIHlvdSBrbm93IGl0IGhhcyBub3QgYmVlbiBtb2RpZmllZCBzaW5jZSAKcmVzZXQ/ CgpCZXN0IHJlZ2FyZHMsCkFsZXhhbmRlcgoKPiA+ID4gKwo+ID4gPiAKPiA+ID4gICAgICAgc3dp dGNoICh0eXBlKSB7Cj4gPiA+ICAgICAgIGNhc2UgUENBOTQ1MF9UWVBFX1BDQTk0NTBBOgo+ID4g PiAgICAgICAKPiA+ID4gICAgICAgICAgICAgICByZWd1bGF0b3JfZGVzYyA9IHBjYTk0NTBhX3Jl Z3VsYXRvcnM7IEBAIC03MzAsNiArOTU2LDEwCj4gPiA+IAo+ID4gPiBAQCBzdGF0aWMgaW50IHBj YTk0NTBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gPiA+IAo+ID4gPiAgICAg ICAgICAgICAgIHJlZ3VsYXRvcl9kZXNjID0gcGNhOTQ1MGJjX3JlZ3VsYXRvcnM7Cj4gPiA+ICAg ICAgICAgICAgICAgcGNhOTQ1MC0+cmNudCA9IEFSUkFZX1NJWkUocGNhOTQ1MGJjX3JlZ3VsYXRv cnMpOwo+ID4gPiAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiAKPiA+ID4gKyAgICAgY2FzZSBQ Q0E5NDUwX1RZUEVfUENBOTQ1MUE6Cj4gPiA+ICsgICAgICAgICAgICAgcmVndWxhdG9yX2Rlc2Mg PSBwY2E5NDUxYV9yZWd1bGF0b3JzOwo+ID4gPiArICAgICAgICAgICAgIHBjYTk0NTAtPnJjbnQg PSBBUlJBWV9TSVpFKHBjYTk0NTFhX3JlZ3VsYXRvcnMpOwo+ID4gPiArICAgICAgICAgICAgIGJy ZWFrOwo+ID4gPiAKPiA+ID4gICAgICAgZGVmYXVsdDoKPiA+ID4gICAgICAgCj4gPiA+ICAgICAg ICAgICAgICAgZGV2X2VycigmaTJjLT5kZXYsICJVbmtub3duIGRldmljZSB0eXBlIik7Cj4gPiA+ ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+IAo+ID4gPiBAQCAtNzQxLDEzICs5 NzEsNiBAQCBzdGF0aWMgaW50IHBjYTk0NTBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4g PiA+ICppMmMpCj4gPiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+ICAgICAgIGRldl9zZXRfZHJ2ZGF0YSgm aTJjLT5kZXYsIHBjYTk0NTApOwo+ID4gPgo+ID4gPgo+ID4gPgo+ID4gPiAtICAgICBwY2E5NDUw LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsCj4gPiA+IC0KPiA+IAo+ID4gJnBj YTk0NTBfcmVnbWFwX2NvbmZpZyk7Cj4gPiAKPiA+ID4gLSAgICAgaWYgKElTX0VSUihwY2E5NDUw LT5yZWdtYXApKSB7Cj4gPiA+IC0gICAgICAgICAgICAgZGV2X2VycigmaTJjLT5kZXYsICJyZWdt YXAgaW5pdGlhbGl6YXRpb24gZmFpbGVkXG4iKTsKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihwY2E5NDUwLT5yZWdtYXApOwo+ID4gPiAtICAgICB9Cj4gPiA+IC0KPiA+ID4gCj4g PiA+ICAgICAgIHJldCA9IHJlZ21hcF9yZWFkKHBjYTk0NTAtPnJlZ21hcCwgUENBOTQ1MF9SRUdf REVWX0lELAo+ID4gCj4gPiAmZGV2aWNlX2lkKTsKPiA+IAo+ID4gPiAgICAgICBpZiAocmV0KSB7 Cj4gPiA+ICAgICAgIAo+ID4gPiAgICAgICAgICAgICAgIGRldl9lcnIoJmkyYy0+ZGV2LCAiUmVh ZCBkZXZpY2UgaWQgZXJyb3JcbiIpOyBAQCAtNzU2LDcKPiA+ID4gCj4gPiA+ICs5NzksOCBAQCBz dGF0aWMgaW50IHBjYTk0NTBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gPiA+ Cj4gPiA+Cj4gPiA+Cj4gPiA+ICAgICAgIC8qIENoZWNrIHlvdXIgYm9hcmQgYW5kIGR0cyBmb3Ig bWF0Y2ggdGhlIHJpZ2h0IHBtaWMgKi8KPiA+ID4gICAgICAgaWYgKCgoZGV2aWNlX2lkID4+IDQp ICE9IDB4MSAmJiB0eXBlID09IFBDQTk0NTBfVFlQRV9QQ0E5NDUwQSkgfHwKPiA+ID4gCj4gPiA+ IC0gICAgICAgICAoKGRldmljZV9pZCA+PiA0KSAhPSAweDMgJiYgdHlwZSA9PSBQQ0E5NDUwX1RZ UEVfUENBOTQ1MEJDKSkKPiA+IAo+ID4gewo+ID4gCj4gPiA+ICsgICAgICAgICAoKGRldmljZV9p ZCA+PiA0KSAhPSAweDMgJiYgdHlwZSA9PSBQQ0E5NDUwX1RZUEVfUENBOTQ1MEJDKQo+ID4gPiAK PiA+IHx8Cj4gPiB8fAo+ID4gPiArICAgICAgICAgKChkZXZpY2VfaWQgPj4gNCkgIT0gMHg5ICYm IHR5cGUgPT0gUENBOTQ1MF9UWVBFX1BDQTk0NTFBKSkKPiA+ID4gKyB7Cj4gPiA+IAo+ID4gPiAg ICAgICAgICAgICAgIGRldl9lcnIoJmkyYy0+ZGV2LCAiRGV2aWNlIGlkKCV4KSBtaXNtYXRjaGVk XG4iLAo+ID4gPiAgICAgICAgICAgICAgIAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgZGV2 aWNlX2lkID4+IDQpOwo+ID4gPiAgICAgICAgICAgICAgIAo+ID4gPiAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ID4gPiAKPiA+ID4gQEAgLTc2Nyw3ICs5OTEsMTYgQEAgc3RhdGljIGlu dCBwY2E5NDUwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ID4gPiAqaTJjKQo+ID4gPiAK PiA+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldjsKPiA+ID4gICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcGNhOTQ1MF9yZWd1bGF0b3JfZGVzYyAqcjsKPiA+ID4K PiA+ID4KPiA+ID4KPiA+ID4gLSAgICAgICAgICAgICByID0gJnJlZ3VsYXRvcl9kZXNjW2ldOwo+ ID4gPiArICAgICAgICAgICAgIGlmICh0eXBlID09IFBDQTk0NTBfVFlQRV9QQ0E5NDUxQSAmJgo+ ID4gPiArICAgICAgICAgICAgICAgICAhc3RyY21wKCgmcmVndWxhdG9yX2Rlc2NbaV0pLT5kZXNj Lm5hbWUsICJidWNrMSIpICYmCj4gPiAKPiA+IHBtaWNfdHJpbSkgewo+ID4gCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICByID0gJnJlZ3VsYXRvcl9kZXNjW2kgKyAxXTsKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGkgPSBpICsgMTsKPiA+ID4gKyAgICAgICAgICAgICB9IGVsc2UgaWYg KHR5cGUgPT0gUENBOTQ1MF9UWVBFX1BDQTk0NTFBICYmCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAhc3RyY21wKCgmcmVndWxhdG9yX2Rlc2NbaV0pLT5kZXNjLm5hbWUsCj4gPiAKPiA+ ICJidWNrMSIpKSB7Cj4gPiAKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHIgPSAmcmVndWxh dG9yX2Rlc2NbaV07Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDE7Cj4gPgo+ ID4KPiA+Cj4gPiBJIHdvdWxkIHB1dCB0aGlzIGluIGEgc2luZ2xlICd0eXBlID09IFBDQTk0NTBf VFlQRV9QQ0E5NDUxQScgYnJhbmNoLCB0bwo+ID4gaW5kaWNhdGUgdGhhdCBvbmx5IFBDQTk0NTFB IG5lZWRzIHNvbWUga2luZCBvZiBzcGVjaWFsIGhhbmRsaW5nLgo+IAo+IFllcywgdGhpcyBtYWtl cyB0aGUgbG9naWMgY2xlYXJlci4gSSB3aWxsIGNoYW5nZSBpbiBuZXh0IHZlcnNpb24uCj4gCj4g Pgo+ID4KPiA+ID4gKyAgICAgICAgICAgICB9IGVsc2UKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHIgPSAmcmVndWxhdG9yX2Rlc2NbaV07Cj4gPiA+IAo+ID4gPiAgICAgICAgICAgICAgIGRl c2MgPSAmci0+ZGVzYzsKPiA+ID4KPiA+ID4KPiA+ID4KPiA+ID4gICAgICAgICAgICAgICBjb25m aWcucmVnbWFwID0gcGNhOTQ1MC0+cmVnbWFwOyBAQCAtODQ3LDcgKzEwODAsOAo+ID4gCj4gPiBA QAo+ID4gCj4gPiA+IHN0YXRpYyBpbnQgcGNhOTQ1MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmkyYykKPiA+ID4gCj4gPiA+ICAgICAgIH0KPiA+ID4KPiA+ID4KPiA+ID4KPiA+ID4gICAg ICAgZGV2X2luZm8oJmkyYy0+ZGV2LCAiJXMgcHJvYmVkLlxuIiwKPiA+ID4gCj4gPiA+IC0gICAg ICAgICAgICAgdHlwZSA9PSBQQ0E5NDUwX1RZUEVfUENBOTQ1MEEgPyAicGNhOTQ1MGEiIDoKPiA+ IAo+ID4gInBjYTk0NTBiYyIpOwo+ID4gCj4gPiA+ICsgICAgICAgICAgICAgdHlwZSA9PSBQQ0E5 NDUwX1RZUEVfUENBOTQ1MEEgPyAicGNhOTQ1MGEiIDoKPiA+ID4gKyAgICAgICAgICAgICAodHlw ZSA9PSBQQ0E5NDUwX1RZUEVfUENBOTQ1MUEgPyAicGNhOTQ1MWEiIDoKPiA+IAo+ID4gInBjYTk0 NTBiYyIpKTsKPiA+IAo+ID4gPgo+ID4gPgo+ID4gPiAgICAgICByZXR1cm4gMDsKPiA+ID4gIAo+ ID4gPiAgfQo+ID4gPiAKPiA+ID4gQEAgLTg2NSw2ICsxMDk5LDEwIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkCj4gPiA+IHBjYTk0NTBfb2ZfbWF0Y2hbXSA9IHsgLmNvbXBhdGli bGUgPSAibnhwLHBjYTk0NTBjIiwKPiA+ID4gCj4gPiA+ICAgICAgICAgICAgICAgLmRhdGEgPSAo dm9pZCAqKVBDQTk0NTBfVFlQRV9QQ0E5NDUwQkMsCj4gPiA+ICAgICAgIAo+ID4gPiAgICAgICB9 LAo+ID4gPiAKPiA+ID4gKyAgICAgewo+ID4gPiArICAgICAgICAgICAgIC5jb21wYXRpYmxlID0g Im54cCxwY2E5NDUxYSIsCj4gPiA+ICsgICAgICAgICAgICAgLmRhdGEgPSAodm9pZCAqKVBDQTk0 NTBfVFlQRV9QQ0E5NDUxQSwKPiA+ID4gKyAgICAgfSwKPiA+ID4gCj4gPiA+ICAgICAgIHsgfQo+ ID4gPiAgCj4gPiA+ICB9Owo+ID4gPiAgTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcGNhOTQ1MF9v Zl9tYXRjaCk7IGRpZmYgLS1naXQKPiA+ID4gCj4gPiA+IGEvaW5jbHVkZS9saW51eC9yZWd1bGF0 b3IvcGNhOTQ1MC5oCj4gPiA+IGIvaW5jbHVkZS9saW51eC9yZWd1bGF0b3IvcGNhOTQ1MC5oIGlu ZGV4IDNjMDFjMmJmODRmNS4uNWRkNzlmNTIxNjVhCj4gPiA+IDEwMDY0NAo+ID4gPiAtLS0gYS9p bmNsdWRlL2xpbnV4L3JlZ3VsYXRvci9wY2E5NDUwLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9saW51 eC9yZWd1bGF0b3IvcGNhOTQ1MC5oCj4gPiA+IEBAIC05LDYgKzksNyBAQAo+ID4gPiAKPiA+ID4g IGVudW0gcGNhOTQ1MF9jaGlwX3R5cGUgewo+ID4gPiAgCj4gPiA+ICAgICAgIFBDQTk0NTBfVFlQ RV9QQ0E5NDUwQSA9IDAsCj4gPiA+ICAgICAgIFBDQTk0NTBfVFlQRV9QQ0E5NDUwQkMsCj4gPiA+ IAo+ID4gPiArICAgICBQQ0E5NDUwX1RZUEVfUENBOTQ1MUEsCj4gPiA+IAo+ID4gPiAgICAgICBQ Q0E5NDUwX1RZUEVfQU1PVU5ULAo+ID4gPiAgCj4gPiA+ICB9Owo+ID4gPgo+ID4gPgo+ID4gPgo+ ID4gPiBAQCAtOTMsNiArOTQsNyBAQCBlbnVtIHsKPiA+ID4gCj4gPiA+ICAgICAgIFBDQTk0NTBf TUFYX1JFR0lTVEVSICAgICAgICA9IDB4MkYsCj4gPiA+ICAKPiA+ID4gIH07Cj4gPiA+Cj4gPiA+ Cj4gPiA+Cj4gPiA+ICsjZGVmaW5lIFBDQTk0NTBfUkVHX1BXUkNUUkxfVE9GRl9ERUIgICAgQklU KDUpCj4gPgo+ID4KPiA+Cj4gPiBOZXdsaW5lIGhlcmUgcGxlYXNlLgo+IAo+IE9rLCB3aWxsIG1v ZGlmeSBpdC4KPiBUaGFuayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIGNvbW1lbnRzIGFuZCBlZmZv cnRzLgo+IEJSCj4gSm95IFpvdQo+IAo+ID4KPiA+Cj4gPiBCZXN0IHJlZ2FyZHMsCj4gPiBBbGV4 YW5kZXIKPiA+Cj4gPgo+ID4KPiA+ID4gIC8qIFBDQTk0NTAgQlVDSyBFTk1PREUgYml0cyAqLwo+ ID4gPiAgI2RlZmluZSBCVUNLX0VOTU9ERV9PRkYgICAgICAgICAgICAgICAgICAgICAgMHgwMAo+ ID4gPiAgI2RlZmluZSBCVUNLX0VOTU9ERV9PTlJFUSAgICAgICAgICAgIDB4MDEKPiA+Cj4gPgo+ ID4KPiA+Cj4gPiAtLQo+ID4gVFEtU3lzdGVtcyBHbWJIIHwgTcO8aGxzdHJhw59lIDIsIEd1dCBE ZWxsaW5nIHwgODIyMjkgU2VlZmVsZCwgR2VybWFueQo+ID4gQW10c2dlcmljaHQgTcO8bmNoZW4s IEhSQiAxMDUwMTgKPiA+IEdlc2Now6RmdHNmw7xocmVyOiBEZXRsZWYgU2NobmVpZGVyLCBSw7xk aWdlciBTdGFobCwgU3RlZmFuIFNjaG5laWRlcgo+ID4gaHR0cDovL3d3dy50cS0vCj4gPiBncm91 cC5jb20lMkYmZGF0YT0wNSU3QzAxJTdDam95LnpvdSU0MG54cC5jb20lN0MxZWNiZTc1YzQzMmQ0 NjQKPiA+IGNiNDVmMDhkYjYxY2IwOGJjJTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkOTljNWMzMDE2 MzUlN0MwJTdDMCU3Cj4gPiBDNjM4MjExMjk2ODgzMDUyNzM4JTdDVW5rbm93biU3Q1RXRnBiR1pz YjNkOGV5SldJam9pTUM0d0xqQXcKPiA+IE1EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazFo YVd3aUxDSlhWQ0k2TW4wJTNEJTdDMzAwMCU3QyU3QyUKPiA+IDdDJnNkYXRhPW16N3Z0QmlEdkF4 WTlGTzd0VFpPM29QQkE4enZZUzZmOGhMZ0F3clU4dWslM0QmcmVzZXJ2ZWQKPiA+ID0wCj4gPgo+ ID4KPiAKPiAKCgotLSAKVFEtU3lzdGVtcyBHbWJIIHwgTcO8aGxzdHJhw59lIDIsIEd1dCBEZWxs aW5nIHwgODIyMjkgU2VlZmVsZCwgR2VybWFueQpBbXRzZ2VyaWNodCBNw7xuY2hlbiwgSFJCIDEw NTAxOApHZXNjaMOkZnRzZsO8aHJlcjogRGV0bGVmIFNjaG5laWRlciwgUsO8ZGlnZXIgU3RhaGws IFN0ZWZhbiBTY2huZWlkZXIKaHR0cDovL3d3dy50cS1ncm91cC5jb20vCgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 02FB2EB64DA for ; Wed, 5 Jul 2023 13:12:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229715AbjGENMy (ORCPT ); Wed, 5 Jul 2023 09:12:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231676AbjGENMw (ORCPT ); Wed, 5 Jul 2023 09:12:52 -0400 Received: from mx1.tq-group.com (mx1.tq-group.com [93.104.207.81]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E3421700; Wed, 5 Jul 2023 06:12:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1688562768; x=1720098768; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=u+CYWz+wrcDqdmitNpoma5P/Hi2wWpeXsryCS80wey4=; b=jZ7C2VT6VNRddGpy6yHIOoK/qjwEin8mwNjfO8SIKKFTDibIFNiM0cad ybgCuXYPoreiGjocv4Kib5y9QSzX3OlmsSEMvDKLe1hoIl7UKsfcOVXLO v8WT9eAknjA0UzV+OB20nEJ9XyRhD991E7OkFiD2Cmp4yzBU04M2M9mAr Hvn06LZrQaNzLWztdtZkx5/u+n9Av60X5pV+tEThAYoqK8XOXK3XN+7ku DJwZoZx0bJ/STnpHUi+GO+i3gZiQ7SAqSm/A+4esN9+hFJ4pPgOA/vvgh LR7ne13EsSrogyAGtkh2ibMwTd68XhofDmUSLi/q5c1z92XF7ivvOPbza A==; X-IronPort-AV: E=Sophos;i="6.01,183,1684792800"; d="scan'208";a="31771723" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 05 Jul 2023 15:12:46 +0200 Received: from steina-w.localnet (unknown [10.123.53.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by vtuxmail01.tq-net.de (Postfix) with ESMTPSA id 24CFD280078; Wed, 5 Jul 2023 15:12:46 +0200 (CEST) From: Alexander Stein To: Jacky Bai , "lgirdwood@gmail.com" , "broonie@kernel.org" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "conor+dt@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "linux-arm-kernel@lists.infradead.org" , Joy Zou Cc: "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v1 2/3] regulator: pca9450: add pca9451a support Date: Wed, 05 Jul 2023 15:12:45 +0200 Message-ID: <4630917.iIbC2pHGDl@steina-w> Organization: TQ-Systems GmbH In-Reply-To: References: <20230531065724.3671795-1-joy.zou@nxp.com> <3505527.iIbC2pHGDl@steina-w> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hello, Am Mittwoch, 5. Juli 2023, 08:50:24 CEST schrieb Joy Zou: >=20 > > -----Original Message----- > > From: Alexander Stein > > Sent: 2023=E5=B9=B45=E6=9C=8831=E6=97=A5 19:35 > > To: Jacky Bai ; lgirdwood@gmail.com; > > broonie@kernel.org; robh+dt@kernel.org; > > krzysztof.kozlowski+dt@linaro.org; > > conor+dt@kernel.org; shawnguo@kernel.org; s.hauer@pengutronix.de; > > linux-arm-kernel@lists.infradead.org > > Cc: kernel@pengutronix.de; festevam@gmail.com; dl-linux-imx > > ; devicetree@vger.kernel.org; > > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Joy > > Zou > > Subject: [EXT] Re: [PATCH v1 2/3] regulator: pca9450: add pca9451a > > support > > > > > > > > Caution: This is an external email. Please take care when clicking links > > or opening attachments. When in doubt, report the message using the > > 'Report this email' button > > > > > > > > > > Hi, > > > > > > > > Am Mittwoch, 31. Mai 2023, 08:57:23 CEST schrieb Joy Zou: > >=20 > > > Adding support for pmic pca9451a. > > > > > > > > > > > > This patch support old and new pmic pca9451a. The new pmic trimed > >=20 > > BUCK1. > >=20 > > > The default value of Toff_Deb is used to distinguish the old and new > > > pmic. > > > > > > > > > > > > Signed-off-by: Joy Zou > > > --- > > >=20 > > > drivers/regulator/pca9450-regulator.c | 262 > >=20 > > ++++++++++++++++++++++++-- > >=20 > > > include/linux/regulator/pca9450.h | 2 + > > > 2 files changed, 252 insertions(+), 12 deletions(-) > > > > > > > > > > > > diff --git a/drivers/regulator/pca9450-regulator.c > > > b/drivers/regulator/pca9450-regulator.c index > > > 91bfb7e026c9..654aa4fbe494 > > > 100644 > > > --- a/drivers/regulator/pca9450-regulator.c > > > +++ b/drivers/regulator/pca9450-regulator.c > > > @@ -104,7 +104,15 @@ static const struct regulator_ops > > > pca9450_ldo_regulator_ops =3D { * 0.60 to 2.1875V (12.5mV step) > > >=20 > > > */ > > > =20 > > > static const struct linear_range pca9450_dvs_buck_volts[] =3D { > > >=20 > > > - REGULATOR_LINEAR_RANGE(600000, 0x00, 0x7F, 12500), > > > + REGULATOR_LINEAR_RANGE(600000, 0x00, 0x7F, 12500), }; > > > + > > > +/* > > > + * BUCK1/3 > > > + * 0.65 to 2.2375V (12.5mV step) > > > > > > > > Reading this comment, it seems the same distinction needs to be done for > > BUCK3 as well, no? >=20 > Sorry for the late reply! > The BUCK1 and BUCK3 are dual phase, so don't need to be done for BUCK3. >=20 > > > > > > > + */ > > > +static const struct linear_range pca9450_trim_dvs_buck_volts[] =3D { > > > + REGULATOR_LINEAR_RANGE(650000, 0x00, 0x7F, 12500), > > >=20 > > > }; > > > > > > > > > > > > /* > > >=20 > > > @@ -663,6 +671,207 @@ static const struct pca9450_regulator_desc > > > pca9450bc_regulators[] =3D { }, }; > > > > > > > > > > > > +static const struct pca9450_regulator_desc pca9451a_regulators[] =3D= { > > > + { > > > + .desc =3D { > > > + .name =3D "buck1", > > > + .of_match =3D of_match_ptr("BUCK1"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_BUCK1, > > > + .ops =3D &pca9450_dvs_buck_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_BUCK1_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_dvs_buck_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_dvs_buck_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_BUCK1OUT_DVS0, > > > + .vsel_mask =3D BUCK1OUT_DVS0_MASK, > > > + .enable_reg =3D PCA9450_REG_BUCK1CTRL, > > > + .enable_mask =3D BUCK1_ENMODE_MASK, > > > + .enable_val =3D BUCK_ENMODE_ONREQ, > > > + .ramp_mask =3D BUCK1_RAMP_MASK, > > > + .ramp_delay_table =3D > >=20 > > pca9450_dvs_buck_ramp_table, > >=20 > > > + .n_ramp_values =3D > >=20 > > ARRAY_SIZE(pca9450_dvs_buck_ramp_table), > >=20 > > > + .owner =3D THIS_MODULE, > > > + .of_parse_cb =3D pca9450_set_dvs_levels, > > > + }, > > > + .dvs =3D { > > > + .run_reg =3D PCA9450_REG_BUCK1OUT_DVS0, > > > + .run_mask =3D BUCK1OUT_DVS0_MASK, > > > + .standby_reg =3D PCA9450_REG_BUCK1OUT_DVS1, > > > + .standby_mask =3D BUCK1OUT_DVS1_MASK, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "buck1_trim", > > > + .of_match =3D of_match_ptr("BUCK1"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_BUCK1, > > > + .ops =3D &pca9450_dvs_buck_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_BUCK1_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_trim_dvs_buck_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_trim_dvs_buck_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_BUCK1OUT_DVS0, > > > + .vsel_mask =3D BUCK1OUT_DVS0_MASK, > > > + .enable_reg =3D PCA9450_REG_BUCK1CTRL, > > > + .enable_mask =3D BUCK1_ENMODE_MASK, > > > + .enable_val =3D BUCK_ENMODE_ONREQ, > > > + .ramp_mask =3D BUCK1_RAMP_MASK, > > > + .ramp_delay_table =3D > >=20 > > pca9450_dvs_buck_ramp_table, > >=20 > > > + .n_ramp_values =3D > >=20 > > ARRAY_SIZE(pca9450_dvs_buck_ramp_table), > >=20 > > > + .owner =3D THIS_MODULE, > > > + .of_parse_cb =3D pca9450_set_dvs_levels, > > > + }, > > > + .dvs =3D { > > > + .run_reg =3D PCA9450_REG_BUCK1OUT_DVS0, > > > + .run_mask =3D BUCK1OUT_DVS0_MASK, > > > + .standby_reg =3D PCA9450_REG_BUCK1OUT_DVS1, > > > + .standby_mask =3D BUCK1OUT_DVS1_MASK, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "buck2", > > > + .of_match =3D of_match_ptr("BUCK2"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_BUCK2, > > > + .ops =3D &pca9450_dvs_buck_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_BUCK2_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_dvs_buck_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_dvs_buck_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_BUCK2OUT_DVS0, > > > + .vsel_mask =3D BUCK2OUT_DVS0_MASK, > > > + .enable_reg =3D PCA9450_REG_BUCK2CTRL, > > > + .enable_mask =3D BUCK2_ENMODE_MASK, > > > + .enable_val =3D BUCK_ENMODE_ONREQ_STBYREQ, > > > + .ramp_mask =3D BUCK2_RAMP_MASK, > > > + .ramp_delay_table =3D > >=20 > > pca9450_dvs_buck_ramp_table, > >=20 > > > + .n_ramp_values =3D > >=20 > > ARRAY_SIZE(pca9450_dvs_buck_ramp_table), > >=20 > > > + .owner =3D THIS_MODULE, > > > + .of_parse_cb =3D pca9450_set_dvs_levels, > > > + }, > > > + .dvs =3D { > > > + .run_reg =3D PCA9450_REG_BUCK2OUT_DVS0, > > > + .run_mask =3D BUCK2OUT_DVS0_MASK, > > > + .standby_reg =3D PCA9450_REG_BUCK2OUT_DVS1, > > > + .standby_mask =3D BUCK2OUT_DVS1_MASK, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "buck4", > > > + .of_match =3D of_match_ptr("BUCK4"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_BUCK4, > > > + .ops =3D &pca9450_buck_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_BUCK4_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_buck_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_buck_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_BUCK4OUT, > > > + .vsel_mask =3D BUCK4OUT_MASK, > > > + .enable_reg =3D PCA9450_REG_BUCK4CTRL, > > > + .enable_mask =3D BUCK4_ENMODE_MASK, > > > + .enable_val =3D BUCK_ENMODE_ONREQ, > > > + .owner =3D THIS_MODULE, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "buck5", > > > + .of_match =3D of_match_ptr("BUCK5"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_BUCK5, > > > + .ops =3D &pca9450_buck_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_BUCK5_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_buck_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_buck_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_BUCK5OUT, > > > + .vsel_mask =3D BUCK5OUT_MASK, > > > + .enable_reg =3D PCA9450_REG_BUCK5CTRL, > > > + .enable_mask =3D BUCK5_ENMODE_MASK, > > > + .enable_val =3D BUCK_ENMODE_ONREQ, > > > + .owner =3D THIS_MODULE, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "buck6", > > > + .of_match =3D of_match_ptr("BUCK6"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_BUCK6, > > > + .ops =3D &pca9450_buck_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_BUCK6_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_buck_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_buck_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_BUCK6OUT, > > > + .vsel_mask =3D BUCK6OUT_MASK, > > > + .enable_reg =3D PCA9450_REG_BUCK6CTRL, > > > + .enable_mask =3D BUCK6_ENMODE_MASK, > > > + .enable_val =3D BUCK_ENMODE_ONREQ, > > > + .owner =3D THIS_MODULE, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "ldo1", > > > + .of_match =3D of_match_ptr("LDO1"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_LDO1, > > > + .ops =3D &pca9450_ldo_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_LDO1_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_ldo1_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_ldo1_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_LDO1CTRL, > > > + .vsel_mask =3D LDO1OUT_MASK, > > > + .enable_reg =3D PCA9450_REG_LDO1CTRL, > > > + .enable_mask =3D LDO1_EN_MASK, > > > + .owner =3D THIS_MODULE, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "ldo4", > > > + .of_match =3D of_match_ptr("LDO4"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_LDO4, > > > + .ops =3D &pca9450_ldo_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_LDO4_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_ldo34_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_ldo34_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_LDO4CTRL, > > > + .vsel_mask =3D LDO4OUT_MASK, > > > + .enable_reg =3D PCA9450_REG_LDO4CTRL, > > > + .enable_mask =3D LDO4_EN_MASK, > > > + .owner =3D THIS_MODULE, > > > + }, > > > + }, > > > + { > > > + .desc =3D { > > > + .name =3D "ldo5", > > > + .of_match =3D of_match_ptr("LDO5"), > > > + .regulators_node =3D of_match_ptr("regulators"), > > > + .id =3D PCA9450_LDO5, > > > + .ops =3D &pca9450_ldo_regulator_ops, > > > + .type =3D REGULATOR_VOLTAGE, > > > + .n_voltages =3D PCA9450_LDO5_VOLTAGE_NUM, > > > + .linear_ranges =3D pca9450_ldo5_volts, > > > + .n_linear_ranges =3D > >=20 > > ARRAY_SIZE(pca9450_ldo5_volts), > >=20 > > > + .vsel_reg =3D PCA9450_REG_LDO5CTRL_H, > > > + .vsel_mask =3D LDO5HOUT_MASK, > > > + .enable_reg =3D PCA9450_REG_LDO5CTRL_H, > > > + .enable_mask =3D LDO5H_EN_MASK, > > > + .owner =3D THIS_MODULE, > > > + }, > > > + }, > > > +}; > > > + > > >=20 > > > static irqreturn_t pca9450_irq_handler(int irq, void *data) { > > > =20 > > > struct pca9450 *pca9450 =3D data; > > >=20 > > > @@ -708,8 +917,9 @@ static int pca9450_i2c_probe(struct i2c_client > > > *i2c) > > >=20 > > > const struct pca9450_regulator_desc *regulator_desc; > > > struct regulator_config config =3D { }; > > > struct pca9450 *pca9450; > > >=20 > > > - unsigned int device_id, i; > > > + unsigned int device_id, i, val; > > >=20 > > > unsigned int reset_ctrl; > > >=20 > > > + bool pmic_trim =3D false; > > >=20 > > > int ret; > > > > > > > > > > > > if (!i2c->irq) { > > >=20 > > > @@ -721,6 +931,22 @@ static int pca9450_i2c_probe(struct i2c_client > > > *i2c) > > >=20 > > > if (!pca9450) > > > =20 > > > return -ENOMEM; > > > > > > > > > > > > + pca9450->regmap =3D devm_regmap_init_i2c(i2c, > > > + > >=20 > > &pca9450_regmap_config); > >=20 > > > + if (IS_ERR(pca9450->regmap)) { > > > + dev_err(&i2c->dev, "regmap initialization failed\n"); > > > + return PTR_ERR(pca9450->regmap); > > > + } > > > + > > > + ret =3D regmap_read(pca9450->regmap, PCA9450_REG_PWRCTRL, > >=20 > > &val); > >=20 > > > + if (ret) { > > > + dev_err(&i2c->dev, "Read device id error\n"); > > > + return ret; > > > + } > > > + > > > + if (val & PCA9450_REG_PWRCTRL_TOFF_DEB) > > > + pmic_trim =3D true; > > > > > > > > PCA9450_REG_PWRCTRL is a read/write register. How is it possible to det= ect > > a chip revision using a bit which can be changed by software e.g. > > bootloader? Despite that this bit sets debounce time for PMIC_ON_REQ, h= ow > > is this related to BUCK1 voltage range? >=20 > There are old and new two kind PMIC pca9451a.=20 There is only one part mentioned in the ordering options. How can I=20 distinguish them? Any chip ID, date codes, markings? > This bit sets debounce time in > PCA9450_REG_PWRCTRL was set different value by hardware in order to only > distinguish the old and new PMIC. This bit isn't related to the BUCK1 > voltage range. If the pmic_trim is true that means it's new pca9451a. But this bit is writable. How do you know it has not been modified since=20 reset? Best regards, Alexander > > > + > > >=20 > > > switch (type) { > > > case PCA9450_TYPE_PCA9450A: > > > =20 > > > regulator_desc =3D pca9450a_regulators; @@ -730,6 +956,= 10 > > >=20 > > > @@ static int pca9450_i2c_probe(struct i2c_client *i2c) > > >=20 > > > regulator_desc =3D pca9450bc_regulators; > > > pca9450->rcnt =3D ARRAY_SIZE(pca9450bc_regulators); > > > break; > > >=20 > > > + case PCA9450_TYPE_PCA9451A: > > > + regulator_desc =3D pca9451a_regulators; > > > + pca9450->rcnt =3D ARRAY_SIZE(pca9451a_regulators); > > > + break; > > >=20 > > > default: > > > =20 > > > dev_err(&i2c->dev, "Unknown device type"); > > > return -EINVAL; > > >=20 > > > @@ -741,13 +971,6 @@ static int pca9450_i2c_probe(struct i2c_client > > > *i2c) > > > > > > > > > > > > dev_set_drvdata(&i2c->dev, pca9450); > > > > > > > > > > > > - pca9450->regmap =3D devm_regmap_init_i2c(i2c, > > > - > >=20 > > &pca9450_regmap_config); > >=20 > > > - if (IS_ERR(pca9450->regmap)) { > > > - dev_err(&i2c->dev, "regmap initialization failed\n"); > > > - return PTR_ERR(pca9450->regmap); > > > - } > > > - > > >=20 > > > ret =3D regmap_read(pca9450->regmap, PCA9450_REG_DEV_ID, > >=20 > > &device_id); > >=20 > > > if (ret) { > > > =20 > > > dev_err(&i2c->dev, "Read device id error\n"); @@ -756,7 > > >=20 > > > +979,8 @@ static int pca9450_i2c_probe(struct i2c_client *i2c) > > > > > > > > > > > > /* Check your board and dts for match the right pmic */ > > > if (((device_id >> 4) !=3D 0x1 && type =3D=3D PCA9450_TYPE_PCA9= 450A) || > > >=20 > > > - ((device_id >> 4) !=3D 0x3 && type =3D=3D PCA9450_TYPE_PCA9= 450BC)) > >=20 > > { > >=20 > > > + ((device_id >> 4) !=3D 0x3 && type =3D=3D PCA9450_TYPE_PCA9= 450BC) > > >=20 > > || > > || > > > + ((device_id >> 4) !=3D 0x9 && type =3D=3D PCA9450_TYPE_PCA9= 451A)) > > > + { > > >=20 > > > dev_err(&i2c->dev, "Device id(%x) mismatched\n", > > > =20 > > > device_id >> 4); > > > =20 > > > return -EINVAL; > > >=20 > > > @@ -767,7 +991,16 @@ static int pca9450_i2c_probe(struct i2c_client > > > *i2c) > > >=20 > > > struct regulator_dev *rdev; > > > const struct pca9450_regulator_desc *r; > > > > > > > > > > > > - r =3D ®ulator_desc[i]; > > > + if (type =3D=3D PCA9450_TYPE_PCA9451A && > > > + !strcmp((®ulator_desc[i])->desc.name, "buck1") && > >=20 > > pmic_trim) { > >=20 > > > + r =3D ®ulator_desc[i + 1]; > > > + i =3D i + 1; > > > + } else if (type =3D=3D PCA9450_TYPE_PCA9451A && > > > + !strcmp((®ulator_desc[i])->desc.name, > >=20 > > "buck1")) { > >=20 > > > + r =3D ®ulator_desc[i]; > > > + i =3D i + 1; > > > > > > > > I would put this in a single 'type =3D=3D PCA9450_TYPE_PCA9451A' branch= , to > > indicate that only PCA9451A needs some kind of special handling. >=20 > Yes, this makes the logic clearer. I will change in next version. >=20 > > > > > > > + } else > > > + r =3D ®ulator_desc[i]; > > >=20 > > > desc =3D &r->desc; > > > > > > > > > > > > config.regmap =3D pca9450->regmap; @@ -847,7 +1080,8 > >=20 > > @@ > >=20 > > > static int pca9450_i2c_probe(struct i2c_client *i2c) > > >=20 > > > } > > > > > > > > > > > > dev_info(&i2c->dev, "%s probed.\n", > > >=20 > > > - type =3D=3D PCA9450_TYPE_PCA9450A ? "pca9450a" : > >=20 > > "pca9450bc"); > >=20 > > > + type =3D=3D PCA9450_TYPE_PCA9450A ? "pca9450a" : > > > + (type =3D=3D PCA9450_TYPE_PCA9451A ? "pca9451a" : > >=20 > > "pca9450bc")); > >=20 > > > > > > > > > return 0; > > > =20 > > > } > > >=20 > > > @@ -865,6 +1099,10 @@ static const struct of_device_id > > > pca9450_of_match[] =3D { .compatible =3D "nxp,pca9450c", > > >=20 > > > .data =3D (void *)PCA9450_TYPE_PCA9450BC, > > > =20 > > > }, > > >=20 > > > + { > > > + .compatible =3D "nxp,pca9451a", > > > + .data =3D (void *)PCA9450_TYPE_PCA9451A, > > > + }, > > >=20 > > > { } > > > =20 > > > }; > > > MODULE_DEVICE_TABLE(of, pca9450_of_match); diff --git > > >=20 > > > a/include/linux/regulator/pca9450.h > > > b/include/linux/regulator/pca9450.h index 3c01c2bf84f5..5dd79f52165a > > > 100644 > > > --- a/include/linux/regulator/pca9450.h > > > +++ b/include/linux/regulator/pca9450.h > > > @@ -9,6 +9,7 @@ > > >=20 > > > enum pca9450_chip_type { > > > =20 > > > PCA9450_TYPE_PCA9450A =3D 0, > > > PCA9450_TYPE_PCA9450BC, > > >=20 > > > + PCA9450_TYPE_PCA9451A, > > >=20 > > > PCA9450_TYPE_AMOUNT, > > > =20 > > > }; > > > > > > > > > > > > @@ -93,6 +94,7 @@ enum { > > >=20 > > > PCA9450_MAX_REGISTER =3D 0x2F, > > > =20 > > > }; > > > > > > > > > > > > +#define PCA9450_REG_PWRCTRL_TOFF_DEB BIT(5) > > > > > > > > Newline here please. >=20 > Ok, will modify it. > Thank you very much for your comments and efforts. > BR > Joy Zou >=20 > > > > > > Best regards, > > Alexander > > > > > > > > > /* PCA9450 BUCK ENMODE bits */ > > > #define BUCK_ENMODE_OFF 0x00 > > > #define BUCK_ENMODE_ONREQ 0x01 > > > > > > > > > > -- > > TQ-Systems GmbH | M=C3=BChlstra=C3=9Fe 2, Gut Delling | 82229 Seefeld, = Germany > > Amtsgericht M=C3=BCnchen, HRB 105018 > > Gesch=C3=A4ftsf=C3=BChrer: Detlef Schneider, R=C3=BCdiger Stahl, Stefan= Schneider > > http://www.tq-/ > > group.com%2F&data=3D05%7C01%7Cjoy.zou%40nxp.com%7C1ecbe75c432d464 > > cb45f08db61cb08bc%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7 > > C638211296883052738%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw > > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C% > > 7C&sdata=3Dmz7vtBiDvAxY9FO7tTZO3oPBA8zvYS6f8hLgAwrU8uk%3D&reserved > > =3D0 > > > > >=20 >=20 =2D-=20 TQ-Systems GmbH | M=C3=BChlstra=C3=9Fe 2, Gut Delling | 82229 Seefeld, Germ= any Amtsgericht M=C3=BCnchen, HRB 105018 Gesch=C3=A4ftsf=C3=BChrer: Detlef Schneider, R=C3=BCdiger Stahl, Stefan Sch= neider http://www.tq-group.com/