@@ -291,6 +291,10 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
* number. Any individual value may be -ENOENT for CS lines that
* are not GPIOs (driven by the SPI controller itself).
*
+ * @get_buf: used for memory mapped cases, when the slave device wants to
+ * know the address to be used for memcopy.
+ * @put_buf: Used for memory mapped cases after get_buf, after the memcpy
+ * has finished.
* Each SPI master controller can communicate with one or more @spi_device
* children. These make a small bus, sharing MOSI, MISO and SCK signals
* but not chip select signals. Each device may be configured to use a
@@ -421,6 +425,9 @@ struct spi_master {
int (*transfer_one)(struct spi_master *master, struct spi_device *spi,
struct spi_transfer *transfer);
+ void (*get_buf)(struct spi_master *master);
+ void (*put_buf)(struct spi_master *master);
+
/* gpio chip select */
int *cs_gpios;
};
Add get_buf, put_buf api support in spi master. This can be used in a scenario where spi controller supports memory mapped operations(typically with flash devices). So, the memcpy needs top be done in slave devices which need the required memory mapped address. These api can be used to get that master address. These can also be used to turm the master controller clock, as usually the clocks get turned in spi core. But, in memory mapped case, we will bypass the spi core and hence needa way out to turn on the controller clock. Signed-off-by: Sourav Poddar <sourav.poddar@ti.com> --- include/linux/spi/spi.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)