This file contains status information for the port of U-Boot to the
Galileo Evaluation Board.

Author: Josh Huber <huber@mclx.com>
	Mission Critical Linux, Inc.

The support for the Galileo Evaluation board is fairly minimal now.
It's sufficient to boot Linux, but doesn't provide too much more than
what's required to do this.

Both DUART channels are supported (to use the second one, you have to
modify the board -- see the schematics for where to solder on the
devices module).  The ethernet ports are supported, and the MPSC is
supported as a console driver. (keep in mind that the kernel has no
support for this yet)

There are still occaisonal lockups with the MPSC console driver due to
(we think!) overrun problems.  If you're looking for something stable
to use for Linux development, consider sticking with the DUART console
for now.

Automatic memory sizing mostly works.  We've had problems with some
combinations of memory.  Please send us email if you're having trouble
with respect to the memory detection.

Right now, only the 512k boot flash is supported.  Support for the
16MB flash on the devices module is forthcoming.  Right now the flash
is stored at the 256k boundry in flash, wasting a whole sector (64k!)
for environment data.  This isn't really a big deal since we're not
using the 512k for anything else. (Just U-Boot and the environment)

Finally, here is a sample output session:

U-Boot 1.0.0-pre1 (Jun  6 2001 - 12:45:11)

Initializing...
  CPU:   MPC7400 (altivec enabled) v2.9
  Board: EVB64260
  DRAM:  256 MB
  FLASH: 512 kB
  In:    serial
  Out:   serial
  Err:   serial

=>

The default configuration should be correct for the evaluation board,
as it's shipped from Galileo.  Keep in mind that the default baudrate
is set to 38400, 8N1.

Good luck, and make sure to send any bugreports to us (or the
u-boot-users list).

Josh
