#include "lib/lcd/lcd.h" #if LCD_JD9852_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} const uint8_t jd9852_register_init_tab[][2] = { DLY(200), CMD(0xDF), //Password DAT(0x98), DAT(0x51), DAT(0xE9), //---------------- PAGE0 -------------- CMD(0xDE), DAT(0x00), //VGMP,VGSP,VGMN,VGSN 4.2 CMD(0xB7), DAT(0x1E), DAT(0x7D), DAT(0x1E), DAT(0x2B), //Set_R_GAMMA CMD(0xC8), DAT(0x3F), DAT(0x31), DAT(0x29), DAT(0x28), DAT(0x2C), DAT(0x31), DAT(0x2D), DAT(0x2D), DAT(0x2A), DAT(0x28), DAT(0x23), DAT(0x16), DAT(0x10), DAT(0x0E), DAT(0x08), DAT(0x0E), DAT(0x3F), DAT(0x31), DAT(0x29), DAT(0x28), DAT(0x2C), DAT(0x31), DAT(0x2D), DAT(0x2C), DAT(0x2A), DAT(0x28), DAT(0x23), DAT(0x16), DAT(0x10), DAT(0x0E), DAT(0x08), DAT(0x0E), //POW_CTRL CMD(0xB9), DAT(0x33), DAT(0x08), DAT(0xCC), //DCDC_SEL CMD(0xBB), DAT(0x46),//VGH 14.75,VGL-9.6 DAT(0x7A), DAT(0x30), DAT(0xD0), //3 DAT(0x7C), //6 DAT(0x60), DAT(0x70),//50 DAT(0x70), //VDDD_CTRL CMD(0xBC), DAT(0x38), DAT(0x3C), //SETSTBA CMD(0xC0), DAT(0x31), DAT(0x20), //SETPANEL(default) CMD(0xC1), DAT(0x12), //SETRGBCYC CMD(0xC3), DAT(0x08), DAT(0x00), DAT(0x0A), DAT(0x10), DAT(0x08), DAT(0x54), DAT(0x45), DAT(0x71), DAT(0x2C), //SETRGBCYC(default) CMD(0xC4), DAT(0x00), DAT(0xA0), DAT(0x79), DAT(0x0E), DAT(0x0A), DAT(0x16), DAT(0x79), DAT(0x0E), DAT(0x0A), DAT(0x16), DAT(0x79), DAT(0x0E), DAT(0x0A), DAT(0x16), DAT(0x82), DAT(0x00), DAT(0x03), //SET_GD(default) CMD(0xD0), DAT(0x04), DAT(0x0C), DAT(0x6B), DAT(0x0F), DAT(0x07), DAT(0x03), //RAMCTRL(default) CMD(0xD7), DAT(0x13), DAT(0x00), //---------------- PAGE2 -------------- CMD(0xDE), DAT(0x02), DLY(1), //DCDC_SET //SSD_Number(0x06), CMD(0xB8), DAT(0x1D), DAT(0xA0), DAT(0x2F), DAT(0x04), DAT(0x33), //SETRGBCYC2 CMD(0xC1), DAT(0x10), DAT(0x66), DAT(0x66), DAT(0x01), //---------------- PAGE0 -------------- CMD(0xDE), DAT(0x00), // sleep out CMD(0x11), // SLPOUT DLY(120), //---------------- PAGE2 -------------- CMD(0xDE), DAT(0x02), DLY(1), //OSCM CMD(0xC5), DAT(0x4E), DAT(0x00), DAT(0x00), DLY(1), //SETMIPI_2 CMD(0xCA), DAT(0x30), DAT(0x20), DAT(0xF4), DLY(1), //---------------- PAGE4 -------------- CMD(0xDE), DAT(0x04), DLY(1), //SETPHY3 CMD(0xD3), DAT(0x3C), DLY(100), //---------------- PAGE0 -------------- CMD(0xDE), DAT(0x00), DLY(50), // display on CMD(0x29), // SLPOUT END }; lcddev_t lcdstruct = { .name = "jd9852_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, .scan_mode = 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 = 10000000, .even_order = 0, .odd_order = 0, .lane_num = 1, .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 = 240, .screen_h = 320, .video_x = 0, .video_y = 0, .video_w = 240, .video_h = 320, .osd_x = 0, .osd_y = 0, .osd_w = 240, // 0 : value will set to video_w , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK .osd_h = 320, // 0 : value will set to video_h , use for 4:3 LCD +16:9 sensor show UPDOWN BLACK .init_table = jd9852_register_init_tab, .frame_table = NULL, .clk_per_pixel = 2, .pclk_inv = 1, .vlw = 2, .vbp = 2, .vfp = 10, .hlw = 2, .hbp = 8, .hfp = 12, .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