#include #include "FreeRTOS.h" #include "chip.h" #include "board.h" #if LCD_INTERFACE_TYPE == LCD_INTERFACE_MIPI #define ARK_MIPI_WRITEL(reg, val) writel(val, REGS_MIPI_BASE+reg) #define ARK_MIPI_READL(reg) readl(REGS_MIPI_BASE+reg) void mipi_init(void) { unsigned int val; udelay(10000); val = readl(REGS_SYSCTL_BASE + SYS_ANA1_CFG); val |= (0x3 <<30)|(0x7 <<22); writel(val, REGS_SYSCTL_BASE + SYS_ANA1_CFG); val = readl(REGS_SYSCTL_BASE + SYS_PERCTL_CFG); val |= (0x1<<8); writel(val, REGS_SYSCTL_BASE + SYS_PERCTL_CFG); ARK_MIPI_WRITEL(0x04, 0x0); ARK_MIPI_WRITEL(0xa0, 0x0); ARK_MIPI_WRITEL(0x08, 0x17); ARK_MIPI_WRITEL(0x2c, 0x1c); ARK_MIPI_WRITEL(0x9c, 0x09000c); ARK_MIPI_WRITEL(0x94, 0x0); ARK_MIPI_WRITEL(0x98, 0x180014); ARK_MIPI_WRITEL(0xa4, 0x2803); //ARK_MIPI_WRITEL(0x38, 0x1bf02); ARK_MIPI_WRITEL(0x38, 0xbf02); ARK_MIPI_WRITEL(0x0c, 0x0); ARK_MIPI_WRITEL(0x68,0x000b4700); // 视频数据位宽、格式配置 ARK_MIPI_WRITEL(0x10, 0x5); // 极性配置 ARK_MIPI_WRITEL(0x14, 0x0);// active high // 有效点数720 ARK_MIPI_WRITEL(0x3c, 0x1e0); // HSA为12 ARK_MIPI_WRITEL(0x48, 29); // Thbp = (Pixel clk period/Clklane byte period)*HBP ARK_MIPI_WRITEL(0x4c, 18); // Thline = (Pixel clk period/Clklane byte period)*HLINE // HLINE = HSA+HBP+HACT+HFP ARK_MIPI_WRITEL(0x50, 0x237); ARK_MIPI_WRITEL(0x54, 0x10);// VSA 场消隐 ARK_MIPI_WRITEL(0x58, 0x6);// VBP 场后肩 ARK_MIPI_WRITEL(0x5c, 0x6);// VFP 场前肩 ARK_MIPI_WRITEL(0x60, 0x500);// VACT 场有效 ARK_MIPI_WRITEL(0x34, 0x1); ARK_MIPI_WRITEL(0x18, 0xa000a); ARK_MIPI_WRITEL(0xc4, 0xffffffff); ARK_MIPI_WRITEL(0xc8, 0xffffffff); ARK_MIPI_WRITEL(0x04, 0x1); ARK_MIPI_WRITEL(0xa0, 0xf); ARK_MIPI_WRITEL(0xb8, 0x44); ARK_MIPI_WRITEL(0xb8, 0x10044); ARK_MIPI_WRITEL(0xb4, 0x2); ARK_MIPI_WRITEL(0xb4, 0x0); ARK_MIPI_WRITEL(0xb8, 0x2c); ARK_MIPI_WRITEL(0xb4, 0x2); ARK_MIPI_WRITEL(0xb4, 0x0); while(!(ARK_MIPI_READL(0xb0) & 0x5)); // 当读取到锁相环锁定及PHY启动完成后 ARK_MIPI_WRITEL(0x94, 0x1); //udelay(200000); //ARK_MIPI_WRITEL(0x180, 0x4); ARK_MIPI_WRITEL(0x100, 0x1000000); udelay(200000); //panel init ARK_MIPI_WRITEL(0x70, 0x9483ffb9); ARK_MIPI_WRITEL(0x6c, 0x439); ARK_MIPI_WRITEL(0x70, 0x721248b1); ARK_MIPI_WRITEL(0x70, 0x71243209); ARK_MIPI_WRITEL(0x70, 0x432f51); ARK_MIPI_WRITEL(0x6c, 0xb39); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x680363ba); ARK_MIPI_WRITEL(0x70, 0xc0b26b); ARK_MIPI_WRITEL(0x6c, 0x739); ARK_MIPI_WRITEL(0x70, 0x64a040b2); ARK_MIPI_WRITEL(0x70, 0x2f0a0e); ARK_MIPI_WRITEL(0x6c, 0x739); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x1c781cb4); ARK_MIPI_WRITEL(0x70, 0x01781c78); ARK_MIPI_WRITEL(0x70, 0x0055860c); ARK_MIPI_WRITEL(0x70, 0x1c781c3f); ARK_MIPI_WRITEL(0x70, 0x01781c78); ARK_MIPI_WRITEL(0x70, 0x860c); ARK_MIPI_WRITEL(0x6c, 0x1639); ARK_MIPI_WRITEL(0x70, 0x000000d3); ARK_MIPI_WRITEL(0x70, 0x08076400); ARK_MIPI_WRITEL(0x70, 0x07103208); ARK_MIPI_WRITEL(0x70, 0x15320700); ARK_MIPI_WRITEL(0x70, 0x00150515); ARK_MIPI_WRITEL(0x70, 0x00081032); ARK_MIPI_WRITEL(0x70, 0x09093335); ARK_MIPI_WRITEL(0x70, 0x37070d37); ARK_MIPI_WRITEL(0x70, 0x080e); ARK_MIPI_WRITEL(0x6c, 0x2239); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x241818d5); ARK_MIPI_WRITEL(0x70, 0x1b1a1a24); ARK_MIPI_WRITEL(0x70, 0x0605041b); ARK_MIPI_WRITEL(0x70, 0x02010007); ARK_MIPI_WRITEL(0x70, 0x19181803); ARK_MIPI_WRITEL(0x70, 0x22212019); ARK_MIPI_WRITEL(0x70, 0x18181823); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x070, 0x18); ARK_MIPI_WRITEL(0x6c, 0x2d39); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x241919d6); ARK_MIPI_WRITEL(0x70, 0x1b1a1a24); ARK_MIPI_WRITEL(0x70, 0x0102031b); ARK_MIPI_WRITEL(0x70, 0x05060700); ARK_MIPI_WRITEL(0x70, 0x18181804); ARK_MIPI_WRITEL(0x70, 0x21222318); ARK_MIPI_WRITEL(0x70, 0x18181820); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18181818); ARK_MIPI_WRITEL(0x70, 0x18); ARK_MIPI_WRITEL(0x6c, 0x2d39); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x4848b6); ARK_MIPI_WRITEL(0x6c, 0x339); ARK_MIPI_WRITEL(0x70, 0x281e00e0); ARK_MIPI_WRITEL(0x70, 0x3733302f); ARK_MIPI_WRITEL(0x70, 0x887a6b34); ARK_MIPI_WRITEL(0x70, 0x9e9b8b84); ARK_MIPI_WRITEL(0x70, 0xa4aaaa9f); ARK_MIPI_WRITEL(0x70, 0x5d5fc0b1); ARK_MIPI_WRITEL(0x70, 0x70686561); ARK_MIPI_WRITEL(0x70, 0x1e007f7e); ARK_MIPI_WRITEL(0x70, 0x33302f28); ARK_MIPI_WRITEL(0x70, 0x7a6b3437); ARK_MIPI_WRITEL(0x70, 0x9b8b8488); ARK_MIPI_WRITEL(0x70, 0xaaaa9f9e); ARK_MIPI_WRITEL(0x70, 0x5fc0b1a4); ARK_MIPI_WRITEL(0x70, 0x6865615d); ARK_MIPI_WRITEL(0x70, 0x7f7e70); ARK_MIPI_WRITEL(0x6c, 0x3b39); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x3cc); ARK_MIPI_WRITEL(0x6c, 0x239); ARK_MIPI_WRITEL(0x70, 0x311fc0); ARK_MIPI_WRITEL(0x6c, 0x339); ARK_MIPI_WRITEL(0x070, 0x2d4); ARK_MIPI_WRITEL(0x6c, 0x239); udelay(10000); ARK_MIPI_WRITEL(0x70, 0x1bd); ARK_MIPI_WRITEL(0x6c, 0x239); ARK_MIPI_WRITEL(0x70, 0xb1); ARK_MIPI_WRITEL(0x6c, 0x239); ARK_MIPI_WRITEL(0x70, 0xbd); ARK_MIPI_WRITEL(0x6c, 0x239); ARK_MIPI_WRITEL(0x70, 0xedc6); ARK_MIPI_WRITEL(0x6c, 0x239); ARK_MIPI_WRITEL(0x6c, 0x1105); udelay(250000); ARK_MIPI_WRITEL(0x6c, 0x2905); udelay(120000); ARK_MIPI_WRITEL(0x38, 0x3f02); ARK_MIPI_WRITEL(0x34, 0x0); } #endif