Overview
--------
MPC8572DS is a high-performance computing, evaluation and development platform
supporting the mpc8572 PowerTM processor.

Building U-boot
-----------
	make MPC8572DS_config
	make

Flash Banks
-----------
MPC8572DS board has two flash banks. They are both present on boot, but their
locations can be swapped using the dip-switch SW9[1:2].

Booting is always from the boot bank at 0xec00_0000.


Memory Map
----------

0xe800_0000 - 0xebff_ffff	Alernate bank		64MB
0xec00_0000 - 0xefff_ffff	Boot bank		64MB

0xebf8_0000 - 0xebff_ffff	Alternate u-boot address	512KB
0xeff8_0000 - 0xefff_ffff	Boot u-boot address		512KB


Flashing Images
---------------

To place a new u-boot image in the alternate flash bank and then reset with that
 new image temporarily, use this:

	tftp 1000000 u-boot.bin
	erase ebf80000 ebffffff
	cp.b 1000000 ebf80000 80000
	pixis_reset altbank


To program the image in the boot flash bank:

	tftp 1000000 u-boot.bin
	protect off all
	erase eff80000 ffffffff
	cp.b 1000000 eff80000 80000


The pixis_reset command
-----------------------
The command - "pixis_reset", is introduced to reset mpc8572ds board
using the FPGA sequencer.  When the board restarts, it has the option
of using either the current or alternate flash bank as the boot
image, with or without the watchdog timer enabled, and finally with
or without frequency changes.

Usage is;

	pixis_reset
	pixis_reset altbank
	pixis_reset altbank wd
	pixis_reset altbank cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio>
	pixis_reset cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio>

Examples:

	/* reset to current bank, like "reset" command */
	pixis_reset

	/* reset board but use the to alternate flash bank */
	pixis_reset altbank


Using the Device Tree Source File
---------------------------------
To create the DTB (Device Tree Binary) image file,
use a command similar to this:

	dtc -b 0 -f -I dts -O dtb mpc8572ds.dts > mpc8572ds.dtb

Likely, that .dts file will come from here;

	linux-2.6/arch/powerpc/boot/dts/mpc8572ds.dts


Booting Linux
-------------

Place a linux uImage in the TFTP disk area.

	tftp 1000000 uImage.8572
	tftp c00000 mpc8572ds.dtb
	bootm 1000000 - c00000


Implementing AMP(Asymmetric MultiProcessing)
-------------
1. Build kernel image for core0:

        a. $ make 85xx/mpc8572_ds_defconfig

        b. $ make menuconfig
           - un-select "Processor support"->"Symetric multi-processing support"

        c. $ make uImage

	d. $ cp arch/powerpc/boot/uImage /tftpboot/uImage.core0

2. Build kernel image for core1:

        a. $ make 85xx/mpc8572_ds_defconfig

        b. $ make menuconfig
           - Un-select "Processor support"->"Symetric multi-processing support"
           - Select "Advanced setup" -> " Prompt for advanced kernel
             configuration options"
                - Select "Set physical address where the kernel is loaded" and
                  set it to 0x20000000, asssuming core1 will start from 512MB.
                - Select "Set custom page offset address"
                - Select "Set custom kernel base address"
                - Select "Set maximum low memory"
           - "Exit" and save the selection.

        c. $ make uImage

	d. $ cp arch/powerpc/boot/uImage /tftpboot/uImage.core1

3. Create dtb for core0:

        $ dtc -I dts -O dtb -f -b 0 arch/powerpc/boot/dts/mpc8572ds_core0.dts > /tftpboot/mpc8572ds_core0.dtb

4. Create dtb for core1:

        $ dtc -I dts -O dtb -f -b 1 arch/powerpc/boot/dts/mpc8572ds_core1.dts > /tftpboot/mpc8572ds_core1.dtb

5. Bring up two cores separately:

        a. Power on the board, under u-boot prompt:
                => setenv <serverip>
                => setenv <ipaddr>
                => setenv bootargs root=/dev/ram rw console=ttyS0,115200
        b. Bring up core1's kernel first:
                => setenv bootm_low 0x20000000
                => setenv bootm_size 0x10000000
                => tftp 21000000 8572/uImage.core1
                => tftp 22000000 8572/ramdiskfile
                => tftp 20c00000 8572/mpc8572ds_core1.dtb
                => interrupts off
                => bootm start 21000000 22000000 20c00000
                => bootm loados
                => bootm ramdisk
                => bootm fdt
                => fdt boardsetup
                => fdt chosen $initrd_start $initrd_end
                => bootm prep
                => cpu 1 release $bootm_low - $fdtaddr -
        c. Bring up core0's kernel(on the same u-boot console):
                => setenv bootm_low 0
                => setenv bootm_size 0x20000000
                => tftp 1000000 8572/uImage.core0
                => tftp 2000000 8572/ramdiskfile
                => tftp c00000 8572/mpc8572ds_core0.dtb
                => bootm 1000000 2000000 c00000

Please note only core0 will run u-boot, core1 starts kernel directly after
"cpu release" command is issued.

