[PATCH v2 2/5] ARM: dts: rockchip: update rk3xxx.dtsi
Alex Bee
knaerzche at gmail.com
Thu Nov 4 12:27:59 CET 2021
Hi all,
I understand that copying dts'es from upstream kernel seems an easy
thing to do, but we should be careful:
Now that mmc-indexes are defined in board level device trees in kernel ,
mmc boot order (which I just fixed some month ago [1]) is different per
board.
This is now broken again - at least for rk3188 and rk3399 (from what
I've seen) and it is not fixable with an extra <board>-u-boot.dtsi.
Any idea (without having to define an extra config include/configs per
board?)
[1]
https://github.com/u-boot/u-boot/commit/b212ad24a604b00b240add35516b7381965deb31
Alex
Am 25.06.21 um 15:26 schrieb Johan Jonker:
> In the Linux DT the file rk3xxx.dtsi is shared between
> rk3066 and rk3188. This file has recently had some updates.
> For a future rk3066 support in U-boot this file must also update.
> Move U-boot specific things in a rk3xxx-u-boot.dtsi file.
>
> Signed-off-by: Johan Jonker <jbx6244 at gmail.com>
> Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
> ---
>
> Changed V2:
> add vpu node
> changed u-boot include
> ---
> arch/arm/dts/rk3188-radxarock.dts | 4 +
> arch/arm/dts/rk3188.dtsi | 1 +
> arch/arm/dts/rk3xxx-u-boot.dtsi | 35 +++++++
> arch/arm/dts/rk3xxx.dtsi | 215 +++++++++++++++++++++++++-------------
> 4 files changed, 181 insertions(+), 74 deletions(-)
> create mode 100644 arch/arm/dts/rk3xxx-u-boot.dtsi
>
> diff --git a/arch/arm/dts/rk3188-radxarock.dts b/arch/arm/dts/rk3188-radxarock.dts
> index 61367126ba..10527a052d 100644
> --- a/arch/arm/dts/rk3188-radxarock.dts
> +++ b/arch/arm/dts/rk3188-radxarock.dts
> @@ -12,6 +12,10 @@
> model = "Radxa Rock";
> compatible = "radxa,rock", "rockchip,rk3188";
>
> + aliases {
> + mmc0 = &mmc0;
> + };
> +
> chosen {
> /* stdout-path = &uart2; */
> stdout-path = "serial2:115200n8";
> diff --git a/arch/arm/dts/rk3188.dtsi b/arch/arm/dts/rk3188.dtsi
> index 7bcca6a02d..d872dac174 100644
> --- a/arch/arm/dts/rk3188.dtsi
> +++ b/arch/arm/dts/rk3188.dtsi
> @@ -8,6 +8,7 @@
> #include <dt-bindings/pinctrl/rockchip.h>
> #include <dt-bindings/clock/rk3188-cru.h>
> #include "rk3xxx.dtsi"
> +#include "rk3xxx-u-boot.dtsi"
>
> / {
> compatible = "rockchip,rk3188";
> diff --git a/arch/arm/dts/rk3xxx-u-boot.dtsi b/arch/arm/dts/rk3xxx-u-boot.dtsi
> new file mode 100644
> index 0000000000..581594c35d
> --- /dev/null
> +++ b/arch/arm/dts/rk3xxx-u-boot.dtsi
> @@ -0,0 +1,35 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +/ {
> + noc: syscon at 10128000 {
> + compatible = "rockchip,rk3188-noc", "syscon";
> + reg = <0x10128000 0x2000>;
> + u-boot,dm-spl;
> + };
> +
> + dmc: dmc at 20020000 {
> + /* unreviewed u-boot-specific binding */
> + compatible = "rockchip,rk3188-dmc", "syscon";
> + reg = <0x20020000 0x3fc
> + 0x20040000 0x294>;
> + clocks = <&cru PCLK_DDRUPCTL>, <&cru PCLK_PUBL>;
> + clock-names = "pclk_ddrupctl", "pclk_publ";
> + rockchip,cru = <&cru>;
> + rockchip,grf = <&grf>;
> + rockchip,pmu = <&pmu>;
> + rockchip,noc = <&noc>;
> + u-boot,dm-spl;
> + };
> +};
> +
> +&grf {
> + u-boot,dm-spl;
> +};
> +
> +&pmu {
> + u-boot,dm-spl;
> +};
> +
> +&uart2 {
> + clock-frequency = <24000000>;
> +};
> diff --git a/arch/arm/dts/rk3xxx.dtsi b/arch/arm/dts/rk3xxx.dtsi
> index 612ed44bd6..616a828e0c 100644
> --- a/arch/arm/dts/rk3xxx.dtsi
> +++ b/arch/arm/dts/rk3xxx.dtsi
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+ OR X11
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> /*
> * Copyright (c) 2013 MundoReader S.L.
> * Author: Heiko Stuebner <heiko at sntech.de>
> @@ -6,9 +6,12 @@
>
> #include <dt-bindings/interrupt-controller/irq.h>
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> -#include "skeleton.dtsi"
> +#include <dt-bindings/soc/rockchip,boot-mode.h>
>
> / {
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> interrupt-parent = <&gic>;
>
> aliases {
> @@ -18,9 +21,6 @@
> i2c2 = &i2c2;
> i2c3 = &i2c3;
> i2c4 = &i2c4;
> - mshc0 = &emmc;
> - mshc1 = &mmc0;
> - mshc2 = &mmc1;
> serial0 = &uart0;
> serial1 = &uart1;
> serial2 = &uart2;
> @@ -29,47 +29,6 @@
> spi1 = &spi1;
> };
>
> - amba {
> - compatible = "simple-bus";
> - #address-cells = <1>;
> - #size-cells = <1>;
> - ranges;
> -
> - dmac1_s: dma-controller at 20018000 {
> - compatible = "arm,pl330", "arm,primecell";
> - reg = <0x20018000 0x4000>;
> - interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
> - #dma-cells = <1>;
> - arm,pl330-broken-no-flushp;
> - clocks = <&cru ACLK_DMA1>;
> - clock-names = "apb_pclk";
> - };
> -
> - dmac1_ns: dma-controller at 2001c000 {
> - compatible = "arm,pl330", "arm,primecell";
> - reg = <0x2001c000 0x4000>;
> - interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
> - #dma-cells = <1>;
> - arm,pl330-broken-no-flushp;
> - clocks = <&cru ACLK_DMA1>;
> - clock-names = "apb_pclk";
> - status = "disabled";
> - };
> -
> - dmac2: dma-controller at 20078000 {
> - compatible = "arm,pl330", "arm,primecell";
> - reg = <0x20078000 0x4000>;
> - interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
> - <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> - #dma-cells = <1>;
> - arm,pl330-broken-no-flushp;
> - clocks = <&cru ACLK_DMA2>;
> - clock-names = "apb_pclk";
> - };
> - };
> -
> xin24m: oscillator {
> compatible = "fixed-clock";
> clock-frequency = <24000000>;
> @@ -77,7 +36,30 @@
> clock-output-names = "xin24m";
> };
>
> - L2: l2-cache-controller at 10138000 {
> + gpu: gpu at 10090000 {
> + compatible = "arm,mali-400";
> + reg = <0x10090000 0x10000>;
> + clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
> + clock-names = "bus", "core";
> + assigned-clocks = <&cru ACLK_GPU>;
> + assigned-clock-rates = <100000000>;
> + resets = <&cru SRST_GPU>;
> + status = "disabled";
> + };
> +
> + vpu: video-codec at 10104000 {
> + compatible = "rockchip,rk3066-vpu";
> + reg = <0x10104000 0x800>;
> + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "vepu", "vdpu";
> + clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>,
> + <&cru ACLK_VEPU>, <&cru HCLK_VEPU>;
> + clock-names = "aclk_vdpu", "hclk_vdpu",
> + "aclk_vepu", "hclk_vepu";
> + };
> +
> + L2: cache-controller at 10138000 {
> compatible = "arm,pl310-cache";
> reg = <0x10138000 0x1000>;
> cache-unified;
> @@ -92,14 +74,14 @@
> global_timer: global-timer at 1013c200 {
> compatible = "arm,cortex-a9-global-timer";
> reg = <0x1013c200 0x20>;
> - interrupts = <GIC_PPI 11 0x304>;
> + interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
> clocks = <&cru CORE_PERI>;
> };
>
> local_timer: local-timer at 1013c600 {
> compatible = "arm,cortex-a9-twd-timer";
> reg = <0x1013c600 0x20>;
> - interrupts = <GIC_PPI 13 0x304>;
> + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
> clocks = <&cru CORE_PERI>;
> };
>
> @@ -133,10 +115,44 @@
> status = "disabled";
> };
>
> - noc: syscon at 10128000 {
> - u-boot,dm-spl;
> - compatible = "rockchip,rk3188-noc", "syscon";
> - reg = <0x10128000 0x2000>;
> + qos_gpu: qos at 1012d000 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012d000 0x20>;
> + };
> +
> + qos_vpu: qos at 1012e000 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012e000 0x20>;
> + };
> +
> + qos_lcdc0: qos at 1012f000 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012f000 0x20>;
> + };
> +
> + qos_cif0: qos at 1012f080 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012f080 0x20>;
> + };
> +
> + qos_ipp: qos at 1012f100 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012f100 0x20>;
> + };
> +
> + qos_lcdc1: qos at 1012f180 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012f180 0x20>;
> + };
> +
> + qos_cif1: qos at 1012f200 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012f200 0x20>;
> + };
> +
> + qos_rga: qos at 1012f280 {
> + compatible = "rockchip,rk3066-qos", "syscon";
> + reg = <0x1012f280 0x20>;
> };
>
> usb_otg: usb at 10180000 {
> @@ -149,7 +165,6 @@
> g-np-tx-fifo-size = <16>;
> g-rx-fifo-size = <275>;
> g-tx-fifo-size = <256 128 128 64 64 32>;
> - g-use-dma;
> phys = <&usbphy0>;
> phy-names = "usb2-phy";
> status = "disabled";
> @@ -184,60 +199,99 @@
> status = "disabled";
> };
>
> - mmc0: dwmmc at 10214000 {
> + mmc0: mmc at 10214000 {
> compatible = "rockchip,rk2928-dw-mshc";
> reg = <0x10214000 0x1000>;
> interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
> clock-names = "biu", "ciu";
> + dmas = <&dmac2 1>;
> + dma-names = "rx-tx";
> fifo-depth = <256>;
> + resets = <&cru SRST_SDMMC>;
> + reset-names = "reset";
> status = "disabled";
> };
>
> - mmc1: dwmmc at 10218000 {
> + mmc1: mmc at 10218000 {
> compatible = "rockchip,rk2928-dw-mshc";
> reg = <0x10218000 0x1000>;
> interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>;
> clock-names = "biu", "ciu";
> + dmas = <&dmac2 3>;
> + dma-names = "rx-tx";
> fifo-depth = <256>;
> + resets = <&cru SRST_SDIO>;
> + reset-names = "reset";
> status = "disabled";
> };
>
> - emmc: dwmmc at 1021c000 {
> + emmc: mmc at 1021c000 {
> compatible = "rockchip,rk2928-dw-mshc";
> reg = <0x1021c000 0x1000>;
> interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
> clock-names = "biu", "ciu";
> + dmas = <&dmac2 4>;
> + dma-names = "rx-tx";
> fifo-depth = <256>;
> + resets = <&cru SRST_EMMC>;
> + reset-names = "reset";
> + status = "disabled";
> + };
> +
> + nfc: nand-controller at 10500000 {
> + compatible = "rockchip,rk2928-nfc";
> + reg = <0x10500000 0x4000>;
> + interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&cru HCLK_NANDC0>;
> + clock-names = "ahb";
> status = "disabled";
> };
>
> pmu: pmu at 20004000 {
> - compatible = "rockchip,rk3066-pmu", "syscon";
> + compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
> reg = <0x20004000 0x100>;
> - u-boot,dm-spl;
> +
> + reboot-mode {
> + compatible = "syscon-reboot-mode";
> + offset = <0x40>;
> + mode-normal = <BOOT_NORMAL>;
> + mode-recovery = <BOOT_RECOVERY>;
> + mode-bootloader = <BOOT_FASTBOOT>;
> + mode-loader = <BOOT_BL_DOWNLOAD>;
> + };
> };
>
> grf: grf at 20008000 {
> - compatible = "syscon";
> + compatible = "syscon", "simple-mfd";
> reg = <0x20008000 0x200>;
> - u-boot,dm-spl;
> };
>
> - dmc: dmc at 20020000 {
> - /* unreviewed u-boot-specific binding */
> - compatible = "rockchip,rk3188-dmc", "syscon";
> - rockchip,cru = <&cru>;
> - rockchip,grf = <&grf>;
> - rockchip,pmu = <&pmu>;
> - rockchip,noc = <&noc>;
> - reg = <0x20020000 0x3fc
> - 0x20040000 0x294>;
> - clocks = <&cru PCLK_DDRUPCTL>, <&cru PCLK_PUBL>;
> - clock-names = "pclk_ddrupctl", "pclk_publ";
> - u-boot,dm-spl;
> + dmac1_s: dma-controller at 20018000 {
> + compatible = "arm,pl330", "arm,primecell";
> + reg = <0x20018000 0x4000>;
> + interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
> + #dma-cells = <1>;
> + arm,pl330-broken-no-flushp;
> + arm,pl330-periph-burst;
> + clocks = <&cru ACLK_DMA1>;
> + clock-names = "apb_pclk";
> + };
> +
> + dmac1_ns: dma-controller at 2001c000 {
> + compatible = "arm,pl330", "arm,primecell";
> + reg = <0x2001c000 0x4000>;
> + interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
> + #dma-cells = <1>;
> + arm,pl330-broken-no-flushp;
> + arm,pl330-periph-burst;
> + clocks = <&cru ACLK_DMA1>;
> + clock-names = "apb_pclk";
> + status = "disabled";
> };
>
> i2c0: i2c at 2002d000 {
> @@ -361,7 +415,6 @@
> interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
> reg-shift = <2>;
> reg-io-width = <1>;
> - clock-frequency = <24000000>;
> clock-names = "baudclk", "apb_pclk";
> clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
> status = "disabled";
> @@ -385,6 +438,8 @@
> #io-channel-cells = <1>;
> clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
> clock-names = "saradc", "apb_pclk";
> + resets = <&cru SRST_SARADC>;
> + reset-names = "saradc-apb";
> status = "disabled";
> };
>
> @@ -413,4 +468,16 @@
> dma-names = "tx", "rx";
> status = "disabled";
> };
> +
> + dmac2: dma-controller at 20078000 {
> + compatible = "arm,pl330", "arm,primecell";
> + reg = <0x20078000 0x4000>;
> + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> + #dma-cells = <1>;
> + arm,pl330-broken-no-flushp;
> + arm,pl330-periph-burst;
> + clocks = <&cru ACLK_DMA2>;
> + clock-names = "apb_pclk";
> + };
> };
More information about the U-Boot
mailing list