From: Scott Wood <scottwood@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] powerpc/85xx: Add TWR-P10xx board support
Date: Thu, 11 Apr 2013 15:24:27 -0500 [thread overview]
Message-ID: <1365711867.3640.11@snotra> (raw)
In-Reply-To: <1365676207-13707-1-git-send-email-X.Xie@freescale.com> (from X.Xie@freescale.com on Thu Apr 11 05:30:07 2013)
On 04/11/2013 05:30:07 AM, Xie Xiaobo wrote:
> +int checkboard(void)
> +{
> + ccsr_gur_t *gur = (void __iomem
> *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
> + u8 boot_status;
> +
> + printf("Board: %s\n", CONFIG_BOARDNAME);
> +
> +#ifdef CONFIG_PHYS_64BIT
> + puts("(36-bit addrmap) ");
> +#endif
Is there really a need for supporting both 32-bit and 36-bit address
maps here? How much RAM does the board have, and is it pluggable or
soldered? If it's pluggable, you really should use SPD...
> + boot_status = ((gur->porbmsr) & MPC85xx_PORBMSR_ROMLOC)
> + >> MPC85xx_PORBMSR_ROMLOC_SHIFT;
> + puts("rom_loc: ");
> + if (boot_status == 0x0F || boot_status == 0x0E)
> + puts("nor flash");
> + else if (boot_status == 0x07)
> + puts("sd");
> + else
> + puts("unknow");
unknown
> +int board_early_init_r(void)
> +{
> + const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
> + const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
> +
> + /*
> + * Remap Boot flash region to caching-inhibited
> + * so that flash can be erased properly.
> + */
> +
> + /* Flush d-cache and invalidate i-cache of any FLASH data */
> + flush_dcache();
> + invalidate_icache();
> +
> + /* invalidate existing TLB entry for flash */
> + disable_tlb(flash_esel);
> +
> + set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn,
> rpn */
> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,/* perms, wimge
> */
> + 0, flash_esel, BOOKE_PAGESZ_64M, 1);/* ts, esel, tsize,
> iprot */
You should be done executing from flash here, so remove SX. The
guarded bit won't prevent speculative instruction fetches.
> +#if defined(CONFIG_TWR_P1025)
> +static void fdt_board_fixup_etsec(void *blob)
> +{
> + int node;
> +
> + /* In TWR-P1025 board, the eTSEC2 don't
> + * be used, remove the node from dt blob.
> + */
> + node = fdt_path_offset(blob, "/soc/ethernet at b1000");
> + if (node >= 0)
> + fdt_del_node(blob, node);
> +
> + return;
> +}
> +#endif
Why is it in the dts (and not disabled) in the first place? Do you not
have a separate dts for twr_p1025?
> +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),
> +
> + /* TLB 1 */
> + /* *I*** - Covers boot page */
> + SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I,
> + 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_1M, 1),
> +
> +#ifndef CONFIG_NAND_SPL
> + /* W**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_64M, 1),
> +
> + /* W**G* - Flash, localbus */
> + /* This will be changed to *I*G* after relocation to RAM. */
> + SET_TLB_ENTRY(1, CONFIG_SYS_SSD_BASE, CONFIG_SYS_SSD_BASE_PHYS,
> + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
> + 0, 5, BOOKE_PAGESZ_1M, 1),
> +
> +#ifdef CONFIG_PCI
> + /* *I*G* - PCI memory 1.5G */
> + 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 I/O effective: 192K */
> + 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, 4, BOOKE_PAGESZ_256K, 1),
> +#endif
As above, don't put MAS3_SX on I/O TLB entries.
> diff --git a/boards.cfg b/boards.cfg
> index 35f38f3..fab6f67 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -798,6 +798,8 @@ P1025RDB_36BIT powerpc
> mpc85xx p1_p2_rdb_pc freesca
> P1025RDB_NAND powerpc mpc85xx
> p1_p2_rdb_pc freescale -
> p1_p2_rdb_pc:P1025RDB,NAND
> P1025RDB_SDCARD powerpc mpc85xx
> p1_p2_rdb_pc freescale -
> p1_p2_rdb_pc:P1025RDB,SDCARD
> P1025RDB_SPIFLASH powerpc mpc85xx
> p1_p2_rdb_pc freescale -
> p1_p2_rdb_pc:P1025RDB,SPIFLASH
> +TWR-P1025 powerpc mpc85xx
> p1_twr freescale - p1_twr:TWR_P1025
> +TWR-P1025_36BIT powerpc mpc85xx
> p1_twr freescale -
> p1_twr:TWR_P1025,36BIT
Fix column alignment
> +#undef CONFIG_CLOCKS_IN_MHZ
When was this defined in the first place?
> +
> +/*
> + * Memory map
> + *
> + * 0x0000_0000 0x1fff_ffff DDR Up to 512MB cacheable
> + * 0x8000_0000 0xdfff_ffff PCI Express Mem 1.5G non-cacheable(PCIe
> * 3)
> + * 0xffc0_0000 0xffc3_ffff PCI IO range 256k non-cacheable
> + *
> + * Localbus cacheable (TBD)
> + * 0xXXXX_XXXX 0xXXXX_XXXX SRAM YZ M Cacheable
> + *
> + * Localbus non-cacheable
> + * 0xec00_0000 0xefff_ffff FLASH Up to 64M non-cacheable
> + * 0xff90_0000 0xff97_ffff L2 SDRAM(REV.) 512K cacheable(optional)
L2 SRAM, not L2 SDRAM. Move it to the cacheable section (or remove the
cacheable/non-cacheable split), and remove the nonsense "SRAM YZ M"
entry and the TBD.
> + * 0xffd0_0000 0xffd0_3fff L1 for stack 16K Cacheable TLB0
> + * 0xffe0_0000 0xffef_ffff CCSR 1M non-cacheable
> + */
[snip]
> +#define CONFIG_SYS_SSD_BASE 0xe0000000
This isn't mentioned in the address space comment above.
> +#define CONFIG_SYS_SSD_BASE_PHYS CONFIG_SYS_SSD_BASE
What about 36-bit?
> +#define CONFIG_SYS_MONITOR_LEN (256 * 1024)/* Reserve 256 kB
> for Mon */
Only 256 KiB? We tend to exceed that, and it's easier to reserve 512
KiB now than to change it later when people want to turn on more
features.
How large is the U-Boot binary now?
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +"netdev=eth0\0" \
> +"uboot=" __stringify(CONFIG_UBOOTPATH) "\0" \
> +"loadaddr=1000000\0" \
> +"bootfile=uImage\0" \
> +"dtbfile=twr-p1025_32b.dtb\0" \
Shouldn't "_32b" depend on whether this is a 36-bit U-boot?
> +"consoledev=ttyS0\0" \
> +"ramdiskaddr=2000000\0" \
> +"ramdiskfile=rootfs.ext2.gz.uboot\0" \
> +"fdtaddr=c00000\0" \
> +"bdev=sda1\0" \
> +"jffs2nor=mtdblock3\0" \
> +"norbootaddr=ef080000\0" \
> +"norfdtaddr=ef040000\0" \
> +"jffs2nand=mtdblock9\0" \
Use mtdparts if you want to specify partition information here.
> +#define CONFIG_NFSBOOTCOMMAND \
> +"setenv bootargs root=/dev/nfs rw " \
> +"nfsroot=$serverip:$rootpath " \
> +"ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
> +"console=$consoledev,$baudrate $othbootargs;" \
> +"tftp $loadaddr $bootfile;" \
> +"tftp $fdtaddr $fdtfile;" \
> +"bootm $loadaddr - $fdtaddr"
Use && rather than ; so that we don't attempt to boot if tftp fails.
-Scott
prev parent reply other threads:[~2013-04-11 20:24 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-11 10:30 [U-Boot] [PATCH] powerpc/85xx: Add TWR-P10xx board support Xie Xiaobo
2013-04-11 20:24 ` Scott Wood [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1365711867.3640.11@snotra \
--to=scottwood@freescale.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox