Overview
--------
The MPC8544DS system is similar to the 85xx CDS systems such
as the MPC8548CDS due to the similar E500 core.  However, it
is placed on the same board as the 8641 HPCN system.


Flash Banks
-----------
Like the 85xx CDS systems, the 8544 DS board has two flash banks.
They are both present on boot, but there locations can be swapped
using the dip-switch SW10, bit 2.

However, unlike the CDS systems, but similar to the 8641 HPCN
board, a runtime reset through the FPGA can also affect a swap
on the flash bank mappings for the next reset cycle.

Irrespective of the switch SW10[2], booting is always from the
boot bank at 0xfff8_0000.


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

0xff80_0000 - 0xffbf_ffff	Alernate bank		4MB
0xffc0_0000 - 0xffff_ffff	Boot bank		4MB

0xffb8_0000			Alternate image start	512KB
0xfff8_0000			Boot image start	512KB


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

For example, to place a new image in the alternate flash bank
and then reset with that new image temporarily, use this:

    tftp 1000000 u-boot.bin.8544ds
    erase ffb80000 ffbfffff
    cp.b 1000000 ffb80000 80000
    pixis_reset altbank


To overwrite the image in the boot flash bank:

    tftp 1000000 u-boot.bin.8544ds
    protect off all
    erase fff80000 ffffffff
    cp.b 1000000 fff80000 80000

Other example U-Boot image and flash manipulations examples
can be found in the README.mpc85xxcds file as well.


The pixis_reset command
-----------------------
A new command, "pixis_reset", is introduced to reset mpc8641hpcn 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

	/* reset board, use alternate flash bank with watchdog timer enabled*/
	pixis_reset altbank wd

	/* reset board to alternate bank with frequency changed.
	 * 40 is SYSCLK, 2.5 is COREPLL ratio, 10 is MPXPLL ratio
	 */
	pixis-reset altbank cf 40 2.5 10

Valid clock choices are in the 8641 Reference Manuals.


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 mpc8544ds.dts > mpc8544ds.dtb

Likely, that .dts file will come from here;

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

After placing the DTB file in your TFTP disk area, 
you can download that dtb file using a command like:

    tftp 900000 mpc8544ds.dtb

Burn it to flash if you want.


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

Place a linux uImage in the TFTP disk area too.

    tftp 1000000 uImage.8544
    tftp 900000 mpc8544ds.dtb
    bootm 1000000 - 900000

Watch your ethact, netdev and bootargs U-Boot environment variables.
You may want to do something like this too:

    setenv ethact eTSEC3
    setenv netdev eth1
