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 CFG_CMD_FDC and CFG_CMD_SCSI from
				CONFIG_CMD_FULL
- include/config_hymod.h	excluded CFG_CMD_FDC and CFG_CMD_SCSI from
				CONFIG_CMD_FULL
- 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:
-------------
CFG_CMD_SCSI	SCSI Support
CFG_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


I2C stuff:
----------
CFG_EEPROM_PAGE_WRITE_ENABLE	enables page write of the I2C EEPROM
				CFG_EEPROM_PAGE_WRITE_BITS _must_ be
				defined.


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 CFG_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.
