From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from perceval.ideasonboard.com ([213.167.242.64]:58224 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728189AbeIQOUS (ORCPT ); Mon, 17 Sep 2018 10:20:18 -0400 From: Laurent Pinchart To: Simon Horman Cc: Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Ulrich Hecht , Kieran Bingham Subject: Re: [PATCH v2 13/16] arm64: dts: renesas: r8a77990: Add display output support Date: Mon, 17 Sep 2018 11:54:04 +0300 Message-ID: <2010332.BWU5Iuuyd0@avalon> In-Reply-To: <2120896.ul16WsBFq5@avalon> References: <20180914091046.483-1-laurent.pinchart+renesas@ideasonboard.com> <20180917081419.oqnkz3bb4us7thkn@verge.net.au> <2120896.ul16WsBFq5@avalon> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Hi Simon, On Monday, 17 September 2018 11:47:15 EEST Laurent Pinchart wrote: > On Monday, 17 September 2018 11:14:20 EEST Simon Horman wrote: > > On Mon, Sep 17, 2018 at 09:50:55AM +0200, Simon Horman wrote: > > > On Fri, Sep 14, 2018 at 12:10:43PM +0300, Laurent Pinchart wrote: > > > > The R8A77990 (E3) platform has one RGB output and two LVDS outputs > > > > connected to the DU. Add the DT nodes for the DU, LVDS encoders and > > > > supporting VSP and FCP. > > > > > > > > Signed-off-by: Laurent Pinchart > > > > > > > > Tested-by: Jacopo Mondi > > > > --- > > > > > > > > arch/arm64/boot/dts/renesas/r8a77990.dtsi | 167 > > > > +++++++++++++++++++++++ > > > > 1 file changed, 167 insertions(+) > > > > > > > > diff --git a/arch/arm64/boot/dts/renesas/r8a77990.dtsi > > > > b/arch/arm64/boot/dts/renesas/r8a77990.dtsi index > > > > abb14af76c0e..600074ca3ee5 100644 > > > > --- a/arch/arm64/boot/dts/renesas/r8a77990.dtsi > > > > +++ b/arch/arm64/boot/dts/renesas/r8a77990.dtsi > > > > @@ -537,6 +537,173 @@ > > > > > > > > resets = <&cpg 408>; > > > > > > > > }; > > > > > > These nodes should be placed after the gic to preserve the sorting > > > of nodes by bus address and then IP block. > > > > > > > + vspb0: vsp@fe960000 { > > > > + compatible = "renesas,vsp2"; > > > > + reg = <0 0xfe960000 0 0x8000>; > > > > + interrupts = ; > > > > + clocks = <&cpg CPG_MOD 626>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 626>; > > > > + renesas,fcp = <&fcpvb0>; > > > > + }; > > > > + > > > > + fcpvb0: fcp@fe96f000 { > > > > + compatible = "renesas,fcpv"; > > > > + reg = <0 0xfe96f000 0 0x200>; > > > > + clocks = <&cpg CPG_MOD 607>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 607>; > > > > + iommus = <&ipmmu_vp0 5>; > > > > + }; > > > > + > > > > + vspi0: vsp@fe9a0000 { > > > > + compatible = "renesas,vsp2"; > > > > + reg = <0 0xfe9a0000 0 0x8000>; > > > > + interrupts = ; > > > > + clocks = <&cpg CPG_MOD 622>; > > > > > > R-Car Series, 3rd Generation, v1.00, Table Table 8A.21 indicates > > > that this clock should be <&cpg CPG_MOD 631>. The clock above is > > > (according to my reading of the documentation) correctly > > > used for vspd1 below. > > > > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 631>; > > > > + renesas,fcp = <&fcpvi0>; > > > > + }; > > > > + > > > > + fcpvi0: fcp@fe9af000 { > > > > + compatible = "renesas,fcpv"; > > > > + reg = <0 0xfe9af000 0 0x200>; > > > > + clocks = <&cpg CPG_MOD 611>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 611>; > > > > + iommus = <&ipmmu_vp0 8>; > > > > + }; > > > > + > > > > + vspd0: vsp@fea20000 { > > > > + compatible = "renesas,vsp2"; > > > > + reg = <0 0xfea20000 0 0x7000>; > > > > + interrupts = ; > > > > + clocks = <&cpg CPG_MOD 623>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 623>; > > > > + renesas,fcp = <&fcpvd0>; > > > > + }; > > > > + > > > > + fcpvd0: fcp@fea27000 { > > > > + compatible = "renesas,fcpv"; > > > > + reg = <0 0xfea27000 0 0x200>; > > > > + clocks = <&cpg CPG_MOD 603>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 603>; > > > > + iommus = <&ipmmu_vi0 8>; > > > > + }; > > > > + > > > > + vspd1: vsp@fea28000 { > > > > + compatible = "renesas,vsp2"; > > > > + reg = <0 0xfea28000 0 0x7000>; > > > > + interrupts = ; > > > > + clocks = <&cpg CPG_MOD 622>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 622>; > > > > + renesas,fcp = <&fcpvd1>; > > > > + }; > > > > + > > > > + fcpvd1: fcp@fea2f000 { > > > > + compatible = "renesas,fcpv"; > > > > + reg = <0 0xfea2f000 0 0x200>; > > > > + clocks = <&cpg CPG_MOD 602>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 602>; > > > > + iommus = <&ipmmu_vi0 9>; > > > > + }; > > > > + > > > > + du: display@feb00000 { > > > > + compatible = "renesas,du-r8a77990"; > > > > + reg = <0 0xfeb00000 0 0x80000>; > > > > + interrupts = , > > > > + ; > > > > + clocks = <&cpg CPG_MOD 724>, > > > > + <&cpg CPG_MOD 723>; > > > > + clock-names = "du.0", "du.1"; > > > > + vsps = <&vspd0 0 &vspd1 0>; > > > > + status = "disabled"; > > > > + > > > > + ports { > > > > + #address-cells = <1>; > > > > + #size-cells = <0>; > > > > + > > > > + port@0 { > > > > + reg = <0>; > > > > + du_out_rgb: endpoint { > > > > + }; > > > > + }; > > > > + > > > > + port@1 { > > > > + reg = <1>; > > > > + du_out_lvds0: endpoint { > > > > + remote-endpoint = <&lvds0_in>; > > > > + }; > > > > + }; > > > > + > > > > + port@2 { > > > > + reg = <2>; > > > > + du_out_lvds1: endpoint { > > > > + remote-endpoint = <&lvds1_in>; > > > > + }; > > > > + }; > > > > + }; > > > > + }; > > > > + > > > > + lvds0: lvds-encoder@feb90000 { > > > > + compatible = "renesas,r8a77990-lvds"; > > > > + reg = <0 0xfeb90000 0 0x20>; > > > > + clocks = <&cpg CPG_MOD 727>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 727>; > > > > + status = "disabled"; > > > > + > > > > + ports { > > > > + #address-cells = <1>; > > > > + #size-cells = <0>; > > > > + > > > > + port@0 { > > > > + reg = <0>; > > > > + lvds0_in: endpoint { > > > > + remote-endpoint = <&du_out_lvds0>; > > > > + }; > > > > + }; > > > > + > > > > + port@1 { > > > > + reg = <1>; > > > > + lvds0_out: endpoint { > > > > + }; > > > > + }; > > > > + }; > > > > + }; > > > > + > > > > + lvds1: lvds-encoder@feb90100 { > > > > + compatible = "renesas,r8a77990-lvds"; > > > > + reg = <0 0xfeb90100 0 0x20>; > > > > + clocks = <&cpg CPG_MOD 727>; > > > > + power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; > > > > + resets = <&cpg 726>; > > > > Also, is the missmatch between the index for the clock and reset > > intentional? > > It is. According to the datasheet, the two LVDS encoders have different > module stop bits, but share the same reset (lovely hardware design, it will > be fun to support that in the driver :-S). Sorry, I got it wrong. it's bit 725 that is shared between the two LVDS encoders, to reset the two LVDS PLLs together. The encoders themselves still have independent reset bits. I'll fix this. > > > > + status = "disabled"; > > > > + > > > > + ports { > > > > + #address-cells = <1>; > > > > + #size-cells = <0>; > > > > + > > > > + port@0 { > > > > + reg = <0>; > > > > + lvds1_in: endpoint { > > > > + remote-endpoint = <&du_out_lvds1>; > > > > + }; > > > > + }; > > > > + > > > > + port@1 { > > > > + reg = <1>; > > > > + lvds1_out: endpoint { > > > > + }; > > > > + }; > > > > + }; > > > > + }; > > > > + > > > > prr: chipid@fff00044 { > > > > compatible = "renesas,prr"; > > > > reg = <0 0xfff00044 0 4>; -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v2 13/16] arm64: dts: renesas: r8a77990: Add display output support Date: Mon, 17 Sep 2018 11:54:04 +0300 Message-ID: <2010332.BWU5Iuuyd0@avalon> References: <20180914091046.483-1-laurent.pinchart+renesas@ideasonboard.com> <20180917081419.oqnkz3bb4us7thkn@verge.net.au> <2120896.ul16WsBFq5@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 153896E242 for ; Mon, 17 Sep 2018 08:53:52 +0000 (UTC) In-Reply-To: <2120896.ul16WsBFq5@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Simon Horman Cc: linux-renesas-soc@vger.kernel.org, Ulrich Hecht , Laurent Pinchart , Kieran Bingham , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgU2ltb24sCgpPbiBNb25kYXksIDE3IFNlcHRlbWJlciAyMDE4IDExOjQ3OjE1IEVFU1QgTGF1 cmVudCBQaW5jaGFydCB3cm90ZToKPiBPbiBNb25kYXksIDE3IFNlcHRlbWJlciAyMDE4IDExOjE0 OjIwIEVFU1QgU2ltb24gSG9ybWFuIHdyb3RlOgo+ID4gT24gTW9uLCBTZXAgMTcsIDIwMTggYXQg MDk6NTA6NTVBTSArMDIwMCwgU2ltb24gSG9ybWFuIHdyb3RlOgo+ID4gPiBPbiBGcmksIFNlcCAx NCwgMjAxOCBhdCAxMjoxMDo0M1BNICswMzAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4g PiA+IFRoZSBSOEE3Nzk5MCAoRTMpIHBsYXRmb3JtIGhhcyBvbmUgUkdCIG91dHB1dCBhbmQgdHdv IExWRFMgb3V0cHV0cwo+ID4gPiA+IGNvbm5lY3RlZCB0byB0aGUgRFUuIEFkZCB0aGUgRFQgbm9k ZXMgZm9yIHRoZSBEVSwgTFZEUyBlbmNvZGVycyBhbmQKPiA+ID4gPiBzdXBwb3J0aW5nIFZTUCBh bmQgRkNQLgo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQK PiA+ID4gPiA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+Cj4gPiA+ ID4gVGVzdGVkLWJ5OiBKYWNvcG8gTW9uZGkgPGphY29wbytyZW5lc2FzQGptb25kaS5vcmc+Cj4g PiA+ID4gLS0tCj4gPiA+ID4gCj4gPiA+ID4gIGFyY2gvYXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9y OGE3Nzk5MC5kdHNpIHwgMTY3Cj4gPiA+ID4gICsrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ ID4gIDEgZmlsZSBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKQo+ID4gPiA+IAo+ID4gPiA+IGRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjhhNzc5OTAuZHRzaQo+ID4g PiA+IGIvYXJjaC9hcm02NC9ib290L2R0cy9yZW5lc2FzL3I4YTc3OTkwLmR0c2kgaW5kZXgKPiA+ ID4gPiBhYmIxNGFmNzZjMGUuLjYwMDA3NGNhM2VlNSAxMDA2NDQKPiA+ID4gPiAtLS0gYS9hcmNo L2FybTY0L2Jvb3QvZHRzL3JlbmVzYXMvcjhhNzc5OTAuZHRzaQo+ID4gPiA+ICsrKyBiL2FyY2gv YXJtNjQvYm9vdC9kdHMvcmVuZXNhcy9yOGE3Nzk5MC5kdHNpCj4gPiA+ID4gQEAgLTUzNyw2ICs1 MzcsMTczIEBACj4gPiA+ID4gCj4gPiA+ID4gIAkJCXJlc2V0cyA9IDwmY3BnIDQwOD47Cj4gPiA+ ID4gIAkJCj4gPiA+ID4gIAkJfTsKPiA+ID4gCj4gPiA+IFRoZXNlIG5vZGVzIHNob3VsZCBiZSBw bGFjZWQgYWZ0ZXIgdGhlIGdpYyB0byBwcmVzZXJ2ZSB0aGUgc29ydGluZwo+ID4gPiBvZiBub2Rl cyBieSBidXMgYWRkcmVzcyBhbmQgdGhlbiBJUCBibG9jay4KPiA+ID4gCj4gPiA+ID4gKwkJdnNw YjA6IHZzcEBmZTk2MDAwMCB7Cj4gPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyx2c3Ay IjsKPiA+ID4gPiArCQkJcmVnID0gPDAgMHhmZTk2MDAwMCAwIDB4ODAwMD47Cj4gPiA+ID4gKwkJ CWludGVycnVwdHMgPSA8R0lDX1NQSSAyNjYgSVJRX1RZUEVfTEVWRUxfSElHSD47Cj4gPiA+ID4g KwkJCWNsb2NrcyA9IDwmY3BnIENQR19NT0QgNjI2PjsKPiA+ID4gPiArCQkJcG93ZXItZG9tYWlu cyA9IDwmc3lzYyBSOEE3Nzk5MF9QRF9BTFdBWVNfT04+Owo+ID4gPiA+ICsJCQlyZXNldHMgPSA8 JmNwZyA2MjY+Owo+ID4gPiA+ICsJCQlyZW5lc2FzLGZjcCA9IDwmZmNwdmIwPjsKPiA+ID4gPiAr CQl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCQlmY3B2YjA6IGZjcEBmZTk2ZjAwMCB7Cj4gPiA+ID4g KwkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxmY3B2IjsKPiA+ID4gPiArCQkJcmVnID0gPDAgMHhm ZTk2ZjAwMCAwIDB4MjAwPjsKPiA+ID4gPiArCQkJY2xvY2tzID0gPCZjcGcgQ1BHX01PRCA2MDc+ Owo+ID4gPiA+ICsJCQlwb3dlci1kb21haW5zID0gPCZzeXNjIFI4QTc3OTkwX1BEX0FMV0FZU19P Tj47Cj4gPiA+ID4gKwkJCXJlc2V0cyA9IDwmY3BnIDYwNz47Cj4gPiA+ID4gKwkJCWlvbW11cyA9 IDwmaXBtbXVfdnAwIDU+Owo+ID4gPiA+ICsJCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCXZzcGkw OiB2c3BAZmU5YTAwMDAgewo+ID4gPiA+ICsJCQljb21wYXRpYmxlID0gInJlbmVzYXMsdnNwMiI7 Cj4gPiA+ID4gKwkJCXJlZyA9IDwwIDB4ZmU5YTAwMDAgMCAweDgwMDA+Owo+ID4gPiA+ICsJCQlp bnRlcnJ1cHRzID0gPEdJQ19TUEkgNDQ0IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+ID4gPiA+ICsJ CQljbG9ja3MgPSA8JmNwZyBDUEdfTU9EIDYyMj47Cj4gPiA+IAo+ID4gPiBSLUNhciBTZXJpZXMs IDNyZCBHZW5lcmF0aW9uLCB2MS4wMCwgVGFibGUgVGFibGUgOEEuMjEgaW5kaWNhdGVzCj4gPiA+ IHRoYXQgdGhpcyBjbG9jayBzaG91bGQgYmUgPCZjcGcgQ1BHX01PRCA2MzE+LiBUaGUgY2xvY2sg YWJvdmUgaXMKPiA+ID4gKGFjY29yZGluZyB0byBteSByZWFkaW5nIG9mIHRoZSBkb2N1bWVudGF0 aW9uKSBjb3JyZWN0bHkKPiA+ID4gdXNlZCBmb3IgdnNwZDEgYmVsb3cuCj4gPiA+IAo+ID4gPiA+ ICsJCQlwb3dlci1kb21haW5zID0gPCZzeXNjIFI4QTc3OTkwX1BEX0FMV0FZU19PTj47Cj4gPiA+ ID4gKwkJCXJlc2V0cyA9IDwmY3BnIDYzMT47Cj4gPiA+ID4gKwkJCXJlbmVzYXMsZmNwID0gPCZm Y3B2aTA+Owo+ID4gPiA+ICsJCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCWZjcHZpMDogZmNwQGZl OWFmMDAwIHsKPiA+ID4gPiArCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGZjcHYiOwo+ID4gPiA+ ICsJCQlyZWcgPSA8MCAweGZlOWFmMDAwIDAgMHgyMDA+Owo+ID4gPiA+ICsJCQljbG9ja3MgPSA8 JmNwZyBDUEdfTU9EIDYxMT47Cj4gPiA+ID4gKwkJCXBvd2VyLWRvbWFpbnMgPSA8JnN5c2MgUjhB Nzc5OTBfUERfQUxXQVlTX09OPjsKPiA+ID4gPiArCQkJcmVzZXRzID0gPCZjcGcgNjExPjsKPiA+ ID4gPiArCQkJaW9tbXVzID0gPCZpcG1tdV92cDAgOD47Cj4gPiA+ID4gKwkJfTsKPiA+ID4gPiAr Cj4gPiA+ID4gKwkJdnNwZDA6IHZzcEBmZWEyMDAwMCB7Cj4gPiA+ID4gKwkJCWNvbXBhdGlibGUg PSAicmVuZXNhcyx2c3AyIjsKPiA+ID4gPiArCQkJcmVnID0gPDAgMHhmZWEyMDAwMCAwIDB4NzAw MD47Cj4gPiA+ID4gKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0NjYgSVJRX1RZUEVfTEVWRUxf SElHSD47Cj4gPiA+ID4gKwkJCWNsb2NrcyA9IDwmY3BnIENQR19NT0QgNjIzPjsKPiA+ID4gPiAr CQkJcG93ZXItZG9tYWlucyA9IDwmc3lzYyBSOEE3Nzk5MF9QRF9BTFdBWVNfT04+Owo+ID4gPiA+ ICsJCQlyZXNldHMgPSA8JmNwZyA2MjM+Owo+ID4gPiA+ICsJCQlyZW5lc2FzLGZjcCA9IDwmZmNw dmQwPjsKPiA+ID4gPiArCQl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCQlmY3B2ZDA6IGZjcEBmZWEy NzAwMCB7Cj4gPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxmY3B2IjsKPiA+ID4gPiAr CQkJcmVnID0gPDAgMHhmZWEyNzAwMCAwIDB4MjAwPjsKPiA+ID4gPiArCQkJY2xvY2tzID0gPCZj cGcgQ1BHX01PRCA2MDM+Owo+ID4gPiA+ICsJCQlwb3dlci1kb21haW5zID0gPCZzeXNjIFI4QTc3 OTkwX1BEX0FMV0FZU19PTj47Cj4gPiA+ID4gKwkJCXJlc2V0cyA9IDwmY3BnIDYwMz47Cj4gPiA+ ID4gKwkJCWlvbW11cyA9IDwmaXBtbXVfdmkwIDg+Owo+ID4gPiA+ICsJCX07Cj4gPiA+ID4gKwo+ ID4gPiA+ICsJCXZzcGQxOiB2c3BAZmVhMjgwMDAgewo+ID4gPiA+ICsJCQljb21wYXRpYmxlID0g InJlbmVzYXMsdnNwMiI7Cj4gPiA+ID4gKwkJCXJlZyA9IDwwIDB4ZmVhMjgwMDAgMCAweDcwMDA+ Owo+ID4gPiA+ICsJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNDY3IElSUV9UWVBFX0xFVkVMX0hJ R0g+Owo+ID4gPiA+ICsJCQljbG9ja3MgPSA8JmNwZyBDUEdfTU9EIDYyMj47Cj4gPiA+ID4gKwkJ CXBvd2VyLWRvbWFpbnMgPSA8JnN5c2MgUjhBNzc5OTBfUERfQUxXQVlTX09OPjsKPiA+ID4gPiAr CQkJcmVzZXRzID0gPCZjcGcgNjIyPjsKPiA+ID4gPiArCQkJcmVuZXNhcyxmY3AgPSA8JmZjcHZk MT47Cj4gPiA+ID4gKwkJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJZmNwdmQxOiBmY3BAZmVhMmYw MDAgewo+ID4gPiA+ICsJCQljb21wYXRpYmxlID0gInJlbmVzYXMsZmNwdiI7Cj4gPiA+ID4gKwkJ CXJlZyA9IDwwIDB4ZmVhMmYwMDAgMCAweDIwMD47Cj4gPiA+ID4gKwkJCWNsb2NrcyA9IDwmY3Bn IENQR19NT0QgNjAyPjsKPiA+ID4gPiArCQkJcG93ZXItZG9tYWlucyA9IDwmc3lzYyBSOEE3Nzk5 MF9QRF9BTFdBWVNfT04+Owo+ID4gPiA+ICsJCQlyZXNldHMgPSA8JmNwZyA2MDI+Owo+ID4gPiA+ ICsJCQlpb21tdXMgPSA8JmlwbW11X3ZpMCA5PjsKPiA+ID4gPiArCQl9Owo+ID4gPiA+ICsKPiA+ ID4gPiArCQlkdTogZGlzcGxheUBmZWIwMDAwMCB7Cj4gPiA+ID4gKwkJCWNvbXBhdGlibGUgPSAi cmVuZXNhcyxkdS1yOGE3Nzk5MCI7Cj4gPiA+ID4gKwkJCXJlZyA9IDwwIDB4ZmViMDAwMDAgMCAw eDgwMDAwPjsKPiA+ID4gPiArCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDI1NiBJUlFfVFlQRV9M RVZFTF9ISUdIPiwKPiA+ID4gPiArCQkJCSAgICAgPEdJQ19TUEkgMjY4IElSUV9UWVBFX0xFVkVM X0hJR0g+Owo+ID4gPiA+ICsJCQljbG9ja3MgPSA8JmNwZyBDUEdfTU9EIDcyND4sCj4gPiA+ID4g KwkJCQkgPCZjcGcgQ1BHX01PRCA3MjM+Owo+ID4gPiA+ICsJCQljbG9jay1uYW1lcyA9ICJkdS4w IiwgImR1LjEiOwo+ID4gPiA+ICsJCQl2c3BzID0gPCZ2c3BkMCAwICZ2c3BkMSAwPjsKPiA+ID4g PiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gPiArCj4gPiA+ID4gKwkJCXBvcnRzIHsK PiA+ID4gPiArCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gPiA+ICsJCQkJI3NpemUtY2Vs bHMgPSA8MD47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCQkJcG9ydEAwIHsKPiA+ID4gPiArCQkJCQly ZWcgPSA8MD47Cj4gPiA+ID4gKwkJCQkJZHVfb3V0X3JnYjogZW5kcG9pbnQgewo+ID4gPiA+ICsJ CQkJCX07Cj4gPiA+ID4gKwkJCQl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCQkJCXBvcnRAMSB7Cj4g PiA+ID4gKwkJCQkJcmVnID0gPDE+Owo+ID4gPiA+ICsJCQkJCWR1X291dF9sdmRzMDogZW5kcG9p bnQgewo+ID4gPiA+ICsJCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jmx2ZHMwX2luPjsKPiA+ID4g PiArCQkJCQl9Owo+ID4gPiA+ICsJCQkJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJCQlwb3J0QDIg ewo+ID4gPiA+ICsJCQkJCXJlZyA9IDwyPjsKPiA+ID4gPiArCQkJCQlkdV9vdXRfbHZkczE6IGVu ZHBvaW50IHsKPiA+ID4gPiArCQkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZsdmRzMV9pbj47Cj4g PiA+ID4gKwkJCQkJfTsKPiA+ID4gPiArCQkJCX07Cj4gPiA+ID4gKwkJCX07Cj4gPiA+ID4gKwkJ fTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJbHZkczA6IGx2ZHMtZW5jb2RlckBmZWI5MDAwMCB7Cj4g PiA+ID4gKwkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3Nzk5MC1sdmRzIjsKPiA+ID4gPiAr CQkJcmVnID0gPDAgMHhmZWI5MDAwMCAwIDB4MjA+Owo+ID4gPiA+ICsJCQljbG9ja3MgPSA8JmNw ZyBDUEdfTU9EIDcyNz47Cj4gPiA+ID4gKwkJCXBvd2VyLWRvbWFpbnMgPSA8JnN5c2MgUjhBNzc5 OTBfUERfQUxXQVlTX09OPjsKPiA+ID4gPiArCQkJcmVzZXRzID0gPCZjcGcgNzI3PjsKPiA+ID4g PiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ID4gPiArCj4gPiA+ID4gKwkJCXBvcnRzIHsK PiA+ID4gPiArCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gPiA+ICsJCQkJI3NpemUtY2Vs bHMgPSA8MD47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCQkJcG9ydEAwIHsKPiA+ID4gPiArCQkJCQly ZWcgPSA8MD47Cj4gPiA+ID4gKwkJCQkJbHZkczBfaW46IGVuZHBvaW50IHsKPiA+ID4gPiArCQkJ CQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkdV9vdXRfbHZkczA+Owo+ID4gPiA+ICsJCQkJCX07Cj4g PiA+ID4gKwkJCQl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCQkJCXBvcnRAMSB7Cj4gPiA+ID4gKwkJ CQkJcmVnID0gPDE+Owo+ID4gPiA+ICsJCQkJCWx2ZHMwX291dDogZW5kcG9pbnQgewo+ID4gPiA+ ICsJCQkJCX07Cj4gPiA+ID4gKwkJCQl9Owo+ID4gPiA+ICsJCQl9Owo+ID4gPiA+ICsJCX07Cj4g PiA+ID4gKwo+ID4gPiA+ICsJCWx2ZHMxOiBsdmRzLWVuY29kZXJAZmViOTAxMDAgewo+ID4gPiA+ ICsJCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc5OTAtbHZkcyI7Cj4gPiA+ID4gKwkJCXJl ZyA9IDwwIDB4ZmViOTAxMDAgMCAweDIwPjsKPiA+ID4gPiArCQkJY2xvY2tzID0gPCZjcGcgQ1BH X01PRCA3Mjc+Owo+ID4gPiA+ICsJCQlwb3dlci1kb21haW5zID0gPCZzeXNjIFI4QTc3OTkwX1BE X0FMV0FZU19PTj47Cj4gPiA+ID4gKwkJCXJlc2V0cyA9IDwmY3BnIDcyNj47Cj4gPiAKPiA+IEFs c28sIGlzIHRoZSBtaXNzbWF0Y2ggYmV0d2VlbiB0aGUgaW5kZXggZm9yIHRoZSBjbG9jayBhbmQg cmVzZXQKPiA+IGludGVudGlvbmFsPwo+IAo+IEl0IGlzLiBBY2NvcmRpbmcgdG8gdGhlIGRhdGFz aGVldCwgdGhlIHR3byBMVkRTIGVuY29kZXJzIGhhdmUgZGlmZmVyZW50Cj4gbW9kdWxlIHN0b3Ag Yml0cywgYnV0IHNoYXJlIHRoZSBzYW1lIHJlc2V0IChsb3ZlbHkgaGFyZHdhcmUgZGVzaWduLCBp dCB3aWxsCj4gYmUgZnVuIHRvIHN1cHBvcnQgdGhhdCBpbiB0aGUgZHJpdmVyIDotUykuCgpTb3Jy eSwgSSBnb3QgaXQgd3JvbmcuIGl0J3MgYml0IDcyNSB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIHRo ZSB0d28gTFZEUyAKZW5jb2RlcnMsIHRvIHJlc2V0IHRoZSB0d28gTFZEUyBQTExzIHRvZ2V0aGVy LiBUaGUgZW5jb2RlcnMgdGhlbXNlbHZlcyBzdGlsbCAKaGF2ZSBpbmRlcGVuZGVudCByZXNldCBi aXRzLiBJJ2xsIGZpeCB0aGlzLgoKPiA+ID4gPiArCQkJc3RhdHVzID0gImRpc2FibGVkIjsKPiA+ ID4gPiArCj4gPiA+ID4gKwkJCXBvcnRzIHsKPiA+ID4gPiArCQkJCSNhZGRyZXNzLWNlbGxzID0g PDE+Owo+ID4gPiA+ICsJCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ CQkJcG9ydEAwIHsKPiA+ID4gPiArCQkJCQlyZWcgPSA8MD47Cj4gPiA+ID4gKwkJCQkJbHZkczFf aW46IGVuZHBvaW50IHsKPiA+ID4gPiArCQkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkdV9vdXRf bHZkczE+Owo+ID4gPiA+ICsJCQkJCX07Cj4gPiA+ID4gKwkJCQl9Owo+ID4gPiA+ICsKPiA+ID4g PiArCQkJCXBvcnRAMSB7Cj4gPiA+ID4gKwkJCQkJcmVnID0gPDE+Owo+ID4gPiA+ICsJCQkJCWx2 ZHMxX291dDogZW5kcG9pbnQgewo+ID4gPiA+ICsJCQkJCX07Cj4gPiA+ID4gKwkJCQl9Owo+ID4g PiA+ICsJCQl9Owo+ID4gPiA+ICsJCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICAJCXBycjogY2hpcGlk QGZmZjAwMDQ0IHsKPiA+ID4gPiAgCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHByciI7Cj4gPiA+ ID4gIAkJCXJlZyA9IDwwIDB4ZmZmMDAwNDQgMCA0PjsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQ aW5jaGFydAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK