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
