* \author Luca Ottaviano <lottaviano@develer.com>
*/
-#include "cfg/cfg_spi_dma.h"
+#include <drv/spi_dma.h>
-#include "spi_dma_at91.h"
+#include "cfg/cfg_spi_dma.h"
#include "hw/hw_spi_dma.h"
+#include <io/at91sam7.h>
#include <io/kfile.h>
+
#include <struct/fifobuf.h>
#include <struct/kfile_fifo.h>
+
#include <drv/timer.h>
#include <cpu/attr.h>
static size_t spi_dma_write(struct KFile *fd, const void *_buf, size_t size)
{
- spi_dma_flush(fd);
SPI0_PTCR = BV(PDC_TXTDIS);
SPI0_TPR = (reg32_t)_buf;
SPI0_TCR = size;
SPI0_PTCR = BV(PDC_TXTEN);
+ spi_dma_flush(fd);
return size;
}
*/
static const uint8_t tx_dummy_buf[CONFIG_SPI_DMA_MAX_RX] = { [0 ... (CONFIG_SPI_DMA_MAX_RX - 1)] = 0xFF };
-static size_t spi_dma_read(struct KFile *fd, void *_buf, size_t size)
+static size_t spi_dma_read(UNUSED_ARG(struct KFile *, fd), void *_buf, size_t size)
{
size_t count, total_rx = 0;
uint8_t *buf = (uint8_t *)_buf;
- spi_dma_flush(fd);
-
while (size)
{
count = MIN(size, (size_t)CONFIG_SPI_DMA_MAX_RX);
#define SPI_DMA_IRQ_PRIORITY 4
-void spi_dma_init(SpiDmaAt91 *spi)
+void spi_dma_init(SpiDma *spi)
{
/* Disable PIO on SPI pins */
PIOA_PDR = BV(SPI0_SPCK) | BV(SPI0_MOSI) | BV(SPI0_MISO);
/* Enable SPI */
SPI0_CR = BV(SPI_SPIEN);
- DB(spi->fd._type = KFT_SPIDMAAT91);
+ DB(spi->fd._type = KFT_SPIDMA);
spi->fd.write = spi_dma_write;
spi->fd.read = spi_dma_read;
spi->fd.flush = spi_dma_flush;