[PATCH u-boot-marvell] arm: a37xx: espressobin: Fix non-working SPI

Stefan Roese sr at denx.de
Wed Mar 23 17:13:21 CET 2022


Hi Pali,

On 3/23/22 14:18, Pali Rohár wrote:
> Commit 0934dddc6436 ("arm: a37xx: Update DTS files to version from
> upstream Linux kernel") ported Linux's device-tree files for Armada 3720
> SOCs. This broke SPI support on some Espressobin boards and results in
> following U-Boot error:
> 
>    Loading Environment from SPIFlash... jedec_spi_nor flash at 0: unrecognized JEDEC id bytes: f7, 30, 0b
>    *** Warning - spi_flash_probe_bus_cs() failed, using default environment
> 
> Before that commit DT node for SPI was called 'spi-flash at 0' and after
> that commit it is called 'flash at 0'. Before that commit 'spi-max-frequency'
> was set to 50000000 and after it is 104000000.
> 
> Rename DT node 'spi-flash at 0 in armada-3720-espressobin-u-boot.dtsi to
> 'flash at 0' and set custom U-Boot 'spi-max-frequency' back to 50000000.
> 
> With this change SPI is working on Espressobin again and it is detected
> with JEDEC ids ef, 60, 16 on our tested unit.
> 
>    Loading Environment from SPIFlash... SF: Detected w25q32dw with page size 256 Bytes, erase size 4 KiB, total 4 MiB
>    OK
> 
> Note that it is unknown why spi-max-frequency with value 104000000 does not
> work in U-Boot as it works fine with Linux kernel. Also note that in
> defconfig file configs/mvebu_espressobin-88f3720_defconfig is set option
> CONFIG_SF_DEFAULT_SPEED=40000000 which is different value than in DT.
> 
> Fixes: 0934dddc6436 ("arm: a37xx: Update DTS files to version from upstream Linux kernel")
> Signed-off-by: Pali Rohár <pali at kernel.org>
> ---
> Hello Stefan, like with USB3.0 port on Turris MOX, this is SPI
> regression on Espressobin in U-Boot 2022.04. Could you send this fix to
> master to have SPI working in U-Boot 2022.04? I do not know what is wrong
> with SPI frequency and we have different value in defconfig and
> different value in DTS file and another value in kernel DTS file. So the
> best for now is to stick with old value which was used in U-Boot.
> 
> I have tested also Turris MOX with current U-Boot from master branch and
> it does not have any issue with SPI, like Espressobin.
> ---
>   arch/arm/dts/armada-3720-espressobin-u-boot.dtsi | 13 ++++++++++---
>   1 file changed, 10 insertions(+), 3 deletions(-)

Unfortunately this generates problem with other MVEBU targets:

$ make mvebu_crb_cn9130_defconfig
#
# configuration written to .config
#
$ make -s -j20
Error: arch/arm/dts/armada-3720-espressobin-u-boot.dtsi:36.1-8 syntax error
FATAL ERROR: Unable to parse input tree
Check 
/home/stefan/git/u-boot/u-boot-marvell/arch/arm/dts/.armada-3720-espressobin.dtb.pre.tmp 
for errors
make[2]: *** [scripts/Makefile.lib:337: 
arch/arm/dts/armada-3720-espressobin.dtb] Error 1
make[1]: *** [dts/Makefile:44: arch-dtbs] Error 2
make: *** [Makefile:1150: dts/dt.dtb] Error 2
make: *** Waiting for unfinished jobs....

Could you please take a look?

Thanks,
Stefan

> diff --git a/arch/arm/dts/armada-3720-espressobin-u-boot.dtsi b/arch/arm/dts/armada-3720-espressobin-u-boot.dtsi
> index 3e01c64a4bdb..2ffdc65e9f47 100644
> --- a/arch/arm/dts/armada-3720-espressobin-u-boot.dtsi
> +++ b/arch/arm/dts/armada-3720-espressobin-u-boot.dtsi
> @@ -1,8 +1,15 @@
>   // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>   
> -#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
>   &spi0 {
> -	spi-flash at 0 {
> +	flash at 0 {
> +		/*
> +		 * For some unknown reason U-Boot SPI driver cannot access
> +		 * SPI-NOR with higher frequency. Linux kernel SPI driver
> +		 * does not have this problem.
> +		 */
> +		spi-max-frequency = <50000000>;
> +
> +#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
>   		partitions {
>   			compatible = "fixed-partitions";
>   			#address-cells = <1>;
> @@ -19,8 +26,8 @@
>   			};
>   		};
>   	};
> -};
>   #endif
> +};
>   
>   /*
>    * U-Boot requires to have this eMMC node by default in "okay" status. U-Boot

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list