summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/dev/lcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/fe310/eos/dev/lcd.c')
-rw-r--r--fw/fe310/eos/dev/lcd.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/fw/fe310/eos/dev/lcd.c b/fw/fe310/eos/dev/lcd.c
index 6c005b9..01d86e9 100644
--- a/fw/fe310/eos/dev/lcd.c
+++ b/fw/fe310/eos/dev/lcd.c
@@ -13,9 +13,8 @@
#include "eve/eve.h"
#include "egpio.h"
+#include "egpio_priv.h"
#include "spi.h"
-#include "eve.h"
-#include "pwr.h"
#include "drv/ili9806e.h"
#include "lcd.h"
@@ -38,6 +37,10 @@ static int lcd_disable(void) {
return rv;
}
+static int lcd_enabled(void) {
+ return eos_egpio_get_val(EGPIO_PIN_LCD_EN);
+}
+
static int lcd_select(void) {
int rv;
@@ -52,6 +55,7 @@ static int lcd_select(void) {
GPIO_REG(GPIO_OUTPUT_EN) &= ~(1 << SPI_CSPIN_LCD);
GPIO_REG(GPIO_OUTPUT_XOR) &= ~(1 << SPI_CSPIN_LCD);
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1 << SPI_CSPIN_LCD);
+
return rv;
}
@@ -60,6 +64,7 @@ static int lcd_select(void) {
static void lcd_deselect(void) {
eos_spi_deselect();
+
GPIO_REG(GPIO_OUTPUT_EN) &= ~(1 << SPI_CSPIN_LCD);
GPIO_REG(GPIO_OUTPUT_XOR) &= ~(1 << SPI_CSPIN_LCD);
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1 << SPI_CSPIN_LCD);
@@ -118,6 +123,8 @@ int eos_lcd_init(void) {
int eos_lcd_sleep(void) {
int rv;
+ if (!lcd_enabled()) return EOS_ERR;
+
rv = lcd_sleep();
return rv;
}
@@ -125,6 +132,8 @@ int eos_lcd_sleep(void) {
int eos_lcd_wake(void) {
int rv;
+ if (lcd_enabled()) return EOS_ERR;
+
rv = lcd_init();
return rv;
}