Merge tag 'u-boot-rockchip-20240315' of https://source.denx.de/u-boot/custodians/u-boot-rockchip into next

Please pull the updates for rockchip platform:
- Add board: rk3588 Generic, Cool Pi CM5, Theobroma-Systems RK3588 Jaguar SBC,
             Toybrick TB-RK3588X;
             rk3588s Cool Pi 4B;
             rk3566 Pine64 PineTab2;
- Add saradc v2 support;
- Add PMIC RK806 support;
- rk3588 disable force_jtag by default;
- Migrate to use IO-domain driver for all boards;
- Use common bss and stack addresses for rk33xx and rk35xx boards;
- Other updates for driver, config and dts;
This commit is contained in:
Tom Rini 2024-03-15 09:15:31 -04:00
commit 099c94b761
257 changed files with 7627 additions and 2352 deletions

View File

@ -265,7 +265,7 @@ config SYS_MALLOC_F_LEN
hex "Size of malloc() pool before relocation" hex "Size of malloc() pool before relocation"
depends on SYS_MALLOC_F depends on SYS_MALLOC_F
default 0x400 if M68K || PPC || ROCKCHIP_PX30 || ROCKCHIP_RK3036 || \ default 0x400 if M68K || PPC || ROCKCHIP_PX30 || ROCKCHIP_RK3036 || \
ROCKCHIP_RK3308 || ROCKCHIP_RV1108 ROCKCHIP_RV1108
default 0x600 if ARCH_ZYNQMP_R5 || ARCH_ZYNQMP default 0x600 if ARCH_ZYNQMP_R5 || ARCH_ZYNQMP
default 0x800 if ARCH_ZYNQ || ROCKCHIP_RK3128 || ROCKCHIP_RK3188 || \ default 0x800 if ARCH_ZYNQ || ROCKCHIP_RK3128 || ROCKCHIP_RK3188 || \
ROCKCHIP_RK322X || X86 ROCKCHIP_RK322X || X86

View File

@ -174,6 +174,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
dtb-$(CONFIG_ROCKCHIP_RK3568) += \ dtb-$(CONFIG_ROCKCHIP_RK3568) += \
rk3566-anbernic-rgxx3.dtb \ rk3566-anbernic-rgxx3.dtb \
rk3566-pinetab2-v0.1.dtb \
rk3566-pinetab2-v2.0.dtb \
rk3566-quartz64-a.dtb \ rk3566-quartz64-a.dtb \
rk3566-quartz64-b.dtb \ rk3566-quartz64-b.dtb \
rk3566-radxa-cm3-io.dtb \ rk3566-radxa-cm3-io.dtb \
@ -191,16 +193,20 @@ dtb-$(CONFIG_ROCKCHIP_RK3568) += \
rk3568-rock-3a.dtb rk3568-rock-3a.dtb
dtb-$(CONFIG_ROCKCHIP_RK3588) += \ dtb-$(CONFIG_ROCKCHIP_RK3588) += \
rk3588s-coolpi-4b.dts \
rk3588-coolpi-cm5-evb.dts \
rk3588-edgeble-neu6a-io.dtb \ rk3588-edgeble-neu6a-io.dtb \
rk3588-edgeble-neu6b-io.dtb \ rk3588-edgeble-neu6b-io.dtb \
rk3588-evb1-v10.dtb \ rk3588-evb1-v10.dtb \
rk3588-generic.dtb \
rk3588-jaguar.dtb \
rk3588-nanopc-t6.dtb \ rk3588-nanopc-t6.dtb \
rk3588s-orangepi-5.dtb \ rk3588s-orangepi-5.dtb \
rk3588-orangepi-5-plus.dtb \ rk3588-orangepi-5-plus.dtb \
rk3588-quartzpro64.dtb \ rk3588-quartzpro64.dtb \
rk3588-turing-rk1.dtb \
rk3588s-rock-5a.dtb \ rk3588s-rock-5a.dtb \
rk3588-rock-5b.dtb rk3588-rock-5b.dtb \
rk3588-turing-rk1.dtb
dtb-$(CONFIG_ROCKCHIP_RV1108) += \ dtb-$(CONFIG_ROCKCHIP_RV1108) += \
rv1108-elgin-r1.dtb \ rv1108-elgin-r1.dtb \

View File

@ -44,3 +44,7 @@
/* Integrated PHY unsupported by U-Boot */ /* Integrated PHY unsupported by U-Boot */
status = "broken"; status = "broken";
}; };
&vcc_sd {
bootph-pre-ram;
};

View File

@ -11,6 +11,7 @@
compatible = "rockchip,rk3328-evb", "rockchip,rk3328"; compatible = "rockchip,rk3328-evb", "rockchip,rk3328";
aliases { aliases {
ethernet0 = &gmac2phy;
mmc0 = &sdmmc; mmc0 = &sdmmc;
mmc1 = &sdio; mmc1 = &sdio;
mmc2 = &emmc; mmc2 = &emmc;

View File

@ -1,9 +1,3 @@
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "rk3328-nanopi-r2c-u-boot.dtsi" #include "rk3328-nanopi-r2c-u-boot.dtsi"
/ {
chosen {
u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
};
};

View File

@ -6,35 +6,23 @@
#include "rk3328-u-boot.dtsi" #include "rk3328-u-boot.dtsi"
#include "rk3328-sdram-ddr4-666.dtsi" #include "rk3328-sdram-ddr4-666.dtsi"
/ {
chosen {
u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
};
};
&gpio0 { &gpio1 {
bootph-pre-ram; bootph-pre-ram;
}; };
&pinctrl { &sdio_vcc_pin {
bootph-all;
};
&usb20_otg {
dr_mode = "peripheral";
};
&vcc_io_sdio {
bootph-pre-ram; bootph-pre-ram;
}; };
&sdmmc0m1_pin {
bootph-pre-ram;
};
&pcfg_pull_up_4ma {
bootph-pre-ram;
};
/* Need this and all the pinctrl/gpio stuff above to set pinmux */
&vcc_sd { &vcc_sd {
bootph-pre-ram; bootph-pre-ram;
}; };
&gmac2io {
snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>;
};

View File

@ -14,6 +14,7 @@
compatible = "friendlyarm,nanopi-r2s", "rockchip,rk3328"; compatible = "friendlyarm,nanopi-r2s", "rockchip,rk3328";
aliases { aliases {
ethernet0 = &gmac2io;
ethernet1 = &rtl8153; ethernet1 = &rtl8153;
mmc0 = &sdmmc; mmc0 = &sdmmc;
}; };
@ -34,7 +35,7 @@
pinctrl-0 = <&reset_button_pin>; pinctrl-0 = <&reset_button_pin>;
pinctrl-names = "default"; pinctrl-names = "default";
reset { key-reset {
label = "reset"; label = "reset";
gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>; linux,code = <KEY_RESTART>;

View File

@ -6,41 +6,37 @@
#include "rk3328-u-boot.dtsi" #include "rk3328-u-boot.dtsi"
#include "rk3328-sdram-lpddr3-666.dtsi" #include "rk3328-sdram-lpddr3-666.dtsi"
/ {
chosen { &spi0 {
u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc; bootph-pre-ram;
bootph-some-ram;
flash@0 {
bootph-pre-ram;
bootph-some-ram;
}; };
}; };
&gpio0 { &spi0m2_clk {
bootph-pre-ram; bootph-pre-ram;
}; };
&pinctrl { &spi0m2_cs0 {
bootph-pre-ram; bootph-pre-ram;
}; };
&sdmmc0m1_pin { &spi0m2_rx {
bootph-pre-ram; bootph-pre-ram;
}; };
&pcfg_pull_up_4ma { &spi0m2_tx {
bootph-pre-ram; bootph-pre-ram;
}; };
/* Need this and all the pinctrl/gpio stuff above to set pinmux */ &usb20_otg {
dr_mode = "peripheral";
};
&vcc_sd { &vcc_sd {
bootph-pre-ram; bootph-pre-ram;
}; };
&gmac2io {
snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>;
};
&spi0 {
spi_flash: spiflash@0 {
bootph-all;
};
};

View File

@ -26,9 +26,11 @@
compatible = "ethernet-phy-ieee802.3-c22"; compatible = "ethernet-phy-ieee802.3-c22";
reg = <0>; reg = <0>;
motorcomm,auto-sleep-disabled;
motorcomm,clk-out-frequency-hz = <125000000>; motorcomm,clk-out-frequency-hz = <125000000>;
motorcomm,keep-pll-enabled; motorcomm,keep-pll-enabled;
motorcomm,auto-sleep-disabled; motorcomm,rx-clk-drv-microamp = <5020>;
motorcomm,rx-data-drv-microamp = <5020>;
pinctrl-0 = <&eth_phy_reset_pin>; pinctrl-0 = <&eth_phy_reset_pin>;
pinctrl-names = "default"; pinctrl-names = "default";

View File

@ -6,41 +6,37 @@
#include "rk3328-u-boot.dtsi" #include "rk3328-u-boot.dtsi"
#include "rk3328-sdram-ddr4-666.dtsi" #include "rk3328-sdram-ddr4-666.dtsi"
/ {
chosen { &spi0 {
u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc; bootph-pre-ram;
bootph-some-ram;
flash@0 {
bootph-pre-ram;
bootph-some-ram;
}; };
}; };
&gpio0 { &spi0m2_clk {
bootph-pre-ram; bootph-pre-ram;
}; };
&pinctrl { &spi0m2_cs0 {
bootph-pre-ram; bootph-pre-ram;
}; };
&sdmmc0m1_pin { &spi0m2_rx {
bootph-pre-ram; bootph-pre-ram;
}; };
&pcfg_pull_up_4ma { &spi0m2_tx {
bootph-pre-ram; bootph-pre-ram;
}; };
/* Need this and all the pinctrl/gpio stuff above to set pinmux */ &usb20_otg {
dr_mode = "peripheral";
};
&vcc_sd { &vcc_sd {
bootph-pre-ram; bootph-pre-ram;
}; };
&gmac2io {
snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>;
};
&spi0 {
spi_flash: spiflash@0 {
bootph-all;
};
};

View File

@ -15,6 +15,7 @@
compatible = "xunlong,orangepi-r1-plus", "rockchip,rk3328"; compatible = "xunlong,orangepi-r1-plus", "rockchip,rk3328";
aliases { aliases {
ethernet0 = &gmac2io;
ethernet1 = &rtl8153; ethernet1 = &rtl8153;
mmc0 = &sdmmc; mmc0 = &sdmmc;
}; };

View File

@ -5,11 +5,8 @@
#include "rk3328-u-boot.dtsi" #include "rk3328-u-boot.dtsi"
#include "rk3328-sdram-ddr4-666.dtsi" #include "rk3328-sdram-ddr4-666.dtsi"
/ {
chosen {
u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
};
/ {
smbios { smbios {
compatible = "u-boot,sysinfo-smbios"; compatible = "u-boot,sysinfo-smbios";
@ -32,23 +29,10 @@
}; };
}; };
&gpio0 { &usb20_otg {
bootph-pre-ram; hnp-srp-disable;
}; };
&pinctrl {
bootph-pre-ram;
};
&sdmmc0m1_pin {
bootph-pre-ram;
};
&pcfg_pull_up_4ma {
bootph-pre-ram;
};
/* Need this and all the pinctrl/gpio stuff above to set pinmux */
&vcc_sd { &vcc_sd {
bootph-pre-ram; bootph-pre-ram;
}; };

View File

@ -11,6 +11,7 @@
compatible = "firefly,roc-rk3328-cc", "rockchip,rk3328"; compatible = "firefly,roc-rk3328-cc", "rockchip,rk3328";
aliases { aliases {
ethernet0 = &gmac2io;
mmc0 = &sdmmc; mmc0 = &sdmmc;
mmc1 = &emmc; mmc1 = &emmc;
}; };
@ -96,7 +97,6 @@
linux,default-trigger = "heartbeat"; linux,default-trigger = "heartbeat";
gpios = <&rk805 1 GPIO_ACTIVE_LOW>; gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
default-state = "on"; default-state = "on";
mode = <0x23>;
}; };
user_led: led-1 { user_led: led-1 {
@ -104,7 +104,6 @@
linux,default-trigger = "mmc1"; linux,default-trigger = "mmc1";
gpios = <&rk805 0 GPIO_ACTIVE_LOW>; gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
default-state = "off"; default-state = "off";
mode = <0x05>;
}; };
}; };
}; };

View File

@ -29,23 +29,15 @@
}; };
}; };
&gpio0 { &u2phy_host {
bootph-pre-ram; phy-supply = <&vcc_host_5v>;
}; };
&pinctrl { &vcc_host_5v {
bootph-pre-ram; /delete-property/ regulator-always-on;
/delete-property/ regulator-boot-on;
}; };
&sdmmc0m1_pin {
bootph-pre-ram;
};
&pcfg_pull_up_4ma {
bootph-pre-ram;
};
/* Need this and all the pinctrl/gpio stuff above to set pinmux */
&vcc_sd { &vcc_sd {
bootph-pre-ram; bootph-pre-ram;
}; };

View File

@ -21,6 +21,8 @@
compatible = "radxa,rockpi-e", "rockchip,rk3328"; compatible = "radxa,rockpi-e", "rockchip,rk3328";
aliases { aliases {
ethernet0 = &gmac2io;
ethernet1 = &gmac2phy;
mmc0 = &sdmmc; mmc0 = &sdmmc;
mmc1 = &emmc; mmc1 = &emmc;
}; };
@ -180,6 +182,59 @@
status = "okay"; status = "okay";
}; };
&gpio0 {
gpio-line-names =
/* GPIO0_A0 - A7 */
"", "", "", "", "", "", "", "",
/* GPIO0_B0 - B7 */
"", "", "", "", "", "", "", "",
/* GPIO0_C0 - C7 */
"", "", "", "", "", "", "", "",
/* GPIO0_D0 - D7 */
"", "", "", "pin-15 [GPIO0_D3]", "", "", "", "";
};
&gpio1 {
gpio-line-names =
/* GPIO1_A0 - A7 */
"", "", "", "", "", "", "", "",
/* GPIO1_B0 - B7 */
"", "", "", "", "", "", "", "",
/* GPIO1_C0 - C7 */
"", "", "", "", "", "", "", "",
/* GPIO1_D0 - D7 */
"", "", "", "", "pin-07 [GPIO1_D4]", "", "", "";
};
&gpio2 {
gpio-line-names =
/* GPIO2_A0 - A7 */
"pin-08 [GPIO2_A0]", "pin-10 [GPIO2_A1]", "pin-11 [GPIO2_A2]",
"pin-13 [GPIO2-A3]", "pin-27 [GPIO2_A4]", "pin-28 [GPIO2_A5]",
"pin-33 [GPIO2_A6]", "",
/* GPIO2_B0 - B7 */
"", "", "", "", "pin-26 [GPIO2_B4]", "", "", "pin-36 [GPIO2_B7]",
/* GPIO2_C0 - C7 */
"pin-32 [GPIO2_C0]", "pin-35 [GPIO2_C1]", "pin-12 [GPIO2_C2]",
"pin-38 [GPIO2_C3]", "pin-29 [GPIO2_C4]", "pin-31 [GPIO2_C5]",
"pin-37 [GPIO2_C6]", "pin-40 [GPIO2_C7]",
/* GPIO2_D0 - D7 */
"", "", "", "", "", "", "", "";
};
&gpio3 {
gpio-line-names =
/* GPIO3_A0 - A7 */
"pin-23 [GPIO3_A0]", "pin-19 [GPIO3_A1]", "pin-21 [GPIO3_A2]",
"", "pin-03 [GPIO3_A4]", "", "pin-05 [GPIO3_A6]", "",
/* GPIO3_B0 - B7 */
"pin-24 [GPIO3_B0]", "", "", "", "", "", "", "",
/* GPIO3_C0 - C7 */
"", "", "", "", "", "", "", "",
/* GPIO3_D0 - D7 */
"", "", "", "", "", "", "", "";
};
&i2c1 { &i2c1 {
status = "okay"; status = "okay";

View File

@ -5,11 +5,8 @@
#include "rk3328-u-boot.dtsi" #include "rk3328-u-boot.dtsi"
#include "rk3328-sdram-lpddr3-1600.dtsi" #include "rk3328-sdram-lpddr3-1600.dtsi"
/ {
chosen {
u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
};
/ {
smbios { smbios {
compatible = "u-boot,sysinfo-smbios"; compatible = "u-boot,sysinfo-smbios";
@ -32,29 +29,36 @@
}; };
}; };
&gpio0 { &spi0 {
bootph-pre-ram;
bootph-some-ram;
flash@0 {
bootph-pre-ram;
bootph-some-ram;
};
};
&spi0m2_clk {
bootph-pre-ram; bootph-pre-ram;
}; };
&pinctrl { &spi0m2_cs0 {
bootph-pre-ram; bootph-pre-ram;
}; };
&sdmmc0m1_pin { &spi0m2_rx {
bootph-pre-ram; bootph-pre-ram;
}; };
&pcfg_pull_up_4ma { &spi0m2_tx {
bootph-pre-ram; bootph-pre-ram;
}; };
/* Need this and all the pinctrl/gpio stuff above to set pinmux */ &usb20_otg {
hnp-srp-disable;
};
&vcc_sd { &vcc_sd {
bootph-pre-ram; bootph-pre-ram;
}; };
&spi0 {
spi_flash: flash@0 {
bootph-all;
};
};

View File

@ -11,6 +11,7 @@
compatible = "pine64,rock64", "rockchip,rk3328"; compatible = "pine64,rock64", "rockchip,rk3328";
aliases { aliases {
ethernet0 = &gmac2io;
mmc0 = &sdmmc; mmc0 = &sdmmc;
mmc1 = &emmc; mmc1 = &emmc;
}; };

View File

@ -13,7 +13,7 @@
}; };
chosen { chosen {
u-boot,spl-boot-order = &emmc, &sdmmc; u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
}; };
dmc: dmc { dmc: dmc {
@ -26,45 +26,117 @@
0x0 0xff720000 0x0 0x1000 0x0 0xff720000 0x0 0x1000
0x0 0xff798000 0x0 0x1000>; 0x0 0xff798000 0x0 0x1000>;
}; };
rng: rng@ff060000 {
compatible = "rockchip,cryptov1-rng";
reg = <0x0 0xff060000 0x0 0x4000>;
status = "okay";
};
}; };
&cru { &cru {
bootph-all; bootph-all;
}; };
&emmc {
bootph-pre-ram;
bootph-some-ram;
/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
u-boot,spl-fifo-mode;
};
&emmc_bus8 {
bootph-pre-ram;
};
&emmc_clk {
bootph-pre-ram;
};
&emmc_cmd {
bootph-pre-ram;
};
&gpio0 {
bootph-pre-ram;
};
&grf { &grf {
bootph-all; bootph-all;
}; };
&pcfg_pull_none {
bootph-all;
};
&pcfg_pull_none_8ma {
bootph-pre-ram;
};
&pcfg_pull_none_12ma {
bootph-pre-ram;
};
&pcfg_pull_up {
bootph-all;
};
&pcfg_pull_up_4ma {
bootph-pre-ram;
};
&pcfg_pull_up_8ma {
bootph-pre-ram;
};
&pcfg_pull_up_12ma {
bootph-pre-ram;
};
&pinctrl {
bootph-pre-ram;
bootph-some-ram;
};
&sdmmc {
bootph-pre-ram;
bootph-some-ram;
/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
u-boot,spl-fifo-mode;
};
&sdmmc0_bus4 {
bootph-pre-ram;
};
&sdmmc0_clk {
bootph-pre-ram;
};
&sdmmc0_cmd {
bootph-pre-ram;
};
&sdmmc0_dectn {
bootph-pre-ram;
};
&sdmmc0m1_pin {
bootph-pre-ram;
};
&uart2 { &uart2 {
bootph-all; bootph-all;
clock-frequency = <24000000>; clock-frequency = <24000000>;
}; };
&emmc { &uart2m1_xfer {
bootph-all;
/* mmc to sram can't do dma, prevent aborts transfering TF-A parts */
u-boot,spl-fifo-mode;
};
&sdmmc {
bootph-all;
/* mmc to sram can't do dma, prevent aborts transfering TF-A parts */
u-boot,spl-fifo-mode;
};
&usb20_otg {
hnp-srp-disable;
};
&spi0 {
bootph-all; bootph-all;
}; };
#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
&binman {
simple-bin-spi {
mkimage {
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
offset = <0x8000>;
};
};
};
#endif

View File

@ -20,6 +20,10 @@
#size-cells = <2>; #size-cells = <2>;
aliases { aliases {
gpio0 = &gpio0;
gpio1 = &gpio1;
gpio2 = &gpio2;
gpio3 = &gpio3;
serial0 = &uart0; serial0 = &uart0;
serial1 = &uart1; serial1 = &uart1;
serial2 = &uart2; serial2 = &uart2;
@ -27,8 +31,6 @@
i2c1 = &i2c1; i2c1 = &i2c1;
i2c2 = &i2c2; i2c2 = &i2c2;
i2c3 = &i2c3; i2c3 = &i2c3;
ethernet0 = &gmac2io;
ethernet1 = &gmac2phy;
}; };
cpus { cpus {
@ -102,10 +104,12 @@
l2: l2-cache0 { l2: l2-cache0 {
compatible = "cache"; compatible = "cache";
cache-level = <2>;
cache-unified;
}; };
}; };
cpu0_opp_table: opp_table0 { cpu0_opp_table: opp-table-0 {
compatible = "operating-points-v2"; compatible = "operating-points-v2";
opp-shared; opp-shared;
@ -306,6 +310,10 @@
}; };
power-domain@RK3328_PD_VIDEO { power-domain@RK3328_PD_VIDEO {
reg = <RK3328_PD_VIDEO>; reg = <RK3328_PD_VIDEO>;
clocks = <&cru ACLK_RKVDEC>,
<&cru HCLK_RKVDEC>,
<&cru SCLK_VDEC_CABAC>,
<&cru SCLK_VDEC_CORE>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
power-domain@RK3328_PD_VPU { power-domain@RK3328_PD_VPU {
@ -489,7 +497,7 @@
status = "disabled"; status = "disabled";
}; };
dmac: dmac@ff1f0000 { dmac: dma-controller@ff1f0000 {
compatible = "arm,pl330", "arm,primecell"; compatible = "arm,pl330", "arm,primecell";
reg = <0x0 0xff1f0000 0x0 0x4000>; reg = <0x0 0xff1f0000 0x0 0x4000>;
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
@ -599,7 +607,7 @@
gpu: gpu@ff300000 { gpu: gpu@ff300000 {
compatible = "rockchip,rk3328-mali", "arm,mali-450"; compatible = "rockchip,rk3328-mali", "arm,mali-450";
reg = <0x0 0xff300000 0x0 0x40000>; reg = <0x0 0xff300000 0x0 0x30000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
@ -623,7 +631,6 @@
compatible = "rockchip,iommu"; compatible = "rockchip,iommu";
reg = <0x0 0xff330200 0 0x100>; reg = <0x0 0xff330200 0 0x100>;
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "h265e_mmu";
clocks = <&cru ACLK_H265>, <&cru PCLK_H265>; clocks = <&cru ACLK_H265>, <&cru PCLK_H265>;
clock-names = "aclk", "iface"; clock-names = "aclk", "iface";
#iommu-cells = <0>; #iommu-cells = <0>;
@ -634,7 +641,6 @@
compatible = "rockchip,iommu"; compatible = "rockchip,iommu";
reg = <0x0 0xff340800 0x0 0x40>; reg = <0x0 0xff340800 0x0 0x40>;
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "vepu_mmu";
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
clock-names = "aclk", "iface"; clock-names = "aclk", "iface";
#iommu-cells = <0>; #iommu-cells = <0>;
@ -656,22 +662,34 @@
compatible = "rockchip,iommu"; compatible = "rockchip,iommu";
reg = <0x0 0xff350800 0x0 0x40>; reg = <0x0 0xff350800 0x0 0x40>;
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "vpu_mmu";
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
clock-names = "aclk", "iface"; clock-names = "aclk", "iface";
#iommu-cells = <0>; #iommu-cells = <0>;
power-domains = <&power RK3328_PD_VPU>; power-domains = <&power RK3328_PD_VPU>;
}; };
rkvdec_mmu: iommu@ff360480 { vdec: video-codec@ff360000 {
compatible = "rockchip,rk3328-vdec", "rockchip,rk3399-vdec";
reg = <0x0 0xff360000 0x0 0x480>;
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>,
<&cru SCLK_VDEC_CABAC>, <&cru SCLK_VDEC_CORE>;
clock-names = "axi", "ahb", "cabac", "core";
assigned-clocks = <&cru ACLK_RKVDEC>, <&cru SCLK_VDEC_CABAC>,
<&cru SCLK_VDEC_CORE>;
assigned-clock-rates = <400000000>, <400000000>, <300000000>;
iommus = <&vdec_mmu>;
power-domains = <&power RK3328_PD_VIDEO>;
};
vdec_mmu: iommu@ff360480 {
compatible = "rockchip,iommu"; compatible = "rockchip,iommu";
reg = <0x0 0xff360480 0x0 0x40>, <0x0 0xff3604c0 0x0 0x40>; reg = <0x0 0xff360480 0x0 0x40>, <0x0 0xff3604c0 0x0 0x40>;
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "rkvdec_mmu";
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>; clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
clock-names = "aclk", "iface"; clock-names = "aclk", "iface";
#iommu-cells = <0>; #iommu-cells = <0>;
status = "disabled"; power-domains = <&power RK3328_PD_VIDEO>;
}; };
vop: vop@ff370000 { vop: vop@ff370000 {
@ -700,7 +718,6 @@
compatible = "rockchip,iommu"; compatible = "rockchip,iommu";
reg = <0x0 0xff373f00 0x0 0x100>; reg = <0x0 0xff373f00 0x0 0x100>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "vop_mmu";
clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>; clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
clock-names = "aclk", "iface"; clock-names = "aclk", "iface";
#iommu-cells = <0>; #iommu-cells = <0>;
@ -901,6 +918,8 @@
resets = <&cru SRST_GMAC2IO_A>; resets = <&cru SRST_GMAC2IO_A>;
reset-names = "stmmaceth"; reset-names = "stmmaceth";
rockchip,grf = <&grf>; rockchip,grf = <&grf>;
tx-fifo-depth = <2048>;
rx-fifo-depth = <4096>;
snps,txpbl = <0x4>; snps,txpbl = <0x4>;
status = "disabled"; status = "disabled";
}; };
@ -923,6 +942,8 @@
reset-names = "stmmaceth"; reset-names = "stmmaceth";
phy-mode = "rmii"; phy-mode = "rmii";
phy-handle = <&phy>; phy-handle = <&phy>;
tx-fifo-depth = <2048>;
rx-fifo-depth = <4096>;
snps,txpbl = <0x4>; snps,txpbl = <0x4>;
clock_in_out = "output"; clock_in_out = "output";
status = "disabled"; status = "disabled";
@ -944,6 +965,22 @@
}; };
}; };
usb20_otg: usb@ff580000 {
compatible = "rockchip,rk3328-usb", "rockchip,rk3066-usb",
"snps,dwc2";
reg = <0x0 0xff580000 0x0 0x40000>;
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru HCLK_OTG>;
clock-names = "otg";
dr_mode = "otg";
g-np-tx-fifo-size = <16>;
g-rx-fifo-size = <280>;
g-tx-fifo-size = <256 128 128 64 32 16>;
phys = <&u2phy_otg>;
phy-names = "usb2-phy";
status = "disabled";
};
usb_host0_ehci: usb@ff5c0000 { usb_host0_ehci: usb@ff5c0000 {
compatible = "generic-ehci"; compatible = "generic-ehci";
reg = <0x0 0xff5c0000 0x0 0x10000>; reg = <0x0 0xff5c0000 0x0 0x10000>;
@ -983,31 +1020,6 @@
status = "disabled"; status = "disabled";
}; };
/*
* U-Boot Specific Change
*
* The OTG controller must come after the USB host pair for it
* to work. This is likely due to lack of support for the USB
* PHYs. This must be manually changed after each device tree
* sync. There is no clean way to handle this in -u-boot.dtsi
* files.
*/
usb20_otg: usb@ff580000 {
compatible = "rockchip,rk3328-usb", "rockchip,rk3066-usb",
"snps,dwc2";
reg = <0x0 0xff580000 0x0 0x40000>;
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru HCLK_OTG>;
clock-names = "otg";
dr_mode = "otg";
g-np-tx-fifo-size = <16>;
g-rx-fifo-size = <280>;
g-tx-fifo-size = <256 128 128 64 32 16>;
phys = <&u2phy_otg>;
phy-names = "usb2-phy";
status = "disabled";
};
gic: interrupt-controller@ff811000 { gic: interrupt-controller@ff811000 {
compatible = "arm,gic-400"; compatible = "arm,gic-400";
#interrupt-cells = <3>; #interrupt-cells = <3>;
@ -1021,6 +1033,17 @@
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
}; };
crypto: crypto@ff060000 {
compatible = "rockchip,rk3328-crypto";
reg = <0x0 0xff060000 0x0 0x4000>;
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru HCLK_CRYPTO_MST>, <&cru HCLK_CRYPTO_SLV>,
<&cru SCLK_CRYPTO>;
clock-names = "hclk_master", "hclk_slave", "sclk";
resets = <&cru SRST_CRYPTO>;
reset-names = "crypto-rst";
};
pinctrl: pinctrl { pinctrl: pinctrl {
compatible = "rockchip,rk3328-pinctrl"; compatible = "rockchip,rk3328-pinctrl";
rockchip,grf = <&grf>; rockchip,grf = <&grf>;
@ -1028,7 +1051,7 @@
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
gpio0: gpio0@ff210000 { gpio0: gpio@ff210000 {
compatible = "rockchip,gpio-bank"; compatible = "rockchip,gpio-bank";
reg = <0x0 0xff210000 0x0 0x100>; reg = <0x0 0xff210000 0x0 0x100>;
interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
@ -1041,7 +1064,7 @@
#interrupt-cells = <2>; #interrupt-cells = <2>;
}; };
gpio1: gpio1@ff220000 { gpio1: gpio@ff220000 {
compatible = "rockchip,gpio-bank"; compatible = "rockchip,gpio-bank";
reg = <0x0 0xff220000 0x0 0x100>; reg = <0x0 0xff220000 0x0 0x100>;
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
@ -1054,7 +1077,7 @@
#interrupt-cells = <2>; #interrupt-cells = <2>;
}; };
gpio2: gpio2@ff230000 { gpio2: gpio@ff230000 {
compatible = "rockchip,gpio-bank"; compatible = "rockchip,gpio-bank";
reg = <0x0 0xff230000 0x0 0x100>; reg = <0x0 0xff230000 0x0 0x100>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
@ -1067,7 +1090,7 @@
#interrupt-cells = <2>; #interrupt-cells = <2>;
}; };
gpio3: gpio3@ff240000 { gpio3: gpio@ff240000 {
compatible = "rockchip,gpio-bank"; compatible = "rockchip,gpio-bank";
reg = <0x0 0xff240000 0x0 0x100>; reg = <0x0 0xff240000 0x0 0x100>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -30,7 +30,7 @@
}; };
rng: rng@ff8b8000 { rng: rng@ff8b8000 {
compatible = "rockchip,cryptov1-rng"; compatible = "rockchip,rk3399-crypto";
reg = <0x0 0xff8b8000 0x0 0x1000>; reg = <0x0 0xff8b8000 0x0 0x1000>;
status = "okay"; status = "okay";
}; };

View File

@ -14,37 +14,6 @@
}; };
}; };
&cru {
assigned-clocks =
<&pmucru CLK_RTC_32K>,
<&pmucru PLL_PPLL>,
<&pmucru PCLK_PMU>, <&cru PLL_CPLL>,
<&cru PLL_GPLL>,
<&cru ACLK_BUS>, <&cru PCLK_BUS>,
<&cru ACLK_TOP_HIGH>, <&cru ACLK_TOP_LOW>,
<&cru HCLK_TOP>, <&cru PCLK_TOP>,
<&cru ACLK_PERIMID>, <&cru HCLK_PERIMID>,
<&cru CPLL_500M>, <&cru CPLL_333M>,
<&cru CPLL_250M>, <&cru CPLL_125M>,
<&cru CPLL_100M>, <&cru CPLL_62P5M>,
<&cru CPLL_50M>, <&cru CPLL_25M>;
assigned-clock-rates =
<32768>,
<200000000>,
<100000000>, <1000000000>,
<1188000000>,
<150000000>, <100000000>,
<500000000>, <400000000>,
<150000000>, <100000000>,
<300000000>, <150000000>,
<500000000>, <333333333>,
<250000000>, <125000000>,
<100000000>, <62500000>,
<50000000>, <25000000>;
assigned-clock-parents =
<&pmucru CLK_RTC32K_FRAC>;
};
&dsi_dphy0 { &dsi_dphy0 {
status = "okay"; status = "okay";
}; };

View File

@ -12,7 +12,17 @@
* set the correct dtb name for loading mainline Linux automatically. * set the correct dtb name for loading mainline Linux automatically.
*/ */
model = "RGXX3"; model = "RGXX3";
compatible = "anbernic,rg353m", "anbernic,rg353p", compatible = "anbernic,rg-arc-d", "anbernic,rg-arc-s",
"anbernic,rg353v", "anbernic,rg353vs", "anbernic,rg353m", "anbernic,rg353p",
"anbernic,rg503", "rockchip,rk3566"; "anbernic,rg353ps", "anbernic,rg353v",
"anbernic,rg353vs", "anbernic,rg503",
"powkiddy,rgb10max3", "powkiddy,rgb30",
"powkiddy,rk2023", "rockchip,rk3566";
};
&cru {
assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>,
<&pmucru PLL_PPLL>, <&cru PLL_VPLL>;
assigned-clock-rates = <32768>, <1200000000>,
<200000000>, <241500000>;
}; };

View File

@ -0,0 +1,44 @@
// SPDX-License-Identifier: GPL-2.0+
#include "rk356x-u-boot.dtsi"
&fspi_dual_io_pins {
bootph-all;
};
&gpio0 {
bootph-all;
};
&i2c0 {
bootph-pre-ram;
};
&rk817 {
bootph-pre-ram;
regulators {
bootph-pre-ram;
};
};
&sdhci {
cap-mmc-highspeed;
};
&sdmmc_pwren_l {
bootph-all;
};
&sfc {
bootph-pre-ram;
u-boot,spl-sfc-no-dma;
flash@0 {
bootph-pre-ram;
};
};
&vcc3v3_sd {
bootph-pre-ram;
};

View File

@ -0,0 +1,3 @@
// SPDX-License-Identifier: GPL-2.0+
#include "rk3566-pinetab2-u-boot.dtsi"

View File

@ -0,0 +1,28 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/dts-v1/;
#include "rk3566-pinetab2.dtsi"
/ {
model = "Pine64 PineTab2 v0.1";
compatible = "pine64,pinetab2-v0.1", "pine64,pinetab2", "rockchip,rk3566";
};
&lcd {
reset-gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&lcd_pwren_h &lcd0_rst_l>;
};
&pinctrl {
lcd0 {
lcd0_rst_l: lcd0-rst-l {
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&sdmmc1 {
vmmc-supply = <&vcc3v3_sys>;
};

View File

@ -0,0 +1,3 @@
// SPDX-License-Identifier: GPL-2.0+
#include "rk3566-pinetab2-u-boot.dtsi"

View File

@ -0,0 +1,48 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/dts-v1/;
#include "rk3566-pinetab2.dtsi"
/ {
model = "Pine64 PineTab2 v2.0";
compatible = "pine64,pinetab2-v2.0", "pine64,pinetab2", "rockchip,rk3566";
};
&gpio_keys {
pinctrl-0 = <&kb_id_det>, <&hall_int_l>;
event-hall-sensor {
debounce-interval = <20>;
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
label = "Hall Sensor";
linux,code = <SW_LID>;
linux,input-type = <EV_SW>;
wakeup-event-action = <EV_ACT_DEASSERTED>;
wakeup-source;
};
};
&lcd {
reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&lcd_pwren_h &lcd0_rst_l>;
};
&pinctrl {
lcd0 {
lcd0_rst_l: lcd0-rst-l {
rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
hall {
hall_int_l: hall-int-l {
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&sdmmc1 {
vmmc-supply = <&vcc_sys>;
};

View File

@ -0,0 +1,943 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/soc/rockchip,vop2.h>
#include <dt-bindings/usb/pd.h>
#include "rk3566.dtsi"
/ {
chassis-type = "tablet";
aliases {
mmc0 = &sdhci;
mmc1 = &sdmmc0;
};
chosen {
stdout-path = "serial2:1500000n8";
};
adc-keys {
compatible = "adc-keys";
io-channels = <&saradc 0>;
io-channel-names = "buttons";
keyup-threshold-microvolt = <1800000>;
poll-interval = <25>;
button-vol-up {
label = "Volume Up";
linux,code = <KEY_VOLUMEUP>;
press-threshold-microvolt = <297500>;
};
button-vol-down {
label = "Volume Down";
linux,code = <KEY_VOLUMEDOWN>;
press-threshold-microvolt = <1750>;
};
};
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm4 0 25000 0>;
brightness-levels = <20 220>;
num-interpolated-steps = <200>;
default-brightness-level = <100>;
power-supply = <&vcc_sys>;
};
battery: battery {
compatible = "simple-battery";
charge-full-design-microamp-hours = <6000000>;
charge-term-current-microamp = <300000>;
constant-charge-current-max-microamp = <2000000>;
constant-charge-voltage-max-microvolt = <4300000>;
voltage-max-design-microvolt = <4350000>;
voltage-min-design-microvolt = <3400000>;
ocv-capacity-celsius = <20>;
ocv-capacity-table-0 = <4322000 100>, <4250000 95>, <4192000 90>, <4136000 85>,
<4080000 80>, <4022000 75>, <3972000 70>, <3928000 65>,
<3885000 60>, <3833000 55>, <3798000 50>, <3780000 45>,
<3776000 40>, <3773000 35>, <3755000 30>, <3706000 25>,
<3640000 20>, <3589000 15>, <3535000 10>, <3492000 5>,
<3400000 0>;
};
gpio_keys: gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&kb_id_det>;
tablet-mode-switch {
debounce-interval = <20>;
gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_HIGH>;
label = "Tablet Mode";
linux,input-type = <EV_SW>;
linux,code = <SW_TABLET_MODE>;
};
};
hdmi-connector {
compatible = "hdmi-connector";
type = "d";
port {
hdmi_con_in: endpoint {
remote-endpoint = <&hdmi_out_con>;
};
};
};
led-0 {
compatible = "regulator-led";
vled-supply = <&vcc5v0_flashled>;
color = <LED_COLOR_ID_WHITE>;
function = LED_FUNCTION_FLASH;
};
rk817-sound {
compatible = "simple-audio-card";
pinctrl-names = "default";
pinctrl-0 = <&hp_det_l>;
simple-audio-card,format = "i2s";
simple-audio-card,name = "rk817_ext";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Headphone", "Headphones",
"Speaker", "Internal Speakers";
simple-audio-card,routing =
"MICR", "Mic Jack",
"Headphones", "HPOL",
"Headphones", "HPOR",
"Internal Speakers", "Speaker Amplifier OUTL",
"Internal Speakers", "Speaker Amplifier OUTR",
"Speaker Amplifier INL", "HPOL",
"Speaker Amplifier INR", "HPOR";
simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_LOW>;
simple-audio-card,aux-devs = <&speaker_amp>;
simple-audio-card,pin-switches = "Internal Speakers";
simple-audio-card,cpu {
sound-dai = <&i2s1_8ch>;
};
simple-audio-card,codec {
sound-dai = <&rk817>;
};
};
speaker_amp: speaker-amplifier {
compatible = "simple-audio-amplifier";
pinctrl-names = "default";
pinctrl-0 = <&spk_ctl>;
enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
sound-name-prefix = "Speaker Amplifier";
VCC-supply = <&vcc_bat>;
};
vcc_3v3: vcc-3v3-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_3v3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc3v3_sys>;
};
vcc3v3_minipcie: vcc3v3-minipcie-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio4 RK_PC3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_pwren_h>;
regulator-name = "vcc3v3_minipcie";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc_sys>;
};
vcc3v3_sd: vcc3v3-sd-regulator {
compatible = "regulator-fixed";
gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc_pwren_l>;
regulator-name = "vcc3v3_sd";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc3v3_sys>;
};
vcc5v0_flashled: vcc5v0-flashled-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&flash_led_en_h>;
regulator-name = "vcc5v0_flashled";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v_midu>;
};
vcc5v0_usb_host0: vcc5v0-usb-host0-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_host_pwren1_h>;
regulator-name = "vcc5v0_usb_host0";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v_midu>;
};
vcc5v0_usb_host2: vcc5v0-usb-host2-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_host_pwren2_h>;
regulator-name = "vcc5v0_usb_host2";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v_midu>;
};
vcc_bat: vcc-bat-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_bat";
regulator-always-on;
regulator-boot-on;
};
vcc_sys: vcc-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_sys";
regulator-always-on;
regulator-boot-on;
vin-supply = <&vcc_bat>;
};
vdd1v2_dvp: vdd1v2-dvp-regulator {
compatible = "regulator-fixed";
regulator-name = "vdd1v2_dvp";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
vin-supply = <&vcc_3v3>;
};
};
&combphy1 {
status = "okay";
};
&combphy2 {
status = "okay";
};
&cpu0 {
cpu-supply = <&vdd_cpu>;
};
&cpu1 {
cpu-supply = <&vdd_cpu>;
};
&cpu2 {
cpu-supply = <&vdd_cpu>;
};
&cpu3 {
cpu-supply = <&vdd_cpu>;
};
&cru {
assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>,
<&pmucru PLL_PPLL>, <&cru PLL_VPLL>;
assigned-clock-rates = <32768>, <1200000000>, <200000000>, <500000000>;
assigned-clock-parents = <&pmucru CLK_RTC32K_FRAC>;
};
&csi_dphy {
status = "okay";
};
&dsi0 {
status = "okay";
clock-master;
#address-cells = <1>;
#size-cells = <0>;
lcd: panel@0 {
compatible = "boe,th101mb31ig002-28a";
reg = <0>;
backlight = <&backlight>;
enable-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
rotation = <90>;
power-supply = <&vcc_3v3>;
port@0 {
panel_in_dsi: endpoint@0 {
remote-endpoint = <&dsi0_out_con>;
};
};
};
};
&dsi0_in {
dsi0_in_vp1: endpoint {
remote-endpoint = <&vp1_out_dsi0>;
};
};
&dsi0_out {
dsi0_out_con: endpoint {
remote-endpoint = <&panel_in_dsi>;
};
};
&dsi_dphy0 {
status = "okay";
};
&gpu {
mali-supply = <&vdd_gpu_npu>;
status = "okay";
};
&hdmi {
avdd-0v9-supply = <&vdda_0v9_p>;
avdd-1v8-supply = <&vcc_1v8>;
status = "okay";
};
&hdmi_in {
hdmi_in_vp0: endpoint {
remote-endpoint = <&vp0_out_hdmi>;
};
};
&hdmi_out {
hdmi_out_con: endpoint {
remote-endpoint = <&hdmi_con_in>;
};
};
&hdmi_sound {
status = "okay";
};
&i2c0 {
clock-frequency = <400000>;
status = "okay";
vdd_cpu: regulator@1c {
compatible = "tcs,tcs4525";
reg = <0x1c>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1150000>;
regulator-ramp-delay = <2300>;
regulator-always-on;
regulator-boot-on;
vin-supply = <&vcc_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
rk817: pmic@20 {
compatible = "rockchip,rk817";
reg = <0x20>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
clock-names = "mclk";
clocks = <&cru I2S1_MCLKOUT_TX>;
clock-output-names = "rk808-clkout1", "rk808-clkout2";
#clock-cells = <1>;
pinctrl-names = "default";
pinctrl-0 = <&pmic_int_l>, <&i2s1m0_mclk>;
rockchip,system-power-controller;
#sound-dai-cells = <0>;
wakeup-source;
vcc1-supply = <&vcc_sys>;
vcc2-supply = <&vcc_sys>;
vcc3-supply = <&vcc_sys>;
vcc4-supply = <&vcc_sys>;
vcc5-supply = <&vcc_sys>;
vcc6-supply = <&vcc_sys>;
vcc7-supply = <&vcc_sys>;
vcc8-supply = <&vcc_sys>;
vcc9-supply = <&vcc5v_midu>;
regulators {
vdd_logic: DCDC_REG1 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <6001>;
regulator-initial-mode = <0x2>;
regulator-name = "vdd_logic";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_gpu_npu: DCDC_REG2 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <6001>;
regulator-initial-mode = <0x2>;
regulator-name = "vdd_gpu_npu";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_ddr: DCDC_REG3 {
regulator-always-on;
regulator-boot-on;
regulator-initial-mode = <0x2>;
regulator-name = "vcc_ddr";
regulator-state-mem {
regulator-on-in-suspend;
};
};
vcc3v3_sys: DCDC_REG4 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-initial-mode = <0x2>;
regulator-name = "vcc3v3_sys";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcca1v8_pmu: LDO_REG1 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcca1v8_pmu";
regulator-state-mem {
regulator-on-in-suspend;
};
};
vdda_0v9_p: LDO_REG2 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-name = "vdda_0v9_p";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdda0v9_pmu: LDO_REG3 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-name = "vdda0v9_pmu";
regulator-state-mem {
regulator-on-in-suspend;
};
};
vccio_acodec: LDO_REG4 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vccio_acodec";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vccio_sd: LDO_REG5 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vccio_sd";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc3v3_pmu: LDO_REG6 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc3v3_pmu";
regulator-state-mem {
regulator-on-in-suspend;
};
};
vcc_1v8: LDO_REG7 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc_1v8";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc1v8_dvp: LDO_REG8 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc1v8_dvp";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc2v8_dvp: LDO_REG9 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-name = "vcc2v8_dvp";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc5v_midu: BOOST {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-name = "boost";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vbus: OTG_SWITCH {
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-name = "otg_switch";
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
charger {
monitored-battery = <&battery>;
rockchip,resistor-sense-micro-ohms = <10000>;
rockchip,sleep-enter-current-microamp = <300000>;
rockchip,sleep-filter-current-microamp = <100000>;
};
};
};
&i2c1 {
clock-frequency = <400000>;
status = "okay";
touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PB0 IRQ_TYPE_EDGE_FALLING>;
pinctrl-names = "default";
pinctrl-0 = <&tp_int_l_pmuio2>, <&tp_rst_l_pmuio2>;
AVDD28-supply = <&vcc3v3_pmu>;
VDDIO-supply = <&vcca1v8_pmu>;
irq-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
};
};
&i2c2 {
clock-frequency = <400000>;
pinctrl-0 = <&i2c2m1_xfer>;
status = "okay";
vcm@c {
compatible = "dongwoon,dw9714";
reg = <0x0c>;
vcc-supply = <&vcc1v8_dvp>;
};
camera@36 {
compatible = "ovti,ov5648";
reg = <0x36>;
pinctrl-names = "default";
pinctrl-0 = <&camerab_pdn_l &camerab_rst_l>;
clocks = <&cru CLK_CIF_OUT>;
assigned-clocks = <&cru CLK_CIF_OUT>;
assigned-clock-rates = <24000000>;
avdd-supply = <&vcc2v8_dvp>;
dvdd-supply = <&vdd1v2_dvp>;
dovdd-supply = <&vcc1v8_dvp>;
powerdown-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio4 RK_PB1 GPIO_ACTIVE_LOW>;
port {
endpoint {
data-lanes = <1 2>;
remote-endpoint = <0>;
link-frequencies = /bits/ 64 <210000000 168000000>;
};
};
};
};
&i2c5 {
clock-frequency = <400000>;
status = "okay";
accelerometer@18 {
compatible = "silan,sc7a20";
reg = <0x18>;
interrupt-parent = <&gpio3>;
interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&gsensor_int_l>;
st,drdy-int-pin = <1>;
vdd-supply = <&vcc_1v8>;
vddio-supply = <&vcc_1v8>;
mount-matrix = "1", "0", "0",
"0", "0", "1",
"0", "1", "0";
};
};
&i2s0_8ch {
status = "okay";
};
&i2s1_8ch {
pinctrl-names = "default";
pinctrl-0 = <&i2s1m0_sclktx
&i2s1m0_lrcktx
&i2s1m0_sdi0
&i2s1m0_sdo0>;
rockchip,trcm-sync-tx-only;
status = "okay";
};
&pcie2x1 {
pinctrl-names = "default";
pinctrl-0 = <&pcie_reset_h>;
reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_minipcie>;
status = "okay";
};
&pinctrl {
camerab {
camerab_pdn_l: camerab-pdn-l {
rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
};
camerab_rst_l: camerab-rst-l {
rockchip,pins = <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
cameraf {
cameraf_pdn_l: cameraf-pdn-l {
rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
};
cameraf_rst_l: cameraf-rst-l {
rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
flash {
flash_led_en_h: flash-led-en-h {
rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
fspi {
fspi_dual_io_pins: fspi-dual-io-pins {
rockchip,pins =
/* fspi_clk */
<1 RK_PD0 1 &pcfg_pull_none>,
/* fspi_cs0n */
<1 RK_PD3 1 &pcfg_pull_none>,
/* fspi_d0 */
<1 RK_PD1 1 &pcfg_pull_none>,
/* fspi_d1 */
<1 RK_PD2 1 &pcfg_pull_none>;
};
};
gsensor {
gsensor_int_l: gsensor-int-l {
rockchip,pins = <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
kb {
kb_id_det: kb-id-det {
rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
lcd {
lcd_pwren_h: lcd-pwren-h {
rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
pcie {
pcie_pwren_h: pcie-pwren-h {
rockchip,pins = <4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
pcie_reset_h: pcie-reset-h {
rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
pmic {
pmic_int_l: pmic-int-l {
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
sdmmc {
sdmmc_pwren_l: sdmmc-pwren-l {
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
sound {
hp_det_l: hp-det-l {
rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
spk_ctl: spk-ctl {
rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
tp {
tp_int_l_pmuio2: tp-int-l-pmuio2 {
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
};
tp_rst_l_pmuio2: tp-rst-l-pmuio2 {
rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
usb {
usbcc_int_l: usbcc-int-l {
rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
};
usb_host_pwren1_h: usb-host-pwren1-h {
rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
};
usb_host_pwren2_h: usb-host-pwren2-h {
rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
wifi {
host_wake_wl: host-wake-wl {
rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
};
wifi_wake_host_h: wifi-wake-host-h {
rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
};
&pmu_io_domains {
pmuio1-supply = <&vcc3v3_pmu>;
pmuio2-supply = <&vcca1v8_pmu>;
vccio1-supply = <&vccio_acodec>;
vccio2-supply = <&vcc_1v8>;
vccio3-supply = <&vccio_sd>;
vccio4-supply = <&vcc_1v8>;
vccio5-supply = <&vcc_1v8>;
vccio6-supply = <&vcc1v8_dvp>;
vccio7-supply = <&vcc_3v3>;
status = "okay";
};
&pwm4 {
status = "okay";
};
&saradc {
vref-supply = <&vcc_1v8>;
status = "okay";
};
&sdhci {
bus-width = <8>;
no-sdio;
no-sd;
non-removable;
max-frequency = <200000000>;
mmc-hs200-1_8v;
pinctrl-names = "default";
pinctrl-0 = <&emmc_bus8
&emmc_clk
&emmc_cmd
&emmc_datastrobe
&emmc_rstnout>;
vmmc-supply = <&vcc_3v3>;
vqmmc-supply = <&vcc_1v8>;
status = "okay";
};
&sdmmc0 {
bus-width = <4>;
cap-sd-highspeed;
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
disable-wp;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc0_bus4
&sdmmc0_clk
&sdmmc0_cmd
&sdmmc0_det>;
sd-uhs-sdr104;
vmmc-supply = <&vcc3v3_sd>;
vqmmc-supply = <&vccio_sd>;
status = "okay";
};
&sdmmc1 {
bus-width = <4>;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc1_bus4
&sdmmc1_cmd
&sdmmc1_clk>;
sd-uhs-sdr104;
vqmmc-supply = <&vcca1v8_pmu>;
status = "okay";
};
&sfc {
pinctrl-names = "default";
pinctrl-0 = <&fspi_dual_io_pins>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <100000000>;
spi-rx-bus-width = <2>;
spi-tx-bus-width = <1>;
};
};
&tsadc {
rockchip,hw-tshut-mode = <1>;
rockchip,hw-tshut-polarity = <0>;
status = "okay";
};
&uart2 {
status = "okay";
};
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
&usb_host0_xhci {
status = "okay";
};
&usb_host1_xhci {
status = "okay";
};
&usb2phy0 {
status = "okay";
};
&usb2phy0_host {
phy-supply = <&vcc5v0_usb_host0>;
status = "okay";
};
&usb2phy0_otg {
status = "okay";
};
&usb2phy1 {
status = "okay";
};
&usb2phy1_otg {
phy-supply = <&vcc5v0_usb_host2>;
status = "okay";
};
&vop {
assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
status = "okay";
};
&vop_mmu {
status = "okay";
};
&vp0 {
vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
reg = <ROCKCHIP_VOP2_EP_HDMI0>;
remote-endpoint = <&hdmi_in_vp0>;
};
};
&vp1 {
vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
reg = <ROCKCHIP_VOP2_EP_MIPI0>;
remote-endpoint = <&dsi0_in_vp1>;
};
};

View File

@ -0,0 +1,29 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
#include "rk3588-u-boot.dtsi"
&fspim2_pins {
bootph-all;
};
&sdhci {
cap-mmc-highspeed;
mmc-hs200-1_8v;
};
&sfc {
bootph-pre-ram;
u-boot,spl-sfc-no-dma;
pinctrl-names = "default";
pinctrl-0 = <&fspim2_pins>;
status = "okay";
flash@0 {
bootph-pre-ram;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <24000000>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <1>;
};
};

View File

@ -0,0 +1,216 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Rockchip Electronics Co., Ltd.
*
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "rk3588-coolpi-cm5.dtsi"
/ {
model = "RK3588 CoolPi CM5 EVB";
compatible = "coolpi,pi-cm5-evb", "coolpi,pi-cm5", "rockchip,rk3588";
backlight: backlight {
compatible = "pwm-backlight";
enable-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&bl_en>;
power-supply = <&vcc12v_dcin>;
pwms = <&pwm2 0 25000 0>;
};
leds: leds {
compatible = "gpio-leds";
green_led: led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
};
vcc12v_dcin: vcc12v-dcin-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc12v_dcin";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
vcc5v0_sys: vcc5v0-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc12v_dcin>;
};
vcc3v3_sys: vcc3v3-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc12v_dcin>;
};
vcc3v3_lcd: vcc3v3-lcd-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_lcd";
enable-active-high;
gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&lcdpwr_en>;
vin-supply = <&vcc3v3_sys>;
};
vcc5v0_usb_host1: vcc5v0_usb_host2: vcc5v0-usb-host-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_host";
regulator-boot-on;
regulator-always-on;
enable-active-high;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_host_pwren>;
vin-supply = <&vcc5v0_sys>;
};
vcc5v0_usb30_otg: vcc5v0-usb30-otg-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_otg";
regulator-boot-on;
regulator-always-on;
enable-active-high;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_otg_pwren>;
vin-supply = <&vcc5v0_sys>;
};
};
/* M.2 E-Key */
&pcie2x1l1 {
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_sys>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_clkreq &pcie_wake &pcie_rst &wifi_pwron &bt_pwron>;
status = "okay";
};
&pcie30phy {
status = "okay";
};
/* Standard pcie */
&pcie3x2 {
reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_sys>;
status = "okay";
};
/* M.2 M-Key ssd */
&pcie3x4 {
num-lanes = <2>;
reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_sys>;
status = "okay";
};
&pinctrl {
lcd {
lcdpwr_en: lcdpwr-en {
rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
};
bl_en: bl-en {
rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
usb {
usb_host_pwren: usb-host-pwren {
rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
};
usb_otg_pwren: usb-otg-pwren {
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
wifi {
bt_pwron: bt-pwron {
rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
};
pcie_clkreq: pcie-clkreq {
rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
};
pcie_rst: pcie-rst {
rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
};
wifi_pwron: wifi-pwron {
rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
};
pcie_wake: pcie-wake {
rockchip,pins = <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};
&pwm2 {
status = "okay";
};
&sata1 {
status = "okay";
};
&u2phy2 {
status = "okay";
};
&u2phy3 {
status = "okay";
};
&u2phy2_host {
phy-supply = <&vcc5v0_usb_host1>;
status = "okay";
};
&u2phy3_host {
phy-supply = <&vcc5v0_usb_host2>;
status = "okay";
};
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
&usb_host1_ehci {
status = "okay";
};
&usb_host1_ohci {
status = "okay";
};

View File

@ -0,0 +1,649 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Rockchip Electronics Co., Ltd.
*
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3588.dtsi"
/ {
compatible = "coolpi,pi-cm5", "rockchip,rk3588";
aliases {
mmc0 = &sdhci;
mmc1 = &sdmmc;
mmc2 = &sdio;
};
analog-sound {
compatible = "audio-graph-card";
dais = <&i2s0_8ch_p0>;
label = "rk3588-es8316";
routing = "MIC2", "Mic Jack",
"Headphones", "HPOL",
"Headphones", "HPOR";
widgets = "Microphone", "Mic Jack",
"Headphone", "Headphones";
};
chosen {
stdout-path = "serial2:1500000n8";
};
avdd0v85_pcie20: avdd0v85-pcie20-regulator {
compatible = "regulator-fixed";
regulator-name = "avdd0v85_pcie20";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
vin-supply = <&vdd_0v85_s0>;
};
avdd1v8_pcie20: avdd1v8-pcie20-regulator {
compatible = "regulator-fixed";
regulator-name = "avdd1v8_pcie20";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&avcc_1v8_s0>;
};
avdd0v75_pcie30: avdd0v75-pcie30-regulator {
compatible = "regulator-fixed";
regulator-name = "avdd0v75_pcie30";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
vin-supply = <&avdd_0v75_s0>;
};
pcie30_avdd1v8: avdd1v8-pcie30-regulator {
compatible = "regulator-fixed";
regulator-name = "pcie30_avdd1v8";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&avcc_1v8_s0>;
};
};
&combphy0_ps {
status = "okay";
};
&combphy1_ps {
status = "okay";
};
&combphy2_psu {
status = "okay";
};
&cpu_b0 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b1 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b2 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&cpu_b3 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&cpu_l0 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l1 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l2 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l3 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&gmac0 {
clock_in_out = "output";
phy-handle = <&rgmii_phy>;
phy-mode = "rgmii-rxid";
pinctrl-0 = <&gmac0_miim
&gmac0_tx_bus2
&gmac0_rx_bus2
&gmac0_rgmii_clk
&gmac0_rgmii_bus>;
pinctrl-names = "default";
rx_delay = <0x00>;
tx_delay = <0x43>;
status = "okay";
};
&i2c0 {
pinctrl-0 = <&i2c0m2_xfer>;
status = "okay";
vdd_cpu_big0_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big0_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_big1_s0: regulator@43 {
compatible = "rockchip,rk8603", "rockchip,rk8602";
reg = <0x43>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big1_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&i2c2 {
status = "okay";
vdd_npu_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_npu_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&i2c6 {
status = "okay";
hym8563: rtc@51 {
compatible = "haoyu,hym8563";
reg = <0x51>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PD4 IRQ_TYPE_LEVEL_LOW>;
#clock-cells = <0>;
clock-output-names = "hym8563";
pinctrl-names = "default";
pinctrl-0 = <&hym8563_int>;
wakeup-source;
};
};
&i2c7 {
pinctrl-0 = <&i2c7m0_xfer>;
status = "okay";
es8316: audio-codec@11 {
compatible = "everest,es8316";
reg = <0x11>;
assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
assigned-clock-rates = <12288000>;
clocks = <&cru I2S0_8CH_MCLKOUT>;
clock-names = "mclk";
#sound-dai-cells = <0>;
port {
es8316_p0_0: endpoint {
remote-endpoint = <&i2s0_8ch_p0_0>;
};
};
};
};
&i2s0_8ch {
pinctrl-0 = <&i2s0_lrck
&i2s0_mclk
&i2s0_sclk
&i2s0_sdi0
&i2s0_sdo0>;
status = "okay";
i2s0_8ch_p0: port {
i2s0_8ch_p0_0: endpoint {
dai-format = "i2s";
mclk-fs = <256>;
remote-endpoint = <&es8316_p0_0>;
};
};
};
&mdio0 {
rgmii_phy: ethernet-phy@1 {
/* YT8531C/H */
compatible = "ethernet-phy-ieee802.3-c22";
reg = <0x1>;
pinctrl-names = "default";
pinctrl-0 = <&yt8531_rst>;
reset-assert-us = <20000>;
reset-deassert-us = <100000>;
reset-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
};
};
/* ethernet */
&pcie2x1l2 {
reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_sys>;
pinctrl-names = "default";
pinctrl-0 = <&yt6801_isolate>;
status = "okay";
};
&pinctrl {
hym8563 {
hym8563_int: hym8563-int {
rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
yt6801 {
yt6801_isolate: yt6801-isolate {
rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
yt8531 {
yt8531_rst: yt8531-rst {
rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&saradc {
vref-supply = <&vcc_1v8_s0>;
status = "okay";
};
&sdhci {
bus-width = <8>;
max-frequency = <200000000>;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
no-sdio;
no-sd;
non-removable;
status = "okay";
};
&sdmmc {
bus-width = <4>;
cap-mmc-highspeed;
cap-sd-highspeed;
disable-wp;
max-frequency = <150000000>;
no-sdio;
no-mmc;
sd-uhs-sdr104;
vqmmc-supply = <&vccio_sd_s0>;
status = "okay";
};
&spi2 {
assigned-clocks = <&cru CLK_SPI2>;
assigned-clock-rates = <200000000>;
num-cs = <1>;
pinctrl-names = "default";
pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
status = "okay";
pmic@0 {
compatible = "rockchip,rk806";
reg = <0x0>;
interrupt-parent = <&gpio0>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
gpio-controller;
#gpio-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
spi-max-frequency = <1000000>;
vcc1-supply = <&vcc5v0_sys>;
vcc2-supply = <&vcc5v0_sys>;
vcc3-supply = <&vcc5v0_sys>;
vcc4-supply = <&vcc5v0_sys>;
vcc5-supply = <&vcc5v0_sys>;
vcc6-supply = <&vcc5v0_sys>;
vcc7-supply = <&vcc5v0_sys>;
vcc8-supply = <&vcc5v0_sys>;
vcc9-supply = <&vcc5v0_sys>;
vcc10-supply = <&vcc5v0_sys>;
vcc11-supply = <&vcc_2v0_pldo_s3>;
vcc12-supply = <&vcc5v0_sys>;
vcc13-supply = <&vcc_2v0_pldo_s3>;
vcc14-supply = <&vcc_2v0_pldo_s3>;
vcca-supply = <&vcc5v0_sys>;
rk806_dvs1_null: dvs1-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs2_null: dvs2-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs3_null: dvs3-null-pins {
pins = "gpio_pwrctrl3";
function = "pin_fun0";
};
regulators {
vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_gpu_s0";
regulator-enable-ramp-delay = <400>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_cpu_lit_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_log_s0: dcdc-reg3 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <750000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_log_s0";
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_vdenc_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_ddr_s0: dcdc-reg5 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <900000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_ddr_s0";
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
vdd2_ddr_s3: dcdc-reg6 {
regulator-always-on;
regulator-boot-on;
regulator-name = "vdd2_ddr_s3";
regulator-state-mem {
regulator-on-in-suspend;
};
};
vcc_2v0_pldo_s3: dcdc-reg7 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_2v0_pldo_s3";
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <2000000>;
};
};
vcc_3v3_s3: dcdc-reg8 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc_3v3_s3";
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3300000>;
};
};
vddq_ddr_s0: dcdc-reg9 {
regulator-always-on;
regulator-boot-on;
regulator-name = "vddq_ddr_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s3: dcdc-reg10 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc_1v8_s3";
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
avcc_1v8_s0: pldo-reg1 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "avcc_1v8_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s0: pldo-reg2 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc_1v8_s0";
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
avdd_1v2_s0: pldo-reg3 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-name = "avdd_1v2_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_3v3_s0: pldo-reg4 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12500>;
regulator-name = "vcc_3v3_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vccio_sd_s0: pldo-reg5 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12500>;
regulator-name = "vccio_sd_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
pldo6_s3: pldo-reg6 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "pldo6_s3";
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vdd_0v75_s3: nldo-reg1 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-name = "vdd_0v75_s3";
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_ddr_pll_s0: nldo-reg2 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-name = "vdd_ddr_pll_s0";
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
avdd_0v75_s0: nldo-reg3 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-name = "avdd_0v75_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v85_s0: nldo-reg4 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-name = "vdd_0v85_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v75_s0: nldo-reg5 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-name = "vdd_0v75_s0";
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
};
};
&tsadc {
status = "okay";
};
&uart2 {
pinctrl-0 = <&uart2m0_xfer>;
status = "okay";
};

View File

@ -0,0 +1,3 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
#include "rk3588s-u-boot.dtsi"

View File

@ -0,0 +1,44 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Minimal generic DT for RK3588S/RK3588 with eMMC and SD-card enabled
*/
/dts-v1/;
#include "rk3588s.dtsi"
/ {
model = "Generic RK3588S/RK3588";
compatible = "rockchip,rk3588";
aliases {
mmc0 = &sdhci;
mmc1 = &sdmmc;
};
chosen {
stdout-path = "serial2:1500000n8";
};
};
&sdhci {
bus-width = <8>;
cap-mmc-highspeed;
mmc-hs200-1_8v;
no-sd;
no-sdio;
non-removable;
status = "okay";
};
&sdmmc {
bus-width = <4>;
cap-sd-highspeed;
disable-wp;
no-mmc;
no-sdio;
status = "okay";
};
&uart2 {
status = "okay";
};

View File

@ -0,0 +1,33 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Theobroma Systems Design und Consulting GmbH
*/
#include "rk3588-u-boot.dtsi"
/ {
chosen {
u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc;
};
};
&emmc_pwrseq {
bootph-pre-ram;
bootph-some-ram;
};
&emmc_reset {
bootph-pre-ram;
bootph-some-ram;
};
&gpio2 {
bootph-pre-ram;
bootph-some-ram;
};
&sdhci {
/* U-Boot currently cannot handle anything below HS200 for eMMC on RK3588 */
/delete-property/ mmc-ddr-1_8v;
/delete-property/ cap-mmc-highspeed;
};

View File

@ -0,0 +1,803 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Theobroma Systems Design und Consulting GmbH
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/usb/pd.h>
#include "rk3588.dtsi"
/ {
model = "Theobroma Systems RK3588-SBC Jaguar";
compatible = "tsd,rk3588-jaguar", "rockchip,rk3588";
adc-keys {
compatible = "adc-keys";
io-channels = <&saradc 0>;
io-channel-names = "buttons";
keyup-threshold-microvolt = <1800000>;
poll-interval = <100>;
/* Can be controlled through SW2 but also GPIO1 on CP2102 on P20 */
button-bios-disable {
label = "BIOS_DISABLE";
linux,code = <KEY_VENDOR>;
press-threshold-microvolt = <0>;
};
};
aliases {
ethernet0 = &gmac0;
mmc0 = &sdhci;
mmc1 = &sdmmc;
rtc0 = &rtc_twi;
};
chosen {
stdout-path = "serial2:115200n8";
};
/* DCIN is 12-24V but standard is 12V */
dc_12v: dc-12v-regulator {
compatible = "regulator-fixed";
regulator-name = "dc_12v";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
emmc_pwrseq: emmc-pwrseq {
compatible = "mmc-pwrseq-emmc";
pinctrl-0 = <&emmc_reset>;
pinctrl-names = "default";
reset-gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_HIGH>;
};
leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&led1_pin>;
status = "okay";
/* LED1 on PCB */
led-1 {
gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_HIGH>;
function = LED_FUNCTION_HEARTBEAT;
linux,default-trigger = "heartbeat";
color = <LED_COLOR_ID_AMBER>;
};
};
pps {
compatible = "pps-gpio";
gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
};
vcc_1v1_nldo_s3: vcc-1v1-nldo-s3-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_1v1_nldo_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
vin-supply = <&vcc5v0_sys>;
};
vcc_1v2_s3: vcc-1v2-s3-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_1v2_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
vin-supply = <&vcc5v0_sys>;
};
/* Exposed on P14 and P15 */
vcc_2v8_s3: vcc-2v8-s3-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_2v8_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
vin-supply = <&vcc_3v3_s3>;
};
vcc_5v0_usb_a: vcc-5v0-usb-a-regulator {
compatible = "regulator-fixed";
regulator-name = "usb_a_vcc";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_sys>;
gpio = <&gpio1 RK_PB4 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
vcc_5v0_usb_c1: vcc-5v0-usb-c1-regulator {
compatible = "regulator-fixed";
regulator-name = "5v_usbc1";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usb>;
gpio = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
vcc_5v0_usb_c2: vcc-5v0-usb-c2-regulator {
compatible = "regulator-fixed";
regulator-name = "5v_usbc2";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usb>;
gpio = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
vcc3v3_mdot2: vcc3v3-mdot2-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_mdot2";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&dc_12v>;
};
vcc5v0_sys: vcc5v0-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&dc_12v>;
};
vcc5v0_usb: vcc5v0-usb-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usb";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_sys>;
};
};
&combphy1_ps {
status = "okay";
};
&cpu_b0 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b1 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b2 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&cpu_b3 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&cpu_l0 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l1 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l2 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l3 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&gmac0 {
clock_in_out = "output";
phy-handle = <&rgmii_phy>;
phy-mode = "rgmii";
phy-supply = <&vcc_1v2_s3>;
pinctrl-names = "default";
pinctrl-0 = <&gmac0_miim
&gmac0_rx_bus2
&gmac0_tx_bus2
&gmac0_rgmii_clk
&gmac0_rgmii_bus
&eth0_pins
&eth_reset>;
tx_delay = <0x10>;
rx_delay = <0x10>;
snps,reset-gpio = <&gpio4 RK_PC3 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 10000 100000>;
status = "okay";
};
&gpio1 {
mdot2e-w-disable1-n-hog {
gpios = <RK_PB1 GPIO_ACTIVE_LOW>;
output-low;
line-name = "m.2 E-key W_DISABLE1#";
gpio-hog;
};
};
&gpio4 {
mdot2e-w-disable2-n-hog {
gpios = <RK_PC1 GPIO_ACTIVE_LOW>;
output-low;
line-name = "m.2 E-key W_DISABLE2#";
gpio-hog;
};
};
&i2c0 {
pinctrl-0 = <&i2c0m2_xfer>;
status = "okay";
fan@18 {
compatible = "ti,amc6821";
reg = <0x18>;
};
vdd_npu_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_npu_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_big1_s0: regulator@43 {
compatible = "rockchip,rk8603", "rockchip,rk8602";
reg = <0x43>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big1_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
rtc_twi: rtc@6f {
compatible = "isil,isl1208";
reg = <0x6f>;
};
};
&i2c1 {
pinctrl-0 = <&i2c1m4_xfer>;
};
&i2c6 {
pinctrl-0 = <&i2c6m4_xfer>;
};
&i2c7 {
status = "okay";
/* SE050 Secure Element at 0x48; GPIO1_A4 for enable pin */
/* Also on 0x55 */
eeprom@54 {
compatible = "st,24c04", "atmel,24c04";
reg = <0x54>;
pagesize = <16>;
vcc-supply = <&vcc_3v3_s3>;
};
};
&i2c8 {
pinctrl-0 = <&i2c8m2_xfer>;
status = "okay";
vdd_cpu_big0_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big0_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&mdio0 {
rgmii_phy: ethernet-phy@6 {
/* KSZ9031 or KSZ9131 */
compatible = "ethernet-phy-ieee802.3-c22";
reg = <0x6>;
clocks = <&cru REFCLKO25M_ETH0_OUT>;
};
};
&pcie2x1l0 {
reset-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>; /* WIFI_PERST0# */
vpcie3v3-supply = <&vcc3v3_mdot2>;
status = "okay";
};
&pinctrl {
emmc {
emmc_reset: emmc-reset {
rockchip,pins = <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
ethernet {
eth_reset: eth-reset {
rockchip,pins = <4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
leds {
led1_pin: led1-pin {
rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&saradc {
vref-supply = <&vcc_1v8_s0>;
status = "okay";
};
&sdhci {
bus-width = <8>;
cap-mmc-highspeed;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
mmc-pwrseq = <&emmc_pwrseq>;
no-sdio;
no-sd;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&emmc_bus8 &emmc_cmd &emmc_clk &emmc_data_strobe>;
supports-cqe;
vmmc-supply = <&vcc_3v3_s3>;
vqmmc-supply = <&vcc_1v8_s3>;
status = "okay";
};
&sdmmc {
broken-cd;
bus-width = <4>;
cap-sd-highspeed;
disable-wp;
max-frequency = <150000000>;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc_bus4 &sdmmc_cmd &sdmmc_clk>;
sd-uhs-sdr12;
sd-uhs-sdr25;
sd-uhs-sdr50;
sd-uhs-ddr50;
sd-uhs-sdr104;
vmmc-supply = <&vcc_3v3_s3>;
vqmmc-supply = <&vccio_sd_s0>;
status = "okay";
};
&spi2 {
assigned-clocks = <&cru CLK_SPI2>;
assigned-clock-rates = <200000000>;
num-cs = <1>;
pinctrl-names = "default";
pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
status = "okay";
pmic@0 {
compatible = "rockchip,rk806";
reg = <0x0>;
interrupt-parent = <&gpio0>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
gpio-controller;
#gpio-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
spi-max-frequency = <1000000>;
system-power-controller;
vcc1-supply = <&vcc5v0_sys>;
vcc2-supply = <&vcc5v0_sys>;
vcc3-supply = <&vcc5v0_sys>;
vcc4-supply = <&vcc5v0_sys>;
vcc5-supply = <&vcc5v0_sys>;
vcc6-supply = <&vcc5v0_sys>;
vcc7-supply = <&vcc5v0_sys>;
vcc8-supply = <&vcc5v0_sys>;
vcc9-supply = <&vcc5v0_sys>;
vcc10-supply = <&vcc5v0_sys>;
vcc11-supply = <&vcc_2v0_pldo_s3>;
vcc12-supply = <&vcc5v0_sys>;
vcc13-supply = <&vcc_1v1_nldo_s3>;
vcc14-supply = <&vcc_1v1_nldo_s3>;
vcca-supply = <&vcc5v0_sys>;
rk806_dvs1_null: dvs1-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs2_null: dvs2-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs3_null: dvs3-null-pins {
pins = "gpio_pwrctrl3";
function = "pin_fun0";
};
regulators {
vdd_gpu_s0: dcdc-reg1 {
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-name = "vdd_gpu_s0";
regulator-enable-ramp-delay = <400>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_lit_s0: dcdc-reg2 {
regulator-name = "vdd_cpu_lit_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_log_s0: dcdc-reg3 {
regulator-name = "vdd_log_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <750000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_vdenc_s0: dcdc-reg4 {
regulator-name = "vdd_vdenc_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_ddr_s0: dcdc-reg5 {
regulator-name = "vdd_ddr_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <900000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
vdd2_ddr_s3: dcdc-reg6 {
regulator-name = "vdd2_ddr_s3";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-on-in-suspend;
};
};
vcc_2v0_pldo_s3: dcdc-reg7 {
regulator-name = "vdd_2v0_pldo_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <2000000>;
};
};
vcc_3v3_s3: dcdc-reg8 {
regulator-name = "vcc_3v3_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3300000>;
};
};
vddq_ddr_s0: dcdc-reg9 {
regulator-name = "vddq_ddr_s0";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s3: dcdc-reg10 {
regulator-name = "vcc_1v8_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vcca_1v8_s0: pldo-reg1 {
regulator-name = "vcca_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s0: pldo-reg2 {
regulator-name = "vcc_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vdda_1v2_s0: pldo-reg3 {
regulator-name = "vdda_1v2_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcca_3v3_s0: pldo-reg4 {
regulator-name = "vcca_3v3_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vccio_sd_s0: pldo-reg5 {
regulator-name = "vccio_sd_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
pldo6_s3: pldo-reg6 {
regulator-name = "pldo6_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vdd_0v75_s3: nldo-reg1 {
regulator-name = "vdd_0v75_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdda_ddr_pll_s0: nldo-reg2 {
regulator-name = "vdda_ddr_pll_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
vdda_0v75_s0: nldo-reg3 {
regulator-name = "vdda_0v75_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdda_0v85_s0: nldo-reg4 {
regulator-name = "vdda_0v85_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v75_s0: nldo-reg5 {
regulator-name = "vdd_0v75_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
};
};
&tsadc {
status = "okay";
};
&u2phy2 {
status = "okay";
};
&u2phy2_host {
phy-supply = <&vcc_5v0_usb_a>;
status = "okay";
};
&u2phy3 {
status = "okay";
};
&u2phy3_host {
status = "okay";
};
/* Mule-ATtiny debug UART; typically baudrate 9600 */
&uart0 {
pinctrl-0 = <&uart0m0_xfer>;
status = "okay";
};
/* Main debug interface on P20 micro-USB B port and P21 header */
&uart2 {
pinctrl-0 = <&uart2m0_xfer>;
status = "okay";
};
/* RS485 on P19 */
&uart3 {
pinctrl-0 = <&uart3m2_xfer &uart3_rtsn>;
linux,rs485-enabled-at-boot-time;
status = "okay";
};
/* Mule-ATtiny UPDI flashing UART */
&uart7 {
pinctrl-0 = <&uart7m0_xfer>;
status = "okay";
};
/* host0 on P10 USB-A */
&usb_host0_ehci {
status = "okay";
};
/* host0 on P10 USB-A */
&usb_host0_ohci {
status = "okay";
};
/* host1 on M.2 E-key */
&usb_host1_ehci {
status = "okay";
};
/* host1 on M.2 E-key */
&usb_host1_ohci {
status = "okay";
};

View File

@ -0,0 +1,12 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
*/
#include "rk3588-u-boot.dtsi"
/ {
chosen {
u-boot,spl-boot-order = "same-as-spl", &sdhci;
};
};

View File

@ -0,0 +1,688 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
*
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3588.dtsi"
/ {
model = "Rockchip Toybrick TB-RK3588X Board";
compatible = "rockchip,rk3588-toybrick-x0", "rockchip,rk3588";
aliases {
mmc0 = &sdhci;
};
chosen {
stdout-path = "serial2:1500000n8";
};
adc-keys {
compatible = "adc-keys";
io-channels = <&saradc 1>;
io-channel-names = "buttons";
keyup-threshold-microvolt = <1800000>;
poll-interval = <100>;
button-vol-up {
label = "Volume Up";
linux,code = <KEY_VOLUMEUP>;
press-threshold-microvolt = <17000>;
};
button-vol-down {
label = "Volume Down";
linux,code = <KEY_VOLUMEDOWN>;
press-threshold-microvolt = <417000>;
};
button-menu {
label = "Menu";
linux,code = <KEY_MENU>;
press-threshold-microvolt = <890000>;
};
button-escape {
label = "Escape";
linux,code = <KEY_ESC>;
press-threshold-microvolt = <1235000>;
};
};
backlight: backlight {
compatible = "pwm-backlight";
power-supply = <&vcc12v_dcin>;
pwms = <&pwm2 0 25000 0>;
};
pcie20_avdd0v85: pcie20-avdd0v85-regulator {
compatible = "regulator-fixed";
regulator-name = "pcie20_avdd0v85";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
vin-supply = <&vdd_0v85_s0>;
};
pcie20_avdd1v8: pcie20-avdd1v8-regulator {
compatible = "regulator-fixed";
regulator-name = "pcie20_avdd1v8";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&avcc_1v8_s0>;
};
pcie30_avdd0v75: pcie30-avdd0v75-regulator {
compatible = "regulator-fixed";
regulator-name = "pcie30_avdd0v75";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
vin-supply = <&avdd_0v75_s0>;
};
pcie30_avdd1v8: pcie30-avdd1v8-regulator {
compatible = "regulator-fixed";
regulator-name = "pcie30_avdd1v8";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&avcc_1v8_s0>;
};
vcc12v_dcin: vcc12v-dcin-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc12v_dcin";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
vcc5v0_host: vcc5v0-host-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_host_en>;
regulator-name = "vcc5v0_host";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usb>;
};
vcc5v0_sys: vcc5v0-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc12v_dcin>;
};
vcc5v0_usbdcin: vcc5v0-usbdcin-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usbdcin";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc12v_dcin>;
};
vcc5v0_usb: vcc5v0-usb-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usb";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usbdcin>;
};
vcc_1v1_nldo_s3: vcc-1v1-nldo-s3-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_1v1_nldo_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
vin-supply = <&vcc5v0_sys>;
};
};
&combphy0_ps {
status = "okay";
};
&combphy2_psu {
status = "okay";
};
&cpu_b0 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b1 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b2 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&cpu_b3 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&cpu_l0 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l1 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l2 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_l3 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&gmac0 {
clock_in_out = "output";
phy-handle = <&rgmii_phy>;
phy-mode = "rgmii-rxid";
pinctrl-0 = <&gmac0_miim
&gmac0_tx_bus2
&gmac0_rx_bus2
&gmac0_rgmii_clk
&gmac0_rgmii_bus>;
pinctrl-names = "default";
rx_delay = <0x00>;
tx_delay = <0x43>;
status = "okay";
};
&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0m2_xfer>;
status = "okay";
vdd_cpu_big0_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big0_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_big1_s0: regulator@43 {
compatible = "rockchip,rk8603", "rockchip,rk8602";
reg = <0x43>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big1_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&i2c2 {
status = "okay";
hym8563: rtc@51 {
compatible = "haoyu,hym8563";
reg = <0x51>;
#clock-cells = <0>;
clock-output-names = "hym8563";
interrupt-parent = <&gpio0>;
interrupts = <RK_PD4 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&hym8563_int>;
wakeup-source;
};
};
&mdio0 {
rgmii_phy: ethernet-phy@1 {
/* RTL8211F */
compatible = "ethernet-phy-id001c.c916";
reg = <0x1>;
pinctrl-names = "default";
pinctrl-0 = <&rtl8211f_rst>;
reset-assert-us = <20000>;
reset-deassert-us = <100000>;
reset-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
};
};
&pinctrl {
rtl8211f {
rtl8211f_rst: rtl8211f-rst {
rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
hym8563 {
hym8563_int: hym8563-int {
rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
usb {
vcc5v0_host_en: vcc5v0-host-en {
rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&pwm2 {
status = "okay";
};
&saradc {
vref-supply = <&vcc_1v8_s0>;
status = "okay";
};
&sdhci {
bus-width = <8>;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
no-sdio;
no-sd;
non-removable;
status = "okay";
};
&spi2 {
assigned-clocks = <&cru CLK_SPI2>;
assigned-clock-rates = <200000000>;
num-cs = <1>;
pinctrl-names = "default";
pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
status = "okay";
pmic@0 {
compatible = "rockchip,rk806";
reg = <0x0>;
gpio-controller;
#gpio-cells = <2>;
interrupt-parent = <&gpio0>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
spi-max-frequency = <1000000>;
system-power-controller;
vcc1-supply = <&vcc5v0_sys>;
vcc2-supply = <&vcc5v0_sys>;
vcc3-supply = <&vcc5v0_sys>;
vcc4-supply = <&vcc5v0_sys>;
vcc5-supply = <&vcc5v0_sys>;
vcc6-supply = <&vcc5v0_sys>;
vcc7-supply = <&vcc5v0_sys>;
vcc8-supply = <&vcc5v0_sys>;
vcc9-supply = <&vcc5v0_sys>;
vcc10-supply = <&vcc5v0_sys>;
vcc11-supply = <&vcc_2v0_pldo_s3>;
vcc12-supply = <&vcc5v0_sys>;
vcc13-supply = <&vcc_1v1_nldo_s3>;
vcc14-supply = <&vcc_1v1_nldo_s3>;
vcca-supply = <&vcc5v0_sys>;
rk806_dvs1_null: dvs1-null-pins {
pins = "gpio_pwrctrl1";
function = "pin_fun0";
};
rk806_dvs2_null: dvs2-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs3_null: dvs3-null-pins {
pins = "gpio_pwrctrl3";
function = "pin_fun0";
};
regulators {
vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
regulator-name = "vdd_gpu_s0";
regulator-boot-on;
regulator-enable-ramp-delay = <400>;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
regulator-name = "vdd_cpu_lit_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_log_s0: dcdc-reg3 {
regulator-name = "vdd_log_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <750000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
regulator-name = "vdd_vdenc_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-init-microvolt = <750000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_ddr_s0: dcdc-reg5 {
regulator-name = "vdd_ddr_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <900000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
vdd2_ddr_s3: dcdc-reg6 {
regulator-name = "vdd2_ddr_s3";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-on-in-suspend;
};
};
vcc_2v0_pldo_s3: dcdc-reg7 {
regulator-name = "vdd_2v0_pldo_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <2000000>;
};
};
vcc_3v3_s3: dcdc-reg8 {
regulator-name = "vcc_3v3_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3300000>;
};
};
vddq_ddr_s0: dcdc-reg9 {
regulator-name = "vddq_ddr_s0";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s3: dcdc-reg10 {
regulator-name = "vcc_1v8_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
avcc_1v8_s0: pldo-reg1 {
regulator-name = "avcc_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s0: pldo-reg2 {
regulator-name = "vcc_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
avdd_1v2_s0: pldo-reg3 {
regulator-name = "avdd_1v2_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_3v3_s0: pldo-reg4 {
regulator-name = "vcc_3v3_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vccio_sd_s0: pldo-reg5 {
regulator-name = "vccio_sd_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
pldo6_s3: pldo-reg6 {
regulator-name = "pldo6_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vdd_0v75_s3: nldo-reg1 {
regulator-name = "vdd_0v75_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_ddr_pll_s0: nldo-reg2 {
regulator-name = "vdd_ddr_pll_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
avdd_0v75_s0: nldo-reg3 {
regulator-name = "avdd_0v75_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <837500>;
regulator-max-microvolt = <837500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v85_s0: nldo-reg4 {
regulator-name = "vdd_0v85_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v75_s0: nldo-reg5 {
regulator-name = "vdd_0v75_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
};
};
&u2phy2 {
status = "okay";
};
&u2phy2_host {
phy-supply = <&vcc5v0_host>;
status = "okay";
};
&u2phy3 {
status = "okay";
};
&u2phy3_host {
phy-supply = <&vcc5v0_host>;
status = "okay";
};
&uart2 {
pinctrl-0 = <&uart2m0_xfer>;
status = "okay";
};
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
&usb_host1_ehci {
status = "okay";
};
&usb_host1_ohci {
status = "okay";
};

View File

@ -0,0 +1,29 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
#include "rk3588s-u-boot.dtsi"
&fspim2_pins {
bootph-all;
};
&sdhci {
cap-mmc-highspeed;
mmc-hs200-1_8v;
};
&sfc {
bootph-pre-ram;
u-boot,spl-sfc-no-dma;
pinctrl-names = "default";
pinctrl-0 = <&fspim2_pins>;
status = "okay";
flash@0 {
bootph-pre-ram;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <24000000>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <1>;
};
};

View File

@ -0,0 +1,812 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Rockchip Electronics Co., Ltd.
*
* https://cool-pi.com/topic/130/coolpi-4b-product-spec-introduction
*
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3588s.dtsi"
/ {
model = "RK3588S CoolPi 4 Model B";
compatible = "coolpi,pi-4b", "rockchip,rk3588s";
aliases {
mmc0 = &sdhci;
mmc1 = &sdmmc;
mmc2 = &sdio;
};
analog-sound {
compatible = "audio-graph-card";
dais = <&i2s0_8ch_p0>;
label = "rk3588-es8316";
routing = "MIC2", "Mic Jack",
"Headphones", "HPOL",
"Headphones", "HPOR";
widgets = "Microphone", "Mic Jack",
"Headphone", "Headphones";
};
chosen {
stdout-path = "serial2:1500000n8";
};
leds: leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&gpio_leds>;
led0: led-green {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio0 RK_PD0 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
led1: led-red {
color = <LED_COLOR_ID_RED>;
default-state = "off";
function = LED_FUNCTION_WLAN;
gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "phy0tx";
};
};
sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&hym8563>;
clock-names = "ext_clock";
pinctrl-names = "default";
pinctrl-0 = <&wifi_enable_h>;
/*
* On the module itself this is one of these (depending
* on the actual card populated):
* - SDIO_RESET_L_WL_REG_ON
* - PDN (power down when low)
*/
post-power-on-delay-ms = <200>;
reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
};
vcc12v_dcin: vcc12v-dcin-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc12v_dcin";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
vcc5v0_sys: vcc5v0-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc12v_dcin>;
};
vcc5v0_usbdcin: vcc5v0-usbdcin-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usbdcin";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc12v_dcin>;
};
vcc5v0_usb: vcc5v0-usb-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usb";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usbdcin>;
};
avdd0v85_pcie20: avdd0v85-pcie20-regulator {
compatible = "regulator-fixed";
regulator-name = "avdd0v85_pcie20";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
vin-supply = <&vdd_0v85_s0>;
};
avdd1v8_pcie20: avdd1v8-pcie20-regulator {
compatible = "regulator-fixed";
regulator-name = "avdd1v8_pcie20";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&avcc_1v8_s0>;
};
vcc3v3_mipi: vcc3v3-mipi-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
regulator-name = "vcc3v3_mipi";
regulator-boot-on;
regulator-always-on;
vin-supply = <&vcc_3v3_s3>;
};
vcc5v0_host: vcc5v0-host-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_host_en>;
regulator-name = "vcc5v0_host";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_sys>;
};
vcc5v0_otg: vcc5v0-otg-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_u3host_en>;
regulator-name = "vcc5v0_otg";
regulator-boot-on;
regulator-always-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_sys>;
};
vcc_1v1_nldo_s3: vcc-1v1-nldo-s3-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_1v1_nldo_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
vin-supply = <&vcc5v0_sys>;
};
};
&combphy0_ps {
status = "okay";
};
&combphy2_psu {
status = "okay";
};
&cpu_l0 {
cpu-supply = <&vdd_cpu_lit_s0>;
};
&cpu_b0 {
cpu-supply = <&vdd_cpu_big0_s0>;
};
&cpu_b2 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
&i2c0 {
pinctrl-0 = <&i2c0m2_xfer>;
status = "okay";
vdd_cpu_big0_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big0_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_big1_s0: regulator@43 {
compatible = "rockchip,rk8603", "rockchip,rk8602";
reg = <0x43>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu_big1_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <1050000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&i2c2 {
status = "okay";
vdd_npu_s0: regulator@42 {
compatible = "rockchip,rk8602";
reg = <0x42>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_npu_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
&i2c6 {
pinctrl-0 = <&i2c6m3_xfer>;
status = "okay";
hym8563: rtc@51 {
compatible = "haoyu,hym8563";
reg = <0x51>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
#clock-cells = <0>;
clock-output-names = "hym8563";
pinctrl-names = "default";
pinctrl-0 = <&hym8563_int>;
};
};
&i2c7 {
pinctrl-0 = <&i2c7m0_xfer>;
status = "okay";
es8316: audio-codec@11 {
compatible = "everest,es8316";
reg = <0x11>;
assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
assigned-clock-rates = <12288000>;
clocks = <&cru I2S0_8CH_MCLKOUT>;
clock-names = "mclk";
#sound-dai-cells = <0>;
port {
es8316_p0_0: endpoint {
remote-endpoint = <&i2s0_8ch_p0_0>;
};
};
};
};
&i2s0_8ch {
pinctrl-0 = <&i2s0_lrck
&i2s0_mclk
&i2s0_sclk
&i2s0_sdi0
&i2s0_sdo0>;
status = "okay";
i2s0_8ch_p0: port {
i2s0_8ch_p0_0: endpoint {
dai-format = "i2s";
mclk-fs = <256>;
remote-endpoint = <&es8316_p0_0>;
};
};
};
&pcie2x1l2 {
pinctrl-names = "default";
pinctrl-0 = <&rtl8111_isolate>;
reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&pinctrl {
hym8563 {
hym8563_int: hym8563-int {
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
led {
gpio_leds: gpio-leds {
rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>,
<0 RK_PD0 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
rtl8111 {
rtl8111_isolate: rtl8111-isolate {
rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
sdio-pwrseq {
wifi_enable_h: wifi-enable-h {
rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
usb {
vcc5v0_host_en: vcc5v0-host-en {
rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>,
<4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
};
vcc5v0_u3host_en: vcc5v0-u3host-en {
rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
wireless-bluetooth {
bt_reset_gpio: bt-reset-pin {
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
};
bt_wake_gpio: bt-wake-pin {
rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
bt_wake_host_irq: bt-wake-host-irq {
rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
wireless-wlan {
wifi_host_wake_irq: wifi-host-wake-irq {
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>;
};
wifi_poweren_pin: wifi-poweren-pin {
rockchip,pins = <1 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};
&pwm2 {
pinctrl-0 = <&pwm2m1_pins>;
status = "okay";
};
&pwm13 {
pinctrl-names = "active";
pinctrl-0 = <&pwm13m2_pins>;
status = "okay";
};
&saradc {
vref-supply = <&vcc_1v8_s0>;
status = "okay";
};
&sdhci {
bus-width = <8>;
max-frequency = <200000000>;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
no-sdio;
no-sd;
non-removable;
status = "okay";
};
&sdio {
bus-width = <4>;
cap-sd-highspeed;
cap-sdio-irq;
disable-wp;
keep-power-in-suspend;
max-frequency = <150000000>;
mmc-pwrseq = <&sdio_pwrseq>;
no-sd;
no-mmc;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&sdiom1_pins>,<&wifi_poweren_pin>;
status = "okay";
};
&sdmmc {
bus-width = <4>;
cap-mmc-highspeed;
cap-sd-highspeed;
disable-wp;
max-frequency = <150000000>;
no-sdio;
no-mmc;
sd-uhs-sdr104;
vmmc-supply = <&vcc_3v3_s3>;
vqmmc-supply = <&vccio_sd_s0>;
status = "okay";
};
&spi2 {
assigned-clocks = <&cru CLK_SPI2>;
assigned-clock-rates = <200000000>;
num-cs = <1>;
pinctrl-names = "default";
pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
status = "okay";
pmic@0 {
compatible = "rockchip,rk806";
reg = <0x0>;
interrupt-parent = <&gpio0>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
gpio-controller;
#gpio-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
spi-max-frequency = <1000000>;
vcc1-supply = <&vcc5v0_sys>;
vcc2-supply = <&vcc5v0_sys>;
vcc3-supply = <&vcc5v0_sys>;
vcc4-supply = <&vcc5v0_sys>;
vcc5-supply = <&vcc5v0_sys>;
vcc6-supply = <&vcc5v0_sys>;
vcc7-supply = <&vcc5v0_sys>;
vcc8-supply = <&vcc5v0_sys>;
vcc9-supply = <&vcc5v0_sys>;
vcc10-supply = <&vcc5v0_sys>;
vcc11-supply = <&vcc_2v0_pldo_s3>;
vcc12-supply = <&vcc5v0_sys>;
vcc13-supply = <&vcc_1v1_nldo_s3>;
vcc14-supply = <&vcc_1v1_nldo_s3>;
vcca-supply = <&vcc5v0_sys>;
rk806_dvs1_null: dvs1-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs2_null: dvs2-null-pins {
pins = "gpio_pwrctrl2";
function = "pin_fun0";
};
rk806_dvs3_null: dvs3-null-pins {
pins = "gpio_pwrctrl3";
function = "pin_fun0";
};
regulators {
vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
regulator-name = "vdd_gpu_s0";
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-enable-ramp-delay = <400>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
regulator-name = "vdd_cpu_lit_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_log_s0: dcdc-reg3 {
regulator-name = "vdd_log_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <750000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
regulator-name = "vdd_vdenc_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <550000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_ddr_s0: dcdc-reg5 {
regulator-name = "vdd_ddr_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <900000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
vdd2_ddr_s3: dcdc-reg6 {
regulator-name = "vdd2_ddr_s3";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-on-in-suspend;
};
};
vcc_2v0_pldo_s3: dcdc-reg7 {
regulator-name = "vdd_2v0_pldo_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <2000000>;
};
};
vcc_3v3_s3: dcdc-reg8 {
regulator-name = "vcc_3v3_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3300000>;
};
};
vddq_ddr_s0: dcdc-reg9 {
regulator-name = "vddq_ddr_s0";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s3: dcdc-reg10 {
regulator-name = "vcc_1v8_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
avcc_1v8_s0: pldo-reg1 {
regulator-name = "avcc_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8_s0: pldo-reg2 {
regulator-name = "vcc_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
avdd_1v2_s0: pldo-reg3 {
regulator-name = "avdd_1v2_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_3v3_s0: pldo-reg4 {
regulator-name = "vcc_3v3_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vccio_sd_s0: pldo-reg5 {
regulator-name = "vccio_sd_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-ramp-delay = <12500>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
pldo6_s3: pldo-reg6 {
regulator-name = "pldo6_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vdd_0v75_s3: nldo-reg1 {
regulator-name = "vdd_0v75_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <750000>;
};
};
vdd_ddr_pll_s0: nldo-reg2 {
regulator-name = "vdd_ddr_pll_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <850000>;
};
};
avdd_0v75_s0: nldo-reg3 {
regulator-name = "avdd_0v75_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v85_s0: nldo-reg4 {
regulator-name = "vdd_0v85_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <850000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_0v75_s0: nldo-reg5 {
regulator-name = "vdd_0v75_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <750000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
};
};
&tsadc {
status = "okay";
};
&u2phy2 {
status = "okay";
};
&u2phy3 {
status = "okay";
};
&u2phy2_host {
phy-supply = <&vcc5v0_host>;
status = "okay";
};
&u2phy3_host {
status = "okay";
};
&uart2 {
pinctrl-0 = <&uart2m0_xfer>;
status = "okay";
};
/* bt */
&uart9 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart9m2_xfer &uart9m2_ctsn>;
};
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
&usb_host1_ehci {
status = "okay";
};
&usb_host1_ohci {
status = "okay";
};

View File

@ -188,11 +188,13 @@
&sdmmc { &sdmmc {
bootph-pre-ram; bootph-pre-ram;
bootph-some-ram;
u-boot,spl-fifo-mode; u-boot,spl-fifo-mode;
}; };
&sdhci { &sdhci {
bootph-pre-ram; bootph-pre-ram;
bootph-some-ram;
u-boot,spl-fifo-mode; u-boot,spl-fifo-mode;
}; };

View File

@ -63,6 +63,8 @@ struct rk3588_pll {
unsigned int reserved0[3]; unsigned int reserved0[3];
}; };
#define CRU_BASE 0xfd7c0000
struct rk3588_cru { struct rk3588_cru {
struct rk3588_pll pll[18]; struct rk3588_pll pll[18];
unsigned int reserved0[16];/* Address Offset: 0x0240 */ unsigned int reserved0[16];/* Address Offset: 0x0240 */

View File

@ -32,4 +32,28 @@ struct rk3588_pmu1grf {
check_member(rk3588_pmu1grf, sd_detect_cnt, 0x03b0); check_member(rk3588_pmu1grf, sd_detect_cnt, 0x03b0);
#define SYS_GRF_BASE 0xfd58c000
struct rk3588_sysgrf {
unsigned int wdt_con0;
unsigned int reserved0[(0x0010 - 0x0000) / 4 - 1];
unsigned int uart_con[2];
unsigned int reserved1[(0x00c0 - 0x0014) / 4 - 1];
unsigned int gic_con0;
unsigned int reserved2[(0x0200 - 0x00c0) / 4 - 1];
unsigned int memcfg_con[32];
unsigned int reserved3[(0x0300 - 0x027c) / 4 - 1];
/* soc_con0 is reserved */
unsigned int soc_con[14];
unsigned int reserved4[(0x0380 - 0x0334) / 4 - 1];
unsigned int soc_status[4];
unsigned int reserved5[(0x0500 - 0x038c) / 4 - 1];
unsigned int otp_key08;
unsigned int otp_key0d;
unsigned int otp_key0e;
unsigned int reserved6[(0x0600 - 0x0508) / 4 - 1];
unsigned int chip_id;
};
check_member(rk3588_sysgrf, chip_id, 0x0600);
#endif /*__SOC_ROCKCHIP_RK3588_GRF_H__ */ #endif /*__SOC_ROCKCHIP_RK3588_GRF_H__ */

View File

@ -6,6 +6,8 @@
#ifndef _ASM_ARCH_HARDWARE_H #ifndef _ASM_ARCH_HARDWARE_H
#define _ASM_ARCH_HARDWARE_H #define _ASM_ARCH_HARDWARE_H
#include <asm/io.h>
#define RK_CLRSETBITS(clr, set) ((((clr) | (set)) << 16) | (set)) #define RK_CLRSETBITS(clr, set) ((((clr) | (set)) << 16) | (set))
#define RK_SETBITS(set) RK_CLRSETBITS(0, set) #define RK_SETBITS(set) RK_CLRSETBITS(0, set)
#define RK_CLRBITS(clr) RK_CLRSETBITS(clr, 0) #define RK_CLRBITS(clr) RK_CLRSETBITS(clr, 0)

View File

@ -5,6 +5,8 @@
#ifndef _ASM_ARCH_IOC_RK3588_H #ifndef _ASM_ARCH_IOC_RK3588_H
#define _ASM_ARCH_IOC_RK3588_H #define _ASM_ARCH_IOC_RK3588_H
#define BUS_IOC_BASE 0xfd5f8000
struct rk3588_bus_ioc { struct rk3588_bus_ioc {
unsigned int reserved0000[3]; /* Address Offset: 0x0000 */ unsigned int reserved0000[3]; /* Address Offset: 0x0000 */
unsigned int gpio0b_iomux_sel_h; /* Address Offset: 0x000C */ unsigned int gpio0b_iomux_sel_h; /* Address Offset: 0x000C */
@ -48,6 +50,8 @@ struct rk3588_bus_ioc {
check_member(rk3588_bus_ioc, gpio4d_iomux_sel_h, 0x009C); check_member(rk3588_bus_ioc, gpio4d_iomux_sel_h, 0x009C);
#define PMU1_IOC_BASE 0xfd5f0000
struct rk3588_pmu1_ioc { struct rk3588_pmu1_ioc {
unsigned int gpio0a_iomux_sel_l; /* Address Offset: 0x0000 */ unsigned int gpio0a_iomux_sel_l; /* Address Offset: 0x0000 */
unsigned int gpio0a_iomux_sel_h; /* Address Offset: 0x0004 */ unsigned int gpio0a_iomux_sel_h; /* Address Offset: 0x0004 */
@ -70,6 +74,8 @@ struct rk3588_pmu1_ioc {
check_member(rk3588_pmu1_ioc, xin_con, 0x0040); check_member(rk3588_pmu1_ioc, xin_con, 0x0040);
#define PMU2_IOC_BASE 0xfd5f4000
struct rk3588_pmu2_ioc { struct rk3588_pmu2_ioc {
unsigned int gpio0b_iomux_sel_h; /* Address Offset: 0x0000 */ unsigned int gpio0b_iomux_sel_h; /* Address Offset: 0x0000 */
unsigned int gpio0c_iomux_sel_l; /* Address Offset: 0x0004 */ unsigned int gpio0c_iomux_sel_l; /* Address Offset: 0x0004 */

View File

@ -1,14 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* RK3399: Architecture common definitions
*
* Copyright (C) 2019 Collabora Inc - https://www.collabora.com/
* Rohan Garg <rohan.garg@collabora.com>
*/
int rockchip_cpuid_from_efuse(const u32 cpuid_offset,
const u32 cpuid_length,
u8 *cpuid);
int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length);
int rockchip_setup_macaddr(void);
void rockchip_capsule_update_board_setup(void);

View File

@ -189,6 +189,9 @@ config ROCKCHIP_RK3328
select ENABLE_ARM_SOC_BOOT0_HOOK select ENABLE_ARM_SOC_BOOT0_HOOK
select DEBUG_UART_BOARD_INIT select DEBUG_UART_BOARD_INIT
select SYS_NS16550 select SYS_NS16550
imply MISC
imply ROCKCHIP_EFUSE
imply MISC_INIT_R
help help
The Rockchip RK3328 is a ARM-based SoC with a quad-core Cortex-A53. The Rockchip RK3328 is a ARM-based SoC with a quad-core Cortex-A53.
including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
@ -267,6 +270,9 @@ config ROCKCHIP_RK3399
imply SYS_BOOTCOUNT_SINGLEWORD if BOOTCOUNT_LIMIT imply SYS_BOOTCOUNT_SINGLEWORD if BOOTCOUNT_LIMIT
imply BOOTSTD_FULL imply BOOTSTD_FULL
imply CMD_BOOTCOUNT if BOOTCOUNT_LIMIT imply CMD_BOOTCOUNT if BOOTCOUNT_LIMIT
imply MISC
imply ROCKCHIP_EFUSE
imply MISC_INIT_R
help help
The Rockchip RK3399 is a ARM-based SoC with a dual-core Cortex-A72 The Rockchip RK3399 is a ARM-based SoC with a dual-core Cortex-A72
and quad-core Cortex-A53. and quad-core Cortex-A53.
@ -501,6 +507,30 @@ config SPL_ROCKCHIP_EARLYRETURN_TO_BROM
This enables support code in the BOOT0 hook for the SPL stage This enables support code in the BOOT0 hook for the SPL stage
to allow multiple entries. to allow multiple entries.
config ROCKCHIP_DISABLE_FORCE_JTAG
bool "Disable force_jtag feature"
default y
depends on SPL
help
Rockchip SoCs can automatically switch between jtag and sdmmc based
on the following rules:
- all the SDMMC pins including SDMMC_DET set as SDMMC function in
GRF,
- force_jtag bit in GRF is 1,
- SDMMC_DET is low (no card detected),
Some HW design may not route the SD card card detect to SDMMC_DET
pin, thus breaking the SD card support in some cases because JTAG
would be auto-enabled by mistake.
Also, enabling JTAG at runtime may be an undesired feature, e.g.
because it could be a security vulnerability.
This disables force_jtag feature, which you may want for debugging
purposes.
If unsure, say Y.
config TPL_ROCKCHIP_EARLYRETURN_TO_BROM config TPL_ROCKCHIP_EARLYRETURN_TO_BROM
bool "TPL requires early-return (for RK3188-style BROM) to BROM" bool "TPL requires early-return (for RK3188-style BROM) to BROM"
depends on TPL && ENABLE_ARM_SOC_BOOT0_HOOK depends on TPL && ENABLE_ARM_SOC_BOOT0_HOOK
@ -528,6 +558,21 @@ config ROCKCHIP_SPI_IMAGE
config LNX_KRNL_IMG_TEXT_OFFSET_BASE config LNX_KRNL_IMG_TEXT_OFFSET_BASE
default TEXT_BASE default TEXT_BASE
config ROCKCHIP_COMMON_STACK_ADDR
bool
depends on SPL_SHARES_INIT_SP_ADDR
select HAS_CUSTOM_SYS_INIT_SP_ADDR
imply SPL_LIBCOMMON_SUPPORT if SPL
imply SPL_LIBGENERIC_SUPPORT if SPL
imply SPL_ROCKCHIP_COMMON_BOARD if SPL
imply SPL_SYS_MALLOC_F if SPL
imply SPL_SYS_MALLOC_SIMPLE if SPL
imply TPL_LIBCOMMON_SUPPORT if TPL
imply TPL_LIBGENERIC_SUPPORT if TPL
imply TPL_ROCKCHIP_COMMON_BOARD if TPL
imply TPL_SYS_MALLOC_F if TPL
imply TPL_SYS_MALLOC_SIMPLE if TPL
source "arch/arm/mach-rockchip/px30/Kconfig" source "arch/arm/mach-rockchip/px30/Kconfig"
source "arch/arm/mach-rockchip/rk3036/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig"
source "arch/arm/mach-rockchip/rk3066/Kconfig" source "arch/arm/mach-rockchip/rk3066/Kconfig"
@ -543,4 +588,44 @@ source "arch/arm/mach-rockchip/rk3568/Kconfig"
source "arch/arm/mach-rockchip/rk3588/Kconfig" source "arch/arm/mach-rockchip/rk3588/Kconfig"
source "arch/arm/mach-rockchip/rv1108/Kconfig" source "arch/arm/mach-rockchip/rv1108/Kconfig"
source "arch/arm/mach-rockchip/rv1126/Kconfig" source "arch/arm/mach-rockchip/rv1126/Kconfig"
if ROCKCHIP_COMMON_STACK_ADDR && SPL_SHARES_INIT_SP_ADDR
config CUSTOM_SYS_INIT_SP_ADDR
default 0x3f00000
config SYS_MALLOC_F_LEN
default 0x10000 if CUSTOM_SYS_INIT_SP_ADDR = 0x3f00000
config SPL_SYS_MALLOC_F_LEN
default 0x8000 if CUSTOM_SYS_INIT_SP_ADDR = 0x3f00000
config TPL_SYS_MALLOC_F_LEN
default 0x4000 if CUSTOM_SYS_INIT_SP_ADDR = 0x3f00000
config TEXT_BASE
default 0x00200000 if ARM64
config SPL_TEXT_BASE
default 0x0 if ARM64
config SPL_HAS_BSS_LINKER_SECTION
default y if ARM64
config SPL_BSS_START_ADDR
default 0x3f80000
config SPL_BSS_MAX_SIZE
default 0x8000 if SPL_BSS_START_ADDR = 0x3f80000
config SPL_STACK_R
default y if CUSTOM_SYS_INIT_SP_ADDR = 0x3f00000
config SPL_STACK_R_ADDR
default 0x3e00000 if CUSTOM_SYS_INIT_SP_ADDR = 0x3f00000
config SPL_STACK_R_MALLOC_SIMPLE_LEN
default 0x200000 if SPL_STACK_R_ADDR = 0x3e00000
endif
endif endif

View File

@ -23,7 +23,6 @@ ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
# meaning "turn it off". # meaning "turn it off".
obj-y += boot_mode.o obj-y += boot_mode.o
obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o
obj-$(CONFIG_MISC_INIT_R) += misc.o
endif endif
ifeq ($(CONFIG_TPL_BUILD),) ifeq ($(CONFIG_TPL_BUILD),)

View File

@ -1,29 +1,41 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* (C) Copyright 2019 Rockchip Electronics Co., Ltd. * (C) Copyright 2019 Rockchip Electronics Co., Ltd.
*
* Copyright (C) 2019 Collabora Inc - https://www.collabora.com/
* Rohan Garg <rohan.garg@collabora.com>
*
* Based on puma-rk3399.c:
* (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH
*/ */
#include <common.h> #include <common.h>
#include <clk.h> #include <clk.h>
#include <cpu_func.h> #include <cpu_func.h>
#include <env.h>
#include <dm.h> #include <dm.h>
#include <dm/uclass-internal.h>
#include <efi_loader.h> #include <efi_loader.h>
#include <fastboot.h> #include <fastboot.h>
#include <hash.h>
#include <init.h> #include <init.h>
#include <log.h> #include <log.h>
#include <mmc.h> #include <mmc.h>
#include <dm/uclass-internal.h>
#include <misc.h>
#include <part.h> #include <part.h>
#include <ram.h> #include <ram.h>
#include <syscon.h> #include <syscon.h>
#include <uuid.h> #include <uuid.h>
#include <u-boot/crc.h>
#include <u-boot/sha256.h>
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch-rockchip/boot_mode.h> #include <asm/arch-rockchip/boot_mode.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/periph.h> #include <asm/arch-rockchip/periph.h>
#include <asm/arch-rockchip/misc.h>
#include <power/regulator.h> #include <power/regulator.h>
#if defined(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && defined(CONFIG_EFI_PARTITION) #if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && IS_ENABLED(CONFIG_EFI_PARTITION)
#define DFU_ALT_BUF_LEN SZ_1K #define DFU_ALT_BUF_LEN SZ_1K
@ -136,6 +148,10 @@ void set_dfu_alt_info(char *interface, char *devstr)
env_set("dfu_alt_info", buf); env_set("dfu_alt_info", buf);
} }
__weak void rockchip_capsule_update_board_setup(void)
{
}
static void gpt_capsule_update_setup(void) static void gpt_capsule_update_setup(void)
{ {
int p, i, ret; int p, i, ret;
@ -170,10 +186,6 @@ static void gpt_capsule_update_setup(void)
__weak int rk_board_late_init(void) __weak int rk_board_late_init(void)
{ {
#if defined(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && defined(CONFIG_EFI_PARTITION)
gpt_capsule_update_setup();
#endif
return 0; return 0;
} }
@ -181,6 +193,10 @@ int board_late_init(void)
{ {
setup_boot_mode(); setup_boot_mode();
#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && IS_ENABLED(CONFIG_EFI_PARTITION)
gpt_capsule_update_setup();
#endif
return rk_board_late_init(); return rk_board_late_init();
} }
@ -205,8 +221,24 @@ void enable_caches(void)
} }
#endif #endif
#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) #if IS_ENABLED(CONFIG_USB_GADGET)
#include <usb.h> #include <usb.h>
#if IS_ENABLED(CONFIG_USB_GADGET_DOWNLOAD)
#define ROCKCHIP_G_DNL_UMS_PRODUCT_NUM 0x0010
int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
{
if (!strcmp(name, "usb_dnl_ums"))
put_unaligned(ROCKCHIP_G_DNL_UMS_PRODUCT_NUM, &dev->idProduct);
else
put_unaligned(CONFIG_USB_GADGET_PRODUCT_NUM, &dev->idProduct);
return 0;
}
#endif /* CONFIG_USB_GADGET_DOWNLOAD */
#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET)
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
#include <usb/dwc2_udc.h> #include <usb/dwc2_udc.h>
@ -281,6 +313,7 @@ int board_usb_cleanup(int index, enum usb_init_type init)
return 0; return 0;
} }
#endif /* CONFIG_USB_GADGET_DWC2_OTG */ #endif /* CONFIG_USB_GADGET_DWC2_OTG */
#endif /* CONFIG_USB_GADGET */
#if IS_ENABLED(CONFIG_FASTBOOT) #if IS_ENABLED(CONFIG_FASTBOOT)
int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason) int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason)
@ -297,6 +330,124 @@ int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason)
#endif #endif
#ifdef CONFIG_MISC_INIT_R #ifdef CONFIG_MISC_INIT_R
int rockchip_setup_macaddr(void)
{
#if CONFIG_IS_ENABLED(HASH) && CONFIG_IS_ENABLED(SHA256)
int ret;
const char *cpuid = env_get("cpuid#");
u8 hash[SHA256_SUM_LEN];
int size = sizeof(hash);
u8 mac_addr[6];
/* Only generate a MAC address, if none is set in the environment */
if (env_get("ethaddr"))
return 0;
if (!cpuid) {
debug("%s: could not retrieve 'cpuid#'\n", __func__);
return -1;
}
ret = hash_block("sha256", (void *)cpuid, strlen(cpuid), hash, &size);
if (ret) {
debug("%s: failed to calculate SHA256\n", __func__);
return -1;
}
/* Copy 6 bytes of the hash to base the MAC address on */
memcpy(mac_addr, hash, 6);
/* Make this a valid MAC address and set it */
mac_addr[0] &= 0xfe; /* clear multicast bit */
mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
eth_env_set_enetaddr("ethaddr", mac_addr);
/* Make a valid MAC address for ethernet1 */
mac_addr[5] ^= 0x01;
eth_env_set_enetaddr("eth1addr", mac_addr);
#endif
return 0;
}
int rockchip_cpuid_from_efuse(const u32 cpuid_offset,
const u32 cpuid_length,
u8 *cpuid)
{
#if IS_ENABLED(CONFIG_ROCKCHIP_EFUSE) || IS_ENABLED(CONFIG_ROCKCHIP_OTP)
struct udevice *dev;
int ret;
/* retrieve the device */
#if IS_ENABLED(CONFIG_ROCKCHIP_EFUSE)
ret = uclass_get_device_by_driver(UCLASS_MISC,
DM_DRIVER_GET(rockchip_efuse), &dev);
#elif IS_ENABLED(CONFIG_ROCKCHIP_OTP)
ret = uclass_get_device_by_driver(UCLASS_MISC,
DM_DRIVER_GET(rockchip_otp), &dev);
#endif
if (ret) {
debug("%s: could not find efuse device\n", __func__);
return -1;
}
/* read the cpu_id range from the efuses */
ret = misc_read(dev, cpuid_offset, cpuid, cpuid_length);
if (ret < 0) {
debug("%s: reading cpuid from the efuses failed\n",
__func__);
return -1;
}
#endif
return 0;
}
int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length)
{
u8 low[cpuid_length / 2], high[cpuid_length / 2];
char cpuid_str[cpuid_length * 2 + 1];
u64 serialno;
char serialno_str[17];
const char *oldid;
int i;
memset(cpuid_str, 0, sizeof(cpuid_str));
for (i = 0; i < cpuid_length; i++)
sprintf(&cpuid_str[i * 2], "%02x", cpuid[i]);
debug("cpuid: %s\n", cpuid_str);
/*
* Mix the cpuid bytes using the same rules as in
* ${linux}/drivers/soc/rockchip/rockchip-cpuinfo.c
*/
for (i = 0; i < cpuid_length / 2; i++) {
low[i] = cpuid[1 + (i << 1)];
high[i] = cpuid[i << 1];
}
serialno = crc32_no_comp(0, low, cpuid_length / 2);
serialno |= (u64)crc32_no_comp(serialno, high, cpuid_length / 2) << 32;
snprintf(serialno_str, sizeof(serialno_str), "%016llx", serialno);
oldid = env_get("cpuid#");
if (oldid && strcmp(oldid, cpuid_str) != 0)
printf("cpuid: value %s present in env does not match hardware %s\n",
oldid, cpuid_str);
env_set("cpuid#", cpuid_str);
/* Only generate serial# when none is set yet */
if (!env_get("serial#"))
env_set("serial#", serialno_str);
return 0;
}
__weak int rockchip_early_misc_init_r(void)
{
return 0;
}
__weak int misc_init_r(void) __weak int misc_init_r(void)
{ {
const u32 cpuid_offset = CFG_CPUID_OFFSET; const u32 cpuid_offset = CFG_CPUID_OFFSET;
@ -304,6 +455,10 @@ __weak int misc_init_r(void)
u8 cpuid[cpuid_length]; u8 cpuid[cpuid_length];
int ret; int ret;
ret = rockchip_early_misc_init_r();
if (ret)
return ret;
ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid); ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
if (ret) if (ret)
return ret; return ret;
@ -349,3 +504,33 @@ __weak int board_rng_seed(struct abuf *buf)
return 0; return 0;
} }
#endif #endif
int mmc_get_env_dev(void)
{
int devnum;
const char *boot_device;
struct udevice *dev;
#ifdef CONFIG_SYS_MMC_ENV_DEV
devnum = CONFIG_SYS_MMC_ENV_DEV;
#else
devnum = 0;
#endif
boot_device = ofnode_read_chosen_string("u-boot,spl-boot-device");
if (!boot_device) {
debug("%s: /chosen/u-boot,spl-boot-device not set\n", __func__);
return devnum;
}
debug("%s: booted from %s\n", __func__, boot_device);
if (uclass_find_device_by_ofnode(UCLASS_MMC, ofnode_path(boot_device), &dev)) {
debug("%s: no U-Boot device found for %s\n", __func__, boot_device);
return devnum;
}
devnum = dev->seq_;
debug("%s: get MMC env from mmc%d\n", __func__, devnum);
return devnum;
}

View File

@ -40,6 +40,7 @@ void set_back_to_bootrom_dnl_flag(void)
__weak int rockchip_dnl_key_pressed(void) __weak int rockchip_dnl_key_pressed(void)
{ {
#if CONFIG_IS_ENABLED(ADC)
unsigned int val; unsigned int val;
struct udevice *dev; struct udevice *dev;
struct uclass *uc; struct uclass *uc;
@ -69,6 +70,9 @@ __weak int rockchip_dnl_key_pressed(void)
return true; return true;
else else
return false; return false;
#else
return false;
#endif
} }
void rockchip_dnl_mode_check(void) void rockchip_dnl_mode_check(void)

View File

@ -7,7 +7,6 @@
#include <common.h> #include <common.h>
#include <env.h> #include <env.h>
#include <init.h> #include <init.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/cru.h> #include <asm/arch-rockchip/cru.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -1,135 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* RK3399: Architecture common definitions
*
* Copyright (C) 2019 Collabora Inc - https://www.collabora.com/
* Rohan Garg <rohan.garg@collabora.com>
*
* Based on puma-rk3399.c:
* (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH
*/
#include <common.h>
#include <env.h>
#include <dm.h>
#include <hash.h>
#include <log.h>
#include <dm/uclass-internal.h>
#include <misc.h>
#include <u-boot/crc.h>
#include <u-boot/sha256.h>
#include <asm/arch-rockchip/misc.h>
int rockchip_setup_macaddr(void)
{
#if CONFIG_IS_ENABLED(HASH) && CONFIG_IS_ENABLED(SHA256)
int ret;
const char *cpuid = env_get("cpuid#");
u8 hash[SHA256_SUM_LEN];
int size = sizeof(hash);
u8 mac_addr[6];
/* Only generate a MAC address, if none is set in the environment */
if (env_get("ethaddr"))
return 0;
if (!cpuid) {
debug("%s: could not retrieve 'cpuid#'\n", __func__);
return -1;
}
ret = hash_block("sha256", (void *)cpuid, strlen(cpuid), hash, &size);
if (ret) {
debug("%s: failed to calculate SHA256\n", __func__);
return -1;
}
/* Copy 6 bytes of the hash to base the MAC address on */
memcpy(mac_addr, hash, 6);
/* Make this a valid MAC address and set it */
mac_addr[0] &= 0xfe; /* clear multicast bit */
mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
eth_env_set_enetaddr("ethaddr", mac_addr);
/* Make a valid MAC address for ethernet1 */
mac_addr[5] ^= 0x01;
eth_env_set_enetaddr("eth1addr", mac_addr);
#endif
return 0;
}
int rockchip_cpuid_from_efuse(const u32 cpuid_offset,
const u32 cpuid_length,
u8 *cpuid)
{
#if IS_ENABLED(CONFIG_ROCKCHIP_EFUSE) || IS_ENABLED(CONFIG_ROCKCHIP_OTP)
struct udevice *dev;
int ret;
/* retrieve the device */
#if IS_ENABLED(CONFIG_ROCKCHIP_EFUSE)
ret = uclass_get_device_by_driver(UCLASS_MISC,
DM_DRIVER_GET(rockchip_efuse), &dev);
#elif IS_ENABLED(CONFIG_ROCKCHIP_OTP)
ret = uclass_get_device_by_driver(UCLASS_MISC,
DM_DRIVER_GET(rockchip_otp), &dev);
#endif
if (ret) {
debug("%s: could not find efuse device\n", __func__);
return -1;
}
/* read the cpu_id range from the efuses */
ret = misc_read(dev, cpuid_offset, cpuid, cpuid_length);
if (ret < 0) {
debug("%s: reading cpuid from the efuses failed\n",
__func__);
return -1;
}
#endif
return 0;
}
int rockchip_cpuid_set(const u8 *cpuid, const u32 cpuid_length)
{
u8 low[cpuid_length / 2], high[cpuid_length / 2];
char cpuid_str[cpuid_length * 2 + 1];
u64 serialno;
char serialno_str[17];
const char *oldid;
int i;
memset(cpuid_str, 0, sizeof(cpuid_str));
for (i = 0; i < 16; i++)
sprintf(&cpuid_str[i * 2], "%02x", cpuid[i]);
debug("cpuid: %s\n", cpuid_str);
/*
* Mix the cpuid bytes using the same rules as in
* ${linux}/drivers/soc/rockchip/rockchip-cpuinfo.c
*/
for (i = 0; i < 8; i++) {
low[i] = cpuid[1 + (i << 1)];
high[i] = cpuid[i << 1];
}
serialno = crc32_no_comp(0, low, 8);
serialno |= (u64)crc32_no_comp(serialno, high, 8) << 32;
snprintf(serialno_str, sizeof(serialno_str), "%016llx", serialno);
oldid = env_get("cpuid#");
if (oldid && strcmp(oldid, cpuid_str) != 0)
printf("cpuid: value %s present in env does not match hardware %s\n",
oldid, cpuid_str);
env_set("cpuid#", cpuid_str);
/* Only generate serial# when none is set yet */
if (!env_get("serial#"))
env_set("serial#", serialno_str);
return 0;
}

View File

@ -9,7 +9,6 @@
#include <init.h> #include <init.h>
#include <spl.h> #include <spl.h>
#include <asm/armv8/mmu.h> #include <asm/armv8/mmu.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/grf_px30.h> #include <asm/arch-rockchip/grf_px30.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -6,7 +6,6 @@
#include <common.h> #include <common.h>
#include <init.h> #include <init.h>
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h>
#include <asm/arch-rockchip/grf_rk3036.h> #include <asm/arch-rockchip/grf_rk3036.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/sdram_rk3036.h> #include <asm/arch-rockchip/sdram_rk3036.h>

View File

@ -4,7 +4,6 @@
*/ */
#include <common.h> #include <common.h>
#include <init.h> #include <init.h>
#include <asm/io.h>
#include <asm/types.h> #include <asm/types.h>
#include <asm/arch-rockchip/cru_rk3036.h> #include <asm/arch-rockchip/cru_rk3036.h>
#include <asm/arch-rockchip/grf_rk3036.h> #include <asm/arch-rockchip/grf_rk3036.h>

View File

@ -4,9 +4,9 @@
*/ */
#include <common.h> #include <common.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/grf_rk3066.h> #include <asm/arch-rockchip/grf_rk3066.h>
#include <asm/arch-rockchip/hardware.h>
#define GRF_BASE 0x20008000 #define GRF_BASE 0x20008000

View File

@ -10,7 +10,6 @@
#include <log.h> #include <log.h>
#include <syscon.h> #include <syscon.h>
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rk3188.h> #include <asm/arch-rockchip/grf_rk3188.h>

View File

@ -3,7 +3,6 @@
* (C) Copyright 2019 Rockchip Electronics Co., Ltd * (C) Copyright 2019 Rockchip Electronics Co., Ltd
*/ */
#include <init.h> #include <init.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/grf_rk322x.h> #include <asm/arch-rockchip/grf_rk322x.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -11,7 +11,6 @@
#include <malloc.h> #include <malloc.h>
#include <asm/armv7.h> #include <asm/armv7.h>
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/cpu_rk3288.h> #include <asm/arch-rockchip/cpu_rk3288.h>

View File

@ -17,8 +17,11 @@ config ROCKCHIP_STIMER_BASE
config SYS_SOC config SYS_SOC
default "rk3308" default "rk3308"
config SYS_MALLOC_F_LEN config ROCKCHIP_COMMON_STACK_ADDR
default 0x400 default y
config TEXT_BASE
default 0x00600000
config SPL_SERIAL config SPL_SERIAL
default y default y

View File

@ -5,7 +5,6 @@
#include <common.h> #include <common.h>
#include <init.h> #include <init.h>
#include <malloc.h> #include <malloc.h>
#include <asm/io.h>
#include <asm/arch/grf_rk3308.h> #include <asm/arch/grf_rk3308.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -21,13 +21,7 @@ config ROCKCHIP_STIMER_BASE
config SYS_SOC config SYS_SOC
default "rk3328" default "rk3328"
config SYS_MALLOC_F_LEN config ROCKCHIP_COMMON_STACK_ADDR
default 0x2000
config SPL_LIBCOMMON_SUPPORT
default y
config SPL_LIBGENERIC_SUPPORT
default y default y
config TPL_LDSCRIPT config TPL_LDSCRIPT
@ -39,6 +33,9 @@ config TPL_TEXT_BASE
config TPL_STACK config TPL_STACK
default 0xff098000 default 0xff098000
config TPL_SYS_MALLOC_F_LEN
default 0x800
source "board/rockchip/evb_rk3328/Kconfig" source "board/rockchip/evb_rk3328/Kconfig"
endif endif

View File

@ -10,7 +10,6 @@
#include <asm/arch-rockchip/grf_rk3328.h> #include <asm/arch-rockchip/grf_rk3328.h>
#include <asm/arch-rockchip/uart.h> #include <asm/arch-rockchip/uart.h>
#include <asm/armv8/mmu.h> #include <asm/armv8/mmu.h>
#include <asm/io.h>
#define CRU_BASE 0xFF440000 #define CRU_BASE 0xFF440000
#define GRF_BASE 0xFF100000 #define GRF_BASE 0xFF100000
@ -36,6 +35,7 @@
const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
[BROM_BOOTSOURCE_EMMC] = "/mmc@ff520000", [BROM_BOOTSOURCE_EMMC] = "/mmc@ff520000",
[BROM_BOOTSOURCE_SPINOR] = "/spi@ff190000/flash@0",
[BROM_BOOTSOURCE_SD] = "/mmc@ff500000", [BROM_BOOTSOURCE_SD] = "/mmc@ff500000",
}; };

View File

@ -8,7 +8,6 @@
#include <init.h> #include <init.h>
#include <syscon.h> #include <syscon.h>
#include <asm/armv8/mmu.h> #include <asm/armv8/mmu.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/cru_rk3368.h> #include <asm/arch-rockchip/cru_rk3368.h>

View File

@ -89,6 +89,11 @@ config TARGET_ROCK960_RK3399
* 2x USB 3.0 type A, 2x USB 2.0 type A (host mode only), * 2x USB 3.0 type A, 2x USB 2.0 type A (host mode only),
1x USB 3.0 type C OTG 1x USB 3.0 type C OTG
config TARGET_ROCKPI4_RK3399
bool "Radxa ROCK Pi 4 board"
help
Support for ROCK Pi 4 board family by Radxa.
config TARGET_ROCKPRO64_RK3399 config TARGET_ROCKPRO64_RK3399
bool "Pine64 Rockpro64 board" bool "Pine64 Rockpro64 board"
help help
@ -138,8 +143,11 @@ config ROCKCHIP_STIMER_BASE
config SYS_SOC config SYS_SOC
default "rk3399" default "rk3399"
config ROCKCHIP_COMMON_STACK_ADDR
default y
config SYS_MALLOC_F_LEN config SYS_MALLOC_F_LEN
default 0x4000 default 0x4000 if !SPL_SHARES_INIT_SP_ADDR
config SPL_LIBCOMMON_SUPPORT config SPL_LIBCOMMON_SUPPORT
default y default y
@ -157,7 +165,7 @@ config TPL_TEXT_BASE
default 0xff8c2000 default 0xff8c2000
config SPL_STACK_R_ADDR config SPL_STACK_R_ADDR
default 0x04000000 default 0x04000000 if !SPL_SHARES_INIT_SP_ADDR
if BOOTCOUNT_LIMIT if BOOTCOUNT_LIMIT
@ -174,6 +182,7 @@ source "board/google/gru/Kconfig"
source "board/pine64/pinebook-pro-rk3399/Kconfig" source "board/pine64/pinebook-pro-rk3399/Kconfig"
source "board/pine64/pinephone-pro-rk3399/Kconfig" source "board/pine64/pinephone-pro-rk3399/Kconfig"
source "board/pine64/rockpro64_rk3399/Kconfig" source "board/pine64/rockpro64_rk3399/Kconfig"
source "board/radxa/rockpi4-rk3399/Kconfig"
source "board/rockchip/evb_rk3399/Kconfig" source "board/rockchip/evb_rk3399/Kconfig"
source "board/theobroma-systems/puma_rk3399/Kconfig" source "board/theobroma-systems/puma_rk3399/Kconfig"
source "board/vamrs/rock960_rk3399/Kconfig" source "board/vamrs/rock960_rk3399/Kconfig"

View File

@ -11,7 +11,6 @@
#include <spl_gpio.h> #include <spl_gpio.h>
#include <syscon.h> #include <syscon.h>
#include <asm/armv8/mmu.h> #include <asm/armv8/mmu.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/cru.h> #include <asm/arch-rockchip/cru.h>

View File

@ -38,8 +38,11 @@ config ROCKCHIP_STIMER_BASE
config SYS_SOC config SYS_SOC
default "rk3568" default "rk3568"
config SYS_MALLOC_F_LEN config ROCKCHIP_COMMON_STACK_ADDR
default 0x20000 default y
config TEXT_BASE
default 0x00a00000
source "board/rockchip/evb_rk3568/Kconfig" source "board/rockchip/evb_rk3568/Kconfig"
source "board/anbernic/rgxx3_rk3566/Kconfig" source "board/anbernic/rgxx3_rk3566/Kconfig"

View File

@ -6,7 +6,6 @@
#include <common.h> #include <common.h>
#include <dm.h> #include <dm.h>
#include <asm/armv8/mmu.h> #include <asm/armv8/mmu.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/grf_rk3568.h> #include <asm/arch-rockchip/grf_rk3568.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -6,6 +6,33 @@ config TARGET_EVB_RK3588
help help
RK3588 EVB is a evaluation board for Rockchp RK3588. RK3588 EVB is a evaluation board for Rockchp RK3588.
config TARGET_JAGUAR_RK3588
bool "Theobroma Systems SBC-RK3588-AMR (Jaguar)"
select BOARD_LATE_INIT
help
The SBC-RK3588-AMR is a Single Board Computer designed by
Theobroma Systems for autonomous mobile robots.
It provides the following features:
* up to 32GB LDDR4
* up to 128GB on-module eMMC (with 8-bit 1.8V interface)
* SD card
* Gigabit Ethernet
* 1x USB-A 2.0 host
* PCIe M.2 2230 Key M (Gen 2 1-lane) for WiFi+BT
* PCIe M.2 2280 Key M (Gen 3 4-lane) for NVMe
* CAN
* RS485 UART
* 2x USB Type-C 3.1 host/device
* HDMI output
* 2x camera connectors (MIPI-CSI 2-lane + I2C/SPI for IMUs + GPIOs)
* EEPROM
* Secure Element
* ATtiny companion controller implementing:
- low-power RTC functionality (ISL1208 emulation)
- fan controller (AMC6821 emulation)
* 80-pin Mezzanine connector
config TARGET_NANOPCT6_RK3588 config TARGET_NANOPCT6_RK3588
bool "FriendlyElec NanoPC-T6 RK3588 board" bool "FriendlyElec NanoPC-T6 RK3588 board"
select BOARD_LATE_INIT select BOARD_LATE_INIT
@ -155,6 +182,30 @@ config TARGET_TURINGRK1_RK3588
Gigabit Ethernet Gigabit Ethernet
Size: 69.6mm x 45mm (260-pin SO-DIMM connector) Size: 69.6mm x 45mm (260-pin SO-DIMM connector)
config TARGET_TOYBRICK_RK3588
bool "Toybrick TB-RK3588X board"
select BOARD_LATE_INIT
help
Rockchip Toybrick TB-RK3588X is a Rockchip RK3588 based development board.
TB-RK3588X adopts core board and mainboard design. The core board is connected
with the mainboard through the MXM314Pin standard interface, which can form
a complete industry development board.
Specifications:
Rockchip RK3588 SoC
4x ARM Cortex-A76, 4x ARM Cortex-A55
8/16GB Memory LPDDR4x
Mali G610MC4 GPU
2× MIPI-CSI0 Connector
1x 2Lanes PCIe3.0 Connector
1x SATA3.0 Connector
32GB eMMC Module
2x USB2.0, 2x USB3.0
1x HDMI Output, 1x HDMI Input
2x Ethernet Port
config ROCKCHIP_BOOT_MODE_REG config ROCKCHIP_BOOT_MODE_REG
default 0xfd588080 default 0xfd588080
@ -164,15 +215,20 @@ config ROCKCHIP_STIMER_BASE
config SYS_SOC config SYS_SOC
default "rk3588" default "rk3588"
config SYS_MALLOC_F_LEN config ROCKCHIP_COMMON_STACK_ADDR
default 0x80000 default y
config TEXT_BASE
default 0x00a00000
source board/edgeble/neural-compute-module-6/Kconfig source board/edgeble/neural-compute-module-6/Kconfig
source board/friendlyelec/nanopc-t6-rk3588/Kconfig source board/friendlyelec/nanopc-t6-rk3588/Kconfig
source board/pine64/quartzpro64-rk3588/Kconfig source board/pine64/quartzpro64-rk3588/Kconfig
source board/turing/turing-rk1-rk3588/Kconfig source board/turing/turing-rk1-rk3588/Kconfig
source board/rockchip/evb_rk3588/Kconfig
source board/radxa/rock5a-rk3588s/Kconfig source board/radxa/rock5a-rk3588s/Kconfig
source board/radxa/rock5b-rk3588/Kconfig source board/radxa/rock5b-rk3588/Kconfig
source board/rockchip/evb_rk3588/Kconfig
source board/rockchip/toybrick_rk3588/Kconfig
source board/theobroma-systems/jaguar_rk3588/Kconfig
endif endif

View File

@ -7,8 +7,8 @@
#include <common.h> #include <common.h>
#include <spl.h> #include <spl.h>
#include <asm/armv8/mmu.h> #include <asm/armv8/mmu.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/grf_rk3588.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/ioc_rk3588.h> #include <asm/arch-rockchip/ioc_rk3588.h>
@ -25,16 +25,14 @@
#define FW_SYSM_MST26_REG 0xa8 #define FW_SYSM_MST26_REG 0xa8
#define FW_SYSM_MST27_REG 0xac #define FW_SYSM_MST27_REG 0xac
#define PMU1_IOC_BASE 0xfd5f0000
#define PMU2_IOC_BASE 0xfd5f4000
#define BUS_IOC_BASE 0xfd5f8000
#define BUS_IOC_GPIO2A_IOMUX_SEL_L 0x40 #define BUS_IOC_GPIO2A_IOMUX_SEL_L 0x40
#define BUS_IOC_GPIO2B_IOMUX_SEL_L 0x48 #define BUS_IOC_GPIO2B_IOMUX_SEL_L 0x48
#define BUS_IOC_GPIO2D_IOMUX_SEL_L 0x58 #define BUS_IOC_GPIO2D_IOMUX_SEL_L 0x58
#define BUS_IOC_GPIO2D_IOMUX_SEL_H 0x5c #define BUS_IOC_GPIO2D_IOMUX_SEL_H 0x5c
#define BUS_IOC_GPIO3A_IOMUX_SEL_L 0x60 #define BUS_IOC_GPIO3A_IOMUX_SEL_L 0x60
#define SYS_GRF_FORCE_JTAG BIT(14)
/** /**
* Boot-device identifiers used by the BROM on RK3588 when device is booted * Boot-device identifiers used by the BROM on RK3588 when device is booted
* from SPI flash. IOMUX used for SPI flash affect the value used by the BROM * from SPI flash. IOMUX used for SPI flash affect the value used by the BROM
@ -134,6 +132,9 @@ void rockchip_stimer_init(void)
int arch_cpu_init(void) int arch_cpu_init(void)
{ {
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
#ifdef CONFIG_ROCKCHIP_DISABLE_FORCE_JTAG
static struct rk3588_sysgrf * const sys_grf = (void *)SYS_GRF_BASE;
#endif
int secure_reg; int secure_reg;
/* Set the SDMMC eMMC crypto_ns FSPI access secure area */ /* Set the SDMMC eMMC crypto_ns FSPI access secure area */
@ -168,6 +169,11 @@ int arch_cpu_init(void)
secure_reg = readl(FIREWALL_SYSMEM_BASE + FW_SYSM_MST27_REG); secure_reg = readl(FIREWALL_SYSMEM_BASE + FW_SYSM_MST27_REG);
secure_reg &= 0xffff0000; secure_reg &= 0xffff0000;
writel(secure_reg, FIREWALL_SYSMEM_BASE + FW_SYSM_MST27_REG); writel(secure_reg, FIREWALL_SYSMEM_BASE + FW_SYSM_MST27_REG);
#ifdef CONFIG_ROCKCHIP_DISABLE_FORCE_JTAG
/* Disable JTAG exposed on SDMMC */
rk_clrreg(&sys_grf->soc_con[6], SYS_GRF_FORCE_JTAG);
#endif
#endif #endif
return 0; return 0;

View File

@ -5,7 +5,6 @@
*/ */
#include <common.h> #include <common.h>
#include <asm/io.h>
#include <asm/arch-rockchip/bootrom.h> #include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/grf_rv1126.h> #include <asm/arch-rockchip/grf_rv1126.h>

View File

@ -65,9 +65,6 @@ static int spl_node_to_boot_device(int node)
default: default:
return -ENOSYS; return -ENOSYS;
} }
} else if (!uclass_get_device_by_of_offset(UCLASS_SPI_FLASH, node,
&parent)) {
return BOOT_DEVICE_SPI;
} }
/* /*

View File

@ -3,7 +3,7 @@
* (C) Copyright 2019 Rockchip Electronics Co., Ltd * (C) Copyright 2019 Rockchip Electronics Co., Ltd
*/ */
#include <common.h> #include <cpu_func.h>
#include <debug_uart.h> #include <debug_uart.h>
#include <dm.h> #include <dm.h>
#include <hang.h> #include <hang.h>
@ -136,6 +136,20 @@ void board_init_f(ulong dummy)
} }
gd->ram_top = gd->ram_base + get_effective_memsize(); gd->ram_top = gd->ram_base + get_effective_memsize();
gd->ram_top = board_get_usable_ram_top(gd->ram_size); gd->ram_top = board_get_usable_ram_top(gd->ram_size);
if (IS_ENABLED(CONFIG_ARM64) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) {
gd->relocaddr = gd->ram_top;
arch_reserve_mmu();
enable_caches();
}
#endif #endif
preloader_console_init(); preloader_console_init();
} }
void spl_board_prepare_for_boot(void)
{
if (!IS_ENABLED(CONFIG_ARM64) || CONFIG_IS_ENABLED(SYS_DCACHE_OFF))
return;
cleanup_before_linux();
}

View File

@ -6,12 +6,14 @@
#include <abuf.h> #include <abuf.h>
#include <adc.h> #include <adc.h>
#include <asm/io.h> #include <asm/io.h>
#include <command.h>
#include <display.h> #include <display.h>
#include <dm.h> #include <dm.h>
#include <dm/lists.h> #include <dm/lists.h>
#include <env.h> #include <env.h>
#include <fdt_support.h> #include <fdt_support.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/iopoll.h>
#include <mipi_dsi.h> #include <mipi_dsi.h>
#include <mmc.h> #include <mmc.h>
#include <panel.h> #include <panel.h>
@ -19,6 +21,8 @@
#include <stdlib.h> #include <stdlib.h>
#include <video_bridge.h> #include <video_bridge.h>
#define BOOT_BROM_DOWNLOAD 0xef08a53c
#define GPIO0_BASE 0xfdd60000 #define GPIO0_BASE 0xfdd60000
#define GPIO4_BASE 0xfe770000 #define GPIO4_BASE 0xfe770000
#define GPIO_SWPORT_DR_L 0x0000 #define GPIO_SWPORT_DR_L 0x0000
@ -32,6 +36,14 @@
#define GPIO_WRITEMASK(bits) ((bits) << 16) #define GPIO_WRITEMASK(bits) ((bits) << 16)
#define SARADC_BASE 0xfe720000
#define SARADC_DATA 0x0000
#define SARADC_STAS 0x0004
#define SARADC_ADC_STATUS BIT(0)
#define SARADC_CTRL 0x0008
#define SARADC_INPUT_SRC_MSK 0x7
#define SARADC_POWER_CTRL BIT(3)
#define DTB_DIR "rockchip/" #define DTB_DIR "rockchip/"
struct rg3xx_model { struct rg3xx_model {
@ -50,6 +62,7 @@ enum rgxx3_device_id {
RGB30, RGB30,
RK2023, RK2023,
RGARCD, RGARCD,
RGB10MAX3,
/* Devices with duplicate ADC value */ /* Devices with duplicate ADC value */
RG353PS, RG353PS,
RG353VS, RG353VS,
@ -107,6 +120,13 @@ static const struct rg3xx_model rg3xx_model_details[] = {
.fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb", .fdtfile = DTB_DIR "rk3566-anbernic-rg-arc-d.dtb",
.detect_panel = 0, .detect_panel = 0,
}, },
[RGB10MAX3] = {
.adc_value = 765, /* Observed average from device */
.board = "rk3566-powkiddy-rgb10max3",
.board_name = "Powkiddy RGB10MAX3",
.fdtfile = DTB_DIR "rk3566-powkiddy-rgb10max3.dtb",
.detect_panel = 0,
},
/* Devices with duplicate ADC value */ /* Devices with duplicate ADC value */
[RG353PS] = { [RG353PS] = {
.adc_value = 860, /* Observed average from device */ .adc_value = 860, /* Observed average from device */
@ -149,12 +169,64 @@ static const struct rg353_panel rg353_panel_details[] = {
}, },
}; };
/*
* The device has internal eMMC, and while some devices have an exposed
* clk pin you can ground to force a bypass not all devices do. As a
* result it may be possible for some devices to become a perma-brick
* if a corrupted TPL or SPL stage with a valid header is flashed to
* the internal eMMC. Add functionality to read ADC channel 0 (the func
* button) as early as possible in the boot process to provide some
* protection against this. If we ever get an open TPL stage, we should
* consider moving this function there.
*/
void read_func_button(void)
{
int ret;
u32 reg;
/* Turn off SARADC to reset it. */
writel(0, (SARADC_BASE + SARADC_CTRL));
/* Enable channel 0 and power on SARADC. */
writel(((0 & SARADC_INPUT_SRC_MSK) | SARADC_POWER_CTRL),
(SARADC_BASE + SARADC_CTRL));
/*
* Wait for data to be ready. Use timeout of 20000us from
* rockchip_saradc driver.
*/
ret = readl_poll_timeout((SARADC_BASE + SARADC_STAS), reg,
!(reg & SARADC_ADC_STATUS), 20000);
if (ret) {
printf("ADC Timeout");
return;
}
/* Read the data from the SARADC. */
reg = readl((SARADC_BASE + SARADC_DATA));
/* Turn the SARADC back off so it's ready to be used again. */
writel(0, (SARADC_BASE + SARADC_CTRL));
/*
* If the value is less than 30 the button is being pressed.
* Reset the device back into Rockchip download mode.
*/
if (reg <= 30) {
printf("download key pressed, entering download mode...");
writel(BOOT_BROM_DOWNLOAD, CONFIG_ROCKCHIP_BOOT_MODE_REG);
do_reset(NULL, 0, 0, NULL);
}
};
/* /*
* Start LED very early so user knows device is on. Set color * Start LED very early so user knows device is on. Set color
* to red. * to red.
*/ */
void spl_board_init(void) void spl_board_init(void)
{ {
read_func_button();
/* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */ /* Set GPIO0_C5, GPIO0_C6, and GPIO0_C7 to output. */
writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \ writel(GPIO_WRITEMASK(GPIO_C7 | GPIO_C6 | GPIO_C5) | \
(GPIO_C7 | GPIO_C6 | GPIO_C5), (GPIO_C7 | GPIO_C6 | GPIO_C5),

View File

@ -8,7 +8,6 @@
#include <init.h> #include <init.h>
#include <syscon.h> #include <syscon.h>
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rv1108.h> #include <asm/arch-rockchip/grf_rv1108.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -5,7 +5,6 @@
#include <common.h> #include <common.h>
#include <adc.h> #include <adc.h>
#include <asm/io.h>
#include <asm/arch/grf_rk3308.h> #include <asm/arch/grf_rk3308.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>
#include <linux/bitops.h> #include <linux/bitops.h>

View File

@ -6,3 +6,4 @@ F: board/firefly/roc-pc-rk3399
F: include/configs/roc-pc-rk3399.h F: include/configs/roc-pc-rk3399.h
F: configs/roc-pc-rk3399_defconfig F: configs/roc-pc-rk3399_defconfig
F: configs/roc-pc-mezzanine-rk3399_defconfig F: configs/roc-pc-mezzanine-rk3399_defconfig
F: arch/arm/dts/rk3399-roc-pc*

View File

@ -9,32 +9,12 @@
#include <log.h> #include <log.h>
#include <spl_gpio.h> #include <spl_gpio.h>
#include <asm/io.h> #include <asm/io.h>
#include <power/regulator.h>
#include <asm/arch-rockchip/cru.h> #include <asm/arch-rockchip/cru.h>
#include <asm/arch-rockchip/gpio.h> #include <asm/arch-rockchip/gpio.h>
#include <asm/arch-rockchip/grf_rk3399.h> #include <asm/arch-rockchip/grf_rk3399.h>
#ifndef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
int board_early_init_f(void)
{
struct udevice *regulator;
int ret;
ret = regulator_get_by_platname("vcc5v0_host", &regulator);
if (ret) {
debug("%s vcc5v0_host init fail! ret %d\n", __func__, ret);
goto out;
}
ret = regulator_set_enable(regulator, true);
if (ret)
debug("%s vcc5v0-host-en set fail! ret %d\n", __func__, ret);
out:
return 0;
}
#else
#define PMUGRF_BASE 0xff320000 #define PMUGRF_BASE 0xff320000
#define GPIO0_BASE 0xff720000 #define GPIO0_BASE 0xff720000

View File

@ -3,20 +3,9 @@
* Copyright 2018 Google * Copyright 2018 Google
*/ */
#include <common.h>
#include <dm.h> #include <dm.h>
#include <init.h> #include <init.h>
#include <syscon.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rk3399.h>
#include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/misc.h>
#define GRF_IO_VSEL_BT656_SHIFT 0
#define GRF_IO_VSEL_AUDIO_SHIFT 1
#define PMUGRF_CON0_VSEL_SHIFT 8
#define PMUGRF_CON0_VOL_SHIFT 9
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
/* provided to defeat compiler optimisation in board_init_f() */ /* provided to defeat compiler optimisation in board_init_f() */
@ -65,44 +54,3 @@ int board_early_init_r(void)
return 0; return 0;
} }
#endif #endif
static void setup_iodomain(void)
{
struct rk3399_grf_regs *grf =
syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
struct rk3399_pmugrf_regs *pmugrf =
syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
/* BT656 and audio is in 1.8v domain */
rk_setreg(&grf->io_vsel, (1 << GRF_IO_VSEL_BT656_SHIFT |
1 << GRF_IO_VSEL_AUDIO_SHIFT));
/*
* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL
* and explicitly configure that PMU1830_VOL to be 1.8V
*/
rk_setreg(&pmugrf->soc_con0, (1 << PMUGRF_CON0_VSEL_SHIFT |
1 << PMUGRF_CON0_VOL_SHIFT));
}
int misc_init_r(void)
{
const u32 cpuid_offset = 0x7;
const u32 cpuid_length = 0x10;
u8 cpuid[cpuid_length];
int ret;
setup_iodomain();
ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
if (ret)
return ret;
ret = rockchip_cpuid_set(cpuid, cpuid_length);
if (ret)
return ret;
ret = rockchip_setup_macaddr();
return ret;
}

View File

@ -1,8 +1,8 @@
PINEBOOK_PRO PINEBOOK_PRO
M: Peter Robinson <pbrobinson@gmail.com> M: Peter Robinson <pbrobinson@gmail.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained S: Maintained
F: board/pine64/pinebook-pro-rk3399/ F: board/pine64/pinebook-pro-rk3399/
F: include/configs/rk3399-pinebook-pro.h F: include/configs/pinebook-pro-rk3399.h
F: arch/arm/dts/rk3399-pinebook-pro.dts F: arch/arm/dts/rk3399-pinebook-pro*
F: arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
F: configs/pinebook-pro-rk3399_defconfig F: configs/pinebook-pro-rk3399_defconfig

View File

@ -1 +0,0 @@
obj-y += pinebook-pro-rk3399.o

View File

@ -1,76 +0,0 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
* (C) Copyright 2020 Peter Robinson <pbrobinson at gmail.com>
*/
#include <common.h>
#include <dm.h>
#include <syscon.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rk3399.h>
#include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/misc.h>
#include <linux/printk.h>
#include <power/regulator.h>
#define GRF_IO_VSEL_BT565_SHIFT 0
#define PMUGRF_CON0_VSEL_SHIFT 8
#ifndef CONFIG_SPL_BUILD
int board_early_init_f(void)
{
struct udevice *regulator;
int ret;
ret = regulator_get_by_platname("vcc5v0_usb", &regulator);
if (ret) {
pr_debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret);
goto out;
}
ret = regulator_set_enable(regulator, true);
if (ret)
pr_debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", __func__, ret);
out:
return 0;
}
#endif
#ifdef CONFIG_MISC_INIT_R
static void setup_iodomain(void)
{
struct rk3399_grf_regs *grf =
syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
struct rk3399_pmugrf_regs *pmugrf =
syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
/* BT565 is in 1.8v domain */
rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT);
/* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */
rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT);
}
int misc_init_r(void)
{
const u32 cpuid_offset = 0x7;
const u32 cpuid_length = 0x10;
u8 cpuid[cpuid_length];
int ret;
setup_iodomain();
ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
if (ret)
return ret;
ret = rockchip_cpuid_set(cpuid, cpuid_length);
if (ret)
return ret;
return ret;
}
#endif

View File

@ -2,7 +2,6 @@ PINEPHONE_PRO
M: Peter Robinson <pbrobinson@gmail.com> M: Peter Robinson <pbrobinson@gmail.com>
S: Maintained S: Maintained
F: board/pine64/pinephone-pro-rk3399/ F: board/pine64/pinephone-pro-rk3399/
F: include/configs/rk3399-pinephone-pro.h F: include/configs/pinephone-pro-rk3399.h
F: arch/arm/dts/rk3399-pinephone-pro.dts F: arch/arm/dts/rk3399-pinephone-pro*
F: arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi
F: configs/pinephone-pro-rk3399_defconfig F: configs/pinephone-pro-rk3399_defconfig

View File

@ -1 +0,0 @@
obj-y += pinephone-pro-rk3399.o

View File

@ -1,78 +0,0 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
* (C) Copyright 2022 Peter Robinson <pbrobinson at gmail.com>
*/
#include <common.h>
#include <dm.h>
#include <init.h>
#include <syscon.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rk3399.h>
#include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/misc.h>
#include <power/regulator.h>
#define GRF_IO_VSEL_BT565_GPIO2AB 1
#define GRF_IO_VSEL_AUDIO_GPIO3D4A 2
#define PMUGRF_CON0_VSEL_SHIFT 8
#ifndef CONFIG_SPL_BUILD
int board_early_init_f(void)
{
struct udevice *regulator;
int ret;
ret = regulator_get_by_platname("vcc5v0_usb", &regulator);
if (ret) {
pr_debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret);
goto out;
}
ret = regulator_set_enable(regulator, true);
if (ret)
pr_debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", __func__, ret);
out:
return 0;
}
#endif
#ifdef CONFIG_MISC_INIT_R
static void setup_iodomain(void)
{
struct rk3399_grf_regs *grf =
syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
struct rk3399_pmugrf_regs *pmugrf =
syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
/* BT565 is in 1.8v domain */
rk_setreg(&grf->io_vsel,
GRF_IO_VSEL_BT565_GPIO2AB | GRF_IO_VSEL_AUDIO_GPIO3D4A);
/* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */
rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT);
}
int misc_init_r(void)
{
const u32 cpuid_offset = 0x7;
const u32 cpuid_length = 0x10;
u8 cpuid[cpuid_length];
int ret;
setup_iodomain();
ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
if (ret)
return ret;
ret = rockchip_cpuid_set(cpuid, cpuid_length);
if (ret)
return ret;
return ret;
}
#endif

View File

@ -21,3 +21,14 @@ F: arch/arm/dts/rk3566-soquartz-cm4.dts
F: arch/arm/dts/rk3566-soquartz-cm4-u-boot.dtsi F: arch/arm/dts/rk3566-soquartz-cm4-u-boot.dtsi
F: arch/arm/dts/rk3566-soquartz-model-a.dts F: arch/arm/dts/rk3566-soquartz-model-a.dts
F: arch/arm/dts/rk3566-soquartz-model-a-u-boot.dtsi F: arch/arm/dts/rk3566-soquartz-model-a-u-boot.dtsi
PINETAB2-RK3566
M: Jonas Karlman <jonas@kwiboo.se>
S: Maintained
F: configs/pinetab2-rk3566_defconfig
F: arch/arm/dts/rk3566-pinetab2.dtsi
F: arch/arm/dts/rk3566-pinetab2-u-boot.dtsi
F: arch/arm/dts/rk3566-pinetab2-v0.1.dts
F: arch/arm/dts/rk3566-pinetab2-v0.1-u-boot.dtsi
F: arch/arm/dts/rk3566-pinetab2-v2.0.dts
F: arch/arm/dts/rk3566-pinetab2-v2.0-u-boot.dtsi

View File

@ -1,7 +1,8 @@
ROCKPRO64 ROCKPRO64
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained S: Maintained
F: board/pine64/rockpro64_rk3399 F: board/pine64/rockpro64_rk3399
F: include/configs/rockpro64_rk3399.h F: include/configs/rockpro64_rk3399.h
F: arch/arm/dts/rk3399-rockpro64-u-boot.dtsi F: arch/arm/dts/rk3399-rockpro64*
F: configs/rockpro64-rk3399_defconfig F: configs/rockpro64-rk3399_defconfig

View File

@ -1,7 +0,0 @@
#
# (C) Copyright 2019 Vasily Khoruzhick
#
# SPDX-License-Identifier: GPL-2.0+
#
obj-y += rockpro64-rk3399.o

View File

@ -1,56 +0,0 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2019 Vasily Khoruzhick <anarsoul@gmail.com>
*/
#include <common.h>
#include <dm.h>
#include <init.h>
#include <syscon.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rk3399.h>
#include <asm/arch-rockchip/hardware.h>
#include <asm/arch-rockchip/misc.h>
#define GRF_IO_VSEL_BT565_SHIFT 0
#define PMUGRF_CON0_VSEL_SHIFT 8
#ifdef CONFIG_MISC_INIT_R
static void setup_iodomain(void)
{
struct rk3399_grf_regs *grf =
syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
struct rk3399_pmugrf_regs *pmugrf =
syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
/* BT565 is in 1.8v domain */
rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT);
/* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */
rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT);
}
int misc_init_r(void)
{
const u32 cpuid_offset = 0x7;
const u32 cpuid_length = 0x10;
u8 cpuid[cpuid_length];
int ret;
setup_iodomain();
ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
if (ret)
return ret;
ret = rockchip_cpuid_set(cpuid, cpuid_length);
if (ret)
return ret;
ret = rockchip_setup_macaddr();
return ret;
}
#endif

View File

@ -0,0 +1,15 @@
if TARGET_ROCKPI4_RK3399
config SYS_BOARD
default "rockpi4-rk3399"
config SYS_VENDOR
default "radxa"
config SYS_CONFIG_NAME
default "rockpi4-rk3399"
config BOARD_SPECIFIC_OPTIONS # dummy
def_bool y
endif

View File

@ -0,0 +1,22 @@
ROCK-PI-4
M: Jagan Teki <jagan@amarulasolutions.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained
F: board/radxa/rockpi4-rk3399/
F: configs/rock-pi-4-rk3399_defconfig
F: configs/rock-pi-4c-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-pi-4*
ROCK-4C+
M: FUKAUMI Naoki <naoki@radxa.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained
F: configs/rock-4c-plus-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-4c-plus*
ROCK-4SE
M: Christopher Obbard <chris.obbard@collabora.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained
F: configs/rock-4se-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-4se*

View File

@ -4,4 +4,4 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
# #
obj-y += evb-rk3399.o obj-y += rockpi4-rk3399.o

View File

@ -3,14 +3,8 @@
* (C) Copyright 2016 Rockchip Electronics Co., Ltd * (C) Copyright 2016 Rockchip Electronics Co., Ltd
*/ */
#include <common.h>
#include <dm.h> #include <dm.h>
#include <efi_loader.h> #include <efi_loader.h>
#include <init.h>
#include <log.h>
#include <asm/arch-rockchip/periph.h>
#include <linux/kernel.h>
#include <power/regulator.h>
#define ROCKPI4_UPDATABLE_IMAGES 2 #define ROCKPI4_UPDATABLE_IMAGES 2
@ -25,36 +19,15 @@ struct efi_capsule_update_info update_info = {
#endif #endif
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
int board_early_init_f(void) #if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && IS_ENABLED(CONFIG_EFI_PARTITION)
{
struct udevice *regulator;
int ret;
ret = regulator_get_by_platname("vcc5v0_host", &regulator);
if (ret) {
debug("%s vcc5v0_host init fail! ret %d\n", __func__, ret);
goto out;
}
ret = regulator_set_enable(regulator, true);
if (ret)
debug("%s vcc5v0-host-en set fail! ret %d\n", __func__, ret);
out:
return 0;
}
#if defined(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && defined(CONFIG_EFI_PARTITION)
static bool board_is_rockpi_4b(void) static bool board_is_rockpi_4b(void)
{ {
return CONFIG_IS_ENABLED(TARGET_EVB_RK3399) && return of_machine_is_compatible("radxa,rockpi4b");
of_machine_is_compatible("radxa,rockpi4b");
} }
static bool board_is_rockpi_4c(void) static bool board_is_rockpi_4c(void)
{ {
return CONFIG_IS_ENABLED(TARGET_EVB_RK3399) && return of_machine_is_compatible("radxa,rockpi4c");
of_machine_is_compatible("radxa,rockpi4c");
} }
void rockchip_capsule_update_board_setup(void) void rockchip_capsule_update_board_setup(void)

View File

@ -4,17 +4,21 @@ S: Maintained
F: board/rockchip/evb_rk3328 F: board/rockchip/evb_rk3328
F: include/configs/evb_rk3328.h F: include/configs/evb_rk3328.h
F: configs/evb-rk3328_defconfig F: configs/evb-rk3328_defconfig
F: arch/arm/dts/rk3328-evb.dts
F: arch/arm/dts/rk3328-evb-u-boot.dtsi
NANOPI-R2C-RK3328 NANOPI-R2C-RK3328
M: Tianling Shen <cnsztl@gmail.com> M: Tianling Shen <cnsztl@gmail.com>
S: Maintained S: Maintained
F: configs/nanopi-r2c-rk3328_defconfig F: configs/nanopi-r2c-rk3328_defconfig
F: arch/arm/dts/rk3328-nanopi-r2c.dts
F: arch/arm/dts/rk3328-nanopi-r2c-u-boot.dtsi F: arch/arm/dts/rk3328-nanopi-r2c-u-boot.dtsi
NANOPI-R2C-PLUS-RK3328 NANOPI-R2C-PLUS-RK3328
M: Tianling Shen <cnsztl@gmail.com> M: Tianling Shen <cnsztl@gmail.com>
S: Maintained S: Maintained
F: configs/nanopi-r2c-plus-rk3328_defconfig F: configs/nanopi-r2c-plus-rk3328_defconfig
F: arch/arm/dts/rk3328-nanopi-r2c-plus.dts
F: arch/arm/dts/rk3328-nanopi-r2c-plus-u-boot.dtsi F: arch/arm/dts/rk3328-nanopi-r2c-plus-u-boot.dtsi
NANOPI-R2S-RK3328 NANOPI-R2S-RK3328
@ -28,29 +32,36 @@ ORANGEPI-R1-PLUS-RK3328
M: Tianling Shen <cnsztl@gmail.com> M: Tianling Shen <cnsztl@gmail.com>
S: Maintained S: Maintained
F: configs/orangepi-r1-plus-rk3328_defconfig F: configs/orangepi-r1-plus-rk3328_defconfig
F: arch/arm/dts/rk3328-orangepi-r1-plus.dts
F: arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi F: arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi
ORANGEPI-R1-PLUS-LTS-RK3328 ORANGEPI-R1-PLUS-LTS-RK3328
M: Tianling Shen <cnsztl@gmail.com> M: Tianling Shen <cnsztl@gmail.com>
S: Maintained S: Maintained
F: configs/orangepi-r1-plus-lts-rk3328_defconfig F: configs/orangepi-r1-plus-lts-rk3328_defconfig
F: arch/arm/dts/rk3328-orangepi-r1-plus-lts.dts
F: arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi F: arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi
ROC-RK3328-CC ROC-RK3328-CC
M: Loic Devulder <ldevulder@suse.com> M: Loic Devulder <ldevulder@suse.com>
M: Chen-Yu Tsai <wens@csie.org> M: Chen-Yu Tsai <wens@csie.org>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained S: Maintained
F: configs/roc-cc-rk3328_defconfig F: configs/roc-cc-rk3328_defconfig
F: arch/arm/dts/rk3328-roc-cc.dts
F: arch/arm/dts/rk3328-roc-cc-u-boot.dtsi F: arch/arm/dts/rk3328-roc-cc-u-boot.dtsi
ROCK64-RK3328 ROCK64-RK3328
M: Matwey V. Kornilov <matwey.kornilov@gmail.com> M: Matwey V. Kornilov <matwey.kornilov@gmail.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained S: Maintained
F: configs/rock64-rk3328_defconfig F: configs/rock64-rk3328_defconfig
F: arch/arm/dts/rk3328-rock64.dts
F: arch/arm/dts/rk3328-rock64-u-boot.dtsi F: arch/arm/dts/rk3328-rock64-u-boot.dtsi
ROCKPIE-RK3328 ROCKPIE-RK3328
M: Banglang Huang <banglang.huang@foxmail.com> M: Banglang Huang <banglang.huang@foxmail.com>
R: Jonas Karlman <jonas@kwiboo.se>
S: Maintained S: Maintained
F: configs/rock-pi-e-rk3328_defconfig F: configs/rock-pi-e-rk3328_defconfig
F: arch/arm/dts/rk3328-rock-pi-e.dts F: arch/arm/dts/rk3328-rock-pi-e.dts

View File

@ -1,70 +0,0 @@
Introduction
============
RK3328 key features we might use in U-Boot:
* CPU: ARMv8 64bit quad-core Cortex-A53
* IRAM: 36KB
* DRAM: 4GB-16MB dual-channel
* eMMC: support eMMC 5.0/5.1, suport HS400, HS200, DDR50
* SD/MMC: support SD 3.0, MMC 4.51
* USB: USB2.0 EHCI host port *2
* Display: RGB/HDMI/DP/MIPI/EDP
evb key features:
* regulator: pwm regulator for CPU B/L
* PMIC: rk808
* debug console: UART2
In order to support Arm Trust Firmware(ATF), we need to use the
miniloader from rockchip which:
* do DRAM init
* load and verify ATF image
* load and verify U-Boot image
Here is the step-by-step to boot to U-Boot on rk3328.
Get the Source and prebuild binary
==================================
> mkdir ~/evb_rk3328
> cd ~/evb_rk3328
> git clone https://github.com/ARM-software/arm-trusted-firmware.git
> git clone https://github.com/rockchip-linux/rkbin
> git clone https://github.com/rockchip-linux/rkflashtool
Compile ATF
===============
> cd arm-trusted-firmware
> make realclean
> make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3328 bl31
Compile U-Boot
==================
> cd ../u-boot
> make CROSS_COMPILE=aarch64-linux-gnu- evb-rk3328_defconfig all
Compile rkflashtool
=======================
> cd ../rkflashtool
> make
Package image for miniloader
================================
> cd ..
> cp arm-trusted-firmware/build/rk3328/release/bl31.bin rkbin/rk33
> ./rkbin/tools/trust_merger rkbin/tools/RK3328TRUST.ini
> ./rkbin/tools/loaderimage --pack --uboot u-boot/u-boot-dtb.bin uboot.img
> mkdir image
> mv trust.img ./image/
> mv uboot.img ./image/rk3328evb-uboot.bin
Flash image
===============
Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then:
> ./rkflashtool/rkflashloader rk3328evb
You should be able to get U-Boot log message in console/UART2 now.

View File

@ -4,48 +4,53 @@ S: Maintained
F: board/rockchip/evb_rk3399 F: board/rockchip/evb_rk3399
F: include/configs/evb_rk3399.h F: include/configs/evb_rk3399.h
F: configs/evb-rk3399_defconfig F: configs/evb-rk3399_defconfig
F: arch/arm/dts/rk3399-evb*
F: configs/firefly-rk3399_defconfig F: configs/firefly-rk3399_defconfig
F: arch/arm/dts/rk3399-firefly*
EAIDK-610 EAIDK-610
M: Andy Yan <andy.yan@rock-chips.com> M: Andy Yan <andy.yan@rock-chips.com>
S: Maintained S: Maintained
F: configs/eaidk-610-rk3399_defconfig F: configs/eaidk-610-rk3399_defconfig
F: arch/arm/dts/rk3399-eaidk-610-u-boot.dtsi F: arch/arm/dts/rk3399-eaidk-610*
KHADAS-EDGE KHADAS-EDGE
M: Nick Xie <nick@khadas.com> M: Nick Xie <nick@khadas.com>
S: Maintained S: Maintained
F: configs/khadas-edge-rk3399_defconfig F: configs/khadas-edge-rk3399_defconfig
F: arch/arm/dts/rk3399-khadas-edge.dts
F: arch/arm/dts/rk3399-khadas-edge.dtsi
F: arch/arm/dts/rk3399-khadas-edge-u-boot.dtsi F: arch/arm/dts/rk3399-khadas-edge-u-boot.dtsi
KHADAS-EDGE-CAPTAIN KHADAS-EDGE-CAPTAIN
M: Nick Xie <nick@khadas.com> M: Nick Xie <nick@khadas.com>
S: Maintained S: Maintained
F: configs/khadas-edge-captain-rk3399_defconfig F: configs/khadas-edge-captain-rk3399_defconfig
F: arch/arm/dts/rk3399-khadas-edge-captain-u-boot.dtsi F: arch/arm/dts/rk3399-khadas-edge-captain*
KHADAS-EDGE-V KHADAS-EDGE-V
M: Nick Xie <nick@khadas.com> M: Nick Xie <nick@khadas.com>
S: Maintained S: Maintained
F: configs/khadas-edge-v-rk3399_defconfig F: configs/khadas-edge-v-rk3399_defconfig
F: arch/arm/dts/rk3399-khadas-edge-v-u-boot.dtsi F: arch/arm/dts/rk3399-khadas-edge-v*
LEEZ-P710 LEEZ-P710
M: Andy Yan <andy.yan@rock-chips.com> M: Andy Yan <andy.yan@rock-chips.com>
S: Maintained S: Maintained
F: arch/arm/dts/rk3399-leez-p710-u-boot.dtsi F: arch/arm/dts/rk3399-leez-p710*
F: configs/leez-rk3399_defconfig F: configs/leez-rk3399_defconfig
NANOPC-T4 NANOPC-T4
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained S: Maintained
F: configs/nanopc-t4-rk3399_defconfig F: configs/nanopc-t4-rk3399_defconfig
F: arch/arm/dts/rk3399-nanopc-t4-u-boot.dtsi F: arch/arm/dts/rk3399-nanopc-t4*
NANOPI-M4 NANOPI-M4
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained S: Maintained
F: configs/nanopi-m4-rk3399_defconfig F: configs/nanopi-m4-rk3399_defconfig
F: arch/arm/dts/rk3399-nanopi-m4.dts
F: arch/arm/dts/rk3399-nanopi-m4-u-boot.dtsi F: arch/arm/dts/rk3399-nanopi-m4-u-boot.dtsi
NANOPI-M4-2GB NANOPI-M4-2GB
@ -53,55 +58,34 @@ M: Jagan Teki <jagan@amarulasolutions.com>
M: Deepak Das <deepakdas.linux@gmail.com> M: Deepak Das <deepakdas.linux@gmail.com>
S: Maintained S: Maintained
F: configs/nanopi-m4-2gb-rk3399_defconfig F: configs/nanopi-m4-2gb-rk3399_defconfig
F: arch/arm/dts/rk3399-nanopi-m4-2gb-u-boot.dtsi F: arch/arm/dts/rk3399-nanopi-m4-2gb*
NANOPI-M4B NANOPI-M4B
M: Alexandre Vicenzi <linux@alxd.me> M: Alexandre Vicenzi <linux@alxd.me>
S: Maintained S: Maintained
F: configs/nanopi-m4b-rk3399_defconfig F: configs/nanopi-m4b-rk3399_defconfig
F: arch/arm/dts/rk3399-nanopi-m4b-u-boot.dtsi F: arch/arm/dts/rk3399-nanopi-m4b*
NANOPI-NEO4 NANOPI-NEO4
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained S: Maintained
F: configs/nanopi-neo4-rk3399_defconfig F: configs/nanopi-neo4-rk3399_defconfig
F: arch/arm/dts/rk3399-nanopi-neo4-u-boot.dtsi F: arch/arm/dts/rk3399-nanopi-neo4*
NANOPI-R4S NANOPI-R4S
M: Xiaobo Tian <peterwillcn@gmail.com> M: Xiaobo Tian <peterwillcn@gmail.com>
S: Maintained S: Maintained
F: configs/nanopi-r4s-rk3399_defconfig F: configs/nanopi-r4s-rk3399_defconfig
F: arch/arm/dts/rk3399-nanopi-r4s-u-boot.dtsi F: arch/arm/dts/rk3399-nanopi-r4s*
ORANGEPI-RK3399 ORANGEPI-RK3399
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained S: Maintained
F: configs/orangepi-rk3399_defconfig F: configs/orangepi-rk3399_defconfig
F: arch/arm/dts/rk3399-u-boot.dtsi F: arch/arm/dts/rk3399-orangepi*
F: arch/arm/dts/rk3399-orangepi-u-boot.dtsi
ROCK-4C+
M: FUKAUMI Naoki <naoki@radxa.com>
S: Maintained
F: configs/rock-4c-plus-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-4c-plus.dts
ROCK-4SE
M: Christopher Obbard <chris.obbard@collabora.com>
S: Maintained
F: configs/rock-4se-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-4se-u-boot.dtsi
ROCK-PI-4
M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained
F: configs/rock-pi-4-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
F: configs/rock-pi-4c-rk3399_defconfig
F: arch/arm/dts/rk3399-rock-pi-4c-u-boot.dtsi
ROCK-PI-N10 ROCK-PI-N10
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained S: Maintained
F: configs/rock-pi-n10-rk3399pro_defconfig F: configs/rock-pi-n10-rk3399pro_defconfig
F: arch/arm/dts/rk3399pro-rock-pi-n10-u-boot.dtsi F: arch/arm/dts/rk3399pro-rock-pi-n10*

View File

@ -1,3 +1,18 @@
COOLPI-4B-RK3588S
M: Andy Yan <andyshrk@163.com>
S: Maintained
F: configs/coolpi-4b-rk3588s_defconfig
F: arch/arm/dts/rk3588s-coolpi-4b.dts
F: arch/arm/dts/rk3588s-coolpi-u-boot.dtsi
COOLPI-CM5-EVB-RK3588
M: Andy Yan <andyshrk@163.com>
S: Maintained
F: configs/coolpi-cm5-evb-rk3588_defconfig
F: arch/arm/dts/rk3588-coolpi-cm5.dtsi
F: arch/arm/dts/rk3588-coolpi-cm5-evb.dts
F: arch/arm/dts/rk3588-coolpi-cm5-evb-u-boot.dtsi
EVB-RK3588 EVB-RK3588
M: Kever Yang <kever.yang@rock-chips.com> M: Kever Yang <kever.yang@rock-chips.com>
S: Maintained S: Maintained
@ -7,6 +22,13 @@ F: configs/evb-rk3588_defconfig
F: arch/arm/dts/rk3588-evb1-v10.dts F: arch/arm/dts/rk3588-evb1-v10.dts
F: arch/arm/dts/rk3588-evb1-v10-u-boot.dtsi F: arch/arm/dts/rk3588-evb1-v10-u-boot.dtsi
GENERIC-RK3588
M: Jonas Karlman <jonas@kwiboo.se>
S: Maintained
F: configs/generic-rk3588_defconfig
F: arch/arm/dts/rk3588-generic.dts
F: arch/arm/dts/rk3588-generic-u-boot.dtsi
ORANGEPI-5-RK3588 ORANGEPI-5-RK3588
M: Jonas Karlman <jonas@kwiboo.se> M: Jonas Karlman <jonas@kwiboo.se>
S: Maintained S: Maintained

View File

@ -8,7 +8,6 @@
#include <init.h> #include <init.h>
#include <syscon.h> #include <syscon.h>
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h>
#include <asm/arch-rockchip/clock.h> #include <asm/arch-rockchip/clock.h>
#include <asm/arch-rockchip/grf_rv1108.h> #include <asm/arch-rockchip/grf_rv1108.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>

View File

@ -11,8 +11,6 @@
#include <init.h> #include <init.h>
#include <net.h> #include <net.h>
#include <netdev.h> #include <netdev.h>
#include <asm/arch-rockchip/bootrom.h>
#include <asm/io.h>
static int get_ethaddr_from_eeprom(u8 *addr) static int get_ethaddr_from_eeprom(u8 *addr)
{ {
@ -38,13 +36,3 @@ int rk3288_board_late_init(void)
return 0; return 0;
} }
int mmc_get_env_dev(void)
{
u32 bootdevice_brom_id = readl(BROM_BOOTSOURCE_ID_ADDR);
if (bootdevice_brom_id == BROM_BOOTSOURCE_EMMC)
return 0;
return 1;
}

View File

@ -0,0 +1,12 @@
if TARGET_TOYBRICK_RK3588
config SYS_BOARD
default "toybrick_rk3588"
config SYS_VENDOR
default "rockchip"
config SYS_CONFIG_NAME
default "toybrick_rk3588"
endif

View File

@ -0,0 +1,8 @@
TOYBRICK-RK3588
M: Elon Zhang <zhangzj@rock-chips.com>
S: Maintained
F: board/rockchip/toybrick_rk3588
F: include/configs/toybrick_rk3588.h
F: configs/toybrick-rk3588_defconfig
F: arch/arm/dts/rk3588-toybrick-x0.dts
F: arch/arm/dts/rk3588-toybrick-x0-u-boot.dtsi

Some files were not shown because too many files have changed in this diff Show More