

				  Command Line Options for Linux/68k
				  ==================================

Date: Oct 17, 1995
Linux/68k version: 0.9.13
Author: Roman.Hodek@informatik.uni-erlangen.de (Roman Hodek)


0) Introduction
===============

  Often I've been asked which command line options the Linux/68k
kernel understands, or how the exact syntax for the ... option is, or
... about the option ... . I hope, this document supplies all the
answers...

  Note that I'm not to deep in the internal of an Amiga, so the
descriptions of Amiga specific options may be not exhaustive or even
wrong. Please add more infos or correct me, if it's necessary.


1) Overview of the Kernel's Option Processing
=============================================

The kernel knows three kinds of options on its command line:

  1) kernel options
  2) environment settings
  3) arguments for init

To which of these classes an argument belongs is determined as
follows: If the option is known to the kernel itself, i.e. if the name
(the part before the '=') or, in some cases, the whole argument string
is known to the kernel, it belongs to class 1. Otherwise, if the
argument contains an '=', it is of class 2, and the definition is put
into init's environment. All other arguments are passed to init as
command line options.

  This document describes the valid kernel options for Linux/68k
0.9.12. Later revisions may add new such options, and some may be
missing in older versions.

  In general, the value (the part after the '=') of an option is a
list of values separated by commas. The interpretation of these values
is up to the driver that "owns" the option. This association of
options with drivers is also the reason that some are further
subdivided.


2) General Kernel Options
=========================

2.1) root=
----------

Syntax: root=/dev/<device>
    or: root=<hex_number>

This tells the kernel which device it should mount as the root
filesystem. The device must be a block device with a valid filesystem
on it.

  The first syntax gives the device by name. These names are converted
into a major/minor number internally in the kernel in an unusual way.
Normally, this "conversion" is done by the device files in /dev, but
this isn't possible here, because the root filesystem (with /dev)
isn't mounted yet... So the kernel parses the name itself, with some
hardcoded name to number mappings. The name must always be a
combination of two or three letters, followed by a decimal number.
Valid names are:

  /dev/hda: -> 0x0300 (first IDE disk)
  /dev/hdb: -> 0x0340 (second IDE disk)
  /dev/sda: -> 0x0800 (first SCSI disk)
  /dev/sdb: -> 0x0810 (second SCSI disk)
  /dev/sdc: -> 0x0820 (third SCSI disk)
  /dev/sdd: -> 0x0830 (forth SCSI disk)
  /dev/sde: -> 0x0840 (fifth SCSI disk)
  /dev/fd : -> 0x0200 (floppy disk)
  /dev/xda: -> 0x0c00 (first XT disk, unused in Linux/68k)
  /dev/xdb: -> 0x0c40 (second XT disk, unused in Linux/68k)
  /dev/ada: -> 0x1c00 (first ACSI device)
  /dev/adb: -> 0x1c10 (second ACSI device)
  /dev/adc: -> 0x1c20 (third ACSI device)
  /dev/add: -> 0x1c30 (forth ACSI device)

The last for names are available only if the kernel has been compiled
with Atari and ACSI support.

  The name must be followed by a decimal number, that stands for the
partition number of times. Internally, the value of the number is just
added to the device number mentioned in the table above. The exception
is /dev/fd, where the number stands for the floppy drive number (there
are no partitions on floppy disks). I.e., /dev/fd0 stands for the
first drive, /dev/fd1 for the second, and so on. Since the number is
just added, you can also force the disk format by adding a number
greater than 3. If you look into your /dev directory, use can see the
/dev/fd0D720 has major 2 and minor 16. You can specify this device for
the root FS by writing "root=/dev/fd16" on the kernel command line.

[Strange and maybe uninteresting stuff ON]

  This unusual translation of device names has some strange
consequences: If, for example, you have a symbolic link from /dev/fd
to /dev/fd0D720 as an abbreviation for floppy driver #0 in DD format,
you cannot use this name for specifying the root device, because the
kernel cannot see this symlink before mounting the root FS and it
isn't in the table above. If you would use it, the root device weren't
set at all, without error message. Another example: You cannot use a
partition on e.g. the sixth SCSI disk as the root filesystem, if you
want to specify it by name. This is, because only the devices up to
/dev/sde are in the table above, but not /dev/sdf. Although, you can
use the sixth SCSI disk for the root FS, but you have to specify the
device by number... (see below). Or, even more strange, use can use the
fact that there is no range checking of the partition number, and your
knowledge that each disk uses 16 minors, and write "root=/dev/sde17"
(for /dev/sdf1).

[Strange and maybe uninteresting stuff OFF]

  If the device containing your root partition isn't in the table
above, you can also specify it by major and minor numbers. These are
written in hex, with no prefix and no separator between. E.g., if you
have a CD with contents appropriate as a root filesystem in the first
SCSI CD-ROM drive, you boot from it by "root=0b00". Here, hex "0b" =
decimal 11 is the major of SCSI CD-ROMs, and the minor 0 stands for
the first of these. You can find out all valid major numbers by
looking into include/linux/major.h.


2.2) ro, rw
-----------

Syntax: ro
    or: rw

These two options tell the kernel whether it should mount the root
filesystem read-only or read-write. The default is read-write.


2.3) debug
----------

Syntax: debug

This raises the kernel log level to 10 (the default is 7). This is the
same level as set by the "dmsg" command.


2.4) no387
----------

This option has no effect on Linux/68k, but is still valid. (I.e., it
is not passed to init if present.)



3) General Device Options (Amiga and Atari)
===========================================

3.1) ether=
-----------

Syntax: ether=[<irq>[,<base_addr>[,<mem_start>[,<mem_end>]]]],<dev-name>

  <dev-name> is the name of a net driver, as specified in
drivers/net/Space.c in the Linux source. Most prominent are eth0, ...
eth3, sl0, ... sl3, ppp0, ..., ppp3, dummy, and lo.

  The non-ethernet drivers (sl, ppp, dummy, lo) obviously ignore the
settings by this options. Also, the existing ethernet drivers for
Linux/68k (ariadne, a2065, hydra) don't use them, so the "ether="
option is useless altogether for Linux/68k.


3.2) hd=
--------

Syntax: hd=<cylinders>,<heads>,<sectors>

  This option sets the disk geometry of an IDE disk. The first hd=
option is first the first IDE disk, the second for the second one.
(I.e., you can give this option twice.) In most cases, you won't have
to use this option, since the kernel can obtain the geometry data
itself. It exists just for the case that this fails for one of your
disks.


4) Options for Atari Only
=========================

4.1) atavideo=
--------------

Syntax: atavideo=<sub-options...>

The <sub-options> is a comma-separated list of the sub-options listed
below.

4.1.1) Video Mode
-----------------

This sub-option may be any of the predefined video modes, as listed
in atari/atafb.c in the Linux/68k source tree. The kernel will
activate the given video mode at boot time and make it the default
mode, if the hardware allows. Currently defined names are:

 - stlow           : 320x200x4
 - stmid, default5 : 640x200x2
 - sthigh, default4: 640x400x1
 - ttlow           : 320x480x8, TT only
 - ttmid, default1 : 640x480x4, TT only
 - tthigh, default2: 1280x960x1, TT only
 - vga2            : 640x480x1, Falcon only
 - vga4            : 640x480x2, Falcon only
 - vga16, default3 : 640x480x4, Falcon only
 - vga256          : 640x480x8, Falcon only
 - falh2           : 896x608x1, Falcon only
 - falh16          : 896x608x4, Falcon only

  If no video mode is given on the command line, the kernel tries the
modes names "default<n>" in turn, until one is possible with the
hardware in use.

  A video mode setting doesn't make sense, if the external driver is
activated by a "external:" sub-option.

4.1.2) inverse
--------------

Invert the display. This affects both, text (consoles) and graphics
(X) display. Usually, the background is chosen to be black. With this
option, you can make the background white.

4.1.3) f8x8, f8x16
------------------

Specify the font to use in text modes: a 8x8 font or a 8x16 font. 8x8
is default, if the vertical size of the display is less than 400 pixel
rows. Otherwise, the 8x16 font is the default.

4.1.4) hwscroll_
----------------

Syntax: hwscroll_<n>

The the number of additional lines of video memory to reserve for
speeding up the scrolling ("hardware scrolling"). Hardware scrolling
is possible only if the kernel can set the video base address in steps
fine enough. This is true for STE, MegaSTE, TT, and Falcon. It is not
possible with plain STs and graphics cards (The former because the
base address must be on a 256 byte boundary there, the latter because
the kernel doesn't know how to set the base address at all.)

  By default, <n> is set to the number of visible text lines on the
display. Thus, the amount of video memory is doubled, compared to no
hardware scrolling. You can turn off the hardware scrolling altogether
by setting <n> to 0.

4.1.5) internal:
----------------

Syntax: internal:<xres>;<yres>[;<xres_max>;<yres_max>;<offset>]

This option specifies the capabilities of some extended internal video
hardware, like e.g. OverScan. <xres> and <yres> give the (extended)
dimensions of the screen.

  If your OverScan needs a black border, you have to write the last
three arguments of the "internal:". <xres_max> is the maximum line
length the hardware allows, <yres_max> the maximum number of lines.
<offset> is the offset of the visible part of the screen memory to its
physical start, in bytes.

  Often, extended interval video hardware has to be activated somehow.
For this, see the "sw_*" options below.

4.1.6) sw_acia, sw_snd6, sw_snd7
--------------------------------

This specifies the method for turning on extended internal video
hardware, like OverScan. Several methods are in use:

  sw_acia: Set RTS of the keyboard ACIA high
  sw_snd6: Set bit 6 of the PSG port A
  sw_snd7: Set bit 7 of the PSG port A

These sub-options are generally only useful together with "internal:".

4.1.7) external:
----------------

Syntax:
  external:<xres>;<yres>;<depth>;<org>;<scrmem>[;<scrlen>[;<vgabase>\
           [;<colw>[;<coltype>]]]]

[I had to break this line...]

  This is probably the most complicated parameter... It specifies that
you have some external video hardware (a graphics board), and how to
use it under Linux/68k. The kernel cannot know more about the hardware
than you tell it here! The kernel also is unable to set or change any
video modes, since it doesn't know about any board internal. So, you
have to switch to that video mode before you start Linux, and cannot
switch to another mode once Linux has started.

  The first 3 parameters of this sub-option should be obvious: <xres>,
<yres> and <depth> give the dimensions of the screen and the number of
planes (depth). The depth is is the logarithm to base 2 of the number
of colors possible. (Or, the other way round: The number of colors is
2^depth).

  You have to tell the kernel furthermore how the video memory is
organized. This is done by a letter as <org> parameter:

 'n': "normal planes", i.e. one whole plane after another
 'i': "interleaved planes", i.e. 16 bit of the first plane, than 16 bit
      of the next, and so on... This mode is used only with the
	  built-in Atari video modes, I think there is no card that
	  supports this mode.
 'p': "packed pixels", i.e. <depth> consecutive bits stand for all
	  planes of one pixel; this is the most common mode for 8 planes
	  (256 colors) on graphic cards
 't': "true color" (more or less packed pixels, but without a color
	  lookup table); usually depth is 24

For monochrome modes (i.e., <depth> is 1), the <org> letter has a
different meaning:

 'n': normal colors, i.e. 0=white, 1=black
 'i': inverted colors, i.e. 0=black, 1=white

  The next important information about the video hardware is the base
address of the video memory. That is given in the <scrmem> parameter,
as a hexadecimal number with a "0x" prefix. You have to find out this
address in the documentation of your hardware.

  The next parameter, <scrlen>, tells the kernel about the size of the
video memory. If it's missing, the size is calculated from <xres>,
<yres>, and <depth>. For now, it is not useful to write a value here.
It would be used only for hardware scrolling (which isn't possible
with the external driver, because the kernel cannot set the video base
address), or for virtual resolutions under X (which the X server
doesn't support yet). So, it's currently best to leave this field
empty, either by ending the "external:" after the video address or by
writing two consecutive semicolons, if you want to give a <vgabase>
(it is allowed to leave this parameter empty).

  The <vgabase> parameter is optional. If it is not given, the kernel
cannot read or write any color registers of the video hardware, and
thus you have to set appropriate colors before you start Linux. But if
your card is somehow VGA compatible, you can tell the kernel the base
address of the VGA register set, so it can change the color lookup
table. You have to look up this address in your board's documentation.
To avoid misunderstandings: <vgabase> is the _base_ address, i.e. a 4k
aligned address. For read/writing the color registers, the kernel
uses the addresses vgabase+0x3c7...vgabase+0x3c9. The <vgabase>
parameter is written in hexadecimal with a "0x" prefix, just as
<scrmem>.

  <colw> is meaningful only if <vgabase> is specified. It tells the
kernel how wide each of the color register is, i.e. the number of bits
per single color (red/green/blue). Default is 6, another quite usual
value is 8.

  Also <coltype> is used together with <vgabase>. It tells the kernel
about the color register model of your gfx board. Currently, the types
"vga" (which is also the default) and "mv300" (SANG MV300) are
implemented.

4.1.8) pwrsave
--------------

Use the power saving capabilities of the monitor. This means, in
addition to the usual screen blanking, the HSYNC signal is turned off.
Use this only with a monitor that supports the VESA suspend mode! This
sub-option currently works only with the Falcon.

4.1.9) eclock:
--------------

The external pixel clock attached to the Falcon VIDEL shifter. This
currently works only with the ScreenWonder!

4.1.10) monitorcap:
-------------------

Syntax: monitorcap:<vmin>;<vmax>;<hmin>;<hmax>

This describes the capabilities of a multisync monitor. Don't use it
with a fixed-frequency monitor! For now, only the Falcon frame buffer
uses the settings of "monitorcap:".

  <vmin> and <vmax> are the minimum and maximum, resp., vertical frequencies
your monitor can work with, in Hz. <hmin> and <hmax> are the same for
the horizontal frequency, in kHz.

  The defaults are 58;62;31;32 (VGA compatible).

4.1.11) keep
------------

If this option is given, the framebuffer device doesn't do any video
mode calculations and settings on its own. The only Atari fb device
that does this currently is the Falcon.

  What you reach with this: Settings for unknown video extensions
aren't overridden by the driver, so you can still use the mode found
when booting, when the driver doesn't know to set this mode itself.
But this also means, that you can't switch video modes anymore...

  An example where you may want to use "keep" is the ScreenBlaster for
the Falcon.


4.2) atamouse=
--------------

Syntax: atamouse=<x-threshold>,[<y-threshold>]

  With this option, you can set the mouse movement reporting threshold.
This is the number of pixels of mouse movement that have to accumulate
before the IKBD sends a new mouse packet to the kernel. Higher values
reduce the mouse interrupt load and thus reduce the chance of keyboard
overruns. Lower values give a slightly faster mouse responses and
slightly better mouse tracking.

  You can set the threshold in x and y separately, but usually this is
of little practical use. If there's just one number in the option, it
is used for both dimensions. The default value is 2 for both
thresholds.


4.3) ataflop=
-------------

Syntax: ataflop=<drive type>[,<trackbuffering>[,<steprateA>[,<steprateB>]]]

   The drive type may be 0, 1, or 2, for DD, HD, and ED, resp. This
   setting affects how much buffers are reserved and which formats are
   probed (see also below). The default is 1 (HD). Only one drive type
   can be selected. If you have two disk drives, select the "better"
   type.

   The second parameter <trackbuffer> tells the kernel whether to use
   track buffering (1) or not (0). The default is machine dependant:
   no for the Medusa and yes for all others.

   With the two following parameters, you can change the default
   steprate used for drive A and B, resp. 


5) Options for Amiga Only:
==========================

5.1) video=
-----------

Syntax: [inverse],[<video mode>]

  This option is organized similar to "atavideo" (4.1), but knows not
as much sub-options.

5.1.1) inverse
--------------

Use inverted display. Functionally the same as the "inverse"
sub-option of "atavideo".

5.1.2) video mode
-----------------

Again, similar to the video mode in "atavideo" (see 4.1.1). Defined
modes are:

NTSC modes:
 - ntsc-lace     : 640x400x1, interlaced
 - ntsc          : 640x200x1
 - ntsc-lace-over: 704x480x1, interlaced
 - ntsc-over     : 704x240x1
PAL modes:
 - pal-lace     : 640x512x1, interlaced
 - pal          : 640x256x1, interlaced
 - pal-lace-over: 704x592x1, interlaced
 - pal-over     : 704x296x1, interlaced
ECS modes:
 - Multiscan     : 640x480x1
 - multiscan-lace: 640x960x1, interlaced
 - super72       : 800x304x1, 72 Hz
 - super72-lace  : 800x600x1, 72 Hz, interlaced
 - dblntsc       : 640x400x1, 59 Hz
 - dblpal        : 640x512x1, 52 Hz
 - euro72        : 640x400x1, 71 Hz
AGA modes:
 - aga640x480 : 640x480x1, 60 Hz
 - aga800x600 : 896x624x1, 72 Hz, interlaced
 - aga720x400 : 720x400x1, 70 Hz, 29.27 kHz
 - aga640x400 : 640x400x1, 76 Hz, 31.89 kHz
 - aga640x480a: 640x480x1, 64 Hz, 31.89 kHz


5.2) fd_def_df0=
----------------

Syntax: fd_def_df0=<value>

Sets the df0 value for "silent" floppy drives. The value should be in
hexadecimal with "0x" prefix.


5.3) wd33c93=
-------------

Syntax: wd33c93=<bitmasks...>

  The value of this option is a list of bitmasks, one for each WD33C93
based SCSI controller. If in one of these bitmasks a bit (#0..7) is
set, no synchronous SCSI negotiation is attempted for the
corresponding target. Examples:

 - To disable sync negotiation for target #1 of controller #0:
     wd33c93=0x01
 - To disable sync negotiation for target #4 of controller #1:
     wd33c93=0x00,0x10


5.4) gvp11=
-----------

Syntax: gvp11=<addr-mask>

  The address mask set by this option specifies which addresses are
valid for DMA with the GVP Series II SCSI controller. An address is
valid, if no bits are set except the bits that are set in the mask,
too.

  Some versions of the GVP can only DMA into a 24 bit address range,
others can use the whole 32 bit address range for DMA. The
(conservative) default is the 24 bit version, by a default mask of
0x00fffffe. If your GVP can handle 32 bit DMA, you can specify
gvp11=0xfffffffe.


/* Local Variables: */
/* mode: text       */
/* End:             */
