summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/eve/eve.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/fe310/eos/eve/eve.c')
-rw-r--r--fw/fe310/eos/eve/eve.c40
1 files changed, 21 insertions, 19 deletions
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;