#include <linux/kthread.h>
#include <linux/completion.h>
+struct dma_chan;
+
/*
* INTERFACES between SPI master-side drivers and SPI infrastructure.
* (There's no SPI slave support for Linux yet...)
/* called on release() to free memory provided by spi_master */
void (*cleanup)(struct spi_device *spi);
+ /*
+ * Used to enable core support for DMA handling, if can_dma()
+ * exists and returns true then the transfer will be mapped
+ * prior to transfer_one() being called. The driver should
+ * not modify or store xfer and dma_tx and dma_rx must be set
+ * while the device is prepared.
+ */
+ bool (*can_dma)(struct spi_master *master,
+ struct spi_device *spi,
+ struct spi_transfer *xfer);
+
/*
* These hooks are for drivers that want to use the generic
* master transfer queueing mechanism. If these are used, the
bool rt;
bool auto_runtime_pm;
bool cur_msg_prepared;
+ bool cur_msg_mapped;
struct completion xfer_completion;
int (*prepare_transfer_hardware)(struct spi_master *master);
/* gpio chip select */
int *cs_gpios;
+
+ /* DMA channels for use with core dmaengine helpers */
+ struct dma_chan *dma_tx;
+ struct dma_chan *dma_rx;
};
static inline void *spi_master_get_devdata(struct spi_master *master)