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 5C443C27C54 for ; Thu, 6 Jun 2024 11:17:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=RSZUHBAYaHL3BMvGmdMY1lDKdN8dvOSdJXvo60NyG/Y=; b=nqjEygrYHlDcChGHHgqhMslj2a C2AZXiHvY1+9uCVpQ4NBSR71I/YGLuFMR8Megh7ycPic9Of21VWyCHpkikAfNx9YgDPWPHOqLB1Lt WJwPKephz7T7M2B6tjwHfyc2atl49v4rXpppm/COw3zNIi5946MDusRyb8rb4xbMLoEHA5JBeYA3e dAVUMddpenUeN2BfiC4i9Iy5X1Amb4UBxP/SULkOc6oJ2X4Pl4MJFWwvEo07lR5Nsbs5qVCUsX35K I1fMXowyPDv/EehIlF2REaATnJPURlE/+R3W/DB3Wv3dei5rP9kOVHcrRl8aYZtszgtyMlygHeWvc SDpVvDbg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFB7M-00000009V6N-0G4d; Thu, 06 Jun 2024 11:17:16 +0000 Received: from madrid.collaboradmins.com ([2a00:1098:ed:100::25]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFB7I-00000009V4t-0T2y; Thu, 06 Jun 2024 11:17:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1717672630; bh=oeA5U1dOP1fkZuCJTDBmCrBPiCffZl7cApyojpOoeKA=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=4GoOi8snV8Yb/VuOTJ5QixOhvORfiktqnLBtl0DCGL1cm6Wp6wRqRoSMQ8qbqllOV P8CMtQgmIQjkgkqX5g79flLvzr5rvaiSSyrnK8sswcfSDKg2wHxltGGHba6Wf4To5N AkmLmJlrZirdWzGE3I5UIXq9OUurbm8YgDqBhONEEH4S22RkSar96DF+EFuJOQWeXT lb5t2H/9zNQeAejsLTBSeIvF3jadA7vGo4JixiM8a4iEqVzQOpvW/ItuiBwqTr86nQ t3UlI0xoUF1xFbEI3AwLOy3X9/6BifNtjxQGSrMQkgqD+1JgBAeXyWY/jVycW2Omi3 CNxPgsrOi8vqQ== Received: from [100.113.186.2] (cola.collaboradmins.com [195.201.22.229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madrid.collaboradmins.com (Postfix) with ESMTPSA id 82FB7378061A; Thu, 6 Jun 2024 11:17:08 +0000 (UTC) Message-ID: <7f1b4a45-04cf-4b6d-878a-5bd0054a9ac0@collabora.com> Date: Thu, 6 Jun 2024 13:17:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 2/3] dt-bindings: arm: mediatek: mmsys: Add OF graph support for board path To: Chen-Yu Tsai Cc: =?UTF-8?B?Q0sgSHUgKOiDoeS/iuWFiSk=?= , "chunkuang.hu@kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "devicetree@vger.kernel.org" , "tzimmermann@suse.de" , =?UTF-8?B?U2hhd24gU3VuZyAo5a6L5a2d6KyZKQ==?= , "mripard@kernel.org" , =?UTF-8?B?Sml0YW8gU2hpICjnn7PorrDmtpsp?= , "daniel@ffwll.ch" , "p.zabel@pengutronix.de" , "conor+dt@kernel.org" , "maarten.lankhorst@linux.intel.com" , "robh@kernel.org" , "dri-devel@lists.freedesktop.org" , "airlied@gmail.com" , "krzysztof.kozlowski+dt@linaro.org" , "kernel@collabora.com" , "matthias.bgg@gmail.com" , =?UTF-8?B?WXUtY2hhbmcgTGVlICjmnY7nprnnkosp?= , "linux-arm-kernel@lists.infradead.org" , "amergnat@baylibre.com" References: <20240521075717.50330-1-angelogioacchino.delregno@collabora.com> <20240521075717.50330-3-angelogioacchino.delregno@collabora.com> <0e0fe86c-92da-43f5-89d7-8084274a908a@collabora.com> From: AngeloGioacchino Del Regno Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240606_041712_342758_9F424FA1 X-CRM114-Status: GOOD ( 39.89 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Il 06/06/24 08:46, Chen-Yu Tsai ha scritto: > On Wed, Jun 5, 2024 at 7:15 PM AngeloGioacchino Del Regno > wrote: >> >> Il 05/06/24 03:38, CK Hu (胡俊光) ha scritto: >>> Hi, Angelo: >>> >>> On Tue, 2024-05-21 at 09:57 +0200, AngeloGioacchino Del Regno wrote: >>>> Document OF graph on MMSYS/VDOSYS: this supports up to three DDP paths >>>> per HW instance (so potentially up to six displays for multi-vdo SoCs). >>>> >>>> The MMSYS or VDOSYS is always the first component in the DDP pipeline, >>>> so it only supports an output port with multiple endpoints - where each >>>> endpoint defines the starting point for one of the (currently three) >>>> possible hardware paths. >>>> >>>> Reviewed-by: Rob Herring (Arm) >>>> Reviewed-by: Alexandre Mergnat >>>> Tested-by: Alexandre Mergnat >>>> Signed-off-by: AngeloGioacchino Del Regno >>>> --- >>>> .../bindings/arm/mediatek/mediatek,mmsys.yaml | 28 +++++++++++++++++++ >>>> 1 file changed, 28 insertions(+) >>>> >>>> diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml >>>> index b3c6888c1457..0ef67ca4122b 100644 >>>> --- a/Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml >>>> +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml >>>> @@ -93,6 +93,34 @@ properties: >>>> '#reset-cells': >>>> const: 1 >>>> >>>> + port: >>>> + $ref: /schemas/graph.yaml#/properties/port >>>> + description: >>>> + Output port node. This port connects the MMSYS/VDOSYS output to >>>> + the first component of one display pipeline, for example one of >>>> + the available OVL or RDMA blocks. >>>> + Some MediaTek SoCs support multiple display outputs per MMSYS. >>> >>> This patch looks good to me. Just want to share another information for you. >>> Here is an example that mmsys/vdosys could point to the display interface node. >>> >>> vdosys0: syscon@1c01a000 { >>> mmsys-display-interface = <&dsi0>, <&dsi1>, <&dp_intf0>; >>> }; >>> >>> vdosys1: syscon@1c100000 { >>> mmsys-display-interface = <&dp_intf1>; >>> }; >>> >>> There is no conflict that mmsys/vdosys point to first component of one display pipeline or point to display interface. >>> Both could co-exist. >>> >> >> Hey CK, >> >> yes, this could be an alternative to the OF graphs, and I'm sure that it'd work, >> even though this kind of solution would still require partial hardcoding of the >> display paths up until mmsys-display-interface (so, up until DSI0, or DSI1, etc). > > I think you might be misunderstanding CK's proposal? He's simply saying that > instead of pointing to the start of the pipeline, point to the end instead. > You can still use the OF graph and work backwards from the output. > Oh, well, if I'm misunderstanding, sorry about that! Though, OF Graphs are describing a "sequence of stuff" (sorry for the suboptimal wording) and, well, the data goes from A to C with B in the middle, so the graph starts at A, goes to B, then goes to C. Starting from A, going to C, then backwards to B would be actually wrong, as that appears to describe that the pipeline goes A->C->B instead of A->B->C. >> The problem with a solution like this is that, well, even though it would work, >> even if we ignore the suboptimal partial hardcoding, OF graphs are something >> generic, while the mmsys-display-interface would be a MediaTek specific/custom >> property. >> >> In the end, reusing generic kernel apis/interfaces/etc is always preferred >> compared to custom solutions, especially in this case, in which the generic >> stuff is on-par (or actually, depending purely on personal opinions, superior). > > Here you are mixing hardware descriptions and kernel implementation details. > Not really. I'm saying that OF Graph would be preferred compared to a custom propety, when they both do the same. But again, I might have misunderstood what CK was trying to say, so just leave it. > I think this goes back to whether the mmsys/vdosys is actually part of the > graph or not. It certainly controls the muxes within the graph. But that > doesn't mean it has to be within the graph itself. It can just have pointers > to entry points of the graph (for which you would have a couple lines of > custom code [1]). If the data doesn't flow through the mmsys/vdosys, then ^^^ [1] is a link I think? You missed it! :-) > I would argue that it is not part of the graph. It's part of the graph, because it is setting up the pipeline - and it's doing that in hardware, by doing the muxing as you said. I could even go on arguing that the data does actually pass through that, but I don't want to start any big deal around that, so I won't. > > I would also argue that the data path should be fully described in the > device tree, not hardcoding paths based on board usage. Yes, that's what I also said (perhaps I should've been clearer) since the very beginning, and it's exactly what made me put effort in making this series, so we are totally agreeing on this point. Cheers, Angelo > The latter is > a policy / design decision, not a hardware capability. > > > ChenYu > >> As for the two to co-exist, I'm not sure that this is actually needed, as the >> OF graphs are already (at the end of the graph) pointing to the display interface. >> >> In any case, just as a reminder: if there will be any need to add any custom >> MediaTek specific properties later, it's ok and we can do that at any time. >> >> Cheers! >> Angelo >> >>> Regards, >>> CK >>> >>>> + properties: >>>> + endpoint@0: >>>> + $ref: /schemas/graph.yaml#/properties/endpoint >>>> + description: Output to the primary display pipeline >>>> + >>>> + endpoint@1: >>>> + $ref: /schemas/graph.yaml#/properties/endpoint >>>> + description: Output to the secondary display pipeline >>>> + >>>> + endpoint@2: >>>> + $ref: /schemas/graph.yaml#/properties/endpoint >>>> + description: Output to the tertiary display pipeline >>>> + >>>> + anyOf: >>>> + - required: >>>> + - endpoint@0 >>>> + - required: >>>> + - endpoint@1 >>>> + - required: >>>> + - endpoint@2 >>>> + >>>> required: >>>> - compatible >>>> - reg >> >> 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 A7709C25B75 for ; Thu, 6 Jun 2024 11:17:27 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GmraQtM9UnbS6UDEimz+98M9LJJB/MRpTM61maHlDjM=; b=O4Qe6mHq9yO/FU pHSLRJVf5qXuxeIQ2powf9YYSjEIu2QLi3JJqoH7AyQ2rfKql2gVuyqTEJKGFr7hSVRjoWUFt4/+Y Fiwt9Q0T7lAMsgJnmXNt7WzaMjhjRSJbd1Fog6JDRubyTan4bPi3Ja2oCkOhUd+Cv/t3dDZM63vBa Rs1HCa9SJik5b48IU+C+NRlRQGk3vgg2fiqMgi0DRomGTustd7KG4PX4nWL2XMUqwImIWLdMZTsAm tsSr11+lSVaYMuZJT74c2wF3vKU4Fq1Jq0tWGopitrMP5edIuJilXwP1OgOjdtKiwjMppwk5Ts8mA qAZc+Z3tKY4dFn8xB93g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFB7L-00000009V64-1sbD; Thu, 06 Jun 2024 11:17:15 +0000 Received: from madrid.collaboradmins.com ([2a00:1098:ed:100::25]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFB7I-00000009V4t-0T2y; Thu, 06 Jun 2024 11:17:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1717672630; bh=oeA5U1dOP1fkZuCJTDBmCrBPiCffZl7cApyojpOoeKA=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=4GoOi8snV8Yb/VuOTJ5QixOhvORfiktqnLBtl0DCGL1cm6Wp6wRqRoSMQ8qbqllOV P8CMtQgmIQjkgkqX5g79flLvzr5rvaiSSyrnK8sswcfSDKg2wHxltGGHba6Wf4To5N AkmLmJlrZirdWzGE3I5UIXq9OUurbm8YgDqBhONEEH4S22RkSar96DF+EFuJOQWeXT lb5t2H/9zNQeAejsLTBSeIvF3jadA7vGo4JixiM8a4iEqVzQOpvW/ItuiBwqTr86nQ t3UlI0xoUF1xFbEI3AwLOy3X9/6BifNtjxQGSrMQkgqD+1JgBAeXyWY/jVycW2Omi3 CNxPgsrOi8vqQ== Received: from [100.113.186.2] (cola.collaboradmins.com [195.201.22.229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madrid.collaboradmins.com (Postfix) with ESMTPSA id 82FB7378061A; Thu, 6 Jun 2024 11:17:08 +0000 (UTC) Message-ID: <7f1b4a45-04cf-4b6d-878a-5bd0054a9ac0@collabora.com> Date: Thu, 6 Jun 2024 13:17:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 2/3] dt-bindings: arm: mediatek: mmsys: Add OF graph support for board path To: Chen-Yu Tsai Cc: =?UTF-8?B?Q0sgSHUgKOiDoeS/iuWFiSk=?= , "chunkuang.hu@kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "devicetree@vger.kernel.org" , "tzimmermann@suse.de" , =?UTF-8?B?U2hhd24gU3VuZyAo5a6L5a2d6KyZKQ==?= , "mripard@kernel.org" , =?UTF-8?B?Sml0YW8gU2hpICjnn7PorrDmtpsp?= , "daniel@ffwll.ch" , "p.zabel@pengutronix.de" , "conor+dt@kernel.org" , "maarten.lankhorst@linux.intel.com" , "robh@kernel.org" , "dri-devel@lists.freedesktop.org" , "airlied@gmail.com" , "krzysztof.kozlowski+dt@linaro.org" , "kernel@collabora.com" , "matthias.bgg@gmail.com" , =?UTF-8?B?WXUtY2hhbmcgTGVlICjmnY7nprnnkosp?= , "linux-arm-kernel@lists.infradead.org" , "amergnat@baylibre.com" References: <20240521075717.50330-1-angelogioacchino.delregno@collabora.com> <20240521075717.50330-3-angelogioacchino.delregno@collabora.com> <0e0fe86c-92da-43f5-89d7-8084274a908a@collabora.com> From: AngeloGioacchino Del Regno Content-Language: en-US In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240606_041712_342758_9F424FA1 X-CRM114-Status: GOOD ( 39.89 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SWwgMDYvMDYvMjQgMDg6NDYsIENoZW4tWXUgVHNhaSBoYSBzY3JpdHRvOgo+IE9uIFdlZCwgSnVu IDUsIDIwMjQgYXQgNzoxNeKAr1BNIEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vCj4gPGFuZ2Vs b2dpb2FjY2hpbm8uZGVscmVnbm9AY29sbGFib3JhLmNvbT4gd3JvdGU6Cj4+Cj4+IElsIDA1LzA2 LzI0IDAzOjM4LCBDSyBIdSAo6IOh5L+K5YWJKSBoYSBzY3JpdHRvOgo+Pj4gSGksIEFuZ2VsbzoK Pj4+Cj4+PiBPbiBUdWUsIDIwMjQtMDUtMjEgYXQgMDk6NTcgKzAyMDAsIEFuZ2Vsb0dpb2FjY2hp bm8gRGVsIFJlZ25vIHdyb3RlOgo+Pj4+IERvY3VtZW50IE9GIGdyYXBoIG9uIE1NU1lTL1ZET1NZ UzogdGhpcyBzdXBwb3J0cyB1cCB0byB0aHJlZSBERFAgcGF0aHMKPj4+PiBwZXIgSFcgaW5zdGFu Y2UgKHNvIHBvdGVudGlhbGx5IHVwIHRvIHNpeCBkaXNwbGF5cyBmb3IgbXVsdGktdmRvIFNvQ3Mp Lgo+Pj4+Cj4+Pj4gVGhlIE1NU1lTIG9yIFZET1NZUyBpcyBhbHdheXMgdGhlIGZpcnN0IGNvbXBv bmVudCBpbiB0aGUgRERQIHBpcGVsaW5lLAo+Pj4+IHNvIGl0IG9ubHkgc3VwcG9ydHMgYW4gb3V0 cHV0IHBvcnQgd2l0aCBtdWx0aXBsZSBlbmRwb2ludHMgLSB3aGVyZSBlYWNoCj4+Pj4gZW5kcG9p bnQgZGVmaW5lcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIG9uZSBvZiB0aGUgKGN1cnJlbnRseSB0 aHJlZSkKPj4+PiBwb3NzaWJsZSBoYXJkd2FyZSBwYXRocy4KPj4+Pgo+Pj4+IFJldmlld2VkLWJ5 OiBSb2IgSGVycmluZyAoQXJtKSA8cm9iaEBrZXJuZWwub3JnPgo+Pj4+IFJldmlld2VkLWJ5OiBB bGV4YW5kcmUgTWVyZ25hdCA8YW1lcmduYXRAYmF5bGlicmUuY29tPgo+Pj4+IFRlc3RlZC1ieTog QWxleGFuZHJlIE1lcmduYXQgPGFtZXJnbmF0QGJheWxpYnJlLmNvbT4KPj4+PiBTaWduZWQtb2Zm LWJ5OiBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxyZWdu b0Bjb2xsYWJvcmEuY29tPgo+Pj4+IC0tLQo+Pj4+ICAgIC4uLi9iaW5kaW5ncy9hcm0vbWVkaWF0 ZWsvbWVkaWF0ZWssbW1zeXMueWFtbCB8IDI4ICsrKysrKysrKysrKysrKysrKysKPj4+PiAgICAx IGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssbW1z eXMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsv bWVkaWF0ZWssbW1zeXMueWFtbAo+Pj4+IGluZGV4IGIzYzY4ODhjMTQ1Ny4uMGVmNjdjYTQxMjJi IDEwMDY0NAo+Pj4+IC0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0v bWVkaWF0ZWsvbWVkaWF0ZWssbW1zeXMueWFtbAo+Pj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssbW1zeXMueWFtbAo+Pj4+IEBA IC05Myw2ICs5MywzNCBAQCBwcm9wZXJ0aWVzOgo+Pj4+ICAgICAgJyNyZXNldC1jZWxscyc6Cj4+ Pj4gICAgICAgIGNvbnN0OiAxCj4+Pj4KPj4+PiArICBwb3J0Ogo+Pj4+ICsgICAgJHJlZjogL3Nj aGVtYXMvZ3JhcGgueWFtbCMvcHJvcGVydGllcy9wb3J0Cj4+Pj4gKyAgICBkZXNjcmlwdGlvbjoK Pj4+PiArICAgICAgT3V0cHV0IHBvcnQgbm9kZS4gVGhpcyBwb3J0IGNvbm5lY3RzIHRoZSBNTVNZ Uy9WRE9TWVMgb3V0cHV0IHRvCj4+Pj4gKyAgICAgIHRoZSBmaXJzdCBjb21wb25lbnQgb2Ygb25l IGRpc3BsYXkgcGlwZWxpbmUsIGZvciBleGFtcGxlIG9uZSBvZgo+Pj4+ICsgICAgICB0aGUgYXZh aWxhYmxlIE9WTCBvciBSRE1BIGJsb2Nrcy4KPj4+PiArICAgICAgU29tZSBNZWRpYVRlayBTb0Nz IHN1cHBvcnQgbXVsdGlwbGUgZGlzcGxheSBvdXRwdXRzIHBlciBNTVNZUy4KPj4+Cj4+PiBUaGlz IHBhdGNoIGxvb2tzIGdvb2QgdG8gbWUuIEp1c3Qgd2FudCB0byBzaGFyZSBhbm90aGVyIGluZm9y bWF0aW9uIGZvciB5b3UuCj4+PiBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBtbXN5cy92ZG9zeXMg Y291bGQgcG9pbnQgdG8gdGhlIGRpc3BsYXkgaW50ZXJmYWNlIG5vZGUuCj4+Pgo+Pj4gdmRvc3lz MDogc3lzY29uQDFjMDFhMDAwIHsKPj4+ICAgICAgICAgICAgIG1tc3lzLWRpc3BsYXktaW50ZXJm YWNlID0gPCZkc2kwPiwgPCZkc2kxPiwgPCZkcF9pbnRmMD47Cj4+PiB9Owo+Pj4KPj4+IHZkb3N5 czE6IHN5c2NvbkAxYzEwMDAwMCB7Cj4+PiAgICAgICAgICAgICBtbXN5cy1kaXNwbGF5LWludGVy ZmFjZSA9IDwmZHBfaW50ZjE+Owo+Pj4gfTsKPj4+Cj4+PiBUaGVyZSBpcyBubyBjb25mbGljdCB0 aGF0IG1tc3lzL3Zkb3N5cyBwb2ludCB0byBmaXJzdCBjb21wb25lbnQgb2Ygb25lIGRpc3BsYXkg cGlwZWxpbmUgb3IgcG9pbnQgdG8gZGlzcGxheSBpbnRlcmZhY2UuCj4+PiBCb3RoIGNvdWxkIGNv LWV4aXN0Lgo+Pj4KPj4KPj4gSGV5IENLLAo+Pgo+PiB5ZXMsIHRoaXMgY291bGQgYmUgYW4gYWx0 ZXJuYXRpdmUgdG8gdGhlIE9GIGdyYXBocywgYW5kIEknbSBzdXJlIHRoYXQgaXQnZCB3b3JrLAo+ PiBldmVuIHRob3VnaCB0aGlzIGtpbmQgb2Ygc29sdXRpb24gd291bGQgc3RpbGwgcmVxdWlyZSBw YXJ0aWFsIGhhcmRjb2Rpbmcgb2YgdGhlCj4+IGRpc3BsYXkgcGF0aHMgdXAgdW50aWwgbW1zeXMt ZGlzcGxheS1pbnRlcmZhY2UgKHNvLCB1cCB1bnRpbCBEU0kwLCBvciBEU0kxLCBldGMpLgo+IAo+ IEkgdGhpbmsgeW91IG1pZ2h0IGJlIG1pc3VuZGVyc3RhbmRpbmcgQ0sncyBwcm9wb3NhbD8gSGUn cyBzaW1wbHkgc2F5aW5nIHRoYXQKPiBpbnN0ZWFkIG9mIHBvaW50aW5nIHRvIHRoZSBzdGFydCBv ZiB0aGUgcGlwZWxpbmUsIHBvaW50IHRvIHRoZSBlbmQgaW5zdGVhZC4KPiBZb3UgY2FuIHN0aWxs IHVzZSB0aGUgT0YgZ3JhcGggYW5kIHdvcmsgYmFja3dhcmRzIGZyb20gdGhlIG91dHB1dC4KPiAK Ck9oLCB3ZWxsLCBpZiBJJ20gbWlzdW5kZXJzdGFuZGluZywgc29ycnkgYWJvdXQgdGhhdCEKClRo b3VnaCwgT0YgR3JhcGhzIGFyZSBkZXNjcmliaW5nIGEgInNlcXVlbmNlIG9mIHN0dWZmIiAoc29y cnkgZm9yIHRoZSBzdWJvcHRpbWFsCndvcmRpbmcpIGFuZCwgd2VsbCwgdGhlIGRhdGEgZ29lcyBm cm9tIEEgdG8gQyB3aXRoIEIgaW4gdGhlIG1pZGRsZSwgc28gdGhlIGdyYXBoCnN0YXJ0cyBhdCBB LCBnb2VzIHRvIEIsIHRoZW4gZ29lcyB0byBDLgoKU3RhcnRpbmcgZnJvbSBBLCBnb2luZyB0byBD LCB0aGVuIGJhY2t3YXJkcyB0byBCIHdvdWxkIGJlIGFjdHVhbGx5IHdyb25nLCBhcyB0aGF0CmFw cGVhcnMgdG8gZGVzY3JpYmUgdGhhdCB0aGUgcGlwZWxpbmUgZ29lcyBBLT5DLT5CIGluc3RlYWQg b2YgQS0+Qi0+Qy4KCj4+IFRoZSBwcm9ibGVtIHdpdGggYSBzb2x1dGlvbiBsaWtlIHRoaXMgaXMg dGhhdCwgd2VsbCwgZXZlbiB0aG91Z2ggaXQgd291bGQgd29yaywKPj4gZXZlbiBpZiB3ZSBpZ25v cmUgdGhlIHN1Ym9wdGltYWwgcGFydGlhbCBoYXJkY29kaW5nLCBPRiBncmFwaHMgYXJlIHNvbWV0 aGluZwo+PiBnZW5lcmljLCB3aGlsZSB0aGUgbW1zeXMtZGlzcGxheS1pbnRlcmZhY2Ugd291bGQg YmUgYSBNZWRpYVRlayBzcGVjaWZpYy9jdXN0b20KPj4gcHJvcGVydHkuCj4+Cj4+IEluIHRoZSBl bmQsIHJldXNpbmcgZ2VuZXJpYyBrZXJuZWwgYXBpcy9pbnRlcmZhY2VzL2V0YyBpcyBhbHdheXMg cHJlZmVycmVkCj4+IGNvbXBhcmVkIHRvIGN1c3RvbSBzb2x1dGlvbnMsIGVzcGVjaWFsbHkgaW4g dGhpcyBjYXNlLCBpbiB3aGljaCB0aGUgZ2VuZXJpYwo+PiBzdHVmZiBpcyBvbi1wYXIgKG9yIGFj dHVhbGx5LCBkZXBlbmRpbmcgcHVyZWx5IG9uIHBlcnNvbmFsIG9waW5pb25zLCBzdXBlcmlvciku Cj4gCj4gSGVyZSB5b3UgYXJlIG1peGluZyBoYXJkd2FyZSBkZXNjcmlwdGlvbnMgYW5kIGtlcm5l bCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgo+IAoKTm90IHJlYWxseS4gSSdtIHNheWluZyB0aGF0 IE9GIEdyYXBoIHdvdWxkIGJlIHByZWZlcnJlZCBjb21wYXJlZCB0byBhIGN1c3RvbQpwcm9wZXR5 LCB3aGVuIHRoZXkgYm90aCBkbyB0aGUgc2FtZS4KCkJ1dCBhZ2FpbiwgSSBtaWdodCBoYXZlIG1p c3VuZGVyc3Rvb2Qgd2hhdCBDSyB3YXMgdHJ5aW5nIHRvIHNheSwgc28ganVzdCBsZWF2ZSBpdC4K Cj4gSSB0aGluayB0aGlzIGdvZXMgYmFjayB0byB3aGV0aGVyIHRoZSBtbXN5cy92ZG9zeXMgaXMg YWN0dWFsbHkgcGFydCBvZiB0aGUKPiBncmFwaCBvciBub3QuIEl0IGNlcnRhaW5seSBjb250cm9s cyB0aGUgbXV4ZXMgd2l0aGluIHRoZSBncmFwaC4gQnV0IHRoYXQKPiBkb2Vzbid0IG1lYW4gaXQg aGFzIHRvIGJlIHdpdGhpbiB0aGUgZ3JhcGggaXRzZWxmLiBJdCBjYW4ganVzdCBoYXZlIHBvaW50 ZXJzCj4gdG8gZW50cnkgcG9pbnRzIG9mIHRoZSBncmFwaCAoZm9yIHdoaWNoIHlvdSB3b3VsZCBo YXZlIGEgY291cGxlIGxpbmVzIG9mCj4gY3VzdG9tIGNvZGUgWzFdKS4gSWYgdGhlIGRhdGEgZG9l c24ndCBmbG93IHRocm91Z2ggdGhlIG1tc3lzL3Zkb3N5cywgdGhlbgoKICAgICAgICAgICAgICAg Xl5eIFsxXSBpcyBhIGxpbmsgSSB0aGluaz8gWW91IG1pc3NlZCBpdCEgOi0pCgo+IEkgd291bGQg YXJndWUgdGhhdCBpdCBpcyBub3QgcGFydCBvZiB0aGUgZ3JhcGguCgpJdCdzIHBhcnQgb2YgdGhl IGdyYXBoLCBiZWNhdXNlIGl0IGlzIHNldHRpbmcgdXAgdGhlIHBpcGVsaW5lIC0gYW5kIGl0J3Mg ZG9pbmcgdGhhdAppbiBoYXJkd2FyZSwgYnkgZG9pbmcgdGhlIG11eGluZyBhcyB5b3Ugc2FpZC4K SSBjb3VsZCBldmVuIGdvIG9uIGFyZ3VpbmcgdGhhdCB0aGUgZGF0YSBkb2VzIGFjdHVhbGx5IHBh c3MgdGhyb3VnaCB0aGF0LCBidXQgSQpkb24ndCB3YW50IHRvIHN0YXJ0IGFueSBiaWcgZGVhbCBh cm91bmQgdGhhdCwgc28gSSB3b24ndC4KCj4gCj4gSSB3b3VsZCBhbHNvIGFyZ3VlIHRoYXQgdGhl IGRhdGEgcGF0aCBzaG91bGQgYmUgZnVsbHkgZGVzY3JpYmVkIGluIHRoZQo+IGRldmljZSB0cmVl LCBub3QgaGFyZGNvZGluZyBwYXRocyBiYXNlZCBvbiBib2FyZCB1c2FnZS4KClllcywgdGhhdCdz IHdoYXQgSSBhbHNvIHNhaWQgKHBlcmhhcHMgSSBzaG91bGQndmUgYmVlbiBjbGVhcmVyKSBzaW5j ZSB0aGUgdmVyeQpiZWdpbm5pbmcsIGFuZCBpdCdzIGV4YWN0bHkgd2hhdCBtYWRlIG1lIHB1dCBl ZmZvcnQgaW4gbWFraW5nIHRoaXMgc2VyaWVzLCBzbwp3ZSBhcmUgdG90YWxseSBhZ3JlZWluZyBv biB0aGlzIHBvaW50LgoKCkNoZWVycywKQW5nZWxvCgo+IFRoZSBsYXR0ZXIgaXMKPiBhIHBvbGlj eSAvIGRlc2lnbiBkZWNpc2lvbiwgbm90IGEgaGFyZHdhcmUgY2FwYWJpbGl0eS4KPiAKPiAKPiBD aGVuWXUKPiAKPj4gQXMgZm9yIHRoZSB0d28gdG8gY28tZXhpc3QsIEknbSBub3Qgc3VyZSB0aGF0 IHRoaXMgaXMgYWN0dWFsbHkgbmVlZGVkLCBhcyB0aGUKPj4gT0YgZ3JhcGhzIGFyZSBhbHJlYWR5 IChhdCB0aGUgZW5kIG9mIHRoZSBncmFwaCkgcG9pbnRpbmcgdG8gdGhlIGRpc3BsYXkgaW50ZXJm YWNlLgo+Pgo+PiBJbiBhbnkgY2FzZSwganVzdCBhcyBhIHJlbWluZGVyOiBpZiB0aGVyZSB3aWxs IGJlIGFueSBuZWVkIHRvIGFkZCBhbnkgY3VzdG9tCj4+IE1lZGlhVGVrIHNwZWNpZmljIHByb3Bl cnRpZXMgbGF0ZXIsIGl0J3Mgb2sgYW5kIHdlIGNhbiBkbyB0aGF0IGF0IGFueSB0aW1lLgo+Pgo+ PiBDaGVlcnMhCj4+IEFuZ2Vsbwo+Pgo+Pj4gUmVnYXJkcywKPj4+IENLCj4+Pgo+Pj4+ICsgICAg cHJvcGVydGllczoKPj4+PiArICAgICAgZW5kcG9pbnRAMDoKPj4+PiArICAgICAgICAkcmVmOiAv c2NoZW1hcy9ncmFwaC55YW1sIy9wcm9wZXJ0aWVzL2VuZHBvaW50Cj4+Pj4gKyAgICAgICAgZGVz Y3JpcHRpb246IE91dHB1dCB0byB0aGUgcHJpbWFyeSBkaXNwbGF5IHBpcGVsaW5lCj4+Pj4gKwo+ Pj4+ICsgICAgICBlbmRwb2ludEAxOgo+Pj4+ICsgICAgICAgICRyZWY6IC9zY2hlbWFzL2dyYXBo LnlhbWwjL3Byb3BlcnRpZXMvZW5kcG9pbnQKPj4+PiArICAgICAgICBkZXNjcmlwdGlvbjogT3V0 cHV0IHRvIHRoZSBzZWNvbmRhcnkgZGlzcGxheSBwaXBlbGluZQo+Pj4+ICsKPj4+PiArICAgICAg ZW5kcG9pbnRAMjoKPj4+PiArICAgICAgICAkcmVmOiAvc2NoZW1hcy9ncmFwaC55YW1sIy9wcm9w ZXJ0aWVzL2VuZHBvaW50Cj4+Pj4gKyAgICAgICAgZGVzY3JpcHRpb246IE91dHB1dCB0byB0aGUg dGVydGlhcnkgZGlzcGxheSBwaXBlbGluZQo+Pj4+ICsKPj4+PiArICAgIGFueU9mOgo+Pj4+ICsg ICAgICAtIHJlcXVpcmVkOgo+Pj4+ICsgICAgICAgICAgLSBlbmRwb2ludEAwCj4+Pj4gKyAgICAg IC0gcmVxdWlyZWQ6Cj4+Pj4gKyAgICAgICAgICAtIGVuZHBvaW50QDEKPj4+PiArICAgICAgLSBy ZXF1aXJlZDoKPj4+PiArICAgICAgICAgIC0gZW5kcG9pbnRAMgo+Pj4+ICsKPj4+PiAgICByZXF1 aXJlZDoKPj4+PiAgICAgIC0gY29tcGF0aWJsZQo+Pj4+ICAgICAgLSByZWcKPj4KPj4KCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==