/*------------------------------------------------------*/ /* TERON Articia / SDRAM Init */ /*------------------------------------------------------*/ * XD_CTL = 0x81000000 (0x74) * HBUS_ACC_CTL_0 &= 0xFFFFFDFF (0x5c) /* host bus access ctl reg 2(5e) */ /* set - CPU read from memory data one clock after data is latched */ * GLOBL_INFO_0 |= 0x00004000 (0x50) /* global info register 2 (52), AGP/PCI bus 1 arbiter is addressed in Articia S */ PCI_1_SB_CONFIG_0 |= 0x00000400 (0x80d0) /* PCI1 side band config reg 2 (d2), enable read acces while write buffer not empty */ MEM_RAS_CTL_0 |= 0x3f000000 (0xcc) &= 0x3fffffff /* RAS park control reg 0(cc), park access enable is set */ HOST_RDBUF_CTL |= 0x10000000 (0x70) &= 0x10ffffff /* host read buffer control reg, enable prefetch for CPU read from DRAM control */ HBUS_ACC_CTL_0 |= 0x0100001f (0x5c) &= 0xf1ffffff /* host bus access control register, enable CPU address bus pipe control */ /* two outstanding requests, *** changed to 2 from 3 */ /* enable line merge write control for CPU write to system memory, PCI 1 */ /* and PCI 0 bus memory; enable page merge write control for write to */ /* PCI bus 0 & bus 1 memory */ SRAM_CTL |= 0x00004000 (0xc8) &= 0xffbff7ff /* DRAM detail timing control register 1 (ca), bit 3 set to 0 */ /* DRAM start access latency control - wait for one clock */ /* ff9f changed to ffbf */ DIM0_TIM_CTL_0 = 0x737d737d (0xc9) /* DRAM timing control for dimm0 & dimm1; set wait one clock */ /* cycle for next data access */ DIM2_TIM_CTL_0 = 0x737d737d (0xca) /* DRAM timing control for dimm2 & dimm3; set wait one clock */ /* cycle for next data access */ DIM0_BNK0_CTL_0 = BNK0_RAM_SIZ_128MB (0x90) /* set dimm0 bank0 for 128 MB */ DIM0_BNK1_CTL_0 = BNK1_RAM_SIZ_128MB (0x94) /* set dimm0 for bank1 */ DIM0_TIM_CTL_0 = 0xf3bf0000 (0xc9) /* dimm0 timing control register; RAS - CAS latency - 4 clock */ /* CAS access latency - 3 wait; pre-charge latency - 3 wait */ /* pre-charge command period control - 5 clock; wait one clock */ /* cycle for next data access; read to write access latency control */ /* - 2 clock cycles */ DRAM_GBL_CTL_0 |= 0x00000100 (0xc0) &= 0xffff01ff /* memory global control register - support buffer sdram on bank 0 */ DRAM_ECC_CTL_0 |= 0x00260000 (0xc4) &= 0xff26ffff /* enable ECC; enable read, modify, write control */ DRAM_REF_CTL_0 = DRAM_REF_DATA (0xb8) /* set DRAM refresh parameters *** changed to 00940100 */ nop nop nop nop nop DRAM_ECC_CTL_0 |= 0x20243280 (0xc4) /* turn off ecc */ /* for SDRAM bank 0 */ DRAM_ECC_CTL_0 |= 0x20243290 (0xc4) ? /* for SDRAM bank 1 */ /* Additional Stuff...*/ GLOBL_CTRL |= 0x20000b00 (0x54) PCI_0_SB_CONFIG |= 0x04100007 (0xd0) /* PCI 0 Side band config reg*/ 0x8000083c |= 0x00080000 /* Disable VGA decode on PCI Bus 1 */ /*End Additional Stuff..*/ /*--------------------------------------------------------------*/ /* TERON serial port initialization code */ /*--------------------------------------------------------------*/ 0x84380080 |= 0x00030000 /* enable super IO configuration VIA chip Register 85 */ /* Enable super I/O config mode */ 0xfe0003f0 = 0xe2 bl delay1 0xfe0003f1 = 0x0f bl delay1 /* enable com1 & com2, parallel port disabled */ 0xfe0003f0 = 0xe7 bl delay1 /* let's make com1 base as 0x3f8 */ 0xfe0003f1 = 0xfe bl delay1 0xfe0003f0 = 0xe8 bl delay1 /* let's make com2 base as 0x2f8 */ 0xfe0003f1 = 0xbe 0x84380080 &= 0xfffdffff /* closing super IO configuration VIA chip Register 85 */ /* -------------------------------*/ 0xfe0003fb = 0x83 bl delay1 /*latch enable word length -8 bit */ /* set mslab bit */ 0xfe0003f8 = 0x0c bl delay1 /* set baud rate lsb for 9600 baud */ 0xfe0003f9 = 0x0 bl delay1 /* set baud rate msb for 9600 baud */ 0xfe0003fb = 0x03 bl delay1 /* reset mslab */ /*--------------------------------------------------------------*/ /* END TERON Serial Port Initialization Code */ /*--------------------------------------------------------------*/ /*--------------------------------------------------------------*/ /* END TERON Articia / SDRAM Initialization code */ /*--------------------------------------------------------------*/ Proposed from Documentation: write dmem 0xfec00cf8 0x50000080 write dmem 0xfee00cfc 0xc0305411 Writes to index 0x50-0x53. 0x50: Global Information Register 0 0xC0 = Little Endian CPU, Sequential order Burst 0x51: Global Information Register 1 Read only, 0x30 = Provides PowerPC and X86 support 0x52: Global Information Register 2 0x05 = 64/128 bit CPU bus support 0x53: Global Information Register 3 0x80 = PCI Bus 0 grant active time is 1 clock after REQ# deasserted write dmem 0xfec00cf8 0x5c000080 write dmem 0xfee00cfc 0xb300011F write dmem 0xfec00cf8 0xc8000080 write dmem 0xfee00cfc 0x0020f100 write dmem 0xfec00cf8 0x90000080 write dmem 0xfee00cfc 0x007fe700 write dmem 0xfec00cf8 0x9400080 write dmem 0xfee00cfc 0x007fe700 write dmem 0xfec00cf8 0xb0000080 write dmem 0xfee00cfc 0x737d737d write dmem 0xfec00cf8 0xb4000080 write dmem 0xfee00cfc 0x737d737d write dmem 0xfec00cf8 0xc0000080 write dmem 0xfee00cfc 0x40005500 write dmem 0xfec00cf8 0xb8000080 write dmem 0xfee00cfc 0x00940100 write dmem 0xfec00cf8 0xc4000080 write dmem 0xfee00cfc 0x00003280 write dmem 0xfec00cf8 0xc4000080 write dmem 0xfee00cfc 0x00003290