From c35988ffb52f5218263c5bb13512e8d70ee59e87 Mon Sep 17 00:00:00 2001 From: Kumar Abhishek Date: Thu, 4 Oct 2012 15:12:57 +0530 Subject: [PATCH 1/4] Touchpad Issue Fix Fixed interchanged cases of landscape and landscapeInv in tpReadX() and tpReadY() --- src/touchpad.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/touchpad.c b/src/touchpad.c index f0da743c..db26f36d 100644 --- a/src/touchpad.c +++ b/src/touchpad.c @@ -157,11 +157,11 @@ uint16_t tpReadX(void) { case portrait: return x; case landscape: - return SCREEN_HEIGHT - y; - case portraitInv: - return SCREEN_WIDTH - x; - case landscapeInv: return y; + case portraitInv: + return SCREEN_WIDTH - x - 1; + case landscapeInv: + return SCREEN_HEIGHT - y - 1; } return 0; @@ -184,11 +184,11 @@ uint16_t tpReadY(void) { case portrait: return y; case landscape: - return x; + return SCREEN_WIDTH - x - 1; case portraitInv: - return SCREEN_HEIGHT - y; + return SCREEN_HEIGHT - y - 1; case landscapeInv: - return SCREEN_WIDTH - x; + return x; } return 0; From e74e2e1e3280d026e6ee760e6c396499a14edfd6 Mon Sep 17 00:00:00 2001 From: Kumar Abhishek Date: Sat, 6 Oct 2012 00:38:34 +0530 Subject: [PATCH 2/4] S6D1121 Orientation-related fixes S6D1121 set cursor and set viewPort functions validated. GPIO interface readback shall be included in the next commit. --- drivers/gdisp/S6D1121/s6d1121_lld.c.h | 37 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/drivers/gdisp/S6D1121/s6d1121_lld.c.h b/drivers/gdisp/S6D1121/s6d1121_lld.c.h index e5d8c76b..76a64ce3 100644 --- a/drivers/gdisp/S6D1121/s6d1121_lld.c.h +++ b/drivers/gdisp/S6D1121/s6d1121_lld.c.h @@ -182,21 +182,22 @@ static void lld_lcdSetCursor(coord_t x, coord_t y) { * R21h - 9 bit */ switch(GDISP.Orientation) { - case GDISP_ROTATE_180: - lld_lcdWriteReg(0x0020, (SCREEN_WIDTH-1-x) & 0x00FF); - lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT-1-y) & 0x01FF); - break; case GDISP_ROTATE_0: lld_lcdWriteReg(0x0020, x & 0x00FF); lld_lcdWriteReg(0x0021, y & 0x01FF); break; case GDISP_ROTATE_90: + /* Note X has already been mirrored, so we do it directly */ lld_lcdWriteReg(0x0020, y & 0x00FF); lld_lcdWriteReg(0x0021, x & 0x01FF); break; + case GDISP_ROTATE_180: + lld_lcdWriteReg(0x0020, (SCREEN_WIDTH - 1 - x) & 0x00FF); + lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT - 1 - y) & 0x01FF); + break; case GDISP_ROTATE_270: - lld_lcdWriteReg(0x0020, (SCREEN_WIDTH - y - 1) & 0x00FF); - lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT - x - 1) & 0x01FF); + lld_lcdWriteReg(0x0020, (SCREEN_WIDTH - 1 - y) & 0x00FF); + lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT - 1 - x) & 0x01FF); break; } } @@ -209,23 +210,29 @@ static void lld_lcdSetViewPort(uint16_t x, uint16_t y, uint16_t cx, uint16_t cy) switch(GDISP.Orientation) { case GDISP_ROTATE_0: - lld_lcdWriteReg(0x46, (((x+cx-1) << 8) & 0xFF00 ) | (x & 0x00FF)); + lld_lcdWriteReg(0x46, (((x + cx - 1) << 8) & 0xFF00 ) | + (x & 0x00FF)); + lld_lcdWriteReg(0x48, y & 0x01FF); - lld_lcdWriteReg(0x47, (y+cy-1) & 0x01FF); + lld_lcdWriteReg(0x47, (y + cy - 1) & 0x01FF); break; case GDISP_ROTATE_90: - lld_lcdWriteReg(0x46, (((x+cx-1) << 8) & 0xFF00) | ((y+cy) & 0x00FF)); + lld_lcdWriteReg(0x46, (((y + cy - 1) << 8) & 0xFF00) | + (y & 0x00FF)); + lld_lcdWriteReg(0x48, x & 0x01FF); - lld_lcdWriteReg(0x47, (x+cx-1) & 0x01FF); + lld_lcdWriteReg(0x47, (x + cx - 1) & 0x01FF); break; case GDISP_ROTATE_180: - lld_lcdWriteReg(0x46, (((SCREEN_WIDTH-x-1) & 0x00FF) << 8) | ((SCREEN_WIDTH - (x+cx)) & 0x00FF)); - lld_lcdWriteReg(0x48, (SCREEN_HEIGHT-(y+cy)) & 0x01FF); - lld_lcdWriteReg(0x47, (SCREEN_HEIGHT-y-1) & 0x01FF); + lld_lcdWriteReg(0x46, (((SCREEN_WIDTH - x - 1) & 0x00FF) << 8) | + ((SCREEN_WIDTH - (x + cx)) & 0x00FF)); + lld_lcdWriteReg(0x48, (SCREEN_HEIGHT - (y + cy)) & 0x01FF); + lld_lcdWriteReg(0x47, (SCREEN_HEIGHT- y - 1) & 0x01FF); break; case GDISP_ROTATE_270: - lld_lcdWriteReg(0x46, (((SCREEN_WIDTH - y - 1) & 0x00FF) << 8) | ((SCREEN_WIDTH - (y+cy)) & 0x00FF)); - lld_lcdWriteReg(0x48, (SCREEN_HEIGHT - (x+cx)) & 0x01FF); + lld_lcdWriteReg(0x46, (((SCREEN_WIDTH - y - 1) & 0x00FF) << 8) | + ((SCREEN_WIDTH - (y + cy)) & 0x00FF)); + lld_lcdWriteReg(0x48, (SCREEN_HEIGHT - (x + cx)) & 0x01FF); lld_lcdWriteReg(0x47, (SCREEN_HEIGHT - x - 1) & 0x01FF); break; } From 643983c0b64bd5ee0839a1cf22b654b7f735694f Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Fri, 5 Oct 2012 22:45:43 +0200 Subject: [PATCH 3/4] SSD1289 fix --- drivers/gdisp/SSD1289/ssd1289_lld.c.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gdisp/SSD1289/ssd1289_lld.c.h b/drivers/gdisp/SSD1289/ssd1289_lld.c.h index dceb8780..b9e4af6f 100644 --- a/drivers/gdisp/SSD1289/ssd1289_lld.c.h +++ b/drivers/gdisp/SSD1289/ssd1289_lld.c.h @@ -273,11 +273,11 @@ static void lld_lcdSetCursor(uint16_t x, uint16_t y) { lld_lcdWriteReg(0x004e, x & 0x00FF); lld_lcdWriteReg(0x004f, y & 0x01FF); break; - case GDISP_ROTATE_90: + case GDISP_ROTATE_270: lld_lcdWriteReg(0x004e, y & 0x00FF); lld_lcdWriteReg(0x004f, x & 0x01FF); break; - case GDISP_ROTATE_270: + case GDISP_ROTATE_90: lld_lcdWriteReg(0x004e, (SCREEN_WIDTH - y - 1) & 0x00FF); lld_lcdWriteReg(0x004f, (SCREEN_HEIGHT - x - 1) & 0x01FF); break; From 2f22de29f6d3720a95b0017bc987749034540fe4 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Fri, 5 Oct 2012 22:47:29 +0200 Subject: [PATCH 4/4] docs --- docs/releases.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/releases.txt b/docs/releases.txt index ffe5d995..a38cae71 100644 --- a/docs/releases.txt +++ b/docs/releases.txt @@ -5,7 +5,8 @@ current stable: 1.1 *** changer after 1.1 *** - +FIX: orientation macros changed +FIX: huge internal bugfix in orientation stuff (big thanks to Abhishek) *** changes after 1.0 *** FIX: removed gdisp and touchpad prefix of driver directories