From cc13c90649dd93f462ff03e0d56af9f94b80de7b Mon Sep 17 00:00:00 2001 From: "charles.park" Date: Tue, 9 Apr 2019 11:51:27 +0900 Subject: [PATCH] ODROID-N2: fbtft_device new fast spi lcd(ili9486) driver added. Change-Id: Iaa24ea37679637729b0ca7b773b9c89e6a0167f5 --- drivers/staging/fbtft/fb_ili9486.c | 25 ++++++++++- drivers/staging/fbtft/fbtft_device.c | 66 +++++++++++++++++++++------- 2 files changed, 73 insertions(+), 18 deletions(-) diff --git a/drivers/staging/fbtft/fb_ili9486.c b/drivers/staging/fbtft/fb_ili9486.c index 61afed93b544..79accac78354 100644 --- a/drivers/staging/fbtft/fb_ili9486.c +++ b/drivers/staging/fbtft/fb_ili9486.c @@ -67,6 +67,29 @@ static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye) static int set_var(struct fbtft_par *par) { +#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON) + #define ILI9486_MADCTL_MV 0x20 + #define ILI9486_MADCTL_MX 0x40 + #define ILI9486_MADCTL_MY 0x80 + + u8 val = 0; + + switch (par->info->var.rotate) { + case 270: + val = ILI9486_MADCTL_MV | ILI9486_MADCTL_MX; + break; + case 180: + val = ILI9486_MADCTL_MY | ILI9486_MADCTL_MX; + break; + case 90: + val = ILI9486_MADCTL_MV | ILI9486_MADCTL_MY; + break; + default: + break; + } + /* Memory Access Control */ + write_reg(par, MIPI_DCS_SET_ADDRESS_MODE, val | (par->bgr << 3)); +#else switch (par->info->var.rotate) { case 0: write_reg(par, MIPI_DCS_SET_ADDRESS_MODE, @@ -87,7 +110,7 @@ static int set_var(struct fbtft_par *par) default: break; } - +#endif return 0; } diff --git a/drivers/staging/fbtft/fbtft_device.c b/drivers/staging/fbtft/fbtft_device.c index 1f4bde07e7ef..89466e0c8d76 100644 --- a/drivers/staging/fbtft/fbtft_device.c +++ b/drivers/staging/fbtft/fbtft_device.c @@ -133,23 +133,55 @@ static void adafruit18_green_tab_set_addr_win(struct fbtft_par *par, #if defined(CONFIG_ARCH_MESON64_ODROID_COMMON) static int odroid35_init_sequence[] = { - /* Fast SPI-LCD Init */ - -1, 0xf1, 0x36, 0x04, 0x00, 0x3c, 0x0f, 0x8f, - -1, 0xf2, 0x18, 0xa3, 0x12, 0x02, 0xb2, 0x12, 0xff, 0x10, 0x00, - -1, 0xf8, 0x21, 0x04, - -1, 0xf9, 0x00, 0x08, - -1, 0x36, 0x08, - -1, 0xb4, 0x00, - -1, 0xc1, 0x41, - -1, 0xc5, 0x00, 0x91, 0x80, 0x00, - -1, 0xe0, 0x0f, 0x1f, 0x1c, 0x0c, 0x0f, 0x08, 0x48, - 0x98, 0x37, 0x0a, 0x13, 0x04, 0x11, 0x0d, 0x00, - -1, 0xe1, 0x0f, 0x32, 0x2e, 0x0b, 0x0d, 0x05, 0x47, - 0x75, 0x37, 0x06, 0x10, 0x03, 0x24, 0x20, 0x00, - -1, 0x3a, 0x55, + /* Fast SPI-LCD Init : IPS(New Version LCD) */ + /* Passwd 1 */ + -1, 0xF0, 0x5A, 0x5A, + /* Passwd 2 */ + -1, 0xF1, 0x5A, 0x5A, + /* DISCTL */ + -1, 0xf2, 0x3B, 0x48, 0x03, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x54, 0x08, 0x08, 0x08, 0x08, + /* PWRCTL */ + -1, 0xF4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3F, 0x79, 0x03, 0x3F, 0x79, 0x03, + /* VCMCTL */ + -1, 0xF5, 0x00, 0x5D, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x5D, 0x75, + /* SRCCTL */ + -1, 0xF6, 0x04, 0x00, 0x08, 0x03, 0x01, 0x00, 0x01, 0x00, + /* IFCTL */ + -1, 0xF7, 0x48, 0x80, 0x10, 0x02, 0x00, + /* PANELCTL */ + -1, 0xF8, 0x11, 0x00, + /* GAMMASEL : RED */ + -1, 0xF9, 0x24, + /* PGAMMACTL */ + -1, 0xFA, 0x0B, 0x0B, 0x05, 0x01, 0x0B, 0x20, 0x2C, 0x13, + 0x21, 0x24, 0x30, 0x32, 0x24, 0x00, 0x00, 0x01, + /* GAMMASEL : GREEN */ + -1, 0xF9, 0x22, + -1, 0xFA, 0x0B, 0x0B, 0x10, 0x31, 0x32, 0x35, 0x36, 0x11, + 0x1D, 0x23, 0x2F, 0x2F, 0x24, 0x00, 0x00, 0x01, + /* GAMMASEL : BLUE */ + -1, 0xF9, 0x21, + -1, 0xFA, 0x0B, 0x0B, 0x1A, 0x3A, 0x3F, 0x3F, 0x3F, 0x07, + 0x18, 0x1F, 0x28, 0x1E, 0x1A, 0x00, 0x00, 0x01, + /* COLMCD */ + -1, 0x3A, 0x55, /* Base Customer Selection */ + /* 0x77 = 24 bits/pixel, 0x66 = 18 bits/pixel, 0x55 = 16 bits/pixel */ + /* MADCTL */ + -1, 0x36, 0x00, + /* TEON */ + -1, 0x35, 0x00, + /* PASET */ + -1, 0x2B, 0x00, 0x00, 0x01, 0xDF, + /* CASET */ + -1, 0x2A, 0x00, 0x00, 0x01, 0x3F, + /* SLPOUT */ -1, 0x11, - -1, 0x36, 0x28, - -2, 0xff, + /* 120ms Delay */ + -2, 0xFF, + /* DISPON */ -1, 0x29, /* end marker */ -3, @@ -962,7 +994,7 @@ static struct fbtft_device_display displays[] = { .backlight = 1, .init_sequence = odroid35_init_sequence, }, - .bgr = true, + .bgr = false, .gpios = (const struct fbtft_gpio []) { { "reset", 478 }, { "dc", 477 },