| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 |  | 
 | 2 |  | 
 | 3 | 				  Command Line Options for Linux/m68k | 
 | 4 | 				  =================================== | 
 | 5 |  | 
 | 6 | Last Update: 2 May 1999 | 
 | 7 | Linux/m68k version: 2.2.6 | 
 | 8 | Author: Roman.Hodek@informatik.uni-erlangen.de (Roman Hodek) | 
 | 9 | Update: jds@kom.auc.dk (Jes Sorensen) and faq@linux-m68k.org (Chris Lawrence) | 
 | 10 |  | 
 | 11 | 0) Introduction | 
 | 12 | =============== | 
 | 13 |  | 
 | 14 |   Often I've been asked which command line options the Linux/m68k | 
 | 15 | kernel understands, or how the exact syntax for the ... option is, or | 
 | 16 | ... about the option ... . I hope, this document supplies all the | 
 | 17 | answers... | 
 | 18 |  | 
 | 19 |   Note that some options might be outdated, their descriptions being | 
 | 20 | incomplete or missing. Please update the information and send in the | 
 | 21 | patches. | 
 | 22 |  | 
 | 23 |  | 
 | 24 | 1) Overview of the Kernel's Option Processing | 
 | 25 | ============================================= | 
 | 26 |  | 
 | 27 | The kernel knows three kinds of options on its command line: | 
 | 28 |  | 
 | 29 |   1) kernel options | 
 | 30 |   2) environment settings | 
 | 31 |   3) arguments for init | 
 | 32 |  | 
 | 33 | To which of these classes an argument belongs is determined as | 
 | 34 | follows: If the option is known to the kernel itself, i.e. if the name | 
 | 35 | (the part before the '=') or, in some cases, the whole argument string | 
 | 36 | is known to the kernel, it belongs to class 1. Otherwise, if the | 
 | 37 | argument contains an '=', it is of class 2, and the definition is put | 
 | 38 | into init's environment. All other arguments are passed to init as | 
 | 39 | command line options. | 
 | 40 |  | 
 | 41 |   This document describes the valid kernel options for Linux/m68k in | 
 | 42 | the version mentioned at the start of this file. Later revisions may | 
 | 43 | add new such options, and some may be missing in older versions. | 
 | 44 |  | 
 | 45 |   In general, the value (the part after the '=') of an option is a | 
 | 46 | list of values separated by commas. The interpretation of these values | 
 | 47 | is up to the driver that "owns" the option. This association of | 
 | 48 | options with drivers is also the reason that some are further | 
 | 49 | subdivided. | 
 | 50 |  | 
 | 51 |  | 
 | 52 | 2) General Kernel Options | 
 | 53 | ========================= | 
 | 54 |  | 
 | 55 | 2.1) root= | 
 | 56 | ---------- | 
 | 57 |  | 
 | 58 | Syntax: root=/dev/<device> | 
 | 59 |     or: root=<hex_number> | 
 | 60 |  | 
 | 61 | This tells the kernel which device it should mount as the root | 
 | 62 | filesystem. The device must be a block device with a valid filesystem | 
 | 63 | on it. | 
 | 64 |  | 
 | 65 |   The first syntax gives the device by name. These names are converted | 
 | 66 | into a major/minor number internally in the kernel in an unusual way. | 
 | 67 | Normally, this "conversion" is done by the device files in /dev, but | 
 | 68 | this isn't possible here, because the root filesystem (with /dev) | 
 | 69 | isn't mounted yet... So the kernel parses the name itself, with some | 
 | 70 | hardcoded name to number mappings. The name must always be a | 
 | 71 | combination of two or three letters, followed by a decimal number. | 
 | 72 | Valid names are: | 
 | 73 |  | 
 | 74 |   /dev/ram: -> 0x0100 (initial ramdisk) | 
 | 75 |   /dev/hda: -> 0x0300 (first IDE disk) | 
 | 76 |   /dev/hdb: -> 0x0340 (second IDE disk) | 
 | 77 |   /dev/sda: -> 0x0800 (first SCSI disk) | 
 | 78 |   /dev/sdb: -> 0x0810 (second SCSI disk) | 
 | 79 |   /dev/sdc: -> 0x0820 (third SCSI disk) | 
 | 80 |   /dev/sdd: -> 0x0830 (forth SCSI disk) | 
 | 81 |   /dev/sde: -> 0x0840 (fifth SCSI disk) | 
 | 82 |   /dev/fd : -> 0x0200 (floppy disk) | 
 | 83 |   /dev/xda: -> 0x0c00 (first XT disk, unused in Linux/m68k) | 
 | 84 |   /dev/xdb: -> 0x0c40 (second XT disk, unused in Linux/m68k) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 85 |  | 
 | 86 |   The name must be followed by a decimal number, that stands for the | 
 | 87 | partition number. Internally, the value of the number is just | 
 | 88 | added to the device number mentioned in the table above. The | 
 | 89 | exceptions are /dev/ram and /dev/fd, where /dev/ram refers to an | 
 | 90 | initial ramdisk loaded by your bootstrap program (please consult the | 
 | 91 | instructions for your bootstrap program to find out how to load an | 
 | 92 | initial ramdisk). As of kernel version 2.0.18 you must specify | 
 | 93 | /dev/ram as the root device if you want to boot from an initial | 
 | 94 | ramdisk. For the floppy devices, /dev/fd, the number stands for the | 
 | 95 | floppy drive number (there are no partitions on floppy disks). I.e., | 
 | 96 | /dev/fd0 stands for the first drive, /dev/fd1 for the second, and so | 
 | 97 | on. Since the number is just added, you can also force the disk format | 
 | 98 | by adding a number greater than 3. If you look into your /dev | 
 | 99 | directory, use can see the /dev/fd0D720 has major 2 and minor 16. You | 
 | 100 | can specify this device for the root FS by writing "root=/dev/fd16" on | 
 | 101 | the kernel command line. | 
 | 102 |  | 
 | 103 | [Strange and maybe uninteresting stuff ON] | 
 | 104 |  | 
 | 105 |   This unusual translation of device names has some strange | 
 | 106 | consequences: If, for example, you have a symbolic link from /dev/fd | 
 | 107 | to /dev/fd0D720 as an abbreviation for floppy driver #0 in DD format, | 
 | 108 | you cannot use this name for specifying the root device, because the | 
 | 109 | kernel cannot see this symlink before mounting the root FS and it | 
 | 110 | isn't in the table above. If you use it, the root device will not be  | 
 | 111 | set at all, without an error message. Another example: You cannot use a | 
 | 112 | partition on e.g. the sixth SCSI disk as the root filesystem, if you | 
 | 113 | want to specify it by name. This is, because only the devices up to | 
 | 114 | /dev/sde are in the table above, but not /dev/sdf. Although, you can | 
 | 115 | use the sixth SCSI disk for the root FS, but you have to specify the | 
 | 116 | device by number... (see below). Or, even more strange, you can use the | 
 | 117 | fact that there is no range checking of the partition number, and your | 
 | 118 | knowledge that each disk uses 16 minors, and write "root=/dev/sde17" | 
 | 119 | (for /dev/sdf1). | 
 | 120 |  | 
 | 121 | [Strange and maybe uninteresting stuff OFF] | 
 | 122 |  | 
 | 123 |   If the device containing your root partition isn't in the table | 
 | 124 | above, you can also specify it by major and minor numbers. These are | 
 | 125 | written in hex, with no prefix and no separator between. E.g., if you | 
 | 126 | have a CD with contents appropriate as a root filesystem in the first | 
 | 127 | SCSI CD-ROM drive, you boot from it by "root=0b00". Here, hex "0b" = | 
 | 128 | decimal 11 is the major of SCSI CD-ROMs, and the minor 0 stands for | 
 | 129 | the first of these. You can find out all valid major numbers by | 
 | 130 | looking into include/linux/major.h. | 
 | 131 |  | 
 | 132 |  | 
 | 133 | 2.2) ro, rw | 
 | 134 | ----------- | 
 | 135 |  | 
 | 136 | Syntax: ro | 
 | 137 |     or: rw | 
 | 138 |  | 
 | 139 | These two options tell the kernel whether it should mount the root | 
 | 140 | filesystem read-only or read-write. The default is read-only, except | 
 | 141 | for ramdisks, which default to read-write. | 
 | 142 |  | 
 | 143 |  | 
 | 144 | 2.3) debug | 
 | 145 | ---------- | 
 | 146 |  | 
 | 147 | Syntax: debug | 
 | 148 |  | 
 | 149 | This raises the kernel log level to 10 (the default is 7). This is the | 
 | 150 | same level as set by the "dmesg" command, just that the maximum level | 
 | 151 | selectable by dmesg is 8. | 
 | 152 |  | 
 | 153 |  | 
 | 154 | 2.4) debug= | 
 | 155 | ----------- | 
 | 156 |  | 
 | 157 | Syntax: debug=<device> | 
 | 158 |  | 
 | 159 | This option causes certain kernel messages be printed to the selected | 
 | 160 | debugging device. This can aid debugging the kernel, since the | 
 | 161 | messages can be captured and analyzed on some other machine. Which | 
 | 162 | devices are possible depends on the machine type. There are no checks | 
 | 163 | for the validity of the device name. If the device isn't implemented, | 
 | 164 | nothing happens. | 
 | 165 |  | 
 | 166 |   Messages logged this way are in general stack dumps after kernel | 
 | 167 | memory faults or bad kernel traps, and kernel panics. To be exact: all | 
 | 168 | messages of level 0 (panic messages) and all messages printed while | 
 | 169 | the log level is 8 or more (their level doesn't matter). Before stack | 
 | 170 | dumps, the kernel sets the log level to 10 automatically. A level of | 
 | 171 | at least 8 can also be set by the "debug" command line option (see | 
 | 172 | 2.3) and at run time with "dmesg -n 8". | 
 | 173 |  | 
 | 174 | Devices possible for Amiga: | 
 | 175 |  | 
 | 176 |  - "ser": built-in serial port; parameters: 9600bps, 8N1 | 
 | 177 |  - "mem": Save the messages to a reserved area in chip mem. After | 
 | 178 |           rebooting, they can be read under AmigaOS with the tool | 
 | 179 |           'dmesg'. | 
 | 180 |  | 
 | 181 | Devices possible for Atari: | 
 | 182 |  | 
 | 183 |  - "ser1": ST-MFP serial port ("Modem1"); parameters: 9600bps, 8N1 | 
 | 184 |  - "ser2": SCC channel B serial port ("Modem2"); parameters: 9600bps, 8N1 | 
 | 185 |  - "ser" : default serial port | 
 | 186 |            This is "ser2" for a Falcon, and "ser1" for any other machine | 
 | 187 |  - "midi": The MIDI port; parameters: 31250bps, 8N1 | 
 | 188 |  - "par" : parallel port | 
 | 189 |            The printing routine for this implements a timeout for the | 
 | 190 |            case there's no printer connected (else the kernel would | 
 | 191 |            lock up). The timeout is not exact, but usually a few | 
 | 192 |            seconds. | 
 | 193 |  | 
 | 194 |  | 
| Robert P. J. Day | fac8b20 | 2007-10-16 23:29:30 -0700 | [diff] [blame] | 195 | 2.6) ramdisk_size= | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 196 | ------------- | 
 | 197 |  | 
| Robert P. J. Day | fac8b20 | 2007-10-16 23:29:30 -0700 | [diff] [blame] | 198 | Syntax: ramdisk_size=<size> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 199 |  | 
 | 200 |   This option instructs the kernel to set up a ramdisk of the given | 
 | 201 | size in KBytes. Do not use this option if the ramdisk contents are | 
 | 202 | passed by bootstrap! In this case, the size is selected automatically | 
 | 203 | and should not be overwritten. | 
 | 204 |  | 
 | 205 |   The only application is for root filesystems on floppy disks, that | 
 | 206 | should be loaded into memory. To do that, select the corresponding | 
 | 207 | size of the disk as ramdisk size, and set the root device to the disk | 
 | 208 | drive (with "root="). | 
 | 209 |  | 
 | 210 |  | 
 | 211 | 2.7) swap= | 
 | 212 | 2.8) buff= | 
 | 213 | ----------- | 
 | 214 |  | 
 | 215 |   I can't find any sign of these options in 2.2.6. | 
 | 216 |  | 
 | 217 |  | 
 | 218 | 3) General Device Options (Amiga and Atari) | 
 | 219 | =========================================== | 
 | 220 |  | 
 | 221 | 3.1) ether= | 
 | 222 | ----------- | 
 | 223 |  | 
 | 224 | Syntax: ether=[<irq>[,<base_addr>[,<mem_start>[,<mem_end>]]]],<dev-name> | 
 | 225 |  | 
 | 226 |   <dev-name> is the name of a net driver, as specified in | 
 | 227 | drivers/net/Space.c in the Linux source. Most prominent are eth0, ... | 
 | 228 | eth3, sl0, ... sl3, ppp0, ..., ppp3, dummy, and lo. | 
 | 229 |  | 
 | 230 |   The non-ethernet drivers (sl, ppp, dummy, lo) obviously ignore the | 
 | 231 | settings by this options. Also, the existing ethernet drivers for | 
 | 232 | Linux/m68k (ariadne, a2065, hydra) don't use them because Zorro boards | 
 | 233 | are really Plug-'n-Play, so the "ether=" option is useless altogether | 
 | 234 | for Linux/m68k. | 
 | 235 |  | 
 | 236 |  | 
 | 237 | 3.2) hd= | 
 | 238 | -------- | 
 | 239 |  | 
 | 240 | Syntax: hd=<cylinders>,<heads>,<sectors> | 
 | 241 |  | 
 | 242 |   This option sets the disk geometry of an IDE disk. The first hd= | 
 | 243 | option is for the first IDE disk, the second for the second one. | 
 | 244 | (I.e., you can give this option twice.) In most cases, you won't have | 
 | 245 | to use this option, since the kernel can obtain the geometry data | 
 | 246 | itself. It exists just for the case that this fails for one of your | 
 | 247 | disks. | 
 | 248 |  | 
 | 249 |  | 
 | 250 | 3.3) max_scsi_luns= | 
 | 251 | ------------------- | 
 | 252 |  | 
 | 253 | Syntax: max_scsi_luns=<n> | 
 | 254 |  | 
 | 255 |   Sets the maximum number of LUNs (logical units) of SCSI devices to | 
 | 256 | be scanned. Valid values for <n> are between 1 and 8. Default is 8 if | 
 | 257 | "Probe all LUNs on each SCSI device" was selected during the kernel | 
 | 258 | configuration, else 1. | 
 | 259 |  | 
 | 260 |  | 
 | 261 | 3.4) st= | 
 | 262 | -------- | 
 | 263 |  | 
 | 264 | Syntax: st=<buffer_size>,[<write_thres>,[<max_buffers>]] | 
 | 265 |  | 
 | 266 |   Sets several parameters of the SCSI tape driver. <buffer_size> is | 
 | 267 | the number of 512-byte buffers reserved for tape operations for each | 
 | 268 | device. <write_thres> sets the number of blocks which must be filled | 
 | 269 | to start an actual write operation to the tape. Maximum value is the | 
 | 270 | total number of buffers. <max_buffer> limits the total number of | 
 | 271 | buffers allocated for all tape devices. | 
 | 272 |  | 
 | 273 |  | 
 | 274 | 3.5) dmasound= | 
 | 275 | -------------- | 
 | 276 |  | 
 | 277 | Syntax: dmasound=[<buffers>,<buffer-size>[,<catch-radius>]] | 
 | 278 |  | 
 | 279 |   This option controls some configurations of the Linux/m68k DMA sound | 
 | 280 | driver (Amiga and Atari): <buffers> is the number of buffers you want | 
 | 281 | to use (minimum 4, default 4), <buffer-size> is the size of each | 
 | 282 | buffer in kilobytes (minimum 4, default 32) and <catch-radius> says | 
 | 283 | how much percent of error will be tolerated when setting a frequency | 
 | 284 | (maximum 10, default 0). For example with 3% you can play 8000Hz | 
 | 285 | AU-Files on the Falcon with its hardware frequency of 8195Hz and thus | 
 | 286 | don't need to expand the sound. | 
 | 287 |  | 
 | 288 |  | 
 | 289 |  | 
 | 290 | 4) Options for Atari Only | 
 | 291 | ========================= | 
 | 292 |  | 
 | 293 | 4.1) video= | 
 | 294 | ----------- | 
 | 295 |  | 
 | 296 | Syntax: video=<fbname>:<sub-options...> | 
 | 297 |  | 
 | 298 | The <fbname> parameter specifies the name of the frame buffer, | 
 | 299 | eg. most atari users will want to specify `atafb' here. The | 
 | 300 | <sub-options> is a comma-separated list of the sub-options listed | 
 | 301 | below. | 
 | 302 |  | 
 | 303 | NB: Please notice that this option was renamed from `atavideo' to | 
 | 304 |     `video' during the development of the 1.3.x kernels, thus you | 
 | 305 |     might need to update your boot-scripts if upgrading to 2.x from | 
 | 306 |     an 1.2.x kernel. | 
 | 307 |  | 
 | 308 | NBB: The behavior of video= was changed in 2.1.57 so the recommended | 
 | 309 | option is to specify the name of the frame buffer. | 
 | 310 |  | 
 | 311 | 4.1.1) Video Mode | 
 | 312 | ----------------- | 
 | 313 |  | 
 | 314 | This sub-option may be any of the predefined video modes, as listed | 
 | 315 | in atari/atafb.c in the Linux/m68k source tree. The kernel will | 
 | 316 | activate the given video mode at boot time and make it the default | 
 | 317 | mode, if the hardware allows. Currently defined names are: | 
 | 318 |  | 
 | 319 |  - stlow           : 320x200x4 | 
 | 320 |  - stmid, default5 : 640x200x2 | 
 | 321 |  - sthigh, default4: 640x400x1 | 
 | 322 |  - ttlow           : 320x480x8, TT only | 
 | 323 |  - ttmid, default1 : 640x480x4, TT only | 
 | 324 |  - tthigh, default2: 1280x960x1, TT only | 
 | 325 |  - vga2            : 640x480x1, Falcon only | 
 | 326 |  - vga4            : 640x480x2, Falcon only | 
 | 327 |  - vga16, default3 : 640x480x4, Falcon only | 
 | 328 |  - vga256          : 640x480x8, Falcon only | 
 | 329 |  - falh2           : 896x608x1, Falcon only | 
 | 330 |  - falh16          : 896x608x4, Falcon only | 
 | 331 |  | 
 | 332 |   If no video mode is given on the command line, the kernel tries the | 
 | 333 | modes names "default<n>" in turn, until one is possible with the | 
 | 334 | hardware in use. | 
 | 335 |  | 
 | 336 |   A video mode setting doesn't make sense, if the external driver is | 
 | 337 | activated by a "external:" sub-option. | 
 | 338 |  | 
 | 339 | 4.1.2) inverse | 
 | 340 | -------------- | 
 | 341 |  | 
 | 342 | Invert the display. This affects both, text (consoles) and graphics | 
 | 343 | (X) display. Usually, the background is chosen to be black. With this | 
 | 344 | option, you can make the background white. | 
 | 345 |  | 
 | 346 | 4.1.3) font | 
 | 347 | ----------- | 
 | 348 |  | 
 | 349 | Syntax: font:<fontname> | 
 | 350 |  | 
 | 351 | Specify the font to use in text modes. Currently you can choose only | 
 | 352 | between `VGA8x8', `VGA8x16' and `PEARL8x8'. `VGA8x8' is default, if the | 
 | 353 | vertical size of the display is less than 400 pixel rows. Otherwise, the | 
 | 354 | `VGA8x16' font is the default. | 
 | 355 |  | 
 | 356 | 4.1.4) hwscroll_ | 
 | 357 | ---------------- | 
 | 358 |  | 
 | 359 | Syntax: hwscroll_<n> | 
 | 360 |  | 
 | 361 | The number of additional lines of video memory to reserve for | 
 | 362 | speeding up the scrolling ("hardware scrolling"). Hardware scrolling | 
 | 363 | is possible only if the kernel can set the video base address in steps | 
 | 364 | fine enough. This is true for STE, MegaSTE, TT, and Falcon. It is not | 
 | 365 | possible with plain STs and graphics cards (The former because the | 
 | 366 | base address must be on a 256 byte boundary there, the latter because | 
 | 367 | the kernel doesn't know how to set the base address at all.) | 
 | 368 |  | 
 | 369 |   By default, <n> is set to the number of visible text lines on the | 
 | 370 | display. Thus, the amount of video memory is doubled, compared to no | 
 | 371 | hardware scrolling. You can turn off the hardware scrolling altogether | 
 | 372 | by setting <n> to 0. | 
 | 373 |  | 
 | 374 | 4.1.5) internal: | 
 | 375 | ---------------- | 
 | 376 |  | 
 | 377 | Syntax: internal:<xres>;<yres>[;<xres_max>;<yres_max>;<offset>] | 
 | 378 |  | 
 | 379 | This option specifies the capabilities of some extended internal video | 
 | 380 | hardware, like e.g. OverScan. <xres> and <yres> give the (extended) | 
 | 381 | dimensions of the screen. | 
 | 382 |  | 
 | 383 |   If your OverScan needs a black border, you have to write the last | 
 | 384 | three arguments of the "internal:". <xres_max> is the maximum line | 
 | 385 | length the hardware allows, <yres_max> the maximum number of lines. | 
 | 386 | <offset> is the offset of the visible part of the screen memory to its | 
 | 387 | physical start, in bytes. | 
 | 388 |  | 
 | 389 |   Often, extended interval video hardware has to be activated somehow. | 
 | 390 | For this, see the "sw_*" options below. | 
 | 391 |  | 
 | 392 | 4.1.6) external: | 
 | 393 | ---------------- | 
 | 394 |  | 
 | 395 | Syntax: | 
 | 396 |   external:<xres>;<yres>;<depth>;<org>;<scrmem>[;<scrlen>[;<vgabase>\ | 
 | 397 |            [;<colw>[;<coltype>[;<xres_virtual>]]]]] | 
 | 398 |  | 
 | 399 | [I had to break this line...] | 
 | 400 |  | 
 | 401 |   This is probably the most complicated parameter... It specifies that | 
 | 402 | you have some external video hardware (a graphics board), and how to | 
 | 403 | use it under Linux/m68k. The kernel cannot know more about the hardware | 
 | 404 | than you tell it here! The kernel also is unable to set or change any | 
 | 405 | video modes, since it doesn't know about any board internal. So, you | 
 | 406 | have to switch to that video mode before you start Linux, and cannot | 
 | 407 | switch to another mode once Linux has started. | 
 | 408 |  | 
 | 409 |   The first 3 parameters of this sub-option should be obvious: <xres>, | 
 | 410 | <yres> and <depth> give the dimensions of the screen and the number of | 
| Paolo Ornati | 670e9f3 | 2006-10-03 22:57:56 +0200 | [diff] [blame] | 411 | planes (depth). The depth is the logarithm to base 2 of the number | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 412 | of colors possible. (Or, the other way round: The number of colors is | 
 | 413 | 2^depth). | 
 | 414 |  | 
 | 415 |   You have to tell the kernel furthermore how the video memory is | 
 | 416 | organized. This is done by a letter as <org> parameter: | 
 | 417 |  | 
 | 418 |  'n': "normal planes", i.e. one whole plane after another | 
 | 419 |  'i': "interleaved planes", i.e. 16 bit of the first plane, than 16 bit | 
 | 420 |       of the next, and so on... This mode is used only with the | 
 | 421 | 	  built-in Atari video modes, I think there is no card that | 
 | 422 | 	  supports this mode. | 
 | 423 |  'p': "packed pixels", i.e. <depth> consecutive bits stand for all | 
 | 424 | 	  planes of one pixel; this is the most common mode for 8 planes | 
 | 425 | 	  (256 colors) on graphic cards | 
 | 426 |  't': "true color" (more or less packed pixels, but without a color | 
 | 427 | 	  lookup table); usually depth is 24 | 
 | 428 |  | 
 | 429 | For monochrome modes (i.e., <depth> is 1), the <org> letter has a | 
 | 430 | different meaning: | 
 | 431 |  | 
 | 432 |  'n': normal colors, i.e. 0=white, 1=black | 
 | 433 |  'i': inverted colors, i.e. 0=black, 1=white | 
 | 434 |  | 
 | 435 |   The next important information about the video hardware is the base | 
 | 436 | address of the video memory. That is given in the <scrmem> parameter, | 
 | 437 | as a hexadecimal number with a "0x" prefix. You have to find out this | 
 | 438 | address in the documentation of your hardware. | 
 | 439 |  | 
 | 440 |   The next parameter, <scrlen>, tells the kernel about the size of the | 
 | 441 | video memory. If it's missing, the size is calculated from <xres>, | 
 | 442 | <yres>, and <depth>. For now, it is not useful to write a value here. | 
 | 443 | It would be used only for hardware scrolling (which isn't possible | 
 | 444 | with the external driver, because the kernel cannot set the video base | 
 | 445 | address), or for virtual resolutions under X (which the X server | 
 | 446 | doesn't support yet). So, it's currently best to leave this field | 
 | 447 | empty, either by ending the "external:" after the video address or by | 
 | 448 | writing two consecutive semicolons, if you want to give a <vgabase> | 
 | 449 | (it is allowed to leave this parameter empty). | 
 | 450 |  | 
 | 451 |   The <vgabase> parameter is optional. If it is not given, the kernel | 
 | 452 | cannot read or write any color registers of the video hardware, and | 
 | 453 | thus you have to set appropriate colors before you start Linux. But if | 
 | 454 | your card is somehow VGA compatible, you can tell the kernel the base | 
 | 455 | address of the VGA register set, so it can change the color lookup | 
 | 456 | table. You have to look up this address in your board's documentation. | 
 | 457 | To avoid misunderstandings: <vgabase> is the _base_ address, i.e. a 4k | 
 | 458 | aligned address. For read/writing the color registers, the kernel | 
 | 459 | uses the addresses vgabase+0x3c7...vgabase+0x3c9. The <vgabase> | 
 | 460 | parameter is written in hexadecimal with a "0x" prefix, just as | 
 | 461 | <scrmem>. | 
 | 462 |  | 
 | 463 |   <colw> is meaningful only if <vgabase> is specified. It tells the | 
 | 464 | kernel how wide each of the color register is, i.e. the number of bits | 
 | 465 | per single color (red/green/blue). Default is 6, another quite usual | 
 | 466 | value is 8. | 
 | 467 |  | 
 | 468 |   Also <coltype> is used together with <vgabase>. It tells the kernel | 
 | 469 | about the color register model of your gfx board. Currently, the types | 
 | 470 | "vga" (which is also the default) and "mv300" (SANG MV300) are | 
 | 471 | implemented. | 
 | 472 |  | 
 | 473 |   Parameter <xres_virtual> is required for ProMST or ET4000 cards where | 
 | 474 | the physical linelength differs from the visible length. With ProMST,  | 
 | 475 | xres_virtual must be set to 2048. For ET4000, xres_virtual depends on the | 
 | 476 | initialisation of the video-card. | 
 | 477 | If you're missing a corresponding yres_virtual: the external part is legacy, | 
 | 478 | therefore we don't support hardware-dependent functions like hardware-scroll, | 
 | 479 | panning or blanking. | 
 | 480 |  | 
 | 481 | 4.1.7) eclock: | 
 | 482 | -------------- | 
 | 483 |  | 
 | 484 | The external pixel clock attached to the Falcon VIDEL shifter. This | 
 | 485 | currently works only with the ScreenWonder! | 
 | 486 |  | 
 | 487 | 4.1.8) monitorcap: | 
 | 488 | ------------------- | 
 | 489 |  | 
 | 490 | Syntax: monitorcap:<vmin>;<vmax>;<hmin>;<hmax> | 
 | 491 |  | 
 | 492 | This describes the capabilities of a multisync monitor. Don't use it | 
 | 493 | with a fixed-frequency monitor! For now, only the Falcon frame buffer | 
 | 494 | uses the settings of "monitorcap:". | 
 | 495 |  | 
 | 496 |   <vmin> and <vmax> are the minimum and maximum, resp., vertical frequencies | 
 | 497 | your monitor can work with, in Hz. <hmin> and <hmax> are the same for | 
 | 498 | the horizontal frequency, in kHz. | 
 | 499 |  | 
 | 500 |   The defaults are 58;62;31;32 (VGA compatible). | 
 | 501 |  | 
 | 502 |   The defaults for TV/SC1224/SC1435 cover both PAL and NTSC standards. | 
 | 503 |  | 
 | 504 | 4.1.9) keep | 
 | 505 | ------------ | 
 | 506 |  | 
 | 507 | If this option is given, the framebuffer device doesn't do any video | 
 | 508 | mode calculations and settings on its own. The only Atari fb device | 
 | 509 | that does this currently is the Falcon. | 
 | 510 |  | 
 | 511 |   What you reach with this: Settings for unknown video extensions | 
 | 512 | aren't overridden by the driver, so you can still use the mode found | 
 | 513 | when booting, when the driver doesn't know to set this mode itself. | 
 | 514 | But this also means, that you can't switch video modes anymore... | 
 | 515 |  | 
 | 516 |   An example where you may want to use "keep" is the ScreenBlaster for | 
 | 517 | the Falcon. | 
 | 518 |  | 
 | 519 |  | 
 | 520 | 4.2) atamouse= | 
 | 521 | -------------- | 
 | 522 |  | 
 | 523 | Syntax: atamouse=<x-threshold>,[<y-threshold>] | 
 | 524 |  | 
 | 525 |   With this option, you can set the mouse movement reporting threshold. | 
 | 526 | This is the number of pixels of mouse movement that have to accumulate | 
 | 527 | before the IKBD sends a new mouse packet to the kernel. Higher values | 
 | 528 | reduce the mouse interrupt load and thus reduce the chance of keyboard | 
 | 529 | overruns. Lower values give a slightly faster mouse responses and | 
 | 530 | slightly better mouse tracking. | 
 | 531 |  | 
 | 532 |   You can set the threshold in x and y separately, but usually this is | 
 | 533 | of little practical use. If there's just one number in the option, it | 
 | 534 | is used for both dimensions. The default value is 2 for both | 
 | 535 | thresholds. | 
 | 536 |  | 
 | 537 |  | 
 | 538 | 4.3) ataflop= | 
 | 539 | ------------- | 
 | 540 |  | 
 | 541 | Syntax: ataflop=<drive type>[,<trackbuffering>[,<steprateA>[,<steprateB>]]] | 
 | 542 |  | 
 | 543 |    The drive type may be 0, 1, or 2, for DD, HD, and ED, resp. This | 
 | 544 |    setting affects how many buffers are reserved and which formats are | 
 | 545 |    probed (see also below). The default is 1 (HD). Only one drive type | 
 | 546 |    can be selected. If you have two disk drives, select the "better" | 
 | 547 |    type. | 
 | 548 |  | 
 | 549 |    The second parameter <trackbuffer> tells the kernel whether to use | 
 | 550 |    track buffering (1) or not (0). The default is machine-dependent: | 
 | 551 |    no for the Medusa and yes for all others. | 
 | 552 |  | 
 | 553 |    With the two following parameters, you can change the default | 
 | 554 |    steprate used for drive A and B, resp.  | 
 | 555 |  | 
 | 556 |  | 
 | 557 | 4.4) atascsi= | 
 | 558 | ------------- | 
 | 559 |  | 
 | 560 | Syntax: atascsi=<can_queue>[,<cmd_per_lun>[,<scat-gat>[,<host-id>[,<tagged>]]]] | 
 | 561 |  | 
 | 562 |   This option sets some parameters for the Atari native SCSI driver. | 
 | 563 | Generally, any number of arguments can be omitted from the end. And | 
 | 564 | for each of the numbers, a negative value means "use default". The | 
 | 565 | defaults depend on whether TT-style or Falcon-style SCSI is used. | 
 | 566 | Below, defaults are noted as n/m, where the first value refers to | 
 | 567 | TT-SCSI and the latter to Falcon-SCSI. If an illegal value is given | 
 | 568 | for one parameter, an error message is printed and that one setting is | 
 | 569 | ignored (others aren't affected). | 
 | 570 |  | 
 | 571 |   <can_queue>: | 
 | 572 |     This is the maximum number of SCSI commands queued internally to the | 
 | 573 |     Atari SCSI driver. A value of 1 effectively turns off the driver | 
 | 574 |     internal multitasking (if it causes problems). Legal values are >= | 
 | 575 |     1. <can_queue> can be as high as you like, but values greater than | 
 | 576 |     <cmd_per_lun> times the number of SCSI targets (LUNs) you have | 
 | 577 |     don't make sense. Default: 16/8. | 
 | 578 |  | 
 | 579 |   <cmd_per_lun>: | 
 | 580 |     Maximum number of SCSI commands issued to the driver for one | 
 | 581 |     logical unit (LUN, usually one SCSI target). Legal values start | 
 | 582 |     from 1. If tagged queuing (see below) is not used, values greater | 
 | 583 |     than 2 don't make sense, but waste memory. Otherwise, the maximum | 
 | 584 |     is the number of command tags available to the driver (currently | 
 | 585 |     32). Default: 8/1. (Note: Values > 1 seem to cause problems on a | 
 | 586 |     Falcon, cause not yet known.) | 
 | 587 |  | 
 | 588 |       The <cmd_per_lun> value at a great part determines the amount of | 
 | 589 |     memory SCSI reserves for itself. The formula is rather | 
 | 590 |     complicated, but I can give you some hints: | 
 | 591 |       no scatter-gather  : cmd_per_lun * 232 bytes | 
 | 592 |       full scatter-gather: cmd_per_lun * approx. 17 Kbytes | 
 | 593 |  | 
 | 594 |   <scat-gat>: | 
 | 595 |     Size of the scatter-gather table, i.e. the number of requests | 
 | 596 |     consecutive on the disk that can be merged into one SCSI command. | 
 | 597 |     Legal values are between 0 and 255. Default: 255/0. Note: This | 
 | 598 |     value is forced to 0 on a Falcon, since scatter-gather isn't | 
 | 599 |     possible with the ST-DMA. Not using scatter-gather hurts | 
 | 600 |     performance significantly. | 
 | 601 |  | 
 | 602 |   <host-id>: | 
 | 603 |     The SCSI ID to be used by the initiator (your Atari). This is | 
 | 604 |     usually 7, the highest possible ID. Every ID on the SCSI bus must | 
 | 605 |     be unique. Default: determined at run time: If the NV-RAM checksum | 
 | 606 |     is valid, and bit 7 in byte 30 of the NV-RAM is set, the lower 3 | 
 | 607 |     bits of this byte are used as the host ID. (This method is defined | 
 | 608 |     by Atari and also used by some TOS HD drivers.) If the above | 
 | 609 |     isn't given, the default ID is 7. (both, TT and Falcon). | 
 | 610 |  | 
 | 611 |   <tagged>: | 
 | 612 |     0 means turn off tagged queuing support, all other values > 0 mean | 
 | 613 |     use tagged queuing for targets that support it. Default: currently | 
 | 614 |     off, but this may change when tagged queuing handling has been | 
 | 615 |     proved to be reliable. | 
 | 616 |  | 
 | 617 |     Tagged queuing means that more than one command can be issued to | 
 | 618 |     one LUN, and the SCSI device itself orders the requests so they | 
 | 619 |     can be performed in optimal order. Not all SCSI devices support | 
 | 620 |     tagged queuing (:-(). | 
 | 621 |  | 
| Hugh Dickins | f9c98d0 | 2005-10-29 18:16:10 -0700 | [diff] [blame] | 622 | 4.5 switches= | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 623 | ------------- | 
 | 624 |  | 
 | 625 | Syntax: switches=<list of switches> | 
 | 626 |  | 
 | 627 |   With this option you can switch some hardware lines that are often | 
 | 628 | used to enable/disable certain hardware extensions. Examples are | 
 | 629 | OverScan, overclocking, ... | 
 | 630 |  | 
 | 631 |   The <list of switches> is a comma-separated list of the following | 
 | 632 | items: | 
 | 633 |  | 
 | 634 |   ikbd: set RTS of the keyboard ACIA high | 
 | 635 |   midi: set RTS of the MIDI ACIA high | 
 | 636 |   snd6: set bit 6 of the PSG port A | 
 | 637 |   snd7: set bit 6 of the PSG port A | 
 | 638 |  | 
 | 639 | It doesn't make sense to mention a switch more than once (no | 
 | 640 | difference to only once), but you can give as many switches as you | 
 | 641 | want to enable different features. The switch lines are set as early | 
 | 642 | as possible during kernel initialization (even before determining the | 
 | 643 | present hardware.) | 
 | 644 |  | 
 | 645 |   All of the items can also be prefixed with "ov_", i.e. "ov_ikbd", | 
 | 646 | "ov_midi", ... These options are meant for switching on an OverScan | 
 | 647 | video extension. The difference to the bare option is that the | 
 | 648 | switch-on is done after video initialization, and somehow synchronized | 
 | 649 | to the HBLANK. A speciality is that ov_ikbd and ov_midi are switched | 
 | 650 | off before rebooting, so that OverScan is disabled and TOS boots | 
 | 651 | correctly. | 
 | 652 |  | 
 | 653 |   If you give an option both, with and without the "ov_" prefix, the | 
 | 654 | earlier initialization ("ov_"-less) takes precedence. But the | 
 | 655 | switching-off on reset still happens in this case. | 
 | 656 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 657 | 5) Options for Amiga Only: | 
 | 658 | ========================== | 
 | 659 |  | 
 | 660 | 5.1) video= | 
 | 661 | ----------- | 
 | 662 |  | 
 | 663 | Syntax: video=<fbname>:<sub-options...> | 
 | 664 |  | 
 | 665 | The <fbname> parameter specifies the name of the frame buffer, valid | 
 | 666 | options are `amifb', `cyber', 'virge', `retz3' and `clgen', provided | 
 | 667 | that the respective frame buffer devices have been compiled into the | 
 | 668 | kernel (or compiled as loadable modules). The behavior of the <fbname> | 
 | 669 | option was changed in 2.1.57 so it is now recommended to specify this | 
 | 670 | option. | 
 | 671 |  | 
 | 672 | The <sub-options> is a comma-separated list of the sub-options listed | 
 | 673 | below. This option is organized similar to the Atari version of the | 
 | 674 | "video"-option (4.1), but knows fewer sub-options. | 
 | 675 |  | 
 | 676 | 5.1.1) video mode | 
 | 677 | ----------------- | 
 | 678 |  | 
 | 679 | Again, similar to the video mode for the Atari (see 4.1.1). Predefined | 
 | 680 | modes depend on the used frame buffer device. | 
 | 681 |  | 
 | 682 | OCS, ECS and AGA machines all use the color frame buffer. The following | 
 | 683 | predefined video modes are available: | 
 | 684 |  | 
 | 685 | NTSC modes: | 
 | 686 |  - ntsc            : 640x200, 15 kHz, 60 Hz | 
 | 687 |  - ntsc-lace       : 640x400, 15 kHz, 60 Hz interlaced | 
 | 688 | PAL modes: | 
 | 689 |  - pal             : 640x256, 15 kHz, 50 Hz | 
 | 690 |  - pal-lace        : 640x512, 15 kHz, 50 Hz interlaced | 
 | 691 | ECS modes: | 
 | 692 |  - multiscan       : 640x480, 29 kHz, 57 Hz | 
 | 693 |  - multiscan-lace  : 640x960, 29 kHz, 57 Hz interlaced | 
 | 694 |  - euro36          : 640x200, 15 kHz, 72 Hz | 
 | 695 |  - euro36-lace     : 640x400, 15 kHz, 72 Hz interlaced | 
 | 696 |  - euro72          : 640x400, 29 kHz, 68 Hz | 
 | 697 |  - euro72-lace     : 640x800, 29 kHz, 68 Hz interlaced | 
 | 698 |  - super72         : 800x300, 23 kHz, 70 Hz | 
 | 699 |  - super72-lace    : 800x600, 23 kHz, 70 Hz interlaced | 
 | 700 |  - dblntsc-ff      : 640x400, 27 kHz, 57 Hz | 
 | 701 |  - dblntsc-lace    : 640x800, 27 kHz, 57 Hz interlaced | 
 | 702 |  - dblpal-ff       : 640x512, 27 kHz, 47 Hz | 
 | 703 |  - dblpal-lace     : 640x1024, 27 kHz, 47 Hz interlaced | 
 | 704 |  - dblntsc         : 640x200, 27 kHz, 57 Hz doublescan | 
 | 705 |  - dblpal          : 640x256, 27 kHz, 47 Hz doublescan | 
 | 706 | VGA modes: | 
 | 707 |  - vga             : 640x480, 31 kHz, 60 Hz | 
 | 708 |  - vga70           : 640x400, 31 kHz, 70 Hz | 
 | 709 |  | 
 | 710 | Please notice that the ECS and VGA modes require either an ECS or AGA | 
 | 711 | chipset, and that these modes are limited to 2-bit color for the ECS | 
 | 712 | chipset and 8-bit color for the AGA chipset. | 
 | 713 |  | 
 | 714 | 5.1.2) depth | 
 | 715 | ------------ | 
 | 716 |  | 
 | 717 | Syntax: depth:<nr. of bit-planes> | 
 | 718 |  | 
 | 719 | Specify the number of bit-planes for the selected video-mode. | 
 | 720 |  | 
 | 721 | 5.1.3) inverse | 
 | 722 | -------------- | 
 | 723 |  | 
 | 724 | Use inverted display (black on white). Functionally the same as the | 
 | 725 | "inverse" sub-option for the Atari. | 
 | 726 |  | 
 | 727 | 5.1.4) font | 
 | 728 | ----------- | 
 | 729 |  | 
 | 730 | Syntax: font:<fontname> | 
 | 731 |  | 
 | 732 | Specify the font to use in text modes. Functionally the same as the | 
 | 733 | "font" sub-option for the Atari, except that `PEARL8x8' is used instead | 
 | 734 | of `VGA8x8' if the vertical size of the display is less than 400 pixel | 
 | 735 | rows. | 
 | 736 |  | 
 | 737 | 5.1.5) monitorcap: | 
 | 738 | ------------------- | 
 | 739 |  | 
 | 740 | Syntax: monitorcap:<vmin>;<vmax>;<hmin>;<hmax> | 
 | 741 |  | 
 | 742 | This describes the capabilities of a multisync monitor. For now, only | 
 | 743 | the color frame buffer uses the settings of "monitorcap:". | 
 | 744 |  | 
 | 745 |   <vmin> and <vmax> are the minimum and maximum, resp., vertical frequencies | 
 | 746 | your monitor can work with, in Hz. <hmin> and <hmax> are the same for | 
 | 747 | the horizontal frequency, in kHz. | 
 | 748 |  | 
 | 749 |   The defaults are 50;90;15;38 (Generic Amiga multisync monitor). | 
 | 750 |  | 
 | 751 |  | 
 | 752 | 5.2) fd_def_df0= | 
 | 753 | ---------------- | 
 | 754 |  | 
 | 755 | Syntax: fd_def_df0=<value> | 
 | 756 |  | 
 | 757 | Sets the df0 value for "silent" floppy drives. The value should be in | 
 | 758 | hexadecimal with "0x" prefix. | 
 | 759 |  | 
 | 760 |  | 
 | 761 | 5.3) wd33c93= | 
 | 762 | ------------- | 
 | 763 |  | 
 | 764 | Syntax: wd33c93=<sub-options...> | 
 | 765 |  | 
 | 766 | These options affect the A590/A2091, A3000 and GVP Series II SCSI | 
 | 767 | controllers. | 
 | 768 |  | 
 | 769 | The <sub-options> is a comma-separated list of the sub-options listed | 
 | 770 | below. | 
 | 771 |  | 
 | 772 | 5.3.1) nosync | 
 | 773 | ------------- | 
 | 774 |  | 
 | 775 | Syntax: nosync:bitmask | 
 | 776 |  | 
 | 777 |   bitmask is a byte where the 1st 7 bits correspond with the 7 | 
 | 778 | possible SCSI devices. Set a bit to prevent sync negotiation on that | 
 | 779 | device. To maintain backwards compatibility, a command-line such as | 
 | 780 | "wd33c93=255" will be automatically translated to | 
 | 781 | "wd33c93=nosync:0xff". The default is to disable sync negotiation for | 
 | 782 | all devices, eg. nosync:0xff. | 
 | 783 |  | 
 | 784 | 5.3.2) period | 
 | 785 | ------------- | 
 | 786 |  | 
 | 787 | Syntax: period:ns | 
 | 788 |  | 
 | 789 |   `ns' is the minimum # of nanoseconds in a SCSI data transfer | 
 | 790 | period. Default is 500; acceptable values are 250 - 1000. | 
 | 791 |  | 
 | 792 | 5.3.3) disconnect | 
 | 793 | ----------------- | 
 | 794 |  | 
 | 795 | Syntax: disconnect:x | 
 | 796 |  | 
 | 797 |   Specify x = 0 to never allow disconnects, 2 to always allow them. | 
 | 798 | x = 1 does 'adaptive' disconnects, which is the default and generally | 
 | 799 | the best choice. | 
 | 800 |  | 
 | 801 | 5.3.4) debug | 
 | 802 | ------------ | 
 | 803 |  | 
 | 804 | Syntax: debug:x | 
 | 805 |  | 
 | 806 |   If `DEBUGGING_ON' is defined, x is a bit mask that causes various | 
 | 807 | types of debug output to printed - see the DB_xxx defines in | 
 | 808 | wd33c93.h. | 
 | 809 |  | 
 | 810 | 5.3.5) clock | 
 | 811 | ------------ | 
 | 812 |  | 
 | 813 | Syntax: clock:x | 
 | 814 |  | 
 | 815 |   x = clock input in MHz for WD33c93 chip. Normal values would be from | 
 | 816 | 8 through 20. The default value depends on your hostadapter(s), | 
 | 817 | default for the A3000 internal controller is 14, for the A2091 it's 8 | 
 | 818 | and for the GVP hostadapters it's either 8 or 14, depending on the | 
 | 819 | hostadapter and the SCSI-clock jumper present on some GVP | 
 | 820 | hostadapters. | 
 | 821 |  | 
 | 822 | 5.3.6) next | 
 | 823 | ----------- | 
 | 824 |  | 
 | 825 |   No argument. Used to separate blocks of keywords when there's more | 
 | 826 | than one wd33c93-based host adapter in the system. | 
 | 827 |  | 
 | 828 | 5.3.7) nodma | 
 | 829 | ------------ | 
 | 830 |  | 
 | 831 | Syntax: nodma:x | 
 | 832 |  | 
 | 833 |   If x is 1 (or if the option is just written as "nodma"), the WD33c93 | 
 | 834 | controller will not use DMA (= direct memory access) to access the | 
 | 835 | Amiga's memory.  This is useful for some systems (like A3000's and | 
 | 836 | A4000's with the A3640 accelerator, revision 3.0) that have problems | 
 | 837 | using DMA to chip memory.  The default is 0, i.e. to use DMA if | 
 | 838 | possible. | 
 | 839 |  | 
 | 840 |  | 
 | 841 | 5.4) gvp11= | 
 | 842 | ----------- | 
 | 843 |  | 
 | 844 | Syntax: gvp11=<addr-mask> | 
 | 845 |  | 
 | 846 |   The earlier versions of the GVP driver did not handle DMA | 
 | 847 | address-mask settings correctly which made it necessary for some | 
 | 848 | people to use this option, in order to get their GVP controller | 
 | 849 | running under Linux. These problems have hopefully been solved and the | 
 | 850 | use of this option is now highly unrecommended! | 
 | 851 |  | 
 | 852 |   Incorrect use can lead to unpredictable behavior, so please only use | 
 | 853 | this option if you *know* what you are doing and have a reason to do | 
 | 854 | so. In any case if you experience problems and need to use this | 
 | 855 | option, please inform us about it by mailing to the Linux/68k kernel | 
 | 856 | mailing list. | 
 | 857 |  | 
 | 858 |   The address mask set by this option specifies which addresses are | 
 | 859 | valid for DMA with the GVP Series II SCSI controller. An address is | 
 | 860 | valid, if no bits are set except the bits that are set in the mask, | 
 | 861 | too. | 
 | 862 |  | 
 | 863 |   Some versions of the GVP can only DMA into a 24 bit address range, | 
 | 864 | some can address a 25 bit address range while others can use the whole | 
 | 865 | 32 bit address range for DMA. The correct setting depends on your | 
 | 866 | controller and should be autodetected by the driver. An example is the | 
 | 867 | 24 bit region which is specified by a mask of 0x00fffffe. | 
 | 868 |  | 
 | 869 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 870 | /* Local Variables: */ | 
 | 871 | /* mode: text       */ | 
 | 872 | /* End:             */ |