Commit 598af18a authored by Dennis Menschel's avatar Dennis Menschel Committed by Greg Kroah-Hartman

staging: fbtft: use MIPI DCS for ST7789V and C-Berry28

This patch makes use of the standard MIPI Display Command Set to remove
redundant entries from the command enum of the ST7789V display controller
and also some of the magic constants found in the init sequence of the
C-Berry28 display.
Signed-off-by: default avatarDennis Menschel <menschel-d@posteo.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 164e265b
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <video/mipi_display.h>
#include "fbtft.h" #include "fbtft.h"
...@@ -30,14 +31,6 @@ ...@@ -30,14 +31,6 @@
/** /**
* enum st7789v_command - ST7789V display controller commands * enum st7789v_command - ST7789V display controller commands
* *
* @SLPOUT: sleep out
* @DISPOFF: display off
* @DISPON: display on
* @CASET: column address set
* @RASET: row address set
* @RAMRW: memory write
* @MADCTL: memory data access control
* @COLMOD: interface pixel format
* @PORCTRL: porch setting * @PORCTRL: porch setting
* @GCTRL: gate control * @GCTRL: gate control
* @VCOMS: VCOM setting * @VCOMS: VCOM setting
...@@ -54,16 +47,10 @@ ...@@ -54,16 +47,10 @@
* *
* Note that the ST7789V display controller offers quite a few more commands * Note that the ST7789V display controller offers quite a few more commands
* which have been omitted from this list as they are not used at the moment. * which have been omitted from this list as they are not used at the moment.
* Furthermore, commands that are compliant with the MIPI DCS have been left
* out as well to avoid duplicate entries.
*/ */
enum st7789v_command { enum st7789v_command {
SLPOUT = 0x11,
DISPOFF = 0x28,
DISPON = 0x29,
CASET = 0x2A,
RASET = 0x2B,
RAMRW = 0x2C,
MADCTL = 0x36,
COLMOD = 0x3A,
PORCTRL = 0xB2, PORCTRL = 0xB2,
GCTRL = 0xB7, GCTRL = 0xB7,
VCOMS = 0xBB, VCOMS = 0xBB,
...@@ -93,11 +80,11 @@ enum st7789v_command { ...@@ -93,11 +80,11 @@ enum st7789v_command {
*/ */
static int default_init_sequence[] = { static int default_init_sequence[] = {
/* turn off sleep mode */ /* turn off sleep mode */
-1, SLPOUT, -1, MIPI_DCS_EXIT_SLEEP_MODE,
-2, 120, -2, 120,
/* set pixel format to RGB-565 */ /* set pixel format to RGB-565 */
-1, COLMOD, 0x05, -1, MIPI_DCS_SET_PIXEL_FORMAT, MIPI_DCS_PIXEL_FMT_16BIT,
-1, PORCTRL, 0x08, 0x08, 0x00, 0x22, 0x22, -1, PORCTRL, 0x08, 0x08, 0x00, 0x22, 0x22,
...@@ -135,7 +122,7 @@ static int default_init_sequence[] = { ...@@ -135,7 +122,7 @@ static int default_init_sequence[] = {
*/ */
-1, PWCTRL1, 0xA4, 0xA1, -1, PWCTRL1, 0xA4, 0xA1,
-1, DISPON, -1, MIPI_DCS_SET_DISPLAY_ON,
-3, -3,
}; };
...@@ -151,9 +138,11 @@ static int default_init_sequence[] = { ...@@ -151,9 +138,11 @@ static int default_init_sequence[] = {
*/ */
static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye) static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye)
{ {
write_reg(par, CASET, xs >> 8, xs & 0xFF, xe >> 8, xe & 0xFF); write_reg(par, MIPI_DCS_SET_COLUMN_ADDRESS,
write_reg(par, RASET, ys >> 8, ys & 0xFF, ye >> 8, ye & 0xFF); xs >> 8, xs & 0xFF, xe >> 8, xe & 0xFF);
write_reg(par, RAMRW); write_reg(par, MIPI_DCS_SET_PAGE_ADDRESS,
ys >> 8, ys & 0xFF, ye >> 8, ye & 0xFF);
write_reg(par, MIPI_DCS_WRITE_MEMORY_START);
} }
/** /**
...@@ -184,7 +173,7 @@ static int set_var(struct fbtft_par *par) ...@@ -184,7 +173,7 @@ static int set_var(struct fbtft_par *par)
default: default:
return -EINVAL; return -EINVAL;
} }
write_reg(par, MADCTL, madctl_par); write_reg(par, MIPI_DCS_SET_ADDRESS_MODE, madctl_par);
return 0; return 0;
} }
...@@ -256,9 +245,9 @@ static int set_gamma(struct fbtft_par *par, unsigned long *curves) ...@@ -256,9 +245,9 @@ static int set_gamma(struct fbtft_par *par, unsigned long *curves)
static int blank(struct fbtft_par *par, bool on) static int blank(struct fbtft_par *par, bool on)
{ {
if (on) if (on)
write_reg(par, DISPOFF); write_reg(par, MIPI_DCS_SET_DISPLAY_OFF);
else else
write_reg(par, DISPON); write_reg(par, MIPI_DCS_SET_DISPLAY_ON);
return 0; return 0;
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <video/mipi_display.h>
#include "fbtft.h" #include "fbtft.h"
...@@ -132,11 +133,11 @@ static void adafruit18_green_tab_set_addr_win(struct fbtft_par *par, ...@@ -132,11 +133,11 @@ static void adafruit18_green_tab_set_addr_win(struct fbtft_par *par,
static int cberry28_init_sequence[] = { static int cberry28_init_sequence[] = {
/* turn off sleep mode */ /* turn off sleep mode */
-1, 0x11, -1, MIPI_DCS_EXIT_SLEEP_MODE,
-2, 120, -2, 120,
/* set pixel format to RGB-565 */ /* set pixel format to RGB-565 */
-1, 0x3A, 0x05, -1, MIPI_DCS_SET_PIXEL_FORMAT, MIPI_DCS_PIXEL_FMT_16BIT,
-1, 0xB2, 0x0C, 0x0C, 0x00, 0x33, 0x33, -1, 0xB2, 0x0C, 0x0C, 0x00, 0x33, 0x33,
...@@ -174,7 +175,7 @@ static int cberry28_init_sequence[] = { ...@@ -174,7 +175,7 @@ static int cberry28_init_sequence[] = {
*/ */
-1, 0xD0, 0xA4, 0x61, -1, 0xD0, 0xA4, 0x61,
-1, 0x29, -1, MIPI_DCS_SET_DISPLAY_ON,
-3, -3,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment