			RAMBOOT for MPC85xx Platforms
			==============================

RAMBOOT literally means boot from DDR. But since DDR is volatile memory some
pre-mechanism is required to load the DDR with the bootloader binary.
- In case of SD and SPI boot this is done by BootROM code inside the chip
  itself.
- In case of NAND boot FCM supports loading initial 4K code from NAND flash
  which can initialize the DDR and get the complete bootloader copied to DDR.

In addition to the above there could be some more methods to initialize the DDR
and load it manually.
Two of them are described below.There is also an explanation as to where these
methods could be handy.
1. Load the RAM based bootloader onto DDR via JTAG/BDI interface. And then
   execute the bootloader from DDR.
   This may be handy in the following cases:
     - In very early stage of platform bringup where other boot options are not
       functional because of various reasons.
     - In case the support to program the flashes on the board is not available.

2. Load the RAM based bootloader onto DDR using already existing bootloader on
   the board.And then execute the bootloader from DDR.
   Some usecases where this may be used:
      - While developing some new feature of u-boot, for example USB driver or
        SPI driver.
        Suppose the board already has a working bootloader on it. And you would
        prefer to keep it intact, at the same time want to test your bootloader.
        In this case you can get your test bootloader binary into DDR via tftp
        for example. Then execute the test bootloader.
     - Suppose a platform already has a propreitery bootloader which does not
       support for example AMP boot. In this case also RAM boot loader can be
       utilized.

   So basically when the original bootloader is required to be kept intact
   RAM based bootloader can offer an updated bootloader on the system.

Both the above Bootloaders are slight variants of SDcard or SPI Flash
bootloader or for that matter even NAND bootloader.
All of them define CONFIG_SYS_RAMBOOT.
The main difference among all of them is the way the pre-environment is getting
configured and who is doing that.
- In case of SD card and SPI flash bootloader this is done by On Chip BootROM inside the Si itself.
- In case of NAND boot SPL/TPL code does it with some support from Si itself.
- In case of the pure RAM based bootloaders we have to do it by JTAG manually or already existing bootloader.

How to use them:
1. Using JTAG
   Boot up in core hold off mode or stop the core after reset using JTAG
   interface.
   Preconfigure DDR/L2SRAM through JTAG interface.
	- setup DDR controller registers.
	- setup DDR LAWs
	- setup DDR TLB
   Load the RAM based boot loader to the proper location in DDR/L2SRAM.
   set up IAR (Instruction counter properly)
   Enable the core to execute.

2. Using already existing bootloader.
   get the rambased boot loader binary into DDR/L2SRAM via tftp.
   execute the RAM based bootloader.
      => tftp 11000000 u-boot-ram.bin
      => go 1107f000

Please note that L2SRAM can also be used instead of DDR if the SOC has
sufficient size of L2SRAM.

Necessary Code changes Required:
=====================================
Please note that below mentioned changes are for 85xx platforms.
They have been tested on P1020/P2020/P1010 RDB.

The main difference between the above two methods from technical perspective is
that in 1st case SOC is just out of reset so it is in default configuration.
(CCSRBAR is at 0xff700000).
In the 2nd case bootloader has already re-located CCSRBAR to 0xffe00000

1. File name-> boards.cfg
   There can be added specific Make options for RAMBoot. We can keep different
   options for the two cases mentioned above.
   for example
   P1020RDB_JTAG_RAMBOOT and P1020RDB_GO_RAMBOOT.

2. platform config file
   for example include/configs/P1_P2_RDB.h

   #ifdef CONFIG_RAMBOOT
   #define CONFIG_SDCARD
   #endif

   This will finally use the CONFIG_SYS_RAMBOOT.

3. File name-> arch/powerpc/include/asm/config_mpc85xx.h
   In the section of the particular SOC, for example P1020,

   #if defined(CONFIG_GO)
   #define CONFIG_SYS_CCSRBAR_DEFAULT	0xffe00000
   #else
   #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000
   #endif

For JTAG  RAMBOOT this is not required because CCSRBAR is at ff700000.
