Parameters for modprobe and insmod
==================================

PRELIMINARY WARNING:
This documentation file is outdated and needs to be entirely reviewed
and updated. Until then, don't blindly trust what you read here.

==================================
SUMMARY

	[modprobe,insmod] module {parameter...}
	Parameters:
		force=bus,address{,bus,address}
		force_addr=address{,address}
		force_[chipname]=bus,address{,bus,address}
		force_subclients=bus,caddr,saddr,saddr
		ignore=bus,address{,bus,address}
		ignore_range=bus,start,end{,bus,start,end}
		probe=bus,address{,bus,address}
		probe_range=bus,start,end{,bus,start,end}
		init=[0,1] (default 1)

	All arguments are in decimal unless prefixed by "0x".
	No spaces are allowed.

==================================
OVERVIEW

All chip drivers have a few modprobe module parameters in common.
(Insmod can also be used, but we recommend modprobe so that
other required modules are automatically loaded.) These
parameters can be used when a module is inserted, to give some additional
information about how it should function. In this case, they tell where
the module should look for what chips. Usually, you don't need them, and
if you do, you are often told by sensors-detect which ones you need.

If a module doesn't load with no parameters, you may need to
add parameters. Check 'dmesg' for clues to what went wrong.


BUS NUMBERING
-------------
I2C/SMBus adapters are numbered in the order they are inserted. If you want
to know what number an adapter has, use the following command:

  grep . /sys/class/i2c-adapter/i2c-*/name

Alternatively, if you have installed i2c-tools, you can do:

  modprobe i2c-dev
  i2cdetect -l

If you want 'any I2C bus', use '-1'.


ADDRESS NUMBERING
-----------------
Each adapter has a number of addresses on I2C/SMBus adapters and/or the
ISA bus that are always scanned if no modprobe parameters are given. The
parameters below override those addresses that are scanned by default.

All modprobe parameters described below take lists of positive integers
(unsigned, in the range of 0 to 65535) as their arguments.  Integers
are separated by comma's, and may be given as ordinary decimal numbers,
as octal numbers (by starting them with a `0') or as hexadecimal numbers
(by starting them with a `0x'). More information can be found by
entering `man modprobe' or `man insmod'.
So to summarize:
	0x00 - 0x7f	Valid I2C Addresses
	0x0000 - 0xffff	Valid ISA Bus Addresses


==================================
PARAMETER DETAILS

`force', `force_*', `ignore' and `probe' parameters take pairs of numbers.
Each first (odd) number is a bus number, each second (even) number is
an (I2C or ISA) address.

`ignore_range' and `probe_range' parameters take triples of numbers.
Each first number is a bus number, each second number is the start address
of a range, and each third number is the end address of a range. Ranges
are always inclusive.

`probe' and `probe_range' parameters tell the module to scan additional 
addresses for a specific bus. These are treated just as the ordinary
addresses scanned. This is useful for some chips that can be anywhere;
to keep loading time (and false detections) down, only the most common
addresses are scanned by default.

`ignore' and `ignore_range' parameters tell the module not to scan
specific addresses. They overrule the default addresses and any 
addresses specified by `probe' and `probe_range' statements.

The `force' parameter tells the module a supported chip is found at
a specific address. It overrules all previously mentioned parameters.
Sometimes, a chip can be in a specific internal state that makes
detection impossible. If you specify it with the `force' parameter,
it is first put into a recognizable state. Also, some detection routines
are skipped. If the module supports several chips, it will still try
to determine what chip is found on that address. If it can't determine
this, the address will still not be used.

There is a `force_*' parameter for each type of chip supported by a
module. This is the strongest statement possible - it says that a
specific type of chip is found on a specific address, and the module
will skip all detection and recognition routines. This can lead to
very strange results...

`force_addr' is a parameter used for PCI sensor adapters.
It is used to program the base address of the sensor registers.
This is required if the BIOS does not initialize the base address.

`force_subclients' is used to force the i2c addresses for subclients of
a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b'
to force the subclients of chip 0x2d on bus 0 to i2c addresses
0x4a and 0x4b.
This parameter is currently supported only by the w83781d driver
and is useful for certain Tyan boards.

`init' is used to tell a driver to bypass initializing a chip.
This may be necessary if the BIOS has initialized the chip a certain way
and the driver should not overwrite that initialization.
It is also useful if normal initialization crashes the system.
The default is 1, so the only useful value is `init=0'.
This parameter is currently supported only by the w83781d driver.

==================================
EXAMPLE

  # ISA address 0x390 contains a LM79
  # Scan all I2C addresses (from 0 to 0x7f) for all I2C adapters
  # But skip address 0x2d on adapter 0, and address 0x20 on adapter 1

  modprobe lm78 force_lm79=9191,0x390 ignore=0,0x2d,1,0x20 probe_range=-1,0,0x7f
