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=-11.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 BE8A6C43467 for ; Thu, 8 Oct 2020 08:16:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 47A8E21531 for ; Thu, 8 Oct 2020 08:16:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="gESAPEWJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728369AbgJHIQf (ORCPT ); Thu, 8 Oct 2020 04:16:35 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:33056 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725899AbgJHIQf (ORCPT ); Thu, 8 Oct 2020 04:16:35 -0400 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 09787mQJ058891; Wed, 7 Oct 2020 03:07:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1602058068; bh=HBdm4jMYOIuFapa+zEYL7vDmmKD8A9YuA8HzW2ojmgQ=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=gESAPEWJbVi7NFAK+NpiJIg1oKLvWNHCfXRImxDjfMXErUyg9yRkIHtoUduq+tGmR leUgKvW8EnBo1t0dCKiaggeZQm9+hme8PSuI4S+F8vZu/D3LGbAa24j7IgigjmpTRv ASye8b1mWpVKnohV4uLRCyjSuTC6eHDQ8MVN5yaA= Received: from DFLE113.ent.ti.com (dfle113.ent.ti.com [10.64.6.34]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 09787mfk056031 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 7 Oct 2020 03:07:48 -0500 Received: from DFLE105.ent.ti.com (10.64.6.26) by DFLE113.ent.ti.com (10.64.6.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Wed, 7 Oct 2020 03:07:48 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE105.ent.ti.com (10.64.6.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Wed, 7 Oct 2020 03:07:48 -0500 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 09787jjn059638; Wed, 7 Oct 2020 03:07:45 -0500 Subject: Re: [PATCH 01/18] dmaengine: of-dma: Add support for optional router configuration callback To: Vinod Koul CC: , , , , , , , , , , References: <20200930091412.8020-1-peter.ujfalusi@ti.com> <20200930091412.8020-2-peter.ujfalusi@ti.com> <20201007054404.GR2968@vkoul-mobl> From: Peter Ujfalusi Message-ID: Date: Wed, 7 Oct 2020 11:08:06 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1 MIME-Version: 1.0 In-Reply-To: <20201007054404.GR2968@vkoul-mobl> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org On 07/10/2020 8.44, Vinod Koul wrote: > Hi Peter, > > On 30-09-20, 12:13, Peter Ujfalusi wrote: >> Additional configuration for the DMA event router might be needed for a >> channel which can not be done during device_alloc_chan_resources callback >> since the router information is not yet present for the drivers. >> >> If there is a need for additional configuration for the channel if DMA >> router is in use, then the driver can implement the device_router_config >> callback. > > So what is the additional information you need, I am looking at the code > below and xlate invokes device_router_config() which driver will > implement.. The router driver is not yet ready due to external dependencies, it will come a bit later. > Are you using this to configure channels based on info from DT? Not really. In DT an event triggered channel can be requested via router (when this is used) for example: dmas = <&inta_l2g a b c>; a - the input number of the DMA request in l2g b - edge or level trigger to be selected c - ASEL number for the channel for coherency The l2g router driver then translate this to: <&main_bcdma 1 0 c> 1 - Global trigger 0 is used by the DMA 0 - ignored c - ASEL number. The router needs to send an event which is going to be received by the channel we have picked up, this event number can only be known when we do have the channel. So the flow in this case: router converts the dma_spec for the DMA, but it does not yet know what is the event number it has to use. The BCDMA driver will pick an available bchan and notes that the transfers will be triggered by global event 0. When we have the channel, the core saves the router information and calls the device_router_config of BCDMA. In there we call back to the router and give the event number it has to use to send the trigger for the channel. >> >> Signed-off-by: Peter Ujfalusi >> --- >> drivers/dma/of-dma.c | 10 ++++++++++ >> include/linux/dmaengine.h | 2 ++ >> 2 files changed, 12 insertions(+) >> >> diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c >> index 8a4f608904b9..ec00b20ae8e4 100644 >> --- a/drivers/dma/of-dma.c >> +++ b/drivers/dma/of-dma.c >> @@ -75,8 +75,18 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec, >> ofdma->dma_router->route_free(ofdma->dma_router->dev, >> route_data); >> } else { >> + int ret = 0; >> + >> chan->router = ofdma->dma_router; >> chan->route_data = route_data; >> + >> + if (chan->device->device_router_config) >> + ret = chan->device->device_router_config(chan); >> + >> + if (ret) { >> + dma_release_channel(chan); >> + chan = ERR_PTR(ret); >> + } >> } >> >> /* >> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h >> index dd357a747780..d6197fe875af 100644 >> --- a/include/linux/dmaengine.h >> +++ b/include/linux/dmaengine.h >> @@ -800,6 +800,7 @@ struct dma_filter { >> * by tx_status >> * @device_alloc_chan_resources: allocate resources and return the >> * number of allocated descriptors >> + * @device_router_config: optional callback for DMA router configuration >> * @device_free_chan_resources: release DMA channel's resources >> * @device_prep_dma_memcpy: prepares a memcpy operation >> * @device_prep_dma_xor: prepares a xor operation >> @@ -874,6 +875,7 @@ struct dma_device { >> enum dma_residue_granularity residue_granularity; >> >> int (*device_alloc_chan_resources)(struct dma_chan *chan); >> + int (*device_router_config)(struct dma_chan *chan); >> void (*device_free_chan_resources)(struct dma_chan *chan); >> >> struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( >> -- >> Peter >> >> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. >> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki 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=-12.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 C8206C4363C for ; Wed, 7 Oct 2020 08:09:25 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 48E792076C for ; Wed, 7 Oct 2020 08:09:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="HM3Ut3nV"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="gESAPEWJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 48E792076C Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=8PGdX6gUE88It7oi4H9qyPqh829i5aYmKumJrAIxFJM=; b=HM3Ut3nVzJivdo+AGpr3fSDJi bsFMgHbhBAASxMWUf5Rja9w+VHobK3fwcHNU61Kz9gvpTP+P/fuBcXhzZERkG58Qee87rwsbjB3TV UOhdDNA/q9/pMVGIq0Pjg5NoYVDYc6sFaeLr4IFAQ/51ud3Xpq+7fQKKijv5fdeNh8ua6nMdqJ/c7 +TQkHY7juNEPSwjMaj4/OP7u+kjy3KwveaeGkvpPGvUYnSz7zf9h7PEtnsZpC9uxplKIvMy+RjQt/ WQHayayW7E3uYDBRx2lif9RWo/hv/gVGwuc/OQUfZkfKire10He2OGa6dcGamZQQPKGm+bH9Cgdcv gyTWwtEIQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQ4US-0000CB-Pf; Wed, 07 Oct 2020 08:08:00 +0000 Received: from fllv0015.ext.ti.com ([198.47.19.141]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQ4UP-00009y-NP for linux-arm-kernel@lists.infradead.org; Wed, 07 Oct 2020 08:07:59 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 09787mQJ058891; Wed, 7 Oct 2020 03:07:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1602058068; bh=HBdm4jMYOIuFapa+zEYL7vDmmKD8A9YuA8HzW2ojmgQ=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=gESAPEWJbVi7NFAK+NpiJIg1oKLvWNHCfXRImxDjfMXErUyg9yRkIHtoUduq+tGmR leUgKvW8EnBo1t0dCKiaggeZQm9+hme8PSuI4S+F8vZu/D3LGbAa24j7IgigjmpTRv ASye8b1mWpVKnohV4uLRCyjSuTC6eHDQ8MVN5yaA= Received: from DFLE113.ent.ti.com (dfle113.ent.ti.com [10.64.6.34]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 09787mfk056031 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 7 Oct 2020 03:07:48 -0500 Received: from DFLE105.ent.ti.com (10.64.6.26) by DFLE113.ent.ti.com (10.64.6.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Wed, 7 Oct 2020 03:07:48 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE105.ent.ti.com (10.64.6.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Wed, 7 Oct 2020 03:07:48 -0500 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 09787jjn059638; Wed, 7 Oct 2020 03:07:45 -0500 Subject: Re: [PATCH 01/18] dmaengine: of-dma: Add support for optional router configuration callback To: Vinod Koul References: <20200930091412.8020-1-peter.ujfalusi@ti.com> <20200930091412.8020-2-peter.ujfalusi@ti.com> <20201007054404.GR2968@vkoul-mobl> From: Peter Ujfalusi Message-ID: Date: Wed, 7 Oct 2020 11:08:06 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1 MIME-Version: 1.0 In-Reply-To: <20201007054404.GR2968@vkoul-mobl> Content-Language: en-US X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201007_040757_855514_744B2878 X-CRM114-Status: GOOD ( 27.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nm@ti.com, devicetree@vger.kernel.org, vigneshr@ti.com, lokeshvutla@ti.com, linux-kernel@vger.kernel.org, t-kristo@ti.com, robh+dt@kernel.org, ssantosh@kernel.org, dmaengine@vger.kernel.org, dan.j.williams@intel.com, linux-arm-kernel@lists.infradead.org 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 CgpPbiAwNy8xMC8yMDIwIDguNDQsIFZpbm9kIEtvdWwgd3JvdGU6Cj4gSGkgUGV0ZXIsCj4gCj4g T24gMzAtMDktMjAsIDEyOjEzLCBQZXRlciBVamZhbHVzaSB3cm90ZToKPj4gQWRkaXRpb25hbCBj b25maWd1cmF0aW9uIGZvciB0aGUgRE1BIGV2ZW50IHJvdXRlciBtaWdodCBiZSBuZWVkZWQgZm9y IGEKPj4gY2hhbm5lbCB3aGljaCBjYW4gbm90IGJlIGRvbmUgZHVyaW5nIGRldmljZV9hbGxvY19j aGFuX3Jlc291cmNlcyBjYWxsYmFjawo+PiBzaW5jZSB0aGUgcm91dGVyIGluZm9ybWF0aW9uIGlz IG5vdCB5ZXQgcHJlc2VudCBmb3IgdGhlIGRyaXZlcnMuCj4+Cj4+IElmIHRoZXJlIGlzIGEgbmVl ZCBmb3IgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgY2hhbm5lbCBpZiBETUEKPj4g cm91dGVyIGlzIGluIHVzZSwgdGhlbiB0aGUgZHJpdmVyIGNhbiBpbXBsZW1lbnQgdGhlIGRldmlj ZV9yb3V0ZXJfY29uZmlnCj4+IGNhbGxiYWNrLgo+IAo+IFNvIHdoYXQgaXMgdGhlIGFkZGl0aW9u YWwgaW5mb3JtYXRpb24geW91IG5lZWQsIEkgYW0gbG9va2luZyBhdCB0aGUgY29kZQo+IGJlbG93 IGFuZCB4bGF0ZSBpbnZva2VzIGRldmljZV9yb3V0ZXJfY29uZmlnKCkgd2hpY2ggZHJpdmVyIHdp bGwKPiBpbXBsZW1lbnQuLgoKVGhlIHJvdXRlciBkcml2ZXIgaXMgbm90IHlldCByZWFkeSBkdWUg dG8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCBpdCB3aWxsCmNvbWUgYSBiaXQgbGF0ZXIuCgo+IEFy ZSB5b3UgdXNpbmcgdGhpcyB0byBjb25maWd1cmUgY2hhbm5lbHMgYmFzZWQgb24gaW5mbyBmcm9t IERUPwoKTm90IHJlYWxseS4gSW4gRFQgYW4gZXZlbnQgdHJpZ2dlcmVkIGNoYW5uZWwgY2FuIGJl IHJlcXVlc3RlZCB2aWEgcm91dGVyCih3aGVuIHRoaXMgaXMgdXNlZCkgZm9yIGV4YW1wbGU6Cgpk bWFzID0gPCZpbnRhX2wyZyBhIGIgYz47CmEgLSB0aGUgaW5wdXQgbnVtYmVyIG9mIHRoZSBETUEg cmVxdWVzdCBpbiBsMmcKYiAtIGVkZ2Ugb3IgbGV2ZWwgdHJpZ2dlciB0byBiZSBzZWxlY3RlZApj IC0gQVNFTCBudW1iZXIgZm9yIHRoZSBjaGFubmVsIGZvciBjb2hlcmVuY3kKClRoZSBsMmcgcm91 dGVyIGRyaXZlciB0aGVuIHRyYW5zbGF0ZSB0aGlzIHRvOgo8Jm1haW5fYmNkbWEgMSAwIGM+CjEg LSBHbG9iYWwgdHJpZ2dlciAwIGlzIHVzZWQgYnkgdGhlIERNQQowIC0gaWdub3JlZApjIC0gQVNF TCBudW1iZXIuCgpUaGUgcm91dGVyIG5lZWRzIHRvIHNlbmQgYW4gZXZlbnQgd2hpY2ggaXMgZ29p bmcgdG8gYmUgcmVjZWl2ZWQgYnkgdGhlCmNoYW5uZWwgd2UgaGF2ZSBwaWNrZWQgdXAsIHRoaXMg ZXZlbnQgbnVtYmVyIGNhbiBvbmx5IGJlIGtub3duIHdoZW4gd2UKZG8gaGF2ZSB0aGUgY2hhbm5l bC4KClNvIHRoZSBmbG93IGluIHRoaXMgY2FzZToKcm91dGVyIGNvbnZlcnRzIHRoZSBkbWFfc3Bl YyBmb3IgdGhlIERNQSwgYnV0IGl0IGRvZXMgbm90IHlldCBrbm93IHdoYXQKaXMgdGhlIGV2ZW50 IG51bWJlciBpdCBoYXMgdG8gdXNlLgpUaGUgQkNETUEgZHJpdmVyIHdpbGwgcGljayBhbiBhdmFp bGFibGUgYmNoYW4gYW5kIG5vdGVzIHRoYXQgdGhlCnRyYW5zZmVycyB3aWxsIGJlIHRyaWdnZXJl ZCBieSBnbG9iYWwgZXZlbnQgMC4KV2hlbiB3ZSBoYXZlIHRoZSBjaGFubmVsLCB0aGUgY29yZSBz YXZlcyB0aGUgcm91dGVyIGluZm9ybWF0aW9uIGFuZApjYWxscyB0aGUgZGV2aWNlX3JvdXRlcl9j b25maWcgb2YgQkNETUEuCkluIHRoZXJlIHdlIGNhbGwgYmFjayB0byB0aGUgcm91dGVyIGFuZCBn aXZlIHRoZSBldmVudCBudW1iZXIgaXQgaGFzIHRvCnVzZSB0byBzZW5kIHRoZSB0cmlnZ2VyIGZv ciB0aGUgY2hhbm5lbC4KCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFBldGVyIFVqZmFsdXNpIDxwZXRl ci51amZhbHVzaUB0aS5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9kbWEvb2YtZG1hLmMgICAgICB8 IDEwICsrKysrKysrKysKPj4gIGluY2x1ZGUvbGludXgvZG1hZW5naW5lLmggfCAgMiArKwo+PiAg MiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2RtYS9vZi1kbWEuYyBiL2RyaXZlcnMvZG1hL29mLWRtYS5jCj4+IGluZGV4IDhhNGY2MDg5 MDRiOS4uZWMwMGIyMGFlOGU0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RtYS9vZi1kbWEuYwo+ PiArKysgYi9kcml2ZXJzL2RtYS9vZi1kbWEuYwo+PiBAQCAtNzUsOCArNzUsMTggQEAgc3RhdGlj IHN0cnVjdCBkbWFfY2hhbiAqb2ZfZG1hX3JvdXRlcl94bGF0ZShzdHJ1Y3Qgb2ZfcGhhbmRsZV9h cmdzICpkbWFfc3BlYywKPj4gIAkJb2ZkbWEtPmRtYV9yb3V0ZXItPnJvdXRlX2ZyZWUob2ZkbWEt PmRtYV9yb3V0ZXItPmRldiwKPj4gIAkJCQkJICAgICAgcm91dGVfZGF0YSk7Cj4+ICAJfSBlbHNl IHsKPj4gKwkJaW50IHJldCA9IDA7Cj4+ICsKPj4gIAkJY2hhbi0+cm91dGVyID0gb2ZkbWEtPmRt YV9yb3V0ZXI7Cj4+ICAJCWNoYW4tPnJvdXRlX2RhdGEgPSByb3V0ZV9kYXRhOwo+PiArCj4+ICsJ CWlmIChjaGFuLT5kZXZpY2UtPmRldmljZV9yb3V0ZXJfY29uZmlnKQo+PiArCQkJcmV0ID0gY2hh bi0+ZGV2aWNlLT5kZXZpY2Vfcm91dGVyX2NvbmZpZyhjaGFuKTsKPj4gKwo+PiArCQlpZiAocmV0 KSB7Cj4+ICsJCQlkbWFfcmVsZWFzZV9jaGFubmVsKGNoYW4pOwo+PiArCQkJY2hhbiA9IEVSUl9Q VFIocmV0KTsKPj4gKwkJfQo+PiAgCX0KPj4gIAo+PiAgCS8qCj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2RtYWVuZ2luZS5oIGIvaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaAo+PiBpbmRl eCBkZDM1N2E3NDc3ODAuLmQ2MTk3ZmU4NzVhZiAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9saW51 eC9kbWFlbmdpbmUuaAo+PiArKysgYi9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCj4+IEBAIC04 MDAsNiArODAwLDcgQEAgc3RydWN0IGRtYV9maWx0ZXIgewo+PiAgICoJYnkgdHhfc3RhdHVzCj4+ ICAgKiBAZGV2aWNlX2FsbG9jX2NoYW5fcmVzb3VyY2VzOiBhbGxvY2F0ZSByZXNvdXJjZXMgYW5k IHJldHVybiB0aGUKPj4gICAqCW51bWJlciBvZiBhbGxvY2F0ZWQgZGVzY3JpcHRvcnMKPj4gKyAq IEBkZXZpY2Vfcm91dGVyX2NvbmZpZzogb3B0aW9uYWwgY2FsbGJhY2sgZm9yIERNQSByb3V0ZXIg Y29uZmlndXJhdGlvbgo+PiAgICogQGRldmljZV9mcmVlX2NoYW5fcmVzb3VyY2VzOiByZWxlYXNl IERNQSBjaGFubmVsJ3MgcmVzb3VyY2VzCj4+ICAgKiBAZGV2aWNlX3ByZXBfZG1hX21lbWNweTog cHJlcGFyZXMgYSBtZW1jcHkgb3BlcmF0aW9uCj4+ICAgKiBAZGV2aWNlX3ByZXBfZG1hX3hvcjog cHJlcGFyZXMgYSB4b3Igb3BlcmF0aW9uCj4+IEBAIC04NzQsNiArODc1LDcgQEAgc3RydWN0IGRt YV9kZXZpY2Ugewo+PiAgCWVudW0gZG1hX3Jlc2lkdWVfZ3JhbnVsYXJpdHkgcmVzaWR1ZV9ncmFu dWxhcml0eTsKPj4gIAo+PiAgCWludCAoKmRldmljZV9hbGxvY19jaGFuX3Jlc291cmNlcykoc3Ry dWN0IGRtYV9jaGFuICpjaGFuKTsKPj4gKwlpbnQgKCpkZXZpY2Vfcm91dGVyX2NvbmZpZykoc3Ry dWN0IGRtYV9jaGFuICpjaGFuKTsKPj4gIAl2b2lkICgqZGV2aWNlX2ZyZWVfY2hhbl9yZXNvdXJj ZXMpKHN0cnVjdCBkbWFfY2hhbiAqY2hhbik7Cj4+ICAKPj4gIAlzdHJ1Y3QgZG1hX2FzeW5jX3R4 X2Rlc2NyaXB0b3IgKigqZGV2aWNlX3ByZXBfZG1hX21lbWNweSkoCj4+IC0tIAo+PiBQZXRlcgo+ Pgo+PiBUZXhhcyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4 MCBIZWxzaW5raS4KPj4gWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtr YS9Eb21pY2lsZTogSGVsc2lua2kKPiAKCi0gUMOpdGVyCgpUZXhhcyBJbnN0cnVtZW50cyBGaW5s YW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4KWS10dW5udXMvQnVzaW5l c3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK