On Jul 21, 2010, at 11:31 AM, Peter Tyser wrote: > Hi Kumar, > That's great to see official 4080 board support! I had a few comments > below. I haven't dug into the 4080 much, so take them with a grain of > salt. > > <snip> > >> +#ifdef CONFIG_PHYS_64BIT >> + puts("36-bit Addressing\n"); >> +#endif > > Any chance CONFIG_ENABLE_36BIT_PHYS could be defined without > CONFIG_PHYS_64BIT, or vice-versa? Or any reason to not use > CONFIG_ENABLE_36BIT_PHYS above?
CONFIG_ENABLE_36BIT_PHYS is just to enable the capability on e500v2 cores. It probably should be renamed at this point. >> + /* Display the actual SERDES reference clocks as configured by the >> + * dip switches on the board. Note that the SWx registers could >> + * technically be set to force the reference clocks to match the >> + * values that the SERDES expects (or vice versa). For now, however, >> + * we just display both values and hope the user notices when they >> + * don't match. >> + */ >> + puts("SERDES Reference Clocks: "); >> + sw = in_8(&PIXIS_SW(3)); >> + printf("Bank1=%uMHz ", (sw & 0x40) ? 125 : 100); >> + printf("Bank2=%sMHz ", (sw & 0x20) ? "156.25" : "125"); >> + printf("Bank3=%sMHz\n", (sw & 0x10) ? "156.25" : "125"); > > Could you use serdes_clock_to_string() above? It'd make the values > above a little less magical and be portable to other boards that don't > use the PIXIS FPGA. Dont see the value to convert doubly that way. >> + >> +#ifdef CONFIG_ECC_INIT_VIA_DDRCONTROLLER >> + /* >> + * Poll until memory is initialized. 512 Meg at 400MHz might hit this >> + * 200 times or so. >> + */ >> + while ((ddr->sdram_cfg_2 & 16) != 0) { >> + debug("sdram_cfg2 = 0x%08x\n", ddr->sdram_cfg_2); >> + udelay(1000); >> + } >> + asm("sync; isync"); >> + udelay(500); >> + >> + while ((ddr2->sdram_cfg_2 & 16) != 0) { >> + debug("sdram_cfg2 = 0x%08x\n", ddr2->sdram_cfg_2); >> + udelay(1000); >> + } >> + asm("sync; isync"); >> + udelay(500); >> +#endif > > Use in_be32()'s above? And change 16 to 0x10, or add a D_INIT define? Going to drop the non-SPD code for now. >> +phys_size_t initdram(int board_type) >> +{ >> + phys_size_t dram_size; >> + >> + puts("Initializing....\n"); >> + >> +#ifdef CONFIG_DDR_SPD >> + dram_size = fsl_ddr_sdram(); >> +#else >> + dram_size = fixed_sdram(); >> +#endif >> + setup_ddr_tlbs(dram_size / 0x100000); >> + >> + puts(" DDR: "); >> + return dram_size; >> +} > > Should the puts("DDR:") be removed? With it I'd think the output would > be "DRAM: DDR: (DDR3, 64-bit...)". Ie the DDR is a bit redundant > and the spaces a bit excessive. This is consistent w/every other board port we have right now. >> +#ifdef CONFIG_MP >> +void board_lmb_reserve(struct lmb *lmb) >> +{ >> + cpu_mp_lmb_reserve(lmb); >> +} >> +#endif > > It'd be nice to move the board_lmb_reserve() somewhere common at some > point since every board that has CONFIG_MP defined currently uses the > same chunk of code. Or maybe remove board_lmb_reserve() and have its > callees call cpu_mp_lmb_reserve(). Going to leave this alone for now. Its an orthogonal cleanup to this board port. > >> +#include <common.h> >> +#include <asm/mmu.h> >> + >> +struct fsl_e_tlb_entry tlb_table[] = { >> + /* TLB 0 - for temp stack in cache */ >> + SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, >> CONFIG_SYS_INIT_RAM_ADDR_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, 0, >> + 0, 0, BOOKE_PAGESZ_4K, 0), >> + SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , >> CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024, >> + MAS3_SX|MAS3_SW|MAS3_SR, 0, >> + 0, 0, BOOKE_PAGESZ_4K, 0), >> + SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , >> CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024, >> + MAS3_SX|MAS3_SW|MAS3_SR, 0, >> + 0, 0, BOOKE_PAGESZ_4K, 0), >> + SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , >> CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024, >> + MAS3_SX|MAS3_SW|MAS3_SR, 0, >> + 0, 0, BOOKE_PAGESZ_4K, 0), >> + >> + SET_TLB_ENTRY(0, PIXIS_BASE, PIXIS_BASE_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 0, BOOKE_PAGESZ_4K, 0), >> + >> + /* TLB 1 */ >> + /* *I*** - Covers boot page */ >> + SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 0, BOOKE_PAGESZ_4K, 1), >> + >> + /* *I*G* - CCSRBAR */ >> + SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 1, BOOKE_PAGESZ_16M, 1), >> + >> + /* *I*G* - Flash, localbus */ >> + /* This will be changed to *I*G* after relocation to RAM. */ >> + SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS, >> + MAS3_SX|MAS3_SR, MAS2_W|MAS2_G, >> + 0, 2, BOOKE_PAGESZ_256M, 1), >> + >> + /* *I*G* - PCI */ >> + SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 3, BOOKE_PAGESZ_1G, 1), >> + >> + /* *I*G* - PCI */ >> + SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT + 0x40000000, >> CONFIG_SYS_PCIE1_MEM_PHYS + 0x40000000, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 4, BOOKE_PAGESZ_256M, 1), >> + >> + SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT + 0x50000000, >> CONFIG_SYS_PCIE1_MEM_PHYS + 0x50000000, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 5, BOOKE_PAGESZ_256M, 1), >> + >> + /* *I*G* - PCI I/O */ >> + SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 6, BOOKE_PAGESZ_256K, 1), >> + >> + /* Bman/Qman */ >> + SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, 0, >> + 0, 9, BOOKE_PAGESZ_1M, 1), >> + SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x00100000, >> CONFIG_SYS_BMAN_MEM_PHYS + 0x00100000, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 10, BOOKE_PAGESZ_1M, 1), >> + SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, 0, >> + 0, 11, BOOKE_PAGESZ_1M, 1), >> + SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x00100000, >> CONFIG_SYS_QMAN_MEM_PHYS + 0x00100000, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 12, BOOKE_PAGESZ_1M, 1), >> +#ifdef CONFIG_SYS_DCSRBAR_PHYS >> + SET_TLB_ENTRY(1, CONFIG_SYS_DCSRBAR, CONFIG_SYS_DCSRBAR_PHYS, >> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, >> + 0, 13, BOOKE_PAGESZ_4M, 1), >> +#endif >> +}; > > Lines > 80 chars. What happened to TLBs 7 and 8? It looks like you > configure LAWs for the SRIO interfaces, but not TLBs? Correct, we dont ever access SRIO space in u-boot and dont have the VA address space left to map it anywhere. > >> +int num_tlb_entries = ARRAY_SIZE(tlb_table); >> diff --git a/boards.cfg b/boards.cfg >> index 5043833..8187b68 100644 >> --- a/boards.cfg >> +++ b/boards.cfg >> @@ -340,6 +340,7 @@ MPC8540ADS powerpc mpc85xx mpc8540ads >> freescale >> MPC8544DS powerpc mpc85xx mpc8544ds freescale >> MPC8560ADS powerpc mpc85xx mpc8560ads freescale >> MPC8568MDS powerpc mpc85xx mpc8568mds freescale >> +P4080DS powerpc mpc85xx corenet_ds freescale >> XPEDITE5200 powerpc mpc85xx xpedite5200 xes >> XPEDITE5370 powerpc mpc85xx xpedite5370 xes >> P1022DS powerpc mpc85xx p1022ds freescale > > How are these boards supposed to be sorted in general? It seems odd not > to have the P1022DS and P4080DS next to each other. Will fix that, should be sorted by name. I think P1022DS got out of order. > >> + >> +/* >> + * P4080 DS board configuration file >> + * >> + */ > > Extra line above. > >> diff --git a/include/configs/corenet_ds.h b/include/configs/corenet_ds.h > > <snip> > >> +/* >> + * P4080 DS board configuration file >> + * >> + */ > > corenet_ds.h above? And extra line. What's the connection between the > corenet_ds and P4080DS and their header files? I had assumed the > corenet_ds.h file would contain somewhat generic corenet defines that > could be shared between other corenet-based boards, but it seems to > contain many board-specific defines. corenet_ds is for corenet based platform DS boards. This will include P3041 and P5020 DS boards in the future. Its not about corenet platforms which is a different direction. - k _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot