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 44BDBC433EF for ; Thu, 23 Jun 2022 08:27:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229913AbiFWI1y (ORCPT ); Thu, 23 Jun 2022 04:27:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230144AbiFWI1v (ORCPT ); Thu, 23 Jun 2022 04:27:51 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DAA2488A0 for ; Thu, 23 Jun 2022 01:27:50 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id o8so26853108wro.3 for ; Thu, 23 Jun 2022 01:27:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=XbJxth9tRCJ25M1ZtDqhJEdmIW0lgPfIhZtn1D4CF94=; b=qzpKzFjp0Vzr1dfUZ/biNrohzZZlanRtI5lT2sPIUHhU2/C/Bd4dI5Xby+P70ihROS pZKKfhTeyd6PuP5eNMFXHpnkqb+CF/el9mXs0+Us/gR44T03zkiL/YpXb5aGpMeRvbKQ ocwHZp/SH3NDzRvob40xXL0ZTlUg+xGcIFPyQf3FvjkdZR2hWtjghYvzmGSJ98MOqEg2 JCh10jJT4NrlaAQXLoegdNamyLDQFH26txfxGMFBK1kkiUknDzZF4lzrUI64UaciNyv9 GzBy6ccGjgDEsGPhVx1xQFSBLz8ghxIt51h8Y9Zcm1iEfG9opEDAHWlJDh6irn7iQAui 7Neg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=XbJxth9tRCJ25M1ZtDqhJEdmIW0lgPfIhZtn1D4CF94=; b=TDP2gJC+JfI28hrZXEhQNsGzDXygQyftrecFlnhwj8+FmExK9sRm/E3Nkkc0yMIGas vizluHp699KcU+ipWtebgZKwKvmmIUOJMDnjc0j7NpWCnrQyeX84ode9LyYZSIV/CiYg 0d38Wk6mDj7Ht6hK0Lm58fz2safyo4XOSyumb6eIb4r9HhgJ0//DZCSghRtc8uJf9HK2 jZq3Wj409/37zMAIi+gYWEkZTdn99vMhJtatynGG8aLJlO7ZviZX8Mjnjbuep1Dk7CGS eZhEN5N4tgGnoJ9tFTPhYjR1w3vjSCGYG2j72Uqu4zZin362QnPbgfKpKuqevqISDVG9 ETqw== X-Gm-Message-State: AJIora8tSekPWG46OFcKJ3GrrOnM/qjo2PHlP7V90b8cZC2CNWPK+uQZ At7B1CLCGWrn/DTbrZKS8SNuzw== X-Google-Smtp-Source: AGRyM1tFE7HiQGCqIdoOCyxEMVOwHB7a0N7pOT/+8ykgOA4W6ZtrxLFb2mbg0vjLwtnoKRgGeBcnjQ== X-Received: by 2002:a05:6000:901:b0:21a:a576:23cc with SMTP id bz1-20020a056000090100b0021aa57623ccmr6897834wrb.489.1655972868423; Thu, 23 Jun 2022 01:27:48 -0700 (PDT) Received: from google.com (cpc155339-bagu17-2-0-cust87.1-3.cable.virginm.net. [86.27.177.88]) by smtp.gmail.com with ESMTPSA id d12-20020a05600c34cc00b0039c63f4bce0sm2270234wmq.12.2022.06.23.01.27.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 01:27:47 -0700 (PDT) Date: Thu, 23 Jun 2022 09:27:45 +0100 From: Lee Jones To: Stefan Wahren Cc: Florian Fainelli , Ray Jui , Scott Branden , Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Saenz Julienne Subject: Re: [PATCH V3 06/11] mfd: bcm2835-pm: Use 'reg-names' to get resources Message-ID: References: <20220607204226.8703-1-stefan.wahren@i2se.com> <20220607204226.8703-7-stefan.wahren@i2se.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220607204226.8703-7-stefan.wahren@i2se.com> Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On Tue, 07 Jun 2022, Stefan Wahren wrote: > From: Nicolas Saenz Julienne > > If available in firmware, find resources by their 'reg-names' position > instead of relying on hardcoded offsets. Care is taken to support old > firmware nonetheless. > > Signed-off-by: Nicolas Saenz Julienne > Signed-off-by: Stefan Wahren > Reviewed-by: Peter Robinson > --- > drivers/mfd/bcm2835-pm.c | 59 +++++++++++++++++++++++++++------------- > 1 file changed, 40 insertions(+), 19 deletions(-) > > diff --git a/drivers/mfd/bcm2835-pm.c b/drivers/mfd/bcm2835-pm.c > index 42fe67f1538e..ff0dae5a026d 100644 > --- a/drivers/mfd/bcm2835-pm.c > +++ b/drivers/mfd/bcm2835-pm.c > @@ -25,9 +25,41 @@ static const struct mfd_cell bcm2835_power_devs[] = { > { .name = "bcm2835-power" }, > }; > > +static int bcm2835_pm_get_pdata(struct platform_device *pdev, > + struct bcm2835_pm *pm) > +{ > + /* If no 'reg-names' property is found we can assume we're using old > + * firmware. > + */ Please use the correct format for multi-line comments. Better still, convert this to a single line comment. > + if (!of_find_property(pm->dev->of_node, "reg-names", NULL)) { > + dev_warn(pm->dev, "reg-names are missing, please update your DTB.\n"); > + > + pm->base = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(pm->base)) > + return PTR_ERR(pm->base); > + > + pm->asb = devm_platform_ioremap_resource(pdev, 1); Might be nicer to return here and remove the else. > + } else { > + struct resource *res; > + > + pm->base = devm_platform_ioremap_resource_byname(pdev, "pm"); > + if (IS_ERR(pm->base)) > + return PTR_ERR(pm->base); > + > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, > + "asb"); While you're at it, might as well make this single line too. > + if (res) > + pm->asb = devm_ioremap_resource(&pdev->dev, res); > + } > + > + if (IS_ERR(pm->asb)) > + pm->asb = NULL; > + > + return 0; > +} > + > static int bcm2835_pm_probe(struct platform_device *pdev) > { > - struct resource *res; > struct device *dev = &pdev->dev; > struct bcm2835_pm *pm; > int ret; > @@ -39,10 +71,9 @@ static int bcm2835_pm_probe(struct platform_device *pdev) > > pm->dev = dev; > > - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - pm->base = devm_ioremap_resource(dev, res); > - if (IS_ERR(pm->base)) > - return PTR_ERR(pm->base); > + ret = bcm2835_pm_get_pdata(pdev, pm); > + if (ret) > + return ret; > > ret = devm_mfd_add_devices(dev, -1, > bcm2835_pm_devs, ARRAY_SIZE(bcm2835_pm_devs), > @@ -54,20 +85,10 @@ static int bcm2835_pm_probe(struct platform_device *pdev) > * bcm2835-pm binding as the key for whether we can reference > * the full PM register range and support power domains. > */ > - res = platform_get_resource(pdev, IORESOURCE_MEM, 1); > - if (res) { > - pm->asb = devm_ioremap_resource(dev, res); > - if (IS_ERR(pm->asb)) > - return PTR_ERR(pm->asb); > - > - ret = devm_mfd_add_devices(dev, -1, > - bcm2835_power_devs, > - ARRAY_SIZE(bcm2835_power_devs), > - NULL, 0, NULL); > - if (ret) > - return ret; > - } > - > + if (pm->asb) > + return devm_mfd_add_devices(dev, -1, bcm2835_power_devs, > + ARRAY_SIZE(bcm2835_power_devs), > + NULL, 0, NULL); > return 0; > } > -- Lee Jones [李琼斯] Principal Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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 434AAC433EF for ; Thu, 23 Jun 2022 08:28:55 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EI1+r4L+1z1HRpqC+3KS9jJS3/+QLKpy7O/S6TuKm3E=; b=tqoNxmLLJAJ8jx 4hijVJLajSfwbh577doHz3XnPzwpKVZjOdZ2qmF2Tf9XwebrGG0/qde2gV+yIOCqoMBcsYgLoRCKC XT4n0e6mLXMd7B2nMj7+yt3WkyTSxO0d5fv7Nup9l9TqkB46sY8XMwKHp19BCTzxzoF1iSF03gbRo R30LlJFSNSE3DOVpa0OHmigxtlk5gmP5ZY9++T94jZgEcMJrk6WzKniasuvNHg+rKXkSjAF+IPKj+ Up1D5Wj6wKH5U7lkaIv8CWOhe0p4u6Cci2odV0USMxDVbEZt1+ZqtFsfHGo/TW3hsVmBZT4Sj8i4z kd2pg6LWLAeSMMl9NQtA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o4IBv-00E52X-Al; Thu, 23 Jun 2022 08:27:55 +0000 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o4IBr-00E510-U7 for linux-arm-kernel@lists.infradead.org; Thu, 23 Jun 2022 08:27:53 +0000 Received: by mail-wr1-x434.google.com with SMTP id m1so19067755wrb.2 for ; Thu, 23 Jun 2022 01:27:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=XbJxth9tRCJ25M1ZtDqhJEdmIW0lgPfIhZtn1D4CF94=; b=qzpKzFjp0Vzr1dfUZ/biNrohzZZlanRtI5lT2sPIUHhU2/C/Bd4dI5Xby+P70ihROS pZKKfhTeyd6PuP5eNMFXHpnkqb+CF/el9mXs0+Us/gR44T03zkiL/YpXb5aGpMeRvbKQ ocwHZp/SH3NDzRvob40xXL0ZTlUg+xGcIFPyQf3FvjkdZR2hWtjghYvzmGSJ98MOqEg2 JCh10jJT4NrlaAQXLoegdNamyLDQFH26txfxGMFBK1kkiUknDzZF4lzrUI64UaciNyv9 GzBy6ccGjgDEsGPhVx1xQFSBLz8ghxIt51h8Y9Zcm1iEfG9opEDAHWlJDh6irn7iQAui 7Neg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=XbJxth9tRCJ25M1ZtDqhJEdmIW0lgPfIhZtn1D4CF94=; b=e60IIo3/ljXnCh9ewORuwtQHUJvmONiloKmRI/fFegRK7WW82Qh0CbMiAcXAiV6cVf J1ZvO1VwfcZSpVuaPpYQ5ffHWXQgZ1zhGbdxzfoZa9rPEm1pzuDopc2qhkXq+7oYx+nw nAlresuPvcyJK9kbURcbYxCXiUSEbJIG10IVzeynZDxs8LAAxVJPpo7+HUtQM7neJJli 4lFXUKo3ra/rGPFi3X0jBOxONV7yV7AkH/LzAow6jHgtMaNOYr9aU2Y6klCeFLNVKYXy uxgQ59R1EP0835dEsdPKoI7WNrtY7EA92z4dNJeUqBA5D3/ssselvrmNTo1/cw5ZSkP/ xAIw== X-Gm-Message-State: AJIora/JAO5ME0QO/Fg16e5JkIR0g0htqOz+J+2HLIACqHASgT7KvI7f Z1G1LE2QT+Q6FA01kYHUMrnqUnR6eifHOA== X-Google-Smtp-Source: AGRyM1tFE7HiQGCqIdoOCyxEMVOwHB7a0N7pOT/+8ykgOA4W6ZtrxLFb2mbg0vjLwtnoKRgGeBcnjQ== X-Received: by 2002:a05:6000:901:b0:21a:a576:23cc with SMTP id bz1-20020a056000090100b0021aa57623ccmr6897834wrb.489.1655972868423; Thu, 23 Jun 2022 01:27:48 -0700 (PDT) Received: from google.com (cpc155339-bagu17-2-0-cust87.1-3.cable.virginm.net. [86.27.177.88]) by smtp.gmail.com with ESMTPSA id d12-20020a05600c34cc00b0039c63f4bce0sm2270234wmq.12.2022.06.23.01.27.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Jun 2022 01:27:47 -0700 (PDT) Date: Thu, 23 Jun 2022 09:27:45 +0100 From: Lee Jones To: Stefan Wahren Cc: Florian Fainelli , Ray Jui , Scott Branden , Peter Robinson , Melissa Wen , Phil Elwell , bcm-kernel-feedback-list@broadcom.com, Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Saenz Julienne Subject: Re: [PATCH V3 06/11] mfd: bcm2835-pm: Use 'reg-names' to get resources Message-ID: References: <20220607204226.8703-1-stefan.wahren@i2se.com> <20220607204226.8703-7-stefan.wahren@i2se.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220607204226.8703-7-stefan.wahren@i2se.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220623_012752_015749_1A1BC8EC X-CRM114-Status: GOOD ( 26.62 ) 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 T24gVHVlLCAwNyBKdW4gMjAyMiwgU3RlZmFuIFdhaHJlbiB3cm90ZToKCj4gRnJvbTogTmljb2xh cyBTYWVueiBKdWxpZW5uZSA8bnNhZW56anVsaWVubmVAc3VzZS5kZT4KPiAKPiBJZiBhdmFpbGFi bGUgaW4gZmlybXdhcmUsIGZpbmQgcmVzb3VyY2VzIGJ5IHRoZWlyICdyZWctbmFtZXMnIHBvc2l0 aW9uCj4gaW5zdGVhZCBvZiByZWx5aW5nIG9uIGhhcmRjb2RlZCBvZmZzZXRzLiBDYXJlIGlzIHRh a2VuIHRvIHN1cHBvcnQgb2xkCj4gZmlybXdhcmUgbm9uZXRoZWxlc3MuCj4gCj4gU2lnbmVkLW9m Zi1ieTogTmljb2xhcyBTYWVueiBKdWxpZW5uZSA8bnNhZW56anVsaWVubmVAc3VzZS5kZT4KPiBT aWduZWQtb2ZmLWJ5OiBTdGVmYW4gV2FocmVuIDxzdGVmYW4ud2FocmVuQGkyc2UuY29tPgo+IFJl dmlld2VkLWJ5OiBQZXRlciBSb2JpbnNvbiA8cGJyb2JpbnNvbkBnbWFpbC5jb20+Cj4gLS0tCj4g IGRyaXZlcnMvbWZkL2JjbTI4MzUtcG0uYyB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDE5IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9iY20yODM1LXBtLmMgYi9k cml2ZXJzL21mZC9iY20yODM1LXBtLmMKPiBpbmRleCA0MmZlNjdmMTUzOGUuLmZmMGRhZTVhMDI2 ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9iY20yODM1LXBtLmMKPiArKysgYi9kcml2ZXJz L21mZC9iY20yODM1LXBtLmMKPiBAQCAtMjUsOSArMjUsNDEgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBtZmRfY2VsbCBiY20yODM1X3Bvd2VyX2RldnNbXSA9IHsKPiAgCXsgLm5hbWUgPSAiYmNtMjgz NS1wb3dlciIgfSwKPiAgfTsKPiAgCj4gK3N0YXRpYyBpbnQgYmNtMjgzNV9wbV9nZXRfcGRhdGEo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiArCQkJCXN0cnVjdCBiY20yODM1X3BtICpw bSkKPiArewo+ICsJLyogSWYgbm8gJ3JlZy1uYW1lcycgcHJvcGVydHkgaXMgZm91bmQgd2UgY2Fu IGFzc3VtZSB3ZSdyZSB1c2luZyBvbGQKPiArCSAqIGZpcm13YXJlLgo+ICsJICovCgpQbGVhc2Ug dXNlIHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgbXVsdGktbGluZSBjb21tZW50cy4KCkJldHRlciBz dGlsbCwgY29udmVydCB0aGlzIHRvIGEgc2luZ2xlIGxpbmUgY29tbWVudC4KCj4gKwlpZiAoIW9m X2ZpbmRfcHJvcGVydHkocG0tPmRldi0+b2Zfbm9kZSwgInJlZy1uYW1lcyIsIE5VTEwpKSB7Cj4g KwkJZGV2X3dhcm4ocG0tPmRldiwgInJlZy1uYW1lcyBhcmUgbWlzc2luZywgcGxlYXNlIHVwZGF0 ZSB5b3VyIERUQi5cbiIpOwo+ICsKPiArCQlwbS0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1h cF9yZXNvdXJjZShwZGV2LCAwKTsKPiArCQlpZiAoSVNfRVJSKHBtLT5iYXNlKSkKPiArCQkJcmV0 dXJuIFBUUl9FUlIocG0tPmJhc2UpOwo+ICsKPiArCQlwbS0+YXNiID0gZGV2bV9wbGF0Zm9ybV9p b3JlbWFwX3Jlc291cmNlKHBkZXYsIDEpOwoKTWlnaHQgYmUgbmljZXIgdG8gcmV0dXJuIGhlcmUg YW5kIHJlbW92ZSB0aGUgZWxzZS4KCj4gKwl9IGVsc2Ugewo+ICsJCXN0cnVjdCByZXNvdXJjZSAq cmVzOwo+ICsKPiArCQlwbS0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9i eW5hbWUocGRldiwgInBtIik7Cj4gKwkJaWYgKElTX0VSUihwbS0+YmFzZSkpCj4gKwkJCXJldHVy biBQVFJfRVJSKHBtLT5iYXNlKTsKPiArCj4gKwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNl X2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwKPiArCQkJCQkJICAgICJhc2IiKTsKCldoaWxl IHlvdSdyZSBhdCBpdCwgbWlnaHQgYXMgd2VsbCBtYWtlIHRoaXMgc2luZ2xlIGxpbmUgdG9vLgoK PiArCQlpZiAocmVzKQo+ICsJCQlwbS0+YXNiID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2 LT5kZXYsIHJlcyk7Cj4gKwl9Cj4gKwo+ICsJaWYgKElTX0VSUihwbS0+YXNiKSkKPiArCQlwbS0+ YXNiID0gTlVMTDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBiY20y ODM1X3BtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIHsKPiAtCXN0cnVj dCByZXNvdXJjZSAqcmVzOwo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAg CXN0cnVjdCBiY20yODM1X3BtICpwbTsKPiAgCWludCByZXQ7Cj4gQEAgLTM5LDEwICs3MSw5IEBA IHN0YXRpYyBpbnQgYmNtMjgzNV9wbV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICAKPiAgCXBtLT5kZXYgPSBkZXY7Cj4gIAo+IC0JcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291 cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiAtCXBtLT5iYXNlID0gZGV2bV9pb3JlbWFw X3Jlc291cmNlKGRldiwgcmVzKTsKPiAtCWlmIChJU19FUlIocG0tPmJhc2UpKQo+IC0JCXJldHVy biBQVFJfRVJSKHBtLT5iYXNlKTsKPiArCXJldCA9IGJjbTI4MzVfcG1fZ2V0X3BkYXRhKHBkZXYs IHBtKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gIAlyZXQgPSBkZXZtX21m ZF9hZGRfZGV2aWNlcyhkZXYsIC0xLAo+ICAJCQkJICAgYmNtMjgzNV9wbV9kZXZzLCBBUlJBWV9T SVpFKGJjbTI4MzVfcG1fZGV2cyksCj4gQEAgLTU0LDIwICs4NSwxMCBAQCBzdGF0aWMgaW50IGJj bTI4MzVfcG1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCSAqIGJjbTI4 MzUtcG0gYmluZGluZyBhcyB0aGUga2V5IGZvciB3aGV0aGVyIHdlIGNhbiByZWZlcmVuY2UKPiAg CSAqIHRoZSBmdWxsIFBNIHJlZ2lzdGVyIHJhbmdlIGFuZCBzdXBwb3J0IHBvd2VyIGRvbWFpbnMu Cj4gIAkgKi8KPiAtCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNF X01FTSwgMSk7Cj4gLQlpZiAocmVzKSB7Cj4gLQkJcG0tPmFzYiA9IGRldm1faW9yZW1hcF9yZXNv dXJjZShkZXYsIHJlcyk7Cj4gLQkJaWYgKElTX0VSUihwbS0+YXNiKSkKPiAtCQkJcmV0dXJuIFBU Ul9FUlIocG0tPmFzYik7Cj4gLQo+IC0JCXJldCA9IGRldm1fbWZkX2FkZF9kZXZpY2VzKGRldiwg LTEsCj4gLQkJCQkJICAgYmNtMjgzNV9wb3dlcl9kZXZzLAo+IC0JCQkJCSAgIEFSUkFZX1NJWkUo YmNtMjgzNV9wb3dlcl9kZXZzKSwKPiAtCQkJCQkgICBOVUxMLCAwLCBOVUxMKTsKPiAtCQlpZiAo cmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiArCWlmIChwbS0+YXNiKQo+ICsJCXJl dHVybiBkZXZtX21mZF9hZGRfZGV2aWNlcyhkZXYsIC0xLCBiY20yODM1X3Bvd2VyX2RldnMsCj4g KwkJCQkJICAgIEFSUkFZX1NJWkUoYmNtMjgzNV9wb3dlcl9kZXZzKSwKPiArCQkJCQkgICAgTlVM TCwgMCwgTlVMTCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKCi0tIApMZWUgSm9uZXMgW+adjueQ vOaWr10KUHJpbmNpcGFsIFRlY2huaWNhbCBMZWFkIC0gRGV2ZWxvcGVyIFNlcnZpY2VzCkxpbmFy by5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBcm0gU29DcwpGb2xsb3cgTGluYXJv OiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==