This is an automated email from the ASF dual-hosted git repository.

jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit d4e17e8aedec079272149183e8f146381d848556
Author: Jerzy Kasenberg <jerzy.kasenb...@codecoup.pl>
AuthorDate: Wed Aug 6 22:47:20 2025 +0200

    lvgl/drivers: change rotation
    
    Driver is able to rotate screen by changing
    how addresses are change when data is
    transmitted.
    For 90 and 270 degree rotation screen appeared
    to rotate clock wise. Problem pops up when
    touch screen is present and in those rotations
    touch screen orientation which does not changed
    did not correspond to display orientation.
    
    Signed-off-by: Jerzy Kasenberg <je...@apache.org>
---
 hw/drivers/display/lvgl/tft/gc9a01/src/gc9a01.c   | 4 ++--
 hw/drivers/display/lvgl/tft/ili9341/src/ili9341.c | 4 ++--
 hw/drivers/display/lvgl/tft/ili9486/src/ili9486.c | 4 ++--
 hw/drivers/display/lvgl/tft/st7735s/src/st7735s.c | 5 ++---
 hw/drivers/display/lvgl/tft/st7789/src/st7789.c   | 4 ++--
 hw/drivers/display/lvgl/tft/st7796S/src/st7796s.c | 4 ++--
 6 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/hw/drivers/display/lvgl/tft/gc9a01/src/gc9a01.c 
b/hw/drivers/display/lvgl/tft/gc9a01/src/gc9a01.c
index 56a21c36b..8edfc3c92 100644
--- a/hw/drivers/display/lvgl/tft/gc9a01/src/gc9a01.c
+++ b/hw/drivers/display/lvgl/tft/gc9a01/src/gc9a01.c
@@ -106,9 +106,9 @@
 
 static const uint8_t madctl[] = {
     GC9A01_MADCTL_MX,
-    GC9A01_MADCTL_MV | GC9A01_MADCTL_MY | GC9A01_MADCTL_ML,
-    GC9A01_MADCTL_MY,
     GC9A01_MADCTL_MX | GC9A01_MADCTL_MV,
+    GC9A01_MADCTL_MY,
+    GC9A01_MADCTL_MV | GC9A01_MADCTL_MY | GC9A01_MADCTL_ML,
 };
 
 void
diff --git a/hw/drivers/display/lvgl/tft/ili9341/src/ili9341.c 
b/hw/drivers/display/lvgl/tft/ili9341/src/ili9341.c
index daf353583..280941800 100644
--- a/hw/drivers/display/lvgl/tft/ili9341/src/ili9341.c
+++ b/hw/drivers/display/lvgl/tft/ili9341/src/ili9341.c
@@ -132,9 +132,9 @@
 
 static const uint8_t madctl[] = {
     MADCTL_MX,
-    MADCTL_MV,
-    MADCTL_MY,
     MADCTL_MX | MADCTL_MY | MADCTL_MV,
+    MADCTL_MY,
+    MADCTL_MV,
 };
 
 void
diff --git a/hw/drivers/display/lvgl/tft/ili9486/src/ili9486.c 
b/hw/drivers/display/lvgl/tft/ili9486/src/ili9486.c
index 59826baf3..c888c170f 100644
--- a/hw/drivers/display/lvgl/tft/ili9486/src/ili9486.c
+++ b/hw/drivers/display/lvgl/tft/ili9486/src/ili9486.c
@@ -123,9 +123,9 @@
 
 static const uint8_t madctl[] = {
     0,
-    MADCTL_MX | MADCTL_MV,
-    MADCTL_MX | MADCTL_MY,
     MADCTL_MV | MADCTL_MY | MADCTL_ML,
+    MADCTL_MX | MADCTL_MY,
+    MADCTL_MX | MADCTL_MV,
 };
 
 void
diff --git a/hw/drivers/display/lvgl/tft/st7735s/src/st7735s.c 
b/hw/drivers/display/lvgl/tft/st7735s/src/st7735s.c
index 7e980771f..3ddaf101e 100644
--- a/hw/drivers/display/lvgl/tft/st7735s/src/st7735s.c
+++ b/hw/drivers/display/lvgl/tft/st7735s/src/st7735s.c
@@ -107,13 +107,13 @@ st7735s_rotate(lv_disp_rot_t rotation)
 
     switch (rotation) {
     case LV_DISP_ROT_270:
-        madctl[1] |= ST7735S_MADCTL_MV | ST7735S_MADCTL_MY | ST7735S_MADCTL_ML;
+        madctl[1] |= ST7735S_MADCTL_MX | ST7735S_MADCTL_MV;
         break;
     case LV_DISP_ROT_180:
         madctl[1] |= ST7735S_MADCTL_MX | ST7735S_MADCTL_MY;
         break;
     case LV_DISP_ROT_90:
-        madctl[1] |= ST7735S_MADCTL_MX | ST7735S_MADCTL_MV;
+        madctl[1] |= ST7735S_MADCTL_MV | ST7735S_MADCTL_MY | ST7735S_MADCTL_ML;
         break;
     case LV_DISP_ROT_NONE:
         break;
@@ -139,7 +139,6 @@ LCD_SEQUENCE(init_cmds)
         LCD_SEQUENCE_DELAY(5),
         4, ST7735S_FRMCTR1, 0x01, 0x2C, 0x2D,
         4, ST7735S_FRMCTR2, 0x01, 0x2C, 0x2D,
-        7, ST7735S_FRMCTR2, 0x01, 0x2C, 0x2D, 0x01, 0x2C, 0x2D,
         2, ST7735S_INVCTR, 0x07,
         4, ST7735S_PWCTR1, 0xA2, 0x02, 0x84,
         2, ST7735S_PWCTR2, 0xC5,
diff --git a/hw/drivers/display/lvgl/tft/st7789/src/st7789.c 
b/hw/drivers/display/lvgl/tft/st7789/src/st7789.c
index 44c24780e..633f1c98c 100644
--- a/hw/drivers/display/lvgl/tft/st7789/src/st7789.c
+++ b/hw/drivers/display/lvgl/tft/st7789/src/st7789.c
@@ -145,13 +145,13 @@ st7789_rotate(lv_disp_rot_t rotation)
 
     switch (rotation) {
     case LV_DISP_ROT_270:
-        madcmd[1] |= ST7789_MADCTL_MV | ST7789_MADCTL_MY | ST7789_MADCTL_ML;
+        madcmd[1] |= ST7789_MADCTL_MX | ST7789_MADCTL_MV;
         break;
     case LV_DISP_ROT_180:
         madcmd[1] |= ST7789_MADCTL_MX | ST7789_MADCTL_MY;
         break;
     case LV_DISP_ROT_90:
-        madcmd[1] |= ST7789_MADCTL_MX | ST7789_MADCTL_MV;
+        madcmd[1] |= ST7789_MADCTL_MV | ST7789_MADCTL_MY | ST7789_MADCTL_ML;
         break;
     case LV_DISP_ROT_NONE:
         break;
diff --git a/hw/drivers/display/lvgl/tft/st7796S/src/st7796s.c 
b/hw/drivers/display/lvgl/tft/st7796S/src/st7796s.c
index 4a498deeb..8fa11cef7 100644
--- a/hw/drivers/display/lvgl/tft/st7796S/src/st7796s.c
+++ b/hw/drivers/display/lvgl/tft/st7796S/src/st7796s.c
@@ -126,9 +126,9 @@
 #define ST7796S_MADCTL_RGB       0x00
 #define ST7796S_MADCTL_BGR       0x08
 #define ST7796S_MADCTL_0         ST7796S_MADCTL_MX
-#define ST7796S_MADCTL_90        (ST7796S_MADCTL_MV)
+#define ST7796S_MADCTL_90        (ST7796S_MADCTL_MY | ST7796S_MADCTL_ML | 
ST7796S_MADCTL_MV | ST7796S_MADCTL_MX)
 #define ST7796S_MADCTL_180       (ST7796S_MADCTL_MY | ST7796S_MADCTL_ML)
-#define ST7796S_MADCTL_270       (ST7796S_MADCTL_MY | ST7796S_MADCTL_ML | 
ST7796S_MADCTL_MV | ST7796S_MADCTL_MX)
+#define ST7796S_MADCTL_270       (ST7796S_MADCTL_MV)
 
 #define ST7796S_HOR_RES          MYNEWT_VAL(LVGL_DISPLAY_HORIZONTAL_RESOLUTION)
 #define ST7796S_VER_RES          MYNEWT_VAL(LVGL_DISPLAY_VERTICAL_RESOLUTION)

Reply via email to