
This directory contains board specific code for a generic MPC860T based
embedded computer, called 'GEN860T'.  The design is generic in the sense that
common, readily available components are used and that the architecture of the
system is i(relatively) straightforward:

	One eight bit wide boot (FLASH) memory
	32 bit main memory using SDRAM
	DOC 2000+
	Ethernet PHY
	Some I2C peripheral devices: Atmel AT24C256 EEPROM, Maxim DS1337 RTC.
	Some other miscellaneous peripherals

NOTE: There are references to a XIlinx FPGA and Mil-Std 1553 databus in this
port.  I guess the computer is not as generic as I first said 8)  However,
these extras can be safely ignored.

Given the GEN860T files, it should be pretty easy to reverse engineer the
hardware configuration, if that's useful to you.  Hopefully, this code will
be useful to someone as a basis for a port to a new system or as a head start
on a custom design.  If you end up using any of this, I would appreciate
hearing from you, especially if you discover bugs or find ways to improve the
quality of this U-Boot port.

Here are the salient features of the system:
Clock						:	33 Mhz oscillator
Processor core frequency	:	66 Mhz  if in 1:2:1 mode; can also run 1:1
Bus frequency				:	33 Mhz

Main memory:
	Type	: SDRAM
	Width	: 32 bits
	Size	: 64 megabytes
	Chip	: Two Micron MT48LC16M16A2TG-7E
	CS		: MPC860T CS1*/UPMA
	UPMA CONNECTIONS:
		SDRAM A10	: GPLA0*
		SDRAM CAS*	: GPLA2*
		SDRAM WE*	: GPLA3*
		SDRAM RAS*	: GPLA4*

Boot memory:
	Type	: FLASH
	Width	: 8 bits
	Size	: 16 megabytes
	Chip	: One Intel 28F128J3A (StrataFlash)
	CS		: MPC860T CS0*/GPCM (this is the "boot" chip select)

EEPROM memory:
	Type	: Serial I2C EEPROM
	Width	: 8 bits
	Size	: 32 kibibytes
	Chip	: One Atmel AT25C256
	CS		: 0x50 (external I2C address pins on device are tied to GND)

Filesystem memory:
	Type	: NAND FLASH (Toshiba)
	Width	: 8 bits (i.e. interface to DOC is 8 bits)
	Size	: 32 megabytes
	Chip	: One DiskOnCHip Millenium Plus (DOC 2000+)
	CS		: MPC860T CS2*/GPCM

Network support:
	MAC		: MPC86OT FEC (Fast Ethernet Controller)
	PHY		: Intel LXT971A
	MII Addr: 0x0 (hardwired on the board)
	MII IRQ	:

Console:
	RS-232 on SMC1 (Maxim MAX3232 LVCMOS-RS232 level shifter)

Real Time Clock:
	Type	: Low power, I2C interface
	Chip	: Maxim DS1337
	CS		: Address 0x68 on I2C bus

	The MPC860T's internal RTC has a defect in Mask rev D that increases
	the current drain on the KAPWR line to 10 mA.  Since this is an
	unreasonable amount of current draw for a RTC, and Motorola does not
	plan to fix this in future mask revisions, a serial (I2C) RTC that
	works has been included instead.  NOTE that the DS1337 can be
	configured to output a 32768 Hz clock while the main power is on.
	This clock output has been routed to the MPC860T's EXTAL pin to allow
	the internal RTC to be used.  NOTE also that due to yet another
	defect in the rev D mask, the RTC does not operate reliably when the
	internal RTC divisor is set to use a 32768 Hz reference.  So just use
	the I2C RTC.

Miscellaneous:
	Xilinx Virtex FPGA on CS3*/GPCM.
	Virtex FPGA slave SelectMap interface on cs4*/UPMB.
	Mil-Std 1553 databus interface on CS5*/GPCM.
	Audio sounder (beeper) with digital volume control connected to SPKROUT.

Issues:
	The DOC 2000+ returns 0x40 as its device ID when probed using the method
	desxribed in the DOC datasheet.  Unfortunately, the U-Boot DOC driver
	does not recognize this device.  As of this writing, it seems that MTD
	does not support the DOC 2000+ either.

Status:
	Everything appears to work except DOC support. As of this writing,
	David Woodhouse has stated on the MTD mailing list that he has no
	knowledge of the DOC Millineum Plus and therfore there is no support
	in MTD for this device.  I wish I had known this sooner :(

The GEN860T board specific files and configuration is based on the work
of others who have contributed to U-Boot. The copright and license notices
of these authors have been retained wherever their code has been reused.
All new code to support the GEN860T board is:

	(C) Copyright 2001-2002
	Keith Outwater (keith_outwater@mvis.com)

and the following license applies:

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA

Thanks to Wolfgang Denk for a great software package and to everyone
who contributed to its development.

Keith Outwater
Sr. Staff Engineer
Microvision, Inc.
<keith_outwater@mvis.com>
<outwater@eskimo.com>

vim: set ts=4 sw=4 tw=78:

