X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Farm%2Fdrv%2Fspi_dma_at91.c;h=57ed2fbd7203365246ff10cdf8da67e99c0a41e7;hb=f1fab319eb3fe91c157b3a9564841aef62a03554;hp=03b98d85e390f8f3d776b8759c3080f28155b016;hpb=0ee36f785f12c4439cfad7e96d80b6637941f6e8;p=bertos.git diff --git a/bertos/cpu/arm/drv/spi_dma_at91.c b/bertos/cpu/arm/drv/spi_dma_at91.c index 03b98d85..57ed2fbd 100644 --- a/bertos/cpu/arm/drv/spi_dma_at91.c +++ b/bertos/cpu/arm/drv/spi_dma_at91.c @@ -36,14 +36,17 @@ * \author Luca Ottaviano */ -#include "cfg/cfg_spi_dma.h" +#include -#include "spi_dma_at91.h" +#include "cfg/cfg_spi_dma.h" #include "hw/hw_spi_dma.h" +#include #include + #include #include + #include #include @@ -76,11 +79,11 @@ static int spi_dma_flush(UNUSED_ARG(struct KFile *, fd)) 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; } @@ -92,13 +95,11 @@ static size_t spi_dma_write(struct KFile *fd, const void *_buf, size_t 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); @@ -131,7 +132,7 @@ static size_t spi_dma_read(struct KFile *fd, void *_buf, size_t size) #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); @@ -160,7 +161,7 @@ void spi_dma_init(SpiDmaAt91 *spi) /* 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;