diff options
Diffstat (limited to 'firmware/microblaze/usrp2p/spi_flash_read.c')
-rw-r--r-- | firmware/microblaze/usrp2p/spi_flash_read.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/firmware/microblaze/usrp2p/spi_flash_read.c b/firmware/microblaze/usrp2p/spi_flash_read.c index 4682c5fe6..36c326e96 100644 --- a/firmware/microblaze/usrp2p/spi_flash_read.c +++ b/firmware/microblaze/usrp2p/spi_flash_read.c @@ -19,6 +19,7 @@ #include "spi_flash_private.h" #include <stdlib.h> // abort +#include <nonstdio.h> static size_t _spi_flash_log2_memory_size; @@ -100,7 +101,8 @@ spi_flash_read(uint32_t flash_addr, size_t nbytes, void *buf) */ unsigned char *dst = (unsigned char *) buf; size_t m; - for (size_t n = 0; n < nbytes; n += m, dst += m){ + for (size_t n = 0; n < nbytes; n += m){ + spif_regs->ctrl = FLAGS | LEN(16 * 8); // xfer 16 bytes spif_regs->ctrl = FLAGS | LEN(16 * 8) | SPI_CTRL_GO_BSY; spif_wait(); @@ -113,7 +115,7 @@ spi_flash_read(uint32_t flash_addr, size_t nbytes, void *buf) unsigned char *src = (unsigned char *) &w[0]; m = min(nbytes - n, 16); for (size_t i = 0; i < m; i++) - dst[i] = src[i]; + *(dst++) = src[i]; } spif_regs->ss = 0; // deassert chip select } |