From 3b4ddebe631b14d15abe7355fbabe53e08c61a61 Mon Sep 17 00:00:00 2001 From: Uros Majstorovic Date: Wed, 26 Aug 2020 02:05:19 +0200 Subject: display list burst mode added --- fw/fe310/eos/eve/eve.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'fw/fe310/eos/eve/eve.c') diff --git a/fw/fe310/eos/eve/eve.c b/fw/fe310/eos/eve/eve.c index 1152699..6b3943e 100644 --- a/fw/fe310/eos/eve/eve.c +++ b/fw/fe310/eos/eve/eve.c @@ -8,7 +8,10 @@ static char _cmd_burst; static uint16_t _cmd_offset; + +static char _dl_burst; static uint32_t _dl_addr; + static uint32_t *_touch_calib; static uint8_t _brigtness; static uint8_t _power_state; @@ -96,15 +99,32 @@ static void _dl_inc(uint32_t i) { _dl_addr += i; } -void eve_dl_start(uint32_t addr) { +void eve_dl_start(uint32_t addr, char burst) { _dl_addr = addr; + _dl_burst = burst; + if (burst) { + eve_spi_cs_set(); + eve_spi_xchg24(addr | EVE_MEM_WRITE, EVE_SPI_FLAG_TX); + } } void eve_dl_write(uint32_t dl) { - eve_write32(_dl_addr, dl); + if (_dl_burst) { + eve_spi_xchg32(dl, EVE_SPI_FLAG_TX | EVE_SPI_FLAG_BSWAP); + } else { + eve_write32(_dl_addr, dl); + } _dl_inc(4); } +void eve_dl_end(void) { + if (_dl_burst) { + eve_spi_flush(); + eve_spi_cs_clear(); + _dl_burst = 0; + } +} + void eve_dl_swap(void) { eve_write8(REG_DLSWAP, EVE_DLSWAP_FRAME); } @@ -343,7 +363,7 @@ static int _init(void) { eve_write8(REG_VOL_PB, 0x00); /* turn recorded audio volume off */ /* write a basic display-list to get things started */ - eve_dl_start(EVE_RAM_DL); + eve_dl_start(EVE_RAM_DL, 0); eve_dl_write(CLEAR_COLOR_RGB(0,0,0)); eve_dl_write(CLEAR(1,1,1)); eve_dl_write(DISPLAY()); -- cgit v1.2.3