linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes
@ 2025-01-02 19:45 E Shattow
  2025-01-02 19:45 ` [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments E Shattow
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: E Shattow @ 2025-01-02 19:45 UTC (permalink / raw)
  To: Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, E Shattow, linux-riscv

U-Boot boot loader has adopted using the Linux dt-rebasing tree for dts
with JH7110 VisionFive2 board target (and related JH7110 common boards).
Sync the minimum changes from jh7110-common.dtsi needed for boot so these
can be dropped from U-Boot.

E Shattow (5):
  riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2
    cycles max 100MHz
  riscv: dts: starfive: jh7110-common: assign 24MHz clock-frequency to
    uart0
  riscv: dts: starfive: jh7110-common: add eeprom node to i2c5
  riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed by
    boot loader

 .../boot/dts/starfive/jh7110-common.dtsi      | 29 +++++++++++++++----
 1 file changed, 24 insertions(+), 5 deletions(-)


base-commit: 708d55db3edbe2ccf88d94b5f2e2b404bc0ba37c
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-02 19:45 [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes E Shattow
@ 2025-01-02 19:45 ` E Shattow
  2025-01-04 18:33   ` Conor Dooley
  2025-01-02 19:45 ` [PATCH v1 2/5] riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz E Shattow
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: E Shattow @ 2025-01-02 19:45 UTC (permalink / raw)
  To: Emil Renner Berthing, Conor Dooley, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, E Shattow, linux-riscv, devicetree

Replace syscrg assignments of clocks, clock parents, and rates, for
compatibility with downstream boot loader SPL secondary program
loader.

Signed-off-by: E Shattow <e@freeshell.de>
---
 arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
index 48fb5091b817..55c6743100a7 100644
--- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
+++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
@@ -359,9 +359,15 @@ spi_dev0: spi@0 {
 };
 
 &syscrg {
-	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
-			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
-	assigned-clock-rates = <500000000>, <1500000000>;
+	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
+			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
+			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
+			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
+	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
+				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
+				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
+				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
+	assigned-clock-rates = <0>, <0>, <0>, <0>;
 };
 
 &sysgpio {
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 2/5] riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz
  2025-01-02 19:45 [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes E Shattow
  2025-01-02 19:45 ` [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments E Shattow
@ 2025-01-02 19:45 ` E Shattow
  2025-01-14  7:27   ` Hal Feng
  2025-01-02 19:45 ` [PATCH v1 3/5] riscv: dts: starfive: jh7110-common: assign 24MHz clock-frequency to uart0 E Shattow
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: E Shattow @ 2025-01-02 19:45 UTC (permalink / raw)
  To: Conor Dooley, Emil Renner Berthing, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, E Shattow, linux-riscv, devicetree

Sync qspi flash setting to read-delay=2 and spi-max-frequency 100MHz for
better compatibility with operating system and downstream boot loader SPL
secondary program loader.

Signed-off-by: E Shattow <e@freeshell.de>
---
 arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
index 55c6743100a7..651f9a602226 100644
--- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
+++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
@@ -317,8 +317,8 @@ &qspi {
 	nor_flash: flash@0 {
 		compatible = "jedec,spi-nor";
 		reg = <0>;
-		cdns,read-delay = <5>;
-		spi-max-frequency = <12000000>;
+		cdns,read-delay = <2>;
+		spi-max-frequency = <100000000>;
 		cdns,tshsl-ns = <1>;
 		cdns,tsd2d-ns = <1>;
 		cdns,tchsh-ns = <1>;
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 3/5] riscv: dts: starfive: jh7110-common: assign 24MHz clock-frequency to uart0
  2025-01-02 19:45 [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes E Shattow
  2025-01-02 19:45 ` [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments E Shattow
  2025-01-02 19:45 ` [PATCH v1 2/5] riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz E Shattow
@ 2025-01-02 19:45 ` E Shattow
  2025-01-02 19:45 ` [PATCH v1 4/5] riscv: dts: starfive: jh7110-common: add eeprom node to i2c5 E Shattow
  2025-01-02 19:45 ` [PATCH v1 5/5] riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed by boot loader E Shattow
  4 siblings, 0 replies; 15+ messages in thread
From: E Shattow @ 2025-01-02 19:45 UTC (permalink / raw)
  To: Conor Dooley, Emil Renner Berthing, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, E Shattow, linux-riscv, devicetree

Set uart0 clock-frequency for better compatibility with operating system
and downstream boot loader SPL secondary program loader.

Signed-off-by: E Shattow <e@freeshell.de>
---
 arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
index 651f9a602226..bf2f0c34ad4e 100644
--- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
+++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
@@ -636,6 +636,7 @@ GPOEN_DISABLE,
 };
 
 &uart0 {
+	clock-frequency = <24000000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins>;
 	status = "okay";
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 4/5] riscv: dts: starfive: jh7110-common: add eeprom node to i2c5
  2025-01-02 19:45 [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes E Shattow
                   ` (2 preceding siblings ...)
  2025-01-02 19:45 ` [PATCH v1 3/5] riscv: dts: starfive: jh7110-common: assign 24MHz clock-frequency to uart0 E Shattow
@ 2025-01-02 19:45 ` E Shattow
  2025-01-14  8:28   ` Hal Feng
  2025-01-02 19:45 ` [PATCH v1 5/5] riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed by boot loader E Shattow
  4 siblings, 1 reply; 15+ messages in thread
From: E Shattow @ 2025-01-02 19:45 UTC (permalink / raw)
  To: Emil Renner Berthing, Conor Dooley, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, E Shattow, linux-riscv, devicetree

StarFive VisionFive2 and similar JH7110 boards have an eeprom compatible
with Atmel 24c04. Add the node so this may be used with the at24 driver.

Signed-off-by: E Shattow <e@freeshell.de>
---
 arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
index bf2f0c34ad4e..ad5cb85ebc59 100644
--- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
+++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
@@ -245,6 +245,12 @@ emmc_vdd: aldo4 {
 			};
 		};
 	};
+
+	eeprom: eeprom@50 {
+		compatible = "atmel,24c04";
+		reg = <0x50>;
+		pagesize = <16>;
+	};
 };
 
 &i2c6 {
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 5/5] riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed by boot loader
  2025-01-02 19:45 [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes E Shattow
                   ` (3 preceding siblings ...)
  2025-01-02 19:45 ` [PATCH v1 4/5] riscv: dts: starfive: jh7110-common: add eeprom node to i2c5 E Shattow
@ 2025-01-02 19:45 ` E Shattow
  4 siblings, 0 replies; 15+ messages in thread
From: E Shattow @ 2025-01-02 19:45 UTC (permalink / raw)
  To: Emil Renner Berthing, Conor Dooley, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, E Shattow, linux-riscv, devicetree

  Add bootph-pre-ram hinting to jh7110-common.dtsi:
  - i2c5_pins and i2c-pins subnode for connection to eeprom
  - eeprom node
  - qspi flash configuration subnode
  - memory node
  - uart0 for serial console

  With this the U-Boot SPL secondary program loader may drop such
  overrides when using dt-rebasing with JH7110 OF_UPSTREAM board targets.

Signed-off-by: E Shattow <e@freeshell.de>
---
 arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
index ad5cb85ebc59..99de0750d049 100644
--- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
+++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
@@ -28,6 +28,7 @@ chosen {
 	memory@40000000 {
 		device_type = "memory";
 		reg = <0x0 0x40000000 0x1 0x0>;
+		bootph-pre-ram;
 	};
 
 	gpio-restart {
@@ -247,6 +248,7 @@ emmc_vdd: aldo4 {
 	};
 
 	eeprom: eeprom@50 {
+		bootph-pre-ram;
 		compatible = "atmel,24c04";
 		reg = <0x50>;
 		pagesize = <16>;
@@ -323,6 +325,7 @@ &qspi {
 	nor_flash: flash@0 {
 		compatible = "jedec,spi-nor";
 		reg = <0>;
+		bootph-pre-ram;
 		cdns,read-delay = <2>;
 		spi-max-frequency = <100000000>;
 		cdns,tshsl-ns = <1>;
@@ -406,6 +409,7 @@ GPOEN_SYS_I2C2_DATA,
 	};
 
 	i2c5_pins: i2c5-0 {
+		bootph-pre-ram;
 		i2c-pins {
 			pinmux = <GPIOMUX(19, GPOUT_LOW,
 					      GPOEN_SYS_I2C5_CLK,
@@ -414,6 +418,7 @@ GPI_SYS_I2C5_CLK)>,
 					      GPOEN_SYS_I2C5_DATA,
 					      GPI_SYS_I2C5_DATA)>;
 			bias-disable; /* external pull-up */
+			bootph-pre-ram;
 			input-enable;
 			input-schmitt-enable;
 		};
@@ -642,6 +647,7 @@ GPOEN_DISABLE,
 };
 
 &uart0 {
+	bootph-pre-ram;
 	clock-frequency = <24000000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins>;
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-02 19:45 ` [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments E Shattow
@ 2025-01-04 18:33   ` Conor Dooley
  2025-01-04 21:04     ` E Shattow
  0 siblings, 1 reply; 15+ messages in thread
From: Conor Dooley @ 2025-01-04 18:33 UTC (permalink / raw)
  To: E Shattow
  Cc: Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-kernel,
	linux-riscv, devicetree


[-- Attachment #1.1: Type: text/plain, Size: 1440 bytes --]

On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
> Replace syscrg assignments of clocks, clock parents, and rates, for
> compatibility with downstream boot loader SPL secondary program
> loader.
> 
> Signed-off-by: E Shattow <e@freeshell.de>
> ---
>  arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> index 48fb5091b817..55c6743100a7 100644
> --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
>  };
>  
>  &syscrg {
> -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
> -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> -	assigned-clock-rates = <500000000>, <1500000000>;
> +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
> +	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
> +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> +				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
> +	assigned-clock-rates = <0>, <0>, <0>, <0>;

Why is assigned rates here 0s, rather than the property just removed?

>  };
>  
>  &sysgpio {
> -- 
> 2.45.2
> 

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-04 18:33   ` Conor Dooley
@ 2025-01-04 21:04     ` E Shattow
  2025-01-06 20:08       ` Conor Dooley
  0 siblings, 1 reply; 15+ messages in thread
From: E Shattow @ 2025-01-04 21:04 UTC (permalink / raw)
  To: Conor Dooley
  Cc: Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-kernel,
	linux-riscv, devicetree, Minda Chen, Hal Feng

Hi, Conor  (added CC: Minda Chen, Hal Feng)

On 1/4/25 10:33, Conor Dooley wrote:
> On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
>> Replace syscrg assignments of clocks, clock parents, and rates, for
>> compatibility with downstream boot loader SPL secondary program
>> loader.
>>
>> Signed-off-by: E Shattow <e@freeshell.de>
>> ---
>>   arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
>>   1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>> index 48fb5091b817..55c6743100a7 100644
>> --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>> +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>> @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
>>   };
>>   
>>   &syscrg {
>> -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
>> -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
>> -	assigned-clock-rates = <500000000>, <1500000000>;
>> +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
>> +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
>> +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
>> +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
>> +	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
>> +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
>> +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
>> +				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
>> +	assigned-clock-rates = <0>, <0>, <0>, <0>;
> 
> Why is assigned rates here 0s, rather than the property just removed?
> 
>>   };
>>   
>>   &sysgpio {
>> -- 
>> 2.45.2
>>

Assigned rates all zeroes is how it is in U-Boot. Removing the 
assigned-clock-rates property as suggested does work in U-Boot and Linux 
both.

For context, U-Boot fails when replacing assigned-clocks to 
JH7110_SYSCLK_CPU_CORE (500MHz) and JH7110_PLLCLK_PLL0_OUT (1500MHz) 
from Linux. So I tried to merge all properties together and in testing 
then U-Boot failed (or I did it wrong). However replacing the Linux 
properties with the U-Boot configuration (above) on Linux does work for 
both.

I do not know if this is correct but I can test any suggestions and 
report if they are working.

Do these changes make sense? Are there other variations I should test?

Thanks,

-E

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-04 21:04     ` E Shattow
@ 2025-01-06 20:08       ` Conor Dooley
  2025-01-15  6:33         ` Hal Feng
  0 siblings, 1 reply; 15+ messages in thread
From: Conor Dooley @ 2025-01-06 20:08 UTC (permalink / raw)
  To: E Shattow
  Cc: Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-kernel,
	linux-riscv, devicetree, Minda Chen, Hal Feng


[-- Attachment #1.1: Type: text/plain, Size: 2615 bytes --]

On Sat, Jan 04, 2025 at 01:04:30PM -0800, E Shattow wrote:
> Hi, Conor  (added CC: Minda Chen, Hal Feng)
> 
> On 1/4/25 10:33, Conor Dooley wrote:
> > On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
> > > Replace syscrg assignments of clocks, clock parents, and rates, for
> > > compatibility with downstream boot loader SPL secondary program
> > > loader.
> > > 
> > > Signed-off-by: E Shattow <e@freeshell.de>
> > > ---
> > >   arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
> > >   1 file changed, 9 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > index 48fb5091b817..55c6743100a7 100644
> > > --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
> > >   };
> > >   &syscrg {
> > > -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
> > > -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> > > -	assigned-clock-rates = <500000000>, <1500000000>;
> > > +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> > > +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> > > +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> > > +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
> > > +	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
> > > +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> > > +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> > > +				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
> > > +	assigned-clock-rates = <0>, <0>, <0>, <0>;
> > 
> > Why is assigned rates here 0s, rather than the property just removed?
> > 
> > >   };
> > >   &sysgpio {
> > > -- 
> > > 2.45.2
> > > 
> 
> Assigned rates all zeroes is how it is in U-Boot. Removing the
> assigned-clock-rates property as suggested does work in U-Boot and Linux
> both.
> 
> For context, U-Boot fails when replacing assigned-clocks to
> JH7110_SYSCLK_CPU_CORE (500MHz) and JH7110_PLLCLK_PLL0_OUT (1500MHz) from
> Linux. So I tried to merge all properties together and in testing then
> U-Boot failed (or I did it wrong). However replacing the Linux properties
> with the U-Boot configuration (above) on Linux does work for both.
> 
> I do not know if this is correct but I can test any suggestions and report
> if they are working.
> 
> Do these changes make sense? Are there other variations I should test?

I'd like the commit message to at least explain why these clocks need to
be set to zero (I assume that means disabled?). Maybe the StarFive folks
know why it is required?

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 2/5] riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz
  2025-01-02 19:45 ` [PATCH v1 2/5] riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz E Shattow
@ 2025-01-14  7:27   ` Hal Feng
  0 siblings, 0 replies; 15+ messages in thread
From: Hal Feng @ 2025-01-14  7:27 UTC (permalink / raw)
  To: E Shattow, Conor Dooley, Emil Renner Berthing, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, linux-riscv, devicetree

On 1/3/2025 3:45 AM, E Shattow wrote:
> Sync qspi flash setting to read-delay=2 and spi-max-frequency 100MHz for
> better compatibility with operating system and downstream boot loader SPL
> secondary program loader.
> 
> Signed-off-by: E Shattow <e@freeshell.de>
> ---
>  arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> index 55c6743100a7..651f9a602226 100644
> --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> @@ -317,8 +317,8 @@ &qspi {
>  	nor_flash: flash@0 {
>  		compatible = "jedec,spi-nor";
>  		reg = <0>;
> -		cdns,read-delay = <5>;
> -		spi-max-frequency = <12000000>;
> +		cdns,read-delay = <2>;
> +		spi-max-frequency = <100000000>;
>  		cdns,tshsl-ns = <1>;
>  		cdns,tsd2d-ns = <1>;
>  		cdns,tchsh-ns = <1>;

Reviewed-by: Hal Feng <hal.feng@starfivetech.com>


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 4/5] riscv: dts: starfive: jh7110-common: add eeprom node to i2c5
  2025-01-02 19:45 ` [PATCH v1 4/5] riscv: dts: starfive: jh7110-common: add eeprom node to i2c5 E Shattow
@ 2025-01-14  8:28   ` Hal Feng
  0 siblings, 0 replies; 15+ messages in thread
From: Hal Feng @ 2025-01-14  8:28 UTC (permalink / raw)
  To: E Shattow, Emil Renner Berthing, Conor Dooley, Rob Herring,
	Krzysztof Kozlowski, Paul Walmsley, Palmer Dabbelt, Albert Ou
  Cc: linux-kernel, linux-riscv, devicetree

On 1/3/2025 3:45 AM, E Shattow wrote:
> StarFive VisionFive2 and similar JH7110 boards have an eeprom compatible
> with Atmel 24c04. Add the node so this may be used with the at24 driver.
> 
> Signed-off-by: E Shattow <e@freeshell.de>
> ---
>  arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> index bf2f0c34ad4e..ad5cb85ebc59 100644
> --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> @@ -245,6 +245,12 @@ emmc_vdd: aldo4 {
>  			};
>  		};
>  	};
> +
> +	eeprom: eeprom@50 {

The label "eeprom:" can be dropped if no one use it.

> +		compatible = "atmel,24c04";
> +		reg = <0x50>;
> +		pagesize = <16>;
> +	};
>  };
>  
>  &i2c6 {

Reviewed-by: Hal Feng <hal.feng@starfivetech.com>


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-06 20:08       ` Conor Dooley
@ 2025-01-15  6:33         ` Hal Feng
  2025-01-15  9:35           ` Conor Dooley
  0 siblings, 1 reply; 15+ messages in thread
From: Hal Feng @ 2025-01-15  6:33 UTC (permalink / raw)
  To: Conor Dooley, E Shattow
  Cc: Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
	devicetree@vger.kernel.org, Minda Chen

> On 07.01.25 04:08, Conor Dooley wrote: 
> On Sat, Jan 04, 2025 at 01:04:30PM -0800, E Shattow wrote:
> > Hi, Conor  (added CC: Minda Chen, Hal Feng)
> >
> > On 1/4/25 10:33, Conor Dooley wrote:
> > > On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
> > > > Replace syscrg assignments of clocks, clock parents, and rates,
> > > > for compatibility with downstream boot loader SPL secondary
> > > > program loader.
> > > >
> > > > Signed-off-by: E Shattow <e@freeshell.de>
> > > > ---
> > > >   arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
> > > >   1 file changed, 9 insertions(+), 3 deletions(-)
> > > >
> > > > diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > index 48fb5091b817..55c6743100a7 100644
> > > > --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
> > > >   };
> > > >   &syscrg {
> > > > -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
> > > > -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> > > > -	assigned-clock-rates = <500000000>, <1500000000>;
> > > > +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> > > > +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> > > > +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> > > > +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
> > > > +	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
> > > > +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> > > > +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> > > > +				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
> > > > +	assigned-clock-rates = <0>, <0>, <0>, <0>;
> > >
> > > Why is assigned rates here 0s, rather than the property just removed?
> > >
> > > >   };
> > > >   &sysgpio {
> > > > --
> > > > 2.45.2
> > > >
> >
> > Assigned rates all zeroes is how it is in U-Boot. Removing the
> > assigned-clock-rates property as suggested does work in U-Boot and
> > Linux both.
> >
> > For context, U-Boot fails when replacing assigned-clocks to
> > JH7110_SYSCLK_CPU_CORE (500MHz) and JH7110_PLLCLK_PLL0_OUT
> (1500MHz)
> > from Linux. So I tried to merge all properties together and in testing
> > then U-Boot failed (or I did it wrong). However replacing the Linux
> > properties with the U-Boot configuration (above) on Linux does work for
> both.
> >
> > I do not know if this is correct but I can test any suggestions and
> > report if they are working.
> >
> > Do these changes make sense? Are there other variations I should test?
> 
> I'd like the commit message to at least explain why these clocks need to be
> set to zero (I assume that means disabled?). Maybe the StarFive folks know
> why it is required?

Here "assigned-clock-rates = <0>, ..." means skipping setting clock rates.
You can refer to
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/clock/clock.yaml/

Linux here setting JH7110_SYSCLK_CPU_CORE to 500MHz and JH7110_PLLCLK_PLL0_OUT
to 1500MHz are for increasing the CPU frequency to 1500MHz.

VF2 u-boot is still running at 1000MHz now. You failed to set JH7110_PLLCLK_PLL0_OUT
to 1500MHz, because CPU power supply voltage needs to be increased before running at
1500MHz.

I think a better choice now is changing Linux device tree as follows:

&syscrg {
	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
			  <&syscrg JH7110_SYSCLK_QSPI_REF>,
			  <&syscrg JH7110_SYSCLK_CPU_CORE>,
			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
	assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <1500000000>;
};

For u-boot, if there is no requirement to run u-boot at 1500MHz, just keep
&syscrg {
	assigned-clock-rates = <0>, <0>, <0>, <0>;
};
in u-boot device tree. If we need running 1500MHz in u-boot, I will send a patch
to implement it and then &syscrg{...} in u-boot device tree can be dropped.

Best regards,
Hal

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-15  6:33         ` Hal Feng
@ 2025-01-15  9:35           ` Conor Dooley
  2025-01-24 10:46             ` E Shattow
  0 siblings, 1 reply; 15+ messages in thread
From: Conor Dooley @ 2025-01-15  9:35 UTC (permalink / raw)
  To: Hal Feng
  Cc: E Shattow, Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
	devicetree@vger.kernel.org, Minda Chen


[-- Attachment #1.1: Type: text/plain, Size: 4871 bytes --]

On Wed, Jan 15, 2025 at 06:33:08AM +0000, Hal Feng wrote:
> > On 07.01.25 04:08, Conor Dooley wrote: 
> > On Sat, Jan 04, 2025 at 01:04:30PM -0800, E Shattow wrote:
> > > Hi, Conor  (added CC: Minda Chen, Hal Feng)
> > >
> > > On 1/4/25 10:33, Conor Dooley wrote:
> > > > On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
> > > > > Replace syscrg assignments of clocks, clock parents, and rates,
> > > > > for compatibility with downstream boot loader SPL secondary
> > > > > program loader.
> > > > >
> > > > > Signed-off-by: E Shattow <e@freeshell.de>
> > > > > ---
> > > > >   arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
> > > > >   1 file changed, 9 insertions(+), 3 deletions(-)
> > > > >
> > > > > diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > > b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > > index 48fb5091b817..55c6743100a7 100644
> > > > > --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > > +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> > > > > @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
> > > > >   };
> > > > >   &syscrg {
> > > > > -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
> > > > > -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> > > > > -	assigned-clock-rates = <500000000>, <1500000000>;
> > > > > +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> > > > > +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> > > > > +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> > > > > +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
> > > > > +	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
> > > > > +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> > > > > +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> > > > > +				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
> > > > > +	assigned-clock-rates = <0>, <0>, <0>, <0>;
> > > >
> > > > Why is assigned rates here 0s, rather than the property just removed?
> > > >
> > > > >   };
> > > > >   &sysgpio {
> > > > > --
> > > > > 2.45.2
> > > > >
> > >
> > > Assigned rates all zeroes is how it is in U-Boot. Removing the
> > > assigned-clock-rates property as suggested does work in U-Boot and
> > > Linux both.
> > >
> > > For context, U-Boot fails when replacing assigned-clocks to
> > > JH7110_SYSCLK_CPU_CORE (500MHz) and JH7110_PLLCLK_PLL0_OUT
> > (1500MHz)
> > > from Linux. So I tried to merge all properties together and in testing
> > > then U-Boot failed (or I did it wrong). However replacing the Linux
> > > properties with the U-Boot configuration (above) on Linux does work for
> > both.
> > >
> > > I do not know if this is correct but I can test any suggestions and
> > > report if they are working.
> > >
> > > Do these changes make sense? Are there other variations I should test?
> > 
> > I'd like the commit message to at least explain why these clocks need to be
> > set to zero (I assume that means disabled?). Maybe the StarFive folks know
> > why it is required?
> 
> Here "assigned-clock-rates = <0>, ..." means skipping setting clock rates.
> You can refer to
> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/clock/clock.yaml/

If you check the wording there, it says:
  To skip setting parent or rate of a clock its corresponding entry should be
  set to 0, or can be omitted if it is not followed by any non-zero entry.
Since all clocks are being set to 0 above, we should be in the "can be
omitted" case for the entire property, no? That would...

> Linux here setting JH7110_SYSCLK_CPU_CORE to 500MHz and JH7110_PLLCLK_PLL0_OUT
> to 1500MHz are for increasing the CPU frequency to 1500MHz.
> 
> VF2 u-boot is still running at 1000MHz now. You failed to set JH7110_PLLCLK_PLL0_OUT
> to 1500MHz, because CPU power supply voltage needs to be increased before running at
> 1500MHz.
> 
> I think a better choice now is changing Linux device tree as follows:
> 
> &syscrg {
> 	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> 			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> 			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> 			  <&syscrg JH7110_SYSCLK_QSPI_REF>,
> 			  <&syscrg JH7110_SYSCLK_CPU_CORE>,
> 			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> 	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
> 				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> 				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> 				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
> 	assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <1500000000>;
> };

...make this one a reasonable change...

> For u-boot, if there is no requirement to run u-boot at 1500MHz, just keep
> &syscrg {
> 	assigned-clock-rates = <0>, <0>, <0>, <0>;
> };

...but not this one.

> in u-boot device tree. If we need running 1500MHz in u-boot, I will send a patch
> to implement it and then &syscrg{...} in u-boot device tree can be dropped.
> 
> Best regards,
> Hal

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-15  9:35           ` Conor Dooley
@ 2025-01-24 10:46             ` E Shattow
  2025-02-07  8:17               ` Hal Feng
  0 siblings, 1 reply; 15+ messages in thread
From: E Shattow @ 2025-01-24 10:46 UTC (permalink / raw)
  To: Conor Dooley, Hal Feng
  Cc: Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
	devicetree@vger.kernel.org, Minda Chen


On 1/15/25 01:35, Conor Dooley wrote:
> On Wed, Jan 15, 2025 at 06:33:08AM +0000, Hal Feng wrote:
>>> On 07.01.25 04:08, Conor Dooley wrote:
>>> On Sat, Jan 04, 2025 at 01:04:30PM -0800, E Shattow wrote:
>>>> Hi, Conor  (added CC: Minda Chen, Hal Feng)
>>>>
>>>> On 1/4/25 10:33, Conor Dooley wrote:
>>>>> On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
>>>>>> Replace syscrg assignments of clocks, clock parents, and rates,
>>>>>> for compatibility with downstream boot loader SPL secondary
>>>>>> program loader.
>>>>>>
>>>>>> Signed-off-by: E Shattow <e@freeshell.de>
>>>>>> ---
>>>>>>    arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++---
>>>>>>    1 file changed, 9 insertions(+), 3 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>>>>>> b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>>>>>> index 48fb5091b817..55c6743100a7 100644
>>>>>> --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>>>>>> +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
>>>>>> @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
>>>>>>    };
>>>>>>    &syscrg {
>>>>>> -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
>>>>>> -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
>>>>>> -	assigned-clock-rates = <500000000>, <1500000000>;
>>>>>> +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
>>>>>> +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
>>>>>> +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
>>>>>> +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
>>>>>> +	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
>>>>>> +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
>>>>>> +				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
>>>>>> +				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
>>>>>> +	assigned-clock-rates = <0>, <0>, <0>, <0>;
>>>>>
>>>>> Why is assigned rates here 0s, rather than the property just removed?
>>>>>
>>>>>>    };
>>>>>>    &sysgpio {
>>>>>> --
>>>>>> 2.45.2
>>>>>>
>>>>
>>>> Assigned rates all zeroes is how it is in U-Boot. Removing the
>>>> assigned-clock-rates property as suggested does work in U-Boot and
>>>> Linux both.
>>>>
>>>> For context, U-Boot fails when replacing assigned-clocks to
>>>> JH7110_SYSCLK_CPU_CORE (500MHz) and JH7110_PLLCLK_PLL0_OUT
>>> (1500MHz)
>>>> from Linux. So I tried to merge all properties together and in testing
>>>> then U-Boot failed (or I did it wrong). However replacing the Linux
>>>> properties with the U-Boot configuration (above) on Linux does work for
>>> both.
>>>>
>>>> I do not know if this is correct but I can test any suggestions and
>>>> report if they are working.
>>>>
>>>> Do these changes make sense? Are there other variations I should test?
>>>
>>> I'd like the commit message to at least explain why these clocks need to be
>>> set to zero (I assume that means disabled?). Maybe the StarFive folks know
>>> why it is required?
>>
>> Here "assigned-clock-rates = <0>, ..." means skipping setting clock rates.
>> You can refer to
>> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/clock/clock.yaml/
> 
> If you check the wording there, it says:
>    To skip setting parent or rate of a clock its corresponding entry should be
>    set to 0, or can be omitted if it is not followed by any non-zero entry.
> Since all clocks are being set to 0 above, we should be in the "can be
> omitted" case for the entire property, no? That would...
> 
>> Linux here setting JH7110_SYSCLK_CPU_CORE to 500MHz and JH7110_PLLCLK_PLL0_OUT
>> to 1500MHz are for increasing the CPU frequency to 1500MHz.
>>
>> VF2 u-boot is still running at 1000MHz now. You failed to set JH7110_PLLCLK_PLL0_OUT
>> to 1500MHz, because CPU power supply voltage needs to be increased before running at
>> 1500MHz.

Conor / Hal,  how does this work:

Are these the minimum and maximum values for CPU frequency, CPU CORE and 
PLL0 OUT ?

>>
>> I think a better choice now is changing Linux device tree as follows:
>>
>> &syscrg {
>> 	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
>> 			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
>> 			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
>> 			  <&syscrg JH7110_SYSCLK_QSPI_REF>,
>> 			  <&syscrg JH7110_SYSCLK_CPU_CORE>,
>> 			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
>> 	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
>> 				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
>> 				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
>> 				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
>> 	assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <1500000000>;
>> };
> 
> ...make this one a reasonable change...
> 
>> For u-boot, if there is no requirement to run u-boot at 1500MHz, just keep
>> &syscrg {
>> 	assigned-clock-rates = <0>, <0>, <0>, <0>;
>> };
> 
> ...but not this one.
> 
>> in u-boot device tree. If we need running 1500MHz in u-boot, I will send a patch
>> to implement it and then &syscrg{...} in u-boot device tree can be dropped.
>>
>> Best regards,
>> Hal

Hal,

What voltage (and speed) has less heat output?

I think it must be configured to be *reliable first* as it is pictured 
being a developer board on a person's desk (with no extra accessory - no 
fans, heatsink, etc.) and for example doing work as of a Linux kernel 
compile with using all cores.

We should not force a configuration that will fail for the common 
situation. What voltage and clock speed is the best for continuous 
reliable operation of a JH7110 CPU with no added heatsink or fan and at 
ambient temperature?

Does CPU frequency range need to be given in devicetree? Can instead 
this be done with userspace tool or Linux subsystem at runtime?

The thermal dissipation of JH7110 CPU will be depend on the board layout 
and physical application. So, my opinion here:  I think any minimum and 
maximum CPU frequency limit that is given by manufacturer recommendation 
of safe continuous operation is okay for dts include. If some part of 
this frequency range is not reliable (from undervolt, or overheat) then 
it is a "no" from me in Linux and in U-Boot. The fact of failing to boot 
(in U-Boot) because JH7110 CPU default voltage is not high enough for 
1500MHz operation tells me this is a wrong idea or there is missing code 
in U-Boot to select a default sane clock speed and voltage.

-E

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments
  2025-01-24 10:46             ` E Shattow
@ 2025-02-07  8:17               ` Hal Feng
  0 siblings, 0 replies; 15+ messages in thread
From: Hal Feng @ 2025-02-07  8:17 UTC (permalink / raw)
  To: E Shattow, Conor Dooley
  Cc: Emil Renner Berthing, Rob Herring, Krzysztof Kozlowski,
	Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
	devicetree@vger.kernel.org, Minda Chen

> On 24.01.25 18:46, E Shattow wrote:
> On 1/15/25 01:35, Conor Dooley wrote:
> > On Wed, Jan 15, 2025 at 06:33:08AM +0000, Hal Feng wrote:
> >>> On 07.01.25 04:08, Conor Dooley wrote:
> >>> On Sat, Jan 04, 2025 at 01:04:30PM -0800, E Shattow wrote:
> >>>> Hi, Conor  (added CC: Minda Chen, Hal Feng)
> >>>>
> >>>> On 1/4/25 10:33, Conor Dooley wrote:
> >>>>> On Thu, Jan 02, 2025 at 11:45:07AM -0800, E Shattow wrote:
> >>>>>> Replace syscrg assignments of clocks, clock parents, and rates,
> >>>>>> for compatibility with downstream boot loader SPL secondary
> >>>>>> program loader.
> >>>>>>
> >>>>>> Signed-off-by: E Shattow <e@freeshell.de>
> >>>>>> ---
> >>>>>>    arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 12 +++++++++--
> -
> >>>>>>    1 file changed, 9 insertions(+), 3 deletions(-)
> >>>>>>
> >>>>>> diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> >>>>>> b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> >>>>>> index 48fb5091b817..55c6743100a7 100644
> >>>>>> --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> >>>>>> +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
> >>>>>> @@ -359,9 +359,15 @@ spi_dev0: spi@0 {
> >>>>>>    };
> >>>>>>    &syscrg {
> >>>>>> -	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
> >>>>>> -			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> >>>>>> -	assigned-clock-rates = <500000000>, <1500000000>;
> >>>>>> +	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> >>>>>> +			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> >>>>>> +			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> >>>>>> +			  <&syscrg JH7110_SYSCLK_QSPI_REF>;
> >>>>>> +	assigned-clock-parents = <&pllclk
> JH7110_PLLCLK_PLL0_OUT>,
> >>>>>> +				 <&pllclk
> JH7110_PLLCLK_PLL2_OUT>,
> >>>>>> +				 <&pllclk
> JH7110_PLLCLK_PLL2_OUT>,
> >>>>>> +				 <&syscrg
> JH7110_SYSCLK_QSPI_REF_SRC>;
> >>>>>> +	assigned-clock-rates = <0>, <0>, <0>, <0>;
> >>>>>
> >>>>> Why is assigned rates here 0s, rather than the property just removed?
> >>>>>
> >>>>>>    };
> >>>>>>    &sysgpio {
> >>>>>> --
> >>>>>> 2.45.2
> >>>>>>
> >>>>
> >>>> Assigned rates all zeroes is how it is in U-Boot. Removing the
> >>>> assigned-clock-rates property as suggested does work in U-Boot and
> >>>> Linux both.
> >>>>
> >>>> For context, U-Boot fails when replacing assigned-clocks to
> >>>> JH7110_SYSCLK_CPU_CORE (500MHz) and JH7110_PLLCLK_PLL0_OUT
> >>> (1500MHz)
> >>>> from Linux. So I tried to merge all properties together and in
> >>>> testing then U-Boot failed (or I did it wrong). However replacing
> >>>> the Linux properties with the U-Boot configuration (above) on Linux
> >>>> does work for
> >>> both.
> >>>>
> >>>> I do not know if this is correct but I can test any suggestions and
> >>>> report if they are working.
> >>>>
> >>>> Do these changes make sense? Are there other variations I should test?
> >>>
> >>> I'd like the commit message to at least explain why these clocks
> >>> need to be set to zero (I assume that means disabled?). Maybe the
> >>> StarFive folks know why it is required?
> >>
> >> Here "assigned-clock-rates = <0>, ..." means skipping setting clock rates.
> >> You can refer to
> >> https://github.com/devicetree-org/dt-
> schema/blob/main/dtschema/schema
> >> s/clock/clock.yaml/
> >
> > If you check the wording there, it says:
> >    To skip setting parent or rate of a clock its corresponding entry should be
> >    set to 0, or can be omitted if it is not followed by any non-zero entry.
> > Since all clocks are being set to 0 above, we should be in the "can be
> > omitted" case for the entire property, no? That would...
> >
> >> Linux here setting JH7110_SYSCLK_CPU_CORE to 500MHz and
> >> JH7110_PLLCLK_PLL0_OUT to 1500MHz are for increasing the CPU
> frequency to 1500MHz.
> >>
> >> VF2 u-boot is still running at 1000MHz now. You failed to set
> >> JH7110_PLLCLK_PLL0_OUT to 1500MHz, because CPU power supply
> voltage
> >> needs to be increased before running at 1500MHz.
> 
> Conor / Hal,  how does this work:
> 
> Are these the minimum and maximum values for CPU frequency, CPU CORE
> and
> PLL0 OUT ?
> 
> >>
> >> I think a better choice now is changing Linux device tree as follows:
> >>
> >> &syscrg {
> >> 	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
> >> 			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
> >> 			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
> >> 			  <&syscrg JH7110_SYSCLK_QSPI_REF>,
> >> 			  <&syscrg JH7110_SYSCLK_CPU_CORE>,
> >> 			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
> >> 	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
> >> 				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> >> 				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
> >> 				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
> >> 	assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>,
> >> <1500000000>; };
> >
> > ...make this one a reasonable change...
> >
> >> For u-boot, if there is no requirement to run u-boot at 1500MHz, just
> >> keep &syscrg {
> >> 	assigned-clock-rates = <0>, <0>, <0>, <0>; };
> >
> > ...but not this one.
> >
> >> in u-boot device tree. If we need running 1500MHz in u-boot, I will
> >> send a patch to implement it and then &syscrg{...} in u-boot device tree
> can be dropped.
> >>
> >> Best regards,
> >> Hal
> 
> Hal,
> 
> What voltage (and speed) has less heat output?
> 
> I think it must be configured to be *reliable first* as it is pictured being a
> developer board on a person's desk (with no extra accessory - no fans,
> heatsink, etc.) and for example doing work as of a Linux kernel compile with
> using all cores.
> 
> We should not force a configuration that will fail for the common situation.
> What voltage and clock speed is the best for continuous reliable operation of a
> JH7110 CPU with no added heatsink or fan and at ambient temperature?
> 
> Does CPU frequency range need to be given in devicetree? Can instead this be
> done with userspace tool or Linux subsystem at runtime?
> 
> The thermal dissipation of JH7110 CPU will be depend on the board layout and
> physical application. So, my opinion here:  I think any minimum and maximum
> CPU frequency limit that is given by manufacturer recommendation of safe
> continuous operation is okay for dts include. If some part of this frequency
> range is not reliable (from undervolt, or overheat) then it is a "no" from me in
> Linux and in U-Boot. The fact of failing to boot (in U-Boot) because JH7110
> CPU default voltage is not high enough for 1500MHz operation tells me this is
> a wrong idea or there is missing code in U-Boot to select a default sane clock
> speed and voltage.

CPU_FREQ is enabled in Linux, so the CPU frequency and power supply can be adjusted
automatically. JH7110 CPUs frequency can adjusted to 375 / 500 / 750 / 1500 MHz, and
the CPU power supply should be adjusted to 0.8 / 0.8 / 0.8 / 1.04 V respectively.
Please see node opp-table-0 in arch/riscv/boot/dts/starfive/jh7110.dtsi.

Please don't drop clock rate assignments, it will cause CPUs can not run at
375 / 500 / 750 / 1500MHz but 250/333/500/1000MHz. You can modify as I suggested above.

For U-Boot, CPU_FREQ is not enabled and CPUs are running at 1000MHz. CPU power
supply is 0.9V which is the default value. If we need to run U-Boot at 1500MHz, the
CPU power supply should be changed to 1.04V first.

So I suggest

Linux:
&syscrg {
	assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
			  <&syscrg JH7110_SYSCLK_BUS_ROOT>,
			  <&syscrg JH7110_SYSCLK_PERH_ROOT>,
			  <&syscrg JH7110_SYSCLK_QSPI_REF>,
			  <&syscrg JH7110_SYSCLK_CPU_CORE>,
			  <&pllclk JH7110_PLLCLK_PLL0_OUT>;
	assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
				 <&pllclk JH7110_PLLCLK_PLL2_OUT>,
				 <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
	assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <1500000000>;
};

U-Boot:
&syscrg {
	assigned-clock-rates = <0>, <0>, <0>, <0>;
};

Best regards,
Hal
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2025-02-07  8:17 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-02 19:45 [PATCH v1 0/5] riscv: dts: starfive: jh7110-common: Sync downstream U-Boot changes E Shattow
2025-01-02 19:45 ` [PATCH v1 1/5] riscv: dts: starfive: jh7110-common: replace syscrg clock assignments E Shattow
2025-01-04 18:33   ` Conor Dooley
2025-01-04 21:04     ` E Shattow
2025-01-06 20:08       ` Conor Dooley
2025-01-15  6:33         ` Hal Feng
2025-01-15  9:35           ` Conor Dooley
2025-01-24 10:46             ` E Shattow
2025-02-07  8:17               ` Hal Feng
2025-01-02 19:45 ` [PATCH v1 2/5] riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz E Shattow
2025-01-14  7:27   ` Hal Feng
2025-01-02 19:45 ` [PATCH v1 3/5] riscv: dts: starfive: jh7110-common: assign 24MHz clock-frequency to uart0 E Shattow
2025-01-02 19:45 ` [PATCH v1 4/5] riscv: dts: starfive: jh7110-common: add eeprom node to i2c5 E Shattow
2025-01-14  8:28   ` Hal Feng
2025-01-02 19:45 ` [PATCH v1 5/5] riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed by boot loader E Shattow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).