3#include "roo_backport.h"
4#include "roo_backport/byte.h"
6#include "roo_io/data/byte_order.h"
7#include "soc/spi_reg.h"
9#if CONFIG_IDF_TARGET_ESP32
10#define ROO_DISPLAY_ESP32_SPI_DEFAULT_PORT 3
12#define ROO_DISPLAY_ESP32_SPI_DEFAULT_PORT 2
13#ifndef SPI_MOSI_DLEN_REG
14#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x)
16#ifndef SPI_MISO_DLEN_REG
17#define SPI_MISO_DLEN_REG(x) SPI_MS_DLEN_REG(x)
21#if !defined(CONFIG_IDF_TARGET_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32S2)
22#define ROO_DISPLAY_SPI_CMD_UPDATE_REQUIRED 1
24#define ROO_DISPLAY_SPI_CMD_UPDATE_REQUIRED 0
29#define SPI_DMA_TX_ENA SPI_DMA_TX_EN
33#ifndef SPI_TRANS_DONE_INT_ENA
34#ifdef SPI_OUT_EOF_INT_ENA
35#define SPI_TRANS_DONE_INT_ENA SPI_OUT_EOF_INT_ENA
36#elif defined(SPI_OUT_DONE_INT_ENA)
37#define SPI_TRANS_DONE_INT_ENA SPI_OUT_DONE_INT_ENA
41#ifndef SPI_TRANS_DONE_INT_CLR
42#ifdef SPI_OUT_EOF_INT_CLR
43#define SPI_TRANS_DONE_INT_CLR SPI_OUT_EOF_INT_CLR
44#elif defined(SPI_OUT_DONE_INT_CLR)
45#define SPI_TRANS_DONE_INT_CLR SPI_OUT_DONE_INT_CLR
49#ifndef SPI_TRANS_DONE_INT_ST
50#ifdef SPI_OUT_EOF_INT_ST
51#define SPI_TRANS_DONE_INT_ST SPI_OUT_EOF_INT_ST
52#elif defined(SPI_OUT_DONE_INT_ST)
53#define SPI_TRANS_DONE_INT_ST SPI_OUT_DONE_INT_ST
64 __attribute__((always_inline));
68 __attribute__((always_inline));
71inline void SpiTxStart(uint8_t spi_port) __attribute__((always_inline));
74inline void SpiTxWait(uint8_t spi_port) __attribute__((always_inline));
78 __attribute__((always_inline));
82 __attribute__((always_inline));
86 __attribute__((always_inline));
90 __attribute__((always_inline));
94 __attribute__((always_inline));
98 __attribute__((always_inline));
102 __attribute__((always_inline));
107 __attribute__((always_inline));
111inline void SpiWrite4(uint8_t spi_port, uint32_t d32)
112 __attribute__((always_inline));
115inline uint32_t
SpiRead4(uint8_t spi_port) __attribute__((always_inline));
119 __attribute__((always_inline));
124 int len) __attribute__((always_inline));
127inline void SpiFill64(uint8_t spi_port, uint32_t d32)
128 __attribute__((always_inline));
132inline void SpiFillUpTo64(uint8_t spi_port, uint32_t d32,
int len)
133 __attribute__((always_inline));
137inline void SpiFill60(uint8_t spi_port, uint32_t d0, uint32_t d1, uint32_t d2)
138 __attribute__((always_inline));
142inline void SpiFillUpTo60(uint8_t spi_port, uint32_t d0, uint32_t d1,
143 uint32_t d2,
int len) __attribute__((always_inline));
178#if ROO_DISPLAY_SPI_CMD_UPDATE_REQUIRED
200#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32
251 if (
len <= 12)
break;
253 if (
len <= 16)
break;
255 if (
len <= 20)
break;
257 if (
len <= 24)
break;
259 if (
len <= 28)
break;
261 if (
len <= 32)
break;
263 if (
len <= 36)
break;
265 if (
len <= 40)
break;
267 if (
len <= 44)
break;
269 if (
len <= 48)
break;
271 if (
len <= 52)
break;
273 if (
len <= 56)
break;
275 if (
len <= 60)
break;
306 if (
len <= 12)
break;
308 if (
len <= 16)
break;
310 if (
len <= 20)
break;
312 if (
len <= 24)
break;
314 if (
len <= 28)
break;
316 if (
len <= 32)
break;
318 if (
len <= 36)
break;
320 if (
len <= 40)
break;
322 if (
len <= 44)
break;
324 if (
len <= 48)
break;
326 if (
len <= 52)
break;
328 if (
len <= 56)
break;
330 if (
len <= 60)
break;
361 if (
len <= 12)
break;
363 if (
len <= 16)
break;
365 if (
len <= 20)
break;
367 if (
len <= 24)
break;
369 if (
len <= 28)
break;
371 if (
len <= 32)
break;
373 if (
len <= 36)
break;
375 if (
len <= 40)
break;
377 if (
len <= 44)
break;
379 if (
len <= 48)
break;
381 if (
len <= 52)
break;
383 if (
len <= 56)
break;
void SpiSetWriteOnlyMode(uint8_t spi_port) __attribute__((always_inline))
void SpiFill60(uint8_t spi_port, uint32_t d0, uint32_t d1, uint32_t d2) __attribute__((always_inline))
void SpiDmaTransferDoneIntDisable(uint8_t spi_port) __attribute__((always_inline))
void SpiFill64(uint8_t spi_port, uint32_t d32) __attribute__((always_inline))
void SpiDmaTransferDoneIntClear(uint8_t spi_port) __attribute__((always_inline))
void SpiWriteUpTo64Aligned(uint8_t spi_port, const roo::byte *data, int len) __attribute__((always_inline))
void SpiDmaTxDisable(uint8_t spi_port) __attribute__((always_inline))
void SpiTxWait(uint8_t spi_port) __attribute__((always_inline))
void SpiSetOutBufferSize(uint8_t spi_port, int len) __attribute__((always_inline))
void SpiTxStart(uint8_t spi_port) __attribute__((always_inline))
void SpiDmaTransferDoneIntEnable(uint8_t spi_port) __attribute__((always_inline))
void SpiWrite4(uint8_t spi_port, uint32_t d32) __attribute__((always_inline))
uint32_t SpiRead4(uint8_t spi_port) __attribute__((always_inline))
void SpiSetTxBufferSize(uint8_t spi_port, int len) __attribute__((always_inline))
bool SpiDmaTransferDoneIntPending(uint8_t spi_port) __attribute__((always_inline))
void SpiSetReadWriteMode(uint8_t spi_port) __attribute__((always_inline))
void SpiWrite64Aligned(uint8_t spi_port, const roo::byte *data) __attribute__((always_inline))
void SpiDmaTxEnable(uint8_t spi_port) __attribute__((always_inline))
void SpiFillUpTo60(uint8_t spi_port, uint32_t d0, uint32_t d1, uint32_t d2, int len) __attribute__((always_inline))
void SpiFillUpTo64(uint8_t spi_port, uint32_t d32, int len) __attribute__((always_inline))
Defines 140 opaque HTML named colors.
#define SPI_MISO_DLEN_REG(x)
#define SPI_MOSI_DLEN_REG(x)