summaryrefslogtreecommitdiff
path: root/src/drivers/St7789.cpp
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2022-09-11 14:59:49 +0200
committerJean-François Milants <jf@codingfield.com>2022-09-11 14:59:49 +0200
commitada2c09581d2d13acfa5ce9a97671c0ec17863f1 (patch)
tree2f776adc59d0c63e403d2043cb8460e65d6c46fe /src/drivers/St7789.cpp
parent18cff286c75f432095db4b188e0f9a8a9e2bd8e8 (diff)
parentc9a5c3fa5c930a5939d3114a6c6b48570d61ca24 (diff)
Merge branch 'develop' into infineat-external-resources
# Conflicts: # src/displayapp/screens/Symbols.h # src/displayapp/screens/settings/SettingWatchFace.cpp # src/displayapp/screens/settings/SettingWatchFace.h
Diffstat (limited to 'src/drivers/St7789.cpp')
-rw-r--r--src/drivers/St7789.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp
index 3ed1beb4..cfd5bd2c 100644
--- a/src/drivers/St7789.cpp
+++ b/src/drivers/St7789.cpp
@@ -21,7 +21,10 @@ void St7789::Init() {
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::ColMod() {
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() {