U-Boot Changes due to PIP405 Port:
===================================

Changed files:
==============
- MAKEALL			added PIP405
- makefile			added PIP405
- common/Makefile		added Floppy disk and SCSI support
- common/board.c		added PIP405, SCSI support, get_PCI_freq()
- common/bootm.c		added IH_OS_U_BOOT, IH_TYPE_FIRMWARE
- common/cmd_i2c.c		added "defined(CONFIG_PIP405)"
- common/cmd_ide.c		changed div. functions to work with block device
				description
				added ATAPI support
- common/command.c		added SCSI and Floppy support
- common/console.c		replaced // with /* comments
				added console settings from environment
- common/devices.c		added ISA keyboard init
- common/main.c			corrected the read of bootdelay
- cpu/ppc4xx/405gp_pci.c	excluded file from PIP405
- cpu/ppc4xx/i2c.c		added 16bit read write I2C support
				added page write
- cpu/ppc4xx/speed.c		added get_PCI_freq
- cpu/ppc4xx/start.S		added CONFIG_IDENT_STRING
- disk/Makefile			added part_iso for CD support
- disk/part.c			changed to work with block device description
				added ISO CD support
				added dev_print (was ide_print in cmd_ide.c)
- disk/part_dos.c		changed to work with block device description
- disk/part_mac.c		changed to work with block device description
- include/ata.h			added ATAPI commands
- include/cmd_bsp.h		added PIP405 commands definitions
- include/cmd_condefs.h		added Floppy and SCSI support
- include/cmd_disk.h		changed to work with block device description
- include/config_LANTEC.h	excluded CONFIG_CMD_FDC and CONFIG_CMD_SCSI
- include/config_hymod.h	excluded CONFIG_CMD_FDC and CONFIG_CMD_SCSI
- include/flash.h		added INTEL_ID_28F320C3T  0x88C488C4
- include/i2c.h			added "defined(CONFIG_PIP405)"
- include/image.h		added IH_OS_U_BOOT, IH_TYPE_FIRMWARE
- include/u-boot.h		moved partitions functions definitions to part.h
				added "defined(CONFIG_PIP405)"
				added get_PCI_freq() definition
- rtc/Makefile			added MC146818 RTC support
- tools/mkimage.c		added IH_OS_U_BOOT, IH_TYPE_FIRMWARE

Added files:
============
- board/pip405			directory for PIP405
- board/pip405/cmd_pip405.c	board specific commands
- board/pip405/config.mk	config make
- board/pip405/flash.c		flash support
- board/pip405/init.s		start-up
- board/pip405/kbd.c		keyboard support
- board/pip405/kbd.h		keyboard support
- board/pip405/Makefile		Makefile
- board/pip405/pci_piix4.h	southbridge definitions
- board/pip405/pci_pip405.c	PCI support for PIP405
- board/pip405/pci_pip405.h	PCI support for PIP405
- board/pip405/pip405.c		PIP405 board init
- board/pip405/pip405.h		PIP405 board init
- board/pip405/pip405_isa.c	ISA support
- board/pip405/pip405_isa.h	ISA support
- board/pip405/u-boot.lds	Linker description
- board/pip405/u-boot.lds.debugLinker description debug
- board/pip405/sym53c8xx.c	SYM53C810A support
- board/pip405/sym53c8xx_defs.h SYM53C810A definitions
- board/pip405/vga_table.h	definitions of tables for VGA
- board/pip405/video.c		CT69000 support
- board/pip405/video.h		CT69000 support
- common/cmd_fdc.c		Floppy disk support
- common/cmd_scsi.c		SCSI support
- disk/part_iso.c		ISO CD ROM support
- disk/part_iso.h		ISO CD ROM support
- include/cmd_fdc.h		command forFloppy disk support
- include/cmd_scsi.h		command for SCSI support
- include/part.h		partitions functions definitions
				(was part of u-boot.h)
- include/scsi.h		SCSI support
- rtc/mc146818.c		MC146818 RTC support


New Config Switches:
====================
For detailed description, refer to the corresponding paragraph in the
section "Changes".

New Commands:
-------------
CONFIG_CMD_SCSI	SCSI Support
CONFIG_CMF_FDC	Floppy disk support

IDE additions:
--------------
CONFIG_IDE_RESET_ROUTINE	defines that instead of a reset Pin,
				the routine ide_set_reset(int idereset) is used.
ATAPI support (experimental)
----------------------------
CONFIG_ATAPI	enables ATAPI Support

SCSI support (experimental) only SYM53C8xx supported
----------------------------------------------------
CONFIG_SCSI_SYM53C8XX		type of SCSI controller
CFG_SCSI_MAX_LUN	8	number of supported LUNs
CFG_SCSI_MAX_SCSI_ID	7	maximum SCSI ID (0..6)
CFG_SCSI_MAX_DEVICE	CFG_SCSI_MAX_SCSI_ID * CFG_SCSI_MAX_LUN
				maximum of Target devices (multiple LUN support
				for boot)

ISO (CD-Boot) partition support (Experimental)
----------------------------------------------
CONFIG_ISO_PARTITION		CD-boot support

RTC
----
CONFIG_RTC_MC146818		MC146818 RTC support

Keyboard:
---------
CONFIG_ISA_KEYBOARD		Standard (PC-Style) Keyboard support

Video:
------
CONFIG_VIDEO_CT69000		Enable Chips & Technologies 69000 Video chip
				CONFIG_VIDEO must be defined also

External peripheral base address:
---------------------------------
CFG_ISA_IO_BASE_ADDRESS		address of all ISA-bus related parts
				_must_ be defined for ISA-bus parts

Identify:
---------
CONFIG_IDENT_STRING		added to the U_BOOT_VERSION String

Environment / Console:
----------------------

CFG_CONSOLE_IS_IN_ENV		if defined, stdin, stdout and stderr used from
				the values stored in the evironment.

CFG_CONSOLE_OVERWRITE_ROUTINE	if defined, console_overwrite() decides if the
				values stored in the environment or the standard
				serial in/out put should be assigned to the console.

CFG_CONSOLE_ENV_OVERWRITE	if defined, the start-up console switching
				are stored in the environment.

PIP405 specific:
----------------
CONFIG_PORT_ADDR		address used to read boot configuration
MULTI_PURPOSE_SOCKET_ADDR	address of the multi purpose socked
SDRAM_EEPROM_WRITE_ADDRESS	addresses of the serial presence detect
SDRAM_EEPROM_READ_ADDRESS	EEPROM on the SDRAM module.


Changes:
========

Added Devices:
==============

Floppy support:
---------------
Support of a standard floppy disk controller at address CFG_ISA_IO_BASE_ADDRESS
+ 0x3F0. Enabled with define CONFIG_CMD_FDC. Reads a unformated floppy disk
with a image header (see: mkimage). No interrupts and no DMA are used for this.
Added files:
- common/cmd_fdc.c
- include/cmd_fdc.h

SCSI support:
-------------
Support for Symbios SYM53C810A chip. Implemented as follows:
- without disconnect
- only asynchrounous
- multiple LUN support (caution, needs a lot of RAM. define CFG_SCSI_MAX_LUN 1 to
  save RAM)
- multiple SCSI ID support
- no write support
- analyses the MAC, DOS and ISO pratition similar to the IDE support
- allows booting from SCSI devices similar to the IDE support.
The device numbers are not assigned like they are within the IDE support. The first
device found will get the number 0, the next 1 etc. If all SCSI IDs (0..6) and all
LUNs (8) are enabled, 56 boot devices are possible. This uses a lot of RAM since the
device descriptors are not yet dynamically allocated. 56 boot devices are overkill
anyway. Please refer to the section "Todo" chapter "block device support enhancement".
The SYM53C810A uses 1 Interrupt and must be able of mastering the PCI bus.
Added files:
- common/cmd_scsi.c
- common/board.c
- include/cmd_scsi.h
- include/scsi.h
- board/pip405/sym53c8xx.c
- board/pip405/sym53c8xx_defs.h

ATAPI support (IDE changes):
----------------------------
Added ATAPI support (with CONFIG_ATAPI) in the file cmd_ide.c.
To support a hardreset, when the IDE reset pin is not connected to the
CFG_PC_IDE_RESET pin, the switch CONFIG_IDE_RESET_ROUTINE has been added. When
this switch is enabled the routine void ide_set_reset(int idereset) must be
within the board specific files.
Only read from ATAPI devices are supported.
Found out that the function trim_trail cuts off the last character if the whole
string is filled. Added function cpy_ident instead, which trims also leading
spaces and copies the string in the buffer.
Changed files:
- common/cmd_ide.c
- include/ata.h

ISO partition support:
----------------------
Added CD boot support for El-Torito bootable ISO CDs. The bootfile image must contain
the U-Boot image header. Since CDs do not have "partitions", the boot partition is 0.
The bootcatalog feature has not been tested so far. CD Boot is supported for ATAPI
("diskboot") and SCSI ("scsiboot") devices.
Added files:
- disk/iso_part.c
- disk/iso_part.h

Block device changes:
---------------------
To allow the use of dos_part.c, mac_part.c and iso_part.c, the parameter
block_dev_desc will be used when accessing the functions in these files. The block
device descriptor (block_dev_desc) contains a pointer to the read routine of the
device, which will be used to read blocks from the device.
Renamed function ide_print to dev_print and moved it to the file disk/part.c to use
it for IDE ATAPI and SCSI devices.
Please refer to the section "Todo" chapter "block device support enhancement".
Added files:
- include/part.h
changed files:
- disk/dos_part.c
- disk/dos_part.h
- disk/mac_part.c
- disk/mac_part.h
- disk/part.c
- common/cmd_ide.c
- include/u-boot.h


MC146818 RTC support:
---------------------
Added support for MC146818 RTC with defining CONFIG_RTC_MC146818. The ISA bus IO
base address must be defined with CFG_ISA_IO_BASE_ADDRESS.
Added files:
- rtc/mc146818.c

Standard ISA bus Keyboard support:
----------------------------------
Added support for the standard PC kyeboard controller. For the PIP405 the superIO
controller must be set up previously. The keyboard uses the standard ISA IRQ, so
the ISA PIC must also be set up.
Added files:
- board/pip405/kbd.c
- board/pip405/kbd.h
- board/pip405/pip405_isa.c
- board/pip405/pip405_isa.h

Chips and Technologie 69000 VGA controller support:
---------------------------------------------------
Added support for the CT69000 VGA controller.
Added files:
- board/pip405/video.c
- board/pip405/video.h
- board/pip405/vga_table.h


Changed Items:
==============

Identify:
---------
Added the config variable CONFIG_IDENT_STRING which will be added to the
"U_BOOT_VERSION __TIME__ DATE___ " String, to allows to identify intermidiate
and custom versions.
Changed files:
- cpu/ppc4xx/start.s

Firmware Image:
---------------
Added IH_OS_U_BOOT and IH_TYPE_FIRMWARE to the image definitions to allows the
U-Boot update with prior CRC check.
Changed files:
- include/image.h
- tools/mkimage.c
- common/cmd_bootm.c

Correct PCI Frequency for PPC405:
---------------------------------
Added function (in cpu/ppc4xx/speed.c) to get the PCI frequency for PPC405 CPU.
The PCI Frequency will now be set correct in the board description in common/board.c.
(was set to the busfreq before).
Changed files:
- cpu/ppc4xx/speed.c
- common/board.c

I2C Stuff:
----------
Added defined(CONFIG_PIP405) at several points in common/cmd_i2c.c.
Added 16bit read/write support for I2C (PPC405), and page write to
I2C EEPROM if defined CFG_EEPROM_PAGE_WRITE_ENABLE.
Changed files:
- cpu/ppc4xx/i2c.c
- common/cmd_i2c.c

Environment / Console:
----------------------
Although in README.console described, the U-Boot has not assinged the values
found in the environment to the console. Corrected this behavior, but only if
CFG_CONSOLE_IS_IN_ENV is defined.
If CFG_CONSOLE_OVERWRITE_ROUTINE is defined, console_overwrite() decides if the
values stored in the environment or the standard serial in/output should be
assigned to the console. This is useful if the environment values are not correct.
If CFG_CONSOLE_ENV_OVERWRITE is defined the devices assigned to the console at
start-up time will be written to the environment. This means that if the
environment values are overwritten by the overwrite_console() routine, they will be
stored in the environment.
Changed files:
- common/console.c

Correct bootdelay intepretation:
--------------------------------
Changed bootdelay read from the environment from simple_strtoul (unsigned) to
simple_strtol (signed), to be able to get a bootdelay of -1.
Changed files:
- common/main.c

Todo:
=====

Block device support enhancement:
---------------------------------
Consider to unify the block device handling. Instead of using diskboot for IDE,
scsiboot for SCSI and fdcboot for floppy disks, it would make sense to use only
one command ("devboot" ???) with a parameter of the desired device ("hda1", "sda1",
"fd0" ???) to boot from. The other ide commands can be handled in the same way
("dev hda read.." instead of "ide read.." or "dev sda read.." instead of
"scsi read..."). Todo this, a common way of assign a block device to its name
(first found ide device = hda, second found hdb etc., or hda is device 0 on bus 0,
hdb is device 1 on bus 0 etc.) as well as the names (hdx for ide, sdx for scsi, fx for
floppy ???) must be defined.
Maybe there are better ideas to do this.

Console assingment:
-------------------
Consider to initialize and assign the console stdin, stdout and stderr as soon as
possible to see the boot messages also on an other console than serial.


Todo for PIP405:
================

LCD support for VGA:
--------------------
Add LCD support for the CT69000

Default environment:
--------------------
Consider to write a default environment to the OTP part of the EEPROM and use it
if the normal environment is not valid. Useful for serial# and ethaddr values.

Watchdog:
---------
Implement Watchdog.

Files clean-up:
---------------
Following files needs to be cleaned up:
- cmd_pip405.c
- flash.c
- pci_pip405.c
- pip405.c
- pip405_isa.c
Consider to split up the files in their functions.
