AIC(4) BSD Programmer's Manual AIC(4)NAMEaic - Adaptec EISA/PCI SCSI HBA (Host Bus Adapter) driver
SYNOPSIS
aic0 at pci?
aic0 at eisa?
DESCRIPTION
The aic device driver provides the software interface to SCSI host bus
adapters built around the following Adaptec chips:
AIC-7770
AIC-7771
AIC-7850
AIC-7855
AIC-7859
AIC-7860
AIC-7870
AIC-7880
AIC-7890
AIC-7891
AIC-7892
AIC-7895
AIC-7896
AIC-7899
These chips are found both on motherboards and the following SCSI host
bus adapter cards from Adaptec:
2910/15/20/30C
2930 Ultra2
2930CU
2940
2940 (OEM) Ultra2
2940 Pro Ultra
2940 Ultra
2940 Ultra2
2940/DUAL Ultra
2940A Ultra
2940B Ultra2
2944
2944 Ultra
2950 Ultra2
39160 Ultra160
3940
3940 Ultra
3940A Ultra
3944
3944 Ultra
3944A Ultra
3950B Ultra2
3950D Ultra2
3960D CPQ Ultra160
3960D Ultra160
398X
398X Ultra
29160 CPQ Ultra160
29160 Ultra160
29160LP Ultra160
29160N Ultra160
The aic driver is designed to be the machine-dependent back end for ma-
chine-independent SCSI pseudo-devices (see sd(4), sg(4), st(4)).
Booting from a SCSI disk attached to host bus adapters supported by this
driver is done via generic BIOS boot code.
CONFIGURATION
Host bus adapters supported by this driver are located using standard PCI
or EISA addressing. It is not necessary to supply a port address for
these devices. It is important to have this driver configured in the
kernel before drivers which choose an IRQ from those which have not yet
been assigned.
BOOT PARAMETERS
There are now parameters which are configurable from boot(8) with the
-parm command. Typically these commands would be added to boot.default(5)
though they can be set at the ``boot:'' prompt.
Many of the parameters take as an argument one or more target ids. The
following are permissible arguments to these parameters:
t0 target 0.
target0 target 0.
t1 target 1.
target1 target 1.
t2 target 2.
target2 target 2.
.
.
.
t14 target 14
target14 target 14
t15 target 15
target15 target 15
all targets 0 through 15
none no targets
The following parameters take a list of target specifiers as an argu-
ment(s):
broken_disconnect
These targets do not do a save data pointers before a dis-
connect even when they are going to transfer more data.
There are no known targets confirmed to have this bug, it
is therefore very unlikely that this parameter would need
to be changed from the default value. Examples:
-parm aic* broken_disconnect=none #default
-parm aic0 broken_disconnect=target2 #target 2
busted_enquiry
At least one target does not allow an enquiry command with
a zero data length. When this option is set the driver will
use test unit ready instead of enquiry while negotiating
transfer options. Also, when an enquiry command is required
a non-zero transfer length will be forced even if the re-
sults are going to be discarded. Examples:
-parm aic* busted_enquiry=none #default
-parm aic0 busted_enquiry=target4 #target 4
busted_v2sync
At least one target does not set the option bit saying that
they support synchronous transfers when it fact they do.
Setting this option will cause the driver to attempt syn-
chronous negotiation with the target. Examples:
-parm aic* busted_v2sync=none #default
-parm aic0 busted_v2sync=target3 #target 3
busted_v3sync
Some targets which claim to be SCSI-3 compliant do not sup-
port the SCSI-3 method of negotiating bus transfer options.
Setting this option will cause the driver to treat a target
which claims to be SCSI-3 as if it were a SCSI-2 device.
Examples:
-parm aic* busted_v3sync=none #default
-parm aic0 busted_v3sync=all
disconnect
These targets are allowed to disconnect. Examples:
-parm aic* disconnect=all #default
-parm aic0 disconnect=all-t1 #all but target 1
fast Fast SCSI, up to 10MB sync rate will be negotiated for
these targets. Examples:
-parm aic* fast=all #default
-parm aic0 fast=t1,t2 #targets 1 and 2.
id_message
Send id message after selecting these targets. It may be
necessary to disable sending the id message on a few very
old targets. Id messages are required with SCSI-3 targets.
Examples:
-parm aic* id_message=all #default
-parm aic0 id_message=all-target1 #all but target 1
parity Check parity from these targets. Examples:
-parm aic* parity=all #default
-parm aic0 parity=all-target2 #all but target 2
single_lun
For these targets only look at lun 0.
-parm aic* single_lun=none #default
-parm aic* single_lun=all
skip_targets
These targets will not be probed at boot. Examples:
-parm aic* skip_targets=none #default
-parm aic0 skip_targets=target5 #Don't probe target 5
sync Sync transfer will be negotiated for these targets. Exam-
ples:
-parm aic* sync=all #default
-parm aic0 sync=all-t1-t2 #all but target 1 and 2
tags These targets will use tag queueing if supported by the
target. See sd(4) for caveats on its use. Examples:
-parm aic* tags=none #default
-parm aic1 tags=all-t1 #all but target 1
ultra Ultra SCSI, up to 20MB (40 wide) sync rate will be negoti-
ated for these targets. Examples:
-parm aic* ultra=none #default for controllers which do
not support ultra transfers
-parm aic* ultra=all #default for controllers which sup-
port ultra transfers
ultra2 Ultra2 SCSI, up to 40MB (80 wide) sync rate will be negoti-
ated for these targets if they are on a LVD (low voltage
differential) bus segment. Examples:
-parm aic* ultra2=none #default for controllers which do
not support ultra2 transfers
-parm aic* ultra2=all #default for controllers which sup-
port ultra2 transfers
ultra160
Ultra160 SCSI-3, up to 160MB wide sync rate will be negoti-
ated for these targets if they are on a LVD (low voltage
differential) bus segment. Examples:
-parm aic* ultra160=none #default for controllers which do
not support Ultra160 transfers
-parm aic* ultra160=all #default for controllers which
support ultra160 transfers
wide Wide negotiation will be attempted with these targets. If
any targets are marked as being wide then targets between 8
and 15 will be probed at boot time. Examples:
-parm aic* wide=none #default for controllers which do not
support wide transfers
-parm aic* wide=all #default for controllers which support
wide transfers
The following parameters take a yes or no as an argument:
active_negation
Use active negation on the SCSI bus. Examples:
-parm aic* active_negation=yes #default
-parm aic1 active_negation=no
The following parameters take a numeric value as an argument:
bus_release_time
This command is used to set the EISA bus release time. This
has no effect on PCI cards. The EISA bus release time is
typically set up by the BIOS before BSD/OS is loaded. On
some systems this does not occur. Typically a value 0xf
(15 decimal) should be specified.
-parm aic0 bus_release_time=0xf
-parm aic0 bus_release_time=15
initiator_id
Set the initiator id of the adapter to this. If there are
any narrow targets setting of the initiator id above 7 will
cause the SCSI bus to hang.
-parm aic* initiator_id=7 #default
reset_delay
This is used to control the number of seconds of delay
which is inserted after the SCSI bus is reset at boot time.
-parm aic* reset_delay=5 #default
-parm aic* reset_delay=1 #1 second reset delay
-parm aic* reset_delay=0 #no delay after reset
TERMINATION
For those boards which have termination control it is configured through
the BIOS. Currently termination is the only information which the driver
picks up from the BIOS. If the board has hardware which specifically in-
dicates that termination board control hardware is present or if there is
seeprom data which indicates that termination control logic is present
the driver will assume the termination control logic follows Adaptec
standards and program it appropriately. If neither of these are true the
driver will preserve the primary termination left over from the BIOS. As
a last resort the following parameter can be set from boot(8). In the
following LVD refers to low voltage differential, SE/HVD refers to single
ended or high voltage differential. Since single ended and high voltage
differential share the same control bits anyplace "se" is used below
"hvd" can be substituted. These two are interpreted exactly the same.
Normal combinations can also be formed.
-parm aic* termination=yes #all terminators appropriate to board on
-parm aic0 termination=no #all terminators off
-parm aic0 termination=lvd #all LVD on, SE/HVD off
-parm aic0 termination=lvd_low #only LVD low byte on
-parm aic0 termination=lvd_high #only LVD high byte on
-parm aic0 termination=se #all SE/HVD terminators on
-parm aic0 termination=hvd #same as above
-parm aic0 termination=se_high #only SE/LVD high byte
-parm aic0 termination=hvd_high #same as above
-parm aic0 termination=se_low #only SE/LVD low byte
-parm aic0 termination=lvd,se_high #combination example
-parm
SEE ALSOsd(4), sg(4), st(4)BSDI BSD/OS September 17, 1999 5