From mboxrd@z Thu Jan 1 00:00:00 1970 From: Johan Jonker Subject: Re: [PATCH v2 3/3] arm64: dts: rockchip: add rk3318 A95X Z2 board Date: Tue, 4 Aug 2020 17:54:09 +0200 Message-ID: <818eacc7-d783-772e-4cce-fbcf40b1df7c@gmail.com> References: <20200718105343.5152-1-jbx6244@gmail.com> <20200718105343.5152-4-jbx6244@gmail.com> <6d028007-4360-e552-3707-3dd2712f2501@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <6d028007-4360-e552-3707-3dd2712f2501-5wv7dgnIgG8@public.gmane.org> Content-Language: en-US Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Robin Murphy , heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-rockchip.vger.kernel.org Hi Robin, Thank you for your review. Added some questions in return. This dts file seems to be some sort of variation of rk3328-box-liantong.dtsi in the manufacturer tree. Depending on the design the vendor then changes the wifi chip or removes the spdif connector to save some cost. On 8/3/20 11:41 PM, Robin Murphy wrote: > On 2020-07-18 11:53, Johan Jonker wrote: >> The rk3318 A95X Z2 boards are sold as TV box. >> No further documentation is given, but from the dts files >> extracted it seems that the rk3318 processor is simulair >> to the rk3328. This dts file contains only the basic nodes >> that have support in the mainline kernel. >> >> Features: >> >> CPU: RK3318 Quad-Core Cortex-A53 >> GPU: Mali-450 >> RAM: 2/4GB DDR3 >> ROM: EMMC 16/32/64GB >> HDMI: HDMI 2.0a for 4k@60Hz >> Ethernet: 10/100M standard RJ-45 >> WiFi: 2.4G+5G WIFI, 802.11 b/g/n >> Bluetooth: 4.0 >> 1 x USB 3.0 >> 1 x USB 2.0 >> 1 x Micro SD card slot >> 1 x SPDIF >> 1 x AV >> 1 x DC IN >> >> Signed-off-by: Johan Jonker >> --- >>   arch/arm64/boot/dts/rockchip/Makefile           |   1 + >>   arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts | 393 >> ++++++++++++++++++++++++ >>   2 files changed, 394 insertions(+) >>   create mode 100644 arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> >> diff --git a/arch/arm64/boot/dts/rockchip/Makefile >> b/arch/arm64/boot/dts/rockchip/Makefile >> index b87b1f773..aa508bc4a 100644 >> --- a/arch/arm64/boot/dts/rockchip/Makefile >> +++ b/arch/arm64/boot/dts/rockchip/Makefile >> @@ -2,6 +2,7 @@ >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb >> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb >> diff --git a/arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> b/arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> new file mode 100644 >> index 000000000..413418ea1 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> @@ -0,0 +1,393 @@ >> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) >> + >> +/dts-v1/; >> +#include >> +#include "rk3328.dtsi" >> + >> +/ { >> +    model = "A95X Z2"; >> +    compatible = "zkmagic,a95x-z2", "rockchip,rk3318"; >> + >> +    chosen { >> +        stdout-path = "serial2:1500000n8"; >> +    }; >> + >> +    adc-keys { >> +        compatible = "adc-keys"; >> +        io-channels = <&saradc 0>; >> +        io-channel-names = "buttons"; >> +        keyup-threshold-microvolt = <1800000>; >> +        poll-interval = <100>; >> + >> +        vol-up-key { >> +            label = "volume up"; >> +            linux,code = ; > > Really? If as usual this is actually the recovery button hidden inside > the box, it's somewhat questionable whether it's worth describing in DT > at all. At the very least it should probably be presented as something > more realistic than half a volume control. Dts use is not limited to a mainline kernel setting. In Android that seem to be a standard way needed to enter a menu. Then make it as complete as possible to make it work. What would be your realistic key proposal? > >> +            press-threshold-microvolt = <17000>; >> +        }; >> +    }; >> + >> +    ir-receiver { >> +        compatible = "gpio-ir-receiver"; >> +        gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; >> +        pinctrl-0 = <&ir_int>; >> +        pinctrl-names = "default"; >> +    }; >> + >> +    leds { >> +        compatible = "gpio-leds"; >> +        pinctrl-0 = <&cyx_led_pin>; >> +        pinctrl-names = "default"; >> + >> +        cyx_led: led-0 { > > What needs a phandle to this node to warrant a label? Without repeating previous discussions, I made a proposal that was approved. So we just stick to that set of rules consequently. A little explanation: With the conversion to yaml a preferred nodename was introduced. Legacy Rockchip node names were sort of free style and causing the dts-checker to produce a flood of warnings. The led properties are described in 2 places, under leds and under pinctrl. To improve the readability given the legacy and to prevent the disconnect between schematics, leds and pinctrl we add a label with a consistent name. Fix with help of the following rules: 1: Add nodename in the preferred form. 2: Always add a label that ends with '_led' to prevent conflicts with other labels such as 'power' and 'mmc' 3: If leds need pinctrl add a label that ends with '_led_pin' also to prevent conflicts with other labels. > >> +            default-state = "on"; >> +            gpios = <&gpio2 RK_PC7 GPIO_ACTIVE_LOW>; >> +            label = "CYX_LED"; This label with capital letters is used by an Android app, so keep it. >> +        }; >> +    }; >> + >> +    sdio_pwrseq: sdio-pwrseq { >> +        compatible = "mmc-pwrseq-simple"; >> +        pinctrl-0 = <&wifi_enable_h>; >> +        pinctrl-names = "default"; >> +        reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; >> +    }; >> + >> +    spdif-sound { >> +        compatible = "simple-audio-card"; >> +        simple-audio-card,name = "spdif"; Some programs don't like long names here. Recently I see others also use "SPDIF". Should I change? Currently for rk3328 we have: "Analog" and "HDMI" Is there a standard? Please advise. >> + >> +        simple-audio-card,cpu { >> +            sound-dai = <&spdif>; >> +        }; >> + >> +        simple-audio-card,codec { >> +            sound-dai = <&spdif_out>; >> +        }; >> +    }; >> + >> +    spdif_out: spdif-out { >> +        compatible = "linux,spdif-dit"; >> +        #sound-dai-cells = <0>; >> +    }; >> + >> +    /* Power tree */ >> +    regulators { > > Don't create fake "buses" for regulators, especially if they don't even > contain most of the regulators anyway. Agree. The original reason was not given. vccio_1v8_reg and vccio_3v3_reg are used mostly in &io_domains. Is there a dependency requirement that both must be probed/enabled before being used? Without these regulators in a bus should we then add a vcc-sys-regulator for a complete supply chain? vcc_sys: vcc-sys-regulator { compatible = "regulator-fixed"; regulator-name = "vcc_sys"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; regulator-boot-on; }; > >> +        compatible = "simple-mfd"; >> +        #address-cells = <1>; >> +        #size-cells = <0>; >> + >> +        vccio_1v8_reg: regulator@0 { >> +            compatible = "regulator-fixed"; >> +            reg = <0>; >> +            regulator-name = "vccio_1v8"; >> +            regulator-min-microvolt = <1800000>; >> +            regulator-max-microvolt = <1800000>; >> +            regulator-always-on; Just an example: vin-supply = <&vcc_sys>; >> +        }; >> + >> +        vccio_3v3_reg: regulator@1 { >> +            compatible = "regulator-fixed"; >> +            reg = <1>; >> +            regulator-name = "vccio_3v3"; >> +            regulator-min-microvolt = <3300000>; >> +            regulator-max-microvolt = <3300000>; >> +            regulator-always-on; Just an example: vin-supply = <&vcc_sys>; >> +        }; >> +    }; >> + >> +    vcc_otg_vbus: otg-vbus-regulator { >> +        compatible = "regulator-fixed"; >> +        gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; >> +        pinctrl-0 = <&otg_vbus_drv>; >> +        pinctrl-names = "default"; >> +        regulator-name = "vcc_otg_vbus"; >> +        regulator-min-microvolt = <5000000>; >> +        regulator-max-microvolt = <5000000>; >> +        enable-active-high; >> +    }; >> + >> +    vcc_phy: vcc-phy-regulator { >> +        compatible = "regulator-fixed"; >> +        regulator-name = "vcc_phy"; >> +        regulator-always-on; >> +        regulator-boot-on; >> +    }; > > Is this actually a distinct regulator? The reference design has the > internal FEPHY block powered pretty much directly from the general 1V8 > and 1V0 supplies that also power USB/HDMI/etc., so I'd rather expect > low-end boxes to follow suit. Either way there doesn't seem to be a > great deal of value in describing something with no controls, no voltage > information, and no connection to the power tree. Agree. phy-supply appears to be an optional property, so removing it is possible. It shows up in rk3328-roc-cc.dts and rk3328-evb.dts. What does the maintainer prefer? Remove or not? > >> + >> +    vcc_sd: sdmmc-regulator { >> +        compatible = "regulator-fixed"; >> +        gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>; >> +        pinctrl-0 = <&sdmmc0m1_gpio>; >> +        pinctrl-names = "default"; >> +        regulator-name = "vcc_sd"; >> +        regulator-min-microvolt = <3300000>; >> +        regulator-max-microvolt = <3300000>; >> +        vin-supply = <&vccio_3v3_reg>; >> +    }; >> + >> +    vdd_arm: vdd-arm { >> +        compatible = "pwm-regulator"; >> +        pwms = <&pwm0 0 5000 1>; >> +        regulator-name = "vdd_arm"; >> +        regulator-min-microvolt = <950000>; >> +        regulator-max-microvolt = <1400000>; >> +        regulator-settling-time-up-us = <250>; >> +        regulator-always-on; >> +        regulator-boot-on; >> +    }; >> + >> +    vdd_log: vdd-log { >> +        compatible = "pwm-regulator"; >> +        pwms = <&pwm1 0 5000 1>; >> +        regulator-name = "vdd_log"; >> +        regulator-min-microvolt = <900000>; >> +        regulator-max-microvolt = <1300000>; >> +        regulator-settling-time-up-us = <250>; >> +        regulator-always-on; >> +        regulator-boot-on; >> +    }; >> +}; >> + >> +&analog_sound { >> +    status = "okay"; >> +}; >> + >> +&codec { >> +    status = "okay"; >> +}; >> + >> +&cpu0 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu1 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu2 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu3 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu0_opp_table { >> +    opp-1200000000 { >> +        status = "disabled"; >> +    }; >> + >> +    opp-1296000000 { >> +        status = "disabled"; >> +    }; >> +}; >> + >> +&emmc { >> +    bus-width = <8>; >> +    cap-mmc-highspeed; >> +    non-removable; >> +    pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; >> +    pinctrl-names = "default"; >> +    status = "okay"; >> +}; >> + >> +&gmac2phy { >> +    assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>; >> +    assigned-clock-rate = <50000000>; >> +    assigned-clocks = <&cru SCLK_MAC2PHY>; >> +    clock_in_out = "output"; >> +    phy-supply = <&vcc_phy>; Remove or not? >> +    status = "okay"; >> +}; >> + >> +&gpu { >> +    mali-supply = <&vdd_log>; >> +}; >> + >> +&hdmi { >> +    ddc-i2c-scl-high-time-ns = <9625>; >> +    ddc-i2c-scl-low-time-ns = <10000>; >> +    status = "okay"; >> +}; >> + >> +&hdmiphy { >> +    status = "okay"; >> +}; >> + >> +&hdmi_sound { >> +    status = "okay"; >> +}; >> + >> +&i2s0 { >> +    status = "okay"; >> +}; >> + >> +&i2s1 { >> +    status = "okay"; >> +}; >> + >> +&io_domains { >> +    pmuio-supply = <&vccio_3v3_reg>; >> +    vccio1-supply = <&vccio_3v3_reg>; >> +    vccio2-supply = <&vccio_1v8_reg>; >> +    vccio3-supply = <&vccio_3v3_reg>; >> +    vccio4-supply = <&vccio_1v8_reg>; >> +    vccio5-supply = <&vccio_3v3_reg>; >> +    vccio6-supply = <&vccio_3v3_reg>; >> +    status = "okay"; >> +}; >> + >> +&pinctrl { >> +    ir { >> +        ir_int: ir-int { >> +            rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    leds { >> +        cyx_led_pin: cyx-led-pin { >> +            rockchip,pins = <2 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    pwm0 { >> +        pwm0_pin_pull_up: pwm0-pin-pull-up { >> +            rockchip,pins = <2 RK_PA4 1 &pcfg_pull_up>; >> +        }; >> +    }; >> + >> +    pwm1 { >> +        pwm1_pin_pull_up: pwm1-pin-pull-up { >> +            rockchip,pins = <2 RK_PA5 1 &pcfg_pull_up>; >> +        }; >> +    }; >> + >> +    sdio-pwrseq { >> +        wifi_enable_h: wifi-enable-h { >> +            rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    sdmmc1 { >> +        clk_32k_out: clk-32k-out { >> +            rockchip,pins = <1 RK_PD4 1 &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    usb { >> +        host_vbus_drv: host-vbus-drv { >> +            rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> + >> +        otg_vbus_drv: otg-vbus-drv { >> +            rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> +}; >> + >> +&pwm0 { >> +    pinctrl-0 = <&pwm0_pin_pull_up>; >> +    pinctrl-names = "active"; >> +    status = "okay"; >> +}; >> + >> +&pwm1 { >> +    pinctrl-0 = <&pwm1_pin_pull_up>; >> +    pinctrl-names = "active"; >> +    status = "okay"; >> +}; >> + >> +&saradc { >> +    vref-supply = <&vccio_1v8_reg>; >> +    status = "okay"; >> +}; >> + >> +&sdio { >> +    bus-width = <4>; >> +    cap-sd-highspeed; >> +    cap-sdio-irq; >> +    keep-power-in-suspend; >> +    max-frequency = <125000000>; >> +    mmc-pwrseq = <&sdio_pwrseq>; >> +    non-removable; >> +    pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk &clk_32k_out>; >> +    pinctrl-names = "default"; >> +    sd-uhs-sdr104; >> +    status = "okay"; >> +}; >> + >> +&sdmmc { >> +    bus-width = <4>; >> +    cap-sd-highspeed; >> +    disable-wp; This is from the manufacturer tree for a micro SD card. Remove or not? Please advise. >> +    pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>; >> +    pinctrl-names = "default"; >> +    vmmc-supply = <&vcc_sd>; >> +    status = "okay"; >> +}; >> + >> +&spdif { >> +    pinctrl-0 = <&spdifm0_tx>; >> +    pinctrl-names = "default"; Remove. Already in dtsi. >> +    status = "okay"; >> +}; >> + >> +&soc_crit { >> +    temperature = <115000>; /* millicelsius */ >> +}; >> + >> +&target { >> +    temperature = <105000>; /* millicelsius */ >> +}; >> + >> +&threshold { >> +    temperature = <90000>; /* millicelsius */ >> +}; >> + >> +&tsadc { >> +    rockchip,hw-tshut-temp = <120000>; >> +    status = "okay"; >> +}; >> + >> +&u2phy { >> +    status = "okay"; >> + >> +    u2phy_host: host-port { > > Just refer to the ports normally by label rather than duplicate a random > snippet of DTSI hierarchy - I'm not sure why this particular pattern > seems to get copied around so much. Here the node labels start with the same letters and the result will stay together. In other cases it will scatter all over the dts file and affects the readability. I just followed the manufacturer's example. If the maintainer agrees then I'll change. > > Robin. > >> +        status = "okay"; >> +    }; >> + >> +    u2phy_otg: otg-port { >> +        phy-supply = <&vcc_otg_vbus>; >> +        status = "okay"; >> +    }; >> +}; >> + >> +&uart0 { >> +    pinctrl-0 = <&uart0_xfer &uart0_cts>; >> +    pinctrl-names = "default"; Remove. Already in dtsi. >> +    status = "okay"; >> +}; >> + >> +&uart2 { >> +    status = "okay"; >> +}; >> + >> +&usb20_otg { >> +    dr_mode = "host"; >> +    status = "okay"; >> +}; >> + >> +&usb_host0_ehci { >> +    status = "okay"; >> +}; >> + >> +&usb_host0_ohci { >> +    status = "okay"; >> +}; >> + >> +&vop { >> +    status = "okay"; >> +}; >> + >> +&vop_mmu { >> +    status = "okay"; >> +}; >> 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=-13.0 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72DDFC433E0 for ; Tue, 4 Aug 2020 15:56:09 +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 417D9208A9 for ; Tue, 4 Aug 2020 15:56:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="3ga055Uz"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n2iTtAbO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 417D9208A9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=N1068zL+M6ffSE54CZUNJuYnUMCduLsrq2wMfg6/6D8=; b=3ga055UzUa+9EY8h3DpYTjSNZ 7UKakBMECxzVOFOhmgyeUzaXUAxkok5LfuvVr3xqrlBMEKeleYD4ydw/o1pSOlNsOmTP5fOr/1IFn /zdQ/lxaiYtZz02GjLbTUiD7D8ybcUY5O/TpoyXdZb7Shzxj/6EU05ZGltdZ2kS0Xt4cs31Mb8nBW Nnubb2LkFuRf5OzbuhcNJyijGtuG1raSnI+HvVvbg7NEc7Vr517h8HDVfgDd3cRKQ84x/hqc21UtQ hVTXNwZtUuZMdp+BpZLrIMceI9Mpp/GfVMzNqbdmAlLc6GWyKhMTzVRPJ9frDCYuFTAtlWkYAH6a8 DS3qwBSJw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k2zGb-0002Hi-Ko; Tue, 04 Aug 2020 15:54:17 +0000 Received: from mail-ed1-x541.google.com ([2a00:1450:4864:20::541]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k2zGY-0002Gy-Vq; Tue, 04 Aug 2020 15:54:16 +0000 Received: by mail-ed1-x541.google.com with SMTP id l23so16541342edv.11; Tue, 04 Aug 2020 08:54:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=n0tUEpg69IWrRV7C9pI6zHcJ+6oEng/DEKClCAka/lM=; b=n2iTtAbOJnMDjoaPE/zTquLrnSRG7DaCE4dxl2BGDEA4Z7uRqGBEjH2lOGyVUQhzBv E75oYOT/fhwwYwOlKlRyiOLRLFon408Or9IVmPYQ4xvEBoXNF/eAL0W9WcxnmCvacM27 kvj98wpZ6cmIwt6NtzvdLdevZ8CtSQHjl2cmhHT+rFyKfzLcEcWdSGHliolIUabJHVhb 5fj15e22zeRaXMYumLvd7XC7nGHQAhouYLul0gTTeCiTSDNFrg6U+JgXNtzKIBlsK9dl hW81kxfTcZeSzI6G6ks1pQpKYWfNcNWiPs8Scaatg5jOI3hbCO4394KmvV8S57ysryxR 201w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=n0tUEpg69IWrRV7C9pI6zHcJ+6oEng/DEKClCAka/lM=; b=ACgYocrw3ZTFf2OOW6lEvgoRBzDR+M8jPJ3qVK/3GBaNMXbT96VDSl02u8Dhm3/Rtx XqGRDl0shUP0NzNGM/mJek7i9uRNdaBPK04eOPKnnFzFH83CdfjNVB0S14dgrLepsCZt lz/OagaN9IyOI12AisNqeQxTMCkwfO5SUCjO8Oi8bV1ooT0CdeKusvqe+2gWmQp5wunL v5zhOQZN5Bap2tDsDhrm8IPYcDTR0L4yTuckFQwVeFL5iY+PNfb6vvpLS8h3llRpc4Bb 4mE6ZVpcIKTE6MrHXKPy2E/NCIhToYR2rfabXBJlvSWsOrObzYFJSrfeIDTIZRGC2AjE 4edw== X-Gm-Message-State: AOAM533pj02xtUfSYfx1B6djeMbwhybnRTF9VG09E+00P7xZdJBBHEtw kyJAQlzcwWGZMgOsIbbUZx3yxQuIJb8= X-Google-Smtp-Source: ABdhPJwC6wGRwVvDcDHbIIRIhl305TYTsW2fy58JrE3ykTFvxRhHt/j/2TpRZWiWQcf1IUim2t71tg== X-Received: by 2002:a50:d908:: with SMTP id t8mr20604944edj.373.1596556451703; Tue, 04 Aug 2020 08:54:11 -0700 (PDT) Received: from [192.168.2.1] (81-204-249-205.fixed.kpn.net. [81.204.249.205]) by smtp.gmail.com with ESMTPSA id v14sm19034180ejb.63.2020.08.04.08.54.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Aug 2020 08:54:11 -0700 (PDT) Subject: Re: [PATCH v2 3/3] arm64: dts: rockchip: add rk3318 A95X Z2 board To: Robin Murphy , heiko@sntech.de References: <20200718105343.5152-1-jbx6244@gmail.com> <20200718105343.5152-4-jbx6244@gmail.com> <6d028007-4360-e552-3707-3dd2712f2501@arm.com> From: Johan Jonker Message-ID: <818eacc7-d783-772e-4cce-fbcf40b1df7c@gmail.com> Date: Tue, 4 Aug 2020 17:54:09 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <6d028007-4360-e552-3707-3dd2712f2501@arm.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200804_115415_053552_DA2BD213 X-CRM114-Status: GOOD ( 32.53 ) 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, robh+dt@kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org 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 SGkgUm9iaW4sCgpUaGFuayB5b3UgZm9yIHlvdXIgcmV2aWV3LgpBZGRlZCBzb21lIHF1ZXN0aW9u cyBpbiByZXR1cm4uCgpUaGlzIGR0cyBmaWxlIHNlZW1zIHRvIGJlIHNvbWUgc29ydCBvZiB2YXJp YXRpb24gb2YKcmszMzI4LWJveC1saWFudG9uZy5kdHNpIGluIHRoZSBtYW51ZmFjdHVyZXIgdHJl ZS4gRGVwZW5kaW5nIG9uIHRoZQpkZXNpZ24gdGhlIHZlbmRvciB0aGVuIGNoYW5nZXMgdGhlIHdp ZmkgY2hpcCBvciByZW1vdmVzIHRoZSBzcGRpZgpjb25uZWN0b3IgdG8gc2F2ZSBzb21lIGNvc3Qu CgpPbiA4LzMvMjAgMTE6NDEgUE0sIFJvYmluIE11cnBoeSB3cm90ZToKPiBPbiAyMDIwLTA3LTE4 IDExOjUzLCBKb2hhbiBKb25rZXIgd3JvdGU6Cj4+IFRoZSByazMzMTggQTk1WCBaMiBib2FyZHMg YXJlIHNvbGQgYXMgVFYgYm94Lgo+PiBObyBmdXJ0aGVyIGRvY3VtZW50YXRpb24gaXMgZ2l2ZW4s IGJ1dCBmcm9tIHRoZSBkdHMgZmlsZXMKPj4gZXh0cmFjdGVkIGl0IHNlZW1zIHRoYXQgdGhlIHJr MzMxOCBwcm9jZXNzb3IgaXMgc2ltdWxhaXIKPj4gdG8gdGhlIHJrMzMyOC4gVGhpcyBkdHMgZmls ZSBjb250YWlucyBvbmx5IHRoZSBiYXNpYyBub2Rlcwo+PiB0aGF0IGhhdmUgc3VwcG9ydCBpbiB0 aGUgbWFpbmxpbmUga2VybmVsLgo+Pgo+PiBGZWF0dXJlczoKPj4KPj4gQ1BVOiBSSzMzMTggUXVh ZC1Db3JlIENvcnRleC1BNTMKPj4gR1BVOiBNYWxpLTQ1MAo+PiBSQU06IDIvNEdCIEREUjMKPj4g Uk9NOiBFTU1DIDE2LzMyLzY0R0IKPj4gSERNSTogSERNSSAyLjBhIGZvciA0a0A2MEh6Cj4+IEV0 aGVybmV0OiAxMC8xMDBNIHN0YW5kYXJkIFJKLTQ1Cj4+IFdpRmk6IDIuNEcrNUcgV0lGSSwgODAy LjExIGIvZy9uCj4+IEJsdWV0b290aDogNC4wCj4+IDEgeCBVU0IgMy4wCj4+IDEgeCBVU0IgMi4w Cj4+IDEgeCBNaWNybyBTRCBjYXJkIHNsb3QKPj4gMSB4IFNQRElGCj4+IDEgeCBBVgo+PiAxIHgg REMgSU4KPj4KPj4gU2lnbmVkLW9mZi1ieTogSm9oYW4gSm9ua2VyIDxqYng2MjQ0QGdtYWlsLmNv bT4KPj4gLS0tCj4+IMKgIGFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvTWFrZWZpbGXCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4gwqAgYXJjaC9hcm02NC9ib290L2R0cy9yb2Nr Y2hpcC9yazMzMTgtYTk1eC16Mi5kdHMgfCAzOTMKPj4gKysrKysrKysrKysrKysrKysrKysrKysr Cj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMoKykKPj4gwqAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszMzE4LWE5NXgtejIuZHRz Cj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL01ha2VmaWxl Cj4+IGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9NYWtlZmlsZQo+PiBpbmRleCBiODdi MWY3NzMuLmFhNTA4YmM0YSAxMDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9yb2Nr Y2hpcC9NYWtlZmlsZQo+PiArKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL01ha2Vm aWxlCj4+IEBAIC0yLDYgKzIsNyBAQAo+PiDCoCBkdGItJChDT05GSUdfQVJDSF9ST0NLQ0hJUCkg Kz0gcHgzMC1ldmIuZHRiCj4+IMKgIGR0Yi0kKENPTkZJR19BUkNIX1JPQ0tDSElQKSArPSByazMz MDgtZXZiLmR0Ygo+PiDCoCBkdGItJChDT05GSUdfQVJDSF9ST0NLQ0hJUCkgKz0gcmszMzA4LXJv Yy1jYy5kdGIKPj4gK2R0Yi0kKENPTkZJR19BUkNIX1JPQ0tDSElQKSArPSByazMzMTgtYTk1eC16 Mi5kdGIKPj4gwqAgZHRiLSQoQ09ORklHX0FSQ0hfUk9DS0NISVApICs9IHJrMzMyNi1vZHJvaWQt Z28yLmR0Ygo+PiDCoCBkdGItJChDT05GSUdfQVJDSF9ST0NLQ0hJUCkgKz0gcmszMzI4LWExLmR0 Ygo+PiDCoCBkdGItJChDT05GSUdfQVJDSF9ST0NLQ0hJUCkgKz0gcmszMzI4LWV2Yi5kdGIKPj4g ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszMzE4LWE5NXgtejIu ZHRzCj4+IGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazMzMTgtYTk1eC16Mi5kdHMK Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwLi40MTM0MThlYTEKPj4g LS0tIC9kZXYvbnVsbAo+PiArKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzMx OC1hOTV4LXoyLmR0cwo+PiBAQCAtMCwwICsxLDM5MyBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IChHUEwtMi4wKyBPUiBNSVQpCj4+ICsKPj4gKy9kdHMtdjEvOwo+PiArI2luY2x1 ZGUgPGR0LWJpbmRpbmdzL2lucHV0L2lucHV0Lmg+Cj4+ICsjaW5jbHVkZSAicmszMzI4LmR0c2ki Cj4+ICsKPj4gKy8gewo+PiArwqDCoMKgIG1vZGVsID0gIkE5NVggWjIiOwo+PiArwqDCoMKgIGNv bXBhdGlibGUgPSAiemttYWdpYyxhOTV4LXoyIiwgInJvY2tjaGlwLHJrMzMxOCI7Cj4+ICsKPj4g K8KgwqDCoCBjaG9zZW4gewo+PiArwqDCoMKgwqDCoMKgwqAgc3Rkb3V0LXBhdGggPSAic2VyaWFs MjoxNTAwMDAwbjgiOwo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCBhZGMta2V5cyB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBjb21wYXRpYmxlID0gImFkYy1rZXlzIjsKPj4gK8KgwqDCoMKgwqDC oMKgIGlvLWNoYW5uZWxzID0gPCZzYXJhZGMgMD47Cj4+ICvCoMKgwqDCoMKgwqDCoCBpby1jaGFu bmVsLW5hbWVzID0gImJ1dHRvbnMiOwo+PiArwqDCoMKgwqDCoMKgwqAga2V5dXAtdGhyZXNob2xk LW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHBvbGwtaW50ZXJ2YWwg PSA8MTAwPjsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgdm9sLXVwLWtleSB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGxhYmVsID0gInZvbHVtZSB1cCI7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGxpbnV4LGNvZGUgPSA8S0VZX1ZPTFVNRVVQPjsKPiAKPiBSZWFsbHk/IElmIGFzIHVz dWFsIHRoaXMgaXMgYWN0dWFsbHkgdGhlIHJlY292ZXJ5IGJ1dHRvbiBoaWRkZW4gaW5zaWRlCj4g dGhlIGJveCwgaXQncyBzb21ld2hhdCBxdWVzdGlvbmFibGUgd2hldGhlciBpdCdzIHdvcnRoIGRl c2NyaWJpbmcgaW4gRFQKPiBhdCBhbGwuIEF0IHRoZSB2ZXJ5IGxlYXN0IGl0IHNob3VsZCBwcm9i YWJseSBiZSBwcmVzZW50ZWQgYXMgc29tZXRoaW5nCj4gbW9yZSByZWFsaXN0aWMgdGhhbiBoYWxm IGEgdm9sdW1lIGNvbnRyb2wuCgpEdHMgdXNlIGlzIG5vdCBsaW1pdGVkIHRvIGEgbWFpbmxpbmUg a2VybmVsIHNldHRpbmcuIEluIEFuZHJvaWQgdGhhdAo8S0VZX1ZPTFVNRVVQPiBzZWVtIHRvIGJl IGEgc3RhbmRhcmQgd2F5IG5lZWRlZCB0byBlbnRlciBhIG1lbnUuIFRoZW4KbWFrZSBpdCBhcyBj b21wbGV0ZSBhcyBwb3NzaWJsZSB0byBtYWtlIGl0IHdvcmsuCgpXaGF0IHdvdWxkIGJlIHlvdXIg cmVhbGlzdGljIGtleSBwcm9wb3NhbD8KCj4gCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBy ZXNzLXRocmVzaG9sZC1taWNyb3ZvbHQgPSA8MTcwMDA+Owo+PiArwqDCoMKgwqDCoMKgwqAgfTsK Pj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAgaXItcmVjZWl2ZXIgewo+PiArwqDCoMKgwqDC oMKgwqAgY29tcGF0aWJsZSA9ICJncGlvLWlyLXJlY2VpdmVyIjsKPj4gK8KgwqDCoMKgwqDCoMKg IGdwaW9zID0gPCZncGlvMiBSS19QQTIgR1BJT19BQ1RJVkVfTE9XPjsKPj4gK8KgwqDCoMKgwqDC oMKgIHBpbmN0cmwtMCA9IDwmaXJfaW50PjsKPj4gK8KgwqDCoMKgwqDCoMKgIHBpbmN0cmwtbmFt ZXMgPSAiZGVmYXVsdCI7Cj4+ICvCoMKgwqAgfTsKPj4gKwo+PiArwqDCoMKgIGxlZHMgewo+PiAr wqDCoMKgwqDCoMKgwqAgY29tcGF0aWJsZSA9ICJncGlvLWxlZHMiOwo+PiArwqDCoMKgwqDCoMKg wqAgcGluY3RybC0wID0gPCZjeXhfbGVkX3Bpbj47Cj4+ICvCoMKgwqDCoMKgwqDCoCBwaW5jdHJs LW5hbWVzID0gImRlZmF1bHQiOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBjeXhfbGVkOiBsZWQt MCB7Cj4gCj4gV2hhdCBuZWVkcyBhIHBoYW5kbGUgdG8gdGhpcyBub2RlIHRvIHdhcnJhbnQgYSBs YWJlbD8KCldpdGhvdXQgcmVwZWF0aW5nIHByZXZpb3VzIGRpc2N1c3Npb25zLCBJIG1hZGUgYSBw cm9wb3NhbCB0aGF0IHdhcwphcHByb3ZlZC4gU28gd2UganVzdCBzdGljayB0byB0aGF0IHNldCBv ZiBydWxlcyBjb25zZXF1ZW50bHkuCgpBIGxpdHRsZSBleHBsYW5hdGlvbjoKV2l0aCB0aGUgY29u dmVyc2lvbiB0byB5YW1sIGEgcHJlZmVycmVkIG5vZGVuYW1lIHdhcyBpbnRyb2R1Y2VkLgpMZWdh Y3kgUm9ja2NoaXAgbm9kZSBuYW1lcyB3ZXJlIHNvcnQgb2YgZnJlZSBzdHlsZSBhbmQgY2F1c2lu ZyB0aGUKZHRzLWNoZWNrZXIgdG8gcHJvZHVjZSBhIGZsb29kIG9mIHdhcm5pbmdzLgpUaGUgbGVk IHByb3BlcnRpZXMgYXJlIGRlc2NyaWJlZCBpbiAyIHBsYWNlcywgdW5kZXIgbGVkcyBhbmQgdW5k ZXIgcGluY3RybC4KVG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgZ2l2ZW4gdGhlIGxlZ2FjeSBh bmQgdG8gcHJldmVudCB0aGUKZGlzY29ubmVjdCBiZXR3ZWVuIHNjaGVtYXRpY3MsIGxlZHMgYW5k IHBpbmN0cmwgd2UgYWRkIGEgbGFiZWwgd2l0aCBhCmNvbnNpc3RlbnQgbmFtZS4KCkZpeCB3aXRo IGhlbHAgb2YgdGhlIGZvbGxvd2luZyBydWxlczoKCjE6IEFkZCBub2RlbmFtZSBpbiB0aGUgcHJl ZmVycmVkIGZvcm0uCgoyOiBBbHdheXMgYWRkIGEgbGFiZWwgdGhhdCBlbmRzIHdpdGggJ19sZWQn IHRvIHByZXZlbnQgY29uZmxpY3RzCiAgIHdpdGggb3RoZXIgbGFiZWxzIHN1Y2ggYXMgJ3Bvd2Vy JyBhbmQgJ21tYycKCjM6IElmIGxlZHMgbmVlZCBwaW5jdHJsIGFkZCBhIGxhYmVsIHRoYXQgZW5k cyB3aXRoICdfbGVkX3BpbicKICAgYWxzbyB0byBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVy IGxhYmVscy4KCj4gCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlZmF1bHQtc3RhdGUgPSAi b24iOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBncGlvcyA9IDwmZ3BpbzIgUktfUEM3IEdQ SU9fQUNUSVZFX0xPVz47Cgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYWJlbCA9ICJDWVhf TEVEIjsKClRoaXMgbGFiZWwgd2l0aCBjYXBpdGFsIGxldHRlcnMgaXMgdXNlZCBieSBhbiBBbmRy b2lkIGFwcCwgc28ga2VlcCBpdC4KCj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgIH07 Cj4+ICsKPj4gK8KgwqDCoCBzZGlvX3B3cnNlcTogc2Rpby1wd3JzZXEgewo+PiArwqDCoMKgwqDC oMKgwqAgY29tcGF0aWJsZSA9ICJtbWMtcHdyc2VxLXNpbXBsZSI7Cj4+ICvCoMKgwqDCoMKgwqDC oCBwaW5jdHJsLTAgPSA8JndpZmlfZW5hYmxlX2g+Owo+PiArwqDCoMKgwqDCoMKgwqAgcGluY3Ry bC1uYW1lcyA9ICJkZWZhdWx0IjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlc2V0LWdwaW9zID0gPCZn cGlvMSBSS19QQzIgR1BJT19BQ1RJVkVfTE9XPjsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKg wqAgc3BkaWYtc291bmQgewo+PiArwqDCoMKgwqDCoMKgwqAgY29tcGF0aWJsZSA9ICJzaW1wbGUt YXVkaW8tY2FyZCI7Cgo+PiArwqDCoMKgwqDCoMKgwqAgc2ltcGxlLWF1ZGlvLWNhcmQsbmFtZSA9 ICJzcGRpZiI7CgpTb21lIHByb2dyYW1zIGRvbid0IGxpa2UgbG9uZyBuYW1lcyBoZXJlLgpSZWNl bnRseSBJIHNlZSBvdGhlcnMgYWxzbyB1c2UgIlNQRElGIi4KU2hvdWxkIEkgY2hhbmdlPwpDdXJy ZW50bHkgZm9yIHJrMzMyOCB3ZSBoYXZlOiAiQW5hbG9nIiBhbmQgIkhETUkiCklzIHRoZXJlIGEg c3RhbmRhcmQ/ClBsZWFzZSBhZHZpc2UuCgo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBzaW1wbGUt YXVkaW8tY2FyZCxjcHUgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzb3VuZC1kYWkgPSA8 JnNwZGlmPjsKPj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHNp bXBsZS1hdWRpby1jYXJkLGNvZGVjIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc291bmQt ZGFpID0gPCZzcGRpZl9vdXQ+Owo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoCB9Owo+ PiArCj4+ICvCoMKgwqAgc3BkaWZfb3V0OiBzcGRpZi1vdXQgewo+PiArwqDCoMKgwqDCoMKgwqAg Y29tcGF0aWJsZSA9ICJsaW51eCxzcGRpZi1kaXQiOwo+PiArwqDCoMKgwqDCoMKgwqAgI3NvdW5k LWRhaS1jZWxscyA9IDwwPjsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAgLyogUG93ZXIg dHJlZSAqLwo+PiArwqDCoMKgIHJlZ3VsYXRvcnMgewo+IAo+IERvbid0IGNyZWF0ZSBmYWtlICJi dXNlcyIgZm9yIHJlZ3VsYXRvcnMsIGVzcGVjaWFsbHkgaWYgdGhleSBkb24ndCBldmVuCj4gY29u dGFpbiBtb3N0IG9mIHRoZSByZWd1bGF0b3JzIGFueXdheS4KCkFncmVlLgpUaGUgb3JpZ2luYWwg cmVhc29uIHdhcyBub3QgZ2l2ZW4uCnZjY2lvXzF2OF9yZWcgYW5kIHZjY2lvXzN2M19yZWcgYXJl IHVzZWQgbW9zdGx5IGluICZpb19kb21haW5zLgoKSXMgdGhlcmUgYSBkZXBlbmRlbmN5IHJlcXVp cmVtZW50IHRoYXQgYm90aCBtdXN0IGJlIHByb2JlZC9lbmFibGVkCmJlZm9yZSBiZWluZyB1c2Vk PwoKV2l0aG91dCB0aGVzZSByZWd1bGF0b3JzIGluIGEgYnVzIHNob3VsZCB3ZSB0aGVuIGFkZCBh IHZjYy1zeXMtcmVndWxhdG9yCmZvciBhIGNvbXBsZXRlIHN1cHBseSBjaGFpbj8KCgl2Y2Nfc3lz OiB2Y2Mtc3lzLXJlZ3VsYXRvciB7CgkJY29tcGF0aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQiOwoJ CXJlZ3VsYXRvci1uYW1lID0gInZjY19zeXMiOwoJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0g PDUwMDAwMDA+OwoJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDUwMDAwMDA+OwoJCXJlZ3Vs YXRvci1hbHdheXMtb247CgkJcmVndWxhdG9yLWJvb3Qtb247Cgl9OwoKPiAKPj4gK8KgwqDCoMKg wqDCoMKgIGNvbXBhdGlibGUgPSAic2ltcGxlLW1mZCI7Cj4+ICvCoMKgwqDCoMKgwqDCoCAjYWRk cmVzcy1jZWxscyA9IDwxPjsKPj4gK8KgwqDCoMKgwqDCoMKgICNzaXplLWNlbGxzID0gPDA+Owo+ PiArCj4+ICvCoMKgwqDCoMKgwqDCoCB2Y2Npb18xdjhfcmVnOiByZWd1bGF0b3JAMCB7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbXBhdGlibGUgPSAicmVndWxhdG9yLWZpeGVkIjsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVnID0gPDA+Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZWd1bGF0b3ItbmFtZSA9ICJ2Y2Npb18xdjgiOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1hbHdheXMtb247Ckp1c3QgYW4gZXhhbXBsZToK CQl2aW4tc3VwcGx5ID0gPCZ2Y2Nfc3lzPjsKCj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoCB2Y2Npb18zdjNfcmVnOiByZWd1bGF0b3JAMSB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbXBhdGlibGUgPSAicmVndWxhdG9yLWZpeGVkIjsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmVnID0gPDE+Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZWd1bGF0b3ItbmFtZSA9ICJ2Y2Npb18zdjMiOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1hbHdheXMtb247CgpKdXN0IGFuIGV4YW1wbGU6CgkJdmlu LXN1cHBseSA9IDwmdmNjX3N5cz47Cgo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoCB9 Owo+PiArCj4+ICvCoMKgwqAgdmNjX290Z192YnVzOiBvdGctdmJ1cy1yZWd1bGF0b3Igewo+PiAr wqDCoMKgwqDCoMKgwqAgY29tcGF0aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQiOwo+PiArwqDCoMKg wqDCoMKgwqAgZ3BpbyA9IDwmZ3BpbzAgUktfUEEyIEdQSU9fQUNUSVZFX0hJR0g+Owo+PiArwqDC oMKgwqDCoMKgwqAgcGluY3RybC0wID0gPCZvdGdfdmJ1c19kcnY+Owo+PiArwqDCoMKgwqDCoMKg wqAgcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRv ci1uYW1lID0gInZjY19vdGdfdmJ1cyI7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItbWlu LW1pY3Jvdm9sdCA9IDw1MDAwMDAwPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1tYXgt bWljcm92b2x0ID0gPDUwMDAwMDA+Owo+PiArwqDCoMKgwqDCoMKgwqAgZW5hYmxlLWFjdGl2ZS1o aWdoOwo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCB2Y2NfcGh5OiB2Y2MtcGh5LXJlZ3Vs YXRvciB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjb21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7 Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItbmFtZSA9ICJ2Y2NfcGh5IjsKPj4gK8KgwqDC oMKgwqDCoMKgIHJlZ3VsYXRvci1hbHdheXMtb247Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0 b3ItYm9vdC1vbjsKPj4gK8KgwqDCoCB9Owo+IAoKPiBJcyB0aGlzIGFjdHVhbGx5IGEgZGlzdGlu Y3QgcmVndWxhdG9yPyBUaGUgcmVmZXJlbmNlIGRlc2lnbiBoYXMgdGhlCj4gaW50ZXJuYWwgRkVQ SFkgYmxvY2sgcG93ZXJlZCBwcmV0dHkgbXVjaCBkaXJlY3RseSBmcm9tIHRoZSBnZW5lcmFsIDFW OAo+IGFuZCAxVjAgc3VwcGxpZXMgdGhhdCBhbHNvIHBvd2VyIFVTQi9IRE1JL2V0Yy4sIHNvIEkn ZCByYXRoZXIgZXhwZWN0Cj4gbG93LWVuZCBib3hlcyB0byBmb2xsb3cgc3VpdC4gRWl0aGVyIHdh eSB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYQo+IGdyZWF0IGRlYWwgb2YgdmFsdWUgaW4gZGVz Y3JpYmluZyBzb21ldGhpbmcgd2l0aCBubyBjb250cm9scywgbm8gdm9sdGFnZQo+IGluZm9ybWF0 aW9uLCBhbmQgbm8gY29ubmVjdGlvbiB0byB0aGUgcG93ZXIgdHJlZS4KCkFncmVlLgpwaHktc3Vw cGx5IGFwcGVhcnMgdG8gYmUgYW4gb3B0aW9uYWwgcHJvcGVydHksIHNvIHJlbW92aW5nIGl0IGlz CnBvc3NpYmxlLiBJdCBzaG93cyB1cCBpbiByazMzMjgtcm9jLWNjLmR0cyBhbmQgcmszMzI4LWV2 Yi5kdHMuCgpXaGF0IGRvZXMgdGhlIG1haW50YWluZXIgcHJlZmVyPyBSZW1vdmUgb3Igbm90PwoK PiAKPj4gKwo+PiArwqDCoMKgIHZjY19zZDogc2RtbWMtcmVndWxhdG9yIHsKPj4gK8KgwqDCoMKg wqDCoMKgIGNvbXBhdGlibGUgPSAicmVndWxhdG9yLWZpeGVkIjsKPj4gK8KgwqDCoMKgwqDCoMKg IGdwaW8gPSA8JmdwaW8wIFJLX1BENiBHUElPX0FDVElWRV9MT1c+Owo+PiArwqDCoMKgwqDCoMKg wqAgcGluY3RybC0wID0gPCZzZG1tYzBtMV9ncGlvPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHBpbmN0 cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItbmFtZSA9 ICJ2Y2Nfc2QiOwo+PiArwqDCoMKgwqDCoMKgwqAgcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8 MzMwMDAwMD47Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwz MzAwMDAwPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHZpbi1zdXBwbHkgPSA8JnZjY2lvXzN2M19yZWc+ Owo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCB2ZGRfYXJtOiB2ZGQtYXJtIHsKPj4gK8Kg wqDCoMKgwqDCoMKgIGNvbXBhdGlibGUgPSAicHdtLXJlZ3VsYXRvciI7Cj4+ICvCoMKgwqDCoMKg wqDCoCBwd21zID0gPCZwd20wIDAgNTAwMCAxPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRv ci1uYW1lID0gInZkZF9hcm0iOwo+PiArwqDCoMKgwqDCoMKgwqAgcmVndWxhdG9yLW1pbi1taWNy b3ZvbHQgPSA8OTUwMDAwPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1tYXgtbWljcm92 b2x0ID0gPDE0MDAwMDA+Owo+PiArwqDCoMKgwqDCoMKgwqAgcmVndWxhdG9yLXNldHRsaW5nLXRp bWUtdXAtdXMgPSA8MjUwPjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1hbHdheXMtb247 Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItYm9vdC1vbjsKPj4gK8KgwqDCoCB9Owo+PiAr Cj4+ICvCoMKgwqAgdmRkX2xvZzogdmRkLWxvZyB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjb21wYXRp YmxlID0gInB3bS1yZWd1bGF0b3IiOwo+PiArwqDCoMKgwqDCoMKgwqAgcHdtcyA9IDwmcHdtMSAw IDUwMDAgMT47Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItbmFtZSA9ICJ2ZGRfbG9nIjsK Pj4gK8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDkwMDAwMD47Cj4+ ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzAwMDAwPjsKPj4g K8KgwqDCoMKgwqDCoMKgIHJlZ3VsYXRvci1zZXR0bGluZy10aW1lLXVwLXVzID0gPDI1MD47Cj4+ ICvCoMKgwqDCoMKgwqDCoCByZWd1bGF0b3ItYWx3YXlzLW9uOwo+PiArwqDCoMKgwqDCoMKgwqAg cmVndWxhdG9yLWJvb3Qtb247Cj4+ICvCoMKgwqAgfTsKPj4gK307Cj4+ICsKPj4gKyZhbmFsb2df c291bmQgewo+PiArwqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZjb2Rl YyB7Cj4+ICvCoMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+PiArfTsKPj4gKwo+PiArJmNwdTAgewo+ PiArwqDCoMKgIGNwdS1zdXBwbHkgPSA8JnZkZF9hcm0+Owo+PiArfTsKPj4gKwo+PiArJmNwdTEg ewo+PiArwqDCoMKgIGNwdS1zdXBwbHkgPSA8JnZkZF9hcm0+Owo+PiArfTsKPj4gKwo+PiArJmNw dTIgewo+PiArwqDCoMKgIGNwdS1zdXBwbHkgPSA8JnZkZF9hcm0+Owo+PiArfTsKPj4gKwo+PiAr JmNwdTMgewo+PiArwqDCoMKgIGNwdS1zdXBwbHkgPSA8JnZkZF9hcm0+Owo+PiArfTsKPj4gKwo+ PiArJmNwdTBfb3BwX3RhYmxlIHsKPj4gK8KgwqDCoCBvcHAtMTIwMDAwMDAwMCB7Cj4+ICvCoMKg wqDCoMKgwqDCoCBzdGF0dXMgPSAiZGlzYWJsZWQiOwo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8Kg wqDCoCBvcHAtMTI5NjAwMDAwMCB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSAiZGlzYWJs ZWQiOwo+PiArwqDCoMKgIH07Cj4+ICt9Owo+PiArCj4+ICsmZW1tYyB7Cj4+ICvCoMKgwqAgYnVz LXdpZHRoID0gPDg+Owo+PiArwqDCoMKgIGNhcC1tbWMtaGlnaHNwZWVkOwo+PiArwqDCoMKgIG5v bi1yZW1vdmFibGU7Cj4+ICvCoMKgwqAgcGluY3RybC0wID0gPCZlbW1jX2NsayAmZW1tY19jbWQg JmVtbWNfYnVzOD47Cj4+ICvCoMKgwqAgcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPj4gK8Kg wqDCoCBzdGF0dXMgPSAib2theSI7Cj4+ICt9Owo+PiArCj4+ICsmZ21hYzJwaHkgewo+PiArwqDC oMKgIGFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSA8JmNydSBTQ0xLX01BQzJQSFlfU1JDPjsKPj4g K8KgwqDCoCBhc3NpZ25lZC1jbG9jay1yYXRlID0gPDUwMDAwMDAwPjsKPj4gK8KgwqDCoCBhc3Np Z25lZC1jbG9ja3MgPSA8JmNydSBTQ0xLX01BQzJQSFk+Owo+PiArwqDCoMKgIGNsb2NrX2luX291 dCA9ICJvdXRwdXQiOwoKPj4gK8KgwqDCoCBwaHktc3VwcGx5ID0gPCZ2Y2NfcGh5PjsKClJlbW92 ZSBvciBub3Q/Cgo+PiArwqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZn cHUgewo+PiArwqDCoMKgIG1hbGktc3VwcGx5ID0gPCZ2ZGRfbG9nPjsKPj4gK307Cj4+ICsKPj4g KyZoZG1pIHsKPj4gK8KgwqDCoCBkZGMtaTJjLXNjbC1oaWdoLXRpbWUtbnMgPSA8OTYyNT47Cj4+ ICvCoMKgwqAgZGRjLWkyYy1zY2wtbG93LXRpbWUtbnMgPSA8MTAwMDA+Owo+PiArwqDCoMKgIHN0 YXR1cyA9ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZoZG1pcGh5IHsKPj4gK8KgwqDCoCBzdGF0 dXMgPSAib2theSI7Cj4+ICt9Owo+PiArCj4+ICsmaGRtaV9zb3VuZCB7Cj4+ICvCoMKgwqAgc3Rh dHVzID0gIm9rYXkiOwo+PiArfTsKPj4gKwo+PiArJmkyczAgewo+PiArwqDCoMKgIHN0YXR1cyA9 ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZpMnMxIHsKPj4gK8KgwqDCoCBzdGF0dXMgPSAib2th eSI7Cj4+ICt9Owo+PiArCj4+ICsmaW9fZG9tYWlucyB7Cj4+ICvCoMKgwqAgcG11aW8tc3VwcGx5 ID0gPCZ2Y2Npb18zdjNfcmVnPjsKPj4gK8KgwqDCoCB2Y2NpbzEtc3VwcGx5ID0gPCZ2Y2Npb18z djNfcmVnPjsKPj4gK8KgwqDCoCB2Y2NpbzItc3VwcGx5ID0gPCZ2Y2Npb18xdjhfcmVnPjsKPj4g K8KgwqDCoCB2Y2NpbzMtc3VwcGx5ID0gPCZ2Y2Npb18zdjNfcmVnPjsKPj4gK8KgwqDCoCB2Y2Np bzQtc3VwcGx5ID0gPCZ2Y2Npb18xdjhfcmVnPjsKPj4gK8KgwqDCoCB2Y2NpbzUtc3VwcGx5ID0g PCZ2Y2Npb18zdjNfcmVnPjsKPj4gK8KgwqDCoCB2Y2NpbzYtc3VwcGx5ID0gPCZ2Y2Npb18zdjNf cmVnPjsKPj4gK8KgwqDCoCBzdGF0dXMgPSAib2theSI7Cj4+ICt9Owo+PiArCj4+ICsmcGluY3Ry bCB7Cj4+ICvCoMKgwqAgaXIgewo+PiArwqDCoMKgwqDCoMKgwqAgaXJfaW50OiBpci1pbnQgewo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByb2NrY2hpcCxwaW5zID0gPDIgUktfUEEyIFJLX0ZV TkNfR1BJTyAmcGNmZ19wdWxsX25vbmU+Owo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDC oCB9Owo+PiArCj4+ICvCoMKgwqAgbGVkcyB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjeXhfbGVkX3Bp bjogY3l4LWxlZC1waW4gewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByb2NrY2hpcCxwaW5z ID0gPDIgUktfUEM3IFJLX0ZVTkNfR1BJTyAmcGNmZ19wdWxsX25vbmU+Owo+PiArwqDCoMKgwqDC oMKgwqAgfTsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAgcHdtMCB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBwd20wX3Bpbl9wdWxsX3VwOiBwd20wLXBpbi1wdWxsLXVwIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcm9ja2NoaXAscGlucyA9IDwyIFJLX1BBNCAxICZwY2ZnX3B1bGxfdXA+ Owo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAgcHdt MSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwd20xX3Bpbl9wdWxsX3VwOiBwd20xLXBpbi1wdWxsLXVw IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcm9ja2NoaXAscGlucyA9IDwyIFJLX1BBNSAx ICZwY2ZnX3B1bGxfdXA+Owo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoCB9Owo+PiAr Cj4+ICvCoMKgwqAgc2Rpby1wd3JzZXEgewo+PiArwqDCoMKgwqDCoMKgwqAgd2lmaV9lbmFibGVf aDogd2lmaS1lbmFibGUtaCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJvY2tjaGlwLHBp bnMgPSA8MSBSS19QQzIgUktfRlVOQ19HUElPICZwY2ZnX3B1bGxfbm9uZT47Cj4+ICvCoMKgwqDC oMKgwqDCoCB9Owo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCBzZG1tYzEgewo+PiArwqDC oMKgwqDCoMKgwqAgY2xrXzMya19vdXQ6IGNsay0zMmstb3V0IHsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcm9ja2NoaXAscGlucyA9IDwxIFJLX1BENCAxICZwY2ZnX3B1bGxfbm9uZT47Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCB1c2Igewo+ PiArwqDCoMKgwqDCoMKgwqAgaG9zdF92YnVzX2RydjogaG9zdC12YnVzLWRydiB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJvY2tjaGlwLHBpbnMgPSA8MCBSS19QQTAgUktfRlVOQ19HUElP ICZwY2ZnX3B1bGxfbm9uZT47Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqDC oMKgwqDCoCBvdGdfdmJ1c19kcnY6IG90Zy12YnVzLWRydiB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJvY2tjaGlwLHBpbnMgPSA8MCBSS19QQTIgUktfRlVOQ19HUElPICZwY2ZnX3B1bGxf bm9uZT47Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgIH07Cj4+ICt9Owo+PiArCj4+ ICsmcHdtMCB7Cj4+ICvCoMKgwqAgcGluY3RybC0wID0gPCZwd20wX3Bpbl9wdWxsX3VwPjsKPj4g K8KgwqDCoCBwaW5jdHJsLW5hbWVzID0gImFjdGl2ZSI7Cj4+ICvCoMKgwqAgc3RhdHVzID0gIm9r YXkiOwo+PiArfTsKPj4gKwo+PiArJnB3bTEgewo+PiArwqDCoMKgIHBpbmN0cmwtMCA9IDwmcHdt MV9waW5fcHVsbF91cD47Cj4+ICvCoMKgwqAgcGluY3RybC1uYW1lcyA9ICJhY3RpdmUiOwo+PiAr wqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZzYXJhZGMgewo+PiArwqDC oMKgIHZyZWYtc3VwcGx5ID0gPCZ2Y2Npb18xdjhfcmVnPjsKPj4gK8KgwqDCoCBzdGF0dXMgPSAi b2theSI7Cj4+ICt9Owo+PiArCj4+ICsmc2RpbyB7Cj4+ICvCoMKgwqAgYnVzLXdpZHRoID0gPDQ+ Owo+PiArwqDCoMKgIGNhcC1zZC1oaWdoc3BlZWQ7Cj4+ICvCoMKgwqAgY2FwLXNkaW8taXJxOwo+ PiArwqDCoMKgIGtlZXAtcG93ZXItaW4tc3VzcGVuZDsKPj4gK8KgwqDCoCBtYXgtZnJlcXVlbmN5 ID0gPDEyNTAwMDAwMD47Cj4+ICvCoMKgwqAgbW1jLXB3cnNlcSA9IDwmc2Rpb19wd3JzZXE+Owo+ PiArwqDCoMKgIG5vbi1yZW1vdmFibGU7Cj4+ICvCoMKgwqAgcGluY3RybC0wID0gPCZzZG1tYzFf YnVzNCAmc2RtbWMxX2NtZCAmc2RtbWMxX2NsayAmY2xrXzMya19vdXQ+Owo+PiArwqDCoMKgIHBp bmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4+ICvCoMKgwqAgc2QtdWhzLXNkcjEwNDsKPj4gK8Kg wqDCoCBzdGF0dXMgPSAib2theSI7Cj4+ICt9Owo+PiArCj4+ICsmc2RtbWMgewo+PiArwqDCoMKg IGJ1cy13aWR0aCA9IDw0PjsKPj4gK8KgwqDCoCBjYXAtc2QtaGlnaHNwZWVkOwoKPj4gK8KgwqDC oCBkaXNhYmxlLXdwOwoKVGhpcyBpcyBmcm9tIHRoZSBtYW51ZmFjdHVyZXIgdHJlZSBmb3IgYSBt aWNybyBTRCBjYXJkLiBSZW1vdmUgb3Igbm90PwpQbGVhc2UgYWR2aXNlLgoKPj4gK8KgwqDCoCBw aW5jdHJsLTAgPSA8JnNkbW1jMF9jbGsgJnNkbW1jMF9jbWQgJnNkbW1jMF9kZWN0biAmc2RtbWMw X2J1czQ+Owo+PiArwqDCoMKgIHBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4+ICvCoMKgwqAg dm1tYy1zdXBwbHkgPSA8JnZjY19zZD47Cj4+ICvCoMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+PiAr fTsKPj4gKwo+PiArJnNwZGlmIHsKPj4gK8KgwqDCoCBwaW5jdHJsLTAgPSA8JnNwZGlmbTBfdHg+ OwoKPj4gK8KgwqDCoCBwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoKUmVtb3ZlLgpBbHJlYWR5 IGluIGR0c2kuCgo+PiArwqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZz b2NfY3JpdCB7Cj4+ICvCoMKgwqAgdGVtcGVyYXR1cmUgPSA8MTE1MDAwPjsgLyogbWlsbGljZWxz aXVzICovCj4+ICt9Owo+PiArCj4+ICsmdGFyZ2V0IHsKPj4gK8KgwqDCoCB0ZW1wZXJhdHVyZSA9 IDwxMDUwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KPj4gK307Cj4+ICsKPj4gKyZ0aHJlc2hvbGQg ewo+PiArwqDCoMKgIHRlbXBlcmF0dXJlID0gPDkwMDAwPjsgLyogbWlsbGljZWxzaXVzICovCj4+ ICt9Owo+PiArCj4+ICsmdHNhZGMgewo+PiArwqDCoMKgIHJvY2tjaGlwLGh3LXRzaHV0LXRlbXAg PSA8MTIwMDAwPjsKPj4gK8KgwqDCoCBzdGF0dXMgPSAib2theSI7Cj4+ICt9Owo+PiArCj4+ICsm dTJwaHkgewo+PiArwqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4gKwo+PiArwqDCoMKgIHUycGh5 X2hvc3Q6IGhvc3QtcG9ydCB7Cj4gCj4gSnVzdCByZWZlciB0byB0aGUgcG9ydHMgbm9ybWFsbHkg YnkgbGFiZWwgcmF0aGVyIHRoYW4gZHVwbGljYXRlIGEgcmFuZG9tCj4gc25pcHBldCBvZiBEVFNJ IGhpZXJhcmNoeSAtIEknbSBub3Qgc3VyZSB3aHkgdGhpcyBwYXJ0aWN1bGFyIHBhdHRlcm4KPiBz ZWVtcyB0byBnZXQgY29waWVkIGFyb3VuZCBzbyBtdWNoLgoKSGVyZSB0aGUgbm9kZSBsYWJlbHMg c3RhcnQgd2l0aCB0aGUgc2FtZSBsZXR0ZXJzIGFuZCB0aGUgcmVzdWx0IHdpbGwKc3RheSB0b2dl dGhlci4gSW4gb3RoZXIgY2FzZXMgaXQgd2lsbCBzY2F0dGVyIGFsbCBvdmVyIHRoZSBkdHMgZmls ZSBhbmQKYWZmZWN0cyB0aGUgcmVhZGFiaWxpdHkuIEkganVzdCBmb2xsb3dlZCB0aGUgbWFudWZh Y3R1cmVyJ3MgZXhhbXBsZS4gSWYKdGhlIG1haW50YWluZXIgYWdyZWVzIHRoZW4gSSdsbCBjaGFu Z2UuCgo+IAo+IFJvYmluLgo+IAo+PiArwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+ PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCB1MnBoeV9vdGc6IG90Zy1wb3J0IHsKPj4gK8Kg wqDCoMKgwqDCoMKgIHBoeS1zdXBwbHkgPSA8JnZjY19vdGdfdmJ1cz47Cj4+ICvCoMKgwqDCoMKg wqDCoCBzdGF0dXMgPSAib2theSI7Cj4+ICvCoMKgwqAgfTsKPj4gK307Cj4+ICsKPj4gKyZ1YXJ0 MCB7Cj4+ICvCoMKgwqAgcGluY3RybC0wID0gPCZ1YXJ0MF94ZmVyICZ1YXJ0MF9jdHM+OwoKPj4g K8KgwqDCoCBwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwoKUmVtb3ZlLgpBbHJlYWR5IGluIGR0 c2kuCgo+PiArwqDCoMKgIHN0YXR1cyA9ICJva2F5IjsKPj4gK307Cj4+ICsKPj4gKyZ1YXJ0MiB7 Cj4+ICvCoMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+PiArfTsKPj4gKwo+PiArJnVzYjIwX290ZyB7 Cj4+ICvCoMKgwqAgZHJfbW9kZSA9ICJob3N0IjsKPj4gK8KgwqDCoCBzdGF0dXMgPSAib2theSI7 Cj4+ICt9Owo+PiArCj4+ICsmdXNiX2hvc3QwX2VoY2kgewo+PiArwqDCoMKgIHN0YXR1cyA9ICJv a2F5IjsKPj4gK307Cj4+ICsKPj4gKyZ1c2JfaG9zdDBfb2hjaSB7Cj4+ICvCoMKgwqAgc3RhdHVz ID0gIm9rYXkiOwo+PiArfTsKPj4gKwo+PiArJnZvcCB7Cj4+ICvCoMKgwqAgc3RhdHVzID0gIm9r YXkiOwo+PiArfTsKPj4gKwo+PiArJnZvcF9tbXUgewo+PiArwqDCoMKgIHN0YXR1cyA9ICJva2F5 IjsKPj4gK307Cj4+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo= 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=-13.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7AA28C433E0 for ; Tue, 4 Aug 2020 15:54:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 50944208A9 for ; Tue, 4 Aug 2020 15:54:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n2iTtAbO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726536AbgHDPyO (ORCPT ); Tue, 4 Aug 2020 11:54:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726240AbgHDPyN (ORCPT ); Tue, 4 Aug 2020 11:54:13 -0400 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11972C06174A; Tue, 4 Aug 2020 08:54:13 -0700 (PDT) Received: by mail-ed1-x542.google.com with SMTP id c15so20587680edj.3; Tue, 04 Aug 2020 08:54:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=n0tUEpg69IWrRV7C9pI6zHcJ+6oEng/DEKClCAka/lM=; b=n2iTtAbOJnMDjoaPE/zTquLrnSRG7DaCE4dxl2BGDEA4Z7uRqGBEjH2lOGyVUQhzBv E75oYOT/fhwwYwOlKlRyiOLRLFon408Or9IVmPYQ4xvEBoXNF/eAL0W9WcxnmCvacM27 kvj98wpZ6cmIwt6NtzvdLdevZ8CtSQHjl2cmhHT+rFyKfzLcEcWdSGHliolIUabJHVhb 5fj15e22zeRaXMYumLvd7XC7nGHQAhouYLul0gTTeCiTSDNFrg6U+JgXNtzKIBlsK9dl hW81kxfTcZeSzI6G6ks1pQpKYWfNcNWiPs8Scaatg5jOI3hbCO4394KmvV8S57ysryxR 201w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=n0tUEpg69IWrRV7C9pI6zHcJ+6oEng/DEKClCAka/lM=; b=G5qSZgwn8wug9pQ8haRdWHuIkapbfnfdjGGOiWrsuA5F1S4KF9wkFLT17+UH/w+tZa 18ew+siFyZCD3Kwv21+yofF1M3vx+wdtfy/vbeltAdxkKbzxoqcnICbuGF4sSRNjGrgQ Kb+ge6C51Z5WmNACT34W5ESbyuNE+7vOPgnlaGtSAjvypf02dA3KYDK8lctS8wecqvDe IL08PjZgxXdStx969HLEtcp8zBE06h4lNzx3zojfh1B7T0a4OKV7h5c2704s/JodtWsB QBx0fVDQxMsPBepmekRx9pvtErsUsyQkD1H63QA6Xoqp3Qz2SVOvTkWXwkog142O8ry0 gl4A== X-Gm-Message-State: AOAM531rzXju7bpigIs0/TDC2N5oYW4qCSP4JuFkWDy2EDg7MSk5LHe7 fIjSpftHFo+mzrnlziqy2WY= X-Google-Smtp-Source: ABdhPJwC6wGRwVvDcDHbIIRIhl305TYTsW2fy58JrE3ykTFvxRhHt/j/2TpRZWiWQcf1IUim2t71tg== X-Received: by 2002:a50:d908:: with SMTP id t8mr20604944edj.373.1596556451703; Tue, 04 Aug 2020 08:54:11 -0700 (PDT) Received: from [192.168.2.1] (81-204-249-205.fixed.kpn.net. [81.204.249.205]) by smtp.gmail.com with ESMTPSA id v14sm19034180ejb.63.2020.08.04.08.54.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Aug 2020 08:54:11 -0700 (PDT) Subject: Re: [PATCH v2 3/3] arm64: dts: rockchip: add rk3318 A95X Z2 board To: Robin Murphy , heiko@sntech.de Cc: devicetree@vger.kernel.org, robh+dt@kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org References: <20200718105343.5152-1-jbx6244@gmail.com> <20200718105343.5152-4-jbx6244@gmail.com> <6d028007-4360-e552-3707-3dd2712f2501@arm.com> From: Johan Jonker Message-ID: <818eacc7-d783-772e-4cce-fbcf40b1df7c@gmail.com> Date: Tue, 4 Aug 2020 17:54:09 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <6d028007-4360-e552-3707-3dd2712f2501@arm.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi Robin, Thank you for your review. Added some questions in return. This dts file seems to be some sort of variation of rk3328-box-liantong.dtsi in the manufacturer tree. Depending on the design the vendor then changes the wifi chip or removes the spdif connector to save some cost. On 8/3/20 11:41 PM, Robin Murphy wrote: > On 2020-07-18 11:53, Johan Jonker wrote: >> The rk3318 A95X Z2 boards are sold as TV box. >> No further documentation is given, but from the dts files >> extracted it seems that the rk3318 processor is simulair >> to the rk3328. This dts file contains only the basic nodes >> that have support in the mainline kernel. >> >> Features: >> >> CPU: RK3318 Quad-Core Cortex-A53 >> GPU: Mali-450 >> RAM: 2/4GB DDR3 >> ROM: EMMC 16/32/64GB >> HDMI: HDMI 2.0a for 4k@60Hz >> Ethernet: 10/100M standard RJ-45 >> WiFi: 2.4G+5G WIFI, 802.11 b/g/n >> Bluetooth: 4.0 >> 1 x USB 3.0 >> 1 x USB 2.0 >> 1 x Micro SD card slot >> 1 x SPDIF >> 1 x AV >> 1 x DC IN >> >> Signed-off-by: Johan Jonker >> --- >>   arch/arm64/boot/dts/rockchip/Makefile           |   1 + >>   arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts | 393 >> ++++++++++++++++++++++++ >>   2 files changed, 394 insertions(+) >>   create mode 100644 arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> >> diff --git a/arch/arm64/boot/dts/rockchip/Makefile >> b/arch/arm64/boot/dts/rockchip/Makefile >> index b87b1f773..aa508bc4a 100644 >> --- a/arch/arm64/boot/dts/rockchip/Makefile >> +++ b/arch/arm64/boot/dts/rockchip/Makefile >> @@ -2,6 +2,7 @@ >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb >> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb >>   dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb >> diff --git a/arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> b/arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> new file mode 100644 >> index 000000000..413418ea1 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts >> @@ -0,0 +1,393 @@ >> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) >> + >> +/dts-v1/; >> +#include >> +#include "rk3328.dtsi" >> + >> +/ { >> +    model = "A95X Z2"; >> +    compatible = "zkmagic,a95x-z2", "rockchip,rk3318"; >> + >> +    chosen { >> +        stdout-path = "serial2:1500000n8"; >> +    }; >> + >> +    adc-keys { >> +        compatible = "adc-keys"; >> +        io-channels = <&saradc 0>; >> +        io-channel-names = "buttons"; >> +        keyup-threshold-microvolt = <1800000>; >> +        poll-interval = <100>; >> + >> +        vol-up-key { >> +            label = "volume up"; >> +            linux,code = ; > > Really? If as usual this is actually the recovery button hidden inside > the box, it's somewhat questionable whether it's worth describing in DT > at all. At the very least it should probably be presented as something > more realistic than half a volume control. Dts use is not limited to a mainline kernel setting. In Android that seem to be a standard way needed to enter a menu. Then make it as complete as possible to make it work. What would be your realistic key proposal? > >> +            press-threshold-microvolt = <17000>; >> +        }; >> +    }; >> + >> +    ir-receiver { >> +        compatible = "gpio-ir-receiver"; >> +        gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; >> +        pinctrl-0 = <&ir_int>; >> +        pinctrl-names = "default"; >> +    }; >> + >> +    leds { >> +        compatible = "gpio-leds"; >> +        pinctrl-0 = <&cyx_led_pin>; >> +        pinctrl-names = "default"; >> + >> +        cyx_led: led-0 { > > What needs a phandle to this node to warrant a label? Without repeating previous discussions, I made a proposal that was approved. So we just stick to that set of rules consequently. A little explanation: With the conversion to yaml a preferred nodename was introduced. Legacy Rockchip node names were sort of free style and causing the dts-checker to produce a flood of warnings. The led properties are described in 2 places, under leds and under pinctrl. To improve the readability given the legacy and to prevent the disconnect between schematics, leds and pinctrl we add a label with a consistent name. Fix with help of the following rules: 1: Add nodename in the preferred form. 2: Always add a label that ends with '_led' to prevent conflicts with other labels such as 'power' and 'mmc' 3: If leds need pinctrl add a label that ends with '_led_pin' also to prevent conflicts with other labels. > >> +            default-state = "on"; >> +            gpios = <&gpio2 RK_PC7 GPIO_ACTIVE_LOW>; >> +            label = "CYX_LED"; This label with capital letters is used by an Android app, so keep it. >> +        }; >> +    }; >> + >> +    sdio_pwrseq: sdio-pwrseq { >> +        compatible = "mmc-pwrseq-simple"; >> +        pinctrl-0 = <&wifi_enable_h>; >> +        pinctrl-names = "default"; >> +        reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; >> +    }; >> + >> +    spdif-sound { >> +        compatible = "simple-audio-card"; >> +        simple-audio-card,name = "spdif"; Some programs don't like long names here. Recently I see others also use "SPDIF". Should I change? Currently for rk3328 we have: "Analog" and "HDMI" Is there a standard? Please advise. >> + >> +        simple-audio-card,cpu { >> +            sound-dai = <&spdif>; >> +        }; >> + >> +        simple-audio-card,codec { >> +            sound-dai = <&spdif_out>; >> +        }; >> +    }; >> + >> +    spdif_out: spdif-out { >> +        compatible = "linux,spdif-dit"; >> +        #sound-dai-cells = <0>; >> +    }; >> + >> +    /* Power tree */ >> +    regulators { > > Don't create fake "buses" for regulators, especially if they don't even > contain most of the regulators anyway. Agree. The original reason was not given. vccio_1v8_reg and vccio_3v3_reg are used mostly in &io_domains. Is there a dependency requirement that both must be probed/enabled before being used? Without these regulators in a bus should we then add a vcc-sys-regulator for a complete supply chain? vcc_sys: vcc-sys-regulator { compatible = "regulator-fixed"; regulator-name = "vcc_sys"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; regulator-boot-on; }; > >> +        compatible = "simple-mfd"; >> +        #address-cells = <1>; >> +        #size-cells = <0>; >> + >> +        vccio_1v8_reg: regulator@0 { >> +            compatible = "regulator-fixed"; >> +            reg = <0>; >> +            regulator-name = "vccio_1v8"; >> +            regulator-min-microvolt = <1800000>; >> +            regulator-max-microvolt = <1800000>; >> +            regulator-always-on; Just an example: vin-supply = <&vcc_sys>; >> +        }; >> + >> +        vccio_3v3_reg: regulator@1 { >> +            compatible = "regulator-fixed"; >> +            reg = <1>; >> +            regulator-name = "vccio_3v3"; >> +            regulator-min-microvolt = <3300000>; >> +            regulator-max-microvolt = <3300000>; >> +            regulator-always-on; Just an example: vin-supply = <&vcc_sys>; >> +        }; >> +    }; >> + >> +    vcc_otg_vbus: otg-vbus-regulator { >> +        compatible = "regulator-fixed"; >> +        gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; >> +        pinctrl-0 = <&otg_vbus_drv>; >> +        pinctrl-names = "default"; >> +        regulator-name = "vcc_otg_vbus"; >> +        regulator-min-microvolt = <5000000>; >> +        regulator-max-microvolt = <5000000>; >> +        enable-active-high; >> +    }; >> + >> +    vcc_phy: vcc-phy-regulator { >> +        compatible = "regulator-fixed"; >> +        regulator-name = "vcc_phy"; >> +        regulator-always-on; >> +        regulator-boot-on; >> +    }; > > Is this actually a distinct regulator? The reference design has the > internal FEPHY block powered pretty much directly from the general 1V8 > and 1V0 supplies that also power USB/HDMI/etc., so I'd rather expect > low-end boxes to follow suit. Either way there doesn't seem to be a > great deal of value in describing something with no controls, no voltage > information, and no connection to the power tree. Agree. phy-supply appears to be an optional property, so removing it is possible. It shows up in rk3328-roc-cc.dts and rk3328-evb.dts. What does the maintainer prefer? Remove or not? > >> + >> +    vcc_sd: sdmmc-regulator { >> +        compatible = "regulator-fixed"; >> +        gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>; >> +        pinctrl-0 = <&sdmmc0m1_gpio>; >> +        pinctrl-names = "default"; >> +        regulator-name = "vcc_sd"; >> +        regulator-min-microvolt = <3300000>; >> +        regulator-max-microvolt = <3300000>; >> +        vin-supply = <&vccio_3v3_reg>; >> +    }; >> + >> +    vdd_arm: vdd-arm { >> +        compatible = "pwm-regulator"; >> +        pwms = <&pwm0 0 5000 1>; >> +        regulator-name = "vdd_arm"; >> +        regulator-min-microvolt = <950000>; >> +        regulator-max-microvolt = <1400000>; >> +        regulator-settling-time-up-us = <250>; >> +        regulator-always-on; >> +        regulator-boot-on; >> +    }; >> + >> +    vdd_log: vdd-log { >> +        compatible = "pwm-regulator"; >> +        pwms = <&pwm1 0 5000 1>; >> +        regulator-name = "vdd_log"; >> +        regulator-min-microvolt = <900000>; >> +        regulator-max-microvolt = <1300000>; >> +        regulator-settling-time-up-us = <250>; >> +        regulator-always-on; >> +        regulator-boot-on; >> +    }; >> +}; >> + >> +&analog_sound { >> +    status = "okay"; >> +}; >> + >> +&codec { >> +    status = "okay"; >> +}; >> + >> +&cpu0 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu1 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu2 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu3 { >> +    cpu-supply = <&vdd_arm>; >> +}; >> + >> +&cpu0_opp_table { >> +    opp-1200000000 { >> +        status = "disabled"; >> +    }; >> + >> +    opp-1296000000 { >> +        status = "disabled"; >> +    }; >> +}; >> + >> +&emmc { >> +    bus-width = <8>; >> +    cap-mmc-highspeed; >> +    non-removable; >> +    pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; >> +    pinctrl-names = "default"; >> +    status = "okay"; >> +}; >> + >> +&gmac2phy { >> +    assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>; >> +    assigned-clock-rate = <50000000>; >> +    assigned-clocks = <&cru SCLK_MAC2PHY>; >> +    clock_in_out = "output"; >> +    phy-supply = <&vcc_phy>; Remove or not? >> +    status = "okay"; >> +}; >> + >> +&gpu { >> +    mali-supply = <&vdd_log>; >> +}; >> + >> +&hdmi { >> +    ddc-i2c-scl-high-time-ns = <9625>; >> +    ddc-i2c-scl-low-time-ns = <10000>; >> +    status = "okay"; >> +}; >> + >> +&hdmiphy { >> +    status = "okay"; >> +}; >> + >> +&hdmi_sound { >> +    status = "okay"; >> +}; >> + >> +&i2s0 { >> +    status = "okay"; >> +}; >> + >> +&i2s1 { >> +    status = "okay"; >> +}; >> + >> +&io_domains { >> +    pmuio-supply = <&vccio_3v3_reg>; >> +    vccio1-supply = <&vccio_3v3_reg>; >> +    vccio2-supply = <&vccio_1v8_reg>; >> +    vccio3-supply = <&vccio_3v3_reg>; >> +    vccio4-supply = <&vccio_1v8_reg>; >> +    vccio5-supply = <&vccio_3v3_reg>; >> +    vccio6-supply = <&vccio_3v3_reg>; >> +    status = "okay"; >> +}; >> + >> +&pinctrl { >> +    ir { >> +        ir_int: ir-int { >> +            rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    leds { >> +        cyx_led_pin: cyx-led-pin { >> +            rockchip,pins = <2 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    pwm0 { >> +        pwm0_pin_pull_up: pwm0-pin-pull-up { >> +            rockchip,pins = <2 RK_PA4 1 &pcfg_pull_up>; >> +        }; >> +    }; >> + >> +    pwm1 { >> +        pwm1_pin_pull_up: pwm1-pin-pull-up { >> +            rockchip,pins = <2 RK_PA5 1 &pcfg_pull_up>; >> +        }; >> +    }; >> + >> +    sdio-pwrseq { >> +        wifi_enable_h: wifi-enable-h { >> +            rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    sdmmc1 { >> +        clk_32k_out: clk-32k-out { >> +            rockchip,pins = <1 RK_PD4 1 &pcfg_pull_none>; >> +        }; >> +    }; >> + >> +    usb { >> +        host_vbus_drv: host-vbus-drv { >> +            rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> + >> +        otg_vbus_drv: otg-vbus-drv { >> +            rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; >> +        }; >> +    }; >> +}; >> + >> +&pwm0 { >> +    pinctrl-0 = <&pwm0_pin_pull_up>; >> +    pinctrl-names = "active"; >> +    status = "okay"; >> +}; >> + >> +&pwm1 { >> +    pinctrl-0 = <&pwm1_pin_pull_up>; >> +    pinctrl-names = "active"; >> +    status = "okay"; >> +}; >> + >> +&saradc { >> +    vref-supply = <&vccio_1v8_reg>; >> +    status = "okay"; >> +}; >> + >> +&sdio { >> +    bus-width = <4>; >> +    cap-sd-highspeed; >> +    cap-sdio-irq; >> +    keep-power-in-suspend; >> +    max-frequency = <125000000>; >> +    mmc-pwrseq = <&sdio_pwrseq>; >> +    non-removable; >> +    pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk &clk_32k_out>; >> +    pinctrl-names = "default"; >> +    sd-uhs-sdr104; >> +    status = "okay"; >> +}; >> + >> +&sdmmc { >> +    bus-width = <4>; >> +    cap-sd-highspeed; >> +    disable-wp; This is from the manufacturer tree for a micro SD card. Remove or not? Please advise. >> +    pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>; >> +    pinctrl-names = "default"; >> +    vmmc-supply = <&vcc_sd>; >> +    status = "okay"; >> +}; >> + >> +&spdif { >> +    pinctrl-0 = <&spdifm0_tx>; >> +    pinctrl-names = "default"; Remove. Already in dtsi. >> +    status = "okay"; >> +}; >> + >> +&soc_crit { >> +    temperature = <115000>; /* millicelsius */ >> +}; >> + >> +&target { >> +    temperature = <105000>; /* millicelsius */ >> +}; >> + >> +&threshold { >> +    temperature = <90000>; /* millicelsius */ >> +}; >> + >> +&tsadc { >> +    rockchip,hw-tshut-temp = <120000>; >> +    status = "okay"; >> +}; >> + >> +&u2phy { >> +    status = "okay"; >> + >> +    u2phy_host: host-port { > > Just refer to the ports normally by label rather than duplicate a random > snippet of DTSI hierarchy - I'm not sure why this particular pattern > seems to get copied around so much. Here the node labels start with the same letters and the result will stay together. In other cases it will scatter all over the dts file and affects the readability. I just followed the manufacturer's example. If the maintainer agrees then I'll change. > > Robin. > >> +        status = "okay"; >> +    }; >> + >> +    u2phy_otg: otg-port { >> +        phy-supply = <&vcc_otg_vbus>; >> +        status = "okay"; >> +    }; >> +}; >> + >> +&uart0 { >> +    pinctrl-0 = <&uart0_xfer &uart0_cts>; >> +    pinctrl-names = "default"; Remove. Already in dtsi. >> +    status = "okay"; >> +}; >> + >> +&uart2 { >> +    status = "okay"; >> +}; >> + >> +&usb20_otg { >> +    dr_mode = "host"; >> +    status = "okay"; >> +}; >> + >> +&usb_host0_ehci { >> +    status = "okay"; >> +}; >> + >> +&usb_host0_ohci { >> +    status = "okay"; >> +}; >> + >> +&vop { >> +    status = "okay"; >> +}; >> + >> +&vop_mmu { >> +    status = "okay"; >> +}; >>