Signed-off-by: Dirk Eibach <eib...@gdsys.de>
Cc: Timur Tabi <ti...@freescale.com>
---
Changes in v2:
- add Cc
- split up original patch series
Changes in v3:
- use clrsetbits() instead of clrbits()/setbits()
- remove dead code
- remove unnecessary #undef
Changes in v4:
- Add some documentation
- set pmuxcr depending on bootmode
- use 'ifdef' instead of 'if defined'
- undo unrelated whitespace change
- fix CONFIG_ENV_ADDR

 board/freescale/p1022ds/p1022ds.c |    5 +++
 board/freescale/p1022ds/tlb.c     |   10 +++++++
 boards.cfg                        |    4 +++
 doc/README.p1022ds                |   52 +++++++++++++++++++++++++++++++++++
 include/configs/P1022DS.h         |   55 +++++++++++++++++++++++++++++++++---
 5 files changed, 121 insertions(+), 5 deletions(-)

diff --git a/board/freescale/p1022ds/p1022ds.c 
b/board/freescale/p1022ds/p1022ds.c
index 456d9b0..e1e074e 100644
--- a/board/freescale/p1022ds/p1022ds.c
+++ b/board/freescale/p1022ds/p1022ds.c
@@ -37,6 +37,11 @@ int board_early_init_f(void)
 {
        ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
 
+#if defined(CONFIG_RAMBOOT_SPIFLASH) || defined(CONFIG_RAMBOOT_SDCARD)
+       /* Reset eLBC_DIU and SPI_eLBC in case we are booting from SD */
+       clrsetbits_be32(&gur->pmuxcr, 0x00600000, 0x80000000);
+#endif
+
        /* Set pmuxcr to allow both i2c1 and i2c2 */
        setbits_be32(&gur->pmuxcr, 0x1000);
 
diff --git a/board/freescale/p1022ds/tlb.c b/board/freescale/p1022ds/tlb.c
index e620112..013e9a7 100644
--- a/board/freescale/p1022ds/tlb.c
+++ b/board/freescale/p1022ds/tlb.c
@@ -71,6 +71,16 @@ struct fsl_e_tlb_entry tlb_table[] = {
        SET_TLB_ENTRY(1, PIXIS_BASE, PIXIS_BASE_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 7, BOOKE_PAGESZ_4K, 1),
+
+#ifdef CONFIG_SYS_RAMBOOT
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 8, BOOKE_PAGESZ_1G, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                       CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 9, BOOKE_PAGESZ_1G, 1)
+#endif
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
diff --git a/boards.cfg b/boards.cfg
index 24c5879..8de4235 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -700,6 +700,10 @@ P1021RDB-PC_SDCARD           powerpc     mpc85xx     
p1_p2_rdb_pc        freesca
 P1021RDB-PC_SPIFLASH         powerpc     mpc85xx     p1_p2_rdb_pc        
freescale      -           p1_p2_rdb_pc:P1021RDB,SPIFLASH
 P1022DS                      powerpc     mpc85xx     p1022ds             
freescale
 P1022DS_36BIT                powerpc     mpc85xx     p1022ds             
freescale      -           P1022DS:36BIT
+P1022DS_36BIT_SDCARD         powerpc     mpc85xx     p1022ds             
freescale      -           P1022DS:36BIT,SDCARD
+P1022DS_36BIT_SPIFLASH       powerpc     mpc85xx     p1022ds             
freescale      -           P1022DS:36BIT,SPIFLASH
+P1022DS_SDCARD               powerpc     mpc85xx     p1022ds             
freescale      -           P1022DS:SDCARD
+P1022DS_SPIFLASH             powerpc     mpc85xx     p1022ds             
freescale      -           P1022DS:SPIFLASH
 P1023RDS                     powerpc     mpc85xx     p1023rds            
freescale      -           P1023RDS
 P1023RDS_NAND                powerpc     mpc85xx     p1023rds            
freescale      -           P1023RDS:NAND
 P1024RDB                     powerpc     mpc85xx     p1_p2_rdb_pc        
freescale      -           p1_p2_rdb_pc:P1024RDB
diff --git a/doc/README.p1022ds b/doc/README.p1022ds
index 04d9197..98499f8 100644
--- a/doc/README.p1022ds
+++ b/doc/README.p1022ds
@@ -21,3 +21,55 @@ and AUDIO codec clock sources only setting as 11MHz or 12MHz 
!
 'setenv hwconfig 'audclk:12;tdm'       --- error !
 'setenv hwconfig 'audclk:11;tdm'       --- error !
 'setenv hwconfig 'audclk:10'           --- error !
+
+Booting from eSPI/eSDHC
+-----------------------
+
+The P1022 is capable of loading initialization code from a memory device that 
is
+connected to the eSPI or eSDHC controller interface. Booting is supported by 
the
+P1022 using an on-chip ROM which contains the basic device driver and the code
+to perform block copy to any target memory.
+
+Freescale offers a tool for building SD or SPI images, which is hosted here:
+http://git.freescale.com/git/cgit.cgi/ppc/sdk/boot-format.git
+
+For eSDHC:
+
+1. Build u-boot
+               make P1022DS_SDCARD_config
+       or
+               make P1022DS_36BIT_SDCARD_config
+       then
+               make
+
+2. Prepare SD card
+       boot_format config_ddr3_2gb_p1022ds.dat u-boot.bin -sd /dev/sd...
+
+3. Change dip-switch
+       SW4[5-8] = 0111
+
+4. Insert SD card and push RESET
+
+For eSPI:
+
+1. Build u-boot
+               make P1022DS_SPIFLASH_config
+       or
+               make P1022DS_36BIT_SPIFLASH_config
+       then
+               make
+
+2. Prepare binary image file
+       boot_format config_ddr3_2gb_p1022ds.dat u-boot.bin -spi spiimage.bin
+
+3. Program SPI memory device using u-boot
+       tftpboot $loadaddr spiimage.bin
+       sf probe
+       sf erase 0 +$filesize
+       sf write $fileaddr 0 $filesize
+
+3. Change dip-switch
+       SW4[5-8] = 0110
+
+4. Push RESET
+
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h
index 70d751d..ec60445 100644
--- a/include/configs/P1022DS.h
+++ b/include/configs/P1022DS.h
@@ -26,6 +26,18 @@
 #define CONFIG_P1022DS
 #define CONFIG_MP                      /* support multiple processors */
 
+#ifdef CONFIG_SDCARD
+#define CONFIG_RAMBOOT_SDCARD          1
+#define CONFIG_SYS_TEXT_BASE           0x11000000
+#define CONFIG_RESET_VECTOR_ADDRESS    0x1107fffc
+#endif
+
+#ifdef CONFIG_SPIFLASH
+#define CONFIG_RAMBOOT_SPIFLASH                1
+#define CONFIG_SYS_TEXT_BASE           0x11000000
+#define CONFIG_RESET_VECTOR_ADDRESS    0x1107fffc
+#endif
+
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xeff80000
 #endif
@@ -138,6 +150,12 @@
 
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE    /* 
start of monitor */
 
+#if defined(CONFIG_RAMBOOT_NAND) || defined(CONFIG_RAMBOOT_SDCARD) || \
+       defined(CONFIG_RAMBOOT_SPIFLASH)
+#define CONFIG_SYS_RAMBOOT
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#endif
+
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_EMPTY_INFO
@@ -403,11 +421,38 @@
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 
CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_SECT_SIZE   0x20000
+#if defined(CONFIG_SYS_RAMBOOT)
+#if defined(CONFIG_RAMBOOT_NAND)
+#define CONFIG_ENV_IS_IN_NAND  1
+#define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
+#define CONFIG_ENV_OFFSET ((512 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_ENV_RANGE       (3 * CONFIG_ENV_SIZE)
+#elif defined(CONFIG_RAMBOOT_SPIFLASH)
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS     0
+#define CONFIG_ENV_SPI_CS      0
+#define CONFIG_ENV_SPI_MAX_HZ  10000000
+#define CONFIG_ENV_SPI_MODE    0
+#define CONFIG_ENV_SIZE                0x2000  /* 8KB */
+#define CONFIG_ENV_OFFSET      0x100000
+#define CONFIG_ENV_SECT_SIZE   0x10000
+#elif defined(CONFIG_RAMBOOT_SDCARD)
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_FSL_FIXED_MMC_LOCATION
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#else
+       #define CONFIG_ENV_IS_NOWHERE   1       /* Store ENV in memory only */
+       #define CONFIG_ENV_SIZE         0x2000
+       #define CONFIG_ENV_ADDR  (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE)
+#endif
+#else
+       #define CONFIG_ENV_IS_IN_FLASH
+       #define CONFIG_ENV_OVERWRITE
+       #define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
+       #define CONFIG_ENV_SIZE         0x2000
+       #define CONFIG_ENV_SECT_SIZE    0x20000
+#endif
 
 #define CONFIG_LOADS_ECHO
 #define CONFIG_SYS_LOADS_BAUD_CHANGE
-- 
1.7.2.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to