[meta-freescale] [u-boot-fslc] QSPI driver

Fabio Estevam festevam at gmail.com
Wed Feb 17 11:15:45 PST 2016


On Wed, Feb 17, 2016 at 3:26 PM, Esponde, Joel
<Joel.Esponde at honeywell.com> wrote:
> Hi,
>
> Thanks Fabio for your reply!
> I am using the 2015.10 version because it's the last one tagged, I guess it is the latest stable release.
>
> BTW, in the QSPI driver of u-boot-imx there is this piece of code:
>         /* Write data to the QUADSPI_TBDR buffer registers. */
>         static void fsl_qspi_write_data(struct fsl_qspi *q, int len, u8* txbuf)
>         {
>                 ...
>
>         #if defined(CONFIG_MX7D) || defined(CONFIG_MX6UL)
>                 u32 t3;
>                 /* iMX7D and MX6UL TXFIFO must be at least 16 bytes*/
>                 t3 = t1 + ((t2 + 3) >> 2);
>                 for (; t3 < 4; t3++)
>                         writel(0, q->iobase + QUADSPI_TBDR);
>         #endif
>
>         }
> So it looks like the latest Freescale CPUs have a QSPI peripheral a bit different of the previous ones.
>
> The closest function in u-boot-fslc driver seems to be qspi_op_write:
> https://github.com/Freescale/u-boot-fslc/blob/2016.01%2Bfslc/drivers/spi/fsl_qspi.c#L565
> And I do not see any special code for MX6UL and MX7D in that function.
> The code of that function is very close if not equal between 2015.10 and 2016.01.
>
> If you think I still need to make a test to confirm that issue despite my explanations, I will try to do it.

Just tested with mainline U-boot with this change:

--- a/include/configs/mx6ul_14x14_evk.h
+++ b/include/configs/mx6ul_14x14_evk.h
@@ -195,6 +195,7 @@
 #define CONFIG_CMD_CACHE
 #endif

+#define CONFIG_FSL_QSPI
 #ifdef CONFIG_FSL_QSPI
 #define CONFIG_CMD_SF
 #define CONFIG_SPI_FLASH

Then I can see the SPI being probed correctly:

U-Boot SPL 2016.03-rc1-00144-gd6bf29b-dirty (Feb 17 2016 - 17:11:44)
Trying to boot from MMC


U-Boot 2016.03-rc1-00144-gd6bf29b-dirty (Feb 17 2016 - 17:11:44 -0200)

CPU:   Freescale i.MX6UL rev1.0 792 MHz (running at 396 MHz)
CPU:   Commercial temperature grade (0C to 95C)Reset cause: POR
Board: MX6UL 14x14 EVK
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Video: MXSFB: 'videomode' variable not set!
In:    serial
Out:   serial
Err:   serial
Net:   FEC1
Warning: FEC1 MAC addresses don't match:
Address in SROM is         00:04:9f:03:c3:d2
Address in environment is  00:04:9f:03:c3:d1

Hit any key to stop autoboot:  0
=> sf probe
SF: Detected N25Q256 with page size 256 Bytes, erase size 64 KiB, total 32 MiB


More information about the meta-freescale mailing list