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=-10.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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 A7208C433E2 for ; Tue, 21 Jul 2020 15:36:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7966C206E3 for ; Tue, 21 Jul 2020 15:36:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729551AbgGUPg4 (ORCPT ); Tue, 21 Jul 2020 11:36:56 -0400 Received: from comms.puri.sm ([159.203.221.185]:54650 "EHLO comms.puri.sm" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726654AbgGUPgz (ORCPT ); Tue, 21 Jul 2020 11:36:55 -0400 Received: from localhost (localhost [127.0.0.1]) by comms.puri.sm (Postfix) with ESMTP id 1BB38E1005; Tue, 21 Jul 2020 08:36:54 -0700 (PDT) Received: from comms.puri.sm ([127.0.0.1]) by localhost (comms.puri.sm [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id clEMmWEDCvnn; Tue, 21 Jul 2020 08:36:51 -0700 (PDT) From: Martin Kepplinger To: robh@kernel.org, kernel@puri.sm, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, mchehab@kernel.org, Anson.Huang@nxp.com, agx@sigxcpu.org, angus@akkea.ca, broonie@kernel.org Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Martin Kepplinger , Daniel Baluta Subject: [PATCH v4 1/3] arm64: dts: Add a device tree for the Librem 5 phone Date: Tue, 21 Jul 2020 17:32:23 +0200 Message-Id: <20200721153225.7593-1-martin.kepplinger@puri.sm> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Angus Ainslie (Purism)" Add a devicetree description for the Librem 5 phone. 4 hardware revisions have been available. Some revisions include changes that need different software to be run. So far, r3 ("Dogwood") is one such example, see: "Aspen" r0 not supported (very few devices exist) "Birch" r1 supported by r2 "Chestnut" r2 added by this patch "Dogwood" r3 added by this patch "Evergreen" r4 tba / most likely supported by r3 See https://puri.sm/products/librem-5/ for more information. This boots to a working console with working WWAN modem, wifi usdhc, IMU sensor device, proximity sensor, haptic motor, gpio keys, GNSS and LEDs. Signed-off-by: Martin Kepplinger Signed-off-by: Angus Ainslie (Purism) Signed-off-by: Guido Günther For audio related part: Reviewed-by: Daniel Baluta --- revision history ---------------- v4: thanks a lot Shawn for reviewing. changes since v3: * rename to dtsi and split out r2 and r3 dts with revision specifics * add the USB2642 hard-wired Hub * fix charge controller boost-max-current * disable pullup on CHRG_INT (not needed due to external one) * add documentation for the boards' compatible strings * fix led-backlight propery usage * coding style fixes v3: thanks a lot Mark for reviewing! changes since v2: * nicer audio cards names * squash unneeded audio_pwr regulator * remove the susphy_quirk from dwc3_1 after more testing * add usdhc2 card detect via gpio * add headphone detect for audio card https://lore.kernel.org/linux-arm-kernel/20200617073821.16737-1-martin.kepplinger@puri.sm/T/ v2: thanks a lot Marco, Daniel and Pavel for reviewing. changes since v1: * alphabetical sortings / more consistent node names * remove unused regulator and pinctrl descriptions * generic labels for leds, backlight, flash and torch * audio clk settings moved to sai2 node https://lore.kernel.org/linux-arm-kernel/20200604084756.586-1-martin.kepplinger@puri.sm/T/ v1: https://lore.kernel.org/linux-arm-kernel/20200514155737.12160-1-martin.kepplinger@puri.sm/ arch/arm64/boot/dts/freescale/Makefile | 2 + .../boot/dts/freescale/imx8mq-librem5-r2.dts | 26 + .../boot/dts/freescale/imx8mq-librem5-r3.dts | 24 + .../boot/dts/freescale/imx8mq-librem5.dtsi | 1146 +++++++++++++++++ 4 files changed, 1198 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx8mq-librem5-r2.dts create mode 100644 arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts create mode 100644 arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile index a39f0a1723e0..97335205b600 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -35,6 +35,8 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-evk.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mq-evk.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mq-hummingboard-pulse.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-devkit.dtb +dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-r2.dtb +dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-r3.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mq-nitrogen.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mq-phanbell.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mq-pico-pi.dtb diff --git a/arch/arm64/boot/dts/freescale/imx8mq-librem5-r2.dts b/arch/arm64/boot/dts/freescale/imx8mq-librem5-r2.dts new file mode 100644 index 000000000000..9f34b63cd4d2 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8mq-librem5-r2.dts @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +// Copyright (C) 2020 Purism SPC +// +// Librem 5 Chestnut + +/dts-v1/; + +#include "imx8mq-librem5.dtsi" + +/ { + model = "Purism Librem 5r2"; + compatible = "purism,librem5r2", "purism,librem5", "fsl,imx8mq"; +}; + +&bq25895 { + ti,battery-regulation-voltage = <4192000>; /* uV */ + ti,charge-current = <1600000>; /* uA */ + ti,termination-current = <66000>; /* uA */ +}; + +&accel_gyro { + mount-matrix = "1", "0", "0", + "0", "-1", "0", + "0", "0", "1"; +}; + diff --git a/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts b/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts new file mode 100644 index 000000000000..64027ba4754e --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +// Copyright (C) 2020 Purism SPC + +/dts-v1/; + +#include "imx8mq-librem5.dtsi" + +/ { + model = "Purism Librem 5r3"; + compatible = "purism,librem5r3", "purism,librem5", "fsl,imx8mq"; +}; + +&bq25895 { + ti,battery-regulation-voltage = <4200000>; /* uV */ + ti,charge-current = <1500000>; /* uA */ + ti,termination-current = <144000>; /* uA */ +}; + +&accel_gyro { + mount-matrix = "1", "0", "0", + "0", "1", "0", + "0", "0", "-1"; +}; + diff --git a/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi b/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi new file mode 100644 index 000000000000..2e2215e45613 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi @@ -0,0 +1,1146 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2018-2020 Purism SPC + */ + +/dts-v1/; + +#include "dt-bindings/input/input.h" +#include "dt-bindings/pwm/pwm.h" +#include "dt-bindings/usb/pd.h" +#include "imx8mq.dtsi" + +/ { + model = "Purism Librem 5"; + compatible = "purism,librem5", "fsl,imx8mq"; + + backlight_dsi: backlight-dsi { + compatible = "led-backlight"; + leds = <&led_backlight>; + }; + + pmic_osc: clock-pmic { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <32768>; + clock-output-names = "pmic_osc"; + }; + + chosen { + stdout-path = &uart1; + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_keys>; + + vol-down { + label = "VOL_DOWN"; + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + vol-up { + label = "VOL_UP"; + gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + + blue { + label = "blue:status"; + max-brightness = <248>; + pwms = <&pwm2 0 50000>; + }; + + green { + label = "green:status"; + max-brightness = <248>; + pwms = <&pwm4 0 50000>; + }; + + red { + label = "red:status"; + max-brightness = <248>; + pwms = <&pwm3 0 50000>; + }; + }; + + reg_aud_1v8: regulator-audio-1v8 { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_audiopwr>; + regulator-name = "AUDIO_PWR_EN"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + reg_gnss: regulator-gnss { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gnsspwr>; + regulator-name = "GNSS"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio3 12 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + reg_hub: regulator-hub { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_hub_pwr>; + regulator-name = "HUB"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + reg_lcd_3v4: regulator-lcd-3v4 { + compatible = "regulator-fixed"; + regulator-name = "LCD_3V4"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_dsibiasen>; + vin-supply = <®_vsys_3v4>; + gpio = <&gpio1 20 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + reg_vdd_sen: regulator-vdd-sen { + compatible = "regulator-fixed"; + regulator-name = "VDD_SEN"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + reg_vdd_3v3: regulator-vdd-3v3 { + compatible = "regulator-fixed"; + regulator-name = "VDD_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + reg_vdd_1v8: regulator-vdd-1v8 { + compatible = "regulator-fixed"; + regulator-name = "VCC_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + reg_vsys_3v4: regulator-vsys-3v4 { + compatible = "regulator-fixed"; + regulator-name = "VSYS_3V4"; + regulator-min-microvolt = <3400000>; + regulator-max-microvolt = <3400000>; + regulator-always-on; + }; + + reg_wifi_3v3: regulator-wifi-3v3 { + compatible = "regulator-fixed"; + regulator-name = "3V3_WIFI"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + sound { + compatible = "simple-audio-card"; + pinctrl-0 = <&pinctrl_hp>; + simple-audio-card,name = "Librem 5"; + simple-audio-card,format = "i2s"; + simple-audio-card,widgets = + "Headphone", "Headphones", + "Microphone", "Headset Mic", + "Microphone", "Digital Mic", + "Speaker", "Speaker"; + simple-audio-card,routing = + "Headphones", "HPOUTL", + "Headphones", "HPOUTR", + "Speaker", "SPKOUTL", + "Speaker", "SPKOUTR", + "Headset Mic", "MICBIAS", + "IN3R", "Headset Mic", + "DMICDAT", "Digital Mic"; + simple-audio-card,hp-det-gpio = <&gpio3 9 GPIO_ACTIVE_HIGH>; + + simple-audio-card,cpu { + sound-dai = <&sai2>; + }; + + simple-audio-card,codec { + sound-dai = <&codec>; + clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>; + frame-master; + bitclock-master; + }; + }; + + sound-wwan { + compatible = "simple-audio-card"; + simple-audio-card,name = "Modem"; + simple-audio-card,format = "i2s"; + + simple-audio-card,cpu { + sound-dai = <&sai6>; + frame-inversion; + }; + + simple-audio-card,codec { + sound-dai = <&bm818_codec>; + frame-master; + bitclock-master; + }; + }; + + bm818_codec: sound-wwan-codec { + compatible = "broadmobi,bm818", "option,gtm601"; + #sound-dai-cells = <0>; + }; + + vibrator { + compatible = "pwm-vibrator"; + pwms = <&pwm1 0 1000000000 0>; + pwm-names = "enable"; + vcc-supply = <®_vdd_3v3>; + }; +}; + +&A53_0 { + cpu-supply = <&buck2_reg>; +}; + +&A53_1 { + cpu-supply = <&buck2_reg>; +}; + +&A53_2 { + cpu-supply = <&buck2_reg>; +}; + +&A53_3 { + cpu-supply = <&buck2_reg>; +}; + +&ddrc { + operating-points-v2 = <&ddrc_opp_table>; + + ddrc_opp_table: ddrc-opp-table { + compatible = "operating-points-v2"; + + opp-25M { + opp-hz = /bits/ 64 <25000000>; + }; + + opp-100M { + opp-hz = /bits/ 64 <100000000>; + }; + + opp-800M { + opp-hz = /bits/ 64 <800000000>; + }; + }; +}; + +&dphy { + status = "okay"; +}; + +&ecspi1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ecspi1>; + cs-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + nor_flash: flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +&gpio1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pmic_5v>; + + pmic-5v { + gpio-hog; + gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>; + input; + }; +}; + +&iomuxc { + pinctrl_audiopwr: audiopwrgrp { + fsl,pins = < + /* AUDIO_POWER_EN_3V3 */ + MX8MQ_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x83 + >; + }; + + pinctrl_bl: blgrp { + fsl,pins = < + /* BACKLINGE_EN */ + MX8MQ_IOMUXC_NAND_DQS_GPIO3_IO14 0x83 + >; + }; + + pinctrl_charger_in: chargeringrp { + fsl,pins = < + /* CHRG_INT */ + MX8MQ_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x00 + /* CHG_STATUS_B */ + MX8MQ_IOMUXC_NAND_ALE_GPIO3_IO0 0x80 + >; + }; + + pinctrl_dsibiasen: dsibiasengrp { + fsl,pins = < + /* DSI_BIAS_EN */ + MX8MQ_IOMUXC_ENET_TD1_GPIO1_IO20 0x83 + >; + }; + + pinctrl_dsien: dsiengrp { + fsl,pins = < + /* DSI_EN_3V3 */ + MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x83 + >; + }; + + pinctrl_ecspi1: spi1grp { + fsl,pins = < + MX8MQ_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI 0x83 + MX8MQ_IOMUXC_ECSPI1_MISO_ECSPI1_MISO 0x83 + MX8MQ_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x19 + MX8MQ_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK 0x83 + >; + }; + + pinctrl_gauge: gaugegrp { + fsl,pins = < + /* BAT_LOW */ + MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20 0x80 + >; + }; + + pinctrl_gnsspwr: gnsspwrgrp { + fsl,pins = < + /* GPS3V3_EN */ + MX8MQ_IOMUXC_NAND_DATA06_GPIO3_IO12 0x83 + >; + }; + + pinctrl_haptic: hapticgrp { + fsl,pins = < + /* MOTO */ + MX8MQ_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT 0x83 + >; + }; + + pinctrl_hp: hpgrp { + fsl,pins = < + /* HEADPHONE_DET_1V8 */ + MX8MQ_IOMUXC_NAND_DATA03_GPIO3_IO9 0x180 + >; + }; + + pinctrl_hub_pwr: hubpwrgrp { + fsl,pins = < + /* HUB_PWR_3V3_EN */ + MX8MQ_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x83 + >; + }; + + pinctrl_i2c1: i2c1grp { + fsl,pins = < + MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x40000026 + MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x40000026 + >; + }; + + pinctrl_i2c2: i2c2grp { + fsl,pins = < + MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x40000026 + MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x40000026 + >; + }; + + pinctrl_i2c3: i2c3grp { + fsl,pins = < + MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x40000026 + MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x40000026 + >; + }; + + pinctrl_i2c4: i2c4grp { + fsl,pins = < + MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL 0x40000026 + MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA 0x40000026 + >; + }; + + pinctrl_keys: keysgrp { + fsl,pins = < + /* VOL- */ + MX8MQ_IOMUXC_ENET_MDIO_GPIO1_IO17 0x01C0 + /* VOL+ */ + MX8MQ_IOMUXC_ENET_MDC_GPIO1_IO16 0x01C0 + >; + }; + + pinctrl_led_b: ledbgrp { + fsl,pins = < + /* LED_B */ + MX8MQ_IOMUXC_GPIO1_IO13_PWM2_OUT 0x06 + >; + }; + + pinctrl_led_g: ledggrp { + fsl,pins = < + /* LED_G */ + MX8MQ_IOMUXC_SAI3_MCLK_PWM4_OUT 0x06 + >; + }; + + pinctrl_led_r: ledrgrp { + fsl,pins = < + /* LED_R */ + MX8MQ_IOMUXC_SPDIF_TX_PWM3_OUT 0x06 + >; + }; + + pinctrl_mag: maggrp { + fsl,pins = < + /* INT_MAG */ + MX8MQ_IOMUXC_SAI5_RXD1_GPIO3_IO22 0x80 + >; + }; + + pinctrl_pmic: pmicgrp { + fsl,pins = < + /* PMIC_NINT */ + MX8MQ_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x80 + >; + }; + + pinctrl_pmic_5v: pmic5vgrp { + fsl,pins = < + /* PMIC_5V */ + MX8MQ_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x80 + >; + }; + + pinctrl_prox: proxgrp { + fsl,pins = < + /* INT_LIGHT */ + MX8MQ_IOMUXC_NAND_DATA01_GPIO3_IO7 0x80 + >; + }; + + pinctrl_rtc: rtcgrp { + fsl,pins = < + /* RTC_INT */ + MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x80 + >; + }; + + pinctrl_sai2: sai2grp { + fsl,pins = < + MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6 + MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6 + MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6 + MX8MQ_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6 + MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6 + >; + }; + + pinctrl_sai6: sai6grp { + fsl,pins = < + MX8MQ_IOMUXC_SAI1_RXD5_SAI6_RX_DATA0 0xd6 + MX8MQ_IOMUXC_SAI1_RXD6_SAI6_RX_SYNC 0xd6 + MX8MQ_IOMUXC_SAI1_TXD4_SAI6_RX_BCLK 0xd6 + MX8MQ_IOMUXC_SAI1_TXD5_SAI6_TX_DATA0 0xd6 + >; + }; + + pinctrl_tcpc: tcpcgrp { + fsl,pins = < + /* TCPC_INT */ + MX8MQ_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x01C0 + >; + }; + + pinctrl_typec: typecgrp { + fsl,pins = < + /* TYPEC_MUX_EN */ + MX8MQ_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x83 + >; + }; + + pinctrl_uart1: uart1grp { + fsl,pins = < + MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x49 + MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x49 + >; + }; + + pinctrl_uart2: uart2grp { + fsl,pins = < + MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x49 + MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x49 + >; + }; + + pinctrl_uart3: uart3grp { + fsl,pins = < + MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x49 + MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x49 + >; + }; + + pinctrl_uart4: uart4grp { + fsl,pins = < + MX8MQ_IOMUXC_ECSPI2_SCLK_UART4_DCE_RX 0x49 + MX8MQ_IOMUXC_ECSPI2_MOSI_UART4_DCE_TX 0x49 + MX8MQ_IOMUXC_ECSPI2_MISO_UART4_DCE_CTS_B 0x49 + MX8MQ_IOMUXC_ECSPI2_SS0_UART4_DCE_RTS_B 0x49 + >; + }; + + pinctrl_usdhc1: usdhc1grp { + fsl,pins = < + MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83 + MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3 + MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3 + MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3 + MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3 + MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3 + MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3 + MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3 + MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3 + MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3 + MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83 + MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc1_100mhz: usdhc1grp100mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d + MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd + MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd + MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd + MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd + MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd + MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd + MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd + MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd + MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd + MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x8d + MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc1_200mhz: usdhc1grp200mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f + MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf + MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf + MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf + MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf + MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf + MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf + MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf + MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf + MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf + MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x9f + MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc2: usdhc2grp { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x80 + MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83 + MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3 + MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3 + MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3 + MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3 + MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3 + MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc2_100mhz: usdhc2grp100mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x80 + MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x8d + MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xcd + MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xcd + MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xcd + MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xcd + MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xcd + MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0xc1 + >; + }; + + pinctrl_usdhc2_200mhz: usdhc2grp200mhz { + fsl,pins = < + MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x80 + MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x9f + MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xcf + MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xcf + MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xcf + MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xcf + MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xcf + MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0xc1 + >; + }; + + pinctrl_wdog: wdoggrp { + fsl,pins = < + /* nWDOG */ + MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x1f + >; + }; +}; + +&i2c1 { + clock-frequency = <387000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c1>; + status = "okay"; + + typec_pd: usb-pd@3f { + compatible = "ti,tps6598x"; + reg = <0x3f>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_typec>, <&pinctrl_tcpc>; + interrupt-parent = <&gpio1>; + interrupts = <10 IRQ_TYPE_LEVEL_LOW>; + + connector { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + usb_con_hs: endpoint { + remote-endpoint = <&typec_hs>; + }; + }; + + port@1 { + reg = <1>; + + usb_con_ss: endpoint { + remote-endpoint = <&typec_ss>; + }; + }; + }; + }; + }; + + pmic: pmic@4b { + compatible = "rohm,bd71837"; + reg = <0x4b>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pmic>; + clocks = <&pmic_osc>; + clock-names = "osc"; + clock-output-names = "pmic_clk"; + interrupt-parent = <&gpio1>; + interrupts = <7 GPIO_ACTIVE_LOW>; + interrupt-names = "irq"; + rohm,reset-snvs-powered; + + regulators { + buck1_reg: BUCK1 { + regulator-name = "BUCK1"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1300000>; + regulator-ramp-delay = <1250>; + rohm,dvs-run-voltage = <900000>; + rohm,dvs-idle-voltage = <850000>; + rohm,dvs-suspend-voltage = <800000>; + regulator-always-on; + }; + + buck2_reg: BUCK2 { + regulator-name = "BUCK2"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1300000>; + regulator-ramp-delay = <1250>; + rohm,dvs-run-voltage = <1000000>; + rohm,dvs-idle-voltage = <900000>; + regulator-always-on; + }; + + buck3_reg: BUCK3 { + regulator-name = "BUCK3"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1300000>; + rohm,dvs-run-voltage = <900000>; + regulator-always-on; + }; + + buck4_reg: BUCK4 { + regulator-name = "BUCK4"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1300000>; + rohm,dvs-run-voltage = <1000000>; + }; + + buck5_reg: BUCK5 { + regulator-name = "BUCK5"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + }; + + buck6_reg: BUCK6 { + regulator-name = "BUCK6"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + buck7_reg: BUCK7 { + regulator-name = "BUCK7"; + regulator-min-microvolt = <1605000>; + regulator-max-microvolt = <1995000>; + regulator-always-on; + }; + + buck8_reg: BUCK8 { + regulator-name = "BUCK8"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1400000>; + regulator-always-on; + }; + + ldo1_reg: LDO1 { + regulator-name = "LDO1"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3300000>; + /* leave on for snvs power button */ + regulator-always-on; + }; + + ldo2_reg: LDO2 { + regulator-name = "LDO2"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + /* leave on for snvs power button */ + regulator-always-on; + }; + + ldo3_reg: LDO3 { + regulator-name = "LDO3"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + ldo4_reg: LDO4 { + regulator-name = "LDO4"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + ldo5_reg: LDO5 { + /* VDD_PHY_0V9 - MIPI and HDMI domains */ + regulator-name = "LDO5"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + ldo6_reg: LDO6 { + /* VDD_PHY_0V9 - MIPI, HDMI and USB domains */ + regulator-name = "LDO6"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + ldo7_reg: LDO7 { + /* VDD_PHY_3V3 - USB domain */ + regulator-name = "LDO7"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + }; + }; + + rtc@68 { + compatible = "microcrystal,rv4162"; + reg = <0x68>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rtc>; + interrupt-parent = <&gpio1>; + interrupts = <9 IRQ_TYPE_LEVEL_LOW>; + }; +}; + +&i2c2 { + clock-frequency = <387000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c2>; + status = "okay"; + + magnetometer@1e { + compatible = "st,lsm9ds1-magn"; + reg = <0x1e>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_mag>; + interrupt-parent = <&gpio3>; + interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; + vdd-supply = <®_vdd_sen>; + vddio-supply = <®_vdd_1v8>; + }; + + regulator@3e { + compatible = "tps65132"; + reg = <0x3e>; + + outp { + regulator-name = "LCD_AVDD"; + vin-supply = <®_lcd_3v4>; + }; + + outn { + regulator-name = "LCD_AVEE"; + vin-supply = <®_lcd_3v4>; + }; + }; + + flash@53 { + compatible = "lm3560"; + reg = <0x53>; + #address-cells = <1>; + #size-cells = <0>; + flash@0 { + reg = <0x0>; + flash-timeout-us = <150000>; + flash-max-microamp = <320000>; + led-max-microamp = <60000>; + label = "flash"; + }; + + torch@1 { + reg = <0x1>; + led-max-microamp = <10000>; + label = "torch"; + }; + + }; + + prox@60 { + compatible = "vishay,vcnl4040"; + reg = <0x60>; + pinctrl-0 = <&pinctrl_prox>; + interrupt-parent = <&gpio3>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; + }; + + accel_gyro: accel-gyro@6a { + compatible = "st,lsm9ds1-imu"; + reg = <0x6a>; + vdd-supply = <®_vdd_sen>; + vddio-supply = <®_vdd_1v8>; + }; +}; + +&i2c3 { + clock-frequency = <387000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3>; + status = "okay"; + + codec: audio-codec@1a { + compatible = "wlf,wm8962"; + reg = <0x1a>; // 0x4a is the test address + clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>; + assigned-clocks = <&clk IMX8MQ_CLK_SAI2>; + assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>; + assigned-clock-rates = <24576000>; + #sound-dai-cells = <0>; + mic-cfg = <0x200>; + DCVDD-supply = <®_aud_1v8>; + DBVDD-supply = <®_aud_1v8>; + AVDD-supply = <®_aud_1v8>; + CPVDD-supply = <®_aud_1v8>; + MICVDD-supply = <®_aud_1v8>; + PLLVDD-supply = <®_aud_1v8>; + SPKVDD1-supply = <®_vsys_3v4>; + SPKVDD2-supply = <®_vsys_3v4>; + gpio-cfg = < + 0x0000 /* n/c */ + 0x0001 /* gpio2, 1: default */ + 0x0013 /* gpio3, 2: dmicclk */ + 0x0000 /* n/c, 3: default */ + 0x8014 /* gpio5, 4: dmic_dat */ + 0x0000 /* gpio6, 5: default */ + >; + }; + + backlight@36 { + compatible = "ti,lm36922"; + reg = <0x36>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_bl>; + #address-cells = <1>; + #size-cells = <0>; + enable-gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>; + vled-supply = <®_vsys_3v4>; + ti,ovp-microvolt = <25000000>; + + led_backlight: led@0 { + reg = <0>; + label = ":backlight"; + linux,default-trigger = "backlight"; + led-max-microamp = <20000>; + }; + }; + + touchscreen@38 { + compatible = "edt,edt-ft5506"; + reg = <0x38>; + interrupt-parent = <&gpio1>; + interrupts = <27 IRQ_TYPE_EDGE_FALLING>; + touchscreen-size-x = <720>; + touchscreen-size-y = <1440>; + }; +}; + +&i2c4 { + clock-frequency = <387000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c4>; + status = "okay"; + + bat: fuel-gauge@36 { + compatible = "maxim,max17055"; + reg = <0x36>; + interrupt-parent = <&gpio3>; + interrupts = <20 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gauge>; + maxim,over-heat-temp = <700>; + maxim,over-volt = <4500>; + maxim,rsns-microohm = <5000>; + }; + + bq25895: charger@6a { + compatible = "ti,bq25895", "ti,bq25890"; + reg = <0x6a>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_charger_in>; + interrupt-parent = <&gpio3>; + interrupts = <3 IRQ_TYPE_EDGE_FALLING>; + phys = <&usb3_phy0>; + ti,precharge-current = <130000>; /* uA */ + ti,minimum-sys-voltage = <3700000>; /* uV */ + ti,boost-voltage = <5000000>; /* uV */ + ti,boost-max-current = <500000>; /* uA */ + ti,use-vinmin-threshold = <1>; /* enable VINDPM */ + ti,vinmin-threshold = <3900000>; /* uV */ + monitored-battery = <&bat>; + }; +}; + +&pgc_gpu { + power-supply = <&buck3_reg>; +}; + +&pgc_mipi { + power-supply = <&ldo5_reg>; +}; + +&pgc_vpu { + power-supply = <&buck4_reg>; +}; + +&pwm1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_haptic>; + status = "okay"; +}; + +&pwm2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_led_b>; + status = "okay"; +}; + +&pwm3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_led_g>; + status = "okay"; +}; + +&pwm4 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_led_r>; + status = "okay"; +}; + +&sai2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai2>; + assigned-clocks = <&clk IMX8MQ_CLK_SAI2>; + assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>; + assigned-clock-rates = <24576000>; + assigned-clocks = <&clk IMX8MQ_AUDIO_PLL1>, <&clk IMX8MQ_AUDIO_PLL2>; + assigned-clock-rates = <786432000>, <722534400>; + status = "okay"; +}; + +&sai6 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai6>; + assigned-clocks = <&clk IMX8MQ_CLK_SAI6>; + assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>; + assigned-clock-rates = <24576000>; + fsl,sai-synchronous-rx; + status = "okay"; +}; + +&snvs_pwrkey { + status = "okay"; +}; + +&snvs_rtc { + status = "disabled"; +}; + +&uart1 { /* console */ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart1>; + status = "okay"; +}; + +&uart2 { /* TPS - GPS - DEBUG */ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart2>; + status = "okay"; + + gnss { + compatible = "globaltop,pa6h"; + vcc-supply = <®_gnss>; + current-speed = <9600>; + }; +}; + +&uart3 { /* SMC */ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart3>; + status = "okay"; +}; + +&uart4 { /* BT */ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart4>; + uart-has-rtscts; + status = "okay"; +}; + +&usb3_phy0 { + status = "okay"; +}; + +&usb3_phy1 { + vbus-supply = <®_hub>; + status = "okay"; +}; + +&usb_dwc3_0 { + #address-cells = <1>; + #size-cells = <0>; + dr_mode = "otg"; + snps,dis_u3_susphy_quirk; + status = "okay"; + + port@0 { + reg = <0>; + + typec_hs: endpoint { + remote-endpoint = <&usb_con_hs>; + }; + }; + + port@1 { + reg = <1>; + + typec_ss: endpoint { + remote-endpoint = <&usb_con_ss>; + }; + }; +}; + +&usb_dwc3_1 { + dr_mode = "host"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + + /* Microchip USB2642 */ + hub@1 { + compatible = "usb424,2640"; + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + mass-storage@1 { + compatible = "usb424,4041"; + reg = <1>; + }; + }; +}; + +&usdhc1 { + pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc1>; + pinctrl-1 = <&pinctrl_usdhc1_100mhz>; + pinctrl-2 = <&pinctrl_usdhc1_200mhz>; + bus-width = <8>; + vmmc-supply = <®_vdd_3v3>; + power-supply = <®_vdd_1v8>; + non-removable; + status = "okay"; +}; + +&usdhc2 { + pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc2>; + pinctrl-1 = <&pinctrl_usdhc2_100mhz>; + pinctrl-2 = <&pinctrl_usdhc2_200mhz>; + bus-width = <4>; + vmmc-supply = <®_wifi_3v3>; + cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; + disable-wp; + cap-sdio-irq; + keep-power-in-suspend; + wakeup-source; + status = "okay"; +}; + +&wdog1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_wdog>; + fsl,ext-reset-output; + status = "okay"; +}; -- 2.20.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=-10.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 4D0FAC433E2 for ; Tue, 21 Jul 2020 15:39:26 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 E9B3920702 for ; Tue, 21 Jul 2020 15:39:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SR9ETQje" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E9B3920702 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=puri.sm 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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=ARYcQ+2cJb8xlraxEf5GZF7qbiNBVr1BWZoBz/rXg5s=; b=SR9ETQjeZo9/RECBmNgJdyrTm6 r5QpITUDffsMmRIFfxLQSmae3tfRmMYXWv5AkbCkDhUU7DznTfUZFO0HmZWUH4+D54VMWq1xvgMdi wOIT7AxY2gylZCnAXvFrsQsvdKlzUl0OY8hMUSuHCfs175JqsTzmIv1/OXJql875SOat5rz8hrImK OOye2tza4rGsM2SRW14azR2stp7S1ZwYkSX57JqdlRFoCsQ7oz/dn5tpFwLzkFWjjJ85vu7pfPv/u sxGCIHrXGzkOLCYxWpgtsfb92VTIzKjuqAyO2aJ0sz6ljtvV3nDryqxcjuQJVypPc6BABHSnHmB4K 0uWcbaLQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxuKl-0005Pk-8W; Tue, 21 Jul 2020 15:37:35 +0000 Received: from comms.puri.sm ([159.203.221.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxuKe-0005Ol-Lo for linux-arm-kernel@lists.infradead.org; Tue, 21 Jul 2020 15:37:30 +0000 Received: from localhost (localhost [127.0.0.1]) by comms.puri.sm (Postfix) with ESMTP id 1BB38E1005; Tue, 21 Jul 2020 08:36:54 -0700 (PDT) Received: from comms.puri.sm ([127.0.0.1]) by localhost (comms.puri.sm [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id clEMmWEDCvnn; Tue, 21 Jul 2020 08:36:51 -0700 (PDT) From: Martin Kepplinger To: robh@kernel.org, kernel@puri.sm, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, mchehab@kernel.org, Anson.Huang@nxp.com, agx@sigxcpu.org, angus@akkea.ca, broonie@kernel.org Subject: [PATCH v4 1/3] arm64: dts: Add a device tree for the Librem 5 phone Date: Tue, 21 Jul 2020 17:32:23 +0200 Message-Id: <20200721153225.7593-1-martin.kepplinger@puri.sm> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200721_113728_849309_38D939A6 X-CRM114-Status: GOOD ( 14.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Daniel Baluta , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Martin Kepplinger MIME-Version: 1.0 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 RnJvbTogIkFuZ3VzIEFpbnNsaWUgKFB1cmlzbSkiIDxhbmd1c0Bha2tlYS5jYT4KCkFkZCBhIGRl dmljZXRyZWUgZGVzY3JpcHRpb24gZm9yIHRoZSBMaWJyZW0gNSBwaG9uZS4gNCBoYXJkd2FyZSBy ZXZpc2lvbnMKaGF2ZSBiZWVuIGF2YWlsYWJsZS4gU29tZSByZXZpc2lvbnMgaW5jbHVkZSBjaGFu Z2VzIHRoYXQgbmVlZCBkaWZmZXJlbnQKc29mdHdhcmUgdG8gYmUgcnVuLiBTbyBmYXIsIHIzICgi RG9nd29vZCIpIGlzIG9uZSBzdWNoIGV4YW1wbGUsIHNlZToKCgkiQXNwZW4iCQlyMAlub3Qgc3Vw cG9ydGVkICh2ZXJ5IGZldyBkZXZpY2VzIGV4aXN0KQoJIkJpcmNoIgkJcjEJc3VwcG9ydGVkIGJ5 IHIyCgkiQ2hlc3RudXQiCXIyCWFkZGVkIGJ5IHRoaXMgcGF0Y2gKCSJEb2d3b29kIglyMwlhZGRl ZCBieSB0aGlzIHBhdGNoCgkiRXZlcmdyZWVuIglyNAl0YmEgLyBtb3N0IGxpa2VseSBzdXBwb3J0 ZWQgYnkgcjMKClNlZSBodHRwczovL3B1cmkuc20vcHJvZHVjdHMvbGlicmVtLTUvIGZvciBtb3Jl IGluZm9ybWF0aW9uLgoKVGhpcyBib290cyB0byBhIHdvcmtpbmcgY29uc29sZSB3aXRoIHdvcmtp bmcgV1dBTiBtb2RlbSwgd2lmaSB1c2RoYywKSU1VIHNlbnNvciBkZXZpY2UsIHByb3hpbWl0eSBz ZW5zb3IsIGhhcHRpYyBtb3RvciwgZ3BpbyBrZXlzLCBHTlNTIGFuZCBMRURzLgoKU2lnbmVkLW9m Zi1ieTogTWFydGluIEtlcHBsaW5nZXIgPG1hcnRpbi5rZXBwbGluZ2VyQHB1cmkuc20+ClNpZ25l ZC1vZmYtYnk6IEFuZ3VzIEFpbnNsaWUgKFB1cmlzbSkgPGFuZ3VzQGFra2VhLmNhPgpTaWduZWQt b2ZmLWJ5OiBHdWlkbyBHw7xudGhlciA8YWd4QHNpZ3hjcHUub3JnPgpGb3IgYXVkaW8gcmVsYXRl ZCBwYXJ0OgpSZXZpZXdlZC1ieTogRGFuaWVsIEJhbHV0YSA8ZGFuaWVsLmJhbHV0YUBueHAuY29t PgotLS0KCgpyZXZpc2lvbiBoaXN0b3J5Ci0tLS0tLS0tLS0tLS0tLS0KdjQ6CnRoYW5rcyBhIGxv dCBTaGF3biBmb3IgcmV2aWV3aW5nLiBjaGFuZ2VzIHNpbmNlIHYzOgogKiByZW5hbWUgdG8gZHRz aSBhbmQgc3BsaXQgb3V0IHIyIGFuZCByMyBkdHMgd2l0aCByZXZpc2lvbiBzcGVjaWZpY3MKICog YWRkIHRoZSBVU0IyNjQyIGhhcmQtd2lyZWQgSHViCiAqIGZpeCBjaGFyZ2UgY29udHJvbGxlciBi b29zdC1tYXgtY3VycmVudAogKiBkaXNhYmxlIHB1bGx1cCBvbiBDSFJHX0lOVCAobm90IG5lZWRl ZCBkdWUgdG8gZXh0ZXJuYWwgb25lKQogKiBhZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGJvYXJk cycgY29tcGF0aWJsZSBzdHJpbmdzCiAqIGZpeCBsZWQtYmFja2xpZ2h0IHByb3BlcnkgdXNhZ2UK ICogY29kaW5nIHN0eWxlIGZpeGVzCgp2MzoKdGhhbmtzIGEgbG90IE1hcmsgZm9yIHJldmlld2lu ZyEgY2hhbmdlcyBzaW5jZSB2MjoKICogbmljZXIgYXVkaW8gY2FyZHMgbmFtZXMKICogc3F1YXNo IHVubmVlZGVkIGF1ZGlvX3B3ciByZWd1bGF0b3IKICogcmVtb3ZlIHRoZSBzdXNwaHlfcXVpcmsg ZnJvbSBkd2MzXzEgYWZ0ZXIgbW9yZSB0ZXN0aW5nCiAqIGFkZCB1c2RoYzIgY2FyZCBkZXRlY3Qg dmlhIGdwaW8KICogYWRkIGhlYWRwaG9uZSBkZXRlY3QgZm9yIGF1ZGlvIGNhcmQKaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGludXgtYXJtLWtlcm5lbC8yMDIwMDYxNzA3MzgyMS4xNjczNy0xLW1h cnRpbi5rZXBwbGluZ2VyQHB1cmkuc20vVC8KCnYyOgp0aGFua3MgYSBsb3QgTWFyY28sIERhbmll bCBhbmQgUGF2ZWwgZm9yIHJldmlld2luZy4gY2hhbmdlcyBzaW5jZSB2MToKICogYWxwaGFiZXRp Y2FsIHNvcnRpbmdzIC8gbW9yZSBjb25zaXN0ZW50IG5vZGUgbmFtZXMKICogcmVtb3ZlIHVudXNl ZCByZWd1bGF0b3IgYW5kIHBpbmN0cmwgZGVzY3JpcHRpb25zCiAqIGdlbmVyaWMgbGFiZWxzIGZv ciBsZWRzLCBiYWNrbGlnaHQsIGZsYXNoIGFuZCB0b3JjaAogKiBhdWRpbyBjbGsgc2V0dGluZ3Mg bW92ZWQgdG8gc2FpMiBub2RlCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWFybS1rZXJu ZWwvMjAyMDA2MDQwODQ3NTYuNTg2LTEtbWFydGluLmtlcHBsaW5nZXJAcHVyaS5zbS9ULwoKdjE6 Cmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWFybS1rZXJuZWwvMjAyMDA1MTQxNTU3Mzcu MTIxNjAtMS1tYXJ0aW4ua2VwcGxpbmdlckBwdXJpLnNtLwoKCgogYXJjaC9hcm02NC9ib290L2R0 cy9mcmVlc2NhbGUvTWFrZWZpbGUgICAgICAgIHwgICAgMiArCiAuLi4vYm9vdC9kdHMvZnJlZXNj YWxlL2lteDhtcS1saWJyZW01LXIyLmR0cyAgfCAgIDI2ICsKIC4uLi9ib290L2R0cy9mcmVlc2Nh bGUvaW14OG1xLWxpYnJlbTUtcjMuZHRzICB8ICAgMjQgKwogLi4uL2Jvb3QvZHRzL2ZyZWVzY2Fs ZS9pbXg4bXEtbGlicmVtNS5kdHNpICAgIHwgMTE0NiArKysrKysrKysrKysrKysrKwogNCBmaWxl cyBjaGFuZ2VkLCAxMTk4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtbGlicmVtNS1yMi5kdHMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtbGlicmVtNS1yMy5k dHMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4 bXEtbGlicmVtNS5kdHNpCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2Nh bGUvTWFrZWZpbGUgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9NYWtlZmlsZQppbmRl eCBhMzlmMGExNzIzZTAuLjk3MzM1MjA1YjYwMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290 L2R0cy9mcmVlc2NhbGUvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2Nh bGUvTWFrZWZpbGUKQEAgLTM1LDYgKzM1LDggQEAgZHRiLSQoQ09ORklHX0FSQ0hfTVhDKSArPSBp bXg4bXAtZXZrLmR0YgogZHRiLSQoQ09ORklHX0FSQ0hfTVhDKSArPSBpbXg4bXEtZXZrLmR0Ygog ZHRiLSQoQ09ORklHX0FSQ0hfTVhDKSArPSBpbXg4bXEtaHVtbWluZ2JvYXJkLXB1bHNlLmR0Ygog ZHRiLSQoQ09ORklHX0FSQ0hfTVhDKSArPSBpbXg4bXEtbGlicmVtNS1kZXZraXQuZHRiCitkdGIt JChDT05GSUdfQVJDSF9NWEMpICs9IGlteDhtcS1saWJyZW01LXIyLmR0YgorZHRiLSQoQ09ORklH X0FSQ0hfTVhDKSArPSBpbXg4bXEtbGlicmVtNS1yMy5kdGIKIGR0Yi0kKENPTkZJR19BUkNIX01Y QykgKz0gaW14OG1xLW5pdHJvZ2VuLmR0YgogZHRiLSQoQ09ORklHX0FSQ0hfTVhDKSArPSBpbXg4 bXEtcGhhbmJlbGwuZHRiCiBkdGItJChDT05GSUdfQVJDSF9NWEMpICs9IGlteDhtcS1waWNvLXBp LmR0YgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLWxp YnJlbTUtcjIuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLWxpYnJl bTUtcjIuZHRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWYzNGI2 M2NkNGQyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUv aW14OG1xLWxpYnJlbTUtcjIuZHRzCkBAIC0wLDAgKzEsMjYgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiAoR1BMLTIuMCsgT1IgTUlUKQorLy8gQ29weXJpZ2h0IChDKSAyMDIwIFB1cmlz bSBTUEMgPGtlcm5lbEBwdXJpLnNtPgorLy8KKy8vIExpYnJlbSA1IENoZXN0bnV0CisKKy9kdHMt djEvOworCisjaW5jbHVkZSAiaW14OG1xLWxpYnJlbTUuZHRzaSIKKworLyB7CisJbW9kZWwgPSAi UHVyaXNtIExpYnJlbSA1cjIiOworCWNvbXBhdGlibGUgPSAicHVyaXNtLGxpYnJlbTVyMiIsICJw dXJpc20sbGlicmVtNSIsICJmc2wsaW14OG1xIjsKK307CisKKyZicTI1ODk1IHsKKwl0aSxiYXR0 ZXJ5LXJlZ3VsYXRpb24tdm9sdGFnZSA9IDw0MTkyMDAwPjsgLyogdVYgKi8KKwl0aSxjaGFyZ2Ut Y3VycmVudCA9IDwxNjAwMDAwPjsgLyogdUEgKi8KKwl0aSx0ZXJtaW5hdGlvbi1jdXJyZW50ID0g PDY2MDAwPjsgIC8qIHVBICovCit9OworCismYWNjZWxfZ3lybyB7CisJbW91bnQtbWF0cml4ID0g ICIxIiwgICIwIiwgICIwIiwKKwkJCSIwIiwgIi0xIiwgICIwIiwKKwkJCSIwIiwgICIwIiwgICIx IjsKK307CisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDht cS1saWJyZW01LXIzLmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS1s aWJyZW01LXIzLmR0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0 MDI3YmE0NzU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNj YWxlL2lteDhtcS1saWJyZW01LXIzLmR0cwpAQCAtMCwwICsxLDI0IEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIE1JVCkKKy8vIENvcHlyaWdodCAoQykgMjAyMCBQ dXJpc20gU1BDIDxrZXJuZWxAcHVyaS5zbT4KKworL2R0cy12MS87CisKKyNpbmNsdWRlICJpbXg4 bXEtbGlicmVtNS5kdHNpIgorCisvIHsKKwltb2RlbCA9ICJQdXJpc20gTGlicmVtIDVyMyI7CisJ Y29tcGF0aWJsZSA9ICJwdXJpc20sbGlicmVtNXIzIiwgInB1cmlzbSxsaWJyZW01IiwgImZzbCxp bXg4bXEiOworfTsKKworJmJxMjU4OTUgeworCXRpLGJhdHRlcnktcmVndWxhdGlvbi12b2x0YWdl ID0gPDQyMDAwMDA+OyAvKiB1ViAqLworCXRpLGNoYXJnZS1jdXJyZW50ID0gPDE1MDAwMDA+OyAv KiB1QSAqLworCXRpLHRlcm1pbmF0aW9uLWN1cnJlbnQgPSA8MTQ0MDAwPjsgIC8qIHVBICovCit9 OworCismYWNjZWxfZ3lybyB7CisJbW91bnQtbWF0cml4ID0gICIxIiwgICIwIiwgICIwIiwKKwkJ CSIwIiwgICIxIiwgICIwIiwKKwkJCSIwIiwgICIwIiwgIi0xIjsKK307CisKZGlmZiAtLWdpdCBh L2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS1saWJyZW01LmR0c2kgYi9hcmNo L2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXEtbGlicmVtNS5kdHNpCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmUyMjE1ZTQ1NjEzCi0tLSAvZGV2L251bGwK KysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1xLWxpYnJlbTUuZHRzaQpA QCAtMCwwICsxLDExNDYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwor LyoKKyAqIENvcHlyaWdodCAyMDE4LTIwMjAgUHVyaXNtIFNQQworICovCisKKy9kdHMtdjEvOwor CisjaW5jbHVkZSAiZHQtYmluZGluZ3MvaW5wdXQvaW5wdXQuaCIKKyNpbmNsdWRlICJkdC1iaW5k aW5ncy9wd20vcHdtLmgiCisjaW5jbHVkZSAiZHQtYmluZGluZ3MvdXNiL3BkLmgiCisjaW5jbHVk ZSAiaW14OG1xLmR0c2kiCisKKy8geworCW1vZGVsID0gIlB1cmlzbSBMaWJyZW0gNSI7CisJY29t cGF0aWJsZSA9ICJwdXJpc20sbGlicmVtNSIsICJmc2wsaW14OG1xIjsKKworCWJhY2tsaWdodF9k c2k6IGJhY2tsaWdodC1kc2kgeworCQljb21wYXRpYmxlID0gImxlZC1iYWNrbGlnaHQiOworCQls ZWRzID0gPCZsZWRfYmFja2xpZ2h0PjsKKwl9OworCisJcG1pY19vc2M6IGNsb2NrLXBtaWMgewor CQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQlj bG9jay1mcmVxdWVuY3kgPSA8MzI3Njg+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicG1pY19v c2MiOworCX07CisKKwljaG9zZW4geworCQlzdGRvdXQtcGF0aCA9ICZ1YXJ0MTsKKwl9OworCisJ Z3Bpby1rZXlzIHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWtleXMiOworCQlwaW5jdHJsLW5hbWVz ID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfa2V5cz47CisKKwkJdm9sLWRv d24geworCQkJbGFiZWwgPSAiVk9MX0RPV04iOworCQkJZ3Bpb3MgPSA8JmdwaW8xIDE3IEdQSU9f QUNUSVZFX0xPVz47CisJCQlsaW51eCxjb2RlID0gPEtFWV9WT0xVTUVET1dOPjsKKwkJfTsKKwor CQl2b2wtdXAgeworCQkJbGFiZWwgPSAiVk9MX1VQIjsKKwkJCWdwaW9zID0gPCZncGlvMSAxNiBH UElPX0FDVElWRV9MT1c+OworCQkJbGludXgsY29kZSA9IDxLRVlfVk9MVU1FVVA+OworCQl9Owor CX07CisKKwlwd21sZWRzIHsKKwkJY29tcGF0aWJsZSA9ICJwd20tbGVkcyI7CisKKwkJYmx1ZSB7 CisJCQlsYWJlbCA9ICJibHVlOnN0YXR1cyI7CisJCQltYXgtYnJpZ2h0bmVzcyA9IDwyNDg+Owor CQkJcHdtcyA9IDwmcHdtMiAwIDUwMDAwPjsKKwkJfTsKKworCQlncmVlbiB7CisJCQlsYWJlbCA9 ICJncmVlbjpzdGF0dXMiOworCQkJbWF4LWJyaWdodG5lc3MgPSA8MjQ4PjsKKwkJCXB3bXMgPSA8 JnB3bTQgMCA1MDAwMD47CisJCX07CisKKwkJcmVkIHsKKwkJCWxhYmVsID0gInJlZDpzdGF0dXMi OworCQkJbWF4LWJyaWdodG5lc3MgPSA8MjQ4PjsKKwkJCXB3bXMgPSA8JnB3bTMgMCA1MDAwMD47 CisJCX07CisJfTsKKworCXJlZ19hdWRfMXY4OiByZWd1bGF0b3ItYXVkaW8tMXY4IHsKKwkJY29t cGF0aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQiOworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQi OworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfYXVkaW9wd3I+OworCQlyZWd1bGF0b3ItbmFtZSA9 ICJBVURJT19QV1JfRU4iOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsK KwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCWdwaW8gPSA8JmdwaW8x IDQgR1BJT19BQ1RJVkVfSElHSD47CisJCWVuYWJsZS1hY3RpdmUtaGlnaDsKKwl9OworCisJcmVn X2duc3M6IHJlZ3VsYXRvci1nbnNzIHsKKwkJY29tcGF0aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQi OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxf Z25zc3B3cj47CisJCXJlZ3VsYXRvci1uYW1lID0gIkdOU1MiOworCQlyZWd1bGF0b3ItbWluLW1p Y3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAw MD47CisJCWdwaW8gPSA8JmdwaW8zIDEyIEdQSU9fQUNUSVZFX0hJR0g+OworCQllbmFibGUtYWN0 aXZlLWhpZ2g7CisJfTsKKworCXJlZ19odWI6IHJlZ3VsYXRvci1odWIgeworCQljb21wYXRpYmxl ID0gInJlZ3VsYXRvci1maXhlZCI7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBp bmN0cmwtMCA9IDwmcGluY3RybF9odWJfcHdyPjsKKwkJcmVndWxhdG9yLW5hbWUgPSAiSFVCIjsK KwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCXJlZ3VsYXRvci1tYXgt bWljcm92b2x0ID0gPDMzMDAwMDA+OworCQlncGlvID0gPCZncGlvMSAxNCBHUElPX0FDVElWRV9I SUdIPjsKKwkJZW5hYmxlLWFjdGl2ZS1oaWdoOworCX07CisKKwlyZWdfbGNkXzN2NDogcmVndWxh dG9yLWxjZC0zdjQgeworCQljb21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7CisJCXJlZ3Vs YXRvci1uYW1lID0gIkxDRF8zVjQiOworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlw aW5jdHJsLTAgPSA8JnBpbmN0cmxfZHNpYmlhc2VuPjsKKwkJdmluLXN1cHBseSA9IDwmcmVnX3Zz eXNfM3Y0PjsKKwkJZ3BpbyA9IDwmZ3BpbzEgMjAgR1BJT19BQ1RJVkVfSElHSD47CisJCWVuYWJs ZS1hY3RpdmUtaGlnaDsKKwl9OworCisJcmVnX3ZkZF9zZW46IHJlZ3VsYXRvci12ZGQtc2VuIHsK KwkJY29tcGF0aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQiOworCQlyZWd1bGF0b3ItbmFtZSA9ICJW RERfU0VOIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCXJlZ3Vs YXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCX07CisKKwlyZWdfdmRkXzN2MzogcmVn dWxhdG9yLXZkZC0zdjMgeworCQljb21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7CisJCXJl Z3VsYXRvci1uYW1lID0gIlZERF8zVjMiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwz MzAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKwor CXJlZ192ZGRfMXY4OiByZWd1bGF0b3ItdmRkLTF2OCB7CisJCWNvbXBhdGlibGUgPSAicmVndWxh dG9yLWZpeGVkIjsKKwkJcmVndWxhdG9yLW5hbWUgPSAiVkNDXzFWOCI7CisJCXJlZ3VsYXRvci1t aW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwx ODAwMDAwPjsKKwl9OworCisJcmVnX3ZzeXNfM3Y0OiByZWd1bGF0b3ItdnN5cy0zdjQgeworCQlj b21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7CisJCXJlZ3VsYXRvci1uYW1lID0gIlZTWVNf M1Y0IjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzQwMDAwMD47CisJCXJlZ3VsYXRv ci1tYXgtbWljcm92b2x0ID0gPDM0MDAwMDA+OworCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCX07 CisKKwlyZWdfd2lmaV8zdjM6IHJlZ3VsYXRvci13aWZpLTN2MyB7CisJCWNvbXBhdGlibGUgPSAi cmVndWxhdG9yLWZpeGVkIjsKKwkJcmVndWxhdG9yLW5hbWUgPSAiM1YzX1dJRkkiOworCQlyZWd1 bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3Zv bHQgPSA8MzMwMDAwMD47CisJfTsKKworCXNvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUt YXVkaW8tY2FyZCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9ocD47CisJCXNpbXBsZS1hdWRp by1jYXJkLG5hbWUgPSAiTGlicmVtIDUiOworCQlzaW1wbGUtYXVkaW8tY2FyZCxmb3JtYXQgPSAi aTJzIjsKKwkJc2ltcGxlLWF1ZGlvLWNhcmQsd2lkZ2V0cyA9CisJCQkiSGVhZHBob25lIiwgIkhl YWRwaG9uZXMiLAorCQkJIk1pY3JvcGhvbmUiLCAiSGVhZHNldCBNaWMiLAorCQkJIk1pY3JvcGhv bmUiLCAiRGlnaXRhbCBNaWMiLAorCQkJIlNwZWFrZXIiLCAiU3BlYWtlciI7CisJCXNpbXBsZS1h dWRpby1jYXJkLHJvdXRpbmcgPQorCQkJIkhlYWRwaG9uZXMiLCAiSFBPVVRMIiwKKwkJCSJIZWFk cGhvbmVzIiwgIkhQT1VUUiIsCisJCQkiU3BlYWtlciIsICJTUEtPVVRMIiwKKwkJCSJTcGVha2Vy IiwgIlNQS09VVFIiLAorCQkJIkhlYWRzZXQgTWljIiwgIk1JQ0JJQVMiLAorCQkJIklOM1IiLCAi SGVhZHNldCBNaWMiLAorCQkJIkRNSUNEQVQiLCAiRGlnaXRhbCBNaWMiOworCQlzaW1wbGUtYXVk aW8tY2FyZCxocC1kZXQtZ3BpbyA9IDwmZ3BpbzMgOSBHUElPX0FDVElWRV9ISUdIPjsKKworCQlz aW1wbGUtYXVkaW8tY2FyZCxjcHUgeworCQkJc291bmQtZGFpID0gPCZzYWkyPjsKKwkJfTsKKwor CQlzaW1wbGUtYXVkaW8tY2FyZCxjb2RlYyB7CisJCQlzb3VuZC1kYWkgPSA8JmNvZGVjPjsKKwkJ CWNsb2NrcyA9IDwmY2xrIElNWDhNUV9DTEtfU0FJMl9ST09UPjsKKwkJCWZyYW1lLW1hc3RlcjsK KwkJCWJpdGNsb2NrLW1hc3RlcjsKKwkJfTsKKwl9OworCisJc291bmQtd3dhbiB7CisJCWNvbXBh dGlibGUgPSAic2ltcGxlLWF1ZGlvLWNhcmQiOworCQlzaW1wbGUtYXVkaW8tY2FyZCxuYW1lID0g Ik1vZGVtIjsKKwkJc2ltcGxlLWF1ZGlvLWNhcmQsZm9ybWF0ID0gImkycyI7CisKKwkJc2ltcGxl LWF1ZGlvLWNhcmQsY3B1IHsKKwkJCXNvdW5kLWRhaSA9IDwmc2FpNj47CisJCQlmcmFtZS1pbnZl cnNpb247CisJCX07CisKKwkJc2ltcGxlLWF1ZGlvLWNhcmQsY29kZWMgeworCQkJc291bmQtZGFp ID0gPCZibTgxOF9jb2RlYz47CisJCQlmcmFtZS1tYXN0ZXI7CisJCQliaXRjbG9jay1tYXN0ZXI7 CisJCX07CisJfTsKKworCWJtODE4X2NvZGVjOiBzb3VuZC13d2FuLWNvZGVjIHsKKwkJY29tcGF0 aWJsZSA9ICJicm9hZG1vYmksYm04MTgiLCAib3B0aW9uLGd0bTYwMSI7CisJCSNzb3VuZC1kYWkt Y2VsbHMgPSA8MD47CisJfTsKKworCXZpYnJhdG9yIHsKKwkJY29tcGF0aWJsZSA9ICJwd20tdmli cmF0b3IiOworCQlwd21zID0gPCZwd20xIDAgMTAwMDAwMDAwMCAwPjsKKwkJcHdtLW5hbWVzID0g ImVuYWJsZSI7CisJCXZjYy1zdXBwbHkgPSA8JnJlZ192ZGRfM3YzPjsKKwl9OworfTsKKworJkE1 M18wIHsKKwljcHUtc3VwcGx5ID0gPCZidWNrMl9yZWc+OworfTsKKworJkE1M18xIHsKKwljcHUt c3VwcGx5ID0gPCZidWNrMl9yZWc+OworfTsKKworJkE1M18yIHsKKwljcHUtc3VwcGx5ID0gPCZi dWNrMl9yZWc+OworfTsKKworJkE1M18zIHsKKwljcHUtc3VwcGx5ID0gPCZidWNrMl9yZWc+Owor fTsKKworJmRkcmMgeworCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmRkcmNfb3BwX3RhYmxlPjsK KworCWRkcmNfb3BwX3RhYmxlOiBkZHJjLW9wcC10YWJsZSB7CisJCWNvbXBhdGlibGUgPSAib3Bl cmF0aW5nLXBvaW50cy12MiI7CisKKwkJb3BwLTI1TSB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQg PDI1MDAwMDAwPjsKKwkJfTsKKworCQlvcHAtMTAwTSB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQg PDEwMDAwMDAwMD47CisJCX07CisKKwkJb3BwLTgwME0geworCQkJb3BwLWh6ID0gL2JpdHMvIDY0 IDw4MDAwMDAwMDA+OworCQl9OworCX07Cit9OworCismZHBoeSB7CisJc3RhdHVzID0gIm9rYXki OworfTsKKworJmVjc3BpMSB7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJs LTAgPSA8JnBpbmN0cmxfZWNzcGkxPjsKKwljcy1ncGlvcyA9IDwmZ3BpbzUgOSBHUElPX0FDVElW RV9ISUdIPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlz dGF0dXMgPSAib2theSI7CisKKwlub3JfZmxhc2g6IGZsYXNoQDAgeworCQljb21wYXRpYmxlID0g ImplZGVjLHNwaS1ub3IiOworCQlyZWcgPSA8MD47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDEw MDAwMDA+OworCX07Cit9OworCismZ3BpbzEgeworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7 CisJcGluY3RybC0wID0gPCZwaW5jdHJsX3BtaWNfNXY+OworCisJcG1pYy01diB7CisJCWdwaW8t aG9nOworCQlncGlvID0gPCZncGlvMSAxIEdQSU9fQUNUSVZFX0hJR0g+OworCQlpbnB1dDsKKwl9 OworfTsKKworJmlvbXV4YyB7CisJcGluY3RybF9hdWRpb3B3cjogYXVkaW9wd3JncnAgeworCQlm c2wscGlucyA9IDwKKwkJCS8qIEFVRElPX1BPV0VSX0VOXzNWMyAqLworCQkJTVg4TVFfSU9NVVhD X0dQSU8xX0lPMDRfR1BJTzFfSU80CTB4ODMKKwkJPjsKKwl9OworCisJcGluY3RybF9ibDogYmxn cnAgeworCQlmc2wscGlucyA9IDwKKwkJCS8qIEJBQ0tMSU5HRV9FTiAqLworCQkJTVg4TVFfSU9N VVhDX05BTkRfRFFTX0dQSU8zX0lPMTQJMHg4MworCQk+OworCX07CisKKwlwaW5jdHJsX2NoYXJn ZXJfaW46IGNoYXJnZXJpbmdycCB7CisJCWZzbCxwaW5zID0gPAorCQkJLyogQ0hSR19JTlQgKi8K KwkJCU1YOE1RX0lPTVVYQ19OQU5EX0NFMl9CX0dQSU8zX0lPMwkweDAwCisJCQkvKiBDSEdfU1RB VFVTX0IgKi8KKwkJCU1YOE1RX0lPTVVYQ19OQU5EX0FMRV9HUElPM19JTzAJCTB4ODAKKwkJPjsK Kwl9OworCisJcGluY3RybF9kc2liaWFzZW46IGRzaWJpYXNlbmdycCB7CisJCWZzbCxwaW5zID0g PAorCQkJLyogRFNJX0JJQVNfRU4gKi8KKwkJCU1YOE1RX0lPTVVYQ19FTkVUX1REMV9HUElPMV9J TzIwCTB4ODMKKwkJPjsKKwl9OworCisJcGluY3RybF9kc2llbjogZHNpZW5ncnAgeworCQlmc2ws cGlucyA9IDwKKwkJCS8qIERTSV9FTl8zVjMgKi8KKwkJCU1YOE1RX0lPTVVYQ19HUElPMV9JTzA1 X0dQSU8xX0lPNQkweDgzCisJCT47CisJfTsKKworCXBpbmN0cmxfZWNzcGkxOiBzcGkxZ3JwIHsK KwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfRUNTUEkxX01PU0lfRUNTUEkxX01PU0kJ MHg4MworCQkJTVg4TVFfSU9NVVhDX0VDU1BJMV9NSVNPX0VDU1BJMV9NSVNPCTB4ODMKKwkJCU1Y OE1RX0lPTVVYQ19FQ1NQSTFfU1MwX0dQSU81X0lPOQkweDE5CisJCQlNWDhNUV9JT01VWENfRUNT UEkxX1NDTEtfRUNTUEkxX1NDTEsJMHg4MworCQk+OworCX07CisKKwlwaW5jdHJsX2dhdWdlOiBn YXVnZWdycCB7CisJCWZzbCxwaW5zID0gPAorCQkJLyogQkFUX0xPVyAqLworCQkJTVg4TVFfSU9N VVhDX1NBSTVfUlhDX0dQSU8zX0lPMjAJMHg4MAorCQk+OworCX07CisKKwlwaW5jdHJsX2duc3Nw d3I6IGduc3Nwd3JncnAgeworCQlmc2wscGlucyA9IDwKKwkJCS8qIEdQUzNWM19FTiAqLworCQkJ TVg4TVFfSU9NVVhDX05BTkRfREFUQTA2X0dQSU8zX0lPMTIJMHg4MworCQk+OworCX07CisKKwlw aW5jdHJsX2hhcHRpYzogaGFwdGljZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQkvKiBNT1RPICov CisJCQlNWDhNUV9JT01VWENfU1BESUZfRVhUX0NMS19QV00xX09VVAkweDgzCisJCT47CisJfTsK KworCXBpbmN0cmxfaHA6IGhwZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQkvKiBIRUFEUEhPTkVf REVUXzFWOCAqLworCQkJTVg4TVFfSU9NVVhDX05BTkRfREFUQTAzX0dQSU8zX0lPOQkweDE4MAor CQk+OworCX07CisKKwlwaW5jdHJsX2h1Yl9wd3I6IGh1YnB3cmdycCB7CisJCWZzbCxwaW5zID0g PAorCQkJLyogSFVCX1BXUl8zVjNfRU4gKi8KKwkJCU1YOE1RX0lPTVVYQ19HUElPMV9JTzE0X0dQ SU8xX0lPMTQJMHg4MworCQk+OworCX07CisKKwlwaW5jdHJsX2kyYzE6IGkyYzFncnAgeworCQlm c2wscGlucyA9IDwKKwkJCU1YOE1RX0lPTVVYQ19JMkMxX1NDTF9JMkMxX1NDTAkJMHg0MDAwMDAy NgorCQkJTVg4TVFfSU9NVVhDX0kyQzFfU0RBX0kyQzFfU0RBCQkweDQwMDAwMDI2CisJCT47CisJ fTsKKworCXBpbmN0cmxfaTJjMjogaTJjMmdycCB7CisJCWZzbCxwaW5zID0gPAorCQkJTVg4TVFf SU9NVVhDX0kyQzJfU0NMX0kyQzJfU0NMCQkweDQwMDAwMDI2CisJCQlNWDhNUV9JT01VWENfSTJD Ml9TREFfSTJDMl9TREEJCTB4NDAwMDAwMjYKKwkJPjsKKwl9OworCisJcGluY3RybF9pMmMzOiBp MmMzZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfSTJDM19TQ0xfSTJDM19T Q0wJCTB4NDAwMDAwMjYKKwkJCU1YOE1RX0lPTVVYQ19JMkMzX1NEQV9JMkMzX1NEQQkJMHg0MDAw MDAyNgorCQk+OworCX07CisKKwlwaW5jdHJsX2kyYzQ6IGkyYzRncnAgeworCQlmc2wscGlucyA9 IDwKKwkJCU1YOE1RX0lPTVVYQ19JMkM0X1NDTF9JMkM0X1NDTAkJMHg0MDAwMDAyNgorCQkJTVg4 TVFfSU9NVVhDX0kyQzRfU0RBX0kyQzRfU0RBCQkweDQwMDAwMDI2CisJCT47CisJfTsKKworCXBp bmN0cmxfa2V5czoga2V5c2dycCB7CisJCWZzbCxwaW5zID0gPAorCQkJLyogVk9MLSAqLworCQkJ TVg4TVFfSU9NVVhDX0VORVRfTURJT19HUElPMV9JTzE3CTB4MDFDMAorCQkJLyogVk9MKyAqLwor CQkJTVg4TVFfSU9NVVhDX0VORVRfTURDX0dQSU8xX0lPMTYJMHgwMUMwCisJCT47CisJfTsKKwor CXBpbmN0cmxfbGVkX2I6IGxlZGJncnAgeworCQlmc2wscGlucyA9IDwKKwkJCS8qIExFRF9CICov CisJCQlNWDhNUV9JT01VWENfR1BJTzFfSU8xM19QV00yX09VVAkweDA2CisJCT47CisJfTsKKwor CXBpbmN0cmxfbGVkX2c6IGxlZGdncnAgeworCQlmc2wscGlucyA9IDwKKwkJCS8qIExFRF9HICov CisJCQlNWDhNUV9JT01VWENfU0FJM19NQ0xLX1BXTTRfT1VUCQkweDA2CisJCT47CisJfTsKKwor CXBpbmN0cmxfbGVkX3I6IGxlZHJncnAgeworCQlmc2wscGlucyA9IDwKKwkJCS8qIExFRF9SICov CisJCQlNWDhNUV9JT01VWENfU1BESUZfVFhfUFdNM19PVVQJCTB4MDYKKwkJPjsKKwl9OworCisJ cGluY3RybF9tYWc6IG1hZ2dycCB7CisJCWZzbCxwaW5zID0gPAorCQkJLyogSU5UX01BRyAqLwor CQkJTVg4TVFfSU9NVVhDX1NBSTVfUlhEMV9HUElPM19JTzIyCTB4ODAKKwkJPjsKKwl9OworCisJ cGluY3RybF9wbWljOiBwbWljZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQkvKiBQTUlDX05JTlQg Ki8KKwkJCU1YOE1RX0lPTVVYQ19HUElPMV9JTzA3X0dQSU8xX0lPNwkweDgwCisJCT47CisJfTsK KworCXBpbmN0cmxfcG1pY181djogcG1pYzV2Z3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQkvKiBQ TUlDXzVWICovCisJCQlNWDhNUV9JT01VWENfR1BJTzFfSU8wMV9HUElPMV9JTzEJMHg4MAorCQk+ OworCX07CisKKwlwaW5jdHJsX3Byb3g6IHByb3hncnAgeworCQlmc2wscGlucyA9IDwKKwkJCS8q IElOVF9MSUdIVCAqLworCQkJTVg4TVFfSU9NVVhDX05BTkRfREFUQTAxX0dQSU8zX0lPNwkweDgw CisJCT47CisJfTsKKworCXBpbmN0cmxfcnRjOiBydGNncnAgeworCQlmc2wscGlucyA9IDwKKwkJ CS8qIFJUQ19JTlQgKi8KKwkJCU1YOE1RX0lPTVVYQ19HUElPMV9JTzA5X0dQSU8xX0lPOQkweDgw CisJCT47CisJfTsKKworCXBpbmN0cmxfc2FpMjogc2FpMmdycCB7CisJCWZzbCxwaW5zID0gPAor CQkJTVg4TVFfSU9NVVhDX1NBSTJfVFhEMF9TQUkyX1RYX0RBVEEwCTB4ZDYKKwkJCU1YOE1RX0lP TVVYQ19TQUkyX1RYRlNfU0FJMl9UWF9TWU5DCTB4ZDYKKwkJCU1YOE1RX0lPTVVYQ19TQUkyX01D TEtfU0FJMl9NQ0xLCTB4ZDYKKwkJCU1YOE1RX0lPTVVYQ19TQUkyX1JYRDBfU0FJMl9SWF9EQVRB MAkweGQ2CisJCQlNWDhNUV9JT01VWENfU0FJMl9UWENfU0FJMl9UWF9CQ0xLCTB4ZDYKKwkJPjsK Kwl9OworCisJcGluY3RybF9zYWk2OiBzYWk2Z3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhN UV9JT01VWENfU0FJMV9SWEQ1X1NBSTZfUlhfREFUQTAJMHhkNgorCQkJTVg4TVFfSU9NVVhDX1NB STFfUlhENl9TQUk2X1JYX1NZTkMJMHhkNgorCQkJTVg4TVFfSU9NVVhDX1NBSTFfVFhENF9TQUk2 X1JYX0JDTEsJMHhkNgorCQkJTVg4TVFfSU9NVVhDX1NBSTFfVFhENV9TQUk2X1RYX0RBVEEwCTB4 ZDYKKwkJPjsKKwl9OworCisJcGluY3RybF90Y3BjOiB0Y3BjZ3JwIHsKKwkJZnNsLHBpbnMgPSA8 CisJCQkvKiBUQ1BDX0lOVCAqLworCQkJTVg4TVFfSU9NVVhDX0dQSU8xX0lPMTBfR1BJTzFfSU8x MAkweDAxQzAKKwkJPjsKKwl9OworCisJcGluY3RybF90eXBlYzogdHlwZWNncnAgeworCQlmc2ws cGlucyA9IDwKKwkJCS8qIFRZUEVDX01VWF9FTiAqLworCQkJTVg4TVFfSU9NVVhDX0dQSU8xX0lP MTFfR1BJTzFfSU8xMQkweDgzCisJCT47CisJfTsKKworCXBpbmN0cmxfdWFydDE6IHVhcnQxZ3Jw IHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfVUFSVDFfUlhEX1VBUlQxX0RDRV9S WAkweDQ5CisJCQlNWDhNUV9JT01VWENfVUFSVDFfVFhEX1VBUlQxX0RDRV9UWAkweDQ5CisJCT47 CisJfTsKKworCXBpbmN0cmxfdWFydDI6IHVhcnQyZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlN WDhNUV9JT01VWENfVUFSVDJfVFhEX1VBUlQyX0RDRV9UWAkweDQ5CisJCQlNWDhNUV9JT01VWENf VUFSVDJfUlhEX1VBUlQyX0RDRV9SWAkweDQ5CisJCT47CisJfTsKKworCXBpbmN0cmxfdWFydDM6 IHVhcnQzZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfVUFSVDNfUlhEX1VB UlQzX0RDRV9SWAkweDQ5CisJCQlNWDhNUV9JT01VWENfVUFSVDNfVFhEX1VBUlQzX0RDRV9UWAkw eDQ5CisJCT47CisJfTsKKworCXBpbmN0cmxfdWFydDQ6IHVhcnQ0Z3JwIHsKKwkJZnNsLHBpbnMg PSA8CisJCQlNWDhNUV9JT01VWENfRUNTUEkyX1NDTEtfVUFSVDRfRENFX1JYCQkweDQ5CisJCQlN WDhNUV9JT01VWENfRUNTUEkyX01PU0lfVUFSVDRfRENFX1RYCQkweDQ5CisJCQlNWDhNUV9JT01V WENfRUNTUEkyX01JU09fVUFSVDRfRENFX0NUU19CCTB4NDkKKwkJCU1YOE1RX0lPTVVYQ19FQ1NQ STJfU1MwX1VBUlQ0X0RDRV9SVFNfQgkJMHg0OQorCQk+OworCX07CisKKwlwaW5jdHJsX3VzZGhj MTogdXNkaGMxZ3JwIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfU0QxX0NMS19V U0RIQzFfQ0xLCQkJMHg4MworCQkJTVg4TVFfSU9NVVhDX1NEMV9DTURfVVNESEMxX0NNRAkJCTB4 YzMKKwkJCU1YOE1RX0lPTVVYQ19TRDFfREFUQTBfVVNESEMxX0RBVEEwCQkweGMzCisJCQlNWDhN UV9JT01VWENfU0QxX0RBVEExX1VTREhDMV9EQVRBMQkJMHhjMworCQkJTVg4TVFfSU9NVVhDX1NE MV9EQVRBMl9VU0RIQzFfREFUQTIJCTB4YzMKKwkJCU1YOE1RX0lPTVVYQ19TRDFfREFUQTNfVVNE SEMxX0RBVEEzCQkweGMzCisJCQlNWDhNUV9JT01VWENfU0QxX0RBVEE0X1VTREhDMV9EQVRBNAkJ MHhjMworCQkJTVg4TVFfSU9NVVhDX1NEMV9EQVRBNV9VU0RIQzFfREFUQTUJCTB4YzMKKwkJCU1Y OE1RX0lPTVVYQ19TRDFfREFUQTZfVVNESEMxX0RBVEE2CQkweGMzCisJCQlNWDhNUV9JT01VWENf U0QxX0RBVEE3X1VTREhDMV9EQVRBNwkJMHhjMworCQkJTVg4TVFfSU9NVVhDX1NEMV9TVFJPQkVf VVNESEMxX1NUUk9CRQkJMHg4MworCQkJTVg4TVFfSU9NVVhDX1NEMV9SRVNFVF9CX1VTREhDMV9S RVNFVF9CCQkweGMxCisJCT47CisJfTsKKworCXBpbmN0cmxfdXNkaGMxXzEwMG1oejogdXNkaGMx Z3JwMTAwbWh6IHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfU0QxX0NMS19VU0RI QzFfQ0xLCQkJMHg4ZAorCQkJTVg4TVFfSU9NVVhDX1NEMV9DTURfVVNESEMxX0NNRAkJCTB4Y2QK KwkJCU1YOE1RX0lPTVVYQ19TRDFfREFUQTBfVVNESEMxX0RBVEEwCQkweGNkCisJCQlNWDhNUV9J T01VWENfU0QxX0RBVEExX1VTREhDMV9EQVRBMQkJMHhjZAorCQkJTVg4TVFfSU9NVVhDX1NEMV9E QVRBMl9VU0RIQzFfREFUQTIJCTB4Y2QKKwkJCU1YOE1RX0lPTVVYQ19TRDFfREFUQTNfVVNESEMx X0RBVEEzCQkweGNkCisJCQlNWDhNUV9JT01VWENfU0QxX0RBVEE0X1VTREhDMV9EQVRBNAkJMHhj ZAorCQkJTVg4TVFfSU9NVVhDX1NEMV9EQVRBNV9VU0RIQzFfREFUQTUJCTB4Y2QKKwkJCU1YOE1R X0lPTVVYQ19TRDFfREFUQTZfVVNESEMxX0RBVEE2CQkweGNkCisJCQlNWDhNUV9JT01VWENfU0Qx X0RBVEE3X1VTREhDMV9EQVRBNwkJMHhjZAorCQkJTVg4TVFfSU9NVVhDX1NEMV9TVFJPQkVfVVNE SEMxX1NUUk9CRQkJMHg4ZAorCQkJTVg4TVFfSU9NVVhDX1NEMV9SRVNFVF9CX1VTREhDMV9SRVNF VF9CCQkweGMxCisJCT47CisJfTsKKworCXBpbmN0cmxfdXNkaGMxXzIwMG1oejogdXNkaGMxZ3Jw MjAwbWh6IHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfU0QxX0NMS19VU0RIQzFf Q0xLCQkJMHg5ZgorCQkJTVg4TVFfSU9NVVhDX1NEMV9DTURfVVNESEMxX0NNRAkJCTB4ZGYKKwkJ CU1YOE1RX0lPTVVYQ19TRDFfREFUQTBfVVNESEMxX0RBVEEwCQkweGRmCisJCQlNWDhNUV9JT01V WENfU0QxX0RBVEExX1VTREhDMV9EQVRBMQkJMHhkZgorCQkJTVg4TVFfSU9NVVhDX1NEMV9EQVRB Ml9VU0RIQzFfREFUQTIJCTB4ZGYKKwkJCU1YOE1RX0lPTVVYQ19TRDFfREFUQTNfVVNESEMxX0RB VEEzCQkweGRmCisJCQlNWDhNUV9JT01VWENfU0QxX0RBVEE0X1VTREhDMV9EQVRBNAkJMHhkZgor CQkJTVg4TVFfSU9NVVhDX1NEMV9EQVRBNV9VU0RIQzFfREFUQTUJCTB4ZGYKKwkJCU1YOE1RX0lP TVVYQ19TRDFfREFUQTZfVVNESEMxX0RBVEE2CQkweGRmCisJCQlNWDhNUV9JT01VWENfU0QxX0RB VEE3X1VTREhDMV9EQVRBNwkJMHhkZgorCQkJTVg4TVFfSU9NVVhDX1NEMV9TVFJPQkVfVVNESEMx X1NUUk9CRQkJMHg5ZgorCQkJTVg4TVFfSU9NVVhDX1NEMV9SRVNFVF9CX1VTREhDMV9SRVNFVF9C CQkweGMxCisJCT47CisJfTsKKworCXBpbmN0cmxfdXNkaGMyOiB1c2RoYzJncnAgeworCQlmc2ws cGlucyA9IDwKKwkJCU1YOE1RX0lPTVVYQ19TRDJfQ0RfQl9HUElPMl9JTzEyCTB4ODAKKwkJCU1Y OE1RX0lPTVVYQ19TRDJfQ0xLX1VTREhDMl9DTEsJCTB4ODMKKwkJCU1YOE1RX0lPTVVYQ19TRDJf Q01EX1VTREhDMl9DTUQJCTB4YzMKKwkJCU1YOE1RX0lPTVVYQ19TRDJfREFUQTBfVVNESEMyX0RB VEEwCTB4YzMKKwkJCU1YOE1RX0lPTVVYQ19TRDJfREFUQTFfVVNESEMyX0RBVEExCTB4YzMKKwkJ CU1YOE1RX0lPTVVYQ19TRDJfREFUQTJfVVNESEMyX0RBVEEyCTB4YzMKKwkJCU1YOE1RX0lPTVVY Q19TRDJfREFUQTNfVVNESEMyX0RBVEEzCTB4YzMKKwkJCU1YOE1RX0lPTVVYQ19TRDJfUkVTRVRf Ql9VU0RIQzJfUkVTRVRfQiAweGMxCisJCT47CisJfTsKKworCXBpbmN0cmxfdXNkaGMyXzEwMG1o ejogdXNkaGMyZ3JwMTAwbWh6IHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDhNUV9JT01VWENfU0Qy X0NEX0JfR1BJTzJfSU8xMgkweDgwCisJCQlNWDhNUV9JT01VWENfU0QyX0NMS19VU0RIQzJfQ0xL CQkweDhkCisJCQlNWDhNUV9JT01VWENfU0QyX0NNRF9VU0RIQzJfQ01ECQkweGNkCisJCQlNWDhN UV9JT01VWENfU0QyX0RBVEEwX1VTREhDMl9EQVRBMAkweGNkCisJCQlNWDhNUV9JT01VWENfU0Qy X0RBVEExX1VTREhDMl9EQVRBMQkweGNkCisJCQlNWDhNUV9JT01VWENfU0QyX0RBVEEyX1VTREhD Ml9EQVRBMgkweGNkCisJCQlNWDhNUV9JT01VWENfU0QyX0RBVEEzX1VTREhDMl9EQVRBMwkweGNk CisJCQlNWDhNUV9JT01VWENfU0QyX1JFU0VUX0JfVVNESEMyX1JFU0VUX0IgMHhjMQorCQk+Owor CX07CisKKwlwaW5jdHJsX3VzZGhjMl8yMDBtaHo6IHVzZGhjMmdycDIwMG1oeiB7CisJCWZzbCxw aW5zID0gPAorCQkJTVg4TVFfSU9NVVhDX1NEMl9DRF9CX0dQSU8yX0lPMTIJMHg4MAorCQkJTVg4 TVFfSU9NVVhDX1NEMl9DTEtfVVNESEMyX0NMSwkJMHg5ZgorCQkJTVg4TVFfSU9NVVhDX1NEMl9D TURfVVNESEMyX0NNRAkJMHhjZgorCQkJTVg4TVFfSU9NVVhDX1NEMl9EQVRBMF9VU0RIQzJfREFU QTAJMHhjZgorCQkJTVg4TVFfSU9NVVhDX1NEMl9EQVRBMV9VU0RIQzJfREFUQTEJMHhjZgorCQkJ TVg4TVFfSU9NVVhDX1NEMl9EQVRBMl9VU0RIQzJfREFUQTIJMHhjZgorCQkJTVg4TVFfSU9NVVhD X1NEMl9EQVRBM19VU0RIQzJfREFUQTMJMHhjZgorCQkJTVg4TVFfSU9NVVhDX1NEMl9SRVNFVF9C X1VTREhDMl9SRVNFVF9CIDB4YzEKKwkJPjsKKwl9OworCisJcGluY3RybF93ZG9nOiB3ZG9nZ3Jw IHsKKwkJZnNsLHBpbnMgPSA8CisJCQkvKiBuV0RPRyAqLworCQkJTVg4TVFfSU9NVVhDX0dQSU8x X0lPMDJfV0RPRzFfV0RPR19CCTB4MWYKKwkJPjsKKwl9OworfTsKKworJmkyYzEgeworCWNsb2Nr LWZyZXF1ZW5jeSA9IDwzODcwMDA+OworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGlu Y3RybC0wID0gPCZwaW5jdHJsX2kyYzE+OworCXN0YXR1cyA9ICJva2F5IjsKKworCXR5cGVjX3Bk OiB1c2ItcGRAM2YgeworCQljb21wYXRpYmxlID0gInRpLHRwczY1OTh4IjsKKwkJcmVnID0gPDB4 M2Y+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0 cmxfdHlwZWM+LCA8JnBpbmN0cmxfdGNwYz47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8x PjsKKwkJaW50ZXJydXB0cyA9IDwxMCBJUlFfVFlQRV9MRVZFTF9MT1c+OworCisJCWNvbm5lY3Rv ciB7CisJCQlwb3J0cyB7CisJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkJI3NpemUtY2Vs bHMgPSA8MD47CisKKwkJCQlwb3J0QDAgeworCQkJCQlyZWcgPSA8MD47CisKKwkJCQkJdXNiX2Nv bl9oczogZW5kcG9pbnQgeworCQkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ0eXBlY19ocz47CisJ CQkJCX07CisJCQkJfTsKKworCQkJCXBvcnRAMSB7CisJCQkJCXJlZyA9IDwxPjsKKworCQkJCQl1 c2JfY29uX3NzOiBlbmRwb2ludCB7CisJCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnR5cGVjX3Nz PjsKKwkJCQkJfTsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCisJcG1pYzogcG1pY0A0YiB7 CisJCWNvbXBhdGlibGUgPSAicm9obSxiZDcxODM3IjsKKwkJcmVnID0gPDB4NGI+OworCQlwaW5j dHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfcG1pYz47CisJ CWNsb2NrcyA9IDwmcG1pY19vc2M+OworCQljbG9jay1uYW1lcyA9ICJvc2MiOworCQljbG9jay1v dXRwdXQtbmFtZXMgPSAicG1pY19jbGsiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMT47 CisJCWludGVycnVwdHMgPSA8NyBHUElPX0FDVElWRV9MT1c+OworCQlpbnRlcnJ1cHQtbmFtZXMg PSAiaXJxIjsKKwkJcm9obSxyZXNldC1zbnZzLXBvd2VyZWQ7CisKKwkJcmVndWxhdG9ycyB7CisJ CQlidWNrMV9yZWc6IEJVQ0sxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJCVUNLMSI7CisJCQkJ cmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1p Y3Jvdm9sdCA9IDwxMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItcmFtcC1kZWxheSA9IDwxMjUwPjsK KwkJCQlyb2htLGR2cy1ydW4tdm9sdGFnZSA9IDw5MDAwMDA+OworCQkJCXJvaG0sZHZzLWlkbGUt dm9sdGFnZSA9IDw4NTAwMDA+OworCQkJCXJvaG0sZHZzLXN1c3BlbmQtdm9sdGFnZSA9IDw4MDAw MDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlidWNrMl9yZWc6IEJV Q0syIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJCVUNLMiI7CisJCQkJcmVndWxhdG9yLW1pbi1t aWNyb3ZvbHQgPSA8NzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzAw MDAwPjsKKwkJCQlyZWd1bGF0b3ItcmFtcC1kZWxheSA9IDwxMjUwPjsKKwkJCQlyb2htLGR2cy1y dW4tdm9sdGFnZSA9IDwxMDAwMDAwPjsKKwkJCQlyb2htLGR2cy1pZGxlLXZvbHRhZ2UgPSA8OTAw MDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJYnVjazNfcmVnOiBC VUNLMyB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiQlVDSzMiOworCQkJCXJlZ3VsYXRvci1taW4t bWljcm92b2x0ID0gPDcwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTMw MDAwMD47CisJCQkJcm9obSxkdnMtcnVuLXZvbHRhZ2UgPSA8OTAwMDAwPjsKKwkJCQlyZWd1bGF0 b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJYnVjazRfcmVnOiBCVUNLNCB7CisJCQkJcmVndWxh dG9yLW5hbWUgPSAiQlVDSzQiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcwMDAw MD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTMwMDAwMD47CisJCQkJcm9obSxk dnMtcnVuLXZvbHRhZ2UgPSA8MTAwMDAwMD47CisJCQl9OworCisJCQlidWNrNV9yZWc6IEJVQ0s1 IHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJCVUNLNSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNy b3ZvbHQgPSA8NzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAw PjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJYnVjazZfcmVnOiBCVUNL NiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiQlVDSzYiOworCQkJCXJlZ3VsYXRvci1taW4tbWlj cm92b2x0ID0gPDMwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAw MDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlidWNrN19yZWc6IEJV Q0s3IHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJCVUNLNyI7CisJCQkJcmVndWxhdG9yLW1pbi1t aWNyb3ZvbHQgPSA8MTYwNTAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTk5 NTAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWJ1Y2s4X3JlZzog QlVDSzggeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIkJVQ0s4IjsKKwkJCQlyZWd1bGF0b3ItbWlu LW1pY3Jvdm9sdCA9IDw4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0 MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlsZG8xX3JlZzog TERPMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiTERPMSI7CisJCQkJcmVndWxhdG9yLW1pbi1t aWNyb3ZvbHQgPSA8MzAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMw MDAwMD47CisJCQkJLyogbGVhdmUgb24gZm9yIHNudnMgcG93ZXIgYnV0dG9uICovCisJCQkJcmVn dWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWxkbzJfcmVnOiBMRE8yIHsKKwkJCQlyZWd1 bGF0b3ItbmFtZSA9ICJMRE8yIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5MDAw MDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJLyogbGVh dmUgb24gZm9yIHNudnMgcG93ZXIgYnV0dG9uICovCisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsK KwkJCX07CisKKwkJCWxkbzNfcmVnOiBMRE8zIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJMRE8z IjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0 b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOwor CQkJfTsKKworCQkJbGRvNF9yZWc6IExETzQgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIkxETzQi OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJcmVndWxhdG9y LW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJ CX07CisKKwkJCWxkbzVfcmVnOiBMRE81IHsKKwkJCQkvKiBWRERfUEhZXzBWOSAtIE1JUEkgYW5k IEhETUkgZG9tYWlucyAqLworCQkJCXJlZ3VsYXRvci1uYW1lID0gIkxETzUiOworCQkJCXJlZ3Vs YXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92 b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQls ZG82X3JlZzogTERPNiB7CisJCQkJLyogVkREX1BIWV8wVjkgLSBNSVBJLCBIRE1JIGFuZCBVU0Ig ZG9tYWlucyAqLworCQkJCXJlZ3VsYXRvci1uYW1lID0gIkxETzYiOworCQkJCXJlZ3VsYXRvci1t aW4tbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8 MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWxkbzdfcmVn OiBMRE83IHsKKwkJCQkvKiBWRERfUEhZXzNWMyAtIFVTQiBkb21haW4gKi8KKwkJCQlyZWd1bGF0 b3ItbmFtZSA9ICJMRE83IjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAw PjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0 b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJfTsKKwl9OworCisJcnRjQDY4IHsKKwkJY29tcGF0aWJs ZSA9ICJtaWNyb2NyeXN0YWwscnY0MTYyIjsKKwkJcmVnID0gPDB4Njg+OworCQlwaW5jdHJsLW5h bWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfcnRjPjsKKwkJaW50ZXJy dXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCQlpbnRlcnJ1cHRzID0gPDkgSVJRX1RZUEVfTEVWRUxf TE9XPjsKKwl9OworfTsKKworJmkyYzIgeworCWNsb2NrLWZyZXF1ZW5jeSA9IDwzODcwMDA+Owor CXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZwaW5jdHJsX2kyYzI+ OworCXN0YXR1cyA9ICJva2F5IjsKKworCW1hZ25ldG9tZXRlckAxZQl7CisJCWNvbXBhdGlibGUg PSAic3QsbHNtOWRzMS1tYWduIjsKKwkJcmVnID0gPDB4MWU+OworCQlwaW5jdHJsLW5hbWVzID0g ImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbWFnPjsKKwkJaW50ZXJydXB0LXBh cmVudCA9IDwmZ3BpbzM+OworCQlpbnRlcnJ1cHRzID0gPDIyIElSUV9UWVBFX0xFVkVMX0hJR0g+ OworCQl2ZGQtc3VwcGx5ID0gPCZyZWdfdmRkX3Nlbj47CisJCXZkZGlvLXN1cHBseSA9IDwmcmVn X3ZkZF8xdjg+OworCX07CisKKwlyZWd1bGF0b3JAM2UgeworCQljb21wYXRpYmxlID0gInRwczY1 MTMyIjsKKwkJcmVnID0gPDB4M2U+OworCisJCW91dHAgeworCQkJcmVndWxhdG9yLW5hbWUgPSAi TENEX0FWREQiOworCQkJdmluLXN1cHBseSA9IDwmcmVnX2xjZF8zdjQ+OworCQl9OworCisJCW91 dG4geworCQkJcmVndWxhdG9yLW5hbWUgPSAiTENEX0FWRUUiOworCQkJdmluLXN1cHBseSA9IDwm cmVnX2xjZF8zdjQ+OworCQl9OworCX07CisKKwlmbGFzaEA1MyB7CisJCWNvbXBhdGlibGUgPSAi bG0zNTYwIjsKKwkJcmVnID0gPDB4NTM+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3Np emUtY2VsbHMgPSA8MD47CisJCWZsYXNoQDAgeworCQkJcmVnID0gPDB4MD47CisJCQlmbGFzaC10 aW1lb3V0LXVzID0gPDE1MDAwMD47CisJCQlmbGFzaC1tYXgtbWljcm9hbXAgPSA8MzIwMDAwPjsK KwkJCWxlZC1tYXgtbWljcm9hbXAgPSA8NjAwMDA+OworCQkJbGFiZWwgPSAiZmxhc2giOworCQl9 OworCisJCXRvcmNoQDEgeworCQkJcmVnID0gPDB4MT47CisJCQlsZWQtbWF4LW1pY3JvYW1wID0g PDEwMDAwPjsKKwkJCWxhYmVsID0gInRvcmNoIjsKKwkJfTsKKworCX07CisKKwlwcm94QDYwIHsK KwkJY29tcGF0aWJsZSA9ICJ2aXNoYXksdmNubDQwNDAiOworCQlyZWcgPSA8MHg2MD47CisJCXBp bmN0cmwtMCA9IDwmcGluY3RybF9wcm94PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzM+ OworCQlpbnRlcnJ1cHRzID0gPDcgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwl9OworCisJYWNjZWxf Z3lybzogYWNjZWwtZ3lyb0A2YQl7CisJCWNvbXBhdGlibGUgPSAic3QsbHNtOWRzMS1pbXUiOwor CQlyZWcgPSA8MHg2YT47CisJCXZkZC1zdXBwbHkgPSA8JnJlZ192ZGRfc2VuPjsKKwkJdmRkaW8t c3VwcGx5ID0gPCZyZWdfdmRkXzF2OD47CisJfTsKK307CisKKyZpMmMzIHsKKwljbG9jay1mcmVx dWVuY3kgPSA8Mzg3MDAwPjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwt MCA9IDwmcGluY3RybF9pMmMzPjsKKwlzdGF0dXMgPSAib2theSI7CisKKwljb2RlYzogYXVkaW8t Y29kZWNAMWEgeworCQljb21wYXRpYmxlID0gIndsZix3bTg5NjIiOworCQlyZWcgPSA8MHgxYT47 IC8vIDB4NGEgaXMgdGhlIHRlc3QgYWRkcmVzcworCQljbG9ja3MgPSA8JmNsayBJTVg4TVFfQ0xL X1NBSTJfUk9PVD47CisJCWFzc2lnbmVkLWNsb2NrcyA9IDwmY2xrIElNWDhNUV9DTEtfU0FJMj47 CisJCWFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSA8JmNsayBJTVg4TVFfQVVESU9fUExMMV9PVVQ+ OworCQlhc3NpZ25lZC1jbG9jay1yYXRlcyA9IDwyNDU3NjAwMD47CisJCSNzb3VuZC1kYWktY2Vs bHMgPSA8MD47CisJCW1pYy1jZmcgPSA8MHgyMDA+OworCQlEQ1ZERC1zdXBwbHkgPSA8JnJlZ19h dWRfMXY4PjsKKwkJREJWREQtc3VwcGx5ID0gPCZyZWdfYXVkXzF2OD47CisJCUFWREQtc3VwcGx5 ID0gPCZyZWdfYXVkXzF2OD47CisJCUNQVkRELXN1cHBseSA9IDwmcmVnX2F1ZF8xdjg+OworCQlN SUNWREQtc3VwcGx5ID0gPCZyZWdfYXVkXzF2OD47CisJCVBMTFZERC1zdXBwbHkgPSA8JnJlZ19h dWRfMXY4PjsKKwkJU1BLVkREMS1zdXBwbHkgPSA8JnJlZ192c3lzXzN2ND47CisJCVNQS1ZERDIt c3VwcGx5ID0gPCZyZWdfdnN5c18zdjQ+OworCQlncGlvLWNmZyA9IDwKKwkJCTB4MDAwMCAvKiBu L2MgKi8KKwkJCTB4MDAwMSAvKiBncGlvMiwgMTogZGVmYXVsdCAqLworCQkJMHgwMDEzIC8qIGdw aW8zLCAyOiBkbWljY2xrICovCisJCQkweDAwMDAgLyogbi9jLCAzOiBkZWZhdWx0ICovCisJCQkw eDgwMTQgLyogZ3BpbzUsIDQ6IGRtaWNfZGF0ICovCisJCQkweDAwMDAgLyogZ3BpbzYsIDU6IGRl ZmF1bHQgKi8KKwkJPjsKKwl9OworCisJYmFja2xpZ2h0QDM2IHsKKwkJY29tcGF0aWJsZSA9ICJ0 aSxsbTM2OTIyIjsKKwkJcmVnID0gPDB4MzY+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQi OworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfYmw+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsK KwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzMgMTQgR1BJT19B Q1RJVkVfSElHSD47CisJCXZsZWQtc3VwcGx5ID0gPCZyZWdfdnN5c18zdjQ+OworCQl0aSxvdnAt bWljcm92b2x0ID0gPDI1MDAwMDAwPjsKKworCQlsZWRfYmFja2xpZ2h0OiBsZWRAMCB7CisJCQly ZWcgPSA8MD47CisJCQlsYWJlbCA9ICI6YmFja2xpZ2h0IjsKKwkJCWxpbnV4LGRlZmF1bHQtdHJp Z2dlciA9ICJiYWNrbGlnaHQiOworCQkJbGVkLW1heC1taWNyb2FtcCA9IDwyMDAwMD47CisJCX07 CisJfTsKKworCXRvdWNoc2NyZWVuQDM4IHsKKwkJY29tcGF0aWJsZSA9ICJlZHQsZWR0LWZ0NTUw NiI7CisJCXJlZyA9IDwweDM4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCQlp bnRlcnJ1cHRzID0gPDI3IElSUV9UWVBFX0VER0VfRkFMTElORz47CisJCXRvdWNoc2NyZWVuLXNp emUteCA9IDw3MjA+OworCQl0b3VjaHNjcmVlbi1zaXplLXkgPSA8MTQ0MD47CisJfTsKK307CisK KyZpMmM0IHsKKwljbG9jay1mcmVxdWVuY3kgPSA8Mzg3MDAwPjsKKwlwaW5jdHJsLW5hbWVzID0g ImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9pMmM0PjsKKwlzdGF0dXMgPSAib2th eSI7CisKKwliYXQ6IGZ1ZWwtZ2F1Z2VAMzYgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDE3 MDU1IjsKKwkJcmVnID0gPDB4MzY+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47CisJ CWludGVycnVwdHMgPSA8MjAgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwkJcGluY3RybC1uYW1lcyA9 ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZwaW5jdHJsX2dhdWdlPjsKKwkJbWF4aW0sb3Zl ci1oZWF0LXRlbXAgPSA8NzAwPjsKKwkJbWF4aW0sb3Zlci12b2x0ID0gPDQ1MDA+OworCQltYXhp bSxyc25zLW1pY3Jvb2htID0gPDUwMDA+OworCX07CisKKwlicTI1ODk1OiBjaGFyZ2VyQDZhIHsK KwkJY29tcGF0aWJsZSA9ICJ0aSxicTI1ODk1IiwgInRpLGJxMjU4OTAiOworCQlyZWcgPSA8MHg2 YT47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3Ry bF9jaGFyZ2VyX2luPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzM+OworCQlpbnRlcnJ1 cHRzID0gPDMgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwkJcGh5cyA9IDwmdXNiM19waHkwPjsK KwkJdGkscHJlY2hhcmdlLWN1cnJlbnQgPSA8MTMwMDAwPjsgLyogdUEgKi8KKwkJdGksbWluaW11 bS1zeXMtdm9sdGFnZSA9IDwzNzAwMDAwPjsgLyogdVYgKi8KKwkJdGksYm9vc3Qtdm9sdGFnZSA9 IDw1MDAwMDAwPjsgLyogdVYgKi8KKwkJdGksYm9vc3QtbWF4LWN1cnJlbnQgPSA8NTAwMDAwPjsg LyogdUEgKi8KKwkJdGksdXNlLXZpbm1pbi10aHJlc2hvbGQgPSA8MT47IC8qIGVuYWJsZSBWSU5E UE0gKi8KKwkJdGksdmlubWluLXRocmVzaG9sZCA9IDwzOTAwMDAwPjsgLyogdVYgKi8KKwkJbW9u aXRvcmVkLWJhdHRlcnkgPSA8JmJhdD47CisJfTsKK307CisKKyZwZ2NfZ3B1IHsKKwlwb3dlci1z dXBwbHkgPSA8JmJ1Y2szX3JlZz47Cit9OworCismcGdjX21pcGkgeworCXBvd2VyLXN1cHBseSA9 IDwmbGRvNV9yZWc+OworfTsKKworJnBnY192cHUgeworCXBvd2VyLXN1cHBseSA9IDwmYnVjazRf cmVnPjsKK307CisKKyZwd20xIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0 cmwtMCA9IDwmcGluY3RybF9oYXB0aWM+OworCXN0YXR1cyA9ICJva2F5IjsKK307CisKKyZwd20y IHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9s ZWRfYj47CisJc3RhdHVzID0gIm9rYXkiOworfTsKKworJnB3bTMgeworCXBpbmN0cmwtbmFtZXMg PSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZwaW5jdHJsX2xlZF9nPjsKKwlzdGF0dXMgPSAi b2theSI7Cit9OworCismcHdtNCB7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5j dHJsLTAgPSA8JnBpbmN0cmxfbGVkX3I+OworCXN0YXR1cyA9ICJva2F5IjsKK307CisKKyZzYWky IHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9z YWkyPjsKKwlhc3NpZ25lZC1jbG9ja3MgPSA8JmNsayBJTVg4TVFfQ0xLX1NBSTI+OworCWFzc2ln bmVkLWNsb2NrLXBhcmVudHMgPSA8JmNsayBJTVg4TVFfQVVESU9fUExMMV9PVVQ+OworCWFzc2ln bmVkLWNsb2NrLXJhdGVzID0gPDI0NTc2MDAwPjsKKwlhc3NpZ25lZC1jbG9ja3MgPSA8JmNsayBJ TVg4TVFfQVVESU9fUExMMT4sIDwmY2xrIElNWDhNUV9BVURJT19QTEwyPjsKKwlhc3NpZ25lZC1j bG9jay1yYXRlcyA9IDw3ODY0MzIwMDA+LCA8NzIyNTM0NDAwPjsKKwlzdGF0dXMgPSAib2theSI7 Cit9OworCismc2FpNiB7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAg PSA8JnBpbmN0cmxfc2FpNj47CisJYXNzaWduZWQtY2xvY2tzID0gPCZjbGsgSU1YOE1RX0NMS19T QUk2PjsKKwlhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gPCZjbGsgSU1YOE1RX0FVRElPX1BMTDFf T1VUPjsKKwlhc3NpZ25lZC1jbG9jay1yYXRlcyA9IDwyNDU3NjAwMD47CisJZnNsLHNhaS1zeW5j aHJvbm91cy1yeDsKKwlzdGF0dXMgPSAib2theSI7Cit9OworCismc252c19wd3JrZXkgeworCXN0 YXR1cyA9ICJva2F5IjsKK307CisKKyZzbnZzX3J0YyB7CisJc3RhdHVzID0gImRpc2FibGVkIjsK K307CisKKyZ1YXJ0MSB7IC8qIGNvbnNvbGUgKi8KKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQi OworCXBpbmN0cmwtMCA9IDwmcGluY3RybF91YXJ0MT47CisJc3RhdHVzID0gIm9rYXkiOworfTsK KworJnVhcnQyIHsgLyogVFBTIC0gR1BTIC0gREVCVUcgKi8KKwlwaW5jdHJsLW5hbWVzID0gImRl ZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF91YXJ0Mj47CisJc3RhdHVzID0gIm9rYXki OworCisJZ25zcyB7CisJCWNvbXBhdGlibGUgPSAiZ2xvYmFsdG9wLHBhNmgiOworCQl2Y2Mtc3Vw cGx5ID0gPCZyZWdfZ25zcz47CisJCWN1cnJlbnQtc3BlZWQgPSA8OTYwMD47CisJfTsKK307CisK KyZ1YXJ0MyB7IC8qIFNNQyAqLworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3Ry bC0wID0gPCZwaW5jdHJsX3VhcnQzPjsKKwlzdGF0dXMgPSAib2theSI7Cit9OworCismdWFydDQg eyAvKiBCVCAqLworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZw aW5jdHJsX3VhcnQ0PjsKKwl1YXJ0LWhhcy1ydHNjdHM7CisJc3RhdHVzID0gIm9rYXkiOworfTsK KworJnVzYjNfcGh5MCB7CisJc3RhdHVzID0gIm9rYXkiOworfTsKKworJnVzYjNfcGh5MSB7CisJ dmJ1cy1zdXBwbHkgPSA8JnJlZ19odWI+OworCXN0YXR1cyA9ICJva2F5IjsKK307CisKKyZ1c2Jf ZHdjM18wIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlk cl9tb2RlID0gIm90ZyI7CisJc25wcyxkaXNfdTNfc3VzcGh5X3F1aXJrOworCXN0YXR1cyA9ICJv a2F5IjsKKworCXBvcnRAMCB7CisJCXJlZyA9IDwwPjsKKworCQl0eXBlY19oczogZW5kcG9pbnQg eworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ1c2JfY29uX2hzPjsKKwkJfTsKKwl9OworCisJcG9y dEAxIHsKKwkJcmVnID0gPDE+OworCisJCXR5cGVjX3NzOiBlbmRwb2ludCB7CisJCQlyZW1vdGUt ZW5kcG9pbnQgPSA8JnVzYl9jb25fc3M+OworCQl9OworCX07Cit9OworCismdXNiX2R3YzNfMSB7 CisJZHJfbW9kZSA9ICJob3N0IjsKKwlzdGF0dXMgPSAib2theSI7CisJI2FkZHJlc3MtY2VsbHMg PSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwkvKiBNaWNyb2NoaXAgVVNCMjY0MiAqLwor CWh1YkAxIHsKKwkJY29tcGF0aWJsZSA9ICJ1c2I0MjQsMjY0MCI7CisJCXJlZyA9IDwxPjsKKwkJ I2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCW1hc3Mtc3Rv cmFnZUAxIHsKKwkJCWNvbXBhdGlibGUgPSAidXNiNDI0LDQwNDEiOworCQkJcmVnID0gPDE+Owor CQl9OworCX07Cit9OworCismdXNkaGMxIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAi c3RhdGVfMTAwbWh6IiwgInN0YXRlXzIwMG1oeiI7CisJcGluY3RybC0wID0gPCZwaW5jdHJsX3Vz ZGhjMT47CisJcGluY3RybC0xID0gPCZwaW5jdHJsX3VzZGhjMV8xMDBtaHo+OworCXBpbmN0cmwt MiA9IDwmcGluY3RybF91c2RoYzFfMjAwbWh6PjsKKwlidXMtd2lkdGggPSA8OD47CisJdm1tYy1z dXBwbHkgPSA8JnJlZ192ZGRfM3YzPjsKKwlwb3dlci1zdXBwbHkgPSA8JnJlZ192ZGRfMXY4PjsK Kwlub24tcmVtb3ZhYmxlOworCXN0YXR1cyA9ICJva2F5IjsKK307CisKKyZ1c2RoYzIgeworCXBp bmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsICJzdGF0ZV8xMDBtaHoiLCAic3RhdGVfMjAwbWh6IjsK KwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfdXNkaGMyPjsKKwlwaW5jdHJsLTEgPSA8JnBpbmN0cmxf dXNkaGMyXzEwMG1oej47CisJcGluY3RybC0yID0gPCZwaW5jdHJsX3VzZGhjMl8yMDBtaHo+Owor CWJ1cy13aWR0aCA9IDw0PjsKKwl2bW1jLXN1cHBseSA9IDwmcmVnX3dpZmlfM3YzPjsKKwljZC1n cGlvcyA9IDwmZ3BpbzIgMTIgR1BJT19BQ1RJVkVfTE9XPjsKKwlkaXNhYmxlLXdwOworCWNhcC1z ZGlvLWlycTsKKwlrZWVwLXBvd2VyLWluLXN1c3BlbmQ7CisJd2FrZXVwLXNvdXJjZTsKKwlzdGF0 dXMgPSAib2theSI7Cit9OworCismd2RvZzEgeworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7 CisJcGluY3RybC0wID0gPCZwaW5jdHJsX3dkb2c+OworCWZzbCxleHQtcmVzZXQtb3V0cHV0Owor CXN0YXR1cyA9ICJva2F5IjsKK307Ci0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==