sf: ops: Add spi_flash_copy_mmap function
When doing a memory mapped copy we may have DMA available and thus need to have this copy abstracted so that the driver can do it, rather than a simple memcpy. Signed-off-by: Tom Rini <trini@ti.com> Signed-off-by: Vignesh R <vigneshr@ti.com> Reviewed-by: Jagan Teki <jteki@openedev.com>
This commit is contained in:
parent
5b3b0d687e
commit
146bad9619
@ -14,6 +14,7 @@
|
|||||||
#include <spi.h>
|
#include <spi.h>
|
||||||
#include <spi_flash.h>
|
#include <spi_flash.h>
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
|
||||||
#include "sf_internal.h"
|
#include "sf_internal.h"
|
||||||
|
|
||||||
@ -378,6 +379,11 @@ int spi_flash_read_common(struct spi_flash *flash, const u8 *cmd,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void __weak spi_flash_copy_mmap(void *data, void *offset, size_t len)
|
||||||
|
{
|
||||||
|
memcpy(data, offset, len);
|
||||||
|
}
|
||||||
|
|
||||||
int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
|
int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
|
||||||
size_t len, void *data)
|
size_t len, void *data)
|
||||||
{
|
{
|
||||||
@ -394,7 +400,7 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP);
|
spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP);
|
||||||
memcpy(data, flash->memory_map + offset, len);
|
spi_flash_copy_mmap(data, flash->memory_map + offset, len);
|
||||||
spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP_END);
|
spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP_END);
|
||||||
spi_release_bus(flash->spi);
|
spi_release_bus(flash->spi);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -272,6 +272,9 @@ int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen);
|
|||||||
int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
|
int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
|
||||||
void *din, unsigned long flags);
|
void *din, unsigned long flags);
|
||||||
|
|
||||||
|
/* Copy memory mapped data */
|
||||||
|
void spi_flash_copy_mmap(void *data, void *offset, size_t len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if a SPI chipselect is valid.
|
* Determine if a SPI chipselect is valid.
|
||||||
* This function is provided by the board if the low-level SPI driver
|
* This function is provided by the board if the low-level SPI driver
|
||||||
|
Loading…
Reference in New Issue
Block a user