ILI9320 update

remotes/origin_old/ugfx_release_2.6
Joel Bodenmann 2013-03-03 13:46:14 +01:00
parent 100d686f94
commit b51342d41c
1 changed files with 25 additions and 11 deletions

View File

@ -235,25 +235,26 @@ bool_t gdisp_lld_init(void) {
} }
static void lld_lcdSetCursor(uint16_t x, uint16_t y) { static void lld_lcdSetCursor(uint16_t x, uint16_t y) {
uint32_t addr;
addr = y * 0x100 + x;
switch(GDISP.Orientation) { switch(GDISP.Orientation) {
case GDISP_ROTATE_0: case GDISP_ROTATE_0:
lld_lcdWriteReg(0x0020, addr & 0xff); /* low addr */ lld_lcdWriteReg(0x0020, x);
lld_lcdWriteReg(0x0021, (addr >> 8) & 0x1ff); /* high addr */ lld_lcdWriteReg(0x0021, y);
break; break;
case GDISP_ROTATE_90: case GDISP_ROTATE_90:
lld_lcdWriteReg(0x0020, (addr >> 8) & 0x1ff); /* low addr */ lld_lcdWriteReg(0x0020, y);
lld_lcdWriteReg(0x0021, addr & 0xff); /* high addr */ lld_lcdWriteReg(0x0021, x);
break; break;
case GDISP_ROTATE_180: case GDISP_ROTATE_180:
lld_lcdWriteReg(0x0020, x);
lld_lcdWriteReg(0x0021, y);
break; break;
case GDISP_ROTATE_270: case GDISP_ROTATE_270:
lld_lcdWriteReg(0x0020, y);
lld_lcdWriteReg(0x0021, x);
break; break;
} }
} }
@ -275,11 +276,18 @@ static void lld_lcdSetViewPort(uint16_t x, uint16_t y, uint16_t cx, uint16_t cy)
break; break;
case GDISP_ROTATE_180: case GDISP_ROTATE_180:
lld_lcdWriteReg(0x0050, x);
lld_lcdWriteReg(0x0051, x + cx - 1);
lld_lcdWriteReg(0x0052, y);
lld_lcdWriteReg(0x0053, y + cy - 1);
break; break;
case GDISP_ROTATE_270: case GDISP_ROTATE_270:
lld_lcdWriteReg(0x0050, y);
lld_lcdWriteReg(0x0051, y + cy - 1);
lld_lcdWriteReg(0x0052, x);
lld_lcdWriteReg(0x0053, x + cx - 1);
break; break;
} }
lld_lcdSetCursor(x, y); lld_lcdSetCursor(x, y);
@ -516,25 +524,31 @@ void gdisp_lld_draw_pixel(coord_t x, coord_t y, color_t color) {
case GDISP_ROTATE_0: case GDISP_ROTATE_0:
lld_lcdWriteReg(0x0001, 0x0100); lld_lcdWriteReg(0x0001, 0x0100);
lld_lcdWriteReg(0x0003, 0x1038); lld_lcdWriteReg(0x0003, 0x1038);
lld_lcdWriteReg(0x0060, 0x2700);
GDISP.Height = GDISP_SCREEN_HEIGHT; GDISP.Height = GDISP_SCREEN_HEIGHT;
GDISP.Width = GDISP_SCREEN_WIDTH; GDISP.Width = GDISP_SCREEN_WIDTH;
break; break;
case GDISP_ROTATE_90: case GDISP_ROTATE_90:
lld_lcdWriteReg(0x0001, 0x0000); lld_lcdWriteReg(0x0001, 0x0100);
lld_lcdWriteReg(0x0003, 0x1030); lld_lcdWriteReg(0x0003, 0x1030);
lld_lcdWriteReg(0x0060, 0x2700);
GDISP.Height = GDISP_SCREEN_WIDTH; GDISP.Height = GDISP_SCREEN_WIDTH;
GDISP.Width = GDISP_SCREEN_HEIGHT; GDISP.Width = GDISP_SCREEN_HEIGHT;
break; break;
case GDISP_ROTATE_180: case GDISP_ROTATE_180:
/* ToDo */ lld_lcdWriteReg(0x0001, 0x0000);
lld_lcdWriteReg(0x0003, 0x1030);
lld_lcdWriteReg(0x0060, 0x2700);
GDISP.Height = GDISP_SCREEN_HEIGHT; GDISP.Height = GDISP_SCREEN_HEIGHT;
GDISP.Width = GDISP_SCREEN_WIDTH; GDISP.Width = GDISP_SCREEN_WIDTH;
break; break;
case GDISP_ROTATE_270: case GDISP_ROTATE_270:
/* ToDo */ lld_lcdWriteReg(0x0001, 0x0000);
lld_lcdWriteReg(0x0003, 0x1038);
lld_lcdWriteReg(0x0060, 0xA700);
GDISP.Height = GDISP_SCREEN_WIDTH; GDISP.Height = GDISP_SCREEN_WIDTH;
GDISP.Width = GDISP_SCREEN_HEIGHT; GDISP.Width = GDISP_SCREEN_HEIGHT;
break; break;