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.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 9C66AC433ED for ; Wed, 31 Mar 2021 17:17:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 54FF261006 for ; Wed, 31 Mar 2021 17:17:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233934AbhCaRQw (ORCPT ); Wed, 31 Mar 2021 13:16:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229787AbhCaRQs (ORCPT ); Wed, 31 Mar 2021 13:16:48 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08473C061574; Wed, 31 Mar 2021 10:16:46 -0700 (PDT) Received: from [IPv6:2a02:810a:880:f54:d880:b6f8:f93d:245e] (unknown [IPv6:2a02:810a:880:f54:d880:b6f8:f93d:245e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dafna) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 220C01F45FA4; Wed, 31 Mar 2021 18:16:44 +0100 (BST) Subject: Re: [PATCH v5 1/2] dt-bindings: usb: add analogix,anx7688.yaml To: =?UTF-8?Q?Ond=c5=99ej_Jirman?= Cc: Laurent Pinchart , linux-usb@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, a.hajda@samsung.com, narmstrong@baylibre.com, jonas@kwiboo.se, jernej.skrabec@siol.net, airlied@linux.ie, daniel@ffwll.ch, chunkuang.hu@kernel.org, p.zabel@pengutronix.de, enric.balletbo@collabora.com, drinkcat@chromium.org, hsinyi@chromium.org, kernel@collabora.com, dafna3@gmail.com, robh+dt@kernel.org References: <20210305124351.15079-1-dafna.hirschfeld@collabora.com> <20210305124351.15079-2-dafna.hirschfeld@collabora.com> <35f505ee-d939-4b42-490b-321b961bdec3@collabora.com> <20210305172437.meu45ol7d4c3w2lr@core.my.home> From: Dafna Hirschfeld Message-ID: Date: Wed, 31 Mar 2021 19:16:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20210305172437.meu45ol7d4c3w2lr@core.my.home> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi, On 05.03.21 18:24, Ondřej Jirman wrote: > Hello Dafna, > > On Fri, Mar 05, 2021 at 04:14:03PM +0100, Dafna Hirschfeld wrote: >> Hi >> >> On 05.03.21 15:34, Laurent Pinchart wrote: >>> Hi Dafna, >>> >>> Thank you for the patch. >>> >>> On Fri, Mar 05, 2021 at 01:43:50PM +0100, Dafna Hirschfeld wrote: >>>> ANX7688 is a USB Type-C port controller with a MUX. It converts HDMI 2.0 to >>>> DisplayPort 1.3 Ultra-HDi (4096x2160p60). >>>> The integrated crosspoint switch (the MUX) supports USB 3.1 data transfer >>>> along with the DisplayPort Alternate Mode signaling over USB Type-C. >>>> Additionally, an on-chip microcontroller (OCM) is available to manage the >>>> signal switching, Channel Configuration (CC) detection, USB Power >>>> Delivery (USB-PD), Vendor Defined Message (VDM) protocol support and other >>>> functions as defined in the USB TypeC and USB Power Delivery >>>> specifications. >>>> >>>> ANX7688 is found on Acer Chromebook R13 (elm) and on >>>> Pine64 PinePhone. > > Thanks for your work on the bindings. :) It would be great to find something > acceptable for mainlining. > > A few comments based on my experience implementing the USB-PD part for PinePhone > are bellow. > >>>> +properties: >>>> + compatible: >>>> + const: analogix,anx7688 >>>> + >>>> + reg: >>>> + maxItems: 1 >>>> + >>>> + avdd33-supply: >>>> + description: 3.3V Analog core supply voltage. >>>> + >>>> + dvdd18-supply: >>>> + description: 1.8V Digital I/O supply voltage. >>>> + >>>> + avdd18-supply: >>>> + description: 1.8V Analog core power supply voltage. >>>> + >>>> + avdd10-supply: >>>> + description: 1.0V Analog core power supply voltage. >>>> + >>>> + dvdd10-supply: >>>> + description: 1.0V Digital core supply voltage. >>>> + >>> >>> That's lots of supplies. If there's a reasonable chance that some of >>> them will always be driven by the same regulator (especially if the >>> ANX7688 documentation requires that), then they could be grouped. For >>> instance dvdd18-supply and avdd18-supply could be grouped into >>> vdd18-supply. It would still allow us to extend the bindings in a >>> backward compatible way later if a system uses different regulators. You >>> have more information about the hardware than I do, so it's your call. > > On PinePhone, AVDD and DVDD for 1.0V are just separately fitlered outputs > from the same regulator. So it would work there to just use vdd18 and > vdd10. The same is true for reference design, so it's probably safe > to assume this can be simplified. > >>>> + hdmi5v-supply: >>>> + description: 5V power supply for the HDMI. >>>> + >>>> + hdmi_vt-supply: >>>> + description: Termination voltage for HDMI input. >>> >>> Maybe hdmi-vt-supply ? >>> >>>> + >>>> + clocks: >>>> + description: The input clock specifier. >>>> + maxItems: 1 >>> >>> How about >>> >>> items: >>> - description: The input clock specifier. >>> >>>> + >>>> + clock-names: >>>> + items: >>>> + - const: xtal >>>> + >>>> + hpd-gpios: >>>> + description: | >>>> + In USB Type-C applications, DP_HPD has no use. In standard DisplayPort >>>> + applications, DP_HPD is used as DP hot-plug. >>>> + maxItems: 1 > > On PinePhone this is wired to a HDMI port on the SoC, and HPD is handled by the > sun4i HDMI DRM driver. Seems like HPD will be handled by HDMI controller on > many/all? other platforms too. Why have it here? Right, I didn't have the full picture when listing all the pins of the anx7688. I was not sure what should be listed. I will remove that. > >>>> + enable-gpios: >>>> + description: Chip power down control. No internal pull-down or pull-up resistor. >>>> + maxItems: 1 >>>> + >>>> + reset-gpios: >>>> + description: Reset input signal. Active low. >>>> + maxItems: 1 >>>> + >>>> + vbus-det-gpios: >>>> + description: | >>>> + An input gpio for VBUS detection and high voltage detection, >>>> + external resistance divide VBUS voltage to 1/8. >>>> + maxItems: 1 > > Why have this in the bindings? It seems that this is handled internally by the > ANX7688 via OCM firmware. And it's not really gpio either, it's an analog input > with AD converter hooked to it internally. I will remove that. > >>>> + interrupts: >>>> + description: | >>>> + The interrupt notifies 4 possible events - TCPC ALERT int, PD int, DP int, HDMI int. >>>> + maxItems: 1 >>>> + >>>> + cabledet-gpios: >>>> + description: An output gpio, indicates by the device that a cable is plugged. >>>> + maxItems: 1 >>>> + >>>> + vbus-ctrl-gpios: >>>> + description: >>>> + External VBUS power path. Enable VBUS source and disable VBUS sink or vice versa. >>>> + maxItems: 1 > > VBUS control seems to be already modelled by the usb-connector bindings. Why > have this here? dito > >>>> + vconn-en1-gpios: >>>> + description: Controls the VCONN switch on the CC1 pin. >>>> + maxItems: 1 >>>> + >>>> + vconn-en2-gpios: >>>> + description: Controls the VCONN switch on the CC2 pin. >>>> + maxItems: 1 > > VCONN is a voltage regulator that can be enabled either on CC1 or CC2 > pin, or disabled completely. This control is *partially* performed in reference > design directly by the OCM. OCM only decides which CC pin to switch > the VCONN regulator to, and informs the SoC when the base VCONN regulator > for the switches needs to be enabled. > > So vconn-en1/2 gpios are irrelevant to the driver, but the driver needs > to control VCONN power supply somehow and defer control over it to the OCM. > > I don't know how to express it in the bindings. Maybe a vconn-supply here > on the anx7688 node? > > It may also be part of the usb-connector binding, but this is really when it > comes to anx7688 a parent regulator for the switches, and switches are not > controlled by this driver, just their parent regulator is. > > Any ideas? Looking at the diagram in the schematics, I see that both vbus-supply and vconn-supply come directly from the PMIC so similarly to the vbus-supply, the vconn-supply can be part of the usb-connector. Then a driver can access the vconn-supply from the remote usb connector. Is there a problem with that? Thanks a lot for the review, I am not very familiar with usb and type-c, so your review helps a lot. I will send v6 soon. Thanks, Dafna > > kind regards, > o. > >>>> + ports: >>>> + $ref: /schemas/graph.yaml#/properties/ports >>>> + >>>> + properties: >>>> + port@0: >>>> + $ref: /schemas/graph.yaml#/properties/port >>>> + description: Video port for HDMI input. >>>> + >>>> + port@1: >>>> + $ref: /schemas/graph.yaml#/properties/port >>>> + description: USB port for the USB3 input. >>>> + >>>> + port@2: >>>> + $ref: /schemas/graph.yaml#/properties/port >>>> + description: USB Type-c connector, see connector/usb-connector.yaml. >>>> + >>>> + required: >>>> + - port@0 >>> >>> As all the ports exist at the hardware level, should they always be >>> present ? The endpoints are optional of course, in case a port isn't >>> connected on a particular system. >>> >>>> + >>>> +required: >>>> + - compatible >>>> + - reg >>> >>> Shouldn't clocks and regulators be also required ? >> >> hmm, theoretically yes. Practically, in the case of Acer R13 (mediatek elm) device, >> the ANX7688 is powered up and controlled by the Embedded Controller. The kernel only >> needs to read few registers from that device for the drm bridge driver. >> (also mentioned that in the cover letter). >> >> Thanks, >> Dafna 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.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 C5871C433ED for ; Wed, 31 Mar 2021 17:16:49 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 39E386101A for ; Wed, 31 Mar 2021 17:16:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 39E386101A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EBC956EB14; Wed, 31 Mar 2021 17:16:47 +0000 (UTC) Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 303D66EB14 for ; Wed, 31 Mar 2021 17:16:46 +0000 (UTC) Received: from [IPv6:2a02:810a:880:f54:d880:b6f8:f93d:245e] (unknown [IPv6:2a02:810a:880:f54:d880:b6f8:f93d:245e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dafna) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 220C01F45FA4; Wed, 31 Mar 2021 18:16:44 +0100 (BST) Subject: Re: [PATCH v5 1/2] dt-bindings: usb: add analogix,anx7688.yaml To: =?UTF-8?Q?Ond=c5=99ej_Jirman?= References: <20210305124351.15079-1-dafna.hirschfeld@collabora.com> <20210305124351.15079-2-dafna.hirschfeld@collabora.com> <35f505ee-d939-4b42-490b-321b961bdec3@collabora.com> <20210305172437.meu45ol7d4c3w2lr@core.my.home> From: Dafna Hirschfeld Message-ID: Date: Wed, 31 Mar 2021 19:16:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20210305172437.meu45ol7d4c3w2lr@core.my.home> Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, jernej.skrabec@siol.net, drinkcat@chromium.org, narmstrong@baylibre.com, airlied@linux.ie, enric.balletbo@collabora.com, linux-usb@vger.kernel.org, dri-devel@lists.freedesktop.org, a.hajda@samsung.com, jonas@kwiboo.se, robh+dt@kernel.org, Laurent Pinchart , hsinyi@chromium.org, chunkuang.hu@kernel.org, kernel@collabora.com, dafna3@gmail.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGksCgpPbiAwNS4wMy4yMSAxODoyNCwgT25kxZllaiBKaXJtYW4gd3JvdGU6Cj4gSGVsbG8gRGFm bmEsCj4gCj4gT24gRnJpLCBNYXIgMDUsIDIwMjEgYXQgMDQ6MTQ6MDNQTSArMDEwMCwgRGFmbmEg SGlyc2NoZmVsZCB3cm90ZToKPj4gSGkKPj4KPj4gT24gMDUuMDMuMjEgMTU6MzQsIExhdXJlbnQg UGluY2hhcnQgd3JvdGU6Cj4+PiBIaSBEYWZuYSwKPj4+Cj4+PiBUaGFuayB5b3UgZm9yIHRoZSBw YXRjaC4KPj4+Cj4+PiBPbiBGcmksIE1hciAwNSwgMjAyMSBhdCAwMTo0Mzo1MFBNICswMTAwLCBE YWZuYSBIaXJzY2hmZWxkIHdyb3RlOgo+Pj4+IEFOWDc2ODggaXMgYSBVU0IgVHlwZS1DIHBvcnQg Y29udHJvbGxlciB3aXRoIGEgTVVYLiBJdCBjb252ZXJ0cyBIRE1JIDIuMCB0bwo+Pj4+IERpc3Bs YXlQb3J0IDEuMyBVbHRyYS1IRGkgKDQwOTZ4MjE2MHA2MCkuCj4+Pj4gVGhlIGludGVncmF0ZWQg Y3Jvc3Nwb2ludCBzd2l0Y2ggKHRoZSBNVVgpIHN1cHBvcnRzIFVTQiAzLjEgZGF0YSB0cmFuc2Zl cgo+Pj4+IGFsb25nIHdpdGggdGhlIERpc3BsYXlQb3J0IEFsdGVybmF0ZSBNb2RlIHNpZ25hbGlu ZyBvdmVyIFVTQiBUeXBlLUMuCj4+Pj4gQWRkaXRpb25hbGx5LCBhbiBvbi1jaGlwIG1pY3JvY29u dHJvbGxlciAoT0NNKSBpcyBhdmFpbGFibGUgdG8gbWFuYWdlIHRoZQo+Pj4+IHNpZ25hbCBzd2l0 Y2hpbmcsIENoYW5uZWwgQ29uZmlndXJhdGlvbiAoQ0MpIGRldGVjdGlvbiwgVVNCIFBvd2VyCj4+ Pj4gRGVsaXZlcnkgKFVTQi1QRCksIFZlbmRvciBEZWZpbmVkIE1lc3NhZ2UgKFZETSkgcHJvdG9j b2wgc3VwcG9ydCBhbmQgb3RoZXIKPj4+PiBmdW5jdGlvbnMgYXMgZGVmaW5lZCBpbiB0aGUgVVNC IFR5cGVDIGFuZCBVU0IgUG93ZXIgRGVsaXZlcnkKPj4+PiBzcGVjaWZpY2F0aW9ucy4KPj4+Pgo+ Pj4+IEFOWDc2ODggaXMgZm91bmQgb24gQWNlciBDaHJvbWVib29rIFIxMyAoZWxtKSBhbmQgb24K Pj4+PiBQaW5lNjQgUGluZVBob25lLgo+IAo+IFRoYW5rcyBmb3IgeW91ciB3b3JrIG9uIHRoZSBi aW5kaW5ncy4gOikgSXQgd291bGQgYmUgZ3JlYXQgdG8gZmluZCBzb21ldGhpbmcKPiBhY2NlcHRh YmxlIGZvciBtYWlubGluaW5nLgo+IAo+IEEgZmV3IGNvbW1lbnRzIGJhc2VkIG9uIG15IGV4cGVy aWVuY2UgaW1wbGVtZW50aW5nIHRoZSBVU0ItUEQgcGFydCBmb3IgUGluZVBob25lCj4gYXJlIGJl bGxvdy4KPiAKPj4+PiArcHJvcGVydGllczoKPj4+PiArICBjb21wYXRpYmxlOgo+Pj4+ICsgICAg Y29uc3Q6IGFuYWxvZ2l4LGFueDc2ODgKPj4+PiArCj4+Pj4gKyAgcmVnOgo+Pj4+ICsgICAgbWF4 SXRlbXM6IDEKPj4+PiArCj4+Pj4gKyAgYXZkZDMzLXN1cHBseToKPj4+PiArICAgIGRlc2NyaXB0 aW9uOiAzLjNWIEFuYWxvZyBjb3JlIHN1cHBseSB2b2x0YWdlLgo+Pj4+ICsKPj4+PiArICBkdmRk MTgtc3VwcGx5Ogo+Pj4+ICsgICAgZGVzY3JpcHRpb246IDEuOFYgRGlnaXRhbCBJL08gc3VwcGx5 IHZvbHRhZ2UuCj4+Pj4gKwo+Pj4+ICsgIGF2ZGQxOC1zdXBwbHk6Cj4+Pj4gKyAgICBkZXNjcmlw dGlvbjogMS44ViBBbmFsb2cgY29yZSBwb3dlciBzdXBwbHkgdm9sdGFnZS4KPj4+PiArCj4+Pj4g KyAgYXZkZDEwLXN1cHBseToKPj4+PiArICAgIGRlc2NyaXB0aW9uOiAxLjBWIEFuYWxvZyBjb3Jl IHBvd2VyIHN1cHBseSB2b2x0YWdlLgo+Pj4+ICsKPj4+PiArICBkdmRkMTAtc3VwcGx5Ogo+Pj4+ ICsgICAgZGVzY3JpcHRpb246IDEuMFYgRGlnaXRhbCBjb3JlIHN1cHBseSB2b2x0YWdlLgo+Pj4+ ICsKPj4+Cj4+PiBUaGF0J3MgbG90cyBvZiBzdXBwbGllcy4gSWYgdGhlcmUncyBhIHJlYXNvbmFi bGUgY2hhbmNlIHRoYXQgc29tZSBvZgo+Pj4gdGhlbSB3aWxsIGFsd2F5cyBiZSBkcml2ZW4gYnkg dGhlIHNhbWUgcmVndWxhdG9yIChlc3BlY2lhbGx5IGlmIHRoZQo+Pj4gQU5YNzY4OCBkb2N1bWVu dGF0aW9uIHJlcXVpcmVzIHRoYXQpLCB0aGVuIHRoZXkgY291bGQgYmUgZ3JvdXBlZC4gRm9yCj4+ PiBpbnN0YW5jZSBkdmRkMTgtc3VwcGx5IGFuZCBhdmRkMTgtc3VwcGx5IGNvdWxkIGJlIGdyb3Vw ZWQgaW50bwo+Pj4gdmRkMTgtc3VwcGx5LiBJdCB3b3VsZCBzdGlsbCBhbGxvdyB1cyB0byBleHRl bmQgdGhlIGJpbmRpbmdzIGluIGEKPj4+IGJhY2t3YXJkIGNvbXBhdGlibGUgd2F5IGxhdGVyIGlm IGEgc3lzdGVtIHVzZXMgZGlmZmVyZW50IHJlZ3VsYXRvcnMuIFlvdQo+Pj4gaGF2ZSBtb3JlIGlu Zm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSB0aGFuIEkgZG8sIHNvIGl0J3MgeW91ciBjYWxs Lgo+IAo+IE9uIFBpbmVQaG9uZSwgQVZERCBhbmQgRFZERCBmb3IgMS4wViBhcmUganVzdCBzZXBh cmF0ZWx5IGZpdGxlcmVkIG91dHB1dHMKPiBmcm9tIHRoZSBzYW1lIHJlZ3VsYXRvci4gU28gaXQg d291bGQgd29yayB0aGVyZSB0byBqdXN0IHVzZSB2ZGQxOCBhbmQKPiB2ZGQxMC4gVGhlIHNhbWUg aXMgdHJ1ZSBmb3IgcmVmZXJlbmNlIGRlc2lnbiwgc28gaXQncyBwcm9iYWJseSBzYWZlCj4gdG8g YXNzdW1lIHRoaXMgY2FuIGJlIHNpbXBsaWZpZWQuCj4gCj4+Pj4gKyAgaGRtaTV2LXN1cHBseToK Pj4+PiArICAgIGRlc2NyaXB0aW9uOiA1ViBwb3dlciBzdXBwbHkgZm9yIHRoZSBIRE1JLgo+Pj4+ ICsKPj4+PiArICBoZG1pX3Z0LXN1cHBseToKPj4+PiArICAgIGRlc2NyaXB0aW9uOiBUZXJtaW5h dGlvbiB2b2x0YWdlIGZvciBIRE1JIGlucHV0Lgo+Pj4KPj4+IE1heWJlIGhkbWktdnQtc3VwcGx5 ID8KPj4+Cj4+Pj4gKwo+Pj4+ICsgIGNsb2NrczoKPj4+PiArICAgIGRlc2NyaXB0aW9uOiBUaGUg aW5wdXQgY2xvY2sgc3BlY2lmaWVyLgo+Pj4+ICsgICAgbWF4SXRlbXM6IDEKPj4+Cj4+PiBIb3cg YWJvdXQKPj4+Cj4+PiAgICAgICBpdGVtczoKPj4+ICAgICAgICAgLSBkZXNjcmlwdGlvbjogVGhl IGlucHV0IGNsb2NrIHNwZWNpZmllci4KPj4+Cj4+Pj4gKwo+Pj4+ICsgIGNsb2NrLW5hbWVzOgo+ Pj4+ICsgICAgaXRlbXM6Cj4+Pj4gKyAgICAgIC0gY29uc3Q6IHh0YWwKPj4+PiArCj4+Pj4gKyAg aHBkLWdwaW9zOgo+Pj4+ICsgICAgZGVzY3JpcHRpb246IHwKPj4+PiArICAgICAgSW4gVVNCIFR5 cGUtQyBhcHBsaWNhdGlvbnMsIERQX0hQRCBoYXMgbm8gdXNlLiBJbiBzdGFuZGFyZCBEaXNwbGF5 UG9ydAo+Pj4+ICsgICAgICBhcHBsaWNhdGlvbnMsIERQX0hQRCBpcyB1c2VkIGFzIERQIGhvdC1w bHVnLgo+Pj4+ICsgICAgbWF4SXRlbXM6IDEKPiAKPiBPbiBQaW5lUGhvbmUgdGhpcyBpcyB3aXJl ZCB0byBhIEhETUkgcG9ydCBvbiB0aGUgU29DLCBhbmQgSFBEIGlzIGhhbmRsZWQgYnkgdGhlCj4g c3VuNGkgSERNSSBEUk0gZHJpdmVyLiBTZWVtcyBsaWtlIEhQRCB3aWxsIGJlIGhhbmRsZWQgYnkg SERNSSBjb250cm9sbGVyIG9uCj4gbWFueS9hbGw/IG90aGVyIHBsYXRmb3JtcyB0b28uIFdoeSBo YXZlIGl0IGhlcmU/CgpSaWdodCwgSSBkaWRuJ3QgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIHdoZW4g bGlzdGluZyBhbGwgdGhlIHBpbnMgb2YgdGhlIGFueDc2ODguCkkgd2FzIG5vdCBzdXJlIHdoYXQg c2hvdWxkIGJlIGxpc3RlZC4KSSB3aWxsIHJlbW92ZSB0aGF0LgoKPiAKPj4+PiArICBlbmFibGUt Z3Bpb3M6Cj4+Pj4gKyAgICBkZXNjcmlwdGlvbjogQ2hpcCBwb3dlciBkb3duIGNvbnRyb2wuIE5v IGludGVybmFsIHB1bGwtZG93biBvciBwdWxsLXVwIHJlc2lzdG9yLgo+Pj4+ICsgICAgbWF4SXRl bXM6IDEKPj4+PiArCj4+Pj4gKyAgcmVzZXQtZ3Bpb3M6Cj4+Pj4gKyAgICBkZXNjcmlwdGlvbjog UmVzZXQgaW5wdXQgc2lnbmFsLiBBY3RpdmUgbG93Lgo+Pj4+ICsgICAgbWF4SXRlbXM6IDEKPj4+ PiArCj4+Pj4gKyAgdmJ1cy1kZXQtZ3Bpb3M6Cj4+Pj4gKyAgICBkZXNjcmlwdGlvbjogfAo+Pj4+ ICsgICAgICBBbiBpbnB1dCBncGlvIGZvciBWQlVTIGRldGVjdGlvbiBhbmQgaGlnaCB2b2x0YWdl IGRldGVjdGlvbiwKPj4+PiArICAgICAgZXh0ZXJuYWwgcmVzaXN0YW5jZSBkaXZpZGUgVkJVUyB2 b2x0YWdlIHRvIDEvOC4KPj4+PiArICAgIG1heEl0ZW1zOiAxCj4gCj4gV2h5IGhhdmUgdGhpcyBp biB0aGUgYmluZGluZ3M/IEl0IHNlZW1zIHRoYXQgdGhpcyBpcyBoYW5kbGVkIGludGVybmFsbHkg YnkgdGhlCj4gQU5YNzY4OCB2aWEgT0NNIGZpcm13YXJlLiBBbmQgaXQncyBub3QgcmVhbGx5IGdw aW8gZWl0aGVyLCBpdCdzIGFuIGFuYWxvZyBpbnB1dAo+IHdpdGggQUQgY29udmVydGVyIGhvb2tl ZCB0byBpdCBpbnRlcm5hbGx5LgoKSSB3aWxsIHJlbW92ZSB0aGF0LgoKPiAKPj4+PiArICBpbnRl cnJ1cHRzOgo+Pj4+ICsgICAgZGVzY3JpcHRpb246IHwKPj4+PiArICAgICAgVGhlIGludGVycnVw dCBub3RpZmllcyA0IHBvc3NpYmxlIGV2ZW50cyAtIFRDUEMgQUxFUlQgaW50LCBQRCBpbnQsIERQ IGludCwgSERNSSBpbnQuCj4+Pj4gKyAgICBtYXhJdGVtczogMQo+Pj4+ICsKPj4+PiArICBjYWJs ZWRldC1ncGlvczoKPj4+PiArICAgIGRlc2NyaXB0aW9uOiBBbiBvdXRwdXQgZ3BpbywgaW5kaWNh dGVzIGJ5IHRoZSBkZXZpY2UgdGhhdCBhIGNhYmxlIGlzIHBsdWdnZWQuCj4+Pj4gKyAgICBtYXhJ dGVtczogMQo+Pj4+ICsKPj4+PiArICB2YnVzLWN0cmwtZ3Bpb3M6Cj4+Pj4gKyAgICBkZXNjcmlw dGlvbjoKPj4+PiArICAgICAgRXh0ZXJuYWwgVkJVUyBwb3dlciBwYXRoLiBFbmFibGUgVkJVUyBz b3VyY2UgYW5kIGRpc2FibGUgVkJVUyBzaW5rIG9yIHZpY2UgdmVyc2EuCj4+Pj4gKyAgICBtYXhJ dGVtczogMQo+IAo+IFZCVVMgY29udHJvbCBzZWVtcyB0byBiZSBhbHJlYWR5IG1vZGVsbGVkIGJ5 IHRoZSB1c2ItY29ubmVjdG9yIGJpbmRpbmdzLiBXaHkKPiBoYXZlIHRoaXMgaGVyZT8KCmRpdG8K PiAKPj4+PiArICB2Y29ubi1lbjEtZ3Bpb3M6Cj4+Pj4gKyAgICBkZXNjcmlwdGlvbjogQ29udHJv bHMgdGhlIFZDT05OIHN3aXRjaCBvbiB0aGUgQ0MxIHBpbi4KPj4+PiArICAgIG1heEl0ZW1zOiAx Cj4+Pj4gKwo+Pj4+ICsgIHZjb25uLWVuMi1ncGlvczoKPj4+PiArICAgIGRlc2NyaXB0aW9uOiBD b250cm9scyB0aGUgVkNPTk4gc3dpdGNoIG9uIHRoZSBDQzIgcGluLgo+Pj4+ICsgICAgbWF4SXRl bXM6IDEKPiAKPiBWQ09OTiBpcyBhIHZvbHRhZ2UgcmVndWxhdG9yIHRoYXQgY2FuIGJlIGVuYWJs ZWQgZWl0aGVyIG9uIENDMSBvciBDQzIKPiBwaW4sIG9yIGRpc2FibGVkIGNvbXBsZXRlbHkuIFRo aXMgY29udHJvbCBpcyAqcGFydGlhbGx5KiBwZXJmb3JtZWQgaW4gcmVmZXJlbmNlCj4gZGVzaWdu IGRpcmVjdGx5IGJ5IHRoZSBPQ00uIE9DTSBvbmx5IGRlY2lkZXMgd2hpY2ggQ0MgcGluIHRvIHN3 aXRjaAo+IHRoZSBWQ09OTiByZWd1bGF0b3IgdG8sIGFuZCBpbmZvcm1zIHRoZSBTb0Mgd2hlbiB0 aGUgYmFzZSBWQ09OTiByZWd1bGF0b3IKPiBmb3IgdGhlIHN3aXRjaGVzIG5lZWRzIHRvIGJlIGVu YWJsZWQuCj4gCj4gU28gdmNvbm4tZW4xLzIgZ3Bpb3MgYXJlIGlycmVsZXZhbnQgdG8gdGhlIGRy aXZlciwgYnV0IHRoZSBkcml2ZXIgbmVlZHMKPiB0byBjb250cm9sIFZDT05OIHBvd2VyIHN1cHBs eSBzb21laG93IGFuZCBkZWZlciBjb250cm9sIG92ZXIgaXQgdG8gdGhlIE9DTS4KPiAKPiBJIGRv bid0IGtub3cgaG93IHRvIGV4cHJlc3MgaXQgaW4gdGhlIGJpbmRpbmdzLiBNYXliZSBhIHZjb25u LXN1cHBseSBoZXJlCj4gb24gdGhlIGFueDc2ODggbm9kZT8KPiAKPiBJdCBtYXkgYWxzbyBiZSBw YXJ0IG9mIHRoZSB1c2ItY29ubmVjdG9yIGJpbmRpbmcsIGJ1dCB0aGlzIGlzIHJlYWxseSB3aGVu IGl0Cj4gY29tZXMgdG8gYW54NzY4OCBhIHBhcmVudCByZWd1bGF0b3IgZm9yIHRoZSBzd2l0Y2hl cywgYW5kIHN3aXRjaGVzIGFyZSBub3QKPiBjb250cm9sbGVkIGJ5IHRoaXMgZHJpdmVyLCBqdXN0 IHRoZWlyIHBhcmVudCByZWd1bGF0b3IgaXMuCj4gCj4gQW55IGlkZWFzPwoKTG9va2luZyBhdCB0 aGUgZGlhZ3JhbSBpbiB0aGUgc2NoZW1hdGljcywgSSBzZWUgdGhhdCBib3RoIHZidXMtc3VwcGx5 IGFuZCB2Y29ubi1zdXBwbHkKY29tZSBkaXJlY3RseSBmcm9tIHRoZSBQTUlDIHNvIHNpbWlsYXJs eSB0byB0aGUgdmJ1cy1zdXBwbHksIHRoZSB2Y29ubi1zdXBwbHkKY2FuIGJlIHBhcnQgb2YgdGhl IHVzYi1jb25uZWN0b3IuIFRoZW4gYSBkcml2ZXIgY2FuIGFjY2VzcyB0aGUgdmNvbm4tc3VwcGx5 IGZyb20gdGhlIHJlbW90ZSB1c2IKY29ubmVjdG9yLiBJcyB0aGVyZSBhIHByb2JsZW0gd2l0aCB0 aGF0PwoKVGhhbmtzIGEgbG90IGZvciB0aGUgcmV2aWV3LCBJIGFtIG5vdCB2ZXJ5IGZhbWlsaWFy IHdpdGggdXNiIGFuZCB0eXBlLWMsIHNvIHlvdXIgcmV2aWV3IGhlbHBzIGEgbG90LgpJIHdpbGwg c2VuZCB2NiBzb29uLgoKVGhhbmtzLApEYWZuYQoKPiAKPiBraW5kIHJlZ2FyZHMsCj4gCW8uCj4g Cj4+Pj4gKyAgcG9ydHM6Cj4+Pj4gKyAgICAkcmVmOiAvc2NoZW1hcy9ncmFwaC55YW1sIy9wcm9w ZXJ0aWVzL3BvcnRzCj4+Pj4gKwo+Pj4+ICsgICAgcHJvcGVydGllczoKPj4+PiArICAgICAgcG9y dEAwOgo+Pj4+ICsgICAgICAgICRyZWY6IC9zY2hlbWFzL2dyYXBoLnlhbWwjL3Byb3BlcnRpZXMv cG9ydAo+Pj4+ICsgICAgICAgIGRlc2NyaXB0aW9uOiBWaWRlbyBwb3J0IGZvciBIRE1JIGlucHV0 Lgo+Pj4+ICsKPj4+PiArICAgICAgcG9ydEAxOgo+Pj4+ICsgICAgICAgICRyZWY6IC9zY2hlbWFz L2dyYXBoLnlhbWwjL3Byb3BlcnRpZXMvcG9ydAo+Pj4+ICsgICAgICAgIGRlc2NyaXB0aW9uOiBV U0IgcG9ydCBmb3IgdGhlIFVTQjMgaW5wdXQuCj4+Pj4gKwo+Pj4+ICsgICAgICBwb3J0QDI6Cj4+ Pj4gKyAgICAgICAgJHJlZjogL3NjaGVtYXMvZ3JhcGgueWFtbCMvcHJvcGVydGllcy9wb3J0Cj4+ Pj4gKyAgICAgICAgZGVzY3JpcHRpb246IFVTQiBUeXBlLWMgY29ubmVjdG9yLCBzZWUgY29ubmVj dG9yL3VzYi1jb25uZWN0b3IueWFtbC4KPj4+PiArCj4+Pj4gKyAgICByZXF1aXJlZDoKPj4+PiAr ICAgICAgLSBwb3J0QDAKPj4+Cj4+PiBBcyBhbGwgdGhlIHBvcnRzIGV4aXN0IGF0IHRoZSBoYXJk d2FyZSBsZXZlbCwgc2hvdWxkIHRoZXkgYWx3YXlzIGJlCj4+PiBwcmVzZW50ID8gVGhlIGVuZHBv aW50cyBhcmUgb3B0aW9uYWwgb2YgY291cnNlLCBpbiBjYXNlIGEgcG9ydCBpc24ndAo+Pj4gY29u bmVjdGVkIG9uIGEgcGFydGljdWxhciBzeXN0ZW0uCj4+Pgo+Pj4+ICsKPj4+PiArcmVxdWlyZWQ6 Cj4+Pj4gKyAgLSBjb21wYXRpYmxlCj4+Pj4gKyAgLSByZWcKPj4+Cj4+PiBTaG91bGRuJ3QgY2xv Y2tzIGFuZCByZWd1bGF0b3JzIGJlIGFsc28gcmVxdWlyZWQgPwo+Pgo+PiBobW0sIHRoZW9yZXRp Y2FsbHkgeWVzLiBQcmFjdGljYWxseSwgaW4gdGhlIGNhc2Ugb2YgQWNlciBSMTMgKG1lZGlhdGVr IGVsbSkgZGV2aWNlLAo+PiB0aGUgQU5YNzY4OCBpcyBwb3dlcmVkIHVwIGFuZCBjb250cm9sbGVk IGJ5IHRoZSBFbWJlZGRlZCBDb250cm9sbGVyLiBUaGUga2VybmVsIG9ubHkKPj4gbmVlZHMgdG8g cmVhZCBmZXcgcmVnaXN0ZXJzIGZyb20gdGhhdCBkZXZpY2UgZm9yIHRoZSBkcm0gYnJpZGdlIGRy aXZlci4KPj4gKGFsc28gbWVudGlvbmVkIHRoYXQgaW4gdGhlIGNvdmVyIGxldHRlcikuCj4+Cj4+ IFRoYW5rcywKPj4gRGFmbmEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==