Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp431820pxa; Tue, 4 Aug 2020 08:55:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwOvsq/L950JesQS3ChW74hn2DXzQKqxPaTIFYhecuYyfh8sPA5tryY+a2bbI5eA/zjkQuX X-Received: by 2002:a17:906:7698:: with SMTP id o24mr22978206ejm.182.1596556545965; Tue, 04 Aug 2020 08:55:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596556545; cv=none; d=google.com; s=arc-20160816; b=j1ngpsMbF+s6Ceft41vvjjlXlBV5Q+sOorIWCwNiwaXT6ISLWW+huLYnjjCJAWQ5Hk vhP+f2EnS28IUzuAiWUb/9Gx0lGVSdGWXa61/LTxmwAdpum+L2yICl+8yjXQzOJ+IdaM Yq1IJh4dPy3h2Odu5Yqdw74CIlXl8kDXXjB2TkdGNkM63e7ko6YArSPuAWk6Fp+GOAsD ilPtWMDlAU3oYnZo3TYjnPnjLqb9K59ZxO2eNpsLJTc0yhDbvCjM1XABOvnbYk4pm9Ga 5CZOg0krPYiZad+pyMB9JOgVePwptMgAMvEBLtEnbIzX0eGRchO35Rzp6sve7KEyJQjK F1Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=n0tUEpg69IWrRV7C9pI6zHcJ+6oEng/DEKClCAka/lM=; b=aWsamiws4Y58EMrp7qWcQmDAlFeSv2l63rRtcgASuNt9kS0R/N+KS+BAZyAfJ49CZA wgkellBVwS2fxOKF8UGhTB9Tf1kxf4Hda8tU2Ew+GZBK3P1cXO1xB1OXZb0osKWPs5P1 K9IzXTLPLdbFI0NFs3zuMDda1ySLXjGllOJ0Zw8xvFkUIbTwCeipNi0HFNlGmuEIt4GK lgTaHl7uN1qlWae/lzv+wO7vUj8/bWYijzXoPiwmlznxAty+AqWu5qciqY4qwBL5dZvm gSS2KZiPr69s11+BaaIRVrZ5kbYSeiiQvTjoQODjLtaNpBumyGuLEuD2oETArVWQfiQ6 +1nA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=n2iTtAbO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w13si11990704ejk.175.2020.08.04.08.55.22; Tue, 04 Aug 2020 08:55:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=n2iTtAbO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728745AbgHDPyO (ORCPT + 99 others); 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-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: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@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"; >> +}; >>