InfiniTime.git

commit d6aa767bdac84ac7ed8469288ae3400b5c0b5698

Author: izzeho <izzeho@gmail.com>

Add P8B mirrored version definition.

 src/CMakeLists.txt | 1 +
 src/drivers/St7789.cpp | 14 ++++++++++++++


diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e6971a56246e8dc7151b5cda1450517ed5a90e1e..cfab2f543766147daca5fb07e2358870ffd4a9e9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -810,6 +810,7 @@   add_definitions(-DDRIVER_PINMAP_P8)
   add_definitions(-DCLOCK_CONFIG_LF_SRC=0) # RC
   add_definitions(-DMYNEWT_VAL_BLE_LL_SCA=500)
   add_definitions(-DCLOCK_CONFIG_LF_CAL_ENABLED=1)
+  add_definitions(-DDRIVER_DISPLAY_MIRROR)
 else()
   message(FATAL_ERROR "Invalid TARGET_DEVICE")
 endif()




diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp
index 3ed1beb4bcd240ea7157780d1752745e3c777e79..cfd5bd2ce4b8b42a0d93c3cbecc3a0c5dce17e58 100644
--- a/src/drivers/St7789.cpp
+++ b/src/drivers/St7789.cpp
@@ -21,7 +21,10 @@   ColMod();
   MemoryDataAccessControl();
   ColumnAddressSet();
   RowAddressSet();
+// P8B Mirrored version does not need display inversion.
+#ifndef DRIVER_DISPLAY_MIRROR
   DisplayInversionOn();
+#endif
   NormalModeOn();
   SetVdv();
   DisplayOn();
@@ -62,7 +65,18 @@ }
 
 void St7789::MemoryDataAccessControl() {
   WriteCommand(static_cast<uint8_t>(Commands::MemoryDataAccessControl));
+#ifdef DRIVER_DISPLAY_MIRROR
+  // [7] = MY = Page Address Order, 0 = Top to bottom, 1 = Bottom to top
+  // [6] = MX = Column Address Order, 0 = Left to right, 1 = Right to left
+  // [5] = MV = Page/Column Order, 0 = Normal mode, 1 = Reverse mode
+  // [4] = ML = Line Address Order, 0 = LCD refresh from top to bottom, 1 = Bottom to top
+  // [3] = RGB = RGB/BGR Order, 0 = RGB, 1 = BGR
+  // [2] = MH = Display Data Latch Order, 0 = LCD refresh from left to right, 1 = Right to left
+  // [0 .. 1] = Unused
+  WriteData(0b01000000);
+#else
   WriteData(0x00);
+#endif
 }
 
 void St7789::ColumnAddressSet() {