658 lines
8.9 KiB
C
658 lines
8.9 KiB
C
#include "lib/lcd/lcd.h"
|
|
|
|
#if LCD_ST7701S_MIPI_EN
|
|
|
|
|
|
#define CMD(x) {LCD_CMD,x}
|
|
#define DAT(x) {LCD_DAT,x}
|
|
#define DLY(x) {DELAY_MS,x}
|
|
#define END {LCD_TAB_END,LCD_TAB_END}
|
|
|
|
#define BOE397_IPS 1
|
|
|
|
|
|
const uint8_t st7701s_register_init_tab[][2] = {
|
|
#if BOE397_IPS
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x13),
|
|
CMD (0xEF),
|
|
DAT (0x08),
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x10),
|
|
CMD (0xC0),
|
|
DAT (0x63),
|
|
DAT (0x00),
|
|
CMD (0xC1),
|
|
DAT (0x09),
|
|
DAT (0x02),
|
|
CMD (0xC2),
|
|
DAT (0x07),
|
|
DAT (0x02),
|
|
CMD (0xCC),
|
|
DAT (0x18),
|
|
CMD (0xB0),
|
|
DAT (0x00),
|
|
DAT (0x12),
|
|
DAT (0x19),
|
|
DAT (0x0D),
|
|
DAT (0x12),
|
|
DAT (0x0A),
|
|
DAT (0x07),
|
|
DAT (0x0B),
|
|
DAT (0x08),
|
|
DAT (0x23),
|
|
DAT (0x06),
|
|
DAT (0x14),
|
|
DAT (0x13),
|
|
DAT (0x25),
|
|
DAT (0x2B),
|
|
DAT (0x1F),
|
|
CMD (0xB1),
|
|
DAT (0x00),
|
|
DAT (0x0A),
|
|
DAT (0x13),
|
|
DAT (0x0D),
|
|
DAT (0x10),
|
|
DAT (0x03),
|
|
DAT (0x04),
|
|
DAT (0x07),
|
|
DAT (0x09),
|
|
DAT (0x1F),
|
|
DAT (0x04),
|
|
DAT (0x11),
|
|
DAT (0x0E),
|
|
DAT (0x23),
|
|
DAT (0x2A),
|
|
DAT (0x1F),
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x11),
|
|
CMD (0xB0),
|
|
DAT (0x4D),
|
|
CMD (0xB1),
|
|
DAT (0x55),
|
|
CMD (0xB2),
|
|
DAT (0x87),
|
|
CMD (0xB3),
|
|
DAT (0x80),
|
|
CMD (0xB5),
|
|
DAT (0x4F),
|
|
CMD (0xB7),
|
|
DAT (0x85),
|
|
CMD (0xB8),
|
|
DAT (0x23),
|
|
CMD (0xB9),
|
|
DAT (0x22),
|
|
DAT (0x13),
|
|
CMD (0xBB),
|
|
DAT (0x03),
|
|
CMD (0xBC),
|
|
DAT (0x10),
|
|
CMD (0xC0),
|
|
DAT (0x89),
|
|
CMD (0xC1),
|
|
DAT (0x78),
|
|
CMD (0xC2),
|
|
DAT (0x78),
|
|
CMD (0xEF),
|
|
DAT (0x08),
|
|
DAT (0x08),
|
|
DAT (0x08),
|
|
DAT (0x4C),
|
|
DAT (0x3F),
|
|
DAT (0x54),
|
|
CMD (0xD0),
|
|
DAT (0x88),
|
|
CMD (0xE0),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x02),
|
|
CMD (0xE1),
|
|
DAT (0x04),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x05),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x10),
|
|
DAT (0x10),
|
|
CMD (0xE2),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0xE3),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x33),
|
|
DAT (0x00),
|
|
CMD (0xE4),
|
|
DAT (0x22),
|
|
DAT (0x00),
|
|
CMD (0xE5),
|
|
DAT (0x03),
|
|
DAT (0x34),
|
|
DAT (0xAF),
|
|
DAT (0xB3),
|
|
DAT (0x05),
|
|
DAT (0x34),
|
|
DAT (0xAF),
|
|
DAT (0xB3),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0xE6),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x33),
|
|
DAT (0x00),
|
|
CMD (0xE7),
|
|
DAT (0x22),
|
|
DAT (0x00),
|
|
CMD (0xE8),
|
|
DAT (0x04),
|
|
DAT (0x34),
|
|
DAT (0xAF),
|
|
DAT (0xB3),
|
|
DAT (0x06),
|
|
DAT (0x34),
|
|
DAT (0xAF),
|
|
DAT (0xB3),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0xEB),
|
|
DAT (0x02),
|
|
DAT (0x00),
|
|
DAT (0x40),
|
|
DAT (0x40),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0xEC),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0xED),
|
|
DAT (0xFA),
|
|
DAT (0x45),
|
|
DAT (0x0B),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xFF),
|
|
DAT (0xB0),
|
|
DAT (0x54),
|
|
DAT (0xAF),
|
|
CMD (0xEF),
|
|
DAT (0x08),
|
|
DAT (0x08),
|
|
DAT (0x08),
|
|
DAT (0x45),
|
|
DAT (0x3F),
|
|
DAT (0x54),
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x13),
|
|
CMD (0xE6),
|
|
DAT (0x16),
|
|
DAT (0x7c),
|
|
CMD (0xe8),
|
|
DAT (0x00),
|
|
DAT (0x0E),
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0x11),
|
|
DLY (120),
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x13),
|
|
CMD (0xe8),
|
|
DAT (0x00),
|
|
DAT (0x0C),
|
|
DLY (10),
|
|
CMD (0xe8),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0xFF),
|
|
DAT (0x77),
|
|
DAT (0x01),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
DAT (0x00),
|
|
CMD (0x35),
|
|
DAT (0x00),
|
|
|
|
#if 0 //test pattern
|
|
CMD(0xFF),
|
|
DAT(0x77),
|
|
DAT(0x01),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x12),
|
|
|
|
CMD(0xD1),
|
|
DAT(0x81),
|
|
|
|
CMD(0xD2),
|
|
DAT(0x06),
|
|
#endif
|
|
|
|
CMD(0x36), // //U&D Y-DIR
|
|
DAT(0x00), //rotate 0: 0x00 : rotate 180 :0x10
|
|
|
|
CMD(0x3A),
|
|
DAT(0x77),
|
|
|
|
CMD (0x21),
|
|
DLY(100),
|
|
CMD (0x29),
|
|
DLY(200),
|
|
|
|
#else
|
|
|
|
|
|
CMD(0x01),
|
|
DLY(120),
|
|
|
|
CMD(0x11),
|
|
DLY(120),
|
|
|
|
//CMD(0xD3),
|
|
//DAT(0x07),
|
|
//DAT(0x00),
|
|
|
|
|
|
CMD(0xFF),
|
|
DAT(0x77),
|
|
DAT(0x01),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x11),
|
|
|
|
CMD(0xD1),
|
|
DAT(0x11),
|
|
|
|
CMD(0x55),
|
|
DAT(0xb0), // 80 90 b0
|
|
|
|
|
|
CMD(0xFF),
|
|
DAT(0x77),
|
|
DAT(0x01),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x10),
|
|
|
|
|
|
CMD(0xC0),
|
|
DAT(0x63),
|
|
DAT(0x00),
|
|
|
|
CMD(0xC1),
|
|
DAT(0x02), //vbp
|
|
DAT(0x0A), //vfp
|
|
|
|
CMD(0xC2),
|
|
DAT(0x37),
|
|
DAT(0x08),
|
|
|
|
CMD(0xC3),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x08),
|
|
|
|
|
|
CMD(0xC7),//x-dir
|
|
DAT(0x04), // rotate 0 : 0x00 rotate 180 :0x04
|
|
|
|
CMD(0xCC),
|
|
DAT(0x38),
|
|
|
|
CMD(0xB0),
|
|
DAT(0x00),
|
|
DAT(0x11),
|
|
DAT(0x19),
|
|
DAT(0x0C),
|
|
DAT(0x10),
|
|
DAT(0x06),
|
|
DAT(0x07),
|
|
DAT(0x0A),
|
|
DAT(0x09),
|
|
DAT(0x22),
|
|
DAT(0x04),
|
|
DAT(0x10),
|
|
DAT(0x0E),
|
|
DAT(0x28),
|
|
DAT(0x30),
|
|
DAT(0x1C),
|
|
|
|
CMD(0xB1),
|
|
DAT(0x00),
|
|
DAT(0x12),
|
|
DAT(0x19),
|
|
DAT(0x0D),
|
|
DAT(0x10),
|
|
DAT(0x04),
|
|
DAT(0x06),
|
|
DAT(0x07),
|
|
DAT(0x08),
|
|
DAT(0x23),
|
|
DAT(0x04),
|
|
DAT(0x12),
|
|
DAT(0x11),
|
|
DAT(0x28),
|
|
DAT(0x30),
|
|
DAT(0x1C),
|
|
|
|
|
|
CMD(0xFF),
|
|
DAT(0x77),
|
|
DAT(0x01),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x11), // enable bk fun of command 2 BK1
|
|
|
|
|
|
CMD(0xB0),
|
|
DAT(0x4D),
|
|
|
|
CMD(0xB1),
|
|
DAT(0x60), //0x56 0x4a 0x5b
|
|
|
|
|
|
CMD(0xB2),
|
|
DAT(0x07),
|
|
CMD(0xB3),
|
|
DAT(0x80),
|
|
CMD(0xB5),
|
|
DAT(0x47),
|
|
CMD(0xB7),
|
|
DAT(0x8A),
|
|
CMD(0xB8),
|
|
DAT(0x21),
|
|
CMD(0xC1),
|
|
DAT(0x78),
|
|
|
|
CMD(0xC2),
|
|
DAT(0x78),
|
|
CMD(0xD0),
|
|
DAT(0x88),
|
|
DLY(100),
|
|
|
|
|
|
CMD(0xE0),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x02),
|
|
|
|
CMD(0xE1),
|
|
DAT(0x01),
|
|
DAT(0xA0),
|
|
DAT(0x03),
|
|
DAT(0xA0),
|
|
DAT(0x02),
|
|
DAT(0xA0),
|
|
DAT(0x04),
|
|
DAT(0xA0),
|
|
DAT(0x00),
|
|
DAT(0x44),
|
|
DAT(0x44),
|
|
|
|
CMD(0xE2),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
|
|
CMD(0xE3),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x33),
|
|
DAT(0x33),
|
|
|
|
CMD(0xE4),
|
|
DAT(0x44),
|
|
DAT(0x44),
|
|
|
|
CMD(0xE5),
|
|
DAT(0x01),
|
|
DAT(0x26),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
DAT(0x03),
|
|
DAT(0x28),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
DAT(0x05),
|
|
DAT(0x2A),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
DAT(0x07),
|
|
DAT(0x2C),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
|
|
CMD(0xE6),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x33),
|
|
DAT(0x33),
|
|
|
|
CMD(0xE7),
|
|
DAT(0x44),
|
|
DAT(0x44),
|
|
|
|
CMD(0xE8),
|
|
DAT(0x02),
|
|
DAT(0x26),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
DAT(0x04),
|
|
DAT(0x28),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
DAT(0x06),
|
|
DAT(0x2A),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
DAT(0x08),
|
|
DAT(0x2C),
|
|
DAT(0xA0),
|
|
DAT(0xA0),
|
|
|
|
CMD(0xEB),
|
|
DAT(0x00),
|
|
DAT(0x01),
|
|
DAT(0xE4),
|
|
DAT(0xE4),
|
|
DAT(0x44),
|
|
DAT(0x00),
|
|
DAT(0x40),
|
|
|
|
CMD(0xED),
|
|
DAT(0xFF),
|
|
DAT(0xF7),
|
|
DAT(0x65),
|
|
DAT(0x4F),
|
|
DAT(0x0B),
|
|
DAT(0xA1),
|
|
DAT(0xCF),
|
|
DAT(0xFF),
|
|
DAT(0xFF),
|
|
DAT(0xFC),
|
|
DAT(0x1A),
|
|
DAT(0xB0),
|
|
DAT(0xF4),
|
|
DAT(0x56),
|
|
DAT(0x7F),
|
|
DAT(0xFF),
|
|
|
|
|
|
CMD(0xFF),
|
|
DAT(0x77),
|
|
DAT(0x01),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
|
|
CMD(0x36), // //U&D Y-DIR
|
|
DAT(0x10), //rotate 0: 0x00 : rotate 180 :0x10
|
|
|
|
CMD(0x3A),
|
|
DAT(0x77),
|
|
#if 0 //test pattern
|
|
CMD(0xFF),
|
|
DAT(0x77),
|
|
DAT(0x01),
|
|
DAT(0x00),
|
|
DAT(0x00),
|
|
DAT(0x12),
|
|
|
|
CMD(0xD1),
|
|
DAT(0x81),
|
|
|
|
CMD(0xD2),
|
|
DAT(0x06),
|
|
#endif
|
|
CMD(0x29),
|
|
|
|
// DLY(120),
|
|
// CMD(0x23),
|
|
// DLY(120),
|
|
#endif
|
|
END
|
|
|
|
};
|
|
|
|
|
|
lcddev_t lcdstruct = {
|
|
.name = "st7701s_mipi",
|
|
.lcd_bus_type = LCD_BUS_MIPI,
|
|
.bus_width = LCD_BUS_WIDTH_24,
|
|
.color_mode = LCD_MODE_888,
|
|
//.red_width = LCD_BUS_WIDTH_6,
|
|
//.green_width = LCD_BUS_WIDTH_6,
|
|
//.blue_width = LCD_BUS_WIDTH_6,
|
|
.osd_scan_mode = LCD_ROTATE_270,
|
|
.scan_mode =LCD_ROTATE_270,// LCD_ROTATE_90,//rotate 90
|
|
.te_mode = 0xff,//te mode, 0xff:disable
|
|
.colrarray = 0,//0:_RGB_ 1:_RBG_,2:_GBR_,3:_GRB_,4:_BRG_,5:_BGR_
|
|
//f(wr) = source_clk/div/2
|
|
//f(wr) >= screen_w * screen_h * clk_per_pixel * 60
|
|
.pclk = DEFAULT_SYS_CLK/(DEFAULT_SYS_CLK/24000000),
|
|
.even_order = 0,
|
|
.odd_order = 0,
|
|
.lcd_data_mode = (0<<31)|//data inversion mode
|
|
(2<<24)|//data compress mode
|
|
(1<<20)|//fifo mode
|
|
(0<<17)|//output cycle 2 shift direction
|
|
(0<<12)|//output cycle 2 shift bit
|
|
(0<<11)|//output cycle 1 shift direction
|
|
(0<<6)| //output cycle 1 shift bit
|
|
(0<<5)| //output cycle 0 shift direction
|
|
(8<<0), //output cycle 0 shift bit
|
|
.screen_w = 480,
|
|
.screen_h = 800,
|
|
.video_x = 0,
|
|
.video_y = 0,
|
|
.video_w = 480,//480,
|
|
.video_h = 800,//800,
|
|
.osd_x = 0,
|
|
.osd_y = 0,
|
|
.osd_w = 480, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
|
.osd_h = 800, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK
|
|
.init_table = st7701s_register_init_tab,
|
|
.frame_table = NULL,
|
|
.clk_per_pixel = 2,
|
|
.lane_num = 2,
|
|
.pclk_inv = 1,
|
|
|
|
.vlw = 2,
|
|
.vbp = 2,
|
|
.vfp = 10,
|
|
|
|
.hlw = 2,
|
|
.hbp = 8,
|
|
.hfp = 96,
|
|
|
|
|
|
.de_inv = 0,
|
|
.hs_inv = 0,
|
|
.vs_inv = 0,
|
|
|
|
|
|
.de_en = 1,
|
|
.vs_en = 1,
|
|
.hs_en = 1,
|
|
|
|
|
|
.brightness = 1,
|
|
.saturation = 7,
|
|
.contrast = 7,
|
|
.contra_index = 8,
|
|
|
|
.gamma_red = 3,
|
|
.gamma_green=3,
|
|
.gamma_blue=3,
|
|
|
|
};
|
|
|
|
#endif
|