#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