Add support for StarFive VisionFive 2 Lite board
Subsystems (3)
cover Add support for StarFive VisionFive 2 Lite board
VisionFive 2 Lite is a mini SBC based on the StarFive JH7110S industrial SoC which can run at -40~85 degrees centigrade and up to 1.25GHz.
Board features:
- JH7110S SoC
- 2/4/8 GiB LPDDR4 DRAM
- AXP15060 PMIC
- 40 pin GPIO header
- 1x USB 3.0 host port
- 3x USB 2.0 host port
- 1x M.2 M-Key (size: 2242)
- 1x MicroSD slot (optional non-removable eMMC)
- 1x QSPI Flash
- 1x I2C EEPROM
- 1x 1Gbps Ethernet port
- SDIO-based Wi-Fi & UART-based Bluetooth
- 1x HDMI port
- 1x 2-lane DSI
- 1x 2-lane CSI
For more details, please see
https://www.kickstarter.com/projects/starfive/visionfive-2-lite-unlock-risc-v-sbc-at-199
Hal Feng (3):
dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite
board
riscv: dts: starfive: jh7110-common: Move out some nodes to the board
dts
riscv: dts: starfive: Add VisionFive 2 Lite board device tree
.../devicetree/bindings/riscv/starfive.yaml | 5 + arch/riscv/boot/dts/starfive/Makefile | 2 + .../boot/dts/starfive/jh7110-common.dtsi | 22 --- .../jh7110-deepcomputing-fml13v01.dts | 49 ++++++ .../boot/dts/starfive/jh7110-milkv-mars.dts | 49 ++++++ .../dts/starfive/jh7110-pine64-star64.dts | 49 ++++++ .../jh7110-starfive-visionfive-2.dtsi | 46 ++++++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 16 -- .../jh7110s-starfive-visionfive-2-lite.dts | 152 ++++++++++++++++++ 9 files changed, 352 insertions(+), 38 deletions(-) create mode 100644 arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts
base-commit: 068a56e56fa81e42fc5f08dff34fab149bb60a09
Signature · 1 line
2.43.2
RFC 1/3 dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite board
Add device tree bindings for the StarFive JH7110S SoC and the VisionFive 2 Lite board equipped with it.
JH7110S SoC is an industrial SoC which can run at -40~85 degrees centigrade and up to 1.25GHz. Its CPU cores and peripherals are mostly similar to those of the JH7110 SoC.
--- Documentation/devicetree/bindings/riscv/starfive.yaml | 5 +++++ 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/riscv/starfive.yaml +5 -0
@@ -33,6 +33,11 @@ properties: - starfive,visionfive-2-v1.3b - const: starfive,jh7110 + - items: + - enum: + - starfive,visionfive-2-lite + - const: starfive,jh7110s + additionalProperties: true ...
Signature · 1 line
2.43.2
Conor Dooley
maintainerRe: [RFC 1/3] dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite board
Quoted 6 lines · Hal Feng
Add device tree bindings for the StarFive JH7110S SoC and the VisionFive 2 Lite board equipped with it.
JH7110S SoC is an industrial SoC which can run at -40~85 degrees centigrade and up to 1.25GHz. Its CPU cores and peripherals are mostly similar to those of the JH7110 SoC.
How "mostly" is mostly? Are there memory map or capability differences?
Quoted 25 lines
Signed-off-by Hal Feng <[email protected]>--- Documentation/devicetree/bindings/riscv/starfive.yaml | 5 +++++ 1 file changed, 5 insertions(+)Documentation/devicetree/bindings/riscv/starfive.yaml +5
-0@@ -33,6 +33,11 @@ properties: - starfive,visionfive-2-v1.3b - const: starfive,jh7110 + - items: + - enum: + - starfive,visionfive-2-lite + - const: starfive,jh7110s + additionalProperties: trueSignature · 1 line
2.43.2
RE: [RFC 1/3] dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite board
Quoted 10 lines · Conor Dooley
Quoted 6 lines · Hal Feng
Add device tree bindings for the StarFive JH7110S SoC and the VisionFive 2 Lite board equipped with it.
JH7110S SoC is an industrial SoC which can run at -40~85 degrees centigrade and up to 1.25GHz. Its CPU cores and peripherals are mostly similar to those of the JH7110 SoC.
How "mostly" is mostly? Are there memory map or capability differences?
To be precise, the CPU cores and peripherals are the same as those of the JH7110 SoC. I will improve the commit description in the next version.
Here are the differences between them:
JH7110 supports 0~70 degrees centigrade and up to 1.5GHz. JH7110S supports -40~85 degrees centigrade and up to 1.25GHz.
Best regards,
Hal
Quoted 27 lines
Quoted 27 lines
Signed-off-by Hal Feng <[email protected]>--- Documentation/devicetree/bindings/riscv/starfive.yaml | 5 +++++ 1 file changed, 5 insertions(+)Documentation/devicetree/bindings/riscv/starfive.yaml +5
-1@@ -33,6 +33,11 @@ properties: - starfive,visionfive-2-v1.3b - const: starfive,jh7110 + - items: + - enum: + - starfive,visionfive-2-lite + - const: starfive,jh7110s + additionalProperties: true --2.43.2
Conor Dooley
maintainerRe: [RFC 1/3] dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite board
Quoted 5 lines · Hal Feng
Quoted 5 lines · Conor Dooley
Quoted 3 lines · Hal Feng
Add device tree bindings for the StarFive JH7110S SoC and the VisionFive 2 Lite board equipped with it.
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
JH7110S SoC is an industrial SoC which can run at -40~85 degrees centigrade and up to 1.25GHz. Its CPU cores and peripherals are mostly similar to those of the JH7110 SoC.
How "mostly" is mostly? Are there memory map or capability differences?
To be precise, the CPU cores and peripherals are the same as those of the JH7110 SoC. I will improve the commit description in the next version.
Ye, please do. The complete lack of differences other than thermals and cpu performance is what allows you to use all the same compatibles for the peripherals after all!
Quoted 36 lines
Here are the differences between them:
JH7110 supports 0~70 degrees centigrade and up to 1.5GHz. JH7110S supports -40~85 degrees centigrade and up to 1.25GHz.Best regards,
HalQuoted 27 lines
Quoted 27 lines
Signed-off-by Hal Feng <[email protected]>--- Documentation/devicetree/bindings/riscv/starfive.yaml | 5 +++++ 1 file changed, 5 insertions(+)Documentation/devicetree/bindings/riscv/starfive.yaml +5
-1@@ -33,6 +33,11 @@ properties: - starfive,visionfive-2-v1.3b - const: starfive,jh7110 + - items: + - enum: + - starfive,visionfive-2-lite + - const: starfive,jh7110s + additionalProperties: true --2.43.2
Re: [RFC 1/3] dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite board
In reply to Hal FengQuoted 20 lines · 在 2025-08-21星期四的 18:09 +0800,Hal Feng写道:
Add device tree bindings for the StarFive JH7110S SoC and the VisionFive 2 Lite board equipped with it.
JH7110S SoC is an industrial SoC which can run at -40~85 degrees centigrade
and up to 1.25GHz. Its CPU cores and peripherals are mostly similar to
those of the JH7110 SoC.Signed-off-by Hal Feng <[email protected]>---
Documentation/devicetree/bindings/riscv/starfive.yaml | 5 +++++1 file changed, 5 insertions(+)Documentation/devicetree/bindings/riscv/starfive.yaml +0
-0@@ -33,6 +33,11 @@ properties:
Quoted 7 lines
- starfive,visionfive-2-v1.3b
- const: starfive,jh7110
+ - items:
+ - enum:
+ - starfive,visionfive-2-lite
+ - const: starfive,jh7110s
I suggest adding starfive,jh7110 as a fallback here, as it's the SoC best known to most softwares, and JH7110S shouldn't have any difference to JH7110 other than binning.
Quoted 4 lines
+
additionalProperties: true
...
E Shattow
NAKRe: [RFC 1/3] dt-bindings: riscv: Add StarFive JH7110S SoC and VisionFive 2 Lite board
Quoted 24 lines · Icenowy Zheng
Quoted 23 lines · 在 2025-08-21星期四的 18:09 +0800,Hal Feng写道:
Add device tree bindings for the StarFive JH7110S SoC and the VisionFive 2 Lite board equipped with it.
JH7110S SoC is an industrial SoC which can run at -40~85 degrees centigrade
and up to 1.25GHz. Its CPU cores and peripherals are mostly similar to
those of the JH7110 SoC.Signed-off-by Hal Feng <[email protected]>---
Documentation/devicetree/bindings/riscv/starfive.yaml | 5 +++++1 file changed, 5 insertions(+)Documentation/devicetree/bindings/riscv/starfive.yaml +0
-0@@ -33,6 +33,11 @@ properties:- starfive,visionfive-2-v1.3b
- const: starfive,jh7110
Quoted 14 lines
Quoted 4 lines
+ - items:
+ - enum:
+ - starfive,visionfive-2-lite
+ - const: starfive,jh7110sI suggest adding starfive,jh7110 as a fallback here, as it's the SoC best known to most softwares, and JH7110S shouldn't have any difference to JH7110 other than binning.
Quoted 4 lines
+
additionalProperties: true
...
NAK, it is said the operating parameters of jh7110s are distinct from jh7110. You would have to show that it is safe to operate the jh7110s with the operating parameters of the jh7110. If anything this would be the inverse, some jh711x (or even j71xx to include jh7100) common description with fallback operating parameters? And to add this common fallback with jh7100 (?), jh7110, jh7110s -E
RFC 2/3 riscv: dts: starfive: jh7110-common: Move out some nodes to the board dts
In reply to Hal FengSome node in this file are not used by the upcoming VisionFive 2 Lite board. Move them to the board dts to prepare for adding the new VisionFive 2 Lite device tree.
--- .../boot/dts/starfive/jh7110-common.dtsi | 22 --------- .../jh7110-deepcomputing-fml13v01.dts | 49 +++++++++++++++++++ .../boot/dts/starfive/jh7110-milkv-mars.dts | 49 +++++++++++++++++++ .../dts/starfive/jh7110-pine64-star64.dts | 49 +++++++++++++++++++ .../jh7110-starfive-visionfive-2.dtsi | 46 +++++++++++++++++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 16 ------ 6 files changed, 193 insertions(+), 38 deletions(-)
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0 -22
@@ -281,15 +281,9 @@ &mmc0 { assigned-clock-rates = <50000000>; bus-width = <8>; bootph-pre-ram; - cap-mmc-highspeed; - mmc-ddr-1_8v; - mmc-hs200-1_8v; - cap-mmc-hw-reset; post-power-on-delay-ms = <200>; pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; - vmmc-supply = <&vcc_3v3>; - vqmmc-supply = <&emmc_vdd>; status = "okay"; };
@@ -299,12 +293,7 @@ &mmc1 { assigned-clock-rates = <50000000>; bus-width = <4>; bootph-pre-ram; - no-sdio; - no-mmc; - cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; - disable-wp; cap-sd-highspeed; - post-power-on-delay-ms = <200>; pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>; status = "okay";
@@ -448,17 +437,6 @@ GPOEN_SYS_I2C6_DATA, }; mmc0_pins: mmc0-0 { - rst-pins { - 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>; - }; - mmc-pins { pinmux = <PINMUX(PAD_SD0_CLK, 0)>, <PINMUX(PAD_SD0_CMD, 0)>,
arch/riscv/boot/dts/starfive/jh7110-deepcomputing-fml13v01.dts +49 -0
55 lines not on this page · raw message
arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts +49 -0
61 lines not on this page · raw message
arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts +49 -0
61 lines not on this page · raw message
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi +46 -0
61 lines not on this page · raw message
arch/riscv/boot/dts/starfive/jh7110.dtsi +0 -16
@@ -200,22 +200,6 @@ core4 { cpu_opp: opp-table-0 { compatible = "operating-points-v2"; opp-shared; - opp-375000000 { - opp-hz = /bits/ 64 <375000000>; - opp-microvolt = <800000>; - }; - opp-500000000 { - opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <800000>; - }; - opp-750000000 { - opp-hz = /bits/ 64 <750000000>; - opp-microvolt = <800000>; - }; - opp-1500000000 { - opp-hz = /bits/ 64 <1500000000>; - opp-microvolt = <1040000>; - }; }; thermal-zones {
Signature · 1 line
2.43.2
Re: [RFC 2/3] riscv: dts: starfive: jh7110-common: Move out some nodes to the board dts
Quoted 35 lines · Hal Feng
Some node in this file are not used by the upcoming VisionFive 2 Lite board. Move them to the board dts to prepare for adding the new VisionFive 2 Lite device tree.
Signed-off-by Hal Feng <[email protected]>--- .../boot/dts/starfive/jh7110-common.dtsi | 22 --------- .../jh7110-deepcomputing-fml13v01.dts | 49 +++++++++++++++++++ .../boot/dts/starfive/jh7110-milkv-mars.dts | 49 +++++++++++++++++++ .../dts/starfive/jh7110-pine64-star64.dts | 49 +++++++++++++++++++ .../jh7110-starfive-visionfive-2.dtsi | 46 +++++++++++++++++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 16 ------ 6 files changed, 193 insertions(+), 38 deletions(-)arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-6@@ -281,15 +281,9 @@ &mmc0 { assigned-clock-rates = <50000000>; bus-width = <8>; bootph-pre-ram; - cap-mmc-highspeed; - mmc-ddr-1_8v; - mmc-hs200-1_8v; - cap-mmc-hw-reset; post-power-on-delay-ms = <200>; pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; - vmmc-supply = <&vcc_3v3>; - vqmmc-supply = <&emmc_vdd>; status = "okay"; };
arch/riscv/boot/dts/starfive/jh7110-common.dtsi &mmc1 { · line 303
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-1@@ -299,12 +293,7 @@ &mmc1 { assigned-clock-rates = <50000000>; bus-width = <4>; bootph-pre-ram; - no-sdio;
drop no-sdio, it is not there in riscv-dt-for-next branch
ref: https://lore.kernel.org/lkml/20250819-sushi-change-1254c2d2a08d@spud/
arch/riscv/boot/dts/starfive/jh7110-common.dtsi &mmc1 { · line 303
Quoted 1 line
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-1- no-mmc;
similar, I think we should now drop no-mmc unless you can say there is a defect which requires it. I have tested with Star64 and Milk-V Mars CM(/-Lite); if you can confirm with boards you have access to that 'no-mmc' can be dropped then we should just drop it. The correct reason for having this 'no-mmc' would only be if the controller has an error when receiving these commands.
arch/riscv/boot/dts/starfive/jh7110-common.dtsi &mmc1 { · line 307
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-3- cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; - disable-wp; cap-sd-highspeed; - post-power-on-delay-ms = <200>;
I would like to know the reason for this delay configuration? Is it described somewhere in technical documentation or discussion why we have this?
Quoted 299 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-0pinctrl-names = "default";arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-11pinctrl-0 = <&mmc1_pins>; status = "okay";@@ -448,17 +437,6 @@ GPOEN_SYS_I2C6_DATA, }; mmc0_pins: mmc0-0 { - rst-pins { - 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>; - }; - mmc-pins { pinmux = <PINMUX(PAD_SD0_CLK, 0)>, <PINMUX(PAD_SD0_CMD, 0)>,arch/riscv/boot/dts/starfive/jh7110-deepcomputing-fml13v01.dts +49
-0@@ -11,6 +11,55 @@ / { compatible = "deepcomputing,fml13v01", "starfive,jh7110"; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>; + }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + +&mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; +}; + +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie1 { perst-gpios = <&sysgpio 21 GPIO_ACTIVE_LOW>; phys = <&pciephy1>;arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts +49
-0@@ -11,6 +11,25 @@ / { compatible = "milkv,mars", "starfive,jh7110"; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>; + }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + &gmac0 { assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>; assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>;@@ -22,6 +41,36 @@ &i2c0 { status = "okay"; }; +&mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; +}; + +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie0 { status = "okay"; };arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts +49
-0@@ -14,6 +14,25 @@ aliases { }; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>; + }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + &gmac0 { starfive,tx-use-rgmii-clk; assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>;@@ -44,6 +63,36 @@ &i2c0 { status = "okay"; }; +&mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; +}; + +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie1 { status = "okay"; };arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi +46
-0@@ -13,6 +13,25 @@ aliases { }; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>; + }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + &gmac0 { status = "okay"; };@@ -38,9 +57,36 @@ &i2c0 { }; &mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; non-removable; }; +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie0 { status = "okay"; };arch/riscv/boot/dts/starfive/jh7110.dtsi +0
-9@@ -200,22 +200,6 @@ core4 { cpu_opp: opp-table-0 { compatible = "operating-points-v2"; opp-shared; - opp-375000000 { - opp-hz = /bits/ 64 <375000000>; - opp-microvolt = <800000>; - }; - opp-500000000 { - opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <800000>; - }; - opp-750000000 {
arch/riscv/boot/dts/starfive/jh7110.dtsi core4 { · line 205
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi +0
-7- opp-hz = /bits/ 64 <750000000>; - opp-microvolt = <800000>; - }; - opp-1500000000 { - opp-hz = /bits/ 64 <1500000000>; - opp-microvolt = <1040000>; - }; }; thermal-zones {
With that,
RE: [RFC 2/3] riscv: dts: starfive: jh7110-common: Move out some nodes to the board dts
Quoted 42 lines · E Shattow
Quoted 39 lines · Hal Feng
Some node in this file are not used by the upcoming VisionFive 2 Lite board. Move them to the board dts to prepare for adding the new VisionFive 2 Lite device tree.
Signed-off-by Hal Feng <[email protected]>--- .../boot/dts/starfive/jh7110-common.dtsi | 22 --------- .../jh7110-deepcomputing-fml13v01.dts | 49 +++++++++++++++++++ .../boot/dts/starfive/jh7110-milkv-mars.dts | 49 +++++++++++++++++++ .../dts/starfive/jh7110-pine64-star64.dts | 49 +++++++++++++++++++ .../jh7110-starfive-visionfive-2.dtsi | 46 +++++++++++++++++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 16 ------ 6 files changed, 193 insertions(+), 38 deletions(-)arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-6@@ -281,15 +281,9 @@ &mmc0 { assigned-clock-rates = <50000000>; bus-width = <8>; bootph-pre-ram; - cap-mmc-highspeed; - mmc-ddr-1_8v; - mmc-hs200-1_8v; - cap-mmc-hw-reset; post-power-on-delay-ms = <200>; pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; - vmmc-supply = <&vcc_3v3>; - vqmmc-supply = <&emmc_vdd>; status = "okay"; };@@ -299,12 +293,7 @@ &mmc1 { assigned-clock-rates = <50000000>; bus-width = <4>; bootph-pre-ram;
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi &mmc1 { · line 302
Quoted 1 line
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-1- no-sdio;drop no-sdio, it is not there in riscv-dt-for-next branch
ref: https://lore.kernel.org/lkml/20250819-sushi-change-
1254c2d2a08d@spud/
OK. Thanks for pointing it out.
Quoted 9 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi &mmc1 { · line 303
Quoted 2 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-1- no-mmc;similar, I think we should now drop no-mmc unless you can say there is a defect which requires it. I have tested with Star64 and Milk-V Mars CM(/-Lite); if you can confirm with boards you have access to that 'no-mmc' can be dropped then we should just drop it. The correct reason for having this 'no- mmc' would only be if the controller has an error when receiving these commands.
I tested successfully on VF2 v1.3b and VF2 Lite without "no-sdio", "no-mmc" and "post-power-on-delay-ms". So let's drop them.
Quoted 9 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi &mmc1 { · line 307
Quoted 6 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-3- cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; - disable-wp; cap-sd-highspeed; - post-power-on-delay-ms = <200>;I would like to know the reason for this delay configuration? Is it described somewhere in technical documentation or discussion why we have this?
The source of this property can not be found now. Let's drop it.
Quoted 316 lines
Quoted 103 lines
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-0pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>;arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0
-11status = "okay";@@ -448,17 +437,6 @@ GPOEN_SYS_I2C6_DATA, }; mmc0_pins: mmc0-0 { - rst-pins { - 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>; - }; - mmc-pins { pinmux = <PINMUX(PAD_SD0_CLK, 0)>, <PINMUX(PAD_SD0_CMD, 0)>,diff --git
a/arch/riscv/boot/dts/starfive/jh7110-deepcomputing-fml13v01.dtsb/arch/riscv/boot/dts/starfive/jh7110-deepcomputing-fml13v01.dtsindexf2857d021d68..5a2a41a7e8c3100644arch/riscv/boot/dts/starfive/jh7110-deepcomputing-fml13v01.dts +49
-0@@ -11,6 +11,55 @@ / { compatible = "deepcomputing,fml13v01", "starfive,jh7110"; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>; + }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + +&mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; +}; + +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie1 { perst-gpios = <&sysgpio 21 GPIO_ACTIVE_LOW>; phys = <&pciephy1>;arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts +12
-0@@ -11,6 +11,25 @@ / { compatible = "milkv,mars", "starfive,jh7110"; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>;arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts / { · line 34
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts +7
-0+ }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + &gmac0 { assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>; assigned-clock-parents = <&aoncrg
JH7110_AONCLK_GMAC0_RMII_RTX>; @@Quoted 58 lines
arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts +30
-1-22,6 +41,36 @@ &i2c0 { status = "okay"; }; +&mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; +}; + +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie0 { status = "okay"; };arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts +12
-0@@ -14,6 +14,25 @@ aliases { }; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>;arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts aliases { · line 38
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts +7
-0+ }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + &gmac0 { starfive,tx-use-rgmii-clk; assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>; @@ -44,6 +63,36
Quoted 133 lines
@@ &i2c0 {
arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts +30
-0status = "okay"; }; +&mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; +}; + +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie1 { status = "okay"; };diff --git
a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsib/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsiindex5f14afb2c24d..d1e4206f1251100644arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi +46
-0@@ -13,6 +13,25 @@ aliases { }; }; +&cpu_opp { + opp-375000000 { + opp-hz = /bits/ 64 <375000000>; + opp-microvolt = <800000>; + }; + opp-500000000 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <800000>; + }; + opp-750000000 { + opp-hz = /bits/ 64 <750000000>; + opp-microvolt = <800000>; + }; + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <1040000>; + }; +}; + &gmac0 { status = "okay"; };@@ -38,9 +57,36 @@ &i2c0 { }; &mmc0 { + cap-mmc-highspeed; + cap-mmc-hw-reset; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&emmc_vdd>; non-removable; }; +&mmc0_pins { + rst-pins { + 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>; + }; +}; + +&mmc1 { + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>; + disable-wp; + post-power-on-delay-ms = <200>; +}; + &pcie0 { status = "okay"; };arch/riscv/boot/dts/starfive/jh7110.dtsi +0
-16@@ -200,22 +200,6 @@ core4 { cpu_opp: opp-table-0 { compatible = "operating-points-v2"; opp-shared; - opp-375000000 { - opp-hz = /bits/ 64 <375000000>; - opp-microvolt = <800000>; - }; - opp-500000000 { - opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <800000>; - }; - opp-750000000 { - opp-hz = /bits/ 64 <750000000>; - opp-microvolt = <800000>; - }; - opp-1500000000 { - opp-hz = /bits/ 64 <1500000000>; - opp-microvolt = <1040000>; - }; };
Quoted 5 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi core4 { · line 205
Quoted 1 line
arch/riscv/boot/dts/starfive/jh7110.dtsi +0
-0thermal-zones {With that,
Reviewed-by E Shattow <[email protected]>
Thanks for your review.
Best regards,
Hal
RFC 3/3 riscv: dts: starfive: Add VisionFive 2 Lite board device tree
In reply to Hal FengVisionFive 2 Lite is a mini SBC based on the StarFive JH7110S SoC.
Board features:
- JH7110S SoC
- 2/4/8 GiB LPDDR4 DRAM
- AXP15060 PMIC
- 40 pin GPIO header
- 1x USB 3.0 host port
- 3x USB 2.0 host port
- 1x M.2 M-Key (size: 2242)
- 1x MicroSD slot (optional non-removable eMMC)
- 1x QSPI Flash
- 1x I2C EEPROM
- 1x 1Gbps Ethernet port
- SDIO-based Wi-Fi & UART-based Bluetooth
- 1x HDMI port
- 1x 2-lane DSI
- 1x 2-lane CSI
--- arch/riscv/boot/dts/starfive/Makefile | 2 + .../jh7110s-starfive-visionfive-2-lite.dts | 152 ++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts
arch/riscv/boot/dts/starfive/Makefile +2 -0
@@ -13,3 +13,5 @@ dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-mars.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-pine64-star64.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.2a.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.dtb + +dtb-$(CONFIG_ARCH_STARFIVE) += jh7110s-starfive-visionfive-2-lite.dtb
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +152 -0
152 lines not on this page · raw message
Signature · 1 line
2.43.2
Re: [RFC 3/3] riscv: dts: starfive: Add VisionFive 2 Lite board device tree
Quoted 6 lines · Hal Feng
[...]
+++b/arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dtsarch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +3
-0@@ -0,0 +1,152 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2025 StarFive Technology Co., Ltd.
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts line 13
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +10
-0+ * Copyright (C) 2025 Hal Feng <[email protected]> + */ + +/dts-v1/; +#include "jh7110-common.dtsi" + +/ { + model = "StarFive VisionFive 2 Lite"; + compatible = "starfive,visionfive-2-lite", "starfive,jh7110s"; +};
Might need to add starfive,jh7110s to:
drivers/cpufreq/cpufreq-dt-platdev.c
So that it can use the opp stuff here:
Quoted 20 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +20
-0+ +&cpu_opp { + opp-312500000 { + opp-hz = /bits/ 64 <312500000>; + opp-microvolt = <800000>; + }; + opp-417000000 { + opp-hz = /bits/ 64 <417000000>; + opp-microvolt = <800000>; + }; + opp-625000000 { + opp-hz = /bits/ 64 <625000000>; + opp-microvolt = <800000>; + }; + opp-1250000000 { + opp-hz = /bits/ 64 <1250000000>; + opp-microvolt = <1000000>; + }; +}; +> [...]
RE: [RFC 3/3] riscv: dts: starfive: Add VisionFive 2 Lite board device tree
Quoted 20 lines · Vivian Wang
Quoted 5 lines · Hal Feng
[...]
+++ b/arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. +++ dtsarch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +1
-0@@ -0,0 +1,152 @@ +// SPDX-License-Identifier: GPL-2.0 OR MITarch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts line 11
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +10
-0+/* + * Copyright (C) 2025 StarFive Technology Co., Ltd. + * Copyright (C) 2025 Hal Feng <[email protected]> */ + +/dts-v1/; +#include "jh7110-common.dtsi" + +/ { + model = "StarFive VisionFive 2 Lite"; + compatible = "starfive,visionfive-2-lite", "starfive,jh7110s"; };Might need to add starfive,jh7110s to:
Quoted 3 lines
drivers/cpufreq/cpufreq-dt-platdev.cSo that it can use the opp stuff here:
Good catch. Thanks for your review.
Best regards,
Hal
Quoted 21 lines
Quoted 21 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +20
-0+ +&cpu_opp { + opp-312500000 { + opp-hz = /bits/ 64 <312500000>; + opp-microvolt = <800000>; + }; + opp-417000000 { + opp-hz = /bits/ 64 <417000000>; + opp-microvolt = <800000>; + }; + opp-625000000 { + opp-hz = /bits/ 64 <625000000>; + opp-microvolt = <800000>; + }; + opp-1250000000 { + opp-hz = /bits/ 64 <1250000000>; + opp-microvolt = <1000000>; + }; +}; +> [...]
Re: [RFC 3/3] riscv: dts: starfive: Add VisionFive 2 Lite board device tree
In reply to Hal FengQuoted 117 lines · Hal Feng
VisionFive 2 Lite is a mini SBC based on the StarFive JH7110S SoC.
Board features:
- JH7110S SoC
- 2/4/8 GiB LPDDR4 DRAM
- AXP15060 PMIC
- 40 pin GPIO header
- 1x USB 3.0 host port
- 3x USB 2.0 host port
- 1x M.2 M-Key (size: 2242)
- 1x MicroSD slot (optional non-removable eMMC)
- 1x QSPI Flash
- 1x I2C EEPROM
- 1x 1Gbps Ethernet port
- SDIO-based Wi-Fi & UART-based Bluetooth
- 1x HDMI port
- 1x 2-lane DSI
- 1x 2-lane CSISigned-off-by Hal Feng <[email protected]>--- arch/riscv/boot/dts/starfive/Makefile | 2 + .../jh7110s-starfive-visionfive-2-lite.dts | 152 ++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dtsarch/riscv/boot/dts/starfive/Makefile +2
-0@@ -13,3 +13,5 @@ dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-mars.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-pine64-star64.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.2a.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.dtb + +dtb-$(CONFIG_ARCH_STARFIVE) += jh7110s-starfive-visionfive-2-lite.dtbarch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +75
-0@@ -0,0 +1,152 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2025 StarFive Technology Co., Ltd. + * Copyright (C) 2025 Hal Feng <[email protected]> + */ + +/dts-v1/; +#include "jh7110-common.dtsi" + +/ { + model = "StarFive VisionFive 2 Lite"; + compatible = "starfive,visionfive-2-lite", "starfive,jh7110s"; +}; + +&cpu_opp { + opp-312500000 { + opp-hz = /bits/ 64 <312500000>; + opp-microvolt = <800000>; + }; + opp-417000000 { + opp-hz = /bits/ 64 <417000000>; + opp-microvolt = <800000>; + }; + opp-625000000 { + opp-hz = /bits/ 64 <625000000>; + opp-microvolt = <800000>; + }; + opp-1250000000 { + opp-hz = /bits/ 64 <1250000000>; + opp-microvolt = <1000000>; + }; +}; + +&gmac0 { + starfive,tx-use-rgmii-clk; + assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>; + assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>; + status = "okay"; +}; + +&i2c0 { + status = "okay"; +}; + +&mmc0 { + bus-width = <4>; + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_HIGH>; + disable-wp; + cap-sd-highspeed; +}; + +&mmc1 { + max-frequency = <50000000>; + keep-power-in-suspend; + non-removable; +}; + +&pcie1 { + enable-gpios = <&sysgpio 27 GPIO_ACTIVE_HIGH>; + status = "okay"; +}; + +&phy0 { + motorcomm,tx-clk-adj-enabled; + motorcomm,tx-clk-100-inverted; + motorcomm,tx-clk-1000-inverted; + motorcomm,rx-clk-drv-microamp = <3970>; + motorcomm,rx-data-drv-microamp = <2910>; + rx-internal-delay-ps = <1500>; + tx-internal-delay-ps = <1500>; +}; + +&pwm {
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts line 85
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +10
-0+ status = "okay"; +}; + +&spi0 { + status = "okay"; +}; + +&syscrg { + assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <1250000000>; +};
Circling back to a topic where I don't understand CPU clocks in hardware design, but I have questions, I would want to see 8 divisions instead of 4 divisions (for both JH7110S and for JH7110). Similar for JH7110S here as:
&syscrg {
assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <2500000000>;
};and then in above &cpu_opp as:
&cpu_opp {
opp-312500000 {
opp-hz = /bits/ 64 <312500000>;
opp-microvolt = <800000>;
};
opp-357000000 {
opp-hz = /bits/ 64 <357000000>;
opp-microvolt = <800000>;
};
opp-417000000 {
opp-hz = /bits/ 64 <417000000>;
opp-microvolt = <800000>;
};
opp-500000000 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <800000>;
};
opp-625000000 {
opp-hz = /bits/ 64 <625000000>;
opp-microvolt = <800000>;
};
opp-833000000 {
opp-hz = /bits/ 64 <833000000>;
opp-microvolt = <800000>;
};
opp-1250000000 {
opp-hz = /bits/ 64 <1250000000>;
opp-microvolt = <1000000>;
};
/* avoid division=1 2.5GHz omitted here, not supported by CPU */
};What prevents this functionality I am asking about? Specifically on JH7110 the promotional block diagrams show 3.0GHz maximum (? I think? not sure but what else could this be?) so if that is true why do we not divide down from that, avoiding divisions that are problematic?
-E
Quoted 67 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dts new file +67
-0+ +&sysgpio { + uart1_pins: uart1-0 { + tx-pins { + pinmux = <GPIOMUX(22, GPOUT_SYS_UART1_TX, + GPOEN_ENABLE, + GPI_NONE)>; + bias-disable; + drive-strength = <12>; + input-disable; + input-schmitt-disable; + slew-rate = <0>; + }; + + rx-pins { + pinmux = <GPIOMUX(23, GPOUT_LOW, + GPOEN_DISABLE, + GPI_SYS_UART1_RX)>; + bias-pull-up; + drive-strength = <2>; + input-enable; + input-schmitt-enable; + slew-rate = <0>; + }; + + cts-pins { + pinmux = <GPIOMUX(24, GPOUT_LOW, + GPOEN_DISABLE, + GPI_SYS_UART1_CTS)>; + input-enable; + }; + + rts-pins { + pinmux = <GPIOMUX(25, GPOUT_SYS_UART1_RTS, + GPOEN_ENABLE, + GPI_NONE)>; + input-enable; + }; + }; + + usb0_pins: usb0-0 { + power-pins { + pinmux = <GPIOMUX(26, GPOUT_HIGH, + GPOEN_ENABLE, + GPI_NONE)>; + input-disable; + }; + }; +}; + +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>; + status = "okay"; +}; + +&usb0 { + dr_mode = "host"; + pinctrl-names = "default"; + pinctrl-0 = <&usb0_pins>; + status = "okay"; +}; + +&usb_cdns3 { + phys = <&usbphy0>, <&pciephy0>; + phy-names = "cdns3,usb2-phy", "cdns3,usb3-phy"; +};
RE: [RFC 3/3] riscv: dts: starfive: Add VisionFive 2 Lite board device tree
Quoted 177 lines · E Shattow
arch/riscv/boot/dts/starfive/Makefile dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-
Quoted 33 lines · Hal Feng
VisionFive 2 Lite is a mini SBC based on the StarFive JH7110S SoC.
Board features:
- JH7110S SoC
- 2/4/8 GiB LPDDR4 DRAM
- AXP15060 PMIC
- 40 pin GPIO header
- 1x USB 3.0 host port
- 3x USB 2.0 host port
- 1x M.2 M-Key (size: 2242)
- 1x MicroSD slot (optional non-removable eMMC)
- 1x QSPI Flash
- 1x I2C EEPROM
- 1x 1Gbps Ethernet port
- SDIO-based Wi-Fi & UART-based Bluetooth
- 1x HDMI port
- 1x 2-lane DSI
- 1x 2-lane CSISigned-off-by Hal Feng <[email protected]>--- arch/riscv/boot/dts/starfive/Makefile | 2 + .../jh7110s-starfive-visionfive-2-lite.dts | 152 ++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dtsarch/riscv/boot/dts/starfive/Makefile +0
-0@@ -13,3 +13,5 @@ dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-mars.dtb
Quoted 39 lines
arch/riscv/boot/dts/starfive/Makefile +2
-0dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-pine64-star64.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.2a.dtb dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.dtb + +dtb-$(CONFIG_ARCH_STARFIVE) += jh7110s-starfive-visionfive-2-lite.dtbdiff --git
a/arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dtsb/arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite.dtsnew file mode 100644
index 000000000000..a0cb9912eb80arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. new file +26
-0+++ dts@@ -0,0 +1,152 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2025 StarFive Technology Co., Ltd. + * Copyright (C) 2025 Hal Feng <[email protected]> */ + +/dts-v1/; +#include "jh7110-common.dtsi" + +/ { + model = "StarFive VisionFive 2 Lite"; + compatible = "starfive,visionfive-2-lite", "starfive,jh7110s"; }; + +&cpu_opp { + opp-312500000 { + opp-hz = /bits/ 64 <312500000>; + opp-microvolt = <800000>; + }; + opp-417000000 { + opp-hz = /bits/ 64 <417000000>; + opp-microvolt = <800000>; + }; + opp-625000000 { + opp-hz = /bits/ 64 <625000000>; + opp-microvolt = <800000>; + };arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. line 35
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. new file +10
-0+ opp-1250000000 { + opp-hz = /bits/ 64 <1250000000>; + opp-microvolt = <1000000>; + }; +}; + +&gmac0 { + starfive,tx-use-rgmii-clk; + assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>; + assigned-clock-parents = <&aoncrg
JH7110_AONCLK_GMAC0_RMII_RTX>;Quoted 38 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. new file +38
-0+ status = "okay"; +}; + +&i2c0 { + status = "okay"; +}; + +&mmc0 { + bus-width = <4>; + no-sdio; + no-mmc; + cd-gpios = <&sysgpio 41 GPIO_ACTIVE_HIGH>; + disable-wp; + cap-sd-highspeed; +}; + +&mmc1 { + max-frequency = <50000000>; + keep-power-in-suspend; + non-removable; +}; + +&pcie1 { + enable-gpios = <&sysgpio 27 GPIO_ACTIVE_HIGH>; + status = "okay"; +}; + +&phy0 { + motorcomm,tx-clk-adj-enabled; + motorcomm,tx-clk-100-inverted; + motorcomm,tx-clk-1000-inverted; + motorcomm,rx-clk-drv-microamp = <3970>; + motorcomm,rx-data-drv-microamp = <2910>; + rx-internal-delay-ps = <1500>; + tx-internal-delay-ps = <1500>; +}; + +&pwm {arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. line 83
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. new file +10
-0+ status = "okay"; +}; + +&spi0 { + status = "okay"; +}; + +&syscrg { + assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, +<1250000000>; };Circling back to a topic where I don't understand CPU clocks in hardware design, but I have questions, I would want to see 8 divisions instead of 4 divisions (for both JH7110S and for JH7110). Similar for JH7110S here as:
&syscrg { assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>,<2500000000>; };
and then in above
&cpu_oppas:&cpu_opp { opp-312500000 { opp-hz = /bits/ 64 <312500000>; opp-microvolt = <800000>; }; opp-357000000 { opp-hz = /bits/ 64 <357000000>; opp-microvolt = <800000>; }; opp-417000000 { opp-hz = /bits/ 64 <417000000>; opp-microvolt = <800000>; }; opp-500000000 { opp-hz = /bits/ 64 <500000000>; opp-microvolt = <800000>; }; opp-625000000 { opp-hz = /bits/ 64 <625000000>; opp-microvolt = <800000>; }; opp-833000000 { opp-hz = /bits/ 64 <833000000>; opp-microvolt = <800000>; }; opp-1250000000 { opp-hz = /bits/ 64 <1250000000>; opp-microvolt = <1000000>; }; /* avoid division=1 2.5GHz omitted here, not supported by CPU */ };
Quoted 4 lines
What prevents this functionality I am asking about? Specifically on JH7110 the promotional block diagrams show 3.0GHz maximum (? I think? not sure but what else could this be?) so if that is true why do we not divide down from that, avoiding divisions that are problematic?
It is a good idea and I tested your code successfully on VF2 Lite.
But we have not done stress tests for this and I am not sure whether it will break the chip stability. Anyway, it is a good suggestion and more tests should be run later.
Best regards,
Hal
Quoted 58 lines
Quoted 58 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. new file +58
-0+ +&sysgpio { + uart1_pins: uart1-0 { + tx-pins { + pinmux = <GPIOMUX(22, GPOUT_SYS_UART1_TX, + GPOEN_ENABLE, + GPI_NONE)>; + bias-disable; + drive-strength = <12>; + input-disable; + input-schmitt-disable; + slew-rate = <0>; + }; + + rx-pins { + pinmux = <GPIOMUX(23, GPOUT_LOW, + GPOEN_DISABLE, + GPI_SYS_UART1_RX)>; + bias-pull-up; + drive-strength = <2>; + input-enable; + input-schmitt-enable; + slew-rate = <0>; + }; + + cts-pins { + pinmux = <GPIOMUX(24, GPOUT_LOW, + GPOEN_DISABLE, + GPI_SYS_UART1_CTS)>; + input-enable; + }; + + rts-pins { + pinmux = <GPIOMUX(25, GPOUT_SYS_UART1_RTS, + GPOEN_ENABLE, + GPI_NONE)>; + input-enable; + }; + }; + + usb0_pins: usb0-0 { + power-pins { + pinmux = <GPIOMUX(26, GPOUT_HIGH, + GPOEN_ENABLE, + GPI_NONE)>; + input-disable; + }; + }; +}; + +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>; + status = "okay"; +}; + +&usb0 { + dr_mode = "host";
Quoted 8 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. line 149
Quoted 8 lines
arch/riscv/boot/dts/starfive/jh7110s-starfive-visionfive-2-lite. new file +8
-0+ pinctrl-names = "default"; + pinctrl-0 = <&usb0_pins>; + status = "okay"; +}; + +&usb_cdns3 { + phys = <&usbphy0>, <&pciephy0>; + phy-names = "cdns3,usb2-phy", "cdns3,usb3-phy"; };
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv