foboot/sw/include/spi.h
Sean Cross c6c3ae8c47 spi: speed up bit banging and special case everything
This patch significantly improves SPI throughput by avoiding
many duplicated writes.  For example, we now only adjust the MISO
direction once during every byte rather than for every bit.

This improves the time it takes to upload a 128 kilobyte file from 29
seconds to 6 seconds.

Signed-off-by: Sean Cross <sean@xobs.io>
2019-11-22 11:28:53 +08:00

31 lines
676 B
C

#ifndef BB_SPI_H_
#define BB_SPI_H_
#include <stdint.h>
void spiPause(void);
void spiBegin(void);
void spiEnd(void);
int spiRead(uint32_t addr, uint8_t *data, unsigned int count);
int spiIsBusy(void);
int spiBeginErase4(uint32_t erase_addr);
int spiBeginErase32(uint32_t erase_addr);
int spiBeginErase64(uint32_t erase_addr);
int spiBeginWrite(uint32_t addr, const void *data, unsigned int count);
void spiEnableQuad(void);
uint32_t spiId(void);
int spiWrite(uint32_t addr, const uint8_t *data, unsigned int count);
uint8_t spiReset(void);
int spiInit(void);
void spiHold(void);
void spiUnhold(void);
void spiSwapTxRx(void);
void spiFree(void);
#endif /* BB_SPI_H_ */