[PATCH u-boot-marvell v2] arm: a37xx: espressobin: Fix non-working SPI
Stefan Roese
sr at denx.de
Thu Mar 24 08:08:22 CET 2022
On 3/23/22 17:19, 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>
>
> ---
> Changes in v2:
> * Fix #endif for partitions { } node
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> ---
> arch/arm/dts/armada-3720-espressobin-u-boot.dtsi | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/dts/armada-3720-espressobin-u-boot.dtsi b/arch/arm/dts/armada-3720-espressobin-u-boot.dtsi
> index 3e01c64a4bdb..07293ab72d1f 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>;
> @@ -18,9 +25,9 @@
> label = "u-boot-env";
> };
> };
> +#endif
> };
> };
> -#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