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=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable 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 70D5CC8300D for ; Thu, 30 Apr 2020 11:13:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5A76D20757 for ; Thu, 30 Apr 2020 11:13:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727104AbgD3LNq (ORCPT ); Thu, 30 Apr 2020 07:13:46 -0400 Received: from inva021.nxp.com ([92.121.34.21]:40102 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725280AbgD3LNp (ORCPT ); Thu, 30 Apr 2020 07:13:45 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id D8D5A2007DC; Thu, 30 Apr 2020 13:13:42 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id C865E2007D8; Thu, 30 Apr 2020 13:13:42 +0200 (CEST) Received: from localhost (fsr-ub1664-175.ea.freescale.net [10.171.82.40]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id AA7D920397; Thu, 30 Apr 2020 13:13:42 +0200 (CEST) Date: Thu, 30 Apr 2020 14:13:42 +0300 From: Abel Vesa To: Aisheng Dong Cc: Lee Jones , "arnd@arndb.de" , Shawn Guo , Peng Fan , Philipp Zabel , Stephen Boyd , Sascha Hauer , Anson Huang , Leonard Crestez , Jacky Bai , dl-linux-imx , Linux Kernel Mailing List , "devicetree@vger.kernel.org" , "linux-clk@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH v3 01/13] mfd: Add i.MX generic mix support Message-ID: <20200430111342.b2fj7ko3uvffv4wg@fsr-ub1664-175> References: <1586937773-5836-1-git-send-email-abel.vesa@nxp.com> <1586937773-5836-2-git-send-email-abel.vesa@nxp.com> <20200417080747.GE2167633@dell> <20200422091854.rhtkcfrdptwofngs@fsr-ub1664-175> <20200424062727.GI3612@dell> <20200430100355.zwl7wfbq64cikqxp@fsr-ub1664-175> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20180622 X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 20-04-30 10:22:04, Aisheng Dong wrote: > > From: Abel Vesa > > Sent: Thursday, April 30, 2020 6:04 PM > > To: Lee Jones > > On 20-04-24 07:27:27, Lee Jones wrote: > > > On Thu, 23 Apr 2020, Aisheng Dong wrote: > > > > > > > > From: Abel Vesa > > > > > Sent: Wednesday, April 22, 2020 5:19 PM On 20-04-17 09:07:47, Lee > > > > > Jones wrote: > > > > > > On Wed, 15 Apr 2020, Abel Vesa wrote: > > > > > > > > > > > > > Some of the i.MX SoCs have a IP for interfacing the dedicated > > > > > > > IPs with clocks, resets and interrupts, plus some other specific control > > registers. > > > > > > > To allow the functionality to be split between drivers, this > > > > > > > MFD driver is added that has only two purposes: register the > > > > > > > devices and map the entire register addresses. Everything else > > > > > > > is left to the dedicated drivers that will bind to the registered devices. > > > > > > > > > > > > > > Signed-off-by: Abel Vesa > > > > > > > --- > > > > > > > drivers/mfd/Kconfig | 11 +++++++++++ > > > > > > > drivers/mfd/Makefile | 1 + > > > > > > > drivers/mfd/imx-mix.c | 48 > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > > 3 files changed, 60 insertions(+) create mode 100644 > > > > > > > drivers/mfd/imx-mix.c > > > > > > > > > > > > For completeness - Arnd's reply to this patch: > > > > > > > > > > > > > > > > I'm replying here to Arnd's reply. > > > > > > > > > > I'm trying to give here a whole picture of the entire problem > > > > > while the documentation for i.MX8MP is _not yet_ public. > > > > > > > > > > Historically, each IP would have its own enclosure for all the related GPRs. > > > > > Starting with i.MX8MP some GPRs (and some subparts) from the IP > > > > > were placed inside these mixes. > > > > > > > > > > Audiomix for example, has multiple SAIs, a PLL, and some reset > > > > > bits for EARC and some GPRs for AudioDSP. This means that i.MX8MP > > > > > has 7 SAIs, 1 EARC and > > > > > 1 AudioDSP. > > > > > Future platforms might have different numbers of SAIs, EARCs or > > AudioDSPs. > > > > > The PLL can't be placed in one of those SAIs and it was placed in audiomix. > > > > > The i.MX8MP has at least 4 of these mixes. > > > > > > > > > > Now, the commonalities between all mixes are: > > > > > - have their own power domains > > > > > - driven by dedicated clock slice > > > > > - contain clocks and resets > > > > > - some very subsystem specific GPRs > > > > > > > > > > Knowing that each mix has its own power domain, AFAICT, it needs > > > > > to be registered as a single device. Considering that it can have > > > > > clocks (audiomix has gates, muxes and plls), I believe that needs > > > > > a clock driver, even more so since the muxes need their parents > > > > > from the platform clock driver. Same principle applies to reset > > > > > bits. The subsystem specific GPRs can be registered as syscon > > > > > devices and taken care of by its counterpart IP (e.g. the AudioDSP specific > > regs would be taken care of by the DSP driver, if there is one). > > > > > > > > > > Now based on all of the above, by using MFD we take care of the > > > > > power domain control for the entire mix, plus, the MFD doesn't > > > > > have any kind of functionality by its own, relying on its children > > > > > devices that are populated based on what is in the mix MFD devicetree > > node. > > > > > > > > > > > > > How about doing like this which maybe can address Arnd's concerns? > > > > audiomix: audiomix@30e20000 { > > > > compatible = "fsl,imx8mp-audiomix", "syscon"; > > > > reg = <0x30e20000 xxx>, > > > > <0x30e20xxx xxx>; > > > > reg-names = "audio", "reset", "..."; > > > > #clock-cells = <1>; > > > > #reset-cells = <1>; > > > > power-domains = <&audiomix_pd>; } > > > > > > > > That means we have one combo driver registering two controllers > > > > (clk/reset), both use the same power domain as audiomix. > > > > And it can be easily extended to support more services provided by > > > > audiomix over syscon if needed. > > > > Then the 'dummy' MDF driver is not needed anymore. > > > > > > > > Jones & Arnd, > > > > How do you think? > > > > > > Sounds okay in principle. Anything that prevents the existence of a > > > dummy (a.k.a. pointless) MFD must be seen as a positive move. > > > > > > > OK, I'll do it in a single driver and single dts node. > > > > But there might be an issue with the placement of this new driver. > > > > drivers/clk/imx/ could be an option, but the driver will use a lot of different APIs > > from different subsystems. Not the audiomix, but the future mixes. > > Maybe Stephen could comment whether it's ok to push a combo driver > (e.g. clk&reset&syscon) In drivers/clk/imx. > > From what we see, it seems already some similar combo drivers (clk&reset) there. > > BTW, not sure if any technical block reasons to put in drivers/clk. > Maybe we can quickly try internally first. > Working on it already. > Regards > Aisheng > > > > > > -- > > > Lee Jones [李琼斯] > > > Linaro Services Technical Lead > > > 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 X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,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 2E30AC8300C for ; Thu, 30 Apr 2020 11:13:50 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id D2F1B20757 for ; Thu, 30 Apr 2020 11:13:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rwCzyqUd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D2F1B20757 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.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:References: Message-ID:Subject: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=SyN/uTZ5xQc29YXSDUy/dw3Z7M/QnMGlm+WyktF3MPY=; b=rwCzyqUdv1/xRk QY6dl6pPxN8PXI3R4K8CNDd0MPTgqZUZ06xat61GnaMqqqG8MnUaKc3guj/g9bQoDacoaCAWeE34h Y2SnbVhM6rPVEVIlAeJytVk3KhCG5VRx/IpDS9eapzQaeFXHa+igHAJ5ZjgvPrRRqeKOx6pct9fHf hNwOBZc8iP1/YmqBHrXrmd0UAxs/8DSoZ/uT3YjzZLq6FrwgbgBHNaN2dr1mA7BmcwCqDwio+fxFy ks8+FNsKch5Fs2sIlgVV0caTI7LuinKj/gj/O5I5DGcQQdtHLAe58TKcts1VlHcFb1TCoOHpmEubl PFIxlDbrT938CvB9PN7Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jU78X-0006tb-EE; Thu, 30 Apr 2020 11:13:49 +0000 Received: from inva021.nxp.com ([92.121.34.21]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jU78U-0006rf-EA for linux-arm-kernel@lists.infradead.org; Thu, 30 Apr 2020 11:13:48 +0000 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id D8D5A2007DC; Thu, 30 Apr 2020 13:13:42 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id C865E2007D8; Thu, 30 Apr 2020 13:13:42 +0200 (CEST) Received: from localhost (fsr-ub1664-175.ea.freescale.net [10.171.82.40]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id AA7D920397; Thu, 30 Apr 2020 13:13:42 +0200 (CEST) Date: Thu, 30 Apr 2020 14:13:42 +0300 From: Abel Vesa To: Aisheng Dong Subject: Re: [PATCH v3 01/13] mfd: Add i.MX generic mix support Message-ID: <20200430111342.b2fj7ko3uvffv4wg@fsr-ub1664-175> References: <1586937773-5836-1-git-send-email-abel.vesa@nxp.com> <1586937773-5836-2-git-send-email-abel.vesa@nxp.com> <20200417080747.GE2167633@dell> <20200422091854.rhtkcfrdptwofngs@fsr-ub1664-175> <20200424062727.GI3612@dell> <20200430100355.zwl7wfbq64cikqxp@fsr-ub1664-175> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180622 X-Virus-Scanned: ClamAV using ClamSMTP X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200430_041346_770195_D2F0C380 X-CRM114-Status: GOOD ( 34.28 ) 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: "devicetree@vger.kernel.org" , Peng Fan , Sascha Hauer , "arnd@arndb.de" , Anson Huang , Stephen Boyd , Lee Jones , Linux Kernel Mailing List , dl-linux-imx , Philipp Zabel , Leonard Crestez , Shawn Guo , "linux-clk@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , Jacky Bai Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAtMDQtMzAgMTA6MjI6MDQsIEFpc2hlbmcgRG9uZyB3cm90ZToKPiA+IEZyb206IEFiZWwg VmVzYSA8YWJlbC52ZXNhQG54cC5jb20+Cj4gPiBTZW50OiBUaHVyc2RheSwgQXByaWwgMzAsIDIw MjAgNjowNCBQTQo+ID4gVG86IExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+Cj4gPiBP biAyMC0wNC0yNCAwNzoyNzoyNywgTGVlIEpvbmVzIHdyb3RlOgo+ID4gPiBPbiBUaHUsIDIzIEFw ciAyMDIwLCBBaXNoZW5nIERvbmcgd3JvdGU6Cj4gPiA+Cj4gPiA+ID4gPiBGcm9tOiBBYmVsIFZl c2EgPGFiZWwudmVzYUBueHAuY29tPgo+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBBcHJpbCAy MiwgMjAyMCA1OjE5IFBNIE9uIDIwLTA0LTE3IDA5OjA3OjQ3LCBMZWUKPiA+ID4gPiA+IEpvbmVz IHdyb3RlOgo+ID4gPiA+ID4gPiBPbiBXZWQsIDE1IEFwciAyMDIwLCBBYmVsIFZlc2Egd3JvdGU6 Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gU29tZSBvZiB0aGUgaS5NWCBTb0NzIGhhdmUgYSBJ UCBmb3IgaW50ZXJmYWNpbmcgdGhlIGRlZGljYXRlZAo+ID4gPiA+ID4gPiA+IElQcyB3aXRoIGNs b2NrcywgcmVzZXRzIGFuZCBpbnRlcnJ1cHRzLCBwbHVzIHNvbWUgb3RoZXIgc3BlY2lmaWMgY29u dHJvbAo+ID4gcmVnaXN0ZXJzLgo+ID4gPiA+ID4gPiA+IFRvIGFsbG93IHRoZSBmdW5jdGlvbmFs aXR5IHRvIGJlIHNwbGl0IGJldHdlZW4gZHJpdmVycywgdGhpcwo+ID4gPiA+ID4gPiA+IE1GRCBk cml2ZXIgaXMgYWRkZWQgdGhhdCBoYXMgb25seSB0d28gcHVycG9zZXM6IHJlZ2lzdGVyIHRoZQo+ ID4gPiA+ID4gPiA+IGRldmljZXMgYW5kIG1hcCB0aGUgZW50aXJlIHJlZ2lzdGVyIGFkZHJlc3Nl cy4gRXZlcnl0aGluZyBlbHNlCj4gPiA+ID4gPiA+ID4gaXMgbGVmdCB0byB0aGUgZGVkaWNhdGVk IGRyaXZlcnMgdGhhdCB3aWxsIGJpbmQgdG8gdGhlIHJlZ2lzdGVyZWQgZGV2aWNlcy4KPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEFiZWwgVmVzYSA8YWJlbC52ZXNh QG54cC5jb20+Cj4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvbWZkL0tj b25maWcgICB8IDExICsrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvbWZkL01ha2Vm aWxlICB8ICAxICsKPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9tZmQvaW14LW1peC5jIHwgNDgKPiA+ ID4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiA+ID4gPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspICBjcmVh dGUgbW9kZSAxMDA2NDQKPiA+ID4gPiA+ID4gPiBkcml2ZXJzL21mZC9pbXgtbWl4LmMKPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gRm9yIGNvbXBsZXRlbmVzcyAtIEFybmQncyByZXBseSB0byB0aGlz IHBhdGNoOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IEknbSByZXBseWluZyBoZXJl IHRvIEFybmQncyByZXBseS4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJJ20gdHJ5aW5nIHRvIGdpdmUg aGVyZSBhIHdob2xlIHBpY3R1cmUgb2YgdGhlIGVudGlyZSBwcm9ibGVtCj4gPiA+ID4gPiB3aGls ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgaS5NWDhNUCBpcyBfbm90IHlldF8gcHVibGljLgo+ID4g PiA+ID4KPiA+ID4gPiA+IEhpc3RvcmljYWxseSwgZWFjaCBJUCB3b3VsZCBoYXZlIGl0cyBvd24g ZW5jbG9zdXJlIGZvciBhbGwgdGhlIHJlbGF0ZWQgR1BScy4KPiA+ID4gPiA+IFN0YXJ0aW5nIHdp dGggaS5NWDhNUCBzb21lIEdQUnMgKGFuZCBzb21lIHN1YnBhcnRzKSBmcm9tIHRoZSBJUAo+ID4g PiA+ID4gd2VyZSBwbGFjZWQgaW5zaWRlIHRoZXNlIG1peGVzLgo+ID4gPiA+ID4KPiA+ID4gPiA+ IEF1ZGlvbWl4IGZvciBleGFtcGxlLCBoYXMgbXVsdGlwbGUgU0FJcywgYSBQTEwsIGFuZCBzb21l IHJlc2V0Cj4gPiA+ID4gPiBiaXRzIGZvciBFQVJDIGFuZCBzb21lIEdQUnMgZm9yIEF1ZGlvRFNQ LiBUaGlzIG1lYW5zIHRoYXQgaS5NWDhNUAo+ID4gPiA+ID4gaGFzIDcgU0FJcywgMSBFQVJDIGFu ZAo+ID4gPiA+ID4gMSBBdWRpb0RTUC4KPiA+ID4gPiA+IEZ1dHVyZSBwbGF0Zm9ybXMgbWlnaHQg aGF2ZSBkaWZmZXJlbnQgbnVtYmVycyBvZiBTQUlzLCBFQVJDcyBvcgo+ID4gQXVkaW9EU1BzLgo+ ID4gPiA+ID4gVGhlIFBMTCBjYW4ndCBiZSBwbGFjZWQgaW4gb25lIG9mIHRob3NlIFNBSXMgYW5k IGl0IHdhcyBwbGFjZWQgaW4gYXVkaW9taXguCj4gPiA+ID4gPiBUaGUgaS5NWDhNUCBoYXMgYXQg bGVhc3QgNCBvZiB0aGVzZSBtaXhlcy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBOb3csIHRoZSBjb21t b25hbGl0aWVzIGJldHdlZW4gYWxsIG1peGVzIGFyZToKPiA+ID4gPiA+ICAtIGhhdmUgdGhlaXIg b3duIHBvd2VyIGRvbWFpbnMKPiA+ID4gPiA+ICAtIGRyaXZlbiBieSBkZWRpY2F0ZWQgY2xvY2sg c2xpY2UKPiA+ID4gPiA+ICAtIGNvbnRhaW4gY2xvY2tzIGFuZCByZXNldHMKPiA+ID4gPiA+ICAt IHNvbWUgdmVyeSBzdWJzeXN0ZW0gc3BlY2lmaWMgR1BScwo+ID4gPiA+ID4KPiA+ID4gPiA+IEtu b3dpbmcgdGhhdCBlYWNoIG1peCBoYXMgaXRzIG93biBwb3dlciBkb21haW4sIEFGQUlDVCwgaXQg bmVlZHMKPiA+ID4gPiA+IHRvIGJlIHJlZ2lzdGVyZWQgYXMgYSBzaW5nbGUgZGV2aWNlLiBDb25z aWRlcmluZyB0aGF0IGl0IGNhbiBoYXZlCj4gPiA+ID4gPiBjbG9ja3MgKGF1ZGlvbWl4IGhhcyBn YXRlcywgbXV4ZXMgYW5kIHBsbHMpLCBJIGJlbGlldmUgdGhhdCBuZWVkcwo+ID4gPiA+ID4gYSBj bG9jayBkcml2ZXIsIGV2ZW4gbW9yZSBzbyBzaW5jZSB0aGUgbXV4ZXMgbmVlZCB0aGVpciBwYXJl bnRzCj4gPiA+ID4gPiBmcm9tIHRoZSBwbGF0Zm9ybSBjbG9jayBkcml2ZXIuIFNhbWUgcHJpbmNp cGxlIGFwcGxpZXMgdG8gcmVzZXQKPiA+ID4gPiA+IGJpdHMuIFRoZSBzdWJzeXN0ZW0gc3BlY2lm aWMgR1BScyBjYW4gYmUgcmVnaXN0ZXJlZCBhcyBzeXNjb24KPiA+ID4gPiA+IGRldmljZXMgYW5k IHRha2VuIGNhcmUgb2YgYnkgaXRzIGNvdW50ZXJwYXJ0IElQIChlLmcuIHRoZSBBdWRpb0RTUCBz cGVjaWZpYwo+ID4gcmVncyB3b3VsZCBiZSB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBEU1AgZHJpdmVy LCBpZiB0aGVyZSBpcyBvbmUpLgo+ID4gPiA+ID4KPiA+ID4gPiA+IE5vdyBiYXNlZCBvbiBhbGwg b2YgdGhlIGFib3ZlLCBieSB1c2luZyBNRkQgd2UgdGFrZSBjYXJlIG9mIHRoZQo+ID4gPiA+ID4g cG93ZXIgZG9tYWluIGNvbnRyb2wgZm9yIHRoZSBlbnRpcmUgbWl4LCBwbHVzLCB0aGUgTUZEIGRv ZXNuJ3QKPiA+ID4gPiA+IGhhdmUgYW55IGtpbmQgb2YgZnVuY3Rpb25hbGl0eSBieSBpdHMgb3du LCByZWx5aW5nIG9uIGl0cyBjaGlsZHJlbgo+ID4gPiA+ID4gZGV2aWNlcyB0aGF0IGFyZSBwb3B1 bGF0ZWQgYmFzZWQgb24gd2hhdCBpcyBpbiB0aGUgbWl4IE1GRCBkZXZpY2V0cmVlCj4gPiBub2Rl Lgo+ID4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IEhvdyBhYm91dCBkb2luZyBsaWtlIHRoaXMgd2hp Y2ggbWF5YmUgY2FuIGFkZHJlc3MgQXJuZCdzIGNvbmNlcm5zPwo+ID4gPiA+IGF1ZGlvbWl4OiBh dWRpb21peEAzMGUyMDAwMCB7Cj4gPiA+ID4gICAgICAgICBjb21wYXRpYmxlID0gImZzbCxpbXg4 bXAtYXVkaW9taXgiLCAic3lzY29uIjsKPiA+ID4gPiAgICAgICAgIHJlZyA9IDwweDMwZTIwMDAw IHh4eD4sCj4gPiA+ID4gICAgICAgICAgICAgICA8MHgzMGUyMHh4eCB4eHg+Owo+ID4gPiA+ICAg ICAgICAgcmVnLW5hbWVzID0gImF1ZGlvIiwgInJlc2V0IiwgIi4uLiI7Cj4gPiA+ID4gICAgICAg ICAjY2xvY2stY2VsbHMgPSA8MT47Cj4gPiA+ID4gICAgICAgICAjcmVzZXQtY2VsbHMgPSA8MT47 Cj4gPiA+ID4gICAgICAgICBwb3dlci1kb21haW5zID0gPCZhdWRpb21peF9wZD47IH0KPiA+ID4g Pgo+ID4gPiA+IFRoYXQgbWVhbnMgd2UgaGF2ZSBvbmUgY29tYm8gZHJpdmVyIHJlZ2lzdGVyaW5n IHR3byBjb250cm9sbGVycwo+ID4gPiA+IChjbGsvcmVzZXQpLCBib3RoIHVzZSB0aGUgc2FtZSBw b3dlciBkb21haW4gYXMgYXVkaW9taXguCj4gPiA+ID4gQW5kIGl0IGNhbiBiZSBlYXNpbHkgZXh0 ZW5kZWQgdG8gc3VwcG9ydCBtb3JlIHNlcnZpY2VzIHByb3ZpZGVkIGJ5Cj4gPiA+ID4gYXVkaW9t aXggb3ZlciBzeXNjb24gaWYgbmVlZGVkLgo+ID4gPiA+IFRoZW4gdGhlICdkdW1teScgTURGIGRy aXZlciBpcyBub3QgbmVlZGVkIGFueW1vcmUuCj4gPiA+ID4KPiA+ID4gPiBKb25lcyAmIEFybmQs Cj4gPiA+ID4gSG93IGRvIHlvdSB0aGluaz8KPiA+ID4KPiA+ID4gU291bmRzIG9rYXkgaW4gcHJp bmNpcGxlLiAgQW55dGhpbmcgdGhhdCBwcmV2ZW50cyB0aGUgZXhpc3RlbmNlIG9mIGEKPiA+ID4g ZHVtbXkgKGEuay5hLiBwb2ludGxlc3MpIE1GRCBtdXN0IGJlIHNlZW4gYXMgYSBwb3NpdGl2ZSBt b3ZlLgo+ID4gPgo+ID4gCj4gPiBPSywgSSdsbCBkbyBpdCBpbiBhIHNpbmdsZSBkcml2ZXIgYW5k IHNpbmdsZSBkdHMgbm9kZS4KPiA+IAo+ID4gQnV0IHRoZXJlIG1pZ2h0IGJlIGFuIGlzc3VlIHdp dGggdGhlIHBsYWNlbWVudCBvZiB0aGlzIG5ldyBkcml2ZXIuCj4gPiAKPiA+IGRyaXZlcnMvY2xr L2lteC8gY291bGQgYmUgYW4gb3B0aW9uLCBidXQgdGhlIGRyaXZlciB3aWxsIHVzZSBhIGxvdCBv ZiBkaWZmZXJlbnQgQVBJcwo+ID4gZnJvbSBkaWZmZXJlbnQgc3Vic3lzdGVtcy4gTm90IHRoZSBh dWRpb21peCwgYnV0IHRoZSBmdXR1cmUgbWl4ZXMuCj4gCj4gTWF5YmUgU3RlcGhlbiBjb3VsZCBj b21tZW50IHdoZXRoZXIgaXQncyBvayB0byBwdXNoIGEgY29tYm8gZHJpdmVyCj4gKGUuZy4gY2xr JnJlc2V0JnN5c2NvbikgSW4gZHJpdmVycy9jbGsvaW14Lgo+IAo+IEZyb20gd2hhdCB3ZSBzZWUs IGl0IHNlZW1zIGFscmVhZHkgc29tZSBzaW1pbGFyIGNvbWJvIGRyaXZlcnMgKGNsayZyZXNldCkg dGhlcmUuCj4gCj4gQlRXLCBub3Qgc3VyZSBpZiBhbnkgdGVjaG5pY2FsIGJsb2NrIHJlYXNvbnMg dG8gcHV0IGluIGRyaXZlcnMvY2xrLgo+IE1heWJlIHdlIGNhbiBxdWlja2x5IHRyeSBpbnRlcm5h bGx5IGZpcnN0Lgo+IAoKV29ya2luZyBvbiBpdCBhbHJlYWR5LgoKPiBSZWdhcmRzCj4gQWlzaGVu Zwo+IAo+ID4gCj4gPiA+IC0tCj4gPiA+IExlZSBKb25lcyBb5p2O55C85pavXQo+ID4gPiBMaW5h cm8gU2VydmljZXMgVGVjaG5pY2FsIExlYWQKPiA+ID4gTGluYXJvLm9yZyDilIIgT3BlbiBzb3Vy Y2Ugc29mdHdhcmUgZm9yIEFSTSBTb0NzIEZvbGxvdyBMaW5hcm86IEZhY2Vib29rCj4gPiA+IHwg VHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK