This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / Documentation / arm / XScale / IOP3XX / IQ80321
1
2 Board Overview
3 -----------------------------
4
5 The Worcester IQ80321 board is an evaluation platform for Intel's 80321 Xscale
6 CPU (sometimes called IOP321 chipset).
7
8 The 80321 contains a single PCI hose (called the ATUs), a PCI-to-PCI bridge,
9 two DMA channels, I2C, I2O messaging unit, XOR unit for RAID operations,
10 a bus performance monitoring unit, and a memory controller with ECC features.
11
12 For more information on the board, see http://developer.intel.com/iio
13
14 Port Status
15 -----------------------------
16
17 Supported:
18
19 - MTD/JFFS/JFFS2 root
20 - NFS root
21 - RAMDISK root
22 - Serial port (ttyS0)
23 - Cache/TLB locking on 80321 CPU
24 - Performance monitoring unit on 80321 CPU
25
26 TODO:
27
28 - DMA engines
29 - I2C
30 - 80321 Bus Performance Monitor
31 - Application Accelerator Unit (XOR engine for RAID)
32 - I2O Messaging Unit
33 - I2C unit
34 - SSP
35
36 Building the Kernel
37 -----------------------------
38 make iq80321_config
39 make oldconfig
40 make zImage
41
42 This will build an image setup for BOOTP/NFS root support.  To change this,
43 just run make menuconfig and disable nfs root or add a "root=" option.
44
45 Preparing the Hardware
46 -----------------------------
47
48 Make sure you do an 'fis init' command once you boot with the new
49 RedBoot image.
50
51 Downloading Linux
52 -----------------------------
53
54 Assuming you have your development system setup to act as a bootp/dhcp
55 server and running tftp:
56
57 NOTE: The 80321 board uses a different default memory map than the 80310.
58
59    RedBoot> load -r -b 0x01008000 -m y
60
61 Once the download is completed:
62
63    RedBoot> go 0x01008000
64
65 There is a version of RedBoot floating around that has DHCP support, but
66 I've never been able to cleanly transfer a kernel image and have it run.
67
68 Root Devices
69 -----------------------------
70
71 A kernel is not useful without a root filesystem, and you have several
72 choices with this board:  NFS root, RAMDISK, or JFFS/JFFS2.  For development
73 purposes, it is suggested that you use NFS root for easy access to various
74 tools.  Once you're ready to deploy, probably want to utilize JFFS/JFFS2 on
75 the flash device.
76
77 MTD on the IQ80321
78 -----------------------------
79
80 Linux on the IQ80321 supports RedBoot FIS paritioning if it is enabled.
81 Out of the box, once you've done 'fis init' on RedBoot, you will get
82 the following partitioning scheme:
83
84    root@192.168.0.14:~# cat /proc/mtd
85    dev:    size   erasesize  name
86    mtd0: 00040000 00020000 "RedBoot"
87    mtd1: 00040000 00020000 "RedBoot[backup]"
88    mtd2: 0075f000 00020000 "unallocated space"
89    mtd3: 00001000 00020000 "RedBoot config"
90    mtd4: 00020000 00020000 "FIS directory"
91
92 To create an FIS directory, you need to use the fis command in RedBoot.
93 As an example, you can burn the kernel into the flash once it's downloaded:
94
95    RedBoot> fis create -b 0x01008000 -l 0x8CBAC -r 0x01008000 -f 0x80000 kernel
96    ... Erase from 0x00080000-0x00120000: .....
97    ... Program from 0x01008000-0x01094bac at 0x00080000: .....
98    ... Unlock from 0x007e0000-0x00800000: .
99    ... Erase from 0x007e0000-0x00800000: .
100    ... Program from 0x01fdf000-0x01fff000 at 0x007e0000: .
101    ... Lock from 0x007e0000-0x00800000: .
102
103    RedBoot> fis list
104    Name              FLASH addr  Mem addr    Length      Entry point
105    RedBoot           0x00000000  0x00000000  0x00040000  0x00000000
106    RedBoot[backup]   0x00040000  0x00040000  0x00040000  0x00000000
107    RedBoot config    0x007DF000  0x007DF000  0x00001000  0x00000000
108    FIS directory     0x007E0000  0x007E0000  0x00020000  0x00000000
109    kernel            0x00080000  0x01008000  0x000A0000  0x00000000
110
111 This leads to the following Linux MTD setup:
112
113    mtroot@192.168.0.14:~# cat /proc/mtd
114    dev:    size   erasesize  name
115    mtd0: 00040000 00020000 "RedBoot"
116    mtd1: 00040000 00020000 "RedBoot[backup]"
117    mtd2: 000a0000 00020000 "kernel"
118    mtd3: 006bf000 00020000 "unallocated space"
119    mtd4: 00001000 00020000 "RedBoot config"
120    mtd5: 00020000 00020000 "FIS directory"
121
122 Note that there is not a 1:1 mapping to the number of RedBoot paritions to
123 MTD partitions as unused space also gets allocated into MTD partitions.
124
125 As an aside, the -r option when creating the Kernel entry allows you to
126 simply do an 'fis load kernel' to copy the image from flash into memory.
127 You can then do an 'fis go 0x01008000' to start Linux.
128
129 If you choose to use static partitioning instead of the RedBoot partioning:
130
131    /dev/mtd0  0x00000000 - 0x0007ffff: Boot Monitor     (512k)
132    /dev/mtd1  0x00080000 - 0x0011ffff: Kernel Image     (640K)
133    /dev/mtd2  0x00120000 - 0x0071ffff: File System      (6M)
134    /dev/mtd3  0x00720000 - 0x00800000: RedBoot Reserved (896K)
135
136 To use a JFFS1/2 root FS, you need to donwload the JFFS image using either
137 tftp or ymodem, and then copy it to flash:
138
139    RedBoot> load -r -b 0x01000000 /tftpboot/jffs.img
140    Raw file loaded 0x01000000-0x01600000
141    RedBoot> fis create -b 0x01000000 -l 0x600000 -f 0x120000 jffs
142    ... Erase from 0x00120000-0x00720000: ..................................
143    ... Program from 0x01000000-0x01600000 at 0x00120000: ..................
144    ......................
145    ... Unlock from 0x007e0000-0x00800000: .
146    ... Erase from 0x007e0000-0x00800000: .
147    ... Program from 0x01fdf000-0x01fff000 at 0x007e0000: .
148    ... Lock from 0x007e0000-0x00800000: .
149    RedBoot> fis list
150    Name              FLASH addr  Mem addr    Length      Entry point
151    RedBoot           0x00000000  0x00000000  0x00040000  0x00000000
152    RedBoot[backup]   0x00040000  0x00040000  0x00040000  0x00000000
153    RedBoot config    0x007DF000  0x007DF000  0x00001000  0x00000000
154    FIS directory     0x007E0000  0x007E0000  0x00020000  0x00000000
155    kernel            0x00080000  0x01008000  0x000A0000  0x01008000
156    jffs              0x00120000  0x00120000  0x00600000  0x00000000
157
158 This looks like this in Linux:
159
160    root@192.168.0.14:~# cat /proc/mtd
161    dev:    size   erasesize  name
162    mtd0: 00040000 00020000 "RedBoot"
163    mtd1: 00040000 00020000 "RedBoot[backup]"
164    mtd2: 000a0000 00020000 "kernel"
165    mtd3: 00600000 00020000 "jffs"
166    mtd4: 000bf000 00020000 "unallocated space"
167    mtd5: 00001000 00020000 "RedBoot config"
168    mtd6: 00020000 00020000 "FIS directory"
169
170 You need to boot the kernel once and watch the boot messages to see how the
171 JFFS RedBoot partition mapped into the MTD partition scheme.
172
173 You can grab a pre-built JFFS image to use as a root file system at:
174
175    ftp://source.mvista.com/pub/xscale/iq80310/jffs.img
176
177 For detailed info on using MTD and creating a JFFS image go to:
178
179    http://www.linux-mtd.infradead.org.
180
181 For details on using RedBoot's FIS commands, type 'fis help' or consult
182 your RedBoot manual.
183
184 BUGS and ISSUES
185 -----------------------------
186
187 * As shipped from Intel, pre-production boards have two issues:
188
189 - The on board ethernet is disabled S8E1-2 is off. You will need to turn it on.
190
191 - The PCIXCAPs are configured for a 100Mhz clock, but the clock selected is
192   actually only 66Mhz. This causes the wrong PPL multiplier to be used and the
193   board only runs at 400Mhz instead of 600Mhz. The way to observe this is to
194   use a independent clock to time a "sleep 10" command from the prompt. If it
195   takes 15 seconds instead of 10, you are running at 400Mhz.
196
197 - The experimental IOP310 drivers for the AAU, DMA, etc. are not supported yet.
198
199 Contributors
200 -----------------------------
201 The port to the IQ80321 was performed by:
202
203 Rory Bolt <rorybolt@pacbell.net> - Initial port, debugging.
204
205 This port was based on the IQ80310 port with the following contributors:
206
207 Nicolas Pitre <nico@cam.org> - Initial port, cleanup, debugging
208 Matt Porter <mporter@mvista.com> - PCI subsystem development, debugging
209 Tim Sanders <tsanders@sanders.org> - Initial PCI code
210 Deepak Saxena <dsaxena@mvista.com> - Cleanup, debug, cache lock, PMU
211
212 The port is currently maintained by Deepak Saxena <dsaxena@mvista.com>
213
214 -----------------------------
215 Enjoy.