PPCBoot 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_PPCBOOT, 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_PPCBOOT, IH_TYPE_FIRMWARE
- include/ppcboot.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_PPCBOOT, 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/ppcboot.lds      Linker description
- board/pip405/ppcboot.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 ppcboot.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 PPCBOOT_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 ppcboot 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/ppcboot.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
"PPCBOOT_VERSION __TIME__ DATE___ " String, to allows to identify intermidiate
and custom versions.
Changed files:
- cpu/ppc4xx/start.s

Firmware Image:
---------------
Added IH_OS_PPCBOOT and IH_TYPE_FIRMWARE to the image definitions to allows the
PPCBoot 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 PPCBoot 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.
