On Tue, Dec 3, 2024 at 10:52 PM Hal Feng <hal.f...@starfivetech.com> wrote: > > > On 04.12.24 03:16, E Shattow wrote: > > On Mon, Dec 2, 2024 at 7:06 PM Hal Feng <hal.f...@starfivetech.com> > > wrote: > > > > > > To support JH7110 based boards besides v1.3B, add a common dtsi and > > > add common code to it. > > > > > > Tested-by: Anand Moon <linux.am...@gmail.com> > > > Tested-by: E Shattow <luc...@gmail.com> > > > Reviewed-by: E Shattow <luc...@gmail.com> > > > Signed-off-by: Hal Feng <hal.f...@starfivetech.com> > > > --- > > > arch/riscv/dts/jh7110-common-u-boot.dtsi | 142 > > ++++++++++++++++++ > > > ...10-starfive-visionfive-2-v1.3b-u-boot.dtsi | 138 +---------------- > > > 2 files changed, 143 insertions(+), 137 deletions(-) create mode > > > 100644 arch/riscv/dts/jh7110-common-u-boot.dtsi > > > > > > diff --git a/arch/riscv/dts/jh7110-common-u-boot.dtsi > > > b/arch/riscv/dts/jh7110-common-u-boot.dtsi > > > new file mode 100644 > > > index 0000000000..7953459e67 > > > --- /dev/null > > > +++ b/arch/riscv/dts/jh7110-common-u-boot.dtsi > > > @@ -0,0 +1,142 @@ > > > +// SPDX-License-Identifier: GPL-2.0 OR MIT > > > +/* > > > + * Copyright (C) 2023 StarFive Technology Co., Ltd. > > > + */ > > > + > > > +#include "binman.dtsi" > > > +#include "jh7110-u-boot.dtsi" > > > +/ { > > > + aliases { > > > + spi0 = &qspi; > > > + }; > > > + > > > + chosen { > > > + bootph-pre-ram; > > > + }; > > > + > > > + firmware { > > > + spi0 = &qspi; > > > + bootph-pre-ram; > > > + }; > > > + > > > + config { > > > + bootph-pre-ram; > > > + u-boot,spl-payload-offset = <0x100000>; > > > + }; > > > + > > > + memory@40000000 { > > > + bootph-pre-ram; > > > + }; > > > +}; > > > + > > > +&uart0 { > > > + bootph-pre-ram; > > > + reg-offset = <0>; > > > + current-speed = <115200>; > > > + clock-frequency = <24000000>; > > > +}; > > > + > > > +&mmc0 { > > > + bootph-pre-ram; > > > +}; > > > + > > > +&mmc1 { > > > + bootph-pre-ram; > > > +}; > > > + > > > +&qspi { > > > + bootph-pre-ram; > > > > > + spi-max-frequency = <250000000>; > > > > Drop this line spi-max-frequency 250Mhz. The driver expects spi-max- > > frequency in any sub-node, and not here? > > Yes, this property is used in sub-node, we can drop this later. > > > > > > + > > > + flash@0 { > > > + bootph-pre-ram; > > > > > + /delete-property/ cdns,read-delay; > > > > Drop this line /delete-property/ because it is a problem for the parser if > > we > > need to re-define 'cdns,read-delay' later in dts files downstream of jh7110- > > common-u-boot.dtsi > > > > If you want drivers/spi/cadence_qspi.c:spi_calibration() to do this work > > then it > > needs to be the same upstream. In my testing on 4GB > > Star64 the calibration (via /delete-property/ cdns,read-delay) method with > > spi-max-frequency less than exactly 49.8MHz results in a failure to write > > SPI- > > NOR correctly. When spi-max-frequency is approximately 25MHz up to > > 49.799999MHz and written with a known good tool then the boot may be > > successful but "Main section boot fail,use backup section" > > or other errors on boot after using that unstable configuration of U-Boot to > > write U-Boot image to the SPI-NOR. No problems writing and boot during > > testing with spi-max-frequency 49.8MHz up to 100MHz (not tested above > > 100MHz). > > > > The upstream dts has spi-max-frequency 12MHz which is not successful with > > any of the read-delay values I tested: 0 1 2 3 4 5 > > > > > + spi-max-frequency = <100000000>; > > > > Why 12MHz upstream and 100MHz here? Something is wrong but I do not > > know is it U-Boot or Linux? > > > > Success: > > + /delete-property/ cdns,read-delay; > > + spi-max-frequency = <100000000>; > > > > Success: > > + cdns,read-delay = <2>; > > - /delete-property/ cdns,read-delay; > > + spi-max-frequency = <100000000>; > > > > Failure: > > + cdns,read-delay = <2>; > > + spi-max-frequency = <50000000>; > > > > The actual fix is going to need testing Linux and U-Boot on all the boards > > I do > > not have access to. > > > > For the moment we can: > > - /delete-property/ cdns,read-delay; > > + cdns,read-delay = <2>; > > + spi-max-frequency = <100000000>; > > > > or do nothing (but yes please drop that 250Mhz line it is non-op I think). > > > > What do you think? Or else we discuss here and follow with patches in > > future > > to fix the mess. I really do not want any /delete-property/ to be in dtsi > > but I > > don't know why it is so different between U-Boot and Linux and cannot > > personally test all the possible boards to verify a change. > > I don't know the cause of this problem either. But all properties added in > this > patch already existed in U-Boot DT before. I tried my best to keep the U-Boot > DT the same as the one before OF_UPSTREAM applied. > > I tested and found that the qspi flash can work successfully in Linux and > U-Boot > with the settings you suggested above. > > cdns,read-delay = <2>; > spi-max-frequency = <100000000>;
Good report on testing Linux and U-Boot, thank you Hal. > > If /delete-property/ is really not suitable to exist in this dtsi, we can > modify as > above in U-Boot and upstream this change to Liunx. After this change is > accepted > by Linux, I will drop these two properties in U-Boot. > > Best regards, > Hal Yes let's do that. So long as it all works on VF2 1.2a, VF 1.3b, Mars, and Star64. I have tested Star64. You have tested I guess VF2 1.3b? And if we miss some, it's okay even if there is a problem for some board we did not test, the workaround is easy in u-boot specific dtsi per-board because we have avoided '/delete-property/' in the common dtsi. -E