From ec0caa569b356f186e87c13e50550ca1b807dde6 Mon Sep 17 00:00:00 2001 From: Uros Majstorovic Date: Sun, 4 Sep 2022 18:16:20 +0200 Subject: eve support when i2s is running --- fw/fe310/eos/eve/eve.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 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 7f77190..45ac886 100644 --- a/fw/fe310/eos/eve/eve.c +++ b/fw/fe310/eos/eve/eve.c @@ -223,6 +223,9 @@ void eve_cmd(uint32_t cmd, const char *fmt, ...) { case 'p': cmd_buffer(va_arg(argv, const char *), va_arg(argv, int), flags); break; + case '0': + cmd_padding(flags); + break; case '+': cont = 1; break; @@ -294,11 +297,12 @@ void eve_cmd_burst_end(void) { cmd_burst = 0; } -void eve_handle_intr(void) { +uint16_t eve_handle_intr(void) { uint16_t intr_flags; intr_flags = eve_read16(REG_INT_FLAGS); if (intr_flags & (EVE_INT_CONVCOMPLETE | EVE_INT_TAG)) eve_handle_touch(intr_flags); + return intr_flags; } int eve_init(void) { @@ -377,19 +381,7 @@ int eve_init(void) { return EVE_OK; } -void eve_start(void) { - /* enable interrupts */ - eve_write8(REG_INT_EN, 0x01); - while(eve_read8(REG_INT_FLAGS)); -} - -void eve_stop(void) { - /* disable interrupts */ - eve_write8(REG_INT_EN, 0x00); - while(eve_read8(REG_INT_FLAGS)); -} - -void eve_start_clk(void) { +void eve_clk_start(void) { uint16_t gpiox; eve_write8(REG_PCLK, EVE_PCLK); /* start clocking data to the LCD panel */ @@ -397,7 +389,7 @@ void eve_start_clk(void) { eve_write16(REG_GPIOX, gpiox); /* enable the DISP signal to the LCD panel, it is set to output in REG_GPIOX_DIR */ } -void eve_stop_clk(void) { +void eve_clk_stop(void) { uint16_t gpiox; gpiox = eve_read16(REG_GPIOX) & ~0x8000; @@ -405,6 +397,16 @@ void eve_stop_clk(void) { eve_write8(REG_PCLK, 0); } +void eve_intr_enable(void) { + eve_write8(REG_INT_EN, 0x01); + while(eve_read8(REG_INT_FLAGS)); +} + +void eve_intr_disable(void) { + eve_write8(REG_INT_EN, 0x00); + while(eve_read8(REG_INT_FLAGS)); +} + void eve_activate(void) { eve_command(EVE_ACTIVE, 0); eve_sleep(40); @@ -421,8 +423,8 @@ void eve_pwr_standby(void) { void eve_pwr_sleep(void) { if (power_state != EVE_PSTATE_ACTIVE) return; - eve_stop_clk(); - eve_stop(); + eve_clk_stop(); + eve_intr_disable(); eve_command(EVE_SLEEP, 0); @@ -433,8 +435,8 @@ void eve_pwr_wake(void) { eve_activate(); if (power_state == EVE_PSTATE_SLEEP) { - eve_start(); - eve_start_clk(); + eve_intr_enable(); + eve_clk_start(); } power_state = EVE_PSTATE_ACTIVE; -- cgit v1.2.3