
On 1/18/23 03:11, Yanhong Wang wrote:
Add initial device tree for StarFive VisionFive v2 board.
Signed-off-by: Yanhong Wang yanhong.wang@starfivetech.com
arch/riscv/dts/Makefile | 2 +- .../dts/starfive_visionfive2-u-boot.dtsi | 84 +++++++ arch/riscv/dts/starfive_visionfive2.dts | 234 ++++++++++++++++++ 3 files changed, 319 insertions(+), 1 deletion(-) create mode 100644 arch/riscv/dts/starfive_visionfive2-u-boot.dtsi create mode 100644 arch/riscv/dts/starfive_visionfive2.dts
diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile index 5c15a0f303..0351cc0c38 100644 --- a/arch/riscv/dts/Makefile +++ b/arch/riscv/dts/Makefile @@ -7,7 +7,7 @@ dtb-$(CONFIG_TARGET_OPENPITON_RISCV64) += openpiton-riscv64.dtb dtb-$(CONFIG_TARGET_SIFIVE_UNLEASHED) += hifive-unleashed-a00.dtb dtb-$(CONFIG_TARGET_SIFIVE_UNMATCHED) += hifive-unmatched-a00.dtb dtb-$(CONFIG_TARGET_SIPEED_MAIX) += k210-maix-bit.dtb
+dtb-$(CONFIG_TARGET_STARFIVE_VISIONFIVE2) += starfive_visionfive2.dtb include $(srctree)/scripts/Makefile.dts
targets += $(dtb-y) diff --git a/arch/riscv/dts/starfive_visionfive2-u-boot.dtsi b/arch/riscv/dts/starfive_visionfive2-u-boot.dtsi new file mode 100644 index 0000000000..1b4e3392ab --- /dev/null +++ b/arch/riscv/dts/starfive_visionfive2-u-boot.dtsi @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/*
- Copyright (C) 2022 StarFive Technology Co., Ltd.
- */
+#include "binman.dtsi" +#include "jh7110-u-boot.dtsi" +/ {
- chosen {
u-boot,dm-spl;
- };
- firmware {
spi0 = &qspi;
u-boot,dm-spl;
- };
- config {
u-boot,dm-spl;
u-boot,spl-payload-offset = <0x100000>;
- };
- memory@40000000 {
u-boot,dm-spl;
- };
- soc {
u-boot,dm-spl;
dmc: dmc@15700000 {
u-boot,dm-spl;
compatible = "starfive,jh7110-dmc";
reg = <0x0 0x15700000 0x0 0x10000>,
<0x0 0x13000000 0x0 0x10000>;
resets = <&syscrg JH7110_SYSRST_DDR_AXI>,
<&syscrg JH7110_SYSRST_DDR_OSC>,
<&syscrg JH7110_SYSRST_DDR_APB>;
reset-names = "axi", "osc", "apb";
clocks = <&syscrg JH7110_SYSCLK_PLL1_OUT>;
clock-names = "pll1";
clock-frequency = <2133>;
};
Again, needs to go in SoC dtsi.
Here are the rules for where something should go:
- If it is part of the chip, it goes in the SoC dtsi, even if it is not always used! You can disable it by default (status = "disabled") if this is the case. - If it is on the board, it goes in the board dts. - If it is a property which is added to a node to support a board peripheral, it goes in the board dts. - If it is a U-Boot-specific property, it goes in the -u-boot.dts[i]
--Sean
- };
+};
+&sys_syscon {
- u-boot,dm-spl;
+};
+&uart0 {
- u-boot,dm-spl;
+};
+&sdio0 {
- u-boot,dm-spl;
+};
+&sdio1 {
- u-boot,dm-spl;
+};
+&qspi {
- u-boot,dm-spl;
- nor-flash@0 {
u-boot,dm-spl;
- };
+};
+&osc {
- u-boot,dm-spl;
+};
+&aoncrg {
- u-boot,dm-spl;
+};
+&syscrg {
- u-boot,dm-spl;
+};
+&stgcrg {
- u-boot,dm-spl;
+}; diff --git a/arch/riscv/dts/starfive_visionfive2.dts b/arch/riscv/dts/starfive_visionfive2.dts new file mode 100644 index 0000000000..52b31546da --- /dev/null +++ b/arch/riscv/dts/starfive_visionfive2.dts @@ -0,0 +1,234 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/*
- Copyright (C) 2022 StarFive Technology Co., Ltd.
- */
+/dts-v1/;
+#include "jh7110.dtsi" +#include <dt-bindings/pinctrl/pinctrl-starfive-jh7110.h> +/ {
- #address-cells = <2>;
- #size-cells = <2>;
- model = "StarFive VisionFive V2";
- compatible = "starfive,jh7110";
- aliases {
spi0 = &qspi;
mmc0 = &sdio0;
mmc1 = &sdio1;
- };
- chosen {
stdout-path = "/soc/serial@10000000:115200";
- };
- cpus {
timebase-frequency = <4000000>;
- };
- memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0x1 0x0>;
- };
- soc {
sys_syscon: sys_syscon@13030000 {
compatible = "syscon";
reg = <0x0 0x13030000 0x0 0x1000>;
};
- };
ditto
+};
+&S76_0 {
- status = "okay";
+};
+&osc {
- clock-frequency = <24000000>;
+};
+&clk_rtc {
- clock-frequency = <32768>;
+};
+&gmac0_rmii_refin {
- clock-frequency = <50000000>;
+};
+&gmac0_rgmii_rxin {
- clock-frequency = <125000000>;
+};
+&gmac1_rmii_refin {
- clock-frequency = <50000000>;
+};
+&gmac1_rgmii_rxin {
- clock-frequency = <125000000>;
+};
+&i2stx_bclk_ext {
- clock-frequency = <12288000>;
+};
+&i2stx_lrck_ext {
- clock-frequency = <192000>;
+};
+&i2srx_bclk_ext {
- clock-frequency = <12288000>;
+};
+&i2srx_lrck_ext {
- clock-frequency = <192000>;
+};
+&tdm_ext {
- clock-frequency = <49152000>;
+};
+&mclk_ext {
- clock-frequency = <12288000>;
+};
+&gpio {
- status = "okay";
- uart0_pins: uart0-0 {
tx-pins {
pinmux = <GPIOMUX(5, GPOUT_SYS_UART0_TX,
GPOEN_ENABLE, GPI_NONE)>;
bias-disable;
drive-strength = <12>;
input-disable;
input-schmitt-disable;
slew-rate = <0>;
};
rx-pins {
pinmux = <GPIOMUX(6, GPOUT_LOW,
GPOEN_DISABLE, GPI_SYS_UART0_RX)>;
bias-pull-up;
drive-strength = <2>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
- };
- mmc0_pins: mmc0-pins {
mmc0-pins-rest {
pinmux = <GPIOMUX(62, GPOUT_SYS_SDIO0_RST,
GPOEN_ENABLE, GPI_NONE)>;
bias-pull-up;
drive-strength = <12>;
input-disable;
input-schmitt-disable;
slew-rate = <0>;
};
- };
- sdcard1_pins: sdcard1-pins {
sdcard1-pins0 {
pinmux = <GPIOMUX(10, GPOUT_SYS_SDIO1_CLK,
GPOEN_ENABLE, GPI_NONE)>;
bias-pull-up;
drive-strength = <12>;
input-disable;
input-schmitt-disable;
slew-rate = <0>;
};
sdcard1-pins1 {
pinmux = <GPIOMUX(9, GPOUT_SYS_SDIO1_CMD,
GPOEN_SYS_SDIO1_CMD, GPI_SYS_SDIO1_CMD)>;
bias-pull-up;
drive-strength = <12>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
sdcard1-pins2 {
pinmux = <GPIOMUX(11, GPOUT_SYS_SDIO1_DATA0,
GPOEN_SYS_SDIO1_DATA0, GPI_SYS_SDIO1_DATA0)>;
bias-pull-up;
drive-strength = <12>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
sdcard1-pins3 {
pinmux = <GPIOMUX(12, GPOUT_SYS_SDIO1_DATA1,
GPOEN_SYS_SDIO1_DATA1, GPI_SYS_SDIO1_DATA1)>;
bias-pull-up;
drive-strength = <12>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
sdcard1-pins4 {
pinmux = <GPIOMUX(7, GPOUT_SYS_SDIO1_DATA2,
GPOEN_SYS_SDIO1_DATA2, GPI_SYS_SDIO1_DATA2)>;
bias-pull-up;
drive-strength = <12>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
sdcard1-pins5 {
pinmux = <GPIOMUX(8, GPOUT_SYS_SDIO1_DATA3,
GPOEN_SYS_SDIO1_DATA3, GPI_SYS_SDIO1_DATA3)>;
bias-pull-up;
drive-strength = <12>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
- };
+};
+&sdio0 {
- bus-width = <8>;
- pinctrl-names = "default";
- pinctrl-0 = <&mmc0_pins>;
- status = "okay";
+};
+&sdio1 {
- bus-width = <4>;
- pinctrl-names = "default";
- pinctrl-0 = <&sdcard1_pins>;
- status = "okay";
+};
+&uart0 {
- reg-offset = <0>;
- current-speed = <115200>;
- clock-frequency = <24000000>;
- pinctrl-names = "default";
- pinctrl-0 = <&uart0_pins>;
- status = "okay";
+};
+&qspi {
- spi-max-frequency = <250000000>;
- status = "okay";
- nor-flash@0 {
compatible = "jedec,spi-nor";
reg=<0>;
spi-max-frequency = <100000000>;
cdns,tshsl-ns = <1>;
cdns,tsd2d-ns = <1>;
cdns,tchsh-ns = <1>;
cdns,tslch-ns = <1>;
- };
+};
+&syscrg {
- starfive,sys-syscon = <&sys_syscon>;
+};
ditto