Merge with /home/wd/git/u-boot/master
[platform/kernel/u-boot.git] / doc / README.PIP405
1 U-Boot Changes due to PIP405 Port:
2 ===================================
3
4 Changed files:
5 ==============
6 - MAKEALL                       added PIP405
7 - makefile                      added PIP405
8 - common/Makefile               added Floppy disk and SCSI support
9 - common/board.c                added PIP405, SCSI support, get_PCI_freq()
10 - common/bootm.c                added IH_OS_U_BOOT, IH_TYPE_FIRMWARE
11 - common/cmd_i2c.c              added "defined(CONFIG_PIP405)"
12 - common/cmd_ide.c              changed div. functions to work with block device
13                                 description
14                                 added ATAPI support
15 - common/command.c              added SCSI and Floppy support
16 - common/console.c              replaced // with /* comments
17                                 added console settings from environment
18 - common/devices.c              added ISA keyboard init
19 - common/main.c                 corrected the read of bootdelay
20 - cpu/ppc4xx/405gp_pci.c        excluded file from PIP405
21 - cpu/ppc4xx/i2c.c              added 16bit read write I2C support
22                                 added page write
23 - cpu/ppc4xx/speed.c            added get_PCI_freq
24 - cpu/ppc4xx/start.S            added CONFIG_IDENT_STRING
25 - disk/Makefile                 added part_iso for CD support
26 - disk/part.c                   changed to work with block device description
27                                 added ISO CD support
28                                 added dev_print (was ide_print in cmd_ide.c)
29 - disk/part_dos.c               changed to work with block device description
30 - disk/part_mac.c               changed to work with block device description
31 - include/ata.h                 added ATAPI commands
32 - include/cmd_bsp.h             added PIP405 commands definitions
33 - include/cmd_condefs.h         added Floppy and SCSI support
34 - include/cmd_disk.h            changed to work with block device description
35 - include/config_LANTEC.h       excluded CFG_CMD_FDC and CFG_CMD_SCSI from
36                                 CONFIG_CMD_FULL
37 - include/config_hymod.h        excluded CFG_CMD_FDC and CFG_CMD_SCSI from
38                                 CONFIG_CMD_FULL
39 - include/flash.h               added INTEL_ID_28F320C3T  0x88C488C4
40 - include/i2c.h                 added "defined(CONFIG_PIP405)"
41 - include/image.h               added IH_OS_U_BOOT, IH_TYPE_FIRMWARE
42 - include/u-boot.h              moved partitions functions definitions to part.h
43                                 added "defined(CONFIG_PIP405)"
44                                 added get_PCI_freq() definition
45 - rtc/Makefile                  added MC146818 RTC support
46 - tools/mkimage.c               added IH_OS_U_BOOT, IH_TYPE_FIRMWARE
47
48 Added files:
49 ============
50 - board/pip405                  directory for PIP405
51 - board/pip405/cmd_pip405.c     board specific commands
52 - board/pip405/config.mk        config make
53 - board/pip405/flash.c          flash support
54 - board/pip405/init.s           start-up
55 - board/pip405/kbd.c            keyboard support
56 - board/pip405/kbd.h            keyboard support
57 - board/pip405/Makefile         Makefile
58 - board/pip405/pci_piix4.h      southbridge definitions
59 - board/pip405/pci_pip405.c     PCI support for PIP405
60 - board/pip405/pci_pip405.h     PCI support for PIP405
61 - board/pip405/pip405.c         PIP405 board init
62 - board/pip405/pip405.h         PIP405 board init
63 - board/pip405/pip405_isa.c     ISA support
64 - board/pip405/pip405_isa.h     ISA support
65 - board/pip405/u-boot.lds       Linker description
66 - board/pip405/u-boot.lds.debugLinker description debug
67 - board/pip405/sym53c8xx.c      SYM53C810A support
68 - board/pip405/sym53c8xx_defs.h SYM53C810A definitions
69 - board/pip405/vga_table.h      definitions of tables for VGA
70 - board/pip405/video.c          CT69000 support
71 - board/pip405/video.h          CT69000 support
72 - common/cmd_fdc.c              Floppy disk support
73 - common/cmd_scsi.c             SCSI support
74 - disk/part_iso.c               ISO CD ROM support
75 - disk/part_iso.h               ISO CD ROM support
76 - include/cmd_fdc.h             command forFloppy disk support
77 - include/cmd_scsi.h            command for SCSI support
78 - include/part.h                partitions functions definitions
79                                 (was part of u-boot.h)
80 - include/scsi.h                SCSI support
81 - rtc/mc146818.c                MC146818 RTC support
82
83
84 New Config Switches:
85 ====================
86 For detailed description, refer to the corresponding paragraph in the
87 section "Changes".
88
89 New Commands:
90 -------------
91 CFG_CMD_SCSI    SCSI Support
92 CFG_CMF_FDC     Floppy disk support
93
94 IDE additions:
95 --------------
96 CONFIG_IDE_RESET_ROUTINE        defines that instead of a reset Pin,
97                                 the routine ide_set_reset(int idereset) is used.
98 ATAPI support (experimental)
99 ----------------------------
100 CONFIG_ATAPI    enables ATAPI Support
101
102 SCSI support (experimental) only SYM53C8xx supported
103 ----------------------------------------------------
104 CONFIG_SCSI_SYM53C8XX           type of SCSI controller
105 CFG_SCSI_MAX_LUN        8       number of supported LUNs
106 CFG_SCSI_MAX_SCSI_ID    7       maximum SCSI ID (0..6)
107 CFG_SCSI_MAX_DEVICE     CFG_SCSI_MAX_SCSI_ID * CFG_SCSI_MAX_LUN
108                                 maximum of Target devices (multiple LUN support
109                                 for boot)
110
111 ISO (CD-Boot) partition support (Experimental)
112 ----------------------------------------------
113 CONFIG_ISO_PARTITION            CD-boot support
114
115 RTC
116 ----
117 CONFIG_RTC_MC146818             MC146818 RTC support
118
119 Keyboard:
120 ---------
121 CONFIG_ISA_KEYBOARD             Standard (PC-Style) Keyboard support
122
123 Video:
124 ------
125 CONFIG_VIDEO_CT69000            Enable Chips & Technologies 69000 Video chip
126                                 CONFIG_VIDEO must be defined also
127
128 External peripheral base address:
129 ---------------------------------
130 CFG_ISA_IO_BASE_ADDRESS         address of all ISA-bus related parts
131                                 _must_ be defined for ISA-bus parts
132
133 Identify:
134 ---------
135 CONFIG_IDENT_STRING             added to the U_BOOT_VERSION String
136
137
138 I2C stuff:
139 ----------
140 CFG_EEPROM_PAGE_WRITE_ENABLE    enables page write of the I2C EEPROM
141                                 CFG_EEPROM_PAGE_WRITE_BITS _must_ be
142                                 defined.
143
144
145 Environment / Console:
146 ----------------------
147
148 CFG_CONSOLE_IS_IN_ENV           if defined, stdin, stdout and stderr used from
149                                 the values stored in the evironment.
150
151 CFG_CONSOLE_OVERWRITE_ROUTINE   if defined, console_overwrite() decides if the
152                                 values stored in the environment or the standard
153                                 serial in/out put should be assigned to the console.
154
155 CFG_CONSOLE_ENV_OVERWRITE       if defined, the start-up console switching
156                                 are stored in the environment.
157
158 PIP405 specific:
159 ----------------
160 CONFIG_PORT_ADDR                address used to read boot configuration
161 MULTI_PURPOSE_SOCKET_ADDR       address of the multi purpose socked
162 SDRAM_EEPROM_WRITE_ADDRESS      addresses of the serial presence detect
163 SDRAM_EEPROM_READ_ADDRESS       EEPROM on the SDRAM module.
164
165
166 Changes:
167 ========
168
169 Added Devices:
170 ==============
171
172 Floppy support:
173 ---------------
174 Support of a standard floppy disk controller at address CFG_ISA_IO_BASE_ADDRESS
175 + 0x3F0. Enabled with define CFG_CMD_FDC. Reads a unformated floppy disk with a
176 image header (see: mkimage). No interrupts and no DMA are used for this.
177 Added files:
178 - common/cmd_fdc.c
179 - include/cmd_fdc.h
180
181 SCSI support:
182 -------------
183 Support for Symbios SYM53C810A chip. Implemented as follows:
184 - without disconnect
185 - only asynchrounous
186 - multiple LUN support (caution, needs a lot of RAM. define CFG_SCSI_MAX_LUN 1 to
187   save RAM)
188 - multiple SCSI ID support
189 - no write support
190 - analyses the MAC, DOS and ISO pratition similar to the IDE support
191 - allows booting from SCSI devices similar to the IDE support.
192 The device numbers are not assigned like they are within the IDE support. The first
193 device found will get the number 0, the next 1 etc. If all SCSI IDs (0..6) and all
194 LUNs (8) are enabled, 56 boot devices are possible. This uses a lot of RAM since the
195 device descriptors are not yet dynamically allocated. 56 boot devices are overkill
196 anyway. Please refer to the section "Todo" chapter "block device support enhancement".
197 The SYM53C810A uses 1 Interrupt and must be able of mastering the PCI bus.
198 Added files:
199 - common/cmd_scsi.c
200 - common/board.c
201 - include/cmd_scsi.h
202 - include/scsi.h
203 - board/pip405/sym53c8xx.c
204 - board/pip405/sym53c8xx_defs.h
205
206 ATAPI support (IDE changes):
207 ----------------------------
208 Added ATAPI support (with CONFIG_ATAPI) in the file cmd_ide.c.
209 To support a hardreset, when the IDE reset pin is not connected to the
210 CFG_PC_IDE_RESET pin, the switch CONFIG_IDE_RESET_ROUTINE has been added. When
211 this switch is enabled the routine void ide_set_reset(int idereset) must be
212 within the board specific files.
213 Only read from ATAPI devices are supported.
214 Found out that the function trim_trail cuts off the last character if the whole
215 string is filled. Added function cpy_ident instead, which trims also leading
216 spaces and copies the string in the buffer.
217 Changed files:
218 - common/cmd_ide.c
219 - include/ata.h
220
221 ISO partition support:
222 ----------------------
223 Added CD boot support for El-Torito bootable ISO CDs. The bootfile image must contain
224 the U-Boot image header. Since CDs do not have "partitions", the boot partition is 0.
225 The bootcatalog feature has not been tested so far. CD Boot is supported for ATAPI
226 ("diskboot") and SCSI ("scsiboot") devices.
227 Added files:
228 - disk/iso_part.c
229 - disk/iso_part.h
230
231 Block device changes:
232 ---------------------
233 To allow the use of dos_part.c, mac_part.c and iso_part.c, the parameter
234 block_dev_desc will be used when accessing the functions in these files. The block
235 device descriptor (block_dev_desc) contains a pointer to the read routine of the
236 device, which will be used to read blocks from the device.
237 Renamed function ide_print to dev_print and moved it to the file disk/part.c to use
238 it for IDE ATAPI and SCSI devices.
239 Please refer to the section "Todo" chapter "block device support enhancement".
240 Added files:
241 - include/part.h
242 changed files:
243 - disk/dos_part.c
244 - disk/dos_part.h
245 - disk/mac_part.c
246 - disk/mac_part.h
247 - disk/part.c
248 - common/cmd_ide.c
249 - include/u-boot.h
250
251
252 MC146818 RTC support:
253 ---------------------
254 Added support for MC146818 RTC with defining CONFIG_RTC_MC146818. The ISA bus IO
255 base address must be defined with CFG_ISA_IO_BASE_ADDRESS.
256 Added files:
257 - rtc/mc146818.c
258
259 Standard ISA bus Keyboard support:
260 ----------------------------------
261 Added support for the standard PC kyeboard controller. For the PIP405 the superIO
262 controller must be set up previously. The keyboard uses the standard ISA IRQ, so
263 the ISA PIC must also be set up.
264 Added files:
265 - board/pip405/kbd.c
266 - board/pip405/kbd.h
267 - board/pip405/pip405_isa.c
268 - board/pip405/pip405_isa.h
269
270 Chips and Technologie 69000 VGA controller support:
271 ---------------------------------------------------
272 Added support for the CT69000 VGA controller.
273 Added files:
274 - board/pip405/video.c
275 - board/pip405/video.h
276 - board/pip405/vga_table.h
277
278
279 Changed Items:
280 ==============
281
282 Identify:
283 ---------
284 Added the config variable CONFIG_IDENT_STRING which will be added to the
285 "U_BOOT_VERSION __TIME__ DATE___ " String, to allows to identify intermidiate
286 and custom versions.
287 Changed files:
288 - cpu/ppc4xx/start.s
289
290 Firmware Image:
291 ---------------
292 Added IH_OS_U_BOOT and IH_TYPE_FIRMWARE to the image definitions to allows the
293 U-Boot update with prior CRC check.
294 Changed files:
295 - include/image.h
296 - tools/mkimage.c
297 - common/cmd_bootm.c
298
299 Correct PCI Frequency for PPC405:
300 ---------------------------------
301 Added function (in cpu/ppc4xx/speed.c) to get the PCI frequency for PPC405 CPU.
302 The PCI Frequency will now be set correct in the board description in common/board.c.
303 (was set to the busfreq before).
304 Changed files:
305 - cpu/ppc4xx/speed.c
306 - common/board.c
307
308 I2C Stuff:
309 ----------
310 Added defined(CONFIG_PIP405) at several points in common/cmd_i2c.c.
311 Added 16bit read/write support for I2C (PPC405), and page write to
312 I2C EEPROM if defined CFG_EEPROM_PAGE_WRITE_ENABLE.
313 Changed files:
314 - cpu/ppc4xx/i2c.c
315 - common/cmd_i2c.c
316
317 Environment / Console:
318 ----------------------
319 Although in README.console described, the U-Boot has not assinged the values
320 found in the environment to the console. Corrected this behavior, but only if
321 CFG_CONSOLE_IS_IN_ENV is defined.
322 If CFG_CONSOLE_OVERWRITE_ROUTINE is defined, console_overwrite() decides if the
323 values stored in the environment or the standard serial in/output should be
324 assigned to the console. This is useful if the environment values are not correct.
325 If CFG_CONSOLE_ENV_OVERWRITE is defined the devices assigned to the console at
326 start-up time will be written to the environment. This means that if the
327 environment values are overwritten by the overwrite_console() routine, they will be
328 stored in the environment.
329 Changed files:
330 - common/console.c
331
332 Correct bootdelay intepretation:
333 --------------------------------
334 Changed bootdelay read from the environment from simple_strtoul (unsigned) to
335 simple_strtol (signed), to be able to get a bootdelay of -1.
336 Changed files:
337 - common/main.c
338
339 Todo:
340 =====
341
342 Block device support enhancement:
343 ---------------------------------
344 Consider to unify the block device handling. Instead of using diskboot for IDE,
345 scsiboot for SCSI and fdcboot for floppy disks, it would make sense to use only
346 one command ("devboot" ???) with a parameter of the desired device ("hda1", "sda1",
347 "fd0" ???) to boot from. The other ide commands can be handled in the same way
348 ("dev hda read.." instead of "ide read.." or "dev sda read.." instead of
349 "scsi read..."). Todo this, a common way of assign a block device to its name
350 (first found ide device = hda, second found hdb etc., or hda is device 0 on bus 0,
351 hdb is device 1 on bus 0 etc.) as well as the names (hdx for ide, sdx for scsi, fx for
352 floppy ???) must be defined.
353 Maybe there are better ideas to do this.
354
355 Console assingment:
356 -------------------
357 Consider to initialize and assign the console stdin, stdout and stderr as soon as
358 possible to see the boot messages also on an other console than serial.
359
360
361 Todo for PIP405:
362 ================
363
364 LCD support for VGA:
365 --------------------
366 Add LCD support for the CT69000
367
368 Default environment:
369 --------------------
370 Consider to write a default environment to the OTP part of the EEPROM and use it
371 if the normal environment is not valid. Useful for serial# and ethaddr values.
372
373 Watchdog:
374 ---------
375 Implement Watchdog.
376
377 Files clean-up:
378 ---------------
379 Following files needs to be cleaned up:
380 - cmd_pip405.c
381 - flash.c
382 - pci_pip405.c
383 - pip405.c
384 - pip405_isa.c
385 Consider to split up the files in their functions.