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=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 1DB3AC43603 for ; Mon, 9 Dec 2019 11:05:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CF80D20828 for ; Mon, 9 Dec 2019 11:05:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="jMjYClSK" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727163AbfLILF4 (ORCPT ); Mon, 9 Dec 2019 06:05:56 -0500 Received: from perceval.ideasonboard.com ([213.167.242.64]:56600 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726377AbfLILF4 (ORCPT ); Mon, 9 Dec 2019 06:05:56 -0500 Received: from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8D02999A; Mon, 9 Dec 2019 12:05:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1575889552; bh=N4w4AXaS16p/lwcdBi2cR5SP3Xey0/2llcHIAVZmHOI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jMjYClSKlGqv65k+anEjhCc845ZQnnelSeRjHrx1ZoPJ/516MitNKZzs8KN3k9IDT 8PXnJUk5Tp/klOC19o/ECHdPvwxzEWZagboLI2SxFWEZkrIJMP9fDbxhuWl3+L7uLp drm9DmTcuKdECLzM+ZSkGi5H+lUkEIIqgxKfVnUY= Date: Mon, 9 Dec 2019 13:05:45 +0200 From: Laurent Pinchart To: Rob Clark Cc: dri-devel , linux-arm-msm , aarch64-laptops@lists.linaro.org, Vasily Khoruzhick , Bjorn Andersson , Jeffrey Hugo , Rob Clark , Thierry Reding , Sam Ravnborg , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list Subject: Re: [PATCH 1/4] dt-bindings: display: panel: document panel-id Message-ID: <20191209110545.GB4853@pendragon.ideasonboard.com> References: <20191207203553.286017-1-robdclark@gmail.com> <20191207203553.286017-2-robdclark@gmail.com> <20191208144533.GA14311@pendragon.ideasonboard.com> <20191208182757.GE14311@pendragon.ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi Rob, On Sun, Dec 08, 2019 at 01:23:59PM -0800, Rob Clark wrote: > On Sun, Dec 8, 2019 at 10:28 AM Laurent Pinchart wrote: > > On Sun, Dec 08, 2019 at 08:50:32AM -0800, Rob Clark wrote: > > > On Sun, Dec 8, 2019 at 6:45 AM Laurent Pinchart wrote: > > > > On Sat, Dec 07, 2019 at 12:35:50PM -0800, Rob Clark wrote: > > > > > From: Rob Clark > > > > > > > > > > For devices that have one of several possible panels installed, the > > > > > panel-id property gives firmware a generic way to locate and enable the > > > > > panel node corresponding to the installed panel. Example of how to use > > > > > this property: > > > > > > > > > > ivo_panel { > > > > > compatible = "ivo,m133nwf4-r0"; > > > > > panel-id = <0xc5>; > > > > > status = "disabled"; > > > > > > > > > > ports { > > > > > port { > > > > > ivo_panel_in_edp: endpoint { > > > > > remote-endpoint = <&sn65dsi86_out_ivo>; > > > > > }; > > > > > }; > > > > > }; > > > > > }; > > > > > > > > > > boe_panel { > > > > > compatible = "boe,nv133fhm-n61"; > > > > > panel-id = <0xc4>; > > > > > status = "disabled"; > > > > > > > > > > ports { > > > > > port { > > > > > boe_panel_in_edp: endpoint { > > > > > remote-endpoint = <&sn65dsi86_out_boe>; > > > > > }; > > > > > }; > > > > > }; > > > > > }; > > > > > > > > > > sn65dsi86: bridge@2c { > > > > > compatible = "ti,sn65dsi86"; > > > > > > > > > > ports { > > > > > #address-cells = <1>; > > > > > #size-cells = <0>; > > > > > > > > > > port@0 { > > > > > reg = <0>; > > > > > sn65dsi86_in_a: endpoint { > > > > > remote-endpoint = <&dsi0_out>; > > > > > }; > > > > > }; > > > > > > > > > > port@1 { > > > > > reg = <1>; > > > > > > > > > > sn65dsi86_out_boe: endpoint@c4 { > > > > > remote-endpoint = <&boe_panel_in_edp>; > > > > > }; > > > > > > > > > > sn65dsi86_out_ivo: endpoint@c5 { > > > > > remote-endpoint = <&ivo_panel_in_edp>; > > > > > }; > > > > > }; > > > > > }; > > > > > }; > > > > > > > > > > Signed-off-by: Rob Clark > > > > > --- > > > > > .../bindings/display/panel/panel-common.yaml | 26 +++++++++++++++++++ > > > > > 1 file changed, 26 insertions(+) > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > > > > > index ef8d8cdfcede..6113319b91dd 100644 > > > > > --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml > > > > > +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > > > > > @@ -75,6 +75,32 @@ properties: > > > > > in the device graph bindings defined in > > > > > Documentation/devicetree/bindings/graph.txt. > > > > > > > > > > + panel-id: > > > > > + description: > > > > > + To support the case where one of several different panels can be installed > > > > > + on a device, the panel-id property can be used by the firmware to identify > > > > > + which panel should have it's status changed to "ok". This property is not > > > > > + used by the HLOS itself. > > > > > > > > If your firmware can modify the status property of a panel, it can also > > > > add DT nodes. As discussed before, I don't think this belongs to DT. > > > > Even if panel-id isn't used by the operating system, you have Linux > > > > kernel patches in this series that show that this isn't transparent. > > > > > > I've already explained several times why this is not feasible. It > > > would require DtbLoader to be familiar with each individual device, > > > and be rev'd every time a new device appears. That is not practical > > > at all. > > > > > > (And fwiw, the ACPI tables describe each panel.. with an ACPI method > > > that is passed the the panel-id and returns the appropriate table.. > > > since DT doesn't have methods, this is the solution.) > > > > > > I stand by this patch, we can't keep running away from this problem > > > and wave the magic firmware wand. > > > > I believe in firmware solutions more than firmware magic wands :-) > > and with that in mind, I think I've come up with a firmware solution, > in the form of dtb overlays :-) > > I've managed to get DtbLoader to find and load a panel overlay based > on the panel-id it reads, which drops all patches in the patchset > except the last one, which now has this delta: Thank you for looking into this, I really like the outcome :-) > --------- > diff --git a/arch/arm64/boot/dts/qcom/Makefile > b/arch/arm64/boot/dts/qcom/Makefile > index 6498a1ec893f..1a61e8da2521 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -1,4 +1,5 @@ > # SPDX-License-Identifier: GPL-2.0 > +subdir-y += panels > dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.dtb > dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq8074-hk01.dtb > diff --git a/arch/arm64/boot/dts/qcom/panels/Makefile > b/arch/arm64/boot/dts/qcom/panels/Makefile > new file mode 100644 > index 000000000000..dbf55f423555 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/panels/Makefile > @@ -0,0 +1,3 @@ > +# SPDX-License-Identifier: GPL-2.0 > +dtb-$(CONFIG_ARCH_QCOM) += panel-c4.dtb > +dtb-$(CONFIG_ARCH_QCOM) += panel-c5.dtb > diff --git a/arch/arm64/boot/dts/qcom/panels/panel-c4.dts > b/arch/arm64/boot/dts/qcom/panels/panel-c4.dts > new file mode 100644 > index 000000000000..ebcf65419dad > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/panels/panel-c4.dts > @@ -0,0 +1,17 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Panel overlay for panel-id 0xc4 > + * > + * Copyright (c) 2019, Linaro Ltd. > + */ > + > +/dts-v1/; > +/plugin/; > +/ { > + fragment@0 { > + target-path = "/panel"; > + __overlay__ { > + compatible = "boe,nv133fhm-n61"; > + }; > + }; > +}; > diff --git a/arch/arm64/boot/dts/qcom/panels/panel-c5.dts > b/arch/arm64/boot/dts/qcom/panels/panel-c5.dts > new file mode 100644 > index 000000000000..0ad5bb6003e3 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/panels/panel-c5.dts > @@ -0,0 +1,17 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Panel overlay for panel-id 0xc5 > + * > + * Copyright (c) 2019, Linaro Ltd. > + */ > + > +/dts-v1/; > +/plugin/; > +/ { > + fragment@0 { > + target-path = "/panel"; > + __overlay__ { > + compatible = "ivo,m133nwf4-r0"; > + }; > + }; > +}; > diff --git a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts > b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts > index c35d8099d8eb..92c76afb721c 100644 > --- a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts > +++ b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts > @@ -22,11 +22,13 @@ > hsuart0 = &uart6; > }; > > + /* > + * stub node which defines how panel is connected to bridge, which > + * will be updated by panel specific overlay > + */ > panel { > - compatible = "ivo,m133nwf4-r0"; > power-supply = <&vlcm_3v3>; > no-hpd; > - > ports { > port { > panel_in_edp: endpoint { > --------- > > Side note, try as I might, I couldn't get the 'target = <&phandle>' > approach to work in the overlays, so I ended up going with target-path > instead. From digging thru the fdt_overlay code, I *think* it is > because I end up w/ an overlay dtb without symbols. In the end, I > guess target-path works just as well. -- Regards, Laurent Pinchart 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 CF577C00454 for ; Mon, 9 Dec 2019 11:05:57 +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 A64DE24654 for ; Mon, 9 Dec 2019 11:05:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A64DE24654 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.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 133E86E397; Mon, 9 Dec 2019 11:05:57 +0000 (UTC) Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17B886E397 for ; Mon, 9 Dec 2019 11:05:54 +0000 (UTC) Received: from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8D02999A; Mon, 9 Dec 2019 12:05:52 +0100 (CET) Date: Mon, 9 Dec 2019 13:05:45 +0200 From: Laurent Pinchart To: Rob Clark Subject: Re: [PATCH 1/4] dt-bindings: display: panel: document panel-id Message-ID: <20191209110545.GB4853@pendragon.ideasonboard.com> References: <20191207203553.286017-1-robdclark@gmail.com> <20191207203553.286017-2-robdclark@gmail.com> <20191208144533.GA14311@pendragon.ideasonboard.com> <20191208182757.GE14311@pendragon.ideasonboard.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1575889552; bh=N4w4AXaS16p/lwcdBi2cR5SP3Xey0/2llcHIAVZmHOI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jMjYClSKlGqv65k+anEjhCc845ZQnnelSeRjHrx1ZoPJ/516MitNKZzs8KN3k9IDT 8PXnJUk5Tp/klOC19o/ECHdPvwxzEWZagboLI2SxFWEZkrIJMP9fDbxhuWl3+L7uLp drm9DmTcuKdECLzM+ZSkGi5H+lUkEIIqgxKfVnUY= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , aarch64-laptops@lists.linaro.org, Rob Herring , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Jeffrey Hugo , linux-arm-msm , open list , dri-devel , Bjorn Andersson , Vasily Khoruzhick , David Airlie , Thierry Reding , Mark Rutland , Sam Ravnborg Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGkgUm9iLAoKT24gU3VuLCBEZWMgMDgsIDIwMTkgYXQgMDE6MjM6NTlQTSAtMDgwMCwgUm9iIENs YXJrIHdyb3RlOgo+IE9uIFN1biwgRGVjIDgsIDIwMTkgYXQgMTA6MjggQU0gTGF1cmVudCBQaW5j aGFydCB3cm90ZToKPiA+IE9uIFN1biwgRGVjIDA4LCAyMDE5IGF0IDA4OjUwOjMyQU0gLTA4MDAs IFJvYiBDbGFyayB3cm90ZToKPiA+ID4gT24gU3VuLCBEZWMgOCwgMjAxOSBhdCA2OjQ1IEFNIExh dXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiA+ID4gT24gU2F0LCBEZWMgMDcsIDIwMTkgYXQgMTI6 MzU6NTBQTSAtMDgwMCwgUm9iIENsYXJrIHdyb3RlOgo+ID4gPiA+ID4gRnJvbTogUm9iIENsYXJr IDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgo+ID4gPiA+ID4KPiA+ID4gPiA+IEZvciBkZXZpY2Vz IHRoYXQgaGF2ZSBvbmUgb2Ygc2V2ZXJhbCBwb3NzaWJsZSBwYW5lbHMgaW5zdGFsbGVkLCB0aGUK PiA+ID4gPiA+IHBhbmVsLWlkIHByb3BlcnR5IGdpdmVzIGZpcm13YXJlIGEgZ2VuZXJpYyB3YXkg dG8gbG9jYXRlIGFuZCBlbmFibGUgdGhlCj4gPiA+ID4gPiBwYW5lbCBub2RlIGNvcnJlc3BvbmRp bmcgdG8gdGhlIGluc3RhbGxlZCBwYW5lbC4gIEV4YW1wbGUgb2YgaG93IHRvIHVzZQo+ID4gPiA+ ID4gdGhpcyBwcm9wZXJ0eToKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgaXZvX3BhbmVsIHsKPiA+ ID4gPiA+ICAgICAgICAgY29tcGF0aWJsZSA9ICJpdm8sbTEzM253ZjQtcjAiOwo+ID4gPiA+ID4g ICAgICAgICBwYW5lbC1pZCA9IDwweGM1PjsKPiA+ID4gPiA+ICAgICAgICAgc3RhdHVzID0gImRp c2FibGVkIjsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgICAgIHBvcnRzIHsKPiA+ID4gPiA+ICAg ICAgICAgICAgIHBvcnQgewo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIGl2b19wYW5lbF9pbl9l ZHA6IGVuZHBvaW50IHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgcmVtb3RlLWVuZHBv aW50ID0gPCZzbjY1ZHNpODZfb3V0X2l2bz47Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgfTsK PiA+ID4gPiA+ICAgICAgICAgICAgIH07Cj4gPiA+ID4gPiAgICAgICAgIH07Cj4gPiA+ID4gPiAg ICAgfTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgYm9lX3BhbmVsIHsKPiA+ID4gPiA+ICAgICAg ICAgY29tcGF0aWJsZSA9ICJib2UsbnYxMzNmaG0tbjYxIjsKPiA+ID4gPiA+ICAgICAgICAgcGFu ZWwtaWQgPSA8MHhjND47Cj4gPiA+ID4gPiAgICAgICAgIHN0YXR1cyA9ICJkaXNhYmxlZCI7Cj4g PiA+ID4gPgo+ID4gPiA+ID4gICAgICAgICBwb3J0cyB7Cj4gPiA+ID4gPiAgICAgICAgICAgICBw b3J0IHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBib2VfcGFuZWxfaW5fZWRwOiBlbmRwb2lu dCB7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmc242 NWRzaTg2X291dF9ib2U+Owo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIH07Cj4gPiA+ID4gPiAg ICAgICAgICAgICB9Owo+ID4gPiA+ID4gICAgICAgICB9Owo+ID4gPiA+ID4gICAgIH07Cj4gPiA+ ID4gPgo+ID4gPiA+ID4gICAgIHNuNjVkc2k4NjogYnJpZGdlQDJjIHsKPiA+ID4gPiA+ICAgICAg ICAgY29tcGF0aWJsZSA9ICJ0aSxzbjY1ZHNpODYiOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAg ICAgcG9ydHMgewo+ID4gPiA+ID4gICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4g PiA+ID4gPiAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ID4gPiA+Cj4gPiA+ID4g PiAgICAgICAgICAgICBwb3J0QDAgewo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHJlZyA9IDww PjsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBzbjY1ZHNpODZfaW5fYTogZW5kcG9pbnQgewo+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICByZW1vdGUtZW5kcG9pbnQgPSA8JmRzaTBfb3V0 PjsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB9Owo+ID4gPiA+ID4gICAgICAgICAgICAgfTsK PiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgICAgICAgICBwb3J0QDEgewo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIHJlZyA9IDwxPjsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAg c242NWRzaTg2X291dF9ib2U6IGVuZHBvaW50QGM0IHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgcmVtb3RlLWVuZHBvaW50ID0gPCZib2VfcGFuZWxfaW5fZWRwPjsKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICB9Owo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBzbjY1 ZHNpODZfb3V0X2l2bzogZW5kcG9pbnRAYzUgewo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICByZW1vdGUtZW5kcG9pbnQgPSA8Jml2b19wYW5lbF9pbl9lZHA+Owo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIH07Cj4gPiA+ID4gPiAgICAgICAgICAgICB9Owo+ID4gPiA+ID4gICAgICAgICB9 Owo+ID4gPiA+ID4gICAgIH07Cj4gPiA+ID4gPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9i IENsYXJrIDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAg Li4uL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtY29tbW9uLnlhbWwgIHwgMjYgKysrKysr KysrKysrKysrKysrKwo+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCsp Cj4gPiA+ID4gPgo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLWNvbW1vbi55YW1sIGIvRG9jdW1lbnRhdGlv bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtY29tbW9uLnlhbWwKPiA+ ID4gPiA+IGluZGV4IGVmOGQ4Y2RmY2VkZS4uNjExMzMxOWI5MWRkIDEwMDY0NAo+ID4gPiA+ID4g LS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFu ZWwtY29tbW9uLnlhbWwKPiA+ID4gPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLWNvbW1vbi55YW1sCj4gPiA+ID4gPiBAQCAtNzUs NiArNzUsMzIgQEAgcHJvcGVydGllczoKPiA+ID4gPiA+ICAgICAgICBpbiB0aGUgZGV2aWNlIGdy YXBoIGJpbmRpbmdzIGRlZmluZWQgaW4KPiA+ID4gPiA+ICAgICAgICBEb2N1bWVudGF0aW9uL2Rl dmljZXRyZWUvYmluZGluZ3MvZ3JhcGgudHh0Lgo+ID4gPiA+ID4KPiA+ID4gPiA+ICsgIHBhbmVs LWlkOgo+ID4gPiA+ID4gKyAgICBkZXNjcmlwdGlvbjoKPiA+ID4gPiA+ICsgICAgICBUbyBzdXBw b3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvZiBzZXZlcmFsIGRpZmZlcmVudCBwYW5lbHMgY2FuIGJl IGluc3RhbGxlZAo+ID4gPiA+ID4gKyAgICAgIG9uIGEgZGV2aWNlLCB0aGUgcGFuZWwtaWQgcHJv cGVydHkgY2FuIGJlIHVzZWQgYnkgdGhlIGZpcm13YXJlIHRvIGlkZW50aWZ5Cj4gPiA+ID4gPiAr ICAgICAgd2hpY2ggcGFuZWwgc2hvdWxkIGhhdmUgaXQncyBzdGF0dXMgY2hhbmdlZCB0byAib2si LiAgVGhpcyBwcm9wZXJ0eSBpcyBub3QKPiA+ID4gPiA+ICsgICAgICB1c2VkIGJ5IHRoZSBITE9T IGl0c2VsZi4KPiA+ID4gPgo+ID4gPiA+IElmIHlvdXIgZmlybXdhcmUgY2FuIG1vZGlmeSB0aGUg c3RhdHVzIHByb3BlcnR5IG9mIGEgcGFuZWwsIGl0IGNhbiBhbHNvCj4gPiA+ID4gYWRkIERUIG5v ZGVzLiBBcyBkaXNjdXNzZWQgYmVmb3JlLCBJIGRvbid0IHRoaW5rIHRoaXMgYmVsb25ncyB0byBE VC4KPiA+ID4gPiBFdmVuIGlmIHBhbmVsLWlkIGlzbid0IHVzZWQgYnkgdGhlIG9wZXJhdGluZyBz eXN0ZW0sIHlvdSBoYXZlIExpbnV4Cj4gPiA+ID4ga2VybmVsIHBhdGNoZXMgaW4gdGhpcyBzZXJp ZXMgdGhhdCBzaG93IHRoYXQgdGhpcyBpc24ndCB0cmFuc3BhcmVudC4KPiA+ID4KPiA+ID4gSSd2 ZSBhbHJlYWR5IGV4cGxhaW5lZCBzZXZlcmFsIHRpbWVzIHdoeSB0aGlzIGlzIG5vdCBmZWFzaWJs ZS4gIEl0Cj4gPiA+IHdvdWxkIHJlcXVpcmUgRHRiTG9hZGVyIHRvIGJlIGZhbWlsaWFyIHdpdGgg ZWFjaCBpbmRpdmlkdWFsIGRldmljZSwKPiA+ID4gYW5kIGJlIHJldidkIGV2ZXJ5IHRpbWUgYSBu ZXcgZGV2aWNlIGFwcGVhcnMuICBUaGF0IGlzIG5vdCBwcmFjdGljYWwKPiA+ID4gYXQgYWxsLgo+ ID4gPgo+ID4gPiAoQW5kIGZ3aXcsIHRoZSBBQ1BJIHRhYmxlcyBkZXNjcmliZSBlYWNoIHBhbmVs Li4gd2l0aCBhbiBBQ1BJIG1ldGhvZAo+ID4gPiB0aGF0IGlzIHBhc3NlZCB0aGUgdGhlIHBhbmVs LWlkIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSB0YWJsZS4uCj4gPiA+IHNpbmNlIERUIGRv ZXNuJ3QgaGF2ZSBtZXRob2RzLCB0aGlzIGlzIHRoZSBzb2x1dGlvbi4pCj4gPiA+Cj4gPiA+IEkg c3RhbmQgYnkgdGhpcyBwYXRjaCwgd2UgY2FuJ3Qga2VlcCBydW5uaW5nIGF3YXkgZnJvbSB0aGlz IHByb2JsZW0KPiA+ID4gYW5kIHdhdmUgdGhlIG1hZ2ljIGZpcm13YXJlIHdhbmQuCj4gPgo+ID4g SSBiZWxpZXZlIGluIGZpcm13YXJlIHNvbHV0aW9ucyBtb3JlIHRoYW4gZmlybXdhcmUgbWFnaWMg d2FuZHMgOi0pCj4gCj4gYW5kIHdpdGggdGhhdCBpbiBtaW5kLCBJIHRoaW5rIEkndmUgY29tZSB1 cCB3aXRoIGEgZmlybXdhcmUgc29sdXRpb24sCj4gaW4gdGhlIGZvcm0gb2YgZHRiIG92ZXJsYXlz IDotKQo+IAo+IEkndmUgbWFuYWdlZCB0byBnZXQgRHRiTG9hZGVyIHRvIGZpbmQgYW5kIGxvYWQg YSBwYW5lbCBvdmVybGF5IGJhc2VkCj4gb24gdGhlIHBhbmVsLWlkIGl0IHJlYWRzLCB3aGljaCBk cm9wcyBhbGwgcGF0Y2hlcyBpbiB0aGUgcGF0Y2hzZXQKPiBleGNlcHQgdGhlIGxhc3Qgb25lLCB3 aGljaCBub3cgaGFzIHRoaXMgZGVsdGE6CgpUaGFuayB5b3UgZm9yIGxvb2tpbmcgaW50byB0aGlz LCBJIHJlYWxseSBsaWtlIHRoZSBvdXRjb21lIDotKQoKPiAtLS0tLS0tLS0KPiBkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL01ha2VmaWxlCj4gYi9hcmNoL2FybTY0L2Jvb3Qv ZHRzL3Fjb20vTWFrZWZpbGUKPiBpbmRleCA2NDk4YTFlYzg5M2YuLjFhNjFlOGRhMjUyMSAxMDA2 NDQKPiAtLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vTWFrZWZpbGUKPiArKysgYi9hcmNo L2FybTY0L2Jvb3QvZHRzL3Fjb20vTWFrZWZpbGUKPiBAQCAtMSw0ICsxLDUgQEAKPiAgIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICtzdWJkaXIteSArPSBwYW5lbHMKPiAgZHRi LSQoQ09ORklHX0FSQ0hfUUNPTSkgICAgKz0gYXBxODAxNi1zYmMuZHRiCj4gIGR0Yi0kKENPTkZJ R19BUkNIX1FDT00pICAgICs9IGFwcTgwOTYtZGI4MjBjLmR0Ygo+ICBkdGItJChDT05GSUdfQVJD SF9RQ09NKSAgICArPSBpcHE4MDc0LWhrMDEuZHRiCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv Ym9vdC9kdHMvcWNvbS9wYW5lbHMvTWFrZWZpbGUKPiBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNv bS9wYW5lbHMvTWFrZWZpbGUKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uZGJmNTVmNDIzNTU1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtNjQvYm9v dC9kdHMvcWNvbS9wYW5lbHMvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDMgQEAKPiArIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICtkdGItJChDT05GSUdfQVJDSF9RQ09NKSArPSBw YW5lbC1jNC5kdGIKPiArZHRiLSQoQ09ORklHX0FSQ0hfUUNPTSkgKz0gcGFuZWwtYzUuZHRiCj4g ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9wYW5lbHMvcGFuZWwtYzQuZHRz Cj4gYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcGFuZWxzL3BhbmVsLWM0LmR0cwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lYmNmNjU0MTlkYWQKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3BhbmVscy9wYW5lbC1j NC5kdHMKPiBAQCAtMCwwICsxLDE3IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMy1DbGF1c2UKPiArLyoKPiArICogUGFuZWwgb3ZlcmxheSBmb3IgcGFuZWwtaWQgMHhjNAo+ ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIExpbmFybyBMdGQuCj4gKyAqLwo+ICsKPiAr L2R0cy12MS87Cj4gKy9wbHVnaW4vOwo+ICsvIHsKPiArICAgIGZyYWdtZW50QDAgewo+ICsgICAg ICAgIHRhcmdldC1wYXRoID0gIi9wYW5lbCI7Cj4gKyAgICAgICAgX19vdmVybGF5X18gewo+ICsg ICAgICAgICAgICBjb21wYXRpYmxlID0gImJvZSxudjEzM2ZobS1uNjEiOwo+ICsgICAgICAgIH07 Cj4gKyAgICB9Owo+ICt9Owo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20v cGFuZWxzL3BhbmVsLWM1LmR0cwo+IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3BhbmVscy9w YW5lbC1jNS5kdHMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4u MGFkNWJiNjAwM2UzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMv cWNvbS9wYW5lbHMvcGFuZWwtYzUuZHRzCj4gQEAgLTAsMCArMSwxNyBAQAo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCj4gKy8qCj4gKyAqIFBhbmVsIG92ZXJsYXkg Zm9yIHBhbmVsLWlkIDB4YzUKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBMaW5hcm8g THRkLgo+ICsgKi8KPiArCj4gKy9kdHMtdjEvOwo+ICsvcGx1Z2luLzsKPiArLyB7Cj4gKyAgICBm cmFnbWVudEAwIHsKPiArICAgICAgICB0YXJnZXQtcGF0aCA9ICIvcGFuZWwiOwo+ICsgICAgICAg IF9fb3ZlcmxheV9fIHsKPiArICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJpdm8sbTEzM253ZjQt cjAiOwo+ICsgICAgICAgIH07Cj4gKyAgICB9Owo+ICt9Owo+IGRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2Jvb3QvZHRzL3Fjb20vc2RtODUwLWxlbm92by15b2dhLWM2MzAuZHRzCj4gYi9hcmNoL2Fy bTY0L2Jvb3QvZHRzL3Fjb20vc2RtODUwLWxlbm92by15b2dhLWM2MzAuZHRzCj4gaW5kZXggYzM1 ZDgwOTlkOGViLi45MmM3NmFmYjcyMWMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9ib290L2R0 cy9xY29tL3NkbTg1MC1sZW5vdm8teW9nYS1jNjMwLmR0cwo+ICsrKyBiL2FyY2gvYXJtNjQvYm9v dC9kdHMvcWNvbS9zZG04NTAtbGVub3ZvLXlvZ2EtYzYzMC5kdHMKPiBAQCAtMjIsMTEgKzIyLDEz IEBACj4gICAgICAgICAgaHN1YXJ0MCA9ICZ1YXJ0NjsKPiAgICAgIH07Cj4gCj4gKyAgICAvKgo+ ICsgICAgICogc3R1YiBub2RlIHdoaWNoIGRlZmluZXMgaG93IHBhbmVsIGlzIGNvbm5lY3RlZCB0 byBicmlkZ2UsIHdoaWNoCj4gKyAgICAgKiB3aWxsIGJlIHVwZGF0ZWQgYnkgcGFuZWwgc3BlY2lm aWMgb3ZlcmxheQo+ICsgICAgICovCj4gICAgICBwYW5lbCB7Cj4gLSAgICAgICAgY29tcGF0aWJs ZSA9ICJpdm8sbTEzM253ZjQtcjAiOwo+ICAgICAgICAgIHBvd2VyLXN1cHBseSA9IDwmdmxjbV8z djM+Owo+ICAgICAgICAgIG5vLWhwZDsKPiAtCj4gICAgICAgICAgcG9ydHMgewo+ICAgICAgICAg ICAgICBwb3J0IHsKPiAgICAgICAgICAgICAgICAgIHBhbmVsX2luX2VkcDogZW5kcG9pbnQgewo+ IC0tLS0tLS0tLQo+IAo+IFNpZGUgbm90ZSwgdHJ5IGFzIEkgbWlnaHQsIEkgY291bGRuJ3QgZ2V0 IHRoZSAndGFyZ2V0ID0gPCZwaGFuZGxlPicKPiBhcHByb2FjaCB0byB3b3JrIGluIHRoZSBvdmVy bGF5cywgc28gSSBlbmRlZCB1cCBnb2luZyB3aXRoIHRhcmdldC1wYXRoCj4gaW5zdGVhZC4gIEZy b20gZGlnZ2luZyB0aHJ1IHRoZSBmZHRfb3ZlcmxheSBjb2RlLCBJICp0aGluayogaXQgaXMKPiBi ZWNhdXNlIEkgZW5kIHVwIHcvIGFuIG92ZXJsYXkgZHRiIHdpdGhvdXQgc3ltYm9scy4gIEluIHRo ZSBlbmQsIEkKPiBndWVzcyB0YXJnZXQtcGF0aCB3b3JrcyBqdXN0IGFzIHdlbGwuCgotLSAKUmVn YXJkcywKCkxhdXJlbnQgUGluY2hhcnQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVs