Freescale MPC8349E-mITX and MPC8349E-mITX-GP Boards
---------------------------------------------------

1.	Board Description

	The MPC8349E-mITX and MPC8349E-mITX-GP are reference boards featuring
	the Freescale MPC8349E processor in a Mini-ITX form factor.

	The MPC8349E-mITX-GP is an MPC8349E-mITX with the following differences:

	A) One 8MB on-board flash EEPROM chip, instead of two.
	B) No SATA controller
	C) No Compact Flash slot
	D) No Mini-PCI slot
	E) No Vitesse 7385 5-port Ethernet switch
	F) No 4-port USB Type-A interface

2.	Board Switches and Jumpers

2.0	Descriptions for all of the board jumpers can be found in the User
	Guide.  Of particular interest to U-Boot developers is jumper J22:

	Pos.	Name		Default		Description
	-----------------------------------------------------------------------
	A	LGPL0		ON (0)          HRCW source, bit 0
	B       LGPL1           ON (0)          HRCW source, bit 1
	C       LGPL3           ON (0)		HRCW source, bit 2
	D       LGPL5           OFF (1)         PCI_SYNC_OUT frequency
	E       BOOT1           ON (0)          Flash EEPROM boot device
	F       PCI_M66EN       ON (0)          PCI 66MHz enable
	G       I2C-WP          ON (0)          I2C EEPROM write protection
	H       F_WP            OFF (1)         Flash EEPROM write protection

	Jumper J22.E is only for the ITX, and it decides the configuration
	of the flash chips.  If J22.E is ON (i.e. jumpered), then flash chip
	U4 is located at address FE000000 and flash chip U7 is at FE800000.
	If J22.E is OFF, then U7 is at FE000000 and U4 is at FE800000.

	For U-Boot development, J22.E can be used to switch back-and-forth
	between two U-Boot images.

3.	Memory Map

3.1.	The memory map should look pretty much like this:

	0x0000_0000 - 0x0FFF_FFFF DDR SDRAM (256 MB)
	0x8000_0000 - 0x9FFF_FFFF PCI1 memory space (512 MB)
	0xA000_0000 - 0xBFFF_FFFF PCI2 memory space (512 MB)
	0xE000_0000 - 0xEFFF_FFFF IMMR (1 MB)
	0xE200_0000 - 0xE2FF_FFFF PCI1 I/O space (16 MB)
	0xE300_0000 - 0xE3FF_FFFF PCI2 I/O space (16 MB)
	0xF000_0000 - 0xF000_FFFF Compact Flash (ITX only)
	0xF001_0000 - 0xF001_FFFF Local bus expansion slot
	0xF800_0000 - 0xF801_FFFF Vitesse 7385 Parallel Interface (ITX only)
	0xFE00_0000 - 0xFE7F_FFFF First 8MB bank of Flash memory
	0xFE80_0000 - 0xFEFF_FFFF Second 8MB bank of Flash memory (ITX only)

3.2	Flash EEPROM layout.

	On the ITX, jumper J22.E is used to determine which flash chips are
	at which address.  When J22.E is switched, addresses from FE000000
	to FE7FFFFF are swapped with addresses from FE800000 to FEFFFFFF.

	On the ITX, at the normal boot address (aka HIGHBOOT):

	FE00_0000	HRCW
	FE70_0000	Alternative U-Boot image
	FE80_0000	Alternative HRCW
	FEF0_0000	U-Boot image
	FEFF_FFFF	End of flash

	On the ITX, at the low boot address (LOWBOOT)

	FE00_0000	HRCW and U-Boot image
	FE04_0000	U-Boot environment variables
	FE80_0000	Alternative HRCW and U-Boot image
	FEFF_FFFF	End of flash

	On the ITX-GP, the only option is LOWBOOT and there is only one chip

	FE00_0000	HRCW and U-Boot image
	FE04_0000	U-Boot environment variables
	F7FF_FFFF	End of flash

4. Definitions

4.1 Explanation of NEW definitions in:

	include/configs/MPC8349ITX.h

	CONFIG_MPC83xx		MPC83xx family
	CONFIG_MPC8349		MPC8349 specific
	CONFIG_MPC8349ITX		MPC8349E-mITX
	CONFIG_MPC8349ITXGP		MPC8349E-mITX-GP

5. Compilation

	Assuming you're using BASH shell:

		export CROSS_COMPILE=your-cross-compile-prefix
		cd u-boot
		make distclean

		make MPC8349ITX_config
	or:
		make MPC8349ITXGP_config
	or:
		make MPC8349ITX_LOWBOOT_config

		make

6. Downloading and Flashing Images

6.1 Download via tftp:

	tftp $loadaddr <uboot>

	where "<uboot>" is the path and filename, on the TFTP server, of
	the U-Boot image.

6.1 Reflash U-Boot Image using U-Boot

	setenv uboot <uboot>
	run tftpflash

	where "<uboot>" is the path and filename, on the TFTP server, of
	the U-Boot image.

6.2 Using the HRCW to switch between two different U-Boot images on the ITX

	Because the ITX has 16MB of flash, it is possible to keep two U-Boot
	images in flash, and use the HRCW to specify which one is to be used
	when the board boots.  This trick is especially effective with a
	hardware debugger that can override the HRCW, such as the BDI-2000.

	When the BMS bit in the HRCW is 0, the ITX will boot the U-Boot image
	at address FE000000.  When the BMS bit is 1, the ITX will boot the
	image at address FEF00000.

	Therefore, just put a U-Boot image at both FE000000 and FEF00000 and
	change the BMS bit whenever you want to boot the other image.

	Step-by-step instructions:

	1) Build an ITX image to be loaded at FEF00000

		make distclean
		make MPC8349ITX_config
		make

	2) Take the u-boot.bin image and flash it at FEF00000.

		tftp $loadaddr u-boot.bin
		protect off all
		erase FEF00000 +$filesize
		cp.b $loadaddr FEF00000 $filesize

	3) Build an ITX image to be loaded at FE000000

		make distclean
		make MPC8349ITX_LOWBOOT_config
		make

	4) Take the u-boot.bin image and flash it at FE000000.

		tftp $loadaddr u-boot.bin
		protect off FE000000 +$filesize
		erase FE000000 +$filesize
		cp.b $loadaddr FE000000 $filesize

	The HRCW in flash is currently set to boot the image at FE000000.

	If you have a hardware debugger, configure it to set the HRCW to
	B460A000 04040000 if you want to boot the image at FEF00000, or set
	it to B060A000 04040000 if you want to boot the image at FE000000.

	To change the HRCW in flash to boot the image at FEF00000, use these
	U-Boot commands:

		cp.b FE000000 1000 10000	; copy 1st flash sector to 1000
		mw.b 1020 b4 8			; modify BMS bit
		protect off FE000000 +10000
		erase FE000000 +10000
		cp.b 1000 FE000000 10000

7. Notes
	1) The console baudrate for MPC8349EITX is 115200bps.
