Itsy is a research project done by the Western Research Lab, and Systems
Research Center in Palo Alto, CA. The Itsy project is one of several
research projects at Compaq that are related to pocket computing.

For more information, see:

	http://www.research.digital.com/wrl/itsy/index.html

Notes on initial 2.4 Itsy support (8/27/2000) :
The port was done on an Itsy version 1.5 machine with a daughtercard with
64 Meg of DRAM and 32 Meg of Flash. The initial work includes support for
serial console (to see what you're doing).  No other devices have been
enabled.

To build, do a "make menuconfig" (or xmenuconfig) and select Itsy support.
Disable Flash and LCD support. and then do a make zImage.
Finally, you will need to cd to arch/arm/boot/tools and execute a make there
to build the params-itsy program used to boot the kernel.

In order to install the port of 2.4 to the itsy, You will need to set the
configuration parameters in the monitor as follows:
Arg 1:0x08340000, Arg2: 0xC0000000, Arg3:18 (0x12), Arg4:0
Make sure the start-routine address is set to 0x00060000.

Next, flash the params-itsy program to 0x00060000 ("p 1 0x00060000" in the
flash menu)  Flash the kernel in arch/arm/boot/zImage into 0x08340000
("p 1 0x00340000").  Finally flash an initial ramdisk into 0xC8000000
("p 2 0x0")  We used ramdisk-2-30.gz from the 0.11 version directory on
handhelds.org.

The serial connection we established was at:
 8-bit data, no parity, 1 stop bit(s), 115200.00 b/s. in the monitor, in the
params-itsy program, and in the kernel itself.  This can be changed, but
not easily. The monitor parameters are easily changed, the params program
setup is assembly outl's, and the kernel is a configuration item specific to
the itsy. (i.e. grep for CONFIG_SA1100_ITSY and you'll find where it is.)


This should get you a properly booting 2.4 kernel on the itsy.
