This file contains status information for the port of the U-Boot to the Marvell Development Board DB64460.

Author: Ronen Shitrit <rshitrit@il.marvell.com>


Supported CPU Types :
+++++++++++++++++++++
IBM750Gx Rev 1.0
MPC7457 Rev 1.1

Supported CPU Cache Library:
++++++++++++++++++++++++++++
 L1 and L2 only.

CPU Control:
++++++++++++
 Marvell optimized CPU control settings:
  Big Endian
  Enable CPU pipeline
  Data and address parity checking
  AACK# assert after 2 cycles

U-Boot I/O Interface Support:
+++++++++++++++++++++++++++++
- Serial Interface (UART)
  This version of U-Boot supports the SIO U-Boot interface driver, with a PC standard baud rate up to 115200 BPS on the ST16C2552 DUART device located on DB-64360-BP device module.
- Network Interface
  This LSP supports the following network devices:
  o MV64360 Gigabit Ethernet Controller device
  o Intel 82559 PCI NIC device
- PCI Interface
  This LSP supports the following capabilities over the Marvell(r) device PCI0/1 units:
  o Local PCI configuration header control.
  o External PCI configuration header control (for other agents on the bus).
  o PCI configuration application. Scans and configures the PCI agents on the bus.
  o PCI Internal Arbiter activation and configuration.

Memory Interface Support:
+++++++++++++++++++++++++
- DDR
  o DDR auto-detection and configuration. Enables access up to 256 MB, due to the limitations of using only four Base Address Translations (BATs).
  o Enable DDR ECC in case both DIMM support ECC, and initialize the entire DDR memory by using the idma.

- Devices
  o Initializes the MV64360 device's chip-selects 0-3 to enable access to the boot flash, main flash, real time clock (RTC), and external SRAM.
  o JFFS2
    JFFS2 is a crash/power down safe file system for disk-less embedded devices.
    This version of U-Boot supports scanning a JFFS2 file system on the large flash and loading files from it.

Unsupported Features:
+++++++++++++++++++++
 Messaging unit - No support for MV64360 Messaging unit.
 Watchdog Timer - No support for MV64360 Watchdog unit.
 L3 cache - No support for L3 cache on MPC7455
 Dual PCU - No support for Dual CPU
 PCI-X was never tested
 IDMA driver - No support for MV64360 IDMA unit.
 XOR Engine - No support for MV64460 XOR Engine

BSP Special Considerations:
+++++++++++++++++++++++++++
- DDR DIMM location: Due to PCI specifications, place the larger DIMM module in the MAIN DIMM slot, in order to have full access from the PCI to the DDR while using both DDR slots.
- DDR DIMM types: Due to architectural and software limitations, the registration, CAS Latency, and ECC of both DIMMS should be identical.

Test Cases:
###########
UART:
+++++
Check that the UART baud rate is configured to 57600 and 115200, and check:
	Transmit (to the hyper terminal) and Receive (using the keyboard) using Linux minicom.
	Load S-Record file over the UART using Windows HyperTerminal.

Network:
++++++++
Use TFTP application to load a debugged executable and execute it.
Insert Intel PCI NIC 82557 rev 08 to PCI slots 0-3 Check correct detection of the PCI NIC, correct configuration of the NIC BARs , and load files by using tftp through the PCI NIC.

Memory:
+++++++
Test DDR DIMMs on DB-64360-BP. See that Uboot report their correct parameters:
o	128MB DIMM consist of 16 x 64Mbit devices
o	128MB DIMM consist of 09 x 128Mbit devices @ 266MHz.
o	256MB DIMM consist of 16 x 128Mbit devices @ 266MHz.
o	256MB DIMM consist of 09 x 256Mbit devices @ 400MHz.
o	512MB DIMM consist of 16 x 256Mbit devices @ 333MHz.
o	512MB DIMM consist of 18 x 256Mbit devices @ 266MHz.
o	GigaB DIMM consist of 36 x 256Mbit devices @ 266MHz registered

For each chip select device perform data access to verify its accessibility.

Create a JFFS2 on the large flash through the Linux holding few files, few dirs and a uImage.
Load the U-Boot and:
use the ls command to check correct scan of the JFFS2 on the large flash.
Use the floads command to copy the uImage from the JFFS2 on the large flash to the DIMM SDRAM, and boot the uImage.

PCI:
++++
1)Insert different PCI cards:
Galileo 64120A rev 10 and 12, Intel Nic 82557 rev 08 and Real Tech  NIC 8139 rev10
on different slots (0-3) of the PCI and check:
o	Correct detection of the PCI devices.
o	Correct address mapping of the PCI devices.
2)Insert Galileo 64120A rev 10 on different slots (0-3) of the PCI and check writing and reading pci configuration register through the U-Boot.

Booting Linux through the U-Boot (use the bootargs of the U-Boot as a bootcmd to the kernal)
