smdk2412.c
来自「s3c6410的 Uboot 代码, 感兴趣的可以看看呀」· C语言 代码 · 共 740 行 · 第 1/2 页
C
740 行
gpdat |= (0x3<<12); __raw_writel(gpdat, S3C_GPEDAT); gpdat = __raw_readl(S3C_GPGDAT); gpdat |= (0x1<<2); __raw_writel(gpdat, S3C_GPGDAT); gpcon = __raw_readl(S3C_GPECON); gpcon &= ~(0xf<<24); gpcon |= (0x5<<24); __raw_writel(gpcon, S3C_GPECON); gpcon = __raw_readl(S3C_GPGCON); gpcon &= ~(0x3<<4); gpcon |= (0x1<<4); __raw_writel(gpcon, S3C_GPGCON);#endif} void Init_LDI(void){ u32 gpdat; printf("<S3C_LTS222QV> LCD will be initialized\n"); SetGPIOforLDI();#ifdef CONFIG_SMDK2412_V14 LCD_RESET_Hi; mdelay(20);#endif LCD_DEN_Hi; LCD_DCLK_Hi; LCD_DSERI_Hi; /////////////////////////////////////////////////////////////////// // Power Setting Function 1 ////////////////////////////////////////////////////////////////// Write_LDI(0x22, 0x01); // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1 Write_LDI(0x03, 0x01); // RESET REGISTER /////////////////////////////////////////////////////////////////// // Initializing Function 1 /////////////////////////////////////////////////////////////////// Write_LDI(0x00, 0x0a); // CONTROL REGISTER 1 udelay(1); // delay about 300ns Write_LDI(0x01, 0x10); // CONTROL REGISTER 2 udelay(1); // delay about 300ns Write_LDI(0x02, 0x06); // RGB INTERFACE REGISTER udelay(1); // delay about 300ns Write_LDI(0x05, 0x00); // DATA ACCESS CONTROL REGISTER udelay(1); // delay about 300ns Write_LDI(0x0D, 0x00); // // delay about 40ms mdelay(40); /////////////////////////////////////////////////////////////////// // Initializing Function 2 /////////////////////////////////////////////////////////////////// Write_LDI(0x0E, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x0F, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x10, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x11, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x12, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x13, 0x00); // DISPLAY SIZE CONTROL REGISTER udelay(1); // delay about 300ns Write_LDI(0x14, 0x00); // PARTIAL-OFF AREA COLOR REGISTER 1 udelay(1); // delay about 300ns Write_LDI(0x15, 0x00); // PARTIAL-OFF AREA COLOR REGISTER 2 udelay(1); // delay about 300ns Write_LDI(0x16, 0x00); // PARTIAL 1 DISPLAY AREA STARTING REGISTER 1 udelay(1); // delay about 300ns Write_LDI(0x17, 0x00); // PARTIAL 1 DISPLAY AREA STARTING REGISTER 2 udelay(1); // delay about 300ns Write_LDI(0x34, 0x01); // POWER SUPPLY SYSTEM CONTROL REGISTER 14 udelay(1); // delay about 300ns Write_LDI(0x35, 0x00); // POWER SUPPLY SYSTEM CONTROL REGISTER 7 // delay about 30ms mdelay(30); //////////////////////////////////////////////////////////////////// // Initializing Function 3 //////////////////////////////////////////////////////////////////// Write_LDI(0x8D, 0x01); // udelay(1); // delay about 300ns Write_LDI(0x8B, 0x28); // udelay(1); // delay about 300ns Write_LDI(0x4B, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x4C, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x4D, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x4E, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x4F, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x50, 0x00); // ID CODE REGISTER 2 // delay about 50 us udelay(50); Write_LDI(0x86, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x87, 0x26); // udelay(1); // delay about 300ns Write_LDI(0x88, 0x02); // udelay(1); // delay about 300ns Write_LDI(0x89, 0x05); // udelay(1); // delay about 300ns Write_LDI(0x33, 0x01); // POWER SUPPLY SYSTEM CONTROL REGISTER 13 udelay(1); // delay about 300ns Write_LDI(0x37, 0x06); // POWER SUPPLY SYSTEM CONTROL REGISTER 12 // delay about 50 us udelay(50); Write_LDI(0x76, 0x00); // SCROLL AREA START REGISTER 2 // delay about 30ms mdelay(30); ///////////////////////////////////////////////////////////////////// // Initializing Function 4 ///////////////////////////////////////////////////////////////////// Write_LDI(0x42, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x43, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x44, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x45, 0x00); // CALIBRATION REGISTER udelay(1); // delay about 300ns Write_LDI(0x46, 0xef); // udelay(1); // delay about 300ns Write_LDI(0x47, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x48, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x49, 0x01); // ID CODE REGISTER 1 check it out // delay about 50 us udelay(50); Write_LDI(0x4A, 0x3f); // udelay(1); // delay about 300ns Write_LDI(0x3C, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x3D, 0x00); // udelay(1); // delay about 300ns Write_LDI(0x3E, 0x01); // udelay(1); // delay about 300ns Write_LDI(0x3F, 0x3f); // udelay(1); // delay about 300ns// Write_LDI(0x40,0x03); // horizontal back porch Write_LDI(0x40, 0x01); // horizontal back porch //050105 Boaz.Kim udelay(1); // delay about 300ns// Write_LDI(0x41,0x04); // vertical back porch Write_LDI(0x41, 0x0a); // horizontal back porch //050105 Boaz.Kim udelay(1); // delay about 300ns Write_LDI(0x8F, 0x05); // // delay about 30ms mdelay(30); ///////////////////////////////////////////////////////////////////// // Initializing Function 5 ///////////////////////////////////////////////////////////////////// Write_LDI(0x90, 0x05); // udelay(1); // delay about 300ns Write_LDI(0x91, 0x44); // udelay(1); // delay about 300ns Write_LDI(0x92, 0x44); // udelay(1); // delay about 300ns Write_LDI(0x93, 0x44); // udelay(1); // delay about 300ns Write_LDI(0x94, 0x33); // udelay(1); // delay about 300ns Write_LDI(0x95, 0x05); // udelay(1); // delay about 300ns Write_LDI(0x96, 0x05); // udelay(1); // delay about 300ns Write_LDI(0x97, 0x44); // udelay(1); // delay about 300ns Write_LDI(0x98, 0x44); // udelay(1); // delay about 300ns Write_LDI(0x99, 0x44); // udelay(1); // delay about 300ns Write_LDI(0x9A, 0x33); // udelay(1); // delay about 300ns Write_LDI(0x9B, 0x33); // udelay(1); // delay about 300ns Write_LDI(0x9C, 0x33); // udelay(1); // delay about 300ns#if 1 Write_LDI(0x9D, 0x80); // 16 or 18bit RGB#else Write_LDI(0x9D, 0x81); // 6bit RGB#endif // delay about 30ms mdelay(30); ///////////////////////////////////////////////////////////////////// // Power Setting 2 ///////////////////////////////////////////////////////////////////// Write_LDI(0x1D, 0x08); // // delay about 30ms mdelay(30); Write_LDI(0x23, 0x00); // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2 // delay about 50 us udelay(50); Write_LDI(0x24, 0x94); // POWER SUPPLY SYSTEM CONTROL REGISTER 1 // delay about 50 us udelay(50); Write_LDI(0x25, 0x6f); // POWER SUPPLY SYSTEM CONTROL REGISTER 2 // delay about 40ms mdelay(40); ///////////////////////////////////////////////////////////////////// // Power Setting 3 ///////////////////////////////////////////////////////////////////// Write_LDI(0x28, 0x1e); // Write_LDI(0x1A, 0x00); // Write_LDI(0x21, 0x10); // PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2 Write_LDI(0x18, 0x25); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1 // delay about 40ms mdelay(40); Write_LDI(0x19, 0x48); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 2 Write_LDI(0x18, 0xe5); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1 // delay about 10ms mdelay(10); Write_LDI(0x18, 0xF7); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1 // delay about 40ms mdelay(40); Write_LDI(0x1B, 0x07); // org// Write_LDI(0x1B,0x01); // 90 rotate// Write_LDI(0x1B,0x02); // 90 rotate// Write_LDI(0x1B,0x03); // 90 rotate // delay about 80ms mdelay(80); Write_LDI(0x1F, 0x6b); // org// Write_LDI(0x1F,0x5E); // 90 rotate Write_LDI(0x20, 0x51); // org, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1// Write_LDI(0x20,0x5F); // 90 rotate, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1 Write_LDI(0x1E, 0xc1); // // delay about 10ms mdelay(10); Write_LDI(0x21, 0x00); // PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2 Write_LDI(0x3B, 0x01); // // delay about 20ms mdelay(20); Write_LDI(0x00, 0x20); // CONTROL REGISTER 1 Write_LDI(0x02, 0x01); // RGB INTERFACE REGISTER // delay about 10ms mdelay(10);// Reg16_OPCLK_DIV = 0x0201; // 6.4}#endif#ifdef BOARD_LATE_INITint board_late_init (void){ uint *magic = (uint*)(PHYS_SDRAM_1); char boot_cmd[100]; if ((0x24564236 == magic[0]) && (0x20764316 == magic[1])) { sprintf(boot_cmd, "nand erase 0 40000;nand write %08x 0 40000", PHYS_SDRAM_1+0x8000); magic[0] = 0; magic[1] = 0; printf("\n\nready for self-burning U-Boot image\n\n"); setenv("bootdelay", "0"); setenv("bootcmd", boot_cmd); }#ifdef CONFIG_LCD_2412 Init_LDI();#endif return 0;}#endif#ifdef CONFIG_DISPLAY_BOARDINFOint checkboard(void){ vu_long *mem_reg = (vu_long*) 0x48000000; printf("Board: SMDK2412 "); switch ((*mem_reg>>2) & 0x3) { case 0: puts("SDRAM "); break; case 1: puts("Mobile SDRAM "); break; case 2: case 3: puts("Mobile DDR "); break; default: puts("unknown Memory Type \n"); } switch ((*mem_reg) & 0x1) { case 1: puts("16bits \n"); break; case 0: default: puts("32bits \n"); } return (0);}#endif#ifdef CONFIG_ENABLE_MMUulong virt_to_phy_smdk2412(ulong addr){ if ((0xc0000000 <= addr) && (addr < 0xc4000000)) return (addr - 0xc0000000 + 0x30000000); else printf("do not support this address : %08lx\n", addr); return addr;}#endif#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)#include <linux/mtd/nand.h>extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];void nand_init(void){ nand_probe(CFG_NAND_BASE); if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) { print_size(nand_dev_desc[0].totlen, "\n"); }}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?