[U-Boot-Users] Manual setup of DDR2
robert lazarski
robertlazarski at gmail.com
Fri Jul 13 23:47:32 CEST 2007
On 7/13/07, robert lazarski <robertlazarski at gmail.com> wrote:
> Hi all, running u-boot 1.2.0 on my custom board with a mpc8548E . I
> have 1GB of DDR2, with no other type of SDRAM. I noticed these
> comments in the TQM_85xx init.S :
>
> * Without SPD EEPROM configured DDR, this must be setup manually.
>
> So I configured my TLB as follows:
>
> /*
> * DDR Setup
> */
> #define CFG_DDR_SDRAM_BASE 0x00000000 /* DDR is system memory*/
> #define CFG_SDRAM_BASE CFG_DDR_SDRAM_BASE
>
> /*
> * TLB 7: 1024M DDR, cache disabled (needed for memory test)
> * 0x00000000 1024M DDR System memory
> * Without SPD EEPROM configured DDR, this must be setup manually.
> * Make sure the TLB count at the top of this table is correct.
> */
> .long TLB1_MAS0(1, 7, 0)
> .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_1GB)
> .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE), 0,0,0,0,1,0,1,0)
> .long TLB1_MAS3(E500_TLB_RPN(CFG_DDR_SDRAM_BASE), 0,0,0,0,0,1,0,1,0,1)
>
> However, I noticed the other 85xx boards - like the CDS ones - have
> both 'DDR' and 'SDRAM' , and none of them use a TLB to configure DDR.
> My initdram() is below, using the default spd_sdram() :
>
> long int
> initdram(int board_type)
> {
> long dram_size = 0;
> volatile immap_t *immap = (immap_t *)CFG_IMMR;
>
> puts("Initializing\n");
> dram_size = spd_sdram();
> puts(" DDR: ");
> return dram_size;
> }
>
> Is this the right approach? Just got the bare board today - it'll be a
> few weeks until I can run the code. My LAW and memory map is:
>
> *
> * LAW(Local Access Window) configuration:
> *
> * 0x0000_0000 0x7fff_ffff DDR 2G
> * 0x8000_0000 0x9fff_ffff PCI1 MEM 512M
> * 0xa000_0000 0xbfff_ffff PCI2 MEM 512M
> * 0xe000_0000 0xe000_ffff CCSR 1M
> * 0xe200_0000 0xe20f_ffff PCI1 IO 1M
> * 0xe210_0000 0xe21f_ffff PCI2 IO 1M
> * 0xf800_0000 0xffff_ffff FLASH (boot bank) 128M
> *
> * Notes:
> * CCSRBAR and L2-as-SRAM don't need a configured Local Access Window.
> * If flash is 8M at default position (last 8M), no LAW needed.
> *
> * The defines below are 1-off of the actual LAWAR0 usage.
> * So LAWAR3 define uses the LAWAR4 register in the ECM.
> */
>
> #define LAWBAR0 0
> #define LAWAR0 ((LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_1G)) & ~LAWAR_EN)
>
> #define LAWBAR1 ((CFG_PCI1_MEM_BASE>>12) & 0xfffff)
> #define LAWAR1 (LAWAR_EN | LAWAR_TRGT_IF_PCI1 | (LAWAR_SIZE & LAWAR_SIZE_512M))
>
> #define LAWBAR2 ((CFG_PCI2_MEM_BASE>>12) & 0xfffff)
> #define LAWAR2 (LAWAR_EN | LAWAR_TRGT_IF_PCI2 | (LAWAR_SIZE & LAWAR_SIZE_512M))
>
> #define LAWBAR3 ((CFG_PCI1_IO_PHYS>>12) & 0xfffff)
> #define LAWAR3 (LAWAR_EN | LAWAR_TRGT_IF_PCI1 | (LAWAR_SIZE & LAWAR_SIZE_1M))
>
> #define LAWBAR4 ((CFG_PCI2_IO_PHYS>>12) & 0xfffff)
> #define LAWAR4 (LAWAR_EN | LAWAR_TRGT_IF_PCI2 | (LAWAR_SIZE & LAWAR_SIZE_1M))
>
> #define LAWBAR5 ((CFG_LBC_FLASH_BASE>>12) & 0xfffff)
> #define LAWAR5 (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_128M))
>
> Any advice appreciated,
> Robert
>
I meant to add that I don't have an EEPROM, and some of the 85xx
boards also don't have an EEPROM nor a TLB entry for DDR - which is
leaving me wondering what the correct approach is.
Robert
More information about the U-Boot
mailing list