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=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 2CF85C48BD1 for ; Wed, 9 Jun 2021 11:48:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 17452613B1 for ; Wed, 9 Jun 2021 11:48:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239653AbhFILun (ORCPT ); Wed, 9 Jun 2021 07:50:43 -0400 Received: from mail-wm1-f42.google.com ([209.85.128.42]:46654 "EHLO mail-wm1-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239674AbhFILtU (ORCPT ); Wed, 9 Jun 2021 07:49:20 -0400 Received: by mail-wm1-f42.google.com with SMTP id h22-20020a05600c3516b02901a826f84095so3978190wmq.5 for ; Wed, 09 Jun 2021 04:47:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cfLtTNNJiGvr55qHsiqGqf0rsZ8IwtangtgE/TkYmbA=; b=PxwsGurI5LFbUdiMPG9tgAXg/8gJkbrklsARX0YrESmDqzg6Giwj6Ut6rot1PKCt4E aD1LIVB+Uurn8Ru5PNApppk9cwb3h6OkwReNFU/sDhTQWJ522pGRzUWOeULX6gb1URRn g+JbL5fxWEdlt0noA4O1TjtDticVjl18SSCLZLj6zCjtQHVJMZokEzktYRjJqD4K0Bmv fFxMG68paOZROr0To5WxUqzVo1evTKIsM27EuX6jJeWeW0S6XSDnNqZ5Nyi0ikVKjkDj oE8REk5PKUNLUGWbQIJbj6yr22X2WvNncYhIItSONDlxn+qFWXfLAWI6fR+RpBNnRnV5 EF9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=cfLtTNNJiGvr55qHsiqGqf0rsZ8IwtangtgE/TkYmbA=; b=DMEmfmpoZ+GUZEhSoXTAzjAYd4jsB5mYKTyaUSOv/18zQVrDnRNcJoRlptZB35lYVe fE/Dz43iMfmaie2pTR7Ma1CkHdqytTxSa1FfjddsEDEWyN4mWVvqle2HNKMtr/Tgi7pD KWDRgKh/CWjALA4ycZhDtgNybsNmJ6mLcObjeMWcA7Lx8sCRdpEkMD5vQxJibvt2h3oU QOl1HbOeilGTJOOONfSR403ZjCvvi0UoRPq5+QG0N/F4mhY1fPwDiytj52vXoXhaI8fS 527V3Dnriwxv/XouG5LHy54ht4ibABc1DL2cyre6sXvScjtC4h2pWJzv4sEJZNAnjnx0 K0ng== X-Gm-Message-State: AOAM531KVzz5iKYi/RKsyo1f5P8Yi6F9P0fEcIU0hcZAUndS9o3zDXgT iSFcT0lO8n3U95c3bClyVL2C5vqf3tXsObZI X-Google-Smtp-Source: ABdhPJyJRp2Y6BxdlZM8cR6adUoUx48/QEolsI59RFFzti4bjUtPbC8CZ1cRMROJilEWIYMzMQPdZA== X-Received: by 2002:a1c:7210:: with SMTP id n16mr9104082wmc.75.1623239174183; Wed, 09 Jun 2021 04:46:14 -0700 (PDT) Received: from localhost ([2a02:768:2307:40d6::45a]) by smtp.gmail.com with ESMTPSA id p10sm11635975wrr.33.2021.06.09.04.46.13 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 09 Jun 2021 04:46:13 -0700 (PDT) Sender: Michal Simek From: Michal Simek To: linux-kernel@vger.kernel.org, monstr@monstr.eu, michal.simek@xilinx.com, git@xilinx.com, Viresh Kumar Cc: Geert Uytterhoeven , Krzysztof Kozlowski , Michael Walle , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 31/31] arm64: zynqmp: Add support for Xilinx Kria SOM board Date: Wed, 9 Jun 2021 13:45:07 +0200 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are couple of revisions of SOMs (k26) and associated carrier cards (kv260). SOM itself has two major versions: sm-k26 - SOM with EMMC smk-k26 - SOM without EMMC used on starter kit with preprogrammed firmware in QSPI. SOMs are describing only devices available on the SOM or connections which are described in specification (for example UART, fwuen). Signed-off-by: Michal Simek --- https://www.xilinx.com/products/som/kria.html --- .../devicetree/bindings/arm/xilinx.yaml | 31 ++ arch/arm64/boot/dts/xilinx/Makefile | 11 + .../boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts | 371 ++++++++++++++++++ .../boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts | 351 +++++++++++++++++ .../boot/dts/xilinx/zynqmp-sm-k26-revA.dts | 289 ++++++++++++++ .../boot/dts/xilinx/zynqmp-smk-k26-revA.dts | 21 + 6 files changed, 1074 insertions(+) create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts diff --git a/Documentation/devicetree/bindings/arm/xilinx.yaml b/Documentation/devicetree/bindings/arm/xilinx.yaml index a0b1ae6e3e71..1a4a03dfaf7f 100644 --- a/Documentation/devicetree/bindings/arm/xilinx.yaml +++ b/Documentation/devicetree/bindings/arm/xilinx.yaml @@ -116,6 +116,37 @@ properties: - const: xlnx,zynqmp-zcu111 - const: xlnx,zynqmp + - description: Xilinx Kria SOMs + items: + - const: xlnx,zynqmp-sm-k26-rev1 + - const: xlnx,zynqmp-sm-k26-revB + - const: xlnx,zynqmp-sm-k26-revA + - const: xlnx,zynqmp-sm-k26 + - const: xlnx,zynqmp + + - description: Xilinx Kria SOMs (starter) + items: + - const: xlnx,zynqmp-smk-k26-rev1 + - const: xlnx,zynqmp-smk-k26-revB + - const: xlnx,zynqmp-smk-k26-revA + - const: xlnx,zynqmp-smk-k26 + - const: xlnx,zynqmp + + - description: Xilinx Kria Carrier Cards (revA/Y/Z) + items: + - const: xlnx,zynqmp-sk-kv260-revZ + - const: xlnx,zynqmp-sk-kv260-revY + - const: xlnx,zynqmp-sk-kv260-revA + - const: xlnx,zynqmp-sk-k260 + - const: xlnx,zynqmp + + - description: Xilinx Kria Carrier Cards (revB/1) + items: + - const: xlnx,zynqmp-sk-kv260-rev1 + - const: xlnx,zynqmp-sk-kv260-revB + - const: xlnx,zynqmp-sk-k260 + - const: xlnx,zynqmp + additionalProperties: true ... diff --git a/arch/arm64/boot/dts/xilinx/Makefile b/arch/arm64/boot/dts/xilinx/Makefile index 083ed52337fd..bd7747770674 100644 --- a/arch/arm64/boot/dts/xilinx/Makefile +++ b/arch/arm64/boot/dts/xilinx/Makefile @@ -17,3 +17,14 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revA.dtb dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revC.dtb dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu106-revA.dtb dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu111-revA.dtb + + +dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k26-revA.dtb +dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k26-revA.dtb + +som-AA-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kv-g-revA.dtbo +som-AB-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kv-g-revB.dtbo +starter-AA-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kv-g-revA.dtbo +starter-AB-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kv-g-revB.dtbo + +dtb-$(CONFIG_ARCH_ZYNQMP) += som-AA.dtb som-AB.dtb starter-AA.dtb starter-AB.dtb diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts new file mode 100644 index 000000000000..3c2918bf9897 --- /dev/null +++ b/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts @@ -0,0 +1,371 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dts file for KV260 revA Carrier Card + * + * (C) Copyright 2020, Xilinx, Inc. + * + * SD level shifter: + * "A" – A01 board un-modified (NXP) + * "Y" – A01 board modified with legacy interposer (Nexperia) + * "Z" – A01 board modified with Diode interposer + * + * Michal Simek + */ + + #include + #include + #include + #include + +/dts-v1/; +/plugin/; + +/{ + compatible = "xlnx,zynqmp-sk-kv260-revA", + "xlnx,zynqmp-sk-kv260-revY", + "xlnx,zynqmp-sk-kv260-revZ", + "xlnx,zynqmp-sk-kv260", "xlnx,zynqmp"; + + fragment1 { + target = <&i2c1>; /* I2C_SCK C23/C24 - MIO from SOM */ + + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default", "gpio"; + pinctrl-0 = <&pinctrl_i2c1_default>; + pinctrl-1 = <&pinctrl_i2c1_gpio>; + scl-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>; + sda-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; + + u14: ina260@40 { /* u14 */ + compatible = "ti,ina260"; + #io-channel-cells = <1>; + label = "ina260-u14"; + reg = <0x40>; + }; + /* u27 - 0xe0 - STDP4320 DP/HDMI splitter */ + }; + }; + + fragment1a { + target = <&amba>; + __overlay__ { + ina260-u14 { + compatible = "iio-hwmon"; + io-channels = <&u14 0>, <&u14 1>, <&u14 2>; + }; + + si5332_0: si5332_0 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + si5332_1: si5332_1 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <25000000>; + }; + + si5332_2: si5332_2 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <48000000>; + }; + + si5332_3: si5332_3 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + + si5332_4: si5332_4 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <26000000>; + }; + + si5332_5: si5332_5 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <27000000>; + }; + }; + }; + +/* DP/USB 3.0 and SATA */ + fragment2 { + target = <&psgtr>; + __overlay__ { + status = "okay"; + /* pcie, usb3, sata */ + clocks = <&si5332_5>, <&si5332_4>, <&si5332_0>; + clock-names = "ref0", "ref1", "ref2"; + }; + }; + + fragment3 { + target = <&sata>; + __overlay__ { + status = "okay"; + /* SATA OOB timing settings */ + ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>; + ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>; + ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>; + ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>; + ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>; + ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>; + ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>; + ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>; + phy-names = "sata-phy"; + phys = <&psgtr 3 PHY_TYPE_SATA 1 2>; + }; + }; + + fragment4 { + target = <&zynqmp_dpsub>; + __overlay__ { + status = "disabled"; + phy-names = "dp-phy0", "dp-phy1"; + phys = <&psgtr 1 PHY_TYPE_DP 0 0>, <&psgtr 0 PHY_TYPE_DP 1 0>; + }; + }; + + fragment9 { + target = <&zynqmp_dpdma>; + __overlay__ { + status = "okay"; + }; + }; + + fragment10 { + target = <&usb0>; + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb0_default>; + usbhub: usb5744 { /* u43 */ + compatible = "microchip,usb5744"; + reset-gpios = <&gpio 44 GPIO_ACTIVE_HIGH>; + }; + }; + }; + + fragment11 { + target = <&dwc3_0>; + __overlay__ { + status = "okay"; + dr_mode = "host"; + snps,usb3_lpm_capable; + phy-names = "usb3-phy"; + phys = <&psgtr 2 PHY_TYPE_USB3 0 1>; + maximum-speed = "super-speed"; + }; + }; + + fragment12 { + target = <&sdhci1>; /* on CC with tuned parameters */ + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sdhci1_default>; + /* + * SD 3.0 requires level shifter and this property + * should be removed if the board has level shifter and + * need to work in UHS mode + */ + no-1-8-v; + disable-wp; + xlnx,mio-bank = <1>; + }; + }; + + fragment13 { + target = <&gem3>; /* required by spec */ + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gem3_default>; + phy-handle = <&phy0>; + phy-mode = "rgmii-id"; + + mdio: mdio { + #address-cells = <1>; + #size-cells = <0>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-delay-us = <2>; + + phy0: ethernet-phy@1 { + #phy-cells = <1>; + reg = <1>; + ti,rx-internal-delay = ; + ti,tx-internal-delay = ; + ti,fifo-depth = ; + ti,dp83867-rxctrl-strap-quirk; + }; + }; + }; + }; + + fragment14 { + target = <&pinctrl0>; /* required by spec */ + __overlay__ { + status = "okay"; + + pinctrl_uart1_default: uart1-default { + conf { + groups = "uart1_9_grp"; + slew-rate = ; + power-source = ; + drive-strength = <12>; + }; + + conf-rx { + pins = "MIO37"; + bias-high-impedance; + }; + + conf-tx { + pins = "MIO36"; + bias-disable; + }; + + mux { + groups = "uart1_9_grp"; + function = "uart1"; + }; + }; + + pinctrl_i2c1_default: i2c1-default { + conf { + groups = "i2c1_6_grp"; + bias-pull-up; + slew-rate = ; + power-source = ; + }; + + mux { + groups = "i2c1_6_grp"; + function = "i2c1"; + }; + }; + + pinctrl_i2c1_gpio: i2c1-gpio { + conf { + groups = "gpio0_24_grp", "gpio0_25_grp"; + slew-rate = ; + power-source = ; + }; + + mux { + groups = "gpio0_24_grp", "gpio0_25_grp"; + function = "gpio0"; + }; + }; + + pinctrl_gem3_default: gem3-default { + conf { + groups = "ethernet3_0_grp"; + slew-rate = ; + power-source = ; + }; + + conf-rx { + pins = "MIO70", "MIO72", "MIO74"; + bias-high-impedance; + low-power-disable; + }; + + conf-bootstrap { + pins = "MIO71", "MIO73", "MIO75"; + bias-disable; + low-power-disable; + }; + + conf-tx { + pins = "MIO64", "MIO65", "MIO66", + "MIO67", "MIO68", "MIO69"; + bias-disable; + low-power-enable; + }; + + conf-mdio { + groups = "mdio3_0_grp"; + slew-rate = ; + power-source = ; + bias-disable; + }; + + mux-mdio { + function = "mdio3"; + groups = "mdio3_0_grp"; + }; + + mux { + function = "ethernet3"; + groups = "ethernet3_0_grp"; + }; + }; + + pinctrl_usb0_default: usb0-default { + conf { + groups = "usb0_0_grp"; + slew-rate = ; + power-source = ; + }; + + conf-rx { + pins = "MIO52", "MIO53", "MIO55"; + bias-high-impedance; + }; + + conf-tx { + pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59", + "MIO60", "MIO61", "MIO62", "MIO63"; + bias-disable; + }; + + mux { + groups = "usb0_0_grp"; + function = "usb0"; + }; + }; + + pinctrl_sdhci1_default: sdhci1-default { + conf { + groups = "sdio1_0_grp"; + slew-rate = ; + power-source = ; + bias-disable; + }; + + conf-cd { + groups = "sdio1_cd_0_grp"; + bias-high-impedance; + bias-pull-up; + slew-rate = ; + power-source = ; + }; + + mux-cd { + groups = "sdio1_cd_0_grp"; + function = "sdio1_cd"; + }; + + mux { + groups = "sdio1_0_grp"; + function = "sdio1"; + }; + }; + }; + }; + fragment15 { + target = <&uart1>; + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart1_default>; + }; + }; +}; diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts b/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts new file mode 100644 index 000000000000..62d175cf3d5d --- /dev/null +++ b/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts @@ -0,0 +1,351 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dts file for KV260 revA Carrier Card + * + * (C) Copyright 2020, Xilinx, Inc. + * + * Michal Simek + */ + + #include + #include + #include + #include + +/dts-v1/; +/plugin/; + +/{ + compatible = "xlnx,zynqmp-sk-kv260-rev1", + "xlnx,zynqmp-sk-kv260-revB", + "xlnx,zynqmp-sk-kv260", "xlnx,zynqmp"; + + fragment1 { + target = <&i2c1>; /* I2C_SCK C23/C24 - MIO from SOM */ + + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default", "gpio"; + pinctrl-0 = <&pinctrl_i2c1_default>; + pinctrl-1 = <&pinctrl_i2c1_gpio>; + scl-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>; + sda-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; + + u14: ina260@40 { /* u14 */ + compatible = "ti,ina260"; + #io-channel-cells = <1>; + label = "ina260-u14"; + reg = <0x40>; + }; + usbhub: usb5744@2d { /* u43 */ + compatible = "microchip,usb5744"; + reg = <0x2d>; + reset-gpios = <&gpio 44 GPIO_ACTIVE_HIGH>; + }; + /* u27 - 0xe0 - STDP4320 DP/HDMI splitter */ + }; + }; + + fragment1a { + target = <&amba>; + __overlay__ { + ina260-u14 { + compatible = "iio-hwmon"; + io-channels = <&u14 0>, <&u14 1>, <&u14 2>; + }; + + si5332_0: si5332_0 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + + si5332_1: si5332_1 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <25000000>; + }; + + si5332_2: si5332_2 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <48000000>; + }; + + si5332_3: si5332_3 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + + si5332_4: si5332_4 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <26000000>; + }; + + si5332_5: si5332_5 { /* u17 */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <27000000>; + }; + }; + }; + +/* DP/USB 3.0 */ + fragment2 { + target = <&psgtr>; + __overlay__ { + status = "okay"; + /* pcie, usb3, sata */ + clocks = <&si5332_5>, <&si5332_4>, <&si5332_0>; + clock-names = "ref0", "ref1", "ref2"; + }; + }; + + fragment4 { + target = <&zynqmp_dpsub>; + __overlay__ { + status = "disabled"; + phy-names = "dp-phy0", "dp-phy1"; + phys = <&psgtr 1 PHY_TYPE_DP 0 0>, <&psgtr 0 PHY_TYPE_DP 1 0>; + }; + }; + + fragment9 { + target = <&zynqmp_dpdma>; + __overlay__ { + status = "okay"; + }; + }; + + fragment10 { + target = <&usb0>; + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb0_default>; + }; + }; + + fragment11 { + target = <&dwc3_0>; + __overlay__ { + status = "okay"; + dr_mode = "host"; + snps,usb3_lpm_capable; + phy-names = "usb3-phy"; + phys = <&psgtr 2 PHY_TYPE_USB3 0 1>; + maximum-speed = "super-speed"; + }; + }; + + fragment12 { + target = <&sdhci1>; /* on CC with tuned parameters */ + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sdhci1_default>; + /* + * SD 3.0 requires level shifter and this property + * should be removed if the board has level shifter and + * need to work in UHS mode + */ + no-1-8-v; + disable-wp; + xlnx,mio-bank = <1>; + clk-phase-sd-hs = <126>, <60>; + clk-phase-uhs-sdr25 = <120>, <60>; + clk-phase-uhs-ddr50 = <126>, <48>; + }; + }; + + fragment13 { + target = <&gem3>; /* required by spec */ + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gem3_default>; + phy-handle = <&phy0>; + phy-mode = "rgmii-id"; + + mdio: mdio { + #address-cells = <1>; + #size-cells = <0>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-delay-us = <2>; + + phy0: ethernet-phy@1 { + #phy-cells = <1>; + reg = <1>; + ti,rx-internal-delay = ; + ti,tx-internal-delay = ; + ti,fifo-depth = ; + ti,dp83867-rxctrl-strap-quirk; + }; + }; + }; + }; + + fragment14 { + target = <&pinctrl0>; /* required by spec */ + __overlay__ { + status = "okay"; + + pinctrl_uart1_default: uart1-default { + conf { + groups = "uart1_9_grp"; + slew-rate = ; + power-source = ; + drive-strength = <12>; + }; + + conf-rx { + pins = "MIO37"; + bias-high-impedance; + }; + + conf-tx { + pins = "MIO36"; + bias-disable; + }; + + mux { + groups = "uart1_9_grp"; + function = "uart1"; + }; + }; + + pinctrl_i2c1_default: i2c1-default { + conf { + groups = "i2c1_6_grp"; + bias-pull-up; + slew-rate = ; + power-source = ; + }; + + mux { + groups = "i2c1_6_grp"; + function = "i2c1"; + }; + }; + + pinctrl_i2c1_gpio: i2c1-gpio { + conf { + groups = "gpio0_24_grp", "gpio0_25_grp"; + slew-rate = ; + power-source = ; + }; + + mux { + groups = "gpio0_24_grp", "gpio0_25_grp"; + function = "gpio0"; + }; + }; + + pinctrl_gem3_default: gem3-default { + conf { + groups = "ethernet3_0_grp"; + slew-rate = ; + power-source = ; + }; + + conf-rx { + pins = "MIO70", "MIO72", "MIO74"; + bias-high-impedance; + low-power-disable; + }; + + conf-bootstrap { + pins = "MIO71", "MIO73", "MIO75"; + bias-disable; + low-power-disable; + }; + + conf-tx { + pins = "MIO64", "MIO65", "MIO66", + "MIO67", "MIO68", "MIO69"; + bias-disable; + low-power-enable; + }; + + conf-mdio { + groups = "mdio3_0_grp"; + slew-rate = ; + power-source = ; + bias-disable; + }; + + mux-mdio { + function = "mdio3"; + groups = "mdio3_0_grp"; + }; + + mux { + function = "ethernet3"; + groups = "ethernet3_0_grp"; + }; + }; + + pinctrl_usb0_default: usb0-default { + conf { + groups = "usb0_0_grp"; + slew-rate = ; + power-source = ; + }; + + conf-rx { + pins = "MIO52", "MIO53", "MIO55"; + bias-high-impedance; + }; + + conf-tx { + pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59", + "MIO60", "MIO61", "MIO62", "MIO63"; + bias-disable; + }; + + mux { + groups = "usb0_0_grp"; + function = "usb0"; + }; + }; + + pinctrl_sdhci1_default: sdhci1-default { + conf { + groups = "sdio1_0_grp"; + slew-rate = ; + power-source = ; + bias-disable; + }; + + conf-cd { + groups = "sdio1_cd_0_grp"; + bias-high-impedance; + bias-pull-up; + slew-rate = ; + power-source = ; + }; + + mux-cd { + groups = "sdio1_cd_0_grp"; + function = "sdio1_cd"; + }; + + mux { + groups = "sdio1_0_grp"; + function = "sdio1"; + }; + }; + }; + }; + fragment15 { + target = <&uart1>; + __overlay__ { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart1_default>; + }; + }; +}; diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts new file mode 100644 index 000000000000..0051f41a59bf --- /dev/null +++ b/arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts @@ -0,0 +1,289 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dts file for Xilinx ZynqMP SM-K26 rev1/B/A + * + * (C) Copyright 2020, Xilinx, Inc. + * + * Michal Simek + */ + +/dts-v1/; + +#include "zynqmp.dtsi" +#include "zynqmp-clk-ccf.dtsi" +#include +#include +#include + +/ { + model = "ZynqMP SM-K26 Rev1/B/A"; + compatible = "xlnx,zynqmp-sm-k26-rev1", "xlnx,zynqmp-sm-k26-revB", + "xlnx,zynqmp-sm-k26-revA", "xlnx,zynqmp-sm-k26", + "xlnx,zynqmp"; + + aliases { + i2c0 = &i2c0; + i2c1 = &i2c1; + mmc0 = &sdhci0; + mmc1 = &sdhci1; + nvmem0 = &eeprom; + nvmem1 = &eeprom_cc; + rtc0 = &rtc; + serial0 = &uart0; + serial1 = &uart1; + serial2 = &dcc; + spi0 = &qspi; + spi1 = &spi0; + spi2 = &spi1; + usb0 = &usb0; + usb1 = &usb1; + }; + + chosen { + bootargs = "earlycon"; + stdout-path = "serial1:115200n8"; + }; + + memory@0 { + device_type = "memory"; /* 4GB */ + reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>; + }; + + gpio-keys { + compatible = "gpio-keys"; + autorepeat; + fwuen { + label = "fwuen"; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible = "gpio-leds"; + ds35 { + label = "heartbeat"; + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + }; + + ds36 { + label = "vbus_det"; + gpios = <&gpio 8 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + }; +}; + +&uart1 { /* MIO36/MIO37 */ + status = "okay"; +}; + +&qspi { /* MIO 0-5 - U143 */ + status = "okay"; + flash@0 { /* MT25QU512A */ + compatible = "mt25qu512a", "jedec,spi-nor"; /* 64MB */ + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + spi-tx-bus-width = <1>; + spi-rx-bus-width = <4>; + spi-max-frequency = <40000000>; /* 40MHz */ + partition@0 { + label = "Image Selector"; + reg = <0x0 0x80000>; /* 512KB */ + read-only; + lock; + }; + partition@80000 { + label = "Image Selector Golden"; + reg = <0x80000 0x80000>; /* 512KB */ + read-only; + lock; + }; + partition@100000 { + label = "Persistent Register"; + reg = <0x100000 0x20000>; /* 128KB */ + }; + partition@120000 { + label = "Persistent Register Backup"; + reg = <0x120000 0x20000>; /* 128KB */ + }; + partition@140000 { + label = "Open_1"; + reg = <0x140000 0xC0000>; /* 768KB */ + }; + partition@200000 { + label = "Image A (FSBL, PMU, ATF, U-Boot)"; + reg = <0x200000 0xD00000>; /* 13MB */ + }; + partition@f00000 { + label = "ImgSel Image A Catch"; + reg = <0xF00000 0x80000>; /* 512KB */ + read-only; + lock; + }; + partition@f80000 { + label = "Image B (FSBL, PMU, ATF, U-Boot)"; + reg = <0xF80000 0xD00000>; /* 13MB */ + }; + partition@1c80000 { + label = "ImgSel Image B Catch"; + reg = <0x1C80000 0x80000>; /* 512KB */ + read-only; + lock; + }; + partition@1d00000 { + label = "Open_2"; + reg = <0x1D00000 0x100000>; /* 1MB */ + }; + partition@1e00000 { + label = "Recovery Image"; + reg = <0x1E00000 0x200000>; /* 2MB */ + read-only; + lock; + }; + partition@2000000 { + label = "Recovery Image Backup"; + reg = <0x2000000 0x200000>; /* 2MB */ + read-only; + lock; + }; + partition@2200000 { + label = "U-Boot storage variables"; + reg = <0x2200000 0x20000>; /* 128KB */ + }; + partition@2220000 { + label = "U-Boot storage variables backup"; + reg = <0x2220000 0x20000>; /* 128KB */ + }; + partition@2240000 { + label = "SHA256"; + reg = <0x2240000 0x10000>; /* 256B but 64KB sector */ + read-only; + lock; + }; + partition@2250000 { + label = "User"; + reg = <0x2250000 0x1db0000>; /* 29.5 MB */ + }; + }; +}; + +&sdhci0 { /* MIO13-23 - 16GB emmc MTFC16GAPALBH-IT - U133A*/ + status = "okay"; + non-removable; + disable-wp; + bus-width = <8>; + xlnx,mio-bank = <0>; +}; + +&spi1 { /* MIO6, 9-11 */ + status = "okay"; + label = "TPM"; + num-cs = <1>; + tpm@0 { /* slm9670 - U144 */ + compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; + reg = <0>; + spi-max-frequency = <18500000>; + }; +}; + +&i2c1 { + status = "okay"; + clock-frequency = <400000>; + scl-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>; + sda-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; + + eeprom: eeprom@50 { /* u46 - also at address 0x58 */ + compatible = "st,24c64", "atmel,24c64"; /* st m24c64 */ + reg = <0x50>; + /* WP pin EE_WP_EN connected to slg7x644092@68 */ + }; + + eeprom_cc: eeprom@51 { /* required by spec - also at address 0x59 */ + compatible = "st,24c64", "atmel,24c64"; /* st m24c64 */ + reg = <0x51>; + }; + + /* da9062@30 - u170 - also at address 0x31 */ + /* da9131@33 - u167 */ + da9131: pmic@33 { + compatible = "dlg,da9131"; + reg = <0x33>; + regulators { + da9131_buck1: buck1 { + regulator-name = "da9131_buck1"; + regulator-boot-on; + regulator-always-on; + }; + da9131_buck2: buck2 { + regulator-name = "da9131_buck2"; + regulator-boot-on; + regulator-always-on; + }; + }; + }; + + /* da9130@32 - u166 */ + da9130: pmic@32 { + compatible = "dlg,da9130"; + reg = <0x32>; + regulators { + da9130_buck1: buck1 { + regulator-name = "da9130_buck1"; + regulator-boot-on; + regulator-always-on; + }; + }; + }; + + /* slg7x644091@70 - u168 NOT accessible due to address conflict with stdp4320 */ + /* + * stdp4320 - u27 FW has below two issues to be fixed in next board revision. + * Device acknowledging to addresses 0x5C, 0x5D, 0x70, 0x72, 0x76. + * Address conflict with slg7x644091@70 making both the devices NOT accessible. + * With the FW fix, stdp4320 should respond to address 0x73 only. + */ + /* slg7x644092@68 - u169 */ + /* Also connected via JA1C as C23/C24 */ +}; + +&gpio { + status = "okay"; + gpio-line-names = "QSPI_CLK", "QSPI_DQ1", "QSPI_DQ2", "QSPI_DQ3", "QSPI_DQ0", /* 0 - 4 */ + "QSPI_CS_B", "SPI_CLK", "LED1", "LED2", "SPI_CS_B", /* 5 - 9 */ + "SPI_MISO", "SPI_MOSI", "FWUEN", "EMMC_DAT0", "EMMC_DAT1", /* 10 - 14 */ + "EMMC_DAT2", "EMMC_DAT3", "EMMC_DAT4", "EMMC_DAT5", "EMMC_DAT6", /* 15 - 19 */ + "EMMC_DAT7", "EMMC_CMD", "EMMC_CLK", "EMMC_RST", "I2C1_SCL", /* 20 - 24 */ + "I2C1_SDA", "", "", "", "", /* 25 - 29 */ + "", "", "", "", "", /* 30 - 34 */ + "", "", "", "", "", /* 35 - 39 */ + "", "", "", "", "", /* 40 - 44 */ + "", "", "", "", "", /* 45 - 49 */ + "", "", "", "", "", /* 50 - 54 */ + "", "", "", "", "", /* 55 - 59 */ + "", "", "", "", "", /* 60 - 64 */ + "", "", "", "", "", /* 65 - 69 */ + "", "", "", "", "", /* 70 - 74 */ + "", "", "", /* 75 - 77, MIO end and EMIO start */ + "", "", /* 78 - 79 */ + "", "", "", "", "", /* 80 - 84 */ + "", "", "", "", "", /* 85 - 89 */ + "", "", "", "", "", /* 90 - 94 */ + "", "", "", "", "", /* 95 - 99 */ + "", "", "", "", "", /* 100 - 104 */ + "", "", "", "", "", /* 105 - 109 */ + "", "", "", "", "", /* 110 - 114 */ + "", "", "", "", "", /* 115 - 119 */ + "", "", "", "", "", /* 120 - 124 */ + "", "", "", "", "", /* 125 - 129 */ + "", "", "", "", "", /* 130 - 134 */ + "", "", "", "", "", /* 135 - 139 */ + "", "", "", "", "", /* 140 - 144 */ + "", "", "", "", "", /* 145 - 149 */ + "", "", "", "", "", /* 150 - 154 */ + "", "", "", "", "", /* 155 - 159 */ + "", "", "", "", "", /* 160 - 164 */ + "", "", "", "", "", /* 165 - 169 */ + "", "", "", ""; /* 170 - 174 */ +}; diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts new file mode 100644 index 000000000000..300edc880093 --- /dev/null +++ b/arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dts file for Xilinx ZynqMP SMK-K26 rev1/B/A + * + * (C) Copyright 2020, Xilinx, Inc. + * + * Michal Simek + */ + +#include "zynqmp-sm-k26-revA.dts" + +/ { + model = "ZynqMP SMK-K26 Rev1/B/A"; + compatible = "xlnx,zynqmp-smk-k26-rev1", "xlnx,zynqmp-smk-k26-revB", + "xlnx,zynqmp-smk-k26-revA", "xlnx,zynqmp-smk-k26", + "xlnx,zynqmp"; +}; + +&sdhci0 { + status = "disabled"; +}; -- 2.31.1 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 62CEDC48BCD for ; Wed, 9 Jun 2021 12:29:29 +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 2BB0661351 for ; Wed, 9 Jun 2021 12:29:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2BB0661351 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=xilinx.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=10RnaaEWfsl3QLrhJjahs8OYLDposeKZYzYqtBDT11s=; b=RQR+evL/FgC6Mm 3esvMY9RGhQ9SSyDV/V6/D/EFiiWsUepbykYAGoun9yks2IlbJ/Uw1WLIvrnRtgpTJllNI6xQs1M0 5wKLGDISBZveLurqrNtYR0di5qB86iaJbVWQvDYlmi4c+M+dXe0WIKTUpyjtQrpkPydRTh9fMtJzJ MMd8GP5+BI8JpQEQMgaKTCfU6bAwIMjtgmbOR49QsNZL0Wua2GQd9nyCuQ2xXaG4y1LFDIg8Zz2wL ITN+UxuJuJb+UAwvJTaunrKHy2CYI7paBDuVMhu5NNPORkLQDAiP6kOvi/WjXKWdYof8m79slK4ac 085HfqYR4w9Fu6rr7DBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lqxI3-00Dflp-32; Wed, 09 Jun 2021 12:26:35 +0000 Received: from mail-wm1-f50.google.com ([209.85.128.50]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lqwfz-00DQet-FP for linux-arm-kernel@lists.infradead.org; Wed, 09 Jun 2021 11:47:19 +0000 Received: by mail-wm1-f50.google.com with SMTP id l11-20020a05600c4f0bb029017a7cd488f5so4026176wmq.0 for ; Wed, 09 Jun 2021 04:47:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cfLtTNNJiGvr55qHsiqGqf0rsZ8IwtangtgE/TkYmbA=; b=PxwsGurI5LFbUdiMPG9tgAXg/8gJkbrklsARX0YrESmDqzg6Giwj6Ut6rot1PKCt4E aD1LIVB+Uurn8Ru5PNApppk9cwb3h6OkwReNFU/sDhTQWJ522pGRzUWOeULX6gb1URRn g+JbL5fxWEdlt0noA4O1TjtDticVjl18SSCLZLj6zCjtQHVJMZokEzktYRjJqD4K0Bmv fFxMG68paOZROr0To5WxUqzVo1evTKIsM27EuX6jJeWeW0S6XSDnNqZ5Nyi0ikVKjkDj oE8REk5PKUNLUGWbQIJbj6yr22X2WvNncYhIItSONDlxn+qFWXfLAWI6fR+RpBNnRnV5 EF9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=cfLtTNNJiGvr55qHsiqGqf0rsZ8IwtangtgE/TkYmbA=; b=roH3RMg3NsIEN4EhyRzU+g3yX9BIxkRWos/VGI3N8rPRoTlJUVegC/eGCG6FxCwcI5 HHZn2xkHztnVkcxostsKALp4DReUN+0LLOSuvTALkQ4fWxemwnQ45c2oMBFlAnEZA626 3YsS1qyXgVWedx3hRbgeR0mI4i2HOljA++MKrFb3r6vkry6T8q6Y3mm7kJ8TDJCPPPgb AKZF/CbzYPKlaYNeaxtVTE+jfr9XqldbtVJ5f0Q7VmSsVGVjvZQUUrx1/Ag8KyXSCEWj skzIoG6u2dT/5rYPwU2JoI0m+0MrFN1goG1t9d2kFYH796dmqTZMvJfosAUiKJDXRNTA lYjw== X-Gm-Message-State: AOAM530PIdPjfNAJC6HAdFNhhyRXi/cxRBZNN6MJOVIXtmhaeOKT2UYz TlfvFU2tp+lOjAPnmkcJs1GkZQ== X-Google-Smtp-Source: ABdhPJyJRp2Y6BxdlZM8cR6adUoUx48/QEolsI59RFFzti4bjUtPbC8CZ1cRMROJilEWIYMzMQPdZA== X-Received: by 2002:a1c:7210:: with SMTP id n16mr9104082wmc.75.1623239174183; Wed, 09 Jun 2021 04:46:14 -0700 (PDT) Received: from localhost ([2a02:768:2307:40d6::45a]) by smtp.gmail.com with ESMTPSA id p10sm11635975wrr.33.2021.06.09.04.46.13 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 09 Jun 2021 04:46:13 -0700 (PDT) From: Michal Simek To: linux-kernel@vger.kernel.org, monstr@monstr.eu, michal.simek@xilinx.com, git@xilinx.com, Viresh Kumar Cc: Geert Uytterhoeven , Krzysztof Kozlowski , Michael Walle , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 31/31] arm64: zynqmp: Add support for Xilinx Kria SOM board Date: Wed, 9 Jun 2021 13:45:07 +0200 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210609_044715_767654_DB8D711D X-CRM114-Status: GOOD ( 19.17 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlcmUgYXJlIGNvdXBsZSBvZiByZXZpc2lvbnMgb2YgU09NcyAoazI2KSBhbmQgYXNzb2NpYXRl ZCBjYXJyaWVyIGNhcmRzCihrdjI2MCkuClNPTSBpdHNlbGYgaGFzIHR3byBtYWpvciB2ZXJzaW9u czoKc20tazI2IC0gU09NIHdpdGggRU1NQwpzbWstazI2IC0gU09NIHdpdGhvdXQgRU1NQyB1c2Vk IG9uIHN0YXJ0ZXIga2l0IHdpdGggcHJlcHJvZ3JhbW1lZCBmaXJtd2FyZQppbiBRU1BJLgoKU09N cyBhcmUgZGVzY3JpYmluZyBvbmx5IGRldmljZXMgYXZhaWxhYmxlIG9uIHRoZSBTT00gb3IgY29u bmVjdGlvbnMgd2hpY2gKYXJlIGRlc2NyaWJlZCBpbiBzcGVjaWZpY2F0aW9uIChmb3IgZXhhbXBs ZSBVQVJULCBmd3VlbikuCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1pY2hhbC5zaW1l a0B4aWxpbnguY29tPgotLS0KCmh0dHBzOi8vd3d3LnhpbGlueC5jb20vcHJvZHVjdHMvc29tL2ty aWEuaHRtbAotLS0KIC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS94aWxpbngueWFtbCAgICAg ICB8ICAzMSArKwogYXJjaC9hcm02NC9ib290L2R0cy94aWxpbngvTWFrZWZpbGUgICAgICAgICAg IHwgIDExICsKIC4uLi9ib290L2R0cy94aWxpbngvenlucW1wLXNjay1rdi1nLXJldkEuZHRzICB8 IDM3MSArKysrKysrKysrKysrKysrKysKIC4uLi9ib290L2R0cy94aWxpbngvenlucW1wLXNjay1r di1nLXJldkIuZHRzICB8IDM1MSArKysrKysrKysrKysrKysrKwogLi4uL2Jvb3QvZHRzL3hpbGlu eC96eW5xbXAtc20tazI2LXJldkEuZHRzICAgIHwgMjg5ICsrKysrKysrKysrKysrCiAuLi4vYm9v dC9kdHMveGlsaW54L3p5bnFtcC1zbWstazI2LXJldkEuZHRzICAgfCAgMjEgKwogNiBmaWxlcyBj aGFuZ2VkLCAxMDc0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0 L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAtc2NrLWt2LWctcmV2QS5kdHMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAtc2NrLWt2LWctcmV2Qi5kdHMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAtc20t azI2LXJldkEuZHRzCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib290L2R0cy94aWxp bngvenlucW1wLXNtay1rMjYtcmV2QS5kdHMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Rl dmljZXRyZWUvYmluZGluZ3MvYXJtL3hpbGlueC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0 cmVlL2JpbmRpbmdzL2FybS94aWxpbngueWFtbAppbmRleCBhMGIxYWU2ZTNlNzEuLjFhNGEwM2Rm YWY3ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS94 aWxpbngueWFtbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3hp bGlueC55YW1sCkBAIC0xMTYsNiArMTE2LDM3IEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgLSBj b25zdDogeGxueCx6eW5xbXAtemN1MTExCiAgICAgICAgICAgLSBjb25zdDogeGxueCx6eW5xbXAK IAorICAgICAgLSBkZXNjcmlwdGlvbjogWGlsaW54IEtyaWEgU09NcworICAgICAgICBpdGVtczoK KyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5bnFtcC1zbS1rMjYtcmV2MQorICAgICAgICAgIC0g Y29uc3Q6IHhsbngsenlucW1wLXNtLWsyNi1yZXZCCisgICAgICAgICAgLSBjb25zdDogeGxueCx6 eW5xbXAtc20tazI2LXJldkEKKyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5bnFtcC1zbS1rMjYK KyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5bnFtcAorCisgICAgICAtIGRlc2NyaXB0aW9uOiBY aWxpbnggS3JpYSBTT01zIChzdGFydGVyKQorICAgICAgICBpdGVtczoKKyAgICAgICAgICAtIGNv bnN0OiB4bG54LHp5bnFtcC1zbWstazI2LXJldjEKKyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5 bnFtcC1zbWstazI2LXJldkIKKyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5bnFtcC1zbWstazI2 LXJldkEKKyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5bnFtcC1zbWstazI2CisgICAgICAgICAg LSBjb25zdDogeGxueCx6eW5xbXAKKworICAgICAgLSBkZXNjcmlwdGlvbjogWGlsaW54IEtyaWEg Q2FycmllciBDYXJkcyAocmV2QS9ZL1opCisgICAgICAgIGl0ZW1zOgorICAgICAgICAgIC0gY29u c3Q6IHhsbngsenlucW1wLXNrLWt2MjYwLXJldloKKyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5 bnFtcC1zay1rdjI2MC1yZXZZCisgICAgICAgICAgLSBjb25zdDogeGxueCx6eW5xbXAtc2sta3Yy NjAtcmV2QQorICAgICAgICAgIC0gY29uc3Q6IHhsbngsenlucW1wLXNrLWsyNjAKKyAgICAgICAg ICAtIGNvbnN0OiB4bG54LHp5bnFtcAorCisgICAgICAtIGRlc2NyaXB0aW9uOiBYaWxpbnggS3Jp YSBDYXJyaWVyIENhcmRzIChyZXZCLzEpCisgICAgICAgIGl0ZW1zOgorICAgICAgICAgIC0gY29u c3Q6IHhsbngsenlucW1wLXNrLWt2MjYwLXJldjEKKyAgICAgICAgICAtIGNvbnN0OiB4bG54LHp5 bnFtcC1zay1rdjI2MC1yZXZCCisgICAgICAgICAgLSBjb25zdDogeGxueCx6eW5xbXAtc2stazI2 MAorICAgICAgICAgIC0gY29uc3Q6IHhsbngsenlucW1wCisKIGFkZGl0aW9uYWxQcm9wZXJ0aWVz OiB0cnVlCiAKIC4uLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy94aWxpbngvTWFr ZWZpbGUgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC9NYWtlZmlsZQppbmRleCAwODNlZDUy MzM3ZmQuLmJkNzc0Nzc3MDY3NCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy94aWxp bngvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy94aWxpbngvTWFrZWZpbGUKQEAg LTE3LDMgKzE3LDE0IEBAIGR0Yi0kKENPTkZJR19BUkNIX1pZTlFNUCkgKz0genlucW1wLXpjdTEw NC1yZXZBLmR0YgogZHRiLSQoQ09ORklHX0FSQ0hfWllOUU1QKSArPSB6eW5xbXAtemN1MTA0LXJl dkMuZHRiCiBkdGItJChDT05GSUdfQVJDSF9aWU5RTVApICs9IHp5bnFtcC16Y3UxMDYtcmV2QS5k dGIKIGR0Yi0kKENPTkZJR19BUkNIX1pZTlFNUCkgKz0genlucW1wLXpjdTExMS1yZXZBLmR0Ygor CisKK2R0Yi0kKENPTkZJR19BUkNIX1pZTlFNUCkgKz0genlucW1wLXNtLWsyNi1yZXZBLmR0Ygor ZHRiLSQoQ09ORklHX0FSQ0hfWllOUU1QKSArPSB6eW5xbXAtc21rLWsyNi1yZXZBLmR0YgorCitz b20tQUEtZHRicyA6PSB6eW5xbXAtc20tazI2LXJldkEuZHRiIHp5bnFtcC1zY2sta3YtZy1yZXZB LmR0Ym8KK3NvbS1BQi1kdGJzIDo9IHp5bnFtcC1zbS1rMjYtcmV2QS5kdGIgenlucW1wLXNjay1r di1nLXJldkIuZHRibworc3RhcnRlci1BQS1kdGJzIDo9IHp5bnFtcC1zbWstazI2LXJldkEuZHRi IHp5bnFtcC1zY2sta3YtZy1yZXZBLmR0Ym8KK3N0YXJ0ZXItQUItZHRicyA6PSB6eW5xbXAtc21r LWsyNi1yZXZBLmR0YiB6eW5xbXAtc2NrLWt2LWctcmV2Qi5kdGJvCisKK2R0Yi0kKENPTkZJR19B UkNIX1pZTlFNUCkgKz0gc29tLUFBLmR0YiBzb20tQUIuZHRiIHN0YXJ0ZXItQUEuZHRiIHN0YXJ0 ZXItQUIuZHRiCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAt c2NrLWt2LWctcmV2QS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAtc2Nr LWt2LWctcmV2QS5kdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4z YzI5MThiZjk4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlu eC96eW5xbXAtc2NrLWt2LWctcmV2QS5kdHMKQEAgLTAsMCArMSwzNzEgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogZHRzIGZpbGUgZm9yIEtWMjYwIHJldkEg Q2FycmllciBDYXJkCisgKgorICogKEMpIENvcHlyaWdodCAyMDIwLCBYaWxpbngsIEluYy4KKyAq CisgKiBTRCBsZXZlbCBzaGlmdGVyOgorICogIkEiIOKAkyBBMDEgYm9hcmQgdW4tbW9kaWZpZWQg KE5YUCkKKyAqICJZIiDigJMgQTAxIGJvYXJkIG1vZGlmaWVkIHdpdGggbGVnYWN5IGludGVycG9z ZXIgKE5leHBlcmlhKQorICogIloiIOKAkyBBMDEgYm9hcmQgbW9kaWZpZWQgd2l0aCBEaW9kZSBp bnRlcnBvc2VyCisgKgorICogTWljaGFsIFNpbWVrIDxtaWNoYWwuc2ltZWtAeGlsaW54LmNvbT4K KyAqLworCisgI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oPgorICNpbmNsdWRlIDxk dC1iaW5kaW5ncy9uZXQvdGktZHA4Mzg2Ny5oPgorICNpbmNsdWRlIDxkdC1iaW5kaW5ncy9waHkv cGh5Lmg+CisgI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3BpbmN0cmwvcGluY3RybC16eW5xbXAuaD4K KworL2R0cy12MS87CisvcGx1Z2luLzsKKworL3sKKwljb21wYXRpYmxlID0gInhsbngsenlucW1w LXNrLWt2MjYwLXJldkEiLAorCQkgICAgICJ4bG54LHp5bnFtcC1zay1rdjI2MC1yZXZZIiwKKwkJ ICAgICAieGxueCx6eW5xbXAtc2sta3YyNjAtcmV2WiIsCisJCSAgICAgInhsbngsenlucW1wLXNr LWt2MjYwIiwgInhsbngsenlucW1wIjsKKworCWZyYWdtZW50MSB7CisJCXRhcmdldCA9IDwmaTJj MT47IC8qIEkyQ19TQ0sgQzIzL0MyNCAtIE1JTyBmcm9tIFNPTSAqLworCisJCV9fb3ZlcmxheV9f IHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQlw aW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiZ3BpbyI7CisJCQlwaW5jdHJsLTAgPSA8JnBpbmN0 cmxfaTJjMV9kZWZhdWx0PjsKKwkJCXBpbmN0cmwtMSA9IDwmcGluY3RybF9pMmMxX2dwaW8+Owor CQkJc2NsLWdwaW9zID0gPCZncGlvIDI0IEdQSU9fQUNUSVZFX0hJR0g+OworCQkJc2RhLWdwaW9z ID0gPCZncGlvIDI1IEdQSU9fQUNUSVZFX0hJR0g+OworCisJCQl1MTQ6IGluYTI2MEA0MCB7IC8q IHUxNCAqLworCQkJCWNvbXBhdGlibGUgPSAidGksaW5hMjYwIjsKKwkJCQkjaW8tY2hhbm5lbC1j ZWxscyA9IDwxPjsKKwkJCQlsYWJlbCA9ICJpbmEyNjAtdTE0IjsKKwkJCQlyZWcgPSA8MHg0MD47 CisJCQl9OworCQkJLyogdTI3IC0gMHhlMCAtIFNURFA0MzIwIERQL0hETUkgc3BsaXR0ZXIgKi8K KwkJfTsKKwl9OworCisJZnJhZ21lbnQxYSB7CisJCXRhcmdldCA9IDwmYW1iYT47CisJCV9fb3Zl cmxheV9fIHsKKwkJCWluYTI2MC11MTQgeworCQkJCWNvbXBhdGlibGUgPSAiaWlvLWh3bW9uIjsK KwkJCQlpby1jaGFubmVscyA9IDwmdTE0IDA+LCA8JnUxNCAxPiwgPCZ1MTQgMj47CisJCQl9Owor CisJCQlzaTUzMzJfMDogc2k1MzMyXzAgeyAvKiB1MTcgKi8KKwkJCQljb21wYXRpYmxlID0gImZp eGVkLWNsb2NrIjsKKwkJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQkJY2xvY2stZnJlcXVlbmN5 ID0gPDEyNTAwMDAwMD47CisJCQl9OworCisJCQlzaTUzMzJfMTogc2k1MzMyXzEgeyAvKiB1MTcg Ki8KKwkJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCQkjY2xvY2stY2VsbHMgPSA8 MD47CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKwkJCX07CisKKwkJCXNpNTMz Ml8yOiBzaTUzMzJfMiB7IC8qIHUxNyAqLworCQkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2si OworCQkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8NDgwMDAw MDA+OworCQkJfTsKKworCQkJc2k1MzMyXzM6IHNpNTMzMl8zIHsgLyogdTE3ICovCisJCQkJY29t cGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJCWNs b2NrLWZyZXF1ZW5jeSA9IDwyNDAwMDAwMD47CisJCQl9OworCisJCQlzaTUzMzJfNDogc2k1MzMy XzQgeyAvKiB1MTcgKi8KKwkJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCQkjY2xv Y2stY2VsbHMgPSA8MD47CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDI2MDAwMDAwPjsKKwkJCX07 CisKKwkJCXNpNTMzMl81OiBzaTUzMzJfNSB7IC8qIHUxNyAqLworCQkJCWNvbXBhdGlibGUgPSAi Zml4ZWQtY2xvY2siOworCQkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCQljbG9jay1mcmVxdWVu Y3kgPSA8MjcwMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OworCisvKiBEUC9VU0IgMy4wIGFuZCBT QVRBICovCisJZnJhZ21lbnQyIHsKKwkJdGFyZ2V0ID0gPCZwc2d0cj47CisJCV9fb3ZlcmxheV9f IHsKKwkJCXN0YXR1cyA9ICJva2F5IjsKKwkJCS8qIHBjaWUsIHVzYjMsIHNhdGEgKi8KKwkJCWNs b2NrcyA9IDwmc2k1MzMyXzU+LCA8JnNpNTMzMl80PiwgPCZzaTUzMzJfMD47CisJCQljbG9jay1u YW1lcyA9ICJyZWYwIiwgInJlZjEiLCAicmVmMiI7CisJCX07CisJfTsKKworCWZyYWdtZW50MyB7 CisJCXRhcmdldCA9IDwmc2F0YT47CisJCV9fb3ZlcmxheV9fIHsKKwkJCXN0YXR1cyA9ICJva2F5 IjsKKwkJCS8qIFNBVEEgT09CIHRpbWluZyBzZXR0aW5ncyAqLworCQkJY2V2YSxwMC1jb21pbml0 LXBhcmFtcyA9IC9iaXRzLyA4IDwweDE4IDB4NDAgMHgxOCAweDI4PjsKKwkJCWNldmEscDAtY29t d2FrZS1wYXJhbXMgPSAvYml0cy8gOCA8MHgwNiAweDE0IDB4MDggMHgwRT47CisJCQljZXZhLHAw LWJ1cnN0LXBhcmFtcyA9IC9iaXRzLyA4IDwweDEzIDB4MDggMHg0QSAweDA2PjsKKwkJCWNldmEs cDAtcmV0cnktcGFyYW1zID0gL2JpdHMvIDE2IDwweDk2QTQgMHgzRkZDPjsKKwkJCWNldmEscDEt Y29taW5pdC1wYXJhbXMgPSAvYml0cy8gOCA8MHgxOCAweDQwIDB4MTggMHgyOD47CisJCQljZXZh LHAxLWNvbXdha2UtcGFyYW1zID0gL2JpdHMvIDggPDB4MDYgMHgxNCAweDA4IDB4MEU+OworCQkJ Y2V2YSxwMS1idXJzdC1wYXJhbXMgPSAvYml0cy8gOCA8MHgxMyAweDA4IDB4NEEgMHgwNj47CisJ CQljZXZhLHAxLXJldHJ5LXBhcmFtcyA9IC9iaXRzLyAxNiA8MHg5NkE0IDB4M0ZGQz47CisJCQlw aHktbmFtZXMgPSAic2F0YS1waHkiOworCQkJcGh5cyA9IDwmcHNndHIgMyBQSFlfVFlQRV9TQVRB IDEgMj47CisJCX07CisJfTsKKworCWZyYWdtZW50NCB7CisJCXRhcmdldCA9IDwmenlucW1wX2Rw c3ViPjsKKwkJX19vdmVybGF5X18geworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJCXBoeS1u YW1lcyA9ICJkcC1waHkwIiwgImRwLXBoeTEiOworCQkJcGh5cyA9IDwmcHNndHIgMSBQSFlfVFlQ RV9EUCAwIDA+LCA8JnBzZ3RyIDAgUEhZX1RZUEVfRFAgMSAwPjsKKwkJfTsKKwl9OworCisJZnJh Z21lbnQ5IHsKKwkJdGFyZ2V0ID0gPCZ6eW5xbXBfZHBkbWE+OworCQlfX292ZXJsYXlfXyB7CisJ CQlzdGF0dXMgPSAib2theSI7CisJCX07CisJfTsKKworCWZyYWdtZW50MTAgeworCQl0YXJnZXQg PSA8JnVzYjA+OworCQlfX292ZXJsYXlfXyB7CisJCQlzdGF0dXMgPSAib2theSI7CisJCQlwaW5j dHJsLW5hbWVzID0gImRlZmF1bHQiOworCQkJcGluY3RybC0wID0gPCZwaW5jdHJsX3VzYjBfZGVm YXVsdD47CisJCQl1c2JodWI6IHVzYjU3NDQgeyAvKiB1NDMgKi8KKwkJCQljb21wYXRpYmxlID0g Im1pY3JvY2hpcCx1c2I1NzQ0IjsKKwkJCQlyZXNldC1ncGlvcyA9IDwmZ3BpbyA0NCBHUElPX0FD VElWRV9ISUdIPjsKKwkJCX07CisJCX07CisJfTsKKworCWZyYWdtZW50MTEgeworCQl0YXJnZXQg PSA8JmR3YzNfMD47CisJCV9fb3ZlcmxheV9fIHsKKwkJCXN0YXR1cyA9ICJva2F5IjsKKwkJCWRy X21vZGUgPSAiaG9zdCI7CisJCQlzbnBzLHVzYjNfbHBtX2NhcGFibGU7CisJCQlwaHktbmFtZXMg PSAidXNiMy1waHkiOworCQkJcGh5cyA9IDwmcHNndHIgMiBQSFlfVFlQRV9VU0IzIDAgMT47CisJ CQltYXhpbXVtLXNwZWVkID0gInN1cGVyLXNwZWVkIjsKKwkJfTsKKwl9OworCisJZnJhZ21lbnQx MiB7CisJCXRhcmdldCA9IDwmc2RoY2kxPjsgLyogb24gQ0Mgd2l0aCB0dW5lZCBwYXJhbWV0ZXJz ICovCisJCV9fb3ZlcmxheV9fIHsKKwkJCXN0YXR1cyA9ICJva2F5IjsKKwkJCXBpbmN0cmwtbmFt ZXMgPSAiZGVmYXVsdCI7CisJCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc2RoY2kxX2RlZmF1bHQ+ OworCQkJLyoKKwkJCSAqIFNEIDMuMCByZXF1aXJlcyBsZXZlbCBzaGlmdGVyIGFuZCB0aGlzIHBy b3BlcnR5CisJCQkgKiBzaG91bGQgYmUgcmVtb3ZlZCBpZiB0aGUgYm9hcmQgaGFzIGxldmVsIHNo aWZ0ZXIgYW5kCisJCQkgKiBuZWVkIHRvIHdvcmsgaW4gVUhTIG1vZGUKKwkJCSAqLworCQkJbm8t MS04LXY7CisJCQlkaXNhYmxlLXdwOworCQkJeGxueCxtaW8tYmFuayA9IDwxPjsKKwkJfTsKKwl9 OworCisJZnJhZ21lbnQxMyB7CisJCXRhcmdldCA9IDwmZ2VtMz47IC8qIHJlcXVpcmVkIGJ5IHNw ZWMgKi8KKwkJX19vdmVybGF5X18geworCQkJc3RhdHVzID0gIm9rYXkiOworCQkJcGluY3RybC1u YW1lcyA9ICJkZWZhdWx0IjsKKwkJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9nZW0zX2RlZmF1bHQ+ OworCQkJcGh5LWhhbmRsZSA9IDwmcGh5MD47CisJCQlwaHktbW9kZSA9ICJyZ21paS1pZCI7CisK KwkJCW1kaW86IG1kaW8geworCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJCSNzaXplLWNl bGxzID0gPDA+OworCQkJCXJlc2V0LWdwaW9zID0gPCZncGlvIDM4IEdQSU9fQUNUSVZFX0xPVz47 CisJCQkJcmVzZXQtZGVsYXktdXMgPSA8Mj47CisKKwkJCQlwaHkwOiBldGhlcm5ldC1waHlAMSB7 CisJCQkJCSNwaHktY2VsbHMgPSA8MT47CisJCQkJCXJlZyA9IDwxPjsKKwkJCQkJdGkscngtaW50 ZXJuYWwtZGVsYXkgPSA8RFA4Mzg2N19SR01JSURDVExfMl8yNV9OUz47CisJCQkJCXRpLHR4LWlu dGVybmFsLWRlbGF5ID0gPERQODM4NjdfUkdNSUlEQ1RMXzJfNzVfTlM+OworCQkJCQl0aSxmaWZv LWRlcHRoID0gPERQODM4NjdfUEhZQ1JfRklGT19ERVBUSF80X0JfTklCPjsKKwkJCQkJdGksZHA4 Mzg2Ny1yeGN0cmwtc3RyYXAtcXVpcms7CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKKworCWZy YWdtZW50MTQgeworCQl0YXJnZXQgPSA8JnBpbmN0cmwwPjsgLyogcmVxdWlyZWQgYnkgc3BlYyAq LworCQlfX292ZXJsYXlfXyB7CisJCQlzdGF0dXMgPSAib2theSI7CisKKwkJCXBpbmN0cmxfdWFy dDFfZGVmYXVsdDogdWFydDEtZGVmYXVsdCB7CisJCQkJY29uZiB7CisJCQkJCWdyb3VwcyA9ICJ1 YXJ0MV85X2dycCI7CisJCQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBv d2VyLXNvdXJjZSA9IDxJT19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJCWRyaXZlLXN0cmVuZ3Ro ID0gPDEyPjsKKwkJCQl9OworCisJCQkJY29uZi1yeCB7CisJCQkJCXBpbnMgPSAiTUlPMzciOwor CQkJCQliaWFzLWhpZ2gtaW1wZWRhbmNlOworCQkJCX07CisKKwkJCQljb25mLXR4IHsKKwkJCQkJ cGlucyA9ICJNSU8zNiI7CisJCQkJCWJpYXMtZGlzYWJsZTsKKwkJCQl9OworCisJCQkJbXV4IHsK KwkJCQkJZ3JvdXBzID0gInVhcnQxXzlfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAidWFydDEiOwor CQkJCX07CisJCQl9OworCisJCQlwaW5jdHJsX2kyYzFfZGVmYXVsdDogaTJjMS1kZWZhdWx0IHsK KwkJCQljb25mIHsKKwkJCQkJZ3JvdXBzID0gImkyYzFfNl9ncnAiOworCQkJCQliaWFzLXB1bGwt dXA7CisJCQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBvd2VyLXNvdXJj ZSA9IDxJT19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJfTsKKworCQkJCW11eCB7CisJCQkJCWdy b3VwcyA9ICJpMmMxXzZfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAiaTJjMSI7CisJCQkJfTsKKwkJ CX07CisKKwkJCXBpbmN0cmxfaTJjMV9ncGlvOiBpMmMxLWdwaW8geworCQkJCWNvbmYgeworCQkJ CQlncm91cHMgPSAiZ3BpbzBfMjRfZ3JwIiwgImdwaW8wXzI1X2dycCI7CisJCQkJCXNsZXctcmF0 ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJT19TVEFOREFSRF9M VkNNT1MxOD47CisJCQkJfTsKKworCQkJCW11eCB7CisJCQkJCWdyb3VwcyA9ICJncGlvMF8yNF9n cnAiLCAiZ3BpbzBfMjVfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAiZ3BpbzAiOworCQkJCX07CisJ CQl9OworCisJCQlwaW5jdHJsX2dlbTNfZGVmYXVsdDogZ2VtMy1kZWZhdWx0IHsKKwkJCQljb25m IHsKKwkJCQkJZ3JvdXBzID0gImV0aGVybmV0M18wX2dycCI7CisJCQkJCXNsZXctcmF0ZSA9IDxT TEVXX1JBVEVfU0xPVz47CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJT19TVEFOREFSRF9MVkNNT1Mx OD47CisJCQkJfTsKKworCQkJCWNvbmYtcnggeworCQkJCQlwaW5zID0gIk1JTzcwIiwgIk1JTzcy IiwgIk1JTzc0IjsKKwkJCQkJYmlhcy1oaWdoLWltcGVkYW5jZTsKKwkJCQkJbG93LXBvd2VyLWRp c2FibGU7CisJCQkJfTsKKworCQkJCWNvbmYtYm9vdHN0cmFwIHsKKwkJCQkJcGlucyA9ICJNSU83 MSIsICJNSU83MyIsICJNSU83NSI7CisJCQkJCWJpYXMtZGlzYWJsZTsKKwkJCQkJbG93LXBvd2Vy LWRpc2FibGU7CisJCQkJfTsKKworCQkJCWNvbmYtdHggeworCQkJCQlwaW5zID0gIk1JTzY0Iiwg Ik1JTzY1IiwgIk1JTzY2IiwKKwkJCQkJICAgICAgICJNSU82NyIsICJNSU82OCIsICJNSU82OSI7 CisJCQkJCWJpYXMtZGlzYWJsZTsKKwkJCQkJbG93LXBvd2VyLWVuYWJsZTsKKwkJCQl9OworCisJ CQkJY29uZi1tZGlvIHsKKwkJCQkJZ3JvdXBzID0gIm1kaW8zXzBfZ3JwIjsKKwkJCQkJc2xldy1y YXRlID0gPFNMRVdfUkFURV9TTE9XPjsKKwkJCQkJcG93ZXItc291cmNlID0gPElPX1NUQU5EQVJE X0xWQ01PUzE4PjsKKwkJCQkJYmlhcy1kaXNhYmxlOworCQkJCX07CisKKwkJCQltdXgtbWRpbyB7 CisJCQkJCWZ1bmN0aW9uID0gIm1kaW8zIjsKKwkJCQkJZ3JvdXBzID0gIm1kaW8zXzBfZ3JwIjsK KwkJCQl9OworCisJCQkJbXV4IHsKKwkJCQkJZnVuY3Rpb24gPSAiZXRoZXJuZXQzIjsKKwkJCQkJ Z3JvdXBzID0gImV0aGVybmV0M18wX2dycCI7CisJCQkJfTsKKwkJCX07CisKKwkJCXBpbmN0cmxf dXNiMF9kZWZhdWx0OiB1c2IwLWRlZmF1bHQgeworCQkJCWNvbmYgeworCQkJCQlncm91cHMgPSAi dXNiMF8wX2dycCI7CisJCQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBv d2VyLXNvdXJjZSA9IDxJT19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJfTsKKworCQkJCWNvbmYt cnggeworCQkJCQlwaW5zID0gIk1JTzUyIiwgIk1JTzUzIiwgIk1JTzU1IjsKKwkJCQkJYmlhcy1o aWdoLWltcGVkYW5jZTsKKwkJCQl9OworCisJCQkJY29uZi10eCB7CisJCQkJCXBpbnMgPSAiTUlP NTQiLCAiTUlPNTYiLCAiTUlPNTciLCAiTUlPNTgiLCAiTUlPNTkiLAorCQkJCQkiTUlPNjAiLCAi TUlPNjEiLCAiTUlPNjIiLCAiTUlPNjMiOworCQkJCQliaWFzLWRpc2FibGU7CisJCQkJfTsKKwor CQkJCW11eCB7CisJCQkJCWdyb3VwcyA9ICJ1c2IwXzBfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAi dXNiMCI7CisJCQkJfTsKKwkJCX07CisKKwkJCXBpbmN0cmxfc2RoY2kxX2RlZmF1bHQ6IHNkaGNp MS1kZWZhdWx0IHsKKwkJCQljb25mIHsKKwkJCQkJZ3JvdXBzID0gInNkaW8xXzBfZ3JwIjsKKwkJ CQkJc2xldy1yYXRlID0gPFNMRVdfUkFURV9TTE9XPjsKKwkJCQkJcG93ZXItc291cmNlID0gPElP X1NUQU5EQVJEX0xWQ01PUzE4PjsKKwkJCQkJYmlhcy1kaXNhYmxlOworCQkJCX07CisKKwkJCQlj b25mLWNkIHsKKwkJCQkJZ3JvdXBzID0gInNkaW8xX2NkXzBfZ3JwIjsKKwkJCQkJYmlhcy1oaWdo LWltcGVkYW5jZTsKKwkJCQkJYmlhcy1wdWxsLXVwOworCQkJCQlzbGV3LXJhdGUgPSA8U0xFV19S QVRFX1NMT1c+OworCQkJCQlwb3dlci1zb3VyY2UgPSA8SU9fU1RBTkRBUkRfTFZDTU9TMTg+Owor CQkJCX07CisKKwkJCQltdXgtY2QgeworCQkJCQlncm91cHMgPSAic2RpbzFfY2RfMF9ncnAiOwor CQkJCQlmdW5jdGlvbiA9ICJzZGlvMV9jZCI7CisJCQkJfTsKKworCQkJCW11eCB7CisJCQkJCWdy b3VwcyA9ICJzZGlvMV8wX2dycCI7CisJCQkJCWZ1bmN0aW9uID0gInNkaW8xIjsKKwkJCQl9Owor CQkJfTsKKwkJfTsKKwl9OworCWZyYWdtZW50MTUgeworCQl0YXJnZXQgPSA8JnVhcnQxPjsKKwkJ X19vdmVybGF5X18geworCQkJc3RhdHVzID0gIm9rYXkiOworCQkJcGluY3RybC1uYW1lcyA9ICJk ZWZhdWx0IjsKKwkJCXBpbmN0cmwtMCA9IDwmcGluY3RybF91YXJ0MV9kZWZhdWx0PjsKKwkJfTsK Kwl9OworfTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMveGlsaW54L3p5bnFtcC1z Y2sta3YtZy1yZXZCLmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMveGlsaW54L3p5bnFtcC1zY2st a3YtZy1yZXZCLmR0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYy ZDE3NWNmM2Q1ZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMveGlsaW54 L3p5bnFtcC1zY2sta3YtZy1yZXZCLmR0cwpAQCAtMCwwICsxLDM1MSBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBkdHMgZmlsZSBmb3IgS1YyNjAgcmV2QSBD YXJyaWVyIENhcmQKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMjAsIFhpbGlueCwgSW5jLgorICoK KyAqIE1pY2hhbCBTaW1layA8bWljaGFsLnNpbWVrQHhpbGlueC5jb20+CisgKi8KKworICNpbmNs dWRlIDxkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaD4KKyAjaW5jbHVkZSA8ZHQtYmluZGluZ3MvbmV0 L3RpLWRwODM4NjcuaD4KKyAjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3BoeS5oPgorICNpbmNs dWRlIDxkdC1iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtenlucW1wLmg+CisKKy9kdHMtdjEvOwor L3BsdWdpbi87CisKKy97CisJY29tcGF0aWJsZSA9ICJ4bG54LHp5bnFtcC1zay1rdjI2MC1yZXYx IiwKKwkJICAgICAieGxueCx6eW5xbXAtc2sta3YyNjAtcmV2QiIsCisJCSAgICAgInhsbngsenlu cW1wLXNrLWt2MjYwIiwgInhsbngsenlucW1wIjsKKworCWZyYWdtZW50MSB7CisJCXRhcmdldCA9 IDwmaTJjMT47IC8qIEkyQ19TQ0sgQzIzL0MyNCAtIE1JTyBmcm9tIFNPTSAqLworCisJCV9fb3Zl cmxheV9fIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47 CisJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiZ3BpbyI7CisJCQlwaW5jdHJsLTAgPSA8 JnBpbmN0cmxfaTJjMV9kZWZhdWx0PjsKKwkJCXBpbmN0cmwtMSA9IDwmcGluY3RybF9pMmMxX2dw aW8+OworCQkJc2NsLWdwaW9zID0gPCZncGlvIDI0IEdQSU9fQUNUSVZFX0hJR0g+OworCQkJc2Rh LWdwaW9zID0gPCZncGlvIDI1IEdQSU9fQUNUSVZFX0hJR0g+OworCisJCQl1MTQ6IGluYTI2MEA0 MCB7IC8qIHUxNCAqLworCQkJCWNvbXBhdGlibGUgPSAidGksaW5hMjYwIjsKKwkJCQkjaW8tY2hh bm5lbC1jZWxscyA9IDwxPjsKKwkJCQlsYWJlbCA9ICJpbmEyNjAtdTE0IjsKKwkJCQlyZWcgPSA8 MHg0MD47CisJCQl9OworCQkJdXNiaHViOiB1c2I1NzQ0QDJkIHsgLyogdTQzICovCisJCQkJY29t cGF0aWJsZSA9ICJtaWNyb2NoaXAsdXNiNTc0NCI7CisJCQkJcmVnID0gPDB4MmQ+OworCQkJCXJl c2V0LWdwaW9zID0gPCZncGlvIDQ0IEdQSU9fQUNUSVZFX0hJR0g+OworCQkJfTsKKwkJCS8qIHUy NyAtIDB4ZTAgLSBTVERQNDMyMCBEUC9IRE1JIHNwbGl0dGVyICovCisJCX07CisJfTsKKworCWZy YWdtZW50MWEgeworCQl0YXJnZXQgPSA8JmFtYmE+OworCQlfX292ZXJsYXlfXyB7CisJCQlpbmEy NjAtdTE0IHsKKwkJCQljb21wYXRpYmxlID0gImlpby1od21vbiI7CisJCQkJaW8tY2hhbm5lbHMg PSA8JnUxNCAwPiwgPCZ1MTQgMT4sIDwmdTE0IDI+OworCQkJfTsKKworCQkJc2k1MzMyXzA6IHNp NTMzMl8wIHsgLyogdTE3ICovCisJCQkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQkJ I2Nsb2NrLWNlbGxzID0gPDA+OworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjUwMDAwMDA+Owor CQkJfTsKKworCQkJc2k1MzMyXzE6IHNpNTMzMl8xIHsgLyogdTE3ICovCisJCQkJY29tcGF0aWJs ZSA9ICJmaXhlZC1jbG9jayI7CisJCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJCWNsb2NrLWZy ZXF1ZW5jeSA9IDwyNTAwMDAwMD47CisJCQl9OworCisJCQlzaTUzMzJfMjogc2k1MzMyXzIgeyAv KiB1MTcgKi8KKwkJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCQkjY2xvY2stY2Vs bHMgPSA8MD47CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDQ4MDAwMDAwPjsKKwkJCX07CisKKwkJ CXNpNTMzMl8zOiBzaTUzMzJfMyB7IC8qIHUxNyAqLworCQkJCWNvbXBhdGlibGUgPSAiZml4ZWQt Y2xvY2siOworCQkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8 MjQwMDAwMDA+OworCQkJfTsKKworCQkJc2k1MzMyXzQ6IHNpNTMzMl80IHsgLyogdTE3ICovCisJ CQkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQkJI2Nsb2NrLWNlbGxzID0gPDA+Owor CQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNjAwMDAwMD47CisJCQl9OworCisJCQlzaTUzMzJfNTog c2k1MzMyXzUgeyAvKiB1MTcgKi8KKwkJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJ CQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDI3MDAwMDAwPjsK KwkJCX07CisJCX07CisJfTsKKworLyogRFAvVVNCIDMuMCAqLworCWZyYWdtZW50MiB7CisJCXRh cmdldCA9IDwmcHNndHI+OworCQlfX292ZXJsYXlfXyB7CisJCQlzdGF0dXMgPSAib2theSI7CisJ CQkvKiBwY2llLCB1c2IzLCBzYXRhICovCisJCQljbG9ja3MgPSA8JnNpNTMzMl81PiwgPCZzaTUz MzJfND4sIDwmc2k1MzMyXzA+OworCQkJY2xvY2stbmFtZXMgPSAicmVmMCIsICJyZWYxIiwgInJl ZjIiOworCQl9OworCX07CisKKwlmcmFnbWVudDQgeworCQl0YXJnZXQgPSA8Jnp5bnFtcF9kcHN1 Yj47CisJCV9fb3ZlcmxheV9fIHsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCQlwaHktbmFt ZXMgPSAiZHAtcGh5MCIsICJkcC1waHkxIjsKKwkJCXBoeXMgPSA8JnBzZ3RyIDEgUEhZX1RZUEVf RFAgMCAwPiwgPCZwc2d0ciAwIFBIWV9UWVBFX0RQIDEgMD47CisJCX07CisJfTsKKworCWZyYWdt ZW50OSB7CisJCXRhcmdldCA9IDwmenlucW1wX2RwZG1hPjsKKwkJX19vdmVybGF5X18geworCQkJ c3RhdHVzID0gIm9rYXkiOworCQl9OworCX07CisKKwlmcmFnbWVudDEwIHsKKwkJdGFyZ2V0ID0g PCZ1c2IwPjsKKwkJX19vdmVybGF5X18geworCQkJc3RhdHVzID0gIm9rYXkiOworCQkJcGluY3Ry bC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJCXBpbmN0cmwtMCA9IDwmcGluY3RybF91c2IwX2RlZmF1 bHQ+OworCQl9OworCX07CisKKwlmcmFnbWVudDExIHsKKwkJdGFyZ2V0ID0gPCZkd2MzXzA+Owor CQlfX292ZXJsYXlfXyB7CisJCQlzdGF0dXMgPSAib2theSI7CisJCQlkcl9tb2RlID0gImhvc3Qi OworCQkJc25wcyx1c2IzX2xwbV9jYXBhYmxlOworCQkJcGh5LW5hbWVzID0gInVzYjMtcGh5IjsK KwkJCXBoeXMgPSA8JnBzZ3RyIDIgUEhZX1RZUEVfVVNCMyAwIDE+OworCQkJbWF4aW11bS1zcGVl ZCA9ICJzdXBlci1zcGVlZCI7CisJCX07CisJfTsKKworCWZyYWdtZW50MTIgeworCQl0YXJnZXQg PSA8JnNkaGNpMT47IC8qIG9uIENDIHdpdGggdHVuZWQgcGFyYW1ldGVycyAqLworCQlfX292ZXJs YXlfXyB7CisJCQlzdGF0dXMgPSAib2theSI7CisJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQi OworCQkJcGluY3RybC0wID0gPCZwaW5jdHJsX3NkaGNpMV9kZWZhdWx0PjsKKwkJCS8qCisJCQkg KiBTRCAzLjAgcmVxdWlyZXMgbGV2ZWwgc2hpZnRlciBhbmQgdGhpcyBwcm9wZXJ0eQorCQkJICog c2hvdWxkIGJlIHJlbW92ZWQgaWYgdGhlIGJvYXJkIGhhcyBsZXZlbCBzaGlmdGVyIGFuZAorCQkJ ICogbmVlZCB0byB3b3JrIGluIFVIUyBtb2RlCisJCQkgKi8KKwkJCW5vLTEtOC12OworCQkJZGlz YWJsZS13cDsKKwkJCXhsbngsbWlvLWJhbmsgPSA8MT47CisJCQljbGstcGhhc2Utc2QtaHMgPSA8 MTI2PiwgPDYwPjsKKwkJCWNsay1waGFzZS11aHMtc2RyMjUgPSA8MTIwPiwgPDYwPjsKKwkJCWNs ay1waGFzZS11aHMtZGRyNTAgPSA8MTI2PiwgPDQ4PjsKKwkJfTsKKwl9OworCisJZnJhZ21lbnQx MyB7CisJCXRhcmdldCA9IDwmZ2VtMz47IC8qIHJlcXVpcmVkIGJ5IHNwZWMgKi8KKwkJX19vdmVy bGF5X18geworCQkJc3RhdHVzID0gIm9rYXkiOworCQkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0 IjsKKwkJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9nZW0zX2RlZmF1bHQ+OworCQkJcGh5LWhhbmRs ZSA9IDwmcGh5MD47CisJCQlwaHktbW9kZSA9ICJyZ21paS1pZCI7CisKKwkJCW1kaW86IG1kaW8g eworCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJ CXJlc2V0LWdwaW9zID0gPCZncGlvIDM4IEdQSU9fQUNUSVZFX0xPVz47CisJCQkJcmVzZXQtZGVs YXktdXMgPSA8Mj47CisKKwkJCQlwaHkwOiBldGhlcm5ldC1waHlAMSB7CisJCQkJCSNwaHktY2Vs bHMgPSA8MT47CisJCQkJCXJlZyA9IDwxPjsKKwkJCQkJdGkscngtaW50ZXJuYWwtZGVsYXkgPSA8 RFA4Mzg2N19SR01JSURDVExfMl8yNV9OUz47CisJCQkJCXRpLHR4LWludGVybmFsLWRlbGF5ID0g PERQODM4NjdfUkdNSUlEQ1RMXzJfNzVfTlM+OworCQkJCQl0aSxmaWZvLWRlcHRoID0gPERQODM4 NjdfUEhZQ1JfRklGT19ERVBUSF80X0JfTklCPjsKKwkJCQkJdGksZHA4Mzg2Ny1yeGN0cmwtc3Ry YXAtcXVpcms7CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKKworCWZyYWdtZW50MTQgeworCQl0 YXJnZXQgPSA8JnBpbmN0cmwwPjsgLyogcmVxdWlyZWQgYnkgc3BlYyAqLworCQlfX292ZXJsYXlf XyB7CisJCQlzdGF0dXMgPSAib2theSI7CisKKwkJCXBpbmN0cmxfdWFydDFfZGVmYXVsdDogdWFy dDEtZGVmYXVsdCB7CisJCQkJY29uZiB7CisJCQkJCWdyb3VwcyA9ICJ1YXJ0MV85X2dycCI7CisJ CQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJ T19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJCWRyaXZlLXN0cmVuZ3RoID0gPDEyPjsKKwkJCQl9 OworCisJCQkJY29uZi1yeCB7CisJCQkJCXBpbnMgPSAiTUlPMzciOworCQkJCQliaWFzLWhpZ2gt aW1wZWRhbmNlOworCQkJCX07CisKKwkJCQljb25mLXR4IHsKKwkJCQkJcGlucyA9ICJNSU8zNiI7 CisJCQkJCWJpYXMtZGlzYWJsZTsKKwkJCQl9OworCisJCQkJbXV4IHsKKwkJCQkJZ3JvdXBzID0g InVhcnQxXzlfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAidWFydDEiOworCQkJCX07CisJCQl9Owor CisJCQlwaW5jdHJsX2kyYzFfZGVmYXVsdDogaTJjMS1kZWZhdWx0IHsKKwkJCQljb25mIHsKKwkJ CQkJZ3JvdXBzID0gImkyYzFfNl9ncnAiOworCQkJCQliaWFzLXB1bGwtdXA7CisJCQkJCXNsZXct cmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJT19TVEFOREFS RF9MVkNNT1MxOD47CisJCQkJfTsKKworCQkJCW11eCB7CisJCQkJCWdyb3VwcyA9ICJpMmMxXzZf Z3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAiaTJjMSI7CisJCQkJfTsKKwkJCX07CisKKwkJCXBpbmN0 cmxfaTJjMV9ncGlvOiBpMmMxLWdwaW8geworCQkJCWNvbmYgeworCQkJCQlncm91cHMgPSAiZ3Bp bzBfMjRfZ3JwIiwgImdwaW8wXzI1X2dycCI7CisJCQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVf U0xPVz47CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJT19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJ fTsKKworCQkJCW11eCB7CisJCQkJCWdyb3VwcyA9ICJncGlvMF8yNF9ncnAiLCAiZ3BpbzBfMjVf Z3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAiZ3BpbzAiOworCQkJCX07CisJCQl9OworCisJCQlwaW5j dHJsX2dlbTNfZGVmYXVsdDogZ2VtMy1kZWZhdWx0IHsKKwkJCQljb25mIHsKKwkJCQkJZ3JvdXBz ID0gImV0aGVybmV0M18wX2dycCI7CisJCQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47 CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJT19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJfTsKKwor CQkJCWNvbmYtcnggeworCQkJCQlwaW5zID0gIk1JTzcwIiwgIk1JTzcyIiwgIk1JTzc0IjsKKwkJ CQkJYmlhcy1oaWdoLWltcGVkYW5jZTsKKwkJCQkJbG93LXBvd2VyLWRpc2FibGU7CisJCQkJfTsK KworCQkJCWNvbmYtYm9vdHN0cmFwIHsKKwkJCQkJcGlucyA9ICJNSU83MSIsICJNSU83MyIsICJN SU83NSI7CisJCQkJCWJpYXMtZGlzYWJsZTsKKwkJCQkJbG93LXBvd2VyLWRpc2FibGU7CisJCQkJ fTsKKworCQkJCWNvbmYtdHggeworCQkJCQlwaW5zID0gIk1JTzY0IiwgIk1JTzY1IiwgIk1JTzY2 IiwKKwkJCQkJICAgICAgICJNSU82NyIsICJNSU82OCIsICJNSU82OSI7CisJCQkJCWJpYXMtZGlz YWJsZTsKKwkJCQkJbG93LXBvd2VyLWVuYWJsZTsKKwkJCQl9OworCisJCQkJY29uZi1tZGlvIHsK KwkJCQkJZ3JvdXBzID0gIm1kaW8zXzBfZ3JwIjsKKwkJCQkJc2xldy1yYXRlID0gPFNMRVdfUkFU RV9TTE9XPjsKKwkJCQkJcG93ZXItc291cmNlID0gPElPX1NUQU5EQVJEX0xWQ01PUzE4PjsKKwkJ CQkJYmlhcy1kaXNhYmxlOworCQkJCX07CisKKwkJCQltdXgtbWRpbyB7CisJCQkJCWZ1bmN0aW9u ID0gIm1kaW8zIjsKKwkJCQkJZ3JvdXBzID0gIm1kaW8zXzBfZ3JwIjsKKwkJCQl9OworCisJCQkJ bXV4IHsKKwkJCQkJZnVuY3Rpb24gPSAiZXRoZXJuZXQzIjsKKwkJCQkJZ3JvdXBzID0gImV0aGVy bmV0M18wX2dycCI7CisJCQkJfTsKKwkJCX07CisKKwkJCXBpbmN0cmxfdXNiMF9kZWZhdWx0OiB1 c2IwLWRlZmF1bHQgeworCQkJCWNvbmYgeworCQkJCQlncm91cHMgPSAidXNiMF8wX2dycCI7CisJ CQkJCXNsZXctcmF0ZSA9IDxTTEVXX1JBVEVfU0xPVz47CisJCQkJCXBvd2VyLXNvdXJjZSA9IDxJ T19TVEFOREFSRF9MVkNNT1MxOD47CisJCQkJfTsKKworCQkJCWNvbmYtcnggeworCQkJCQlwaW5z ID0gIk1JTzUyIiwgIk1JTzUzIiwgIk1JTzU1IjsKKwkJCQkJYmlhcy1oaWdoLWltcGVkYW5jZTsK KwkJCQl9OworCisJCQkJY29uZi10eCB7CisJCQkJCXBpbnMgPSAiTUlPNTQiLCAiTUlPNTYiLCAi TUlPNTciLCAiTUlPNTgiLCAiTUlPNTkiLAorCQkJCQkiTUlPNjAiLCAiTUlPNjEiLCAiTUlPNjIi LCAiTUlPNjMiOworCQkJCQliaWFzLWRpc2FibGU7CisJCQkJfTsKKworCQkJCW11eCB7CisJCQkJ CWdyb3VwcyA9ICJ1c2IwXzBfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAidXNiMCI7CisJCQkJfTsK KwkJCX07CisKKwkJCXBpbmN0cmxfc2RoY2kxX2RlZmF1bHQ6IHNkaGNpMS1kZWZhdWx0IHsKKwkJ CQljb25mIHsKKwkJCQkJZ3JvdXBzID0gInNkaW8xXzBfZ3JwIjsKKwkJCQkJc2xldy1yYXRlID0g PFNMRVdfUkFURV9TTE9XPjsKKwkJCQkJcG93ZXItc291cmNlID0gPElPX1NUQU5EQVJEX0xWQ01P UzE4PjsKKwkJCQkJYmlhcy1kaXNhYmxlOworCQkJCX07CisKKwkJCQljb25mLWNkIHsKKwkJCQkJ Z3JvdXBzID0gInNkaW8xX2NkXzBfZ3JwIjsKKwkJCQkJYmlhcy1oaWdoLWltcGVkYW5jZTsKKwkJ CQkJYmlhcy1wdWxsLXVwOworCQkJCQlzbGV3LXJhdGUgPSA8U0xFV19SQVRFX1NMT1c+OworCQkJ CQlwb3dlci1zb3VyY2UgPSA8SU9fU1RBTkRBUkRfTFZDTU9TMTg+OworCQkJCX07CisKKwkJCQlt dXgtY2QgeworCQkJCQlncm91cHMgPSAic2RpbzFfY2RfMF9ncnAiOworCQkJCQlmdW5jdGlvbiA9 ICJzZGlvMV9jZCI7CisJCQkJfTsKKworCQkJCW11eCB7CisJCQkJCWdyb3VwcyA9ICJzZGlvMV8w X2dycCI7CisJCQkJCWZ1bmN0aW9uID0gInNkaW8xIjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9 OworCWZyYWdtZW50MTUgeworCQl0YXJnZXQgPSA8JnVhcnQxPjsKKwkJX19vdmVybGF5X18gewor CQkJc3RhdHVzID0gIm9rYXkiOworCQkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJCXBp bmN0cmwtMCA9IDwmcGluY3RybF91YXJ0MV9kZWZhdWx0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMveGlsaW54L3p5bnFtcC1zbS1rMjYtcmV2QS5kdHMg Yi9hcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAtc20tazI2LXJldkEuZHRzCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDA1MWY0MWE1OWJmCi0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy94aWxpbngvenlucW1wLXNtLWsyNi1yZXZB LmR0cwpAQCAtMCwwICsxLDI4OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKKy8qCisgKiBkdHMgZmlsZSBmb3IgWGlsaW54IFp5bnFNUCBTTS1LMjYgcmV2MS9CL0EKKyAq CisgKiAoQykgQ29weXJpZ2h0IDIwMjAsIFhpbGlueCwgSW5jLgorICoKKyAqIE1pY2hhbCBTaW1l ayA8bWljaGFsLnNpbWVrQHhpbGlueC5jb20+CisgKi8KKworL2R0cy12MS87CisKKyNpbmNsdWRl ICJ6eW5xbXAuZHRzaSIKKyNpbmNsdWRlICJ6eW5xbXAtY2xrLWNjZi5kdHNpIgorI2luY2x1ZGUg PGR0LWJpbmRpbmdzL2lucHV0L2lucHV0Lmg+CisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvZ3Bpby9n cGlvLmg+CisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3BoeS5oPgorCisvIHsKKwltb2RlbCA9 ICJaeW5xTVAgU00tSzI2IFJldjEvQi9BIjsKKwljb21wYXRpYmxlID0gInhsbngsenlucW1wLXNt LWsyNi1yZXYxIiwgInhsbngsenlucW1wLXNtLWsyNi1yZXZCIiwKKwkJICAgICAieGxueCx6eW5x bXAtc20tazI2LXJldkEiLCAieGxueCx6eW5xbXAtc20tazI2IiwKKwkJICAgICAieGxueCx6eW5x bXAiOworCisJYWxpYXNlcyB7CisJCWkyYzAgPSAmaTJjMDsKKwkJaTJjMSA9ICZpMmMxOworCQlt bWMwID0gJnNkaGNpMDsKKwkJbW1jMSA9ICZzZGhjaTE7CisJCW52bWVtMCA9ICZlZXByb207CisJ CW52bWVtMSA9ICZlZXByb21fY2M7CisJCXJ0YzAgPSAmcnRjOworCQlzZXJpYWwwID0gJnVhcnQw OworCQlzZXJpYWwxID0gJnVhcnQxOworCQlzZXJpYWwyID0gJmRjYzsKKwkJc3BpMCA9ICZxc3Bp OworCQlzcGkxID0gJnNwaTA7CisJCXNwaTIgPSAmc3BpMTsKKwkJdXNiMCA9ICZ1c2IwOworCQl1 c2IxID0gJnVzYjE7CisJfTsKKworCWNob3NlbiB7CisJCWJvb3RhcmdzID0gImVhcmx5Y29uIjsK KwkJc3Rkb3V0LXBhdGggPSAic2VyaWFsMToxMTUyMDBuOCI7CisJfTsKKworCW1lbW9yeUAwIHsK KwkJZGV2aWNlX3R5cGUgPSAibWVtb3J5IjsgLyogNEdCICovCisJCXJlZyA9IDwweDAgMHgwIDB4 MCAweDgwMDAwMDAwPiwgPDB4OCAweDAwMDAwMDAwIDB4MCAweDgwMDAwMDAwPjsKKwl9OworCisJ Z3Bpby1rZXlzIHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWtleXMiOworCQlhdXRvcmVwZWF0Owor CQlmd3VlbiB7CisJCQlsYWJlbCA9ICJmd3VlbiI7CisJCQlncGlvcyA9IDwmZ3BpbyAxMiBHUElP X0FDVElWRV9MT1c+OworCQl9OworCX07CisKKwlsZWRzIHsKKwkJY29tcGF0aWJsZSA9ICJncGlv LWxlZHMiOworCQlkczM1IHsKKwkJCWxhYmVsID0gImhlYXJ0YmVhdCI7CisJCQlncGlvcyA9IDwm Z3BpbyA3IEdQSU9fQUNUSVZFX0hJR0g+OworCQkJbGludXgsZGVmYXVsdC10cmlnZ2VyID0gImhl YXJ0YmVhdCI7CisJCX07CisKKwkJZHMzNiB7CisJCQlsYWJlbCA9ICJ2YnVzX2RldCI7CisJCQln cGlvcyA9IDwmZ3BpbyA4IEdQSU9fQUNUSVZFX0hJR0g+OworCQkJZGVmYXVsdC1zdGF0ZSA9ICJv biI7CisJCX07CisJfTsKK307CisKKyZ1YXJ0MSB7IC8qIE1JTzM2L01JTzM3ICovCisJc3RhdHVz ID0gIm9rYXkiOworfTsKKworJnFzcGkgeyAvKiBNSU8gMC01IC0gVTE0MyAqLworCXN0YXR1cyA9 ICJva2F5IjsKKwlmbGFzaEAwIHsgLyogTVQyNVFVNTEyQSAqLworCQljb21wYXRpYmxlID0gIm10 MjVxdTUxMmEiLCAiamVkZWMsc3BpLW5vciI7IC8qIDY0TUIgKi8KKwkJI2FkZHJlc3MtY2VsbHMg PSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MD47CisJCXNwaS10eC1idXMt d2lkdGggPSA8MT47CisJCXNwaS1yeC1idXMtd2lkdGggPSA8ND47CisJCXNwaS1tYXgtZnJlcXVl bmN5ID0gPDQwMDAwMDAwPjsgLyogNDBNSHogKi8KKwkJcGFydGl0aW9uQDAgeworCQkJbGFiZWwg PSAiSW1hZ2UgU2VsZWN0b3IiOworCQkJcmVnID0gPDB4MCAweDgwMDAwPjsgLyogNTEyS0IgKi8K KwkJCXJlYWQtb25seTsKKwkJCWxvY2s7CisJCX07CisJCXBhcnRpdGlvbkA4MDAwMCB7CisJCQls YWJlbCA9ICJJbWFnZSBTZWxlY3RvciBHb2xkZW4iOworCQkJcmVnID0gPDB4ODAwMDAgMHg4MDAw MD47IC8qIDUxMktCICovCisJCQlyZWFkLW9ubHk7CisJCQlsb2NrOworCQl9OworCQlwYXJ0aXRp b25AMTAwMDAwIHsKKwkJCWxhYmVsID0gIlBlcnNpc3RlbnQgUmVnaXN0ZXIiOworCQkJcmVnID0g PDB4MTAwMDAwIDB4MjAwMDA+OyAvKiAxMjhLQiAqLworCQl9OworCQlwYXJ0aXRpb25AMTIwMDAw IHsKKwkJCWxhYmVsID0gIlBlcnNpc3RlbnQgUmVnaXN0ZXIgQmFja3VwIjsKKwkJCXJlZyA9IDww eDEyMDAwMCAweDIwMDAwPjsgLyogMTI4S0IgKi8KKwkJfTsKKwkJcGFydGl0aW9uQDE0MDAwMCB7 CisJCQlsYWJlbCA9ICJPcGVuXzEiOworCQkJcmVnID0gPDB4MTQwMDAwIDB4QzAwMDA+OyAvKiA3 NjhLQiAqLworCQl9OworCQlwYXJ0aXRpb25AMjAwMDAwIHsKKwkJCWxhYmVsID0gIkltYWdlIEEg KEZTQkwsIFBNVSwgQVRGLCBVLUJvb3QpIjsKKwkJCXJlZyA9IDwweDIwMDAwMCAweEQwMDAwMD47 IC8qIDEzTUIgKi8KKwkJfTsKKwkJcGFydGl0aW9uQGYwMDAwMCB7CisJCQlsYWJlbCA9ICJJbWdT ZWwgSW1hZ2UgQSBDYXRjaCI7CisJCQlyZWcgPSA8MHhGMDAwMDAgMHg4MDAwMD47IC8qIDUxMktC ICovCisJCQlyZWFkLW9ubHk7CisJCQlsb2NrOworCQl9OworCQlwYXJ0aXRpb25AZjgwMDAwIHsK KwkJCWxhYmVsID0gIkltYWdlIEIgKEZTQkwsIFBNVSwgQVRGLCBVLUJvb3QpIjsKKwkJCXJlZyA9 IDwweEY4MDAwMCAweEQwMDAwMD47IC8qIDEzTUIgKi8KKwkJfTsKKwkJcGFydGl0aW9uQDFjODAw MDAgeworCQkJbGFiZWwgPSAiSW1nU2VsIEltYWdlIEIgQ2F0Y2giOworCQkJcmVnID0gPDB4MUM4 MDAwMCAweDgwMDAwPjsgLyogNTEyS0IgKi8KKwkJCXJlYWQtb25seTsKKwkJCWxvY2s7CisJCX07 CisJCXBhcnRpdGlvbkAxZDAwMDAwIHsKKwkJCWxhYmVsID0gIk9wZW5fMiI7CisJCQlyZWcgPSA8 MHgxRDAwMDAwIDB4MTAwMDAwPjsgLyogMU1CICovCisJCX07CisJCXBhcnRpdGlvbkAxZTAwMDAw IHsKKwkJCWxhYmVsID0gIlJlY292ZXJ5IEltYWdlIjsKKwkJCXJlZyA9IDwweDFFMDAwMDAgMHgy MDAwMDA+OyAvKiAyTUIgKi8KKwkJCXJlYWQtb25seTsKKwkJCWxvY2s7CisJCX07CisJCXBhcnRp dGlvbkAyMDAwMDAwIHsKKwkJCWxhYmVsID0gIlJlY292ZXJ5IEltYWdlIEJhY2t1cCI7CisJCQly ZWcgPSA8MHgyMDAwMDAwIDB4MjAwMDAwPjsgLyogMk1CICovCisJCQlyZWFkLW9ubHk7CisJCQls b2NrOworCQl9OworCQlwYXJ0aXRpb25AMjIwMDAwMCB7CisJCQlsYWJlbCA9ICJVLUJvb3Qgc3Rv cmFnZSB2YXJpYWJsZXMiOworCQkJcmVnID0gPDB4MjIwMDAwMCAweDIwMDAwPjsgLyogMTI4S0Ig Ki8KKwkJfTsKKwkJcGFydGl0aW9uQDIyMjAwMDAgeworCQkJbGFiZWwgPSAiVS1Cb290IHN0b3Jh Z2UgdmFyaWFibGVzIGJhY2t1cCI7CisJCQlyZWcgPSA8MHgyMjIwMDAwIDB4MjAwMDA+OyAvKiAx MjhLQiAqLworCQl9OworCQlwYXJ0aXRpb25AMjI0MDAwMCB7CisJCQlsYWJlbCA9ICJTSEEyNTYi OworCQkJcmVnID0gPDB4MjI0MDAwMCAweDEwMDAwPjsgLyogMjU2QiBidXQgNjRLQiBzZWN0b3Ig Ki8KKwkJCXJlYWQtb25seTsKKwkJCWxvY2s7CisJCX07CisJCXBhcnRpdGlvbkAyMjUwMDAwIHsK KwkJCWxhYmVsID0gIlVzZXIiOworCQkJcmVnID0gPDB4MjI1MDAwMCAweDFkYjAwMDA+OyAvKiAy OS41IE1CICovCisJCX07CisJfTsKK307CisKKyZzZGhjaTAgeyAvKiBNSU8xMy0yMyAtIDE2R0Ig ZW1tYyBNVEZDMTZHQVBBTEJILUlUIC0gVTEzM0EqLworCXN0YXR1cyA9ICJva2F5IjsKKwlub24t cmVtb3ZhYmxlOworCWRpc2FibGUtd3A7CisJYnVzLXdpZHRoID0gPDg+OworCXhsbngsbWlvLWJh bmsgPSA8MD47Cit9OworCismc3BpMSB7IC8qIE1JTzYsIDktMTEgKi8KKwlzdGF0dXMgPSAib2th eSI7CisJbGFiZWwgPSAiVFBNIjsKKwludW0tY3MgPSA8MT47CisJdHBtQDAgeyAvKiBzbG05Njcw IC0gVTE0NCAqLworCQljb21wYXRpYmxlID0gImluZmluZW9uLHNsYjk2NzAiLCAidGNnLHRwbV90 aXMtc3BpIjsKKwkJcmVnID0gPDA+OworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxODUwMDAwMD47 CisJfTsKK307CisKKyZpMmMxIHsKKwlzdGF0dXMgPSAib2theSI7CisJY2xvY2stZnJlcXVlbmN5 ID0gPDQwMDAwMD47CisJc2NsLWdwaW9zID0gPCZncGlvIDI0IEdQSU9fQUNUSVZFX0hJR0g+Owor CXNkYS1ncGlvcyA9IDwmZ3BpbyAyNSBHUElPX0FDVElWRV9ISUdIPjsKKworCWVlcHJvbTogZWVw cm9tQDUwIHsgLyogdTQ2IC0gYWxzbyBhdCBhZGRyZXNzIDB4NTggKi8KKwkJY29tcGF0aWJsZSA9 ICJzdCwyNGM2NCIsICJhdG1lbCwyNGM2NCI7IC8qIHN0IG0yNGM2NCAqLworCQlyZWcgPSA8MHg1 MD47CisJCS8qIFdQIHBpbiBFRV9XUF9FTiBjb25uZWN0ZWQgdG8gc2xnN3g2NDQwOTJANjggKi8K Kwl9OworCisJZWVwcm9tX2NjOiBlZXByb21ANTEgeyAvKiByZXF1aXJlZCBieSBzcGVjIC0gYWxz byBhdCBhZGRyZXNzIDB4NTkgKi8KKwkJY29tcGF0aWJsZSA9ICJzdCwyNGM2NCIsICJhdG1lbCwy NGM2NCI7IC8qIHN0IG0yNGM2NCAqLworCQlyZWcgPSA8MHg1MT47CisJfTsKKworCS8qIGRhOTA2 MkAzMCAtIHUxNzAgLSBhbHNvIGF0IGFkZHJlc3MgMHgzMSAqLworCS8qIGRhOTEzMUAzMyAtIHUx NjcgKi8KKwlkYTkxMzE6IHBtaWNAMzMgeworCQljb21wYXRpYmxlID0gImRsZyxkYTkxMzEiOwor CQlyZWcgPSA8MHgzMz47CisJCXJlZ3VsYXRvcnMgeworCQkJZGE5MTMxX2J1Y2sxOiBidWNrMSB7 CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiZGE5MTMxX2J1Y2sxIjsKKwkJCQlyZWd1bGF0b3ItYm9v dC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJCWRhOTEzMV9idWNrMjog YnVjazIgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gImRhOTEzMV9idWNrMiI7CisJCQkJcmVndWxh dG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisJCX07CisJfTsK KworCS8qIGRhOTEzMEAzMiAtIHUxNjYgKi8KKwlkYTkxMzA6IHBtaWNAMzIgeworCQljb21wYXRp YmxlID0gImRsZyxkYTkxMzAiOworCQlyZWcgPSA8MHgzMj47CisJCXJlZ3VsYXRvcnMgeworCQkJ ZGE5MTMwX2J1Y2sxOiBidWNrMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiZGE5MTMwX2J1Y2sx IjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJ fTsKKwkJfTsKKwl9OworCisJLyogc2xnN3g2NDQwOTFANzAgLSB1MTY4IE5PVCBhY2Nlc3NpYmxl IGR1ZSB0byBhZGRyZXNzIGNvbmZsaWN0IHdpdGggc3RkcDQzMjAgKi8KKwkvKgorCSAqIHN0ZHA0 MzIwIC0gdTI3IEZXIGhhcyBiZWxvdyB0d28gaXNzdWVzIHRvIGJlIGZpeGVkIGluIG5leHQgYm9h cmQgcmV2aXNpb24uCisJICogRGV2aWNlIGFja25vd2xlZGdpbmcgdG8gYWRkcmVzc2VzIDB4NUMs IDB4NUQsIDB4NzAsIDB4NzIsIDB4NzYuCisJICogQWRkcmVzcyBjb25mbGljdCB3aXRoIHNsZzd4 NjQ0MDkxQDcwIG1ha2luZyBib3RoIHRoZSBkZXZpY2VzIE5PVCBhY2Nlc3NpYmxlLgorCSAqIFdp dGggdGhlIEZXIGZpeCwgc3RkcDQzMjAgc2hvdWxkIHJlc3BvbmQgdG8gYWRkcmVzcyAweDczIG9u bHkuCisJICovCisJLyogc2xnN3g2NDQwOTJANjggLSB1MTY5ICovCisJLyogQWxzbyBjb25uZWN0 ZWQgdmlhIEpBMUMgYXMgQzIzL0MyNCAqLworfTsKKworJmdwaW8geworCXN0YXR1cyA9ICJva2F5 IjsKKwlncGlvLWxpbmUtbmFtZXMgPSAiUVNQSV9DTEsiLCAiUVNQSV9EUTEiLCAiUVNQSV9EUTIi LCAiUVNQSV9EUTMiLCAiUVNQSV9EUTAiLCAvKiAwIC0gNCAqLworCQkJICAiUVNQSV9DU19CIiwg IlNQSV9DTEsiLCAiTEVEMSIsICJMRUQyIiwgIlNQSV9DU19CIiwgLyogNSAtIDkgKi8KKwkJCSAg IlNQSV9NSVNPIiwgIlNQSV9NT1NJIiwgIkZXVUVOIiwgIkVNTUNfREFUMCIsICJFTU1DX0RBVDEi LCAvKiAxMCAtIDE0ICovCisJCQkgICJFTU1DX0RBVDIiLCAiRU1NQ19EQVQzIiwgIkVNTUNfREFU NCIsICJFTU1DX0RBVDUiLCAiRU1NQ19EQVQ2IiwgLyogMTUgLSAxOSAqLworCQkJICAiRU1NQ19E QVQ3IiwgIkVNTUNfQ01EIiwgIkVNTUNfQ0xLIiwgIkVNTUNfUlNUIiwgIkkyQzFfU0NMIiwgLyog MjAgLSAyNCAqLworCQkJICAiSTJDMV9TREEiLCAiIiwgIiIsICIiLCAiIiwgLyogMjUgLSAyOSAq LworCQkJICAiIiwgIiIsICIiLCAiIiwgIiIsIC8qIDMwIC0gMzQgKi8KKwkJCSAgIiIsICIiLCAi IiwgIiIsICIiLCAvKiAzNSAtIDM5ICovCisJCQkgICIiLCAiIiwgIiIsICIiLCAiIiwgLyogNDAg LSA0NCAqLworCQkJICAiIiwgIiIsICIiLCAiIiwgIiIsIC8qIDQ1IC0gNDkgKi8KKwkJCSAgIiIs ICIiLCAiIiwgIiIsICIiLCAvKiA1MCAtIDU0ICovCisJCQkgICIiLCAiIiwgIiIsICIiLCAiIiwg LyogNTUgLSA1OSAqLworCQkJICAiIiwgIiIsICIiLCAiIiwgIiIsIC8qIDYwIC0gNjQgKi8KKwkJ CSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiA2NSAtIDY5ICovCisJCQkgICIiLCAiIiwgIiIsICIi LCAiIiwgLyogNzAgLSA3NCAqLworCQkJICAiIiwgIiIsICIiLCAvKiA3NSAtIDc3LCBNSU8gZW5k IGFuZCBFTUlPIHN0YXJ0ICovCisJCQkgICIiLCAiIiwgLyogNzggLSA3OSAqLworCQkJICAiIiwg IiIsICIiLCAiIiwgIiIsIC8qIDgwIC0gODQgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAv KiA4NSAtIDg5ICovCisJCQkgICIiLCAiIiwgIiIsICIiLCAiIiwgLyogOTAgLSA5NCAqLworCQkJ ICAiIiwgIiIsICIiLCAiIiwgIiIsIC8qIDk1IC0gOTkgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIs ICIiLCAvKiAxMDAgLSAxMDQgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxMDUgLSAx MDkgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxMTAgLSAxMTQgKi8KKwkJCSAgIiIs ICIiLCAiIiwgIiIsICIiLCAvKiAxMTUgLSAxMTkgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIi LCAvKiAxMjAgLSAxMjQgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxMjUgLSAxMjkg Ki8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxMzAgLSAxMzQgKi8KKwkJCSAgIiIsICIi LCAiIiwgIiIsICIiLCAvKiAxMzUgLSAxMzkgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAv KiAxNDAgLSAxNDQgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxNDUgLSAxNDkgKi8K KwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxNTAgLSAxNTQgKi8KKwkJCSAgIiIsICIiLCAi IiwgIiIsICIiLCAvKiAxNTUgLSAxNTkgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAx NjAgLSAxNjQgKi8KKwkJCSAgIiIsICIiLCAiIiwgIiIsICIiLCAvKiAxNjUgLSAxNjkgKi8KKwkJ CSAgIiIsICIiLCAiIiwgIiI7IC8qIDE3MCAtIDE3NCAqLworfTsKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvYm9vdC9kdHMveGlsaW54L3p5bnFtcC1zbWstazI2LXJldkEuZHRzIGIvYXJjaC9hcm02 NC9ib290L2R0cy94aWxpbngvenlucW1wLXNtay1rMjYtcmV2QS5kdHMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMDBlZGM4ODAwOTMKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybTY0L2Jvb3QvZHRzL3hpbGlueC96eW5xbXAtc21rLWsyNi1yZXZBLmR0cwpAQCAt MCwwICsxLDIxIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAq IGR0cyBmaWxlIGZvciBYaWxpbnggWnlucU1QIFNNSy1LMjYgcmV2MS9CL0EKKyAqCisgKiAoQykg Q29weXJpZ2h0IDIwMjAsIFhpbGlueCwgSW5jLgorICoKKyAqIE1pY2hhbCBTaW1layA8bWljaGFs LnNpbWVrQHhpbGlueC5jb20+CisgKi8KKworI2luY2x1ZGUgInp5bnFtcC1zbS1rMjYtcmV2QS5k dHMiCisKKy8geworCW1vZGVsID0gIlp5bnFNUCBTTUstSzI2IFJldjEvQi9BIjsKKwljb21wYXRp YmxlID0gInhsbngsenlucW1wLXNtay1rMjYtcmV2MSIsICJ4bG54LHp5bnFtcC1zbWstazI2LXJl dkIiLAorCQkgICAgICJ4bG54LHp5bnFtcC1zbWstazI2LXJldkEiLCAieGxueCx6eW5xbXAtc21r LWsyNiIsCisJCSAgICAgInhsbngsenlucW1wIjsKK307CisKKyZzZGhjaTAgeworCXN0YXR1cyA9 ICJkaXNhYmxlZCI7Cit9OwotLSAKMi4zMS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=