From: York Sun <yorksun@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 20/31] powerpc/t4qds: Slave module for boot from SRIO and PCIE
Date: Fri, 22 Mar 2013 10:29:18 -0700 [thread overview]
Message-ID: <1363973369-26110-20-git-send-email-yorksun@freescale.com> (raw)
In-Reply-To: <1363973369-26110-1-git-send-email-yorksun@freescale.com>
From: Liu Gang <Gang.Liu@freescale.com>
When a T4 board boots from SRIO or PCIE, it needs to finish these processes:
1. Set the boot location to one PCIE or SRIO interface by RCW.
2. Set a specific TLB entry for the boot process.
3. Set a LAW entry with the TargetID of one PCIE or SRIO for the boot.
4. Set a specific TLB entry in order to fetch ucode and ENV from
master.
5. Set a LAW entry with the TargetID one of the PCIE ports for
ucode and ENV.
6. Slave's u-boot image should be generated specifically by
make xxxx_SRIO_PCIE_BOOT_config.
This will set SYS_TEXT_BASE=0xFFF80000 and other configurations.
For more information about the feature of Boot from SRIO/PCIE, please
refer to the document doc/README.srio-pcie-boot-corenet.
Signed-off-by: Liu Gang <Gang.Liu@freescale.com>
---
arch/powerpc/include/asm/immap_85xx.h | 1 +
board/freescale/t4qds/tlb.c | 19 ++++++++++++++++++
boards.cfg | 2 ++
include/configs/t4qds.h | 34 ++++++++++++++++++++++++++-------
4 files changed, 49 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h
index 67e4c46..3433e18 100644
--- a/arch/powerpc/include/asm/immap_85xx.h
+++ b/arch/powerpc/include/asm/immap_85xx.h
@@ -1839,6 +1839,7 @@ typedef struct ccsr_gur {
#define FSL_CORENET2_RCWSR4_SRDS3_PRTCL_SHIFT 11
#define FSL_CORENET2_RCWSR4_SRDS4_PRTCL 0x000000f8
#define FSL_CORENET2_RCWSR4_SRDS4_PRTCL_SHIFT 3
+#define FSL_CORENET_RCWSR6_BOOT_LOC 0x0f800000
#elif defined(CONFIG_PPC_B4860) || defined(CONFIG_PPC_B4420)
#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL 0xfe000000
#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT 25
diff --git a/board/freescale/t4qds/tlb.c b/board/freescale/t4qds/tlb.c
index 92c01cf..2a2e3d6 100644
--- a/board/freescale/t4qds/tlb.c
+++ b/board/freescale/t4qds/tlb.c
@@ -55,6 +55,15 @@ struct fsl_e_tlb_entry tlb_table[] = {
SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
0, 0, BOOKE_PAGESZ_1M, 1),
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+ /*
+ * SRIO_PCIE_BOOT-SLAVE. When slave boot, the address of the
+ * space is at 0xfff00000, it covered the 0xfffff000.
+ */
+ SET_TLB_ENTRY(1, CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR,
+ CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR_PHYS,
+ MAS3_SX|MAS3_SW|MAS3_SR, MAS2_W|MAS2_G,
+ 0, 0, BOOKE_PAGESZ_1M, 1),
#else
SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
@@ -130,6 +139,16 @@ struct fsl_e_tlb_entry tlb_table[] = {
SET_TLB_ENTRY(1, QIXIS_BASE, QIXIS_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
0, 17, BOOKE_PAGESZ_4K, 1),
+#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
+ /*
+ * SRIO_PCIE_BOOT-SLAVE. 1M space from 0xffe00000 for
+ * fetching ucode and ENV from master
+ */
+ SET_TLB_ENTRY(1, CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR,
+ CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR_PHYS,
+ MAS3_SX|MAS3_SW|MAS3_SR, MAS2_G,
+ 0, 18, BOOKE_PAGESZ_1M, 1),
+#endif
};
diff --git a/boards.cfg b/boards.cfg
index efb23e9..55c6aad 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -890,9 +890,11 @@ stxssa_4M powerpc mpc85xx stxssa stx
T4240QDS powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4240
T4240QDS_SDCARD powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4240,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
T4240QDS_SPIFLASH powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
+T4240QDS_SRIO_PCIE_BOOT powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF80000
T4160QDS powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4160
T4160QDS_SDCARD powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4160,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
T4160QDS_SPIFLASH powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
+T4160QDS_SRIO_PCIE_BOOT powerpc mpc85xx t4qds freescale - T4240QDS:PPC_T4160,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF80000
B4860QDS powerpc mpc85xx b4860qds freescale - B4860QDS:PPC_B4860
B4860QDS_NAND powerpc mpc85xx b4860qds freescale - B4860QDS:PPC_B4860,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF80000
B4860QDS_SPIFLASH powerpc mpc85xx b4860qds freescale - B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index f153dde..e80a757 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -33,6 +33,15 @@
#define CONFIG_PBLRCW_CONFIG $(SRCTREE)/board/freescale/t4qds/t4_rcw.cfg
#endif
+#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
+/* Set 1M boot space */
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR (CONFIG_SYS_TEXT_BASE & 0xfff00000)
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR_PHYS \
+ (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR)
+#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
+#define CONFIG_SYS_NO_FLASH
+#endif
+
#define CONFIG_CMD_REGINFO
/* High Level Configuration Options */
@@ -72,14 +81,15 @@
#define CONFIG_ENV_OVERWRITE
#ifdef CONFIG_SYS_NO_FLASH
+#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
#define CONFIG_ENV_IS_NOWHERE
+#endif
#else
#define CONFIG_FLASH_CFI_DRIVER
#define CONFIG_SYS_FLASH_CFI
#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
#endif
-#ifndef CONFIG_SYS_NO_FLASH
#if defined(CONFIG_SPIFLASH)
#define CONFIG_SYS_EXTRA_ENV_RELOC
#define CONFIG_ENV_IS_IN_SPI_FLASH
@@ -101,18 +111,18 @@
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_SIZE CONFIG_SYS_NAND_BLOCK_SIZE
#define CONFIG_ENV_OFFSET (5 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+#define CONFIG_ENV_IS_IN_REMOTE
+#define CONFIG_ENV_ADDR 0xffe20000
+#define CONFIG_ENV_SIZE 0x2000
+#elif defined(CONFIG_ENV_IS_NOWHERE)
+#define CONFIG_ENV_SIZE 0x2000
#else
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
#define CONFIG_ENV_SIZE 0x2000
#define CONFIG_ENV_SECT_SIZE 0x20000 /* 128K (one sector) */
#endif
-#else /* CONFIG_SYS_NO_FLASH */
-#define CONFIG_ENV_SIZE 0x2000
-#define CONFIG_ENV_SECT_SIZE 0x20000 /* 128K (one sector) */
-#endif
-
-
#define CONFIG_SYS_CLK_FREQ get_board_sys_clk()
#define CONFIG_DDR_CLK_FREQ get_board_ddr_clk()
@@ -634,6 +644,16 @@ unsigned long get_board_ddr_clk(void);
#elif defined(CONFIG_NAND)
#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
#define CONFIG_SYS_QE_FMAN_FW_ADDR (6 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+/*
+ * Slave has no ucode locally, it can fetch this from remote. When implementing
+ * in two corenet boards, slave's ucode could be stored in master's memory
+ * space, the address can be mapped from slave TLB->slave LAW->
+ * slave SRIO or PCIE outbound window->master inbound window->
+ * master LAW->the ucode address in master's memory space.
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
+#define CONFIG_SYS_QE_FMAN_FW_ADDR 0xFFE00000
#else
#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
#define CONFIG_SYS_QE_FMAN_FW_ADDR 0xEFF40000
--
1.7.9.5
next prev parent reply other threads:[~2013-03-22 17:29 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-22 17:28 [U-Boot] [PATCH 01/31] 83xx/pcie: fix build error for 83xx pcie York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 02/31] Enable L2 cache parity/ECC error checking York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 03/31] net/phy: fix select line for TN80xx York Sun
2013-03-22 20:59 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 04/31] powerpc/mpc85xx: check if core is disabled for showing status York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 05/31] powerpc/t4240qds: Add VDD override York Sun
2013-03-22 21:00 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 06/31] T4240/ramboot: enable PBL tool for T4240 York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 07/31] Add e6500 L2 replacement policy selection York Sun
2013-03-22 21:00 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 08/31] powerpc/p5040: enable NAND, SD, SPI boot support York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 09/31] powerpc/T4160: Merge T4160 and T4240 in config_mpc85xx.h York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 10/31] powerpc/mpc8xxx: Add T1040 and variant SoCs York Sun
2013-03-22 21:00 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 11/31] powerpc/chassis2: Change core numbering scheme York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 12/31] powerpc/mpc8xxx: Allow DDR overclock York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 13/31] powerpc/qixis: add clock measurement registers York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 14/31] powerpc/t4qds: use clock measurement for sysclk and ddr clock York Sun
2013-03-22 21:01 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 15/31] powerpc/p5040: enable PBL tool support York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 16/31] board/t4240qds, b4860qds: LAW/TLB for DCSR set to size 32M York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 17/31] Enable XAUI interface for B4860QDS York Sun
2013-03-22 21:02 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 18/31] powerpc/t4qds: Add SW7[4] in the DIP switch display York Sun
2013-03-22 21:02 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 19/31] powerpc/t4qds: Enable master module for Boot from SRIO and PCIE York Sun
2013-03-22 17:29 ` York Sun [this message]
2013-03-22 21:02 ` [U-Boot] [PATCH 20/31] powerpc/t4qds: Slave module for boot " Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 21/31] powerpc/t4240qds: fix PHY reset timeout issue York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 22/31] powerpc/doc: Fix the misalignment of document README.srio-pcie-boot-corenet York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 23/31] powerpc/b4860: fix for Serdes connectivity to SFP's York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 24/31] powerpc/mpc85xx: add setting of clock-frequency for mpic node York Sun
2013-03-22 21:03 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 25/31] powerpc/p2041: fix serdes reference clock frequency display for PC board York Sun
2013-03-22 21:03 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 26/31] sf: spansion: Add support for S25FL128S York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 27/31] powerpc/B4: Merge B4420 and B4860 in config_mpc85xx.h York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 28/31] powerpc/p5040: fix mdio mux for 10G port York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 29/31] powerpc/usb: Fix usb device-tree fix-up York Sun
2013-03-22 21:04 ` Wolfgang Denk
2013-03-22 17:29 ` [U-Boot] [PATCH 30/31] fman/mEMAC: set SETSP bit in IF_MODE regisgter for RGMII speed York Sun
2013-03-22 17:29 ` [U-Boot] [PATCH 31/31] powerpc/b4860qds: Add LAW Target ID and Create LAW entry for Maple York Sun
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=1363973369-26110-20-git-send-email-yorksun@freescale.com \
--to=yorksun@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