This file contains basic information on the port of U-Boot to TQM8260.
All the changes fit in the common U-Boot infrastructure, providing a
new TQM8260-specific entry in makefiles. To build U-Boot for TQM8260,
type "make TQM8260_config", edit the "include/config_TQM8260.h" file
if necessary, then type "make".


Common file modifications:
--------------------------

The following common files have been modified by this project:
(starting from the ppcboot-0.9.3/ directory)

MAKEALL			- TQM8260 entry added
Makefile		- TQM8260_config entry added
cpu/mpc8260/Makefile	- soft_i2c.o module added
cpu/mpc8260/ether_scc.c	- TQM8260-specific definitions added, an obvious
			  bug fixed (fcr -> scr)
cpu/mpc8260/ether_fcc.c	- TQM8260-specific definitions added
include/flash.h		- added definitions for the AM29LV640D Flash chip


New files:
----------

The following new files have been added by this project:
(starting from the ppcboot-0.9.3/ directory)

board/tqm8260/		  - board-specific directory
board/tqm8260/Makefile	  - board-specific makefile
board/tqm8260/config.mk	  - config file
board/tqm8260/flash.c	  - flash driver (for AM29LV640D)
board/tqm8260/ppcboot.lds - linker script
board/tqm8260/tqm8260.c	  - ioport and memory initialization
cpu/mpc8260/soft_i2c.c	  - software i2c EEPROM driver
include/config_TQM8260.h  - main configuration file


New configuration options:
--------------------------

CONFIG_TQM8260

	Main board-specific option (should be defined for TQM8260).

CONFIG_82xx_CONS_SMC1

	If defined, SMC1 will be used as the console

CONFIG_82xx_CONS_SMC2

	If defined, SMC2 will be used as the console

CONFIG_SYS_INIT_LOCAL_SDRAM

	If defined, the SDRAM on the local bus will be initialized and
	mapped at BR2.


Acceptance criteria tests:
--------------------------

The following tests have been conducted to validate the port of U-Boot
to TQM8260:

1. Operation on serial console:

With the CONFIG_82xx_CONS_SMC1 option defined in the main configuration file,
the U-Boot output appeared on the serial terminal connected to COM1 as
follows:

------------------------------------------------------------------------------
=> help
go      - start application at address 'addr'
run     - run commands in an environment variable
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
tftpboot- boot image via network using TFTP protocol
	       and env variables ipaddr and serverip
rarpboot- boot image via network using RARP/TFTP protocol
bootd   - boot default, i.e., run 'bootcmd'
loads   - load S-Record file over serial line
loadb   - load binary file over serial line (kermit mode)
md      - memory display
mm      - memory modify (auto-incrementing)
nm      - memory modify (constant address)
mw      - memory write (fill)
cp      - memory copy
cmp     - memory compare
crc32   - checksum calculation
base    - print or set address offset
printenv- print environment variables
setenv  - set environment variables
saveenv - save environment variables to persistent storage
protect - enable or disable FLASH write protection
erase   - erase FLASH memory
flinfo  - print FLASH memory information
bdinfo  - print Board Info structure
iminfo  - print header information for application image
coninfo - print console devices and informations
eeprom  - EEPROM sub-system
loop    - infinite loop on address range
mtest   - simple RAM test
icache  - enable or disable instruction cache
dcache  - enable or disable data cache
reset   - Perform RESET of the CPU
echo    - echo args to console
version - print monitor version
help    - print online help
?       - alias for 'help'
=>
------------------------------------------------------------------------------


2. Flash driver operation

The following sequence was performed to test the "flinfo" command:

------------------------------------------------------------------------------
=> flinfo

Bank # 1: AMD 29LV640D (64 M, uniform sector)
  Size: 32 MB in 128 Sectors
  Sector Start Addresses:
    40000000      40040000 (RO) 40080000      400C0000      40100000
    40140000      40180000      401C0000      40200000      40240000
    40280000      402C0000      40300000      40340000      40380000
    403C0000      40400000      40440000      40480000      404C0000
    40500000      40540000      40580000      405C0000      40600000
    40640000      40680000      406C0000      40700000      40740000
    40780000      407C0000      40800000      40840000      40880000
    408C0000      40900000      40940000      40980000      409C0000
    40A00000      40A40000      40A80000      40AC0000      40B00000
    40B40000      40B80000      40BC0000      40C00000      40C40000
    40C80000      40CC0000      40D00000      40D40000      40D80000
    40DC0000      40E00000      40E40000      40E80000      40EC0000
    40F00000      40F40000      40F80000      40FC0000      41000000
    41040000      41080000      410C0000      41100000      41140000
    41180000      411C0000      41200000      41240000      41280000
    412C0000      41300000      41340000      41380000      413C0000
    41400000      41440000      41480000      414C0000      41500000
    41540000      41580000      415C0000      41600000      41640000
    41680000      416C0000      41700000      41740000      41780000
    417C0000      41800000      41840000      41880000      418C0000
    41900000      41940000      41980000      419C0000      41A00000
    41A40000      41A80000      41AC0000      41B00000      41B40000
    41B80000      41BC0000      41C00000      41C40000      41C80000
    41CC0000      41D00000      41D40000      41D80000      41DC0000
    41E00000      41E40000      41E80000      41EC0000      41F00000
    41F40000      41F80000      41FC0000
=>
------------------------------------------------------------------------------


The following sequence was performed to test the erase command:

------------------------------------------------------------------------------
=> cp 0 40080000 10
Copy to Flash... done
=> erase 40080000 400bffff
Erase Flash from 0x40080000 to 0x400bffff
.. done
Erased 1 sectors
=> md 40080000
40080000: ffffffff ffffffff ffffffff ffffffff    ................
40080010: ffffffff ffffffff ffffffff ffffffff    ................
40080020: ffffffff ffffffff ffffffff ffffffff    ................
40080030: ffffffff ffffffff ffffffff ffffffff    ................
40080040: ffffffff ffffffff ffffffff ffffffff    ................
40080050: ffffffff ffffffff ffffffff ffffffff    ................
40080060: ffffffff ffffffff ffffffff ffffffff    ................
40080070: ffffffff ffffffff ffffffff ffffffff    ................
40080080: ffffffff ffffffff ffffffff ffffffff    ................
40080090: ffffffff ffffffff ffffffff ffffffff    ................
400800a0: ffffffff ffffffff ffffffff ffffffff    ................
400800b0: ffffffff ffffffff ffffffff ffffffff    ................
400800c0: ffffffff ffffffff ffffffff ffffffff    ................
400800d0: ffffffff ffffffff ffffffff ffffffff    ................
400800e0: ffffffff ffffffff ffffffff ffffffff    ................
400800f0: ffffffff ffffffff ffffffff ffffffff    ................
=> cp 0 40080000 10
Copy to Flash... done
=> erase 1:2
Erase Flash Sectors 2-2 in Bank # 1
.. done
=> md 40080000
40080000: ffffffff ffffffff ffffffff ffffffff    ................
40080010: ffffffff ffffffff ffffffff ffffffff    ................
40080020: ffffffff ffffffff ffffffff ffffffff    ................
40080030: ffffffff ffffffff ffffffff ffffffff    ................
40080040: ffffffff ffffffff ffffffff ffffffff    ................
40080050: ffffffff ffffffff ffffffff ffffffff    ................
40080060: ffffffff ffffffff ffffffff ffffffff    ................
40080070: ffffffff ffffffff ffffffff ffffffff    ................
40080080: ffffffff ffffffff ffffffff ffffffff    ................
40080090: ffffffff ffffffff ffffffff ffffffff    ................
400800a0: ffffffff ffffffff ffffffff ffffffff    ................
400800b0: ffffffff ffffffff ffffffff ffffffff    ................
400800c0: ffffffff ffffffff ffffffff ffffffff    ................
400800d0: ffffffff ffffffff ffffffff ffffffff    ................
400800e0: ffffffff ffffffff ffffffff ffffffff    ................
400800f0: ffffffff ffffffff ffffffff ffffffff    ................
=> cp 0 40080000 10
Copy to Flash... done
=> cp 0 400c0000 10
Copy to Flash... done
=> erase 1:2-3
Erase Flash Sectors 2-3 in Bank # 1
... done
=> md 40080000
40080000: ffffffff ffffffff ffffffff ffffffff    ................
40080010: ffffffff ffffffff ffffffff ffffffff    ................
40080020: ffffffff ffffffff ffffffff ffffffff    ................
40080030: ffffffff ffffffff ffffffff ffffffff    ................
40080040: ffffffff ffffffff ffffffff ffffffff    ................
40080050: ffffffff ffffffff ffffffff ffffffff    ................
40080060: ffffffff ffffffff ffffffff ffffffff    ................
40080070: ffffffff ffffffff ffffffff ffffffff    ................
40080080: ffffffff ffffffff ffffffff ffffffff    ................
40080090: ffffffff ffffffff ffffffff ffffffff    ................
400800a0: ffffffff ffffffff ffffffff ffffffff    ................
400800b0: ffffffff ffffffff ffffffff ffffffff    ................
400800c0: ffffffff ffffffff ffffffff ffffffff    ................
400800d0: ffffffff ffffffff ffffffff ffffffff    ................
400800e0: ffffffff ffffffff ffffffff ffffffff    ................
400800f0: ffffffff ffffffff ffffffff ffffffff    ................
=> md 400c0000
400c0000: ffffffff ffffffff ffffffff ffffffff    ................
400c0010: ffffffff ffffffff ffffffff ffffffff    ................
400c0020: ffffffff ffffffff ffffffff ffffffff    ................
400c0030: ffffffff ffffffff ffffffff ffffffff    ................
400c0040: ffffffff ffffffff ffffffff ffffffff    ................
400c0050: ffffffff ffffffff ffffffff ffffffff    ................
400c0060: ffffffff ffffffff ffffffff ffffffff    ................
400c0070: ffffffff ffffffff ffffffff ffffffff    ................
400c0080: ffffffff ffffffff ffffffff ffffffff    ................
400c0090: ffffffff ffffffff ffffffff ffffffff    ................
400c00a0: ffffffff ffffffff ffffffff ffffffff    ................
400c00b0: ffffffff ffffffff ffffffff ffffffff    ................
400c00c0: ffffffff ffffffff ffffffff ffffffff    ................
400c00d0: ffffffff ffffffff ffffffff ffffffff    ................
400c00e0: ffffffff ffffffff ffffffff ffffffff    ................
400c00f0: ffffffff ffffffff ffffffff ffffffff    ................
=>
------------------------------------------------------------------------------


The following sequence was performed to test the Flash programming commands:

------------------------------------------------------------------------------
=> erase 40080000 400bffff
Erase Flash from 0x40080000 to 0x400bffff
.. done
Erased 1 sectors
=> cp 0 40080000 10
Copy to Flash... done
=> md 0
00000000: 00000000 00000104 61100200 01000000    ........a.......
00000010: 00000000 00000000 81140000 82000100    ................
00000020: 01080000 00004000 22800000 00000600    ......@.".......
00000030: 00200800 00000000 10000100 00008000    . ..............
00000040: 00812000 00000200 00020000 80000000    .. .............
00000050: 00028001 00001000 00040400 00000200    ................
00000060: 20480000 00000000 20090000 00142000     H...... ..... .
00000070: 00000000 00004000 24210000 10000000    ......@.$!......
00000080: 02440002 10000000 00200008 00000000    .D....... ......
00000090: 02440900 00000000 30a40000 00004400    .D......0.....D.
000000a0: 04420800 00000000 00000040 00020000    .B.........@....
000000b0: 05020000 00100000 00060000 00000000    ................
000000c0: 00400000 00000000 00080000 00040000    .@..............
000000d0: 10400000 00800004 00000000 00000200    .@..............
000000e0: 80890000 00010004 00080000 00000020    ...............
000000f0: 08000000 10000000 00010000 00000000    ................
=> md 40080000
40080000: 00000000 00000104 61100200 01000000    ........a.......
40080010: 00000000 00000000 81140000 82000100    ................
40080020: 01080000 00004000 22800000 00000600    ......@.".......
40080030: 00200800 00000000 10000100 00008000    . ..............
40080040: ffffffff ffffffff ffffffff ffffffff    ................
40080050: ffffffff ffffffff ffffffff ffffffff    ................
40080060: ffffffff ffffffff ffffffff ffffffff    ................
40080070: ffffffff ffffffff ffffffff ffffffff    ................
40080080: ffffffff ffffffff ffffffff ffffffff    ................
40080090: ffffffff ffffffff ffffffff ffffffff    ................
400800a0: ffffffff ffffffff ffffffff ffffffff    ................
400800b0: ffffffff ffffffff ffffffff ffffffff    ................
400800c0: ffffffff ffffffff ffffffff ffffffff    ................
400800d0: ffffffff ffffffff ffffffff ffffffff    ................
400800e0: ffffffff ffffffff ffffffff ffffffff    ................
400800f0: ffffffff ffffffff ffffffff ffffffff    ................
=>
------------------------------------------------------------------------------


The following sequence was performed to test storage of the environment
variables in Flash:

------------------------------------------------------------------------------
=> setenv foo bar
=> saveenv
Un-Protected 1 sectors
Erasing Flash...
.. done
Erased 1 sectors
Saving Environment to Flash...
Protected 1 sectors
=> reset
...
=> printenv
bootdelay=CONFIG_BOOTDELAY
baudrate=9600
ipaddr=192.168.4.7
serverip=192.168.4.1
ethaddr=66:55:44:33:22:11
foo=bar
stdin=serial
stdout=serial
stderr=serial

Environment size: 170/262140 bytes
=>
------------------------------------------------------------------------------


The following sequence was performed to test image download and run over
Ethernet interface (both interfaces were tested):

------------------------------------------------------------------------------
=> tftpboot 40000 hello_world.bin
ARP broadcast 1
TFTP from server 192.168.2.2; our IP address is 192.168.2.7
Filename 'hello_world.bin'.
Load address: 0x40000
Loading: #############
done
Bytes transferred = 65912 (10178 hex)
=> go 40004
## Starting application at 0x00040004 ...
Hello World
argc = 1
argv[0] = "40004"
argv[1] = "<NULL>"
Hit any key to exit ...

## Application terminated, rc = 0x0
=>
------------------------------------------------------------------------------


The following sequence was performed to test eeprom read/write commands:

------------------------------------------------------------------------------
=> md 40000
00040000: 00018148 9421ffe0 7c0802a6 bf61000c    ...H.!..|....a..
00040010: 90010024 48000005 7fc802a6 801effe8    ...$H...........
00040020: 7fc0f214 7c7f1b78 813f004c 7c9c2378    ....|..x.?.L|.#x
00040030: 807e8000 7cbd2b78 80090010 3b600000    .~..|.+x....;`..
00040040: 7c0803a6 4e800021 813f004c 7f84e378    |...N..!.?.L...x
00040050: 807e8004 80090010 7c0803a6 4e800021    .~......|...N..!
00040060: 7c1be000 4181003c 80bd0000 813f004c    |...A..<.....?.L
00040070: 3bbd0004 2c050000 40820008 80be8008    ;...,...@.......
00040080: 80090010 7f64db78 807e800c 3b7b0001    .....d.x.~..;{..
00040090: 7c0803a6 4e800021 7c1be000 4081ffcc    |...N..!|...@...
000400a0: 813f004c 807e8010 80090010 7c0803a6    .?.L.~......|...
000400b0: 4e800021 813f004c 80090004 7c0803a6    N..!.?.L....|...
000400c0: 4e800021 2c030000 4182ffec 813f004c    N..!,...A....?.L
000400d0: 80090000 7c0803a6 4e800021 813f004c    ....|...N..!.?.L
000400e0: 807e8014 80090010 7c0803a6 4e800021    .~......|...N..!
000400f0: 38600000 80010024 7c0803a6 bb61000c    8`.....$|....a..
=> eeprom write 40000 0 40

EEPROM write: addr 00040000  off 0000  count 64 ... done
=> mw 50000 0 1000
=> eeprom read 50000 0 40

EEPROM read: addr 00050000  off 0000  count 64 ... done
=> md 50000
00050000: 00018148 9421ffe0 7c0802a6 bf61000c    ...H.!..|....a..
00050010: 90010024 48000005 7fc802a6 801effe8    ...$H...........
00050020: 7fc0f214 7c7f1b78 813f004c 7c9c2378    ....|..x.?.L|.#x
00050030: 807e8000 7cbd2b78 80090010 3b600000    .~..|.+x....;`..
00050040: 00000000 00000000 00000000 00000000    ................
00050050: 00000000 00000000 00000000 00000000    ................
00050060: 00000000 00000000 00000000 00000000    ................
00050070: 00000000 00000000 00000000 00000000    ................
00050080: 00000000 00000000 00000000 00000000    ................
00050090: 00000000 00000000 00000000 00000000    ................
000500a0: 00000000 00000000 00000000 00000000    ................
000500b0: 00000000 00000000 00000000 00000000    ................
000500c0: 00000000 00000000 00000000 00000000    ................
000500d0: 00000000 00000000 00000000 00000000    ................
000500e0: 00000000 00000000 00000000 00000000    ................
000500f0: 00000000 00000000 00000000 00000000    ................
=>
------------------------------------------------------------------------------


Patch per Mon, 06 Aug 2001 17:57:27:

- upgraded Flash support (added support for the following chips:
  AM29LV800T/B, AM29LV160T/B, AM29DL322T/B, AM29DL323T/B)
- BCR tweakage for the 8260 bus mode
- SIUMCR tweakage enabling the MI interrupt (IRQ7)

To simplify switching between the bus modes, a new configuration
option (CONFIG_BUSMODE_60x) has been added to the "config_TQM8260.h"
file. If it is defined, BCR will be configured for the 60x mode,
otherwise - for the 8260 mode.

Concerning the SIUMCR modification: it's hard to predict whether it
will induce any problems on the other (60x mode) board. However, the
problems (if they appear) should be easy to notice - if the board
does not boot, it's most likely caused by the DPPC configuration in
SIUMCR.