/* * ===================================================================================== * * Filename: bootstrap.h * Version: 1.0.0 * Author: Guo Wenxue * CopyRight: 2011 (C) Guo Wenxue * Description: Some Reigster address definition for bootstrap.S * ===================================================================================== */ #define S3C_WATCHDOG_BASE 0x53000000 #define S3C_INTERRUPT_BASE 0x4a000000 #define SRCPND_OFFSET 0x00 #define INTMOD_OFFSET 0x04 #define INTMSK_OFFSET 0x08 #define PRIORITY_OFFSET 0x0c #define INTPND_OFFSET 0x10 #define INTOFFSET_OFFSET 0x14 #define SUBSRCPND_OFFSET 0x18 #define INTSUBMSK_OFFSET 0x1c #define S3C_CLOCK_POWER_BASE 0x4c000000 #define LOCKTIME_OFFSET 0x00 #define MPLLCON_OFFSET 0x04 #define UPLLCON_OFFSET 0x08 #define CLKCON_OFFSET 0x0c #define CLKSLOW_OFFSET 0x10 #define CLKDIVN_OFFSET 0x14 #define CAMDIVN_OFFSET 0x18 #define BWSCON 0x48000000 #define MDIV_405 0x7f << 12 #define PSDIV_405 0x21 #define GPBCON 0x56000010 #define GPBDAT 0x56000014 #define GPBUP 0x56000018 #define OUTPUT 0x01 /* Set GPIO port as output mode*/ #define INPUT 0x00 /* Set GPIO port as input mode*/ #define BEEP 0 /* On FL2440 board, LED0 use GPB0*/ #define LED0 5 /* On FL2440 board, LED0 use GPB5*/ #define LED1 6 /* On FL2440 board, LED0 use GPB6*/ #define LED2 8 /* On FL2440 board, LED0 use GPB8*/ #define LED3 10 /* On FL2440 board, LED0 use GPB10*/ /* BWSCON */ #define DW8 (0x0) #define DW16 (0x1) #define DW32 (0x2) #define WAIT (0x1<<2) #define UBLB (0x1<<3) #define B1_BWSCON (DW16) #define B2_BWSCON (DW16) #define B3_BWSCON (DW16 + WAIT + UBLB) #define B4_BWSCON (DW16) #define B5_BWSCON (DW16) #define B6_BWSCON (DW32) #define B7_BWSCON (DW32) #define B0_Tacs 0x0 #define B0_Tcos 0x0 #define B0_Tacc 0x7 #define B0_Tcoh 0x0 #define B0_Tah 0x0 #define B0_Tacp 0x0 #define B0_PMC 0x0 #define B1_Tacs 0x0 #define B1_Tcos 0x0 #define B1_Tacc 0x7 #define B1_Tcoh 0x0 #define B1_Tah 0x0 #define B1_Tacp 0x0 #define B1_PMC 0x0 #define B2_Tacs 0x0 #define B2_Tcos 0x0 #define B2_Tacc 0x7 #define B2_Tcoh 0x0 #define B2_Tah 0x0 #define B2_Tacp 0x0 #define B2_PMC 0x0 #define B3_Tacs 0xc #define B3_Tcos 0x7 #define B3_Tacc 0xf #define B3_Tcoh 0x1 #define B3_Tah 0x0 #define B3_Tacp 0x0 #define B3_PMC 0x0 #define B4_Tacs 0x0 #define B4_Tcos 0x0 #define B4_Tacc 0x7 #define B4_Tcoh 0x0 #define B4_Tah 0x0 #define B4_Tacp 0x0 #define B4_PMC 0x0 #define B5_Tacs 0xc #define B5_Tcos 0x7 #define B5_Tacc 0xf #define B5_Tcoh 0x1 #define B5_Tah 0x0 #define B5_Tacp 0x0 #define B5_PMC 0x0 /* SDRAM is on HSB bus, so its clock is from HCLK, FCLK=400, HCLK=100; so SDRAM 1clk=10ns */ #define B6_MT 0x3 /* SDRAM */ // K4S561632 datasheet: RAS to CAS delay(Trcd) Min value should be 18/20ns, HCLK is 100MHz, so 1clk=10ns // EM63A165 datasheet: RAS# to CAS# delay(Trcd) Min value should be 15/20ns, HCLK is 100MHz, so 1clk=10ns #define B6_Trcd 0x2 /* 4clk */ #define B6_SCAN 0x1 /* 9bit */ #define B7_MT 0x3 /* SDRAM */ #define B7_Trcd 0x1 /* 3clk */ #define B7_SCAN 0x1 /* 9bit */ /* REFRESH register<0x48000024> parameter */ #define REFEN 0x1 /* Refresh enable */ #define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */ // Trp: Row precharge time // K4S561632 datasheet: Min(Trp) value should be 18/20ns; // EM63A165 datasheet: Min value should be 15/20ns; #define Trp 0x2 /* 4clk */ // Trc: Row cycle time // K4S561632 datasheet: Min value should be 60/65ns; // EM63A165 datasheet: Min value should be 60/63ns; // S3C2440 datasheet: REFRESH register describe: SDRAM Row cycle time: Trc=Tsrc+Trp #define Tsrc 0x2 /* 6clk, so Trc=Tsrc+Trp=6+3=9clk */ // K4S561632 datasheet: 64ms refresh period (8K Cycle): 64000/8192=7.81us // EM63A165 datasheet: 8192 refresh cycles/64ms: 64000/8192=7.81us // S3C2440 datasheet: REFRESH Register Refresh period = (2^11-refresh_count+1)/HCLK // So Refresh count = 2^11 + 1 - 100x7.81 = 1268 #define REFCNT 1268 //#define REFCNT 489 /* HCLK=100Mhz, (2048+1-15.6*100) */