rockchip: puma: reorganize devicetrees to actually work and match upstream
authorHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
Fri, 5 Jun 2020 10:06:40 +0000 (12:06 +0200)
committerKever Yang <kever.yang@rock-chips.com>
Sun, 7 Jun 2020 10:57:16 +0000 (18:57 +0800)
So far the puma dts files only just included the main puma dtsi without
handling the actual baseboard and rk3399-puma.dtsi was very much
detached from the variant in the mainline Linux kernel.

Recent changes resulted in a strange situation with nonworking puma boards.

Commit ab800e5a6f28 ("arm: dts: rockchip: puma: move U-Boot specific bits to u-boot.dtsi")
moved the sdram include from rk3399-puma-ddrX.dts to new files
rk3399-puma-ddrx-u-boot.dtsi which were never included anywhere though.

Commit 167efc2c7a46 ("arm64: dts: rk3399: Sync v5.7-rc1 from Linux")
replaced the rk3399-puma.dtsi nearly completely, but in the kernel
it definitly depends on a baseboard dts to actually enable peripherals
like sd-slot, uarts, etc.

So to untagle this and bring the whole thing more in line with mainline
Linux, bring the rk3399-puma-haikou.dts over as well, drop the separate
DDR-option devicetrees and instead replace them with a puma Kconfig option
to select and include the needed DDR variant.

Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
12 files changed:
arch/arm/dts/Makefile
arch/arm/dts/rk3399-puma-ddr1333-u-boot.dtsi [deleted file]
arch/arm/dts/rk3399-puma-ddr1333.dts [deleted file]
arch/arm/dts/rk3399-puma-ddr1600-u-boot.dtsi [deleted file]
arch/arm/dts/rk3399-puma-ddr1600.dts [deleted file]
arch/arm/dts/rk3399-puma-ddr1866-u-boot.dtsi [deleted file]
arch/arm/dts/rk3399-puma-ddr1866.dts [deleted file]
arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/rk3399-puma-haikou.dts [new file with mode: 0644]
arch/arm/dts/rk3399-puma-u-boot.dtsi [deleted file]
board/theobroma-systems/puma_rk3399/Kconfig
configs/puma-rk3399_defconfig

index 61afe94a056c68d3eea79f95509c3212c22082dd..9900b44274122537d7427022b079c1bebd195d49 100644 (file)
@@ -131,9 +131,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
        rk3399-nanopi-neo4.dtb \
        rk3399-orangepi.dtb \
        rk3399-pinebook-pro.dtb \
-       rk3399-puma-ddr1333.dtb \
-       rk3399-puma-ddr1600.dtb \
-       rk3399-puma-ddr1866.dtb \
+       rk3399-puma-haikou.dtb \
        rk3399-roc-pc.dtb \
        rk3399-roc-pc-mezzanine.dtb \
        rk3399-rock-pi-4.dtb \
diff --git a/arch/arm/dts/rk3399-puma-ddr1333-u-boot.dtsi b/arch/arm/dts/rk3399-puma-ddr1333-u-boot.dtsi
deleted file mode 100644 (file)
index 39d3927..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-
-#include "rk3399-puma-u-boot.dtsi"
-#include "rk3399-sdram-ddr3-1333.dtsi"
diff --git a/arch/arm/dts/rk3399-puma-ddr1333.dts b/arch/arm/dts/rk3399-puma-ddr1333.dts
deleted file mode 100644 (file)
index 80f2769..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+ OR X11
-/*
- * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH
- */
-
-/dts-v1/;
-
-#include "rk3399-puma.dtsi"
diff --git a/arch/arm/dts/rk3399-puma-ddr1600-u-boot.dtsi b/arch/arm/dts/rk3399-puma-ddr1600-u-boot.dtsi
deleted file mode 100644 (file)
index be58311..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-
-#include "rk3399-puma-u-boot.dtsi"
-#include "rk3399-sdram-ddr3-1600.dtsi"
diff --git a/arch/arm/dts/rk3399-puma-ddr1600.dts b/arch/arm/dts/rk3399-puma-ddr1600.dts
deleted file mode 100644 (file)
index cb76b01..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+ OR X11
-/*
- * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH
- */
-
-/dts-v1/;
-
-#include "rk3399-puma.dtsi"
-#include "rk3399-u-boot.dtsi"
diff --git a/arch/arm/dts/rk3399-puma-ddr1866-u-boot.dtsi b/arch/arm/dts/rk3399-puma-ddr1866-u-boot.dtsi
deleted file mode 100644 (file)
index 48da076..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-
-#include "rk3399-puma-u-boot.dtsi"
-#include "rk3399-sdram-ddr3-1866.dtsi"
diff --git a/arch/arm/dts/rk3399-puma-ddr1866.dts b/arch/arm/dts/rk3399-puma-ddr1866.dts
deleted file mode 100644 (file)
index 80f2769..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+ OR X11
-/*
- * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH
- */
-
-/dts-v1/;
-
-#include "rk3399-puma.dtsi"
diff --git a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi
new file mode 100644 (file)
index 0000000..29846c4
--- /dev/null
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include "rk3399-u-boot.dtsi"
+
+#ifdef CONFIG_TARGET_PUMA_RK3399_RAM_DDR3_1333
+#include "rk3399-sdram-ddr3-1333.dtsi"
+#endif
+#ifdef CONFIG_TARGET_PUMA_RK3399_RAM_DDR3_1600
+#include "rk3399-sdram-ddr3-1600.dtsi"
+#endif
+#ifdef CONFIG_TARGET_PUMA_RK3399_RAM_DDR3_1866
+#include "rk3399-sdram-ddr3-1866.dtsi"
+#endif
+
+/ {
+       config {
+               u-boot,spl-payload-offset = <0x40000>; /* @ 256KB */
+               u-boot,mmc-env-offset = <0x4000>;      /* @  16KB */
+               u-boot,efi-partition-entries-offset = <0x200000>; /* 2MB */
+               u-boot,boot-led = "module_led";
+               sysreset-gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+               u-boot,spl-boot-order = \
+                       "same-as-spl", &norflash, &sdhci, &sdmmc;
+       };
+
+       aliases {
+               spi0 = &spi1;
+               spi1 = &spi5;
+       };
+
+       /*
+        * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module
+        * eMMC and SPI flash powered-down initially (in fact it keeps the
+        * reset signal asserted).  Even though it is an enable signal, we
+        * model this as a regulator.
+        */
+       bios_enable: bios_enable {
+               compatible = "regulator-fixed";
+               u-boot,dm-pre-reloc;
+               regulator-name = "bios_enable";
+               enable-active-high;
+               gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+};
+
+&gpio1 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio3 {
+       u-boot,dm-pre-reloc;
+};
+
+&norflash {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/rk3399-puma-haikou.dts b/arch/arm/dts/rk3399-puma-haikou.dts
new file mode 100644 (file)
index 0000000..d80d6b7
--- /dev/null
@@ -0,0 +1,271 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 Theobroma Systems Design und Consulting GmbH
+ */
+
+/dts-v1/;
+#include "rk3399-puma.dtsi"
+
+/ {
+       model = "Theobroma Systems RK3399-Q7 SoM";
+       compatible = "tsd,rk3399-puma-haikou", "rockchip,rk3399";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       leds {
+               pinctrl-0 = <&led_pin_module>, <&led_sd_haikou>;
+
+               sd-card-led {
+                       label = "sd_card_led";
+                       gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "mmc0";
+               };
+       };
+
+       i2s0-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,name = "Haikou,I2S-codec";
+               simple-audio-card,mclk-fs = <512>;
+
+               simple-audio-card,codec {
+                       clocks = <&sgtl5000_clk>;
+                       sound-dai = <&sgtl5000>;
+               };
+
+               simple-audio-card,cpu {
+                       bitclock-master;
+                       frame-master;
+                       sound-dai = <&i2s0>;
+               };
+       };
+
+       sgtl5000_clk: sgtl5000-oscillator  {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency  = <24576000>;
+       };
+
+       dc_12v: dc-12v {
+               compatible = "regulator-fixed";
+               regulator-name = "dc_12v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       vcc3v3_baseboard: vcc3v3-baseboard {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_baseboard";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&dc_12v>;
+       };
+
+       vcc5v0_baseboard: vcc5v0-baseboard {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_baseboard";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&dc_12v>;
+       };
+
+       vcc5v0_otg: vcc5v0-otg-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&otg_vbus_drv>;
+               regulator-name = "vcc5v0_otg";
+               regulator-always-on;
+       };
+
+       vdda_codec: vdda-codec {
+               compatible = "regulator-fixed";
+               regulator-name = "vdda_codec";
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc5v0_baseboard>;
+       };
+
+       vddd_codec: vddd-codec {
+               compatible = "regulator-fixed";
+               regulator-name = "vddd_codec";
+               regulator-boot-on;
+               regulator-min-microvolt = <1600000>;
+               regulator-max-microvolt = <1600000>;
+               vin-supply = <&vcc5v0_baseboard>;
+       };
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c3>;
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&i2c2 {
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       i2c-scl-rising-time-ns = <450>;
+       i2c-scl-falling-time-ns = <15>;
+       status = "okay";
+};
+
+&i2c4 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       sgtl5000: codec@a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               clocks = <&sgtl5000_clk>;
+               #sound-dai-cells = <0>;
+               VDDA-supply = <&vdda_codec>;
+               VDDIO-supply = <&vdda_codec>;
+               VDDD-supply = <&vddd_codec>;
+               status = "okay";
+       };
+};
+
+&i2c6 {
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&pcie_phy {
+       status = "okay";
+};
+
+&pcie0 {
+       ep-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
+       num-lanes = <4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_clkreqn_cpm>;
+       status = "okay";
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&haikou_pin_hog>;
+
+       hog {
+               haikou_pin_hog: haikou-pin-hog {
+                       rockchip,pins =
+                         /* LID_BTN */
+                         <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
+                         /* BATLOW# */
+                         <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>,
+                         /* SLP_BTN# */
+                         <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>,
+                         /* BIOS_DISABLE# */
+                         <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               led_sd_haikou: led-sd-gpio {
+                       rockchip,pins =
+                         <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb2 {
+               otg_vbus_drv: otg-vbus-drv {
+                       rockchip,pins =
+                         <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       max-frequency = <150000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
+       vmmc-supply = <&vcc3v3_baseboard>;
+       status = "okay";
+};
+
+&spi5 {
+       status = "okay";
+};
+
+&tcphy0 {
+       status = "okay";
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&usbdrd3_0 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&u2phy0_host {
+       phy-supply = <&vcc5v0_otg>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
diff --git a/arch/arm/dts/rk3399-puma-u-boot.dtsi b/arch/arm/dts/rk3399-puma-u-boot.dtsi
deleted file mode 100644 (file)
index ddb5fa6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-
-#include "rk3399-u-boot.dtsi"
-/ {
-       config {
-               u-boot,spl-payload-offset = <0x40000>; /* @ 256KB */
-               u-boot,mmc-env-offset = <0x4000>;      /* @  16KB */
-               u-boot,efi-partition-entries-offset = <0x200000>; /* 2MB */
-               u-boot,boot-led = "module_led";
-               sysreset-gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;
-       };
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-               u-boot,spl-boot-order = \
-                       "same-as-spl", &norflash, &sdhci, &sdmmc;
-       };
-
-       aliases {
-               spi0 = &spi1;
-               spi1 = &spi5;
-       };
-
-       /*
-        * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module
-        * eMMC and SPI flash powered-down initially (in fact it keeps the
-        * reset signal asserted).  Even though it is an enable signal, we
-        * model this as a regulator.
-        */
-       bios_enable: bios_enable {
-               compatible = "regulator-fixed";
-               u-boot,dm-pre-reloc;
-               regulator-name = "bios_enable";
-               enable-active-high;
-               gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-       };
-};
-
-&gpio1 {
-       u-boot,dm-pre-reloc;
-};
-
-&gpio3 {
-       u-boot,dm-pre-reloc;
-};
-
-&norflash {
-       u-boot,dm-pre-reloc;
-};
index 9e2325275494090fc594f2e803cc69a2d509ce48..e82623a1701e140b635827f34ca574e15b31dc26 100644 (file)
@@ -18,4 +18,19 @@ config ENV_SIZE
 config ENV_OFFSET
        default 0x3fc000 if ENV_IS_IN_SPI_FLASH
 
+choice
+       prompt "Theobroma Systems RK3399-Q7 DDR Option"
+       default TARGET_PUMA_RK3399_RAM_DDR3_1333
+
+config TARGET_PUMA_RK3399_RAM_DDR3_1333
+       bool "DDR3-1333MHz"
+
+config TARGET_PUMA_RK3399_RAM_DDR3_1600
+       bool "DDR3-1600MHz"
+
+config TARGET_PUMA_RK3399_RAM_DDR3_1866
+       bool "DDR3-1866MHz"
+
+endchoice
+
 endif
index a148832b83dd2c03a5ed10adb98743d7531cd415..47a60930b63fccba0eb48e9e9695752c7449213b 100644 (file)
@@ -39,7 +39,7 @@ CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
 CONFIG_SPL_OF_CONTROL=y
 CONFIG_OF_LIVE=y
-CONFIG_DEFAULT_DEVICE_TREE="rk3399-puma-ddr1600"
+CONFIG_DEFAULT_DEVICE_TREE="rk3399-puma-haikou"
 CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y