MAX_CARLINK_A270S/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/mipi.c

223 lines
5.3 KiB
C
Raw Permalink Normal View History

2025-01-21 16:49:37 +08:00
#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);
// <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
ARK_MIPI_WRITEL(0x10, 0x5);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ARK_MIPI_WRITEL(0x14, 0x0);// active high
// <20><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ARK_MIPI_WRITEL(0x58, 0x6);// VBP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ARK_MIPI_WRITEL(0x5c, 0x6);// VFP <20><>ǰ<EFBFBD><C7B0>
ARK_MIPI_WRITEL(0x60, 0x500);// VACT <20><><EFBFBD><EFBFBD>Ч
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));
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PHY<48><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>
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