Message ID | 1381123007-29742-4-git-send-email-sourav.poddar@ti.com |
---|---|
State | Superseded |
Delegated to: | Jagannadha Sutradharudu Teki |
Headers | show |
On Mon, Oct 7, 2013 at 10:46 AM, Sourav Poddar <sourav.poddar@ti.com> wrote: > 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> > --- > v4->v5: > - Make memory map flag more readable by using "MMAP" > instead of "MEM_MAP" > - Correct the memory mapped exit path by adding > "MMAP_END" > - change the commit header to use sf. > drivers/mtd/spi/sf_ops.c | 2 ++ > drivers/mtd/spi/sf_probe.c | 1 + > include/spi.h | 3 +++ > 3 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c > index c009af5..2396e22 100644 > --- a/drivers/mtd/spi/sf_ops.c > +++ b/drivers/mtd/spi/sf_ops.c > @@ -269,7 +269,9 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, > > /* Handle memory-mapped SPI */ > if (flash->memory_map) { > + spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP); > memcpy(data, flash->memory_map + offset, len); > + spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP_END); > return 0; > } > > diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c > index 1525636..6aa7086 100644 > --- a/drivers/mtd/spi/sf_probe.c > +++ b/drivers/mtd/spi/sf_probe.c > @@ -203,6 +203,7 @@ struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, u8 *idcode) > flash->page_size = (ext_jedec == 0x4d00) ? 512 : 256; > flash->sector_size = params->sector_size; > flash->size = flash->sector_size * params->nr_sectors; > + flash->memory_map = spi->memory_map; > > /* Compute erase sector and command */ > if (params->flags & SECT_4K) { > diff --git a/include/spi.h b/include/spi.h > index c44ebe8..f454cae 100644 > --- a/include/spi.h > +++ b/include/spi.h > @@ -27,6 +27,8 @@ > /* SPI transfer flags */ > #define SPI_XFER_BEGIN 0x01 /* Assert CS before transfer */ > #define SPI_XFER_END 0x02 /* Deassert CS after transfer */ > +#define SPI_XFER_MMAP 0x08 /* Memory Mapped start */ > +#define SPI_XFER_MMAP_END 0x10 /* Memory Mapped End */ Can you rearranged the code with tab space and comments are in same phase.
diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c index c009af5..2396e22 100644 --- a/drivers/mtd/spi/sf_ops.c +++ b/drivers/mtd/spi/sf_ops.c @@ -269,7 +269,9 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, /* Handle memory-mapped SPI */ if (flash->memory_map) { + spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP); memcpy(data, flash->memory_map + offset, len); + spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP_END); return 0; } diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c index 1525636..6aa7086 100644 --- a/drivers/mtd/spi/sf_probe.c +++ b/drivers/mtd/spi/sf_probe.c @@ -203,6 +203,7 @@ struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, u8 *idcode) flash->page_size = (ext_jedec == 0x4d00) ? 512 : 256; flash->sector_size = params->sector_size; flash->size = flash->sector_size * params->nr_sectors; + flash->memory_map = spi->memory_map; /* Compute erase sector and command */ if (params->flags & SECT_4K) { diff --git a/include/spi.h b/include/spi.h index c44ebe8..f454cae 100644 --- a/include/spi.h +++ b/include/spi.h @@ -27,6 +27,8 @@ /* SPI transfer flags */ #define SPI_XFER_BEGIN 0x01 /* Assert CS before transfer */ #define SPI_XFER_END 0x02 /* Deassert CS after transfer */ +#define SPI_XFER_MMAP 0x08 /* Memory Mapped start */ +#define SPI_XFER_MMAP_END 0x10 /* Memory Mapped End */ /* Header byte that marks the start of the message */ #define SPI_PREAMBLE_END_BYTE 0xec @@ -46,6 +48,7 @@ struct spi_slave { unsigned int bus; unsigned int cs; unsigned int max_write_size; + void *memory_map; }; /**
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> --- v4->v5: - Make memory map flag more readable by using "MMAP" instead of "MEM_MAP" - Correct the memory mapped exit path by adding "MMAP_END" - change the commit header to use sf. drivers/mtd/spi/sf_ops.c | 2 ++ drivers/mtd/spi/sf_probe.c | 1 + include/spi.h | 3 +++ 3 files changed, 6 insertions(+), 0 deletions(-)