223 lines
5.3 KiB
C
223 lines
5.3 KiB
C
#include <string.h>
|
|
|
|
#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
|