qspi:fsl implement AHB read
authorPeng Fan <Peng.Fan@freescale.com>
Thu, 8 Jan 2015 02:40:20 +0000 (10:40 +0800)
committerJagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
Thu, 8 Jan 2015 18:33:28 +0000 (00:03 +0530)
commit5f7f70c1718b74df12724724f6ec72fa1894d49c
treebe9216d47305a02def2945ad347a2f4479797d89
parent78c80114b5f7f31b4a1c09bfd0db61ded24b1f6b
qspi:fsl implement AHB read

The QSPI controller in i.MX 6SoloX and Vybrid supports reading data using
IP register and AHB bus.

The original driver only supports reading data from IP interface. The IC
team suggests to use AHB read which is faster then IP read. Using AHB read,
we can directly memcpy, a "missed" access to the buffer will cause the
controller to clear the buffer and use the SEQID stored in bfgencr register
to initiate a read from flash device.

Since AHB bus is 64 bit width, we can not set MCR register using 32bit. In
order to minimize code change, redefine QSPI_MCR_END_CFD_LE to 64bit Little
endian but not 32bit Little endia.

Introduce a new configuration option CONFIG_SYS_FSL_QSPI_AHB. If want to
use AHB read, just define CONFIG_SYS_FSL_QSPI_AHB. If not, just ignore it.
Actually if Vybrid is migrated to use AHB read, this option can be removed and
IP read function can be discared. The reason to introduce this option
is that only i.MX SOC is tested in my side, no Vybrid platform for me.

In spi_setup_slave, the original piece code to set AHB is deleted, since
Vybrid platform does not use this to intiate AHB read. Instead, add
qspi_init_ahb_read function if defined CONFIG_SYS_FSL_QSPI_AHB.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Reviewed-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
drivers/spi/fsl_qspi.c
drivers/spi/fsl_qspi.h