I8080 8BIT 点亮 480x800 屏
首先确认芯片型号是否为支持型号。
此次适配的 I8080 屏为 FPC39703MS-B200-40C-10,使用的是 I8080 8Bit 进行驱动。屏幕IC是 NT35510

引脚配置如下:
| V821 | 引脚复用功能 | TFT 模块 | 
|---|---|---|
| PD1—PD8 | LCD-D3—LCD-D12 | D0—D7 | 
| PD12 | LCD-VSYNC | TE | 
| PD11 | LCD-HSYNC | RD | 
| PD9 | LCD-CLK | WR | 
| PD10 | LCD-DE | DC | 
| PD14 | GPIO OUTPUT | CS | 
| PD19 | GPIO OUTPUT | RESET | 
编写 LCD 显示屏驱动
获取屏幕初始化序列
首先询问屏厂提供初始化序列,和屏幕手册。

这里我们使用 8Bit I8080 点屏,使用 8 位的初始化代码:
void LCD_Init(void)
{
    RST=1;  
    Delay(5);
    RST=0;
    Delay(10);
    RST=1;
    Delay(120);
    //NT35510SH_BOE3.97IPS_24BIT_20141224
    WriteComm(0xFF00);WriteData(0x00AA); 
    WriteComm(0xFF01);WriteData(0x0055); 
    WriteComm(0xFF02);WriteData(0x00A5); 
    WriteComm(0xFF03);WriteData(0x0080); 
    WriteComm(0xF200);WriteData(0x0000); 
    WriteComm(0xF201);WriteData(0x0084); 
    WriteComm(0xF202);WriteData(0x0008);
    WriteComm(0x6F00);WriteData(0x000A); 
    WriteComm(0xF400);WriteData(0x0013);
    WriteComm(0xFF00);WriteData(0x00AA); 
    WriteComm(0xFF01);WriteData(0x0055); 
    WriteComm(0xFF02);WriteData(0x00A5); 
    WriteComm(0xFF03);WriteData(0x0000);
    //Enable Page 1
    WriteComm(0xF000);WriteData(0x0055); 
    WriteComm(0xF001);WriteData(0x00AA); 
    WriteComm(0xF002);WriteData(0x0052); 
    WriteComm(0xF003);WriteData(0x0008);
    WriteComm(0xF004);WriteData(0x0001);
    //AVDD Set AVDD 5.2V
    WriteComm(0xB000);WriteData(0x000C); 
    WriteComm(0xB001);WriteData(0x000C);
    WriteComm(0xB002);WriteData(0x000C);
    //AVDD ratio
    WriteComm(0xB600);WriteData(0x0046); 
    WriteComm(0xB601);WriteData(0x0046);
    WriteComm(0xB602);WriteData(0x0046); 
    //AVEE  -5.2V
    WriteComm(0xB100);WriteData(0x000C); 
    WriteComm(0xB101);WriteData(0x000C);
    WriteComm(0xB102);WriteData(0x000C);
    //AVEE ratio
    WriteComm(0xB700);WriteData(0x0026); 
    WriteComm(0xB701);WriteData(0x0026); 
    WriteComm(0xB702);WriteData(0x0026); 
    //VCL  -2.5V   
    WriteComm(0xB200);WriteData(0x0000); 
    WriteComm(0xB201);WriteData(0x0000);
    WriteComm(0xB202);WriteData(0x0000);
    //VCL ratio
    WriteComm(0xB800);WriteData(0x0034); 
    WriteComm(0xB801);WriteData(0x0034);
    WriteComm(0xB802);WriteData(0x0034);
    //VGH 15V  (Free pump) 
    WriteComm(0xBF00);WriteData(0x0001);
    WriteComm(0xB300);WriteData(0x0008);
    WriteComm(0xB301);WriteData(0x0008); 
    WriteComm(0xB302);WriteData(0x0008);  
    //VGH ratio
    WriteComm(0xB900);WriteData(0x0026); 
    WriteComm(0xB901);WriteData(0x0026);
    WriteComm(0xB902);WriteData(0x0026); 
    //VGL_REG -10V 
    WriteComm(0xB500);WriteData(0x0008);
    WriteComm(0xB501);WriteData(0x0008);
    WriteComm(0xB502);WriteData(0x0008);
    //WriteComm(0xC200);WriteData(0x0003);
    //VGLX ratio
    WriteComm(0xBA00);WriteData(0x0036); 
    WriteComm(0xBA01);WriteData(0x0036); 
    WriteComm(0xBA02);WriteData(0x0036); 
    //VGMP/VGSP 4.5V/0V
    WriteComm(0xBC00);WriteData(0x0000); 
    WriteComm(0xBC01);WriteData(0x0080); 
    WriteComm(0xBC02);WriteData(0x0000);
    //VGMN/VGSN -4.5V/0V
    WriteComm(0xBD00);WriteData(0x0000); 
    WriteComm(0xBD01);WriteData(0x0080); 
    WriteComm(0xBD02);WriteData(0x0000);
    //VCOM 
    WriteComm(0xBE00);WriteData(0x0000); 
    WriteComm(0xBE01);WriteData(0x0055); // 6A
    //Gamma Setting
    WriteComm(0xD100);WriteData(0x0000); 
    WriteComm(0xD101);WriteData(0x0001); 
    WriteComm(0xD102);WriteData(0x0000); 
    WriteComm(0xD103);WriteData(0x001C); 
    WriteComm(0xD104);WriteData(0x0000); 
    WriteComm(0xD105);WriteData(0x004E); 
    WriteComm(0xD106);WriteData(0x0000); 
    WriteComm(0xD107);WriteData(0x006A); 
    WriteComm(0xD108);WriteData(0x0000); 
    WriteComm(0xD109);WriteData(0x0085); 
    WriteComm(0xD10A);WriteData(0x0000); 
    WriteComm(0xD10B);WriteData(0x00AB); 
    WriteComm(0xD10C);WriteData(0x0000); 
    WriteComm(0xD10D);WriteData(0x00C4); 
    WriteComm(0xD10E);WriteData(0x0000); 
    WriteComm(0xD10F);WriteData(0x00FC); 
    WriteComm(0xD110);WriteData(0x0001); 
    WriteComm(0xD111);WriteData(0x0023); 
    WriteComm(0xD112);WriteData(0x0001); 
    WriteComm(0xD113);WriteData(0x0061); 
    WriteComm(0xD114);WriteData(0x0001); 
    WriteComm(0xD115);WriteData(0x0094); 
    WriteComm(0xD116);WriteData(0x0001); 
    WriteComm(0xD117);WriteData(0x00E4); 
    WriteComm(0xD118);WriteData(0x0002); 
    WriteComm(0xD119);WriteData(0x0027); 
    WriteComm(0xD11A);WriteData(0x0002); 
    WriteComm(0xD11B);WriteData(0x0029); 
    WriteComm(0xD11C);WriteData(0x0002); 
    WriteComm(0xD11D);WriteData(0x0065); 
    WriteComm(0xD11E);WriteData(0x0002);
    WriteComm(0xD11F);WriteData(0x00A6);  
    WriteComm(0xD120);WriteData(0x0002); 
    WriteComm(0xD121);WriteData(0x00CA); 
    WriteComm(0xD122);WriteData(0x0002); 
    WriteComm(0xD123);WriteData(0x00FD); 
    WriteComm(0xD124);WriteData(0x0003); 
    WriteComm(0xD125);WriteData(0x001D); 
    WriteComm(0xD126);WriteData(0x0003); 
    WriteComm(0xD127);WriteData(0x004D); 
    WriteComm(0xD128);WriteData(0x0003); 
    WriteComm(0xD129);WriteData(0x006A); 
    WriteComm(0xD12A);WriteData(0x0003); 
    WriteComm(0xD12B);WriteData(0x0095); 
    WriteComm(0xD12C);WriteData(0x0003); 
    WriteComm(0xD12D);WriteData(0x00AC); 
    WriteComm(0xD12E);WriteData(0x0003); 
    WriteComm(0xD12F);WriteData(0x00CB); 
    WriteComm(0xD130);WriteData(0x0003); 
    WriteComm(0xD131);WriteData(0x00EA); 
    WriteComm(0xD132);WriteData(0x0003); 
    WriteComm(0xD133);WriteData(0x00EF); 
    WriteComm(0xD200);WriteData(0x0000); 
    WriteComm(0xD201);WriteData(0x0001); 
    WriteComm(0xD202);WriteData(0x0000); 
    WriteComm(0xD203);WriteData(0x001C); 
    WriteComm(0xD204);WriteData(0x0000); 
    WriteComm(0xD205);WriteData(0x004E); 
    WriteComm(0xD206);WriteData(0x0000); 
    WriteComm(0xD207);WriteData(0x006A); 
    WriteComm(0xD208);WriteData(0x0000); 
    WriteComm(0xD209);WriteData(0x0085); 
    WriteComm(0xD20A);WriteData(0x0000); 
    WriteComm(0xD20B);WriteData(0x00AB); 
    WriteComm(0xD20C);WriteData(0x0000); 
    WriteComm(0xD20D);WriteData(0x00C4); 
    WriteComm(0xD20E);WriteData(0x0000); 
    WriteComm(0xD20F);WriteData(0x00FC); 
    WriteComm(0xD210);WriteData(0x0001); 
    WriteComm(0xD211);WriteData(0x0023); 
    WriteComm(0xD212);WriteData(0x0001); 
    WriteComm(0xD213);WriteData(0x0061); 
    WriteComm(0xD214);WriteData(0x0001); 
    WriteComm(0xD215);WriteData(0x0094); 
    WriteComm(0xD216);WriteData(0x0001); 
    WriteComm(0xD217);WriteData(0x00E4); 
    WriteComm(0xD218);WriteData(0x0002); 
    WriteComm(0xD219);WriteData(0x0027); 
    WriteComm(0xD21A);WriteData(0x0002); 
    WriteComm(0xD21B);WriteData(0x0029); 
    WriteComm(0xD21C);WriteData(0x0002); 
    WriteComm(0xD21D);WriteData(0x0065); 
    WriteComm(0xD21E);WriteData(0x0002);
    WriteComm(0xD21F);WriteData(0x00A6);  
    WriteComm(0xD220);WriteData(0x0002); 
    WriteComm(0xD221);WriteData(0x00CA); 
    WriteComm(0xD222);WriteData(0x0002); 
    WriteComm(0xD223);WriteData(0x00FD); 
    WriteComm(0xD224);WriteData(0x0003); 
    WriteComm(0xD225);WriteData(0x001D); 
    WriteComm(0xD226);WriteData(0x0003); 
    WriteComm(0xD227);WriteData(0x004D); 
    WriteComm(0xD228);WriteData(0x0003); 
    WriteComm(0xD229);WriteData(0x006A); 
    WriteComm(0xD22A);WriteData(0x0003); 
    WriteComm(0xD22B);WriteData(0x0095); 
    WriteComm(0xD22C);WriteData(0x0003); 
    WriteComm(0xD22D);WriteData(0x00AC); 
    WriteComm(0xD22E);WriteData(0x0003); 
    WriteComm(0xD22F);WriteData(0x00CB); 
    WriteComm(0xD230);WriteData(0x0003); 
    WriteComm(0xD231);WriteData(0x00EA); 
    WriteComm(0xD232);WriteData(0x0003); 
    WriteComm(0xD233);WriteData(0x00EF); 
    WriteComm(0xD300);WriteData(0x0000); 
    WriteComm(0xD301);WriteData(0x0001); 
    WriteComm(0xD302);WriteData(0x0000); 
    WriteComm(0xD303);WriteData(0x001C); 
    WriteComm(0xD304);WriteData(0x0000); 
    WriteComm(0xD305);WriteData(0x004E); 
    WriteComm(0xD306);WriteData(0x0000); 
    WriteComm(0xD307);WriteData(0x006A); 
    WriteComm(0xD308);WriteData(0x0000); 
    WriteComm(0xD309);WriteData(0x0085); 
    WriteComm(0xD30A);WriteData(0x0000); 
    WriteComm(0xD30B);WriteData(0x00AB); 
    WriteComm(0xD30C);WriteData(0x0000); 
    WriteComm(0xD30D);WriteData(0x00C4); 
    WriteComm(0xD30E);WriteData(0x0000); 
    WriteComm(0xD30F);WriteData(0x00FC); 
    WriteComm(0xD310);WriteData(0x0001); 
    WriteComm(0xD311);WriteData(0x0023); 
    WriteComm(0xD312);WriteData(0x0001); 
    WriteComm(0xD313);WriteData(0x0061); 
    WriteComm(0xD314);WriteData(0x0001); 
    WriteComm(0xD315);WriteData(0x0094); 
    WriteComm(0xD316);WriteData(0x0001); 
    WriteComm(0xD317);WriteData(0x00E4); 
    WriteComm(0xD318);WriteData(0x0002); 
    WriteComm(0xD319);WriteData(0x0027); 
    WriteComm(0xD31A);WriteData(0x0002); 
    WriteComm(0xD31B);WriteData(0x0029); 
    WriteComm(0xD31C);WriteData(0x0002); 
    WriteComm(0xD31D);WriteData(0x0065); 
    WriteComm(0xD31E);WriteData(0x0002);
    WriteComm(0xD31F);WriteData(0x00A6);  
    WriteComm(0xD320);WriteData(0x0002); 
    WriteComm(0xD321);WriteData(0x00CA); 
    WriteComm(0xD322);WriteData(0x0002); 
    WriteComm(0xD323);WriteData(0x00FD); 
    WriteComm(0xD324);WriteData(0x0003); 
    WriteComm(0xD325);WriteData(0x001D); 
    WriteComm(0xD326);WriteData(0x0003); 
    WriteComm(0xD327);WriteData(0x004D); 
    WriteComm(0xD328);WriteData(0x0003); 
    WriteComm(0xD329);WriteData(0x006A); 
    WriteComm(0xD32A);WriteData(0x0003); 
    WriteComm(0xD32B);WriteData(0x0095); 
    WriteComm(0xD32C);WriteData(0x0003); 
    WriteComm(0xD32D);WriteData(0x00AC); 
    WriteComm(0xD32E);WriteData(0x0003); 
    WriteComm(0xD32F);WriteData(0x00CB); 
    WriteComm(0xD330);WriteData(0x0003); 
    WriteComm(0xD331);WriteData(0x00EA); 
    WriteComm(0xD332);WriteData(0x0003); 
    WriteComm(0xD333);WriteData(0x00EF); 
    WriteComm(0xD400);WriteData(0x0000); 
    WriteComm(0xD401);WriteData(0x0001); 
    WriteComm(0xD402);WriteData(0x0000); 
    WriteComm(0xD403);WriteData(0x001C); 
    WriteComm(0xD404);WriteData(0x0000); 
    WriteComm(0xD405);WriteData(0x004E); 
    WriteComm(0xD406);WriteData(0x0000); 
    WriteComm(0xD407);WriteData(0x006A); 
    WriteComm(0xD408);WriteData(0x0000); 
    WriteComm(0xD409);WriteData(0x0085); 
    WriteComm(0xD40A);WriteData(0x0000); 
    WriteComm(0xD40B);WriteData(0x00AB); 
    WriteComm(0xD40C);WriteData(0x0000); 
    WriteComm(0xD40D);WriteData(0x00C4); 
    WriteComm(0xD40E);WriteData(0x0000); 
    WriteComm(0xD40F);WriteData(0x00FC); 
    WriteComm(0xD410);WriteData(0x0001); 
    WriteComm(0xD411);WriteData(0x0023); 
    WriteComm(0xD412);WriteData(0x0001); 
    WriteComm(0xD413);WriteData(0x0061); 
    WriteComm(0xD414);WriteData(0x0001); 
    WriteComm(0xD415);WriteData(0x0094); 
    WriteComm(0xD416);WriteData(0x0001); 
    WriteComm(0xD417);WriteData(0x00E4); 
    WriteComm(0xD418);WriteData(0x0002); 
    WriteComm(0xD419);WriteData(0x0027); 
    WriteComm(0xD41A);WriteData(0x0002); 
    WriteComm(0xD41B);WriteData(0x0029); 
    WriteComm(0xD41C);WriteData(0x0002); 
    WriteComm(0xD41D);WriteData(0x0065); 
    WriteComm(0xD41E);WriteData(0x0002);
    WriteComm(0xD41F);WriteData(0x00A6);  
    WriteComm(0xD420);WriteData(0x0002); 
    WriteComm(0xD421);WriteData(0x00CA); 
    WriteComm(0xD422);WriteData(0x0002); 
    WriteComm(0xD423);WriteData(0x00FD); 
    WriteComm(0xD424);WriteData(0x0003); 
    WriteComm(0xD425);WriteData(0x001D); 
    WriteComm(0xD426);WriteData(0x0003); 
    WriteComm(0xD427);WriteData(0x004D); 
    WriteComm(0xD428);WriteData(0x0003); 
    WriteComm(0xD429);WriteData(0x006A); 
    WriteComm(0xD42A);WriteData(0x0003); 
    WriteComm(0xD42B);WriteData(0x0095); 
    WriteComm(0xD42C);WriteData(0x0003); 
    WriteComm(0xD42D);WriteData(0x00AC); 
    WriteComm(0xD42E);WriteData(0x0003); 
    WriteComm(0xD42F);WriteData(0x00CB); 
    WriteComm(0xD430);WriteData(0x0003); 
    WriteComm(0xD431);WriteData(0x00EA); 
    WriteComm(0xD432);WriteData(0x0003); 
    WriteComm(0xD433);WriteData(0x00EF); 
    WriteComm(0xD500);WriteData(0x0000); 
    WriteComm(0xD501);WriteData(0x0001); 
    WriteComm(0xD502);WriteData(0x0000); 
    WriteComm(0xD503);WriteData(0x001C); 
    WriteComm(0xD504);WriteData(0x0000); 
    WriteComm(0xD505);WriteData(0x004E); 
    WriteComm(0xD506);WriteData(0x0000); 
    WriteComm(0xD507);WriteData(0x006A); 
    WriteComm(0xD508);WriteData(0x0000); 
    WriteComm(0xD509);WriteData(0x0085); 
    WriteComm(0xD50A);WriteData(0x0000); 
    WriteComm(0xD50B);WriteData(0x00AB); 
    WriteComm(0xD50C);WriteData(0x0000); 
    WriteComm(0xD50D);WriteData(0x00C4); 
    WriteComm(0xD50E);WriteData(0x0000); 
    WriteComm(0xD50F);WriteData(0x00FC); 
    WriteComm(0xD510);WriteData(0x0001); 
    WriteComm(0xD511);WriteData(0x0023); 
    WriteComm(0xD512);WriteData(0x0001); 
    WriteComm(0xD513);WriteData(0x0061); 
    WriteComm(0xD514);WriteData(0x0001); 
    WriteComm(0xD515);WriteData(0x0094); 
    WriteComm(0xD516);WriteData(0x0001); 
    WriteComm(0xD517);WriteData(0x00E4); 
    WriteComm(0xD518);WriteData(0x0002); 
    WriteComm(0xD519);WriteData(0x0027); 
    WriteComm(0xD51A);WriteData(0x0002); 
    WriteComm(0xD51B);WriteData(0x0029); 
    WriteComm(0xD51C);WriteData(0x0002); 
    WriteComm(0xD51D);WriteData(0x0065); 
    WriteComm(0xD51E);WriteData(0x0002);
    WriteComm(0xD51F);WriteData(0x00A6);  
    WriteComm(0xD520);WriteData(0x0002); 
    WriteComm(0xD521);WriteData(0x00CA); 
    WriteComm(0xD522);WriteData(0x0002); 
    WriteComm(0xD523);WriteData(0x00FD); 
    WriteComm(0xD524);WriteData(0x0003); 
    WriteComm(0xD525);WriteData(0x001D); 
    WriteComm(0xD526);WriteData(0x0003); 
    WriteComm(0xD527);WriteData(0x004D); 
    WriteComm(0xD528);WriteData(0x0003); 
    WriteComm(0xD529);WriteData(0x006A); 
    WriteComm(0xD52A);WriteData(0x0003); 
    WriteComm(0xD52B);WriteData(0x0095); 
    WriteComm(0xD52C);WriteData(0x0003); 
    WriteComm(0xD52D);WriteData(0x00AC); 
    WriteComm(0xD52E);WriteData(0x0003); 
    WriteComm(0xD52F);WriteData(0x00CB); 
    WriteComm(0xD530);WriteData(0x0003); 
    WriteComm(0xD531);WriteData(0x00EA); 
    WriteComm(0xD532);WriteData(0x0003); 
    WriteComm(0xD533);WriteData(0x00EF); 
    WriteComm(0xD600);WriteData(0x0000); 
    WriteComm(0xD601);WriteData(0x0001); 
    WriteComm(0xD602);WriteData(0x0000); 
    WriteComm(0xD603);WriteData(0x001C); 
    WriteComm(0xD604);WriteData(0x0000); 
    WriteComm(0xD605);WriteData(0x004E); 
    WriteComm(0xD606);WriteData(0x0000); 
    WriteComm(0xD607);WriteData(0x006A); 
    WriteComm(0xD608);WriteData(0x0000); 
    WriteComm(0xD609);WriteData(0x0085); 
    WriteComm(0xD60A);WriteData(0x0000); 
    WriteComm(0xD60B);WriteData(0x00AB); 
    WriteComm(0xD60C);WriteData(0x0000); 
    WriteComm(0xD60D);WriteData(0x00C4); 
    WriteComm(0xD60E);WriteData(0x0000); 
    WriteComm(0xD60F);WriteData(0x00FC); 
    WriteComm(0xD610);WriteData(0x0001); 
    WriteComm(0xD611);WriteData(0x0023); 
    WriteComm(0xD612);WriteData(0x0001); 
    WriteComm(0xD613);WriteData(0x0061); 
    WriteComm(0xD614);WriteData(0x0001); 
    WriteComm(0xD615);WriteData(0x0094); 
    WriteComm(0xD616);WriteData(0x0001); 
    WriteComm(0xD617);WriteData(0x00E4); 
    WriteComm(0xD618);WriteData(0x0002); 
    WriteComm(0xD619);WriteData(0x0027); 
    WriteComm(0xD61A);WriteData(0x0002); 
    WriteComm(0xD61B);WriteData(0x0029); 
    WriteComm(0xD61C);WriteData(0x0002); 
    WriteComm(0xD61D);WriteData(0x0065); 
    WriteComm(0xD61E);WriteData(0x0002);
    WriteComm(0xD61F);WriteData(0x00A6);  
    WriteComm(0xD620);WriteData(0x0002); 
    WriteComm(0xD621);WriteData(0x00CA); 
    WriteComm(0xD622);WriteData(0x0002); 
    WriteComm(0xD623);WriteData(0x00FD); 
    WriteComm(0xD624);WriteData(0x0003); 
    WriteComm(0xD625);WriteData(0x001D); 
    WriteComm(0xD626);WriteData(0x0003); 
    WriteComm(0xD627);WriteData(0x004D); 
    WriteComm(0xD628);WriteData(0x0003); 
    WriteComm(0xD629);WriteData(0x006A); 
    WriteComm(0xD62A);WriteData(0x0003); 
    WriteComm(0xD62B);WriteData(0x0095); 
    WriteComm(0xD62C);WriteData(0x0003); 
    WriteComm(0xD62D);WriteData(0x00AC); 
    WriteComm(0xD62E);WriteData(0x0003); 
    WriteComm(0xD62F);WriteData(0x00CB); 
    WriteComm(0xD630);WriteData(0x0003); 
    WriteComm(0xD631);WriteData(0x00EA); 
    WriteComm(0xD632);WriteData(0x0003); 
    WriteComm(0xD633);WriteData(0x00EF); 
    //Enable Page 0
    WriteComm(0xF000);WriteData(0x0055); 
    WriteComm(0xF001);WriteData(0x00AA); 
    WriteComm(0xF002);WriteData(0x0052); 
    WriteComm(0xF003);WriteData(0x0008);
    WriteComm(0xF004);WriteData(0x0000);
    //Display control
    WriteComm(0xB100);WriteData(0x00CC);// MCU I/F & mipi cmd mode?CC, RGB I/F  & mipi video mode ?FC
    WriteComm(0xB101);WriteData(0x0000); 
    WriteComm(0xB400);WriteData(0x0010); 
    //Source hold time
    WriteComm(0xB600);WriteData(0x0005);
    //Gate EQ control
    WriteComm(0xB700);WriteData(0x0070); 
    WriteComm(0xB701);WriteData(0x0070);
    //Source EQ control (Mode 2)
    WriteComm(0xB800);WriteData(0x0001); 
    WriteComm(0xB801);WriteData(0x0005); 
    WriteComm(0xB802);WriteData(0x0005); 
    WriteComm(0xB803);WriteData(0x0005);
    //Inversion mode  (C)
    WriteComm(0xBC00);WriteData(0x0002); //02:2DOT
    WriteComm(0xBC01);WriteData(0x0000); 
    WriteComm(0xBC02);WriteData(0x0000); 
    //BOE's Setting (default) 
    WriteComm(0xCC00);WriteData(0x0003); 
    WriteComm(0xCC01);WriteData(0x0050); 
    WriteComm(0xCC02);WriteData(0x0050); 
    //Porch Adjust
    WriteComm(0xBD00);WriteData(0x0001); 
    WriteComm(0xBD01);WriteData(0x0084); 
    WriteComm(0xBD02);WriteData(0x0007); 
    WriteComm(0xBD03);WriteData(0x0031); 
    WriteComm(0xBD04);WriteData(0x0000); 
    WriteComm(0xBE00);WriteData(0x0001); 
    WriteComm(0xBE01);WriteData(0x0084); 
    WriteComm(0xBE02);WriteData(0x0007); 
    WriteComm(0xBE03);WriteData(0x0031); 
    WriteComm(0xBE04);WriteData(0x0000);
    WriteComm(0xBF00);WriteData(0x0001); 
    WriteComm(0xBF01);WriteData(0x0084); 
    WriteComm(0xBF02);WriteData(0x0007); 
    WriteComm(0xBF03);WriteData(0x0031); 
    WriteComm(0xBF04);WriteData(0x0000);
    WriteComm(0x3500);WriteData(0x0000); 
    WriteComm(0x3600);WriteData(0x0000); 
    WriteComm(0x3A00);WriteData(0x0055);	 //0x77:24BIT
    WriteComm(0x1100);
    Delay(120); 
    WriteComm(0x2900);
    Delay(120); 
}
编写屏幕驱动
选择一个现成的 LCD 驱动,复制一份出来改写即可,这里选择 st7789v_cpu.c 驱动来修改。
先复制一份,把驱动全部重命名新屏幕 nt35510_cpu,包括内置的变量与命名

代码内 st7789v 相关字段也重命名新屏幕 nt35510

找到初始化序列的部分 static void lcd_panel_nt35510_init(u32 sel, struct disp_panel_para *info)

查阅屏幕手册可知,这个屏幕的命令写是16位,数据写是8位或16位。

由于使用的是 8bit MCU 接口,一次无法传 16 位的数据,所以需要实现函数拆分成两部分发送。在这里封装两个函数供使用:
static void sunxi_lcd_cpu_write_index_16b_8b(u32 sel, u32 i)
{
	sunxi_lcd_cpu_write_index(sel, (i >> 8) & 0xFF);
	sunxi_lcd_cpu_write_index(sel, i & 0xFF);
}
static void sunxi_lcd_cpu_write_data_8b(u32 sel, u32 i)
{
	sunxi_lcd_cpu_write_data(sel, i & 0xFF);
}
把原来的初始化序列删除,然后将屏厂提供的初始化序列复制进来。
| 屏厂函数 | LCD框架接口 | 
|---|---|
| WriteComm | sunxi_lcd_cpu_write_index_16b_8b | 
| WriteData | sunxi_lcd_cpu_write_data_8b | 
| Delayms | sunxi_lcd_delay_ms | 

配置屏幕驱动
编辑文件 bsp/drivers/video/sunxi/disp2/disp/lcd/Kconfig 新增新驱动的索引
config LCD_SUPPORT_NT35510
	bool "LCD support NT35510 panel"
	default n
	help
		if you want to support NT35510 panel for display driver, select it.

编辑文件 bsp/drivers/video/sunxi/disp2/disp/Makefile 增加驱动引用
disp-$(CONFIG_LCD_SUPPORT_NT35510) += lcd/nt35510_cpu.o

编辑 bsp/drivers/video/sunxi/disp2/disp/lcd/panels.c 把屏幕驱动加入数组中
#if IS_ENABLED(CONFIG_LCD_SUPPORT_NT35510)
	&nt35510_cpu_panel,
#endif

编辑 bsp/drivers/video/sunxi/disp2/disp/lcd/panels.h 把屏幕加入引用
#if IS_ENABLED(CONFIG_LCD_SUPPORT_NT35510)
extern struct __lcd_panel nt35510_cpu_panel;
#endif

配置屏幕开启
针对 i8080 屏幕,还需要写入 21H,29H开显示之后,还需要开启 GRAM 写入,对应寄存器是 2CH,一般屏厂会在初始化中提供,但是也有屏厂初始化中不提供这个指令。

如果出现这样屏幕可以亮但是花屏,且送显示没有反应的情况(如下图)

可以尝试增加开启 GRAM 写入的指令到初始化序列最后一行:
sunxi_lcd_cpu_write_index_16b_8b(0, 0x2c00);

完整屏幕驱动
完整的屏幕驱动如下:
#include "nt35510_cpu.h"
#define CPU_TRI_MODE
#define DBG_INFO(format, args...)                                              \
	(printk("[NT35510 LCD INFO] LINE:%04d-->%s:" format, __LINE__,         \
		__func__, ##args))
#define DBG_ERR(format, args...)                                               \
	(printk("[NT35510 LCD ERR] LINE:%04d-->%s:" format, __LINE__,          \
		__func__, ##args))
#define panel_reset(val) sunxi_lcd_gpio_set_value(sel, 0, val)
#define lcd_cs(val) sunxi_lcd_gpio_set_value(sel, 1, val)
static void lcd_panel_nt35510_init(u32 sel, struct disp_panel_para *info);
static void LCD_power_on(u32 sel);
static void LCD_power_off(u32 sel);
static void LCD_bl_open(u32 sel);
static void LCD_bl_close(u32 sel);
static void LCD_panel_init(u32 sel);
static void LCD_panel_exit(u32 sel);
static void LCD_cfg_panel_info(struct panel_extend_para *info)
{
#if defined(__DISP_TEMP_CODE__)
	u32 i = 0, j = 0;
	u32 items;
	u8 lcd_gamma_tbl[][2] = {
		/* {input value, corrected value} */
		{ 0, 0 },     { 15, 15 },   { 30, 30 },	  { 45, 45 },
		{ 60, 60 },   { 75, 75 },   { 90, 90 },	  { 105, 105 },
		{ 120, 120 }, { 135, 135 }, { 150, 150 }, { 165, 165 },
		{ 180, 180 }, { 195, 195 }, { 210, 210 }, { 225, 225 },
		{ 240, 240 }, { 255, 255 },
	};
	u32 lcd_cmap_tbl[2][3][4] = {
		{
			{ LCD_CMAP_G0, LCD_CMAP_B1, LCD_CMAP_G2, LCD_CMAP_B3 },
			{ LCD_CMAP_B0, LCD_CMAP_R1, LCD_CMAP_B2, LCD_CMAP_R3 },
			{ LCD_CMAP_R0, LCD_CMAP_G1, LCD_CMAP_R2, LCD_CMAP_G3 },
		},
		{
			{ LCD_CMAP_B3, LCD_CMAP_G2, LCD_CMAP_B1, LCD_CMAP_G0 },
			{ LCD_CMAP_R3, LCD_CMAP_B2, LCD_CMAP_R1, LCD_CMAP_B0 },
			{ LCD_CMAP_G3, LCD_CMAP_R2, LCD_CMAP_G1, LCD_CMAP_R0 },
		},
	};
	items = sizeof(lcd_gamma_tbl) / 2;
	for (i = 0; i < items - 1; i++) {
		u32 num = lcd_gamma_tbl[i + 1][0] - lcd_gamma_tbl[i][0];
		for (j = 0; j < num; j++) {
			u32 value = 0;
			value = lcd_gamma_tbl[i][1] +
				((lcd_gamma_tbl[i + 1][1] -
				lcd_gamma_tbl[i][1]) *
				j) / num;
			info->lcd_gamma_tbl[lcd_gamma_tbl[i][0] + j] =
				(value << 16) + (value << 8) + value;
		}
	}
	info->lcd_gamma_tbl[255] = (lcd_gamma_tbl[items - 1][1] << 16) +
				(lcd_gamma_tbl[items - 1][1] << 8) +
				lcd_gamma_tbl[items - 1][1];
	memcpy(info->lcd_cmap_tbl, lcd_cmap_tbl, sizeof(lcd_cmap_tbl));
#endif
}
static s32 LCD_open_flow(u32 sel)
{
	LCD_OPEN_FUNC(sel, LCD_power_on, 120);
#ifdef CPU_TRI_MODE
	LCD_OPEN_FUNC(sel, LCD_panel_init, 100);
	LCD_OPEN_FUNC(sel, sunxi_lcd_tcon_enable, 50);
#else
	LCD_OPEN_FUNC(sel, sunxi_lcd_tcon_enable, 100);
	LCD_OPEN_FUNC(sel, LCD_panel_init, 50);
#endif
	LCD_OPEN_FUNC(sel, LCD_bl_open, 0);
	return 0;
}
static s32 LCD_close_flow(u32 sel)
{
	LCD_CLOSE_FUNC(sel, LCD_bl_close, 20);
#ifdef CPU_TRI_MODE
	LCD_CLOSE_FUNC(sel, sunxi_lcd_tcon_disable, 10);
	LCD_CLOSE_FUNC(sel, LCD_panel_exit, 50);
#else
	LCD_CLOSE_FUNC(sel, LCD_panel_exit, 10);
	LCD_CLOSE_FUNC(sel, sunxi_lcd_tcon_disable, 10);
#endif
	LCD_CLOSE_FUNC(sel, LCD_power_off, 0);
	return 0;
}
static void LCD_power_on(u32 sel)
{
	/* config lcd_power pin to open lcd power0 */
	sunxi_lcd_power_enable(sel, 0);
	sunxi_lcd_pin_cfg(sel, 1);
}
static void LCD_power_off(u32 sel)
{
	/* lcd_cs, active low */
	lcd_cs(1);
	sunxi_lcd_delay_ms(10);
	/* lcd_rst, active hight */
	panel_reset(1);
	sunxi_lcd_delay_ms(10);
	sunxi_lcd_pin_cfg(sel, 0);
	/* config lcd_power pin to close lcd power0 */
	sunxi_lcd_power_disable(sel, 0);
}
static void LCD_bl_open(u32 sel)
{
	sunxi_lcd_pwm_enable(sel);
	/* config lcd_bl_en pin to open lcd backlight */
	sunxi_lcd_backlight_enable(sel);
}
static void LCD_bl_close(u32 sel)
{
	/* config lcd_bl_en pin to close lcd backlight */
	sunxi_lcd_backlight_disable(sel);
	sunxi_lcd_pwm_disable(sel);
}
/* static int bootup_flag = 0; */
static void LCD_panel_init(u32 sel)
{
	struct disp_panel_para *info =
		kmalloc(sizeof(struct disp_panel_para), GFP_KERNEL);
	DBG_INFO("\n");
	bsp_disp_get_panel_info(sel, info);
	lcd_panel_nt35510_init(sel, info);
	kfree(info);
	return;
}
static void LCD_panel_exit(u32 sel)
{
}
static void sunxi_lcd_cpu_write_index_16b_8b(u32 sel, u32 i)
{
	sunxi_lcd_cpu_write_index(sel, (i >> 8) & 0xFF);
	sunxi_lcd_cpu_write_index(sel, i & 0xFF);
}
static void sunxi_lcd_cpu_write_data_8b(u32 sel, u32 i)
{
	sunxi_lcd_cpu_write_data(sel, i & 0xFF);
}
static void lcd_panel_nt35510_init(u32 sel, struct disp_panel_para *info)
{
	DBG_INFO("\n");
	/* lcd_cs, active low */
	lcd_cs(0);
	sunxi_lcd_delay_ms(5);
	panel_reset(1);
	sunxi_lcd_delay_ms(20);
	panel_reset(0);
	sunxi_lcd_delay_ms(20);
	panel_reset(1);
	sunxi_lcd_delay_ms(120);
	/* NT35510SH_BOE3.97IPS_24BIT_20141224 */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF00);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0055);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF02);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A5);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF03);
	sunxi_lcd_cpu_write_data_8b(0, 0x0080);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF200);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF201);
	sunxi_lcd_cpu_write_data_8b(0, 0x0084);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF202);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x6F00);
	sunxi_lcd_cpu_write_data_8b(0, 0x000A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF400);
	sunxi_lcd_cpu_write_data_8b(0, 0x0013);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF00);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0055);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF02);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A5);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xFF03);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	/* Enable Page 1 */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF000);
	sunxi_lcd_cpu_write_data_8b(0, 0x0055);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF001);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF002);
	sunxi_lcd_cpu_write_data_8b(0, 0x0052);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF003);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF004);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	/* AVDD Set AVDD 5.2V */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB000);
	sunxi_lcd_cpu_write_data_8b(0, 0x000C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB001);
	sunxi_lcd_cpu_write_data_8b(0, 0x000C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB002);
	sunxi_lcd_cpu_write_data_8b(0, 0x000C);
	/* AVDD ratio */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB600);
	sunxi_lcd_cpu_write_data_8b(0, 0x0046);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB601);
	sunxi_lcd_cpu_write_data_8b(0, 0x0046);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB602);
	sunxi_lcd_cpu_write_data_8b(0, 0x0046);
	/* AVEE  -5.2V */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB100);
	sunxi_lcd_cpu_write_data_8b(0, 0x000C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB101);
	sunxi_lcd_cpu_write_data_8b(0, 0x000C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB102);
	sunxi_lcd_cpu_write_data_8b(0, 0x000C);
	/* AVEE ratio */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB700);
	sunxi_lcd_cpu_write_data_8b(0, 0x0026);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB701);
	sunxi_lcd_cpu_write_data_8b(0, 0x0026);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB702);
	sunxi_lcd_cpu_write_data_8b(0, 0x0026);
	/* VCL  -2.5V */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB200);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB201);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB202);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	/* VCL ratio */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB800);
	sunxi_lcd_cpu_write_data_8b(0, 0x0034);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB801);
	sunxi_lcd_cpu_write_data_8b(0, 0x0034);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB802);
	sunxi_lcd_cpu_write_data_8b(0, 0x0034);
	/* VGH 15V  (Free pump) */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBF00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB300);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB301);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB302);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	/* VGH ratio */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB900);
	sunxi_lcd_cpu_write_data_8b(0, 0x0026);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB901);
	sunxi_lcd_cpu_write_data_8b(0, 0x0026);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB902);
	sunxi_lcd_cpu_write_data_8b(0, 0x0026);
	/* VGL_REG -10V */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB500);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB501);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB502);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	/* sunxi_lcd_cpu_write_index_16b_8b(0, 0xC200);sunxi_lcd_cpu_write_data_8b(0, 0x0003); */
	/* VGLX ratio */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBA00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0036);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBA01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0036);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBA02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0036);
	/* VGMP/VGSP 4.5V/0V */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBC00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBC01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0080);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBC02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	/* VGMN/VGSN -4.5V/0V */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0080);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	/* VCOM */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0055); /*  6A */
	/* Gamma Setting */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD100);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD101);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD102);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD103);
	sunxi_lcd_cpu_write_data_8b(0, 0x001C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD104);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD105);
	sunxi_lcd_cpu_write_data_8b(0, 0x004E);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD106);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD107);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD108);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD109);
	sunxi_lcd_cpu_write_data_8b(0, 0x0085);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD10A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD10B);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD10C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD10D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00C4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD10E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD10F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD110);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD111);
	sunxi_lcd_cpu_write_data_8b(0, 0x0023);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD112);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD113);
	sunxi_lcd_cpu_write_data_8b(0, 0x0061);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD114);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD115);
	sunxi_lcd_cpu_write_data_8b(0, 0x0094);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD116);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD117);
	sunxi_lcd_cpu_write_data_8b(0, 0x00E4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD118);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD119);
	sunxi_lcd_cpu_write_data_8b(0, 0x0027);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD11A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD11B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0029);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD11C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD11D);
	sunxi_lcd_cpu_write_data_8b(0, 0x0065);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD11E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD11F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A6);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD120);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD121);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD122);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD123);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FD);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD124);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD125);
	sunxi_lcd_cpu_write_data_8b(0, 0x001D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD126);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD127);
	sunxi_lcd_cpu_write_data_8b(0, 0x004D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD128);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD129);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD12A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD12B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0095);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD12C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD12D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD12E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD12F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD130);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD131);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD132);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD133);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EF);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD200);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD201);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD202);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD203);
	sunxi_lcd_cpu_write_data_8b(0, 0x001C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD204);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD205);
	sunxi_lcd_cpu_write_data_8b(0, 0x004E);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD206);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD207);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD208);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD209);
	sunxi_lcd_cpu_write_data_8b(0, 0x0085);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD20A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD20B);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD20C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD20D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00C4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD20E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD20F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD210);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD211);
	sunxi_lcd_cpu_write_data_8b(0, 0x0023);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD212);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD213);
	sunxi_lcd_cpu_write_data_8b(0, 0x0061);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD214);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD215);
	sunxi_lcd_cpu_write_data_8b(0, 0x0094);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD216);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD217);
	sunxi_lcd_cpu_write_data_8b(0, 0x00E4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD218);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD219);
	sunxi_lcd_cpu_write_data_8b(0, 0x0027);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD21A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD21B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0029);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD21C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD21D);
	sunxi_lcd_cpu_write_data_8b(0, 0x0065);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD21E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD21F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A6);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD220);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD221);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD222);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD223);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FD);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD224);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD225);
	sunxi_lcd_cpu_write_data_8b(0, 0x001D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD226);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD227);
	sunxi_lcd_cpu_write_data_8b(0, 0x004D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD228);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD229);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD22A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD22B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0095);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD22C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD22D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD22E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD22F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD230);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD231);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD232);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD233);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EF);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD300);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD301);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD302);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD303);
	sunxi_lcd_cpu_write_data_8b(0, 0x001C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD304);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD305);
	sunxi_lcd_cpu_write_data_8b(0, 0x004E);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD306);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD307);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD308);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD309);
	sunxi_lcd_cpu_write_data_8b(0, 0x0085);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD30A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD30B);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD30C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD30D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00C4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD30E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD30F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD310);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD311);
	sunxi_lcd_cpu_write_data_8b(0, 0x0023);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD312);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD313);
	sunxi_lcd_cpu_write_data_8b(0, 0x0061);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD314);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD315);
	sunxi_lcd_cpu_write_data_8b(0, 0x0094);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD316);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD317);
	sunxi_lcd_cpu_write_data_8b(0, 0x00E4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD318);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD319);
	sunxi_lcd_cpu_write_data_8b(0, 0x0027);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD31A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD31B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0029);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD31C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD31D);
	sunxi_lcd_cpu_write_data_8b(0, 0x0065);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD31E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD31F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A6);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD320);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD321);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD322);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD323);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FD);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD324);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD325);
	sunxi_lcd_cpu_write_data_8b(0, 0x001D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD326);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD327);
	sunxi_lcd_cpu_write_data_8b(0, 0x004D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD328);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD329);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD32A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD32B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0095);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD32C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD32D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD32E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD32F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD330);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD331);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD332);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD333);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EF);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD400);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD401);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD402);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD403);
	sunxi_lcd_cpu_write_data_8b(0, 0x001C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD404);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD405);
	sunxi_lcd_cpu_write_data_8b(0, 0x004E);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD406);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD407);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD408);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD409);
	sunxi_lcd_cpu_write_data_8b(0, 0x0085);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD40A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD40B);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD40C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD40D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00C4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD40E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD40F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD410);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD411);
	sunxi_lcd_cpu_write_data_8b(0, 0x0023);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD412);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD413);
	sunxi_lcd_cpu_write_data_8b(0, 0x0061);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD414);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD415);
	sunxi_lcd_cpu_write_data_8b(0, 0x0094);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD416);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD417);
	sunxi_lcd_cpu_write_data_8b(0, 0x00E4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD418);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD419);
	sunxi_lcd_cpu_write_data_8b(0, 0x0027);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD41A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD41B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0029);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD41C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD41D);
	sunxi_lcd_cpu_write_data_8b(0, 0x0065);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD41E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD41F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A6);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD420);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD421);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD422);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD423);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FD);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD424);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD425);
	sunxi_lcd_cpu_write_data_8b(0, 0x001D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD426);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD427);
	sunxi_lcd_cpu_write_data_8b(0, 0x004D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD428);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD429);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD42A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD42B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0095);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD42C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD42D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD42E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD42F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD430);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD431);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD432);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD433);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EF);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD500);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD501);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD502);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD503);
	sunxi_lcd_cpu_write_data_8b(0, 0x001C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD504);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD505);
	sunxi_lcd_cpu_write_data_8b(0, 0x004E);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD506);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD507);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD508);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD509);
	sunxi_lcd_cpu_write_data_8b(0, 0x0085);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD50A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD50B);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD50C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD50D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00C4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD50E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD50F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD510);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD511);
	sunxi_lcd_cpu_write_data_8b(0, 0x0023);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD512);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD513);
	sunxi_lcd_cpu_write_data_8b(0, 0x0061);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD514);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD515);
	sunxi_lcd_cpu_write_data_8b(0, 0x0094);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD516);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD517);
	sunxi_lcd_cpu_write_data_8b(0, 0x00E4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD518);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD519);
	sunxi_lcd_cpu_write_data_8b(0, 0x0027);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD51A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD51B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0029);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD51C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD51D);
	sunxi_lcd_cpu_write_data_8b(0, 0x0065);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD51E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD51F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A6);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD520);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD521);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD522);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD523);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FD);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD524);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD525);
	sunxi_lcd_cpu_write_data_8b(0, 0x001D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD526);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD527);
	sunxi_lcd_cpu_write_data_8b(0, 0x004D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD528);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD529);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD52A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD52B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0095);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD52C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD52D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD52E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD52F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD530);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD531);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD532);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD533);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EF);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD600);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD601);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD602);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD603);
	sunxi_lcd_cpu_write_data_8b(0, 0x001C);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD604);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD605);
	sunxi_lcd_cpu_write_data_8b(0, 0x004E);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD606);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD607);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD608);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD609);
	sunxi_lcd_cpu_write_data_8b(0, 0x0085);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD60A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD60B);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD60C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD60D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00C4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD60E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD60F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD610);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD611);
	sunxi_lcd_cpu_write_data_8b(0, 0x0023);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD612);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD613);
	sunxi_lcd_cpu_write_data_8b(0, 0x0061);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD614);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD615);
	sunxi_lcd_cpu_write_data_8b(0, 0x0094);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD616);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD617);
	sunxi_lcd_cpu_write_data_8b(0, 0x00E4);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD618);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD619);
	sunxi_lcd_cpu_write_data_8b(0, 0x0027);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD61A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD61B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0029);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD61C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD61D);
	sunxi_lcd_cpu_write_data_8b(0, 0x0065);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD61E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD61F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00A6);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD620);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD621);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD622);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD623);
	sunxi_lcd_cpu_write_data_8b(0, 0x00FD);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD624);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD625);
	sunxi_lcd_cpu_write_data_8b(0, 0x001D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD626);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD627);
	sunxi_lcd_cpu_write_data_8b(0, 0x004D);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD628);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD629);
	sunxi_lcd_cpu_write_data_8b(0, 0x006A);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD62A);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD62B);
	sunxi_lcd_cpu_write_data_8b(0, 0x0095);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD62C);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD62D);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD62E);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD62F);
	sunxi_lcd_cpu_write_data_8b(0, 0x00CB);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD630);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD631);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD632);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xD633);
	sunxi_lcd_cpu_write_data_8b(0, 0x00EF);
	/* Enable Page 0 */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF000);
	sunxi_lcd_cpu_write_data_8b(0, 0x0055);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF001);
	sunxi_lcd_cpu_write_data_8b(0, 0x00AA);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF002);
	sunxi_lcd_cpu_write_data_8b(0, 0x0052);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF003);
	sunxi_lcd_cpu_write_data_8b(0, 0x0008);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xF004);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	/* Display control */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB100);
	/*  MCU I/F & mipi cmd mode?CC, RGB I/F  & mipi video mode ?FC */
	sunxi_lcd_cpu_write_data_8b(0, 0x00CC);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB101);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB400);
	sunxi_lcd_cpu_write_data_8b(0, 0x0010);
	/* Source hold time */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB600);
	sunxi_lcd_cpu_write_data_8b(0, 0x0005);
	/* Gate EQ control */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB700);
	sunxi_lcd_cpu_write_data_8b(0, 0x0070);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB701);
	sunxi_lcd_cpu_write_data_8b(0, 0x0070);
	/* Source EQ control (Mode 2) */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB800);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB801);
	sunxi_lcd_cpu_write_data_8b(0, 0x0005);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB802);
	sunxi_lcd_cpu_write_data_8b(0, 0x0005);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xB803);
	sunxi_lcd_cpu_write_data_8b(0, 0x0005);
	/* Inversion mode  (C) */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBC00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0002); /* 02:2DOT */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBC01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBC02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	/* BOE's Setting (default) */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xCC00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0003);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xCC01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0050);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xCC02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0050);
	/* Porch Adjust */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0084);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0007);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD03);
	sunxi_lcd_cpu_write_data_8b(0, 0x0031);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBD04);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0084);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0007);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE03);
	sunxi_lcd_cpu_write_data_8b(0, 0x0031);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBE04);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBF00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0001);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBF01);
	sunxi_lcd_cpu_write_data_8b(0, 0x0084);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBF02);
	sunxi_lcd_cpu_write_data_8b(0, 0x0007);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBF03);
	sunxi_lcd_cpu_write_data_8b(0, 0x0031);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0xBF04);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
#if defined(CPU_TRI_MODE)
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x3500);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
#endif
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x3600);
	sunxi_lcd_cpu_write_data_8b(0, 0x0000);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x3A00);
	sunxi_lcd_cpu_write_data_8b(0, 0x0066); /* 0x77:24BIT */
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x1100);
	sunxi_lcd_delay_ms(120);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x2900);
	sunxi_lcd_delay_ms(120);
	sunxi_lcd_cpu_write_index_16b_8b(0, 0x2c00);
}
/* panel driver name, must mach the name of lcd_drv_name in sys_config.fex */
struct __lcd_panel nt35510_cpu_panel = {
	.name = "nt35510_cpu",
	.func = {
		.cfg_panel_info = LCD_cfg_panel_info,
		.cfg_open_flow = LCD_open_flow,
		.cfg_close_flow = LCD_close_flow,
	},
};
配置屏幕驱动
进入内核,勾选对应驱动。

编辑设备树,配置屏幕时序与引脚
&disp {
	disp_init_enable         = <1>;
	disp_mode                = <0>;
	screen0_output_type      = <1>;
	screen0_output_mode      = <4>;
	screen0_to_lcd_index     = <0>;
	screen1_output_type      = <3>;
	screen1_output_mode      = <10>;
	screen1_to_lcd_index     = <2>;
	screen1_output_format    = <0>;
	screen1_output_bits      = <0>;
	screen1_output_eotf      = <4>;
	screen1_output_cs        = <257>;
	screen1_output_dvi_hdmi  = <2>;
	screen1_output_range     = <2>;
	screen1_output_scan      = <0>;
	screen1_output_aspect_ratio = <8>;
	fb_format                = <0>;
	fb_num                   = <1>;
	fb_debug                 = <0>;
	/*<disp channel layer zorder>*/
	fb0_map                  = <0 0 0 16>;
	fb0_width                = <480>;
	fb0_height               = <800>;
	/*<disp channel layer zorder>*/
	fb1_map                  = <0 2 0 16>;
	fb1_width                = <300>;
	fb1_height               = <300>;
	/*<disp channel layer zorder>*/
	fb2_map                  = <1 0 0 16>;
	fb2_width                = <1280>;
	fb2_height               = <720>;
	/*<disp channel layer zorder>*/
	fb3_map                  = <1 1 0 16>;
	fb3_width                = <300>;
	fb3_height               = <300>;
	chn_cfg_mode             = <1>;
	disp_para_zone           = <1>;
};
&lcd0 {
	lcd_used            = <1>;
	lcd_driver_name     = "nt35510_cpu";
	lcd_if              = <1>;
	lcd_x               = <480>;
	lcd_y               = <800>;
	lcd_width           = <43>;
	lcd_height          = <63>;
	lcd_dclk_freq       = <58>;
	lcd_hbp             = <35>;
	lcd_ht              = <650>;
	lcd_hspw            = <10>;
	lcd_vbp             = <55>;
	lcd_vt              = <1240>;
	lcd_vspw            = <20>;
	lcd_backlight       = <50>;
	lcd_pwm_used        = <0>;
	lcd_pwm_ch          = <4>;
	lcd_pwm_freq        = <50000>;
	lcd_pwm_pol         = <1>;
	lcd_pwm_max_limit   = <255>;
	lcd_bright_curve_en = <1>;
	lcd_frm             = <2>;
	lcd_gamma_en        = <0>;
	lcd_bright_curve_en = <0>;
	lcd_cmap_en         = <0>;
	lcdgamma4iep        = <22>;
	lcd_cpu_mode        = <1>;
	lcd_cpu_te          = <2>;
	lcd_cpu_if          = <12>;
	/* rst */
	lcd_gpio_0          = <&pio PD 19 GPIO_ACTIVE_LOW>;
	/* cs */
	lcd_gpio_1          = <&pio PD 14 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&rgb8_pins_a>, <&rgb8_pins_ctl_a>;
	pinctrl-1 = <&rgb8_pins_b>, <&rgb8_pins_ctl_b>;
};
测试屏幕
使用命令查看 TCON 彩条,这个彩条是由 TCON 发出的,操作更加底层。
echo 1 > /sys/class/disp/disp/attr/colorbar

使用命令查看 DE 彩条,这个彩条是由 DE 合成发出的,如果 DE 出问题则可以看到 TCON 彩条看不到 DE 彩条。
如果刚才开了 TCON 彩条,记得先关一下,TCON 彩条优先级更高
echo 0 > /sys/class/disp/disp/attr/colorbar
echo 8 > /sys/class/disp/disp/attr/colorbar

FAQ
I8080接口显示抖动有花纹
- 改大时钟管脚的管脚驱动能力,改大。
黑屏无显示
黑屏,没有屏幕信号输出
首先确认芯片型号是否为 V821L2-WXX,其他型号不支持 I8080 显示。
完全黑屏,背光也没有
- 屏驱动添加失败。驱动没有加载屏驱动,导致背光电源相关函数没有运行到。
- 屏驱动加载成功,但是没有执行到开背光函数(可以在uboot的屏驱动中加打印确认开屏流程的执行情况)。这时候大概率是屏驱动的开屏函数没有执行完,uboot就执行完毕进入内核了。需要在满足屏手册上电时序要求的情况下,尽量减少延迟。
- PWM 配置和背光电路的问题,另外就是直接测量下硬件测量下相关管脚和电压,再检查屏是否初始化成功。
黑屏但是有背光
- 没送图层。如果应用没有送任何图层那么表现的现象就是黑屏。
- SoC端的显示接口模块没有供电。SoC端模块没有供电自然无法传输视频信号到屏上。
- 复位脚没有复位。如果有复位脚,请确保硬件连接正确,确保复位脚的复位操作有放到屏驱动中。
- board.dts中- lcd0有严重错误。第一个是- lcd的- timing搞错了,请严格按照屏手册中的提示来写。第二个就是,接口类型搞错。
- 屏的初始化命令不对。包括各个步骤先后顺序,延时等,这个时候请找屏厂确认初始化命令。