InfiniTime.git

commit 9bd90c906e0c738836976cad5328bfae36393e7e

Author: Jean-François Milants <jf@codingfield.com>

Power optimization - Improve SPI sleep mode

ST7789 driver : replace the constant '26' with a named constant to specify the pin number of the reset pin of the LCD controller.

 src/drivers/PinMap.h | 1 +
 src/drivers/St7789.cpp | 12 ++++++------
 src/drivers/St7789.h | 3 ++-
 src/main.cpp | 2 +-


diff --git a/src/drivers/PinMap.h b/src/drivers/PinMap.h
index a70cfc414fa5dc5932eec5e7e7a2499dcb81bbc9..238b965d4a22be75f9202dee020a93af9eb11b45 100644
--- a/src/drivers/PinMap.h
+++ b/src/drivers/PinMap.h
@@ -34,6 +34,7 @@
     static constexpr uint8_t SpiFlashCsn = 5;
     static constexpr uint8_t SpiLcdCsn = 25;
     static constexpr uint8_t LcdDataCommand = 18;
+    static constexpr uint8_t LcdReset = 26;
 
     static constexpr uint8_t TwiScl = 7;
     static constexpr uint8_t TwiSda = 6;




diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp
index e18c43a38fd5e3b51a68db419bc2f34164275fb7..7855bc317359b4a300ec3b69218485d73ce1ebde 100644
--- a/src/drivers/St7789.cpp
+++ b/src/drivers/St7789.cpp
@@ -6,13 +6,13 @@ #include "drivers/Spi.h"
 
 using namespace Pinetime::Drivers;
 
-St7789::St7789(Spi& spi, uint8_t pinDataCommand) : spi {spi}, pinDataCommand {pinDataCommand} {
+St7789::St7789(Spi& spi, uint8_t pinDataCommand, uint8_t pinReset) : spi {spi}, pinDataCommand {pinDataCommand}, pinReset{pinReset} {
 }
 
 void St7789::Init() {
   nrf_gpio_cfg_output(pinDataCommand);
-  nrf_gpio_cfg_output(26);
-  nrf_gpio_pin_set(26);
+  nrf_gpio_cfg_output(pinReset);
+  nrf_gpio_pin_set(pinReset);
   HardwareReset();
   SoftwareReset();
   SleepOut();
@@ -178,15 +178,15 @@   WriteSpi(data, size);
 }
 
 void St7789::HardwareReset() {
-  nrf_gpio_pin_clear(26);
+  nrf_gpio_pin_clear(pinReset);
   nrf_delay_ms(10);
-  nrf_gpio_pin_set(26);
+  nrf_gpio_pin_set(pinReset);
 }
 
 void St7789::Sleep() {
   SleepIn();
   nrf_gpio_cfg_default(pinDataCommand);
-  nrf_gpio_cfg_default(26);
+  nrf_gpio_cfg_default(pinReset);
   NRF_LOG_INFO("[LCD] Sleep");
 }
 




diff --git a/src/drivers/St7789.h b/src/drivers/St7789.h
index 8a1bdfca98231b5e3db7b761e41d981dfb8aba3e..68e1da444ab59ce07b8dc7026a3dc20269bb1eaf 100644
--- a/src/drivers/St7789.h
+++ b/src/drivers/St7789.h
@@ -8,7 +8,7 @@     class Spi;
 
     class St7789 {
     public:
-      explicit St7789(Spi& spi, uint8_t pinDataCommand);
+      explicit St7789(Spi& spi, uint8_t pinDataCommand, uint8_t pinReset);
       St7789(const St7789&) = delete;
       St7789& operator=(const St7789&) = delete;
       St7789(St7789&&) = delete;
@@ -29,6 +29,7 @@
     private:
       Spi& spi;
       uint8_t pinDataCommand;
+      uint8_t pinReset;
       uint8_t verticalScrollingStartAddress = 0;
 
       void HardwareReset();




diff --git a/src/main.cpp b/src/main.cpp
index 9c13a169e03d51005c3866e03a3d03c543b81915..ee6a6d3de5c600b8bab5ba846a30893d2edd0e0c 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -68,7 +68,7 @@                                    Pinetime::PinMap::SpiMosi,
                                    Pinetime::PinMap::SpiMiso}};
 
 Pinetime::Drivers::Spi lcdSpi {spi, Pinetime::PinMap::SpiLcdCsn};
-Pinetime::Drivers::St7789 lcd {lcdSpi, Pinetime::PinMap::LcdDataCommand};
+Pinetime::Drivers::St7789 lcd {lcdSpi, Pinetime::PinMap::LcdDataCommand, Pinetime::PinMap::LcdReset};
 
 Pinetime::Drivers::Spi flashSpi {spi, Pinetime::PinMap::SpiFlashCsn};
 Pinetime::Drivers::SpiNorFlash spiNorFlash {flashSpi};