Commit 004f15b6000e220b74433b190e60805ce8776d92
Committed by
Jagannadha Sutradharudu Teki
1 parent
62d206dc31
Exists in
master
and in
53 other branches
sf: Add memory mapped read support
Qspi controller can have a memory mapped port which can be used for data read. Added support to enable memory mapped port read. This patch enables the following: - It enables exchange of memory map address between mtd and qspi through the introduction of "memory_map" flag. - Add support to communicate to the driver that memory mapped transfer is to be started through introduction of new flags like "SPI_XFER_MEM_MAP" and "SPI_XFER_MEM_MAP_END". This will enable the spi controller to do memory mapped configurations if required. Signed-off-by: Sourav Poddar <sourav.poddar@ti.com> Reviewed-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
Showing 3 changed files with 6 additions and 0 deletions Side-by-side Diff
drivers/mtd/spi/sf_ops.c
... | ... | @@ -269,7 +269,9 @@ |
269 | 269 | |
270 | 270 | /* Handle memory-mapped SPI */ |
271 | 271 | if (flash->memory_map) { |
272 | + spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP); | |
272 | 273 | memcpy(data, flash->memory_map + offset, len); |
274 | + spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP_END); | |
273 | 275 | return 0; |
274 | 276 | } |
275 | 277 |
drivers/mtd/spi/sf_probe.c
... | ... | @@ -203,6 +203,7 @@ |
203 | 203 | flash->page_size = (ext_jedec == 0x4d00) ? 512 : 256; |
204 | 204 | flash->sector_size = params->sector_size; |
205 | 205 | flash->size = flash->sector_size * params->nr_sectors; |
206 | + flash->memory_map = spi->memory_map; | |
206 | 207 | |
207 | 208 | /* Compute erase sector and command */ |
208 | 209 | if (params->flags & SECT_4K) { |
include/spi.h
... | ... | @@ -27,6 +27,8 @@ |
27 | 27 | /* SPI transfer flags */ |
28 | 28 | #define SPI_XFER_BEGIN 0x01 /* Assert CS before transfer */ |
29 | 29 | #define SPI_XFER_END 0x02 /* Deassert CS after transfer */ |
30 | +#define SPI_XFER_MMAP 0x08 /* Memory Mapped start */ | |
31 | +#define SPI_XFER_MMAP_END 0x10 /* Memory Mapped End */ | |
30 | 32 | |
31 | 33 | /* Header byte that marks the start of the message */ |
32 | 34 | #define SPI_PREAMBLE_END_BYTE 0xec |
... | ... | @@ -46,6 +48,7 @@ |
46 | 48 | unsigned int bus; |
47 | 49 | unsigned int cs; |
48 | 50 | unsigned int max_write_size; |
51 | + void *memory_map; | |
49 | 52 | }; |
50 | 53 | |
51 | 54 | /** |