[U-Boot] [PATCH 0/8] Transition of fsl qspi driver to spi-mem framework

Stefan Roese sr at denx.de
Mon Dec 2 11:08:29 CET 2019


Hi Kuldeep,

On 29.11.19 06:54, Kuldeep Singh wrote:
> This entire patch series migrate freescale qspi driver to spi-mem framework.
> 
> Patch 1 removes the old fsl qspi driver
> 
> Patch 2 adds new qspi driver incorporating spi-mem framework which is ported
> version of linux qspi driver. Initial port was done by Frieder. Now, no more
> direct access to spi-nor memory is possible. Few changes were introduced to
> prevent uboot crash such as to add complete flash size to SFA1AD, SFA2AD,
> SFB1AD, SFB2AD based on chip select number instead of 1k. Immediate effect was
> observed on pfe while using 1k size as it access spi-nor memory directly. Using
> complete flash size resolves the crash but data read will not be valid.
> 
> Patch 3 removes unused config options.
> 
> Patch 4 moves FSL_QSPI config to defconfigs instead of defining in header files.
> SPI_FLASH_SPANSION is enabled while disabling SPI_FLASH_BAR.
> 
> Patch 5 removes unused num-cs property for imx platforms
> 
> Patch 6 enables SPI_FLASH_SPANSION for ls1012 boards. SPI_FLASH_BAR is no longer
> required and can be removed.
> 
> Patch 7 move SPI_FLASH_SPANSION to defconfigs instead of header files. While
> enabling SPI_FLASH_SPANSION config, also disable SPI_FLASH_BAR at the same time.
> 
> Patch 8 updates the device-tree properties treewide for layerscape boards by
> aligning it with linux device-tree properties.

Many thanks for working on this. I've tested this patchset on a new
i-MX6ULL/ULZ based board and noticed, that I still need to add this
kind of patch to make it work on my platform:

---------------------------- drivers/spi/fsl_qspi.c ----------------------------
index 788fa0416f..0946f9d6d5 100644
@@ -44,6 +44,9 @@ DECLARE_GLOBAL_DATA_PTR;
  #define QUADSPI_IPCR			0x08
  #define QUADSPI_IPCR_SEQID(x)		((x) << 24)
  
+#define QUADSPI_FLSHCR			0x0c
+#define QUADSPI_FLSHCR_TDH(x)		((x) << 16)
+
  #define QUADSPI_BUF3CR			0x1c
  #define QUADSPI_BUF3CR_ALLMST_MASK	BIT(31)
  #define QUADSPI_BUF3CR_ADATSZ(x)	((x) << 8)
@@ -666,6 +669,16 @@ static int fsl_qspi_default_setup(struct fsl_qspi *q)
  		    QUADSPI_BUF3CR_ADATSZ(q->devtype_data->ahb_buf_size / 8),
  		    base + QUADSPI_BUF3CR);
  
+	/*
+	 * Clear THD bits to configure SDR mode instead of DDR mode. This
+	 * might be necessary, as the BootROM in some versions and on some
+	 * SoCs sets these bits to 0x1 for DDR mode. But this driver needs
+	 * it set to SDR mode instead.
+	 */
+	reg = qspi_readl(q, base + QUADSPI_FLSHCR);
+	reg &= ~QUADSPI_FLSHCR_TDH(0x3);
+	qspi_writel(q, reg, base + QUADSPI_FLSHCR);

This was suggested by Frieder and is also integrated in the Linux
QSPI driver:

Commit ID f6910679e17a ("spi: spi-fsl-qspi: Clear TDH bits in FLSHCR
register")

What is the status of SDR vs DDR mode in this driver? Is this driver
version supposed to handle DDR mode correctly? If not, could you
please integrate this patch (or Frieder's Linux patch) into your
patchset so that the driver also works on i.MX6ULL/ULZ ?

Thanks,
Stefan

> Frieder Schrempf (1):
>    imx: imx6sx: Remove unused 'num-cs' property
> 
> Kuldeep Singh (7):
>    spi: Remove old freescale qspi driver
>    spi: Transform the FSL QuadSPI driver to use the SPI MEM API
>    treewide: Remove unused FSL QSPI config options
>    configs: ls1043a: Move CONFIG_FSL_QSPI to defconfig
>    configs: ls1012a: Enable SPI_FLASH_SPANSION in defconfig
>    configs: ls1046a: Move SPI_FLASH_SPANSION to defconfig
>    treewide: Update fsl qspi node dt properties as per spi-mem driver
> 
>   arch/arm/dts/fsl-ls1012a-frdm.dtsi            |    5 +-
>   arch/arm/dts/fsl-ls1012a-qds.dtsi             |    5 +-
>   arch/arm/dts/fsl-ls1012a-rdb.dtsi             |    5 +-
>   arch/arm/dts/fsl-ls1012a.dtsi                 |    4 +-
>   arch/arm/dts/fsl-ls1043a-qds.dtsi             |    5 +-
>   arch/arm/dts/fsl-ls1043a.dtsi                 |    6 +-
>   arch/arm/dts/fsl-ls1046a-frwy.dts             |    5 +-
>   arch/arm/dts/fsl-ls1046a-qds.dtsi             |    5 +-
>   arch/arm/dts/fsl-ls1046a-rdb.dts              |    5 +-
>   arch/arm/dts/fsl-ls1046a.dtsi                 |    4 +-
>   arch/arm/dts/fsl-ls1088a-qds.dts              |    5 +-
>   arch/arm/dts/fsl-ls1088a-rdb.dts              |    5 +-
>   arch/arm/dts/fsl-ls1088a.dtsi                 |    2 +-
>   arch/arm/dts/fsl-ls2080a-qds.dts              |    5 +-
>   arch/arm/dts/fsl-ls2080a.dtsi                 |    4 +-
>   arch/arm/dts/fsl-ls2088a-rdb-qspi.dts         |    5 +-
>   arch/arm/dts/imx6sx-sabreauto-u-boot.dtsi     |    2 -
>   arch/arm/dts/imx6sx-sdb-u-boot.dtsi           |    2 -
>   arch/arm/dts/ls1021a-twr.dtsi                 |    5 +-
>   arch/arm/dts/ls1021a.dtsi                     |    6 +-
>   .../include/asm/arch-fsl-layerscape/config.h  |    1 -
>   arch/arm/include/asm/arch-ls102xa/config.h    |    1 -
>   configs/ls1012aqds_qspi_defconfig             |    2 +-
>   configs/ls1012aqds_tfa_defconfig              |    2 +-
>   configs/ls1012ardb_qspi_SECURE_BOOT_defconfig |    2 +-
>   configs/ls1012ardb_qspi_defconfig             |    2 +-
>   configs/ls1012ardb_tfa_defconfig              |    2 +-
>   configs/ls1043aqds_qspi_defconfig             |    2 +-
>   configs/ls1043aqds_sdcard_qspi_defconfig      |    2 +-
>   configs/ls1043aqds_tfa_SECURE_BOOT_defconfig  |    2 +
>   configs/ls1043aqds_tfa_defconfig              |    2 +-
>   configs/ls1046aqds_qspi_defconfig             |    2 +-
>   configs/ls1046aqds_sdcard_qspi_defconfig      |    2 +-
>   configs/ls1046aqds_tfa_SECURE_BOOT_defconfig  |    1 +
>   configs/ls1046aqds_tfa_defconfig              |    2 +-
>   configs/ls1046ardb_qspi_SECURE_BOOT_defconfig |    2 +-
>   configs/ls1046ardb_qspi_defconfig             |    2 +-
>   configs/ls1046ardb_tfa_SECURE_BOOT_defconfig  |    2 +-
>   configs/ls1046ardb_tfa_defconfig              |    2 +-
>   drivers/spi/fsl_qspi.c                        | 1549 ++++++-----------
>   drivers/spi/fsl_qspi.h                        |  145 --
>   include/configs/ls1012a_common.h              |   17 +-
>   include/configs/ls1012afrwy.h                 |    3 -
>   include/configs/ls1012ardb.h                  |    3 -
>   include/configs/ls1021aiot.h                  |    6 -
>   include/configs/ls1021aqds.h                  |   11 -
>   include/configs/ls1021atwr.h                  |   10 -
>   include/configs/ls1043aqds.h                  |   10 -
>   include/configs/ls1046afrwy.h                 |    9 -
>   include/configs/ls1046aqds.h                  |   19 -
>   include/configs/ls1046ardb.h                  |   20 -
>   include/configs/ls1088a_common.h              |    6 -
>   include/configs/ls1088aqds.h                  |    8 -
>   include/configs/ls1088ardb.h                  |   18 -
>   include/configs/ls2080aqds.h                  |    2 -
>   include/configs/ls2080ardb.h                  |    8 +-
>   include/configs/mx6sxsabreauto.h              |    6 -
>   include/configs/mx6sxsabresd.h                |   11 -
>   include/configs/mx6ul_14x14_evk.h             |    6 -
>   include/configs/mx6ullevk.h                   |    6 -
>   include/configs/mx7dsabresd.h                 |    8 -
>   include/configs/pcm052.h                      |    7 -
>   include/configs/vf610twr.h                    |    8 -
>   scripts/config_whitelist.txt                  |    5 -
>   64 files changed, 632 insertions(+), 1394 deletions(-)
>   delete mode 100644 drivers/spi/fsl_qspi.h
> 

Viele Grüße,
Stefan

-- 
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