15.3. SCSI Drivers
Detailed information about SCSI drivers is in SCSI-2.4-HOWTO .
Linux's SCSI function is implemented in three layers, and there are LKMs for all of them.
In the middle is the mid-level driver or SCSI core. This consists of the scsi_mod LKM. It does all those things that are common among SCSI devices regardless of what SCSI adapter you use and what class of device (disk, scanner, CD-ROM drive, etc.) it is.
There is a low-level driver for each kind of SCSI adapter -- typically, a different driver for each brand. For example, the low-level driver for Advansys adapters (made by the company which is now Connect.com) is named advansys . (If you are comparing ATA (aka IDE) and SCSI disk devices, this is a major difference -- ATA is simple and standard enough that one driver works with all adapters from all companies. SCSI is less standard and as a result you should have less confidence in any particular adapter being perfectly compatible with your system).
High-level drivers present to the rest of the kernel an interface appropriate to a certain class of devices. The SCSI high-level driver for tape devices, st , for example, has ioctls to rewind. The high-level SCSI driver for CD-ROM drives, sr , does not.
Note that you rarely need a high-level driver specific to a certain brand of device. At this level, there is little room for one brand to be distinguishable from another.
One SCSI high-level driver that deserves special mention is sg . This driver, called the "SCSI generic" driver, is a fairly thin layer that presents a rather raw representation of the SCSI mid-level driver to the rest of the kernel. User space programs that operate through the SCSI generic driver (because they access device special files whose major number is the one registered by sg (to wit, 21)) have a detailed understanding of SCSI protocols, whereas user space programs that operate through other SCSI high-level drivers typically don't even know what SCSI is. SCSI-Programming-HOWTO has complete documentation of the SCSI generic driver.
The layering order of the SCSI modules belies the way the LKMs depend upon each other and the order in which they must be loaded. You always load the mid-level driver first and unload it last. The low-level and high-level drivers can be loaded and unloaded in any order after that, and they hook themselves into and establish dependency on the mid-level driver at both ends. If you don't have a complete set, you will get a "device not found" error when you try to access a device.
Most SCSI low-level (adapter) drivers don't have LKM parameters; they do generally autoprobe for card settings. If your card responds to some unconventional port address you must bind the driver into the base kernel and use kernel "command line" options. See BootPrompt-HOWTO . Or you can twiddle The Source and recompile.
Many SCSI low-level drivers have documentation in the drivers/scsi directory in the Linux source tree, in files called README. *.
15.3.1. scsi_mod: SCSI mid-level driver
Example:
modprobe scsi_mod
There are no module parameters.
15.3.2. sd_mod: SCSI high-level driver for disk devices
Example:
modprobe sd_mod
There are no module parameters.
15.3.3. st: SCSI high-level driver for tape devices
Example:
modprobe st
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.4. sr_mod: SCSI high-level driver for CD-ROM drives
Example:
modprobe sr_mod
There are no module parameters.
15.3.5. sg: SCSI high-level driver for generic SCSI devices
See the explanation of this special high-level driver above.
Example:
modprobe sg
There are no module parameters.
15.3.6. wd7000: SCSI low-level driver for 7000FASST
Example:
modprobe wd7000
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver atoprobes the card and requires installed BIOS.
15.3.7. aha152x: SCSI low-level driver for Adaptec AHA152X/2825
Example:
modprobe aha152x
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver atoprobes the card and requires installed BIOS.
15.3.8. aha1542: SCSI low-level driver for Adaptec AHA1542
Example:
modprobe aha1542
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card at 0x330 and 0x334 only.
15.3.9. aha1740: SCSI low-level driver for Adaptec AHA1740 EISA
Example:
modprobe aha1740
There are no module parameters.
This driver autoprobes the card.
15.3.10. aic7xxx: SCSI low-level driver for Adaptec AHA274X/284X/294X
Example:
modprobe aic7xxx
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card and BIOS must be enabled.
15.3.11. advansys: SCSI low-level driver for AdvanSys/Connect.com
Example:
modprobe advansys asc_iopflag=1 asc_ioport=0x110,0x330 asc_dbglvl=1
Module Parameters:
asc_iopflag
1
enable port scanning
0
disable port scanning
asc_ioport
I/O port addresses to scan for Advansys SCSI adapters
asc_dbglvl
debugging level:
0
Errors only
1
High level tracing
2-N
Verbose tracing
If you bind this driver into the base kernel, you can pass parameters to it via the kernel boot parameters. See BootPrompt-HOWTO .
15.3.12. in2000: SCSI low-level driver for Always IN2000
Example:
modprobe in2000
There are no module parameters.
This driver autoprobes the card. No BIOS is required.
15.3.13. BusLogic: SCSI low-level driver for BusLogic
The list of BusLogic cards this driver can drive is long. Read file drivers/scsi/README.BusLogic in the Linux source tree to get the total picture.
Example:
modprobe BusLogic
There are no module parameters.
If you bind this driver into the base kernel, you can pass parameters to it via the kernel boot parameters. See BootPrompt-HOWTO .
15.3.14. dtc: SCSI low-level driver for DTC3180/3280
Example:
modprobe dtc
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card.
15.3.15. eata: SCSI low-level driver for EATA ISA/EISA
This driver handles DPT PM2011/021/012/022/122/322.
Example:
modprobe eata
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.16. eata_dma: SCSI low-level driver for EATA-DMA
This driver handles DPT, NEC, AT&T, SNI, AST, Olivetti, and Alphatronix.
This driver handles DPT Smartcache, Smartcache III and SmartRAID.
Example:
modprobe eata_dma
There are no module parameters.
Autoprobe works in all configurations.
15.3.17. eata_pio: SCSI low-level driver for EATA-PIO
This driver handles old DPT PM2001, PM2012A.
Example:
modprobe eata_pio
There are no module parameters.
15.3.18. fdomain: SCSI low-level driver for Future Domain 16xx
Example:
modprobe fdomain
There are no module parameters.
This driver autoprobes the card and requires installed BIOS.
15.3.19. NCR5380: SCSI low-level driver for NCR5380/53c400
Example:
modprobe NCR5380 ncr_irq=xx ncr_addr=xx ncr_dma=xx ncr_5380=1 \
ncr_53c400=1
for a port mapped NCR5380 board:
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1
for a memory mapped NCR53C400 board with interrupts disabled:
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
Parameters:
ncr_irq
the irq the driver is to service. 255 means no or DMA interrupt. 254 to autoprobe for an IRQ line if overridden on the command line.
ncr_addr
the I/O port address or memory mapped I/O address, whichever is appropriate, that the driver is to drive
ncr_dma
the DMA channel the driver is to use
ncr_5380
1 = set up for a NCR5380 board
ncr_53c400
1 = set up for a NCR53C400 board
If you bind this driver into the base kernel, you can pass parameters to it via the kernel boot parameters. See BootPrompt-HOWTO .
15.3.20. NCR53c406a: SCSI low-level driver for NCR53c406a
Example:
modprobe NCR53c406a
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.21. 53c7,8xx.o: SCSI low-level driver for NCR53c7,8xx
Example:
modprobe 53c7,8xx
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card and requires installed BIOS.
15.3.22. ncr53c8xx: SCSI low-level driver for PCI-SCS NCR538xx family
Example:
modprobe ncr53c8xx
There are no module parameters.
15.3.23. ppa: low-level SCSI driver for IOMEGA parallel port ZIP drive
See the file drivers/scsi/README.ppa in the Linux source tree for details.
Example:
modprobe ppa ppa_base=0x378 ppa_nybble=1
Parameters:
ppa_base
Base address of the PPA's I/O port. Default 0x378.
ppa_speed_high
Delay used in data transfers, in microseconds. Default is 1.
ppa_speed_low
Delay used in other
operations, in microseconds. Default is 6.
ppa_nybble
1 = Use 4-bit mode. 0 = don't. Default is 0.
15.3.24. pas16: SCSI low-level driver for PAS16
Example:
modprobe pas16
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card. No BIOS is required.
15.3.25. qlogicfas: SCSI low-level driver for Qlogic FAS
Example:
modprobe qlogicfas
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.26. qlogicisp: SCSI low-level driver for Qlogic ISP
Example:
modprobe qlogicisp
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
Requires firmware.
15.3.27. seagate: SCSI low-level driver for Seagate, Future Domain
This driver is for Seagate ST-02 and Future Domain TMC-8xx.
Example:
modprobe seagate
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes for address only. The IRQ is fixed at 5. The driver requires installed BIOS.
15.3.28. t128: SCSI low-level driver for Trantor T128/T128F/T228
Example:
modprobe t128
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card. The driver requires installed BIOS.
15.3.29. u14-34f: SCSI low-level driver for UltraStor 14F/34F
Example:
modprobe u14-34f
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card, but not the 0x310 port. No BIOS is required.
15.3.30. ultrastor: low-level SCSI driver for UltraStor
Example:
modprobe ultrastor
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
Detailed information about SCSI drivers is in SCSI-2.4-HOWTO .
Linux's SCSI function is implemented in three layers, and there are LKMs for all of them.
In the middle is the mid-level driver or SCSI core. This consists of the scsi_mod LKM. It does all those things that are common among SCSI devices regardless of what SCSI adapter you use and what class of device (disk, scanner, CD-ROM drive, etc.) it is.
There is a low-level driver for each kind of SCSI adapter -- typically, a different driver for each brand. For example, the low-level driver for Advansys adapters (made by the company which is now Connect.com) is named advansys . (If you are comparing ATA (aka IDE) and SCSI disk devices, this is a major difference -- ATA is simple and standard enough that one driver works with all adapters from all companies. SCSI is less standard and as a result you should have less confidence in any particular adapter being perfectly compatible with your system).
High-level drivers present to the rest of the kernel an interface appropriate to a certain class of devices. The SCSI high-level driver for tape devices, st , for example, has ioctls to rewind. The high-level SCSI driver for CD-ROM drives, sr , does not.
Note that you rarely need a high-level driver specific to a certain brand of device. At this level, there is little room for one brand to be distinguishable from another.
One SCSI high-level driver that deserves special mention is sg . This driver, called the "SCSI generic" driver, is a fairly thin layer that presents a rather raw representation of the SCSI mid-level driver to the rest of the kernel. User space programs that operate through the SCSI generic driver (because they access device special files whose major number is the one registered by sg (to wit, 21)) have a detailed understanding of SCSI protocols, whereas user space programs that operate through other SCSI high-level drivers typically don't even know what SCSI is. SCSI-Programming-HOWTO has complete documentation of the SCSI generic driver.
The layering order of the SCSI modules belies the way the LKMs depend upon each other and the order in which they must be loaded. You always load the mid-level driver first and unload it last. The low-level and high-level drivers can be loaded and unloaded in any order after that, and they hook themselves into and establish dependency on the mid-level driver at both ends. If you don't have a complete set, you will get a "device not found" error when you try to access a device.
Most SCSI low-level (adapter) drivers don't have LKM parameters; they do generally autoprobe for card settings. If your card responds to some unconventional port address you must bind the driver into the base kernel and use kernel "command line" options. See BootPrompt-HOWTO . Or you can twiddle The Source and recompile.
Many SCSI low-level drivers have documentation in the drivers/scsi directory in the Linux source tree, in files called README. *.
15.3.1. scsi_mod: SCSI mid-level driver
Example:
modprobe scsi_mod
There are no module parameters.
15.3.2. sd_mod: SCSI high-level driver for disk devices
Example:
modprobe sd_mod
There are no module parameters.
15.3.3. st: SCSI high-level driver for tape devices
Example:
modprobe st
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.4. sr_mod: SCSI high-level driver for CD-ROM drives
Example:
modprobe sr_mod
There are no module parameters.
15.3.5. sg: SCSI high-level driver for generic SCSI devices
See the explanation of this special high-level driver above.
Example:
modprobe sg
There are no module parameters.
15.3.6. wd7000: SCSI low-level driver for 7000FASST
Example:
modprobe wd7000
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver atoprobes the card and requires installed BIOS.
15.3.7. aha152x: SCSI low-level driver for Adaptec AHA152X/2825
Example:
modprobe aha152x
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver atoprobes the card and requires installed BIOS.
15.3.8. aha1542: SCSI low-level driver for Adaptec AHA1542
Example:
modprobe aha1542
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card at 0x330 and 0x334 only.
15.3.9. aha1740: SCSI low-level driver for Adaptec AHA1740 EISA
Example:
modprobe aha1740
There are no module parameters.
This driver autoprobes the card.
15.3.10. aic7xxx: SCSI low-level driver for Adaptec AHA274X/284X/294X
Example:
modprobe aic7xxx
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card and BIOS must be enabled.
15.3.11. advansys: SCSI low-level driver for AdvanSys/Connect.com
Example:
modprobe advansys asc_iopflag=1 asc_ioport=0x110,0x330 asc_dbglvl=1
Module Parameters:
asc_iopflag
1
enable port scanning
0
disable port scanning
asc_ioport
I/O port addresses to scan for Advansys SCSI adapters
asc_dbglvl
debugging level:
0
Errors only
1
High level tracing
2-N
Verbose tracing
If you bind this driver into the base kernel, you can pass parameters to it via the kernel boot parameters. See BootPrompt-HOWTO .
15.3.12. in2000: SCSI low-level driver for Always IN2000
Example:
modprobe in2000
There are no module parameters.
This driver autoprobes the card. No BIOS is required.
15.3.13. BusLogic: SCSI low-level driver for BusLogic
The list of BusLogic cards this driver can drive is long. Read file drivers/scsi/README.BusLogic in the Linux source tree to get the total picture.
Example:
modprobe BusLogic
There are no module parameters.
If you bind this driver into the base kernel, you can pass parameters to it via the kernel boot parameters. See BootPrompt-HOWTO .
15.3.14. dtc: SCSI low-level driver for DTC3180/3280
Example:
modprobe dtc
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card.
15.3.15. eata: SCSI low-level driver for EATA ISA/EISA
This driver handles DPT PM2011/021/012/022/122/322.
Example:
modprobe eata
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.16. eata_dma: SCSI low-level driver for EATA-DMA
This driver handles DPT, NEC, AT&T, SNI, AST, Olivetti, and Alphatronix.
This driver handles DPT Smartcache, Smartcache III and SmartRAID.
Example:
modprobe eata_dma
There are no module parameters.
Autoprobe works in all configurations.
15.3.17. eata_pio: SCSI low-level driver for EATA-PIO
This driver handles old DPT PM2001, PM2012A.
Example:
modprobe eata_pio
There are no module parameters.
15.3.18. fdomain: SCSI low-level driver for Future Domain 16xx
Example:
modprobe fdomain
There are no module parameters.
This driver autoprobes the card and requires installed BIOS.
15.3.19. NCR5380: SCSI low-level driver for NCR5380/53c400
Example:
modprobe NCR5380 ncr_irq=xx ncr_addr=xx ncr_dma=xx ncr_5380=1 \
ncr_53c400=1
for a port mapped NCR5380 board:
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0x350 ncr_5380=1
for a memory mapped NCR53C400 board with interrupts disabled:
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
Parameters:
ncr_irq
the irq the driver is to service. 255 means no or DMA interrupt. 254 to autoprobe for an IRQ line if overridden on the command line.
ncr_addr
the I/O port address or memory mapped I/O address, whichever is appropriate, that the driver is to drive
ncr_dma
the DMA channel the driver is to use
ncr_5380
1 = set up for a NCR5380 board
ncr_53c400
1 = set up for a NCR53C400 board
If you bind this driver into the base kernel, you can pass parameters to it via the kernel boot parameters. See BootPrompt-HOWTO .
15.3.20. NCR53c406a: SCSI low-level driver for NCR53c406a
Example:
modprobe NCR53c406a
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.21. 53c7,8xx.o: SCSI low-level driver for NCR53c7,8xx
Example:
modprobe 53c7,8xx
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card and requires installed BIOS.
15.3.22. ncr53c8xx: SCSI low-level driver for PCI-SCS NCR538xx family
Example:
modprobe ncr53c8xx
There are no module parameters.
15.3.23. ppa: low-level SCSI driver for IOMEGA parallel port ZIP drive
See the file drivers/scsi/README.ppa in the Linux source tree for details.
Example:
modprobe ppa ppa_base=0x378 ppa_nybble=1
Parameters:
ppa_base
Base address of the PPA's I/O port. Default 0x378.
ppa_speed_high
Delay used in data transfers, in microseconds. Default is 1.
ppa_speed_low
Delay used in other
operations, in microseconds. Default is 6.
ppa_nybble
1 = Use 4-bit mode. 0 = don't. Default is 0.
15.3.24. pas16: SCSI low-level driver for PAS16
Example:
modprobe pas16
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card. No BIOS is required.
15.3.25. qlogicfas: SCSI low-level driver for Qlogic FAS
Example:
modprobe qlogicfas
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
15.3.26. qlogicisp: SCSI low-level driver for Qlogic ISP
Example:
modprobe qlogicisp
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
Requires firmware.
15.3.27. seagate: SCSI low-level driver for Seagate, Future Domain
This driver is for Seagate ST-02 and Future Domain TMC-8xx.
Example:
modprobe seagate
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes for address only. The IRQ is fixed at 5. The driver requires installed BIOS.
15.3.28. t128: SCSI low-level driver for Trantor T128/T128F/T228
Example:
modprobe t128
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card. The driver requires installed BIOS.
15.3.29. u14-34f: SCSI low-level driver for UltraStor 14F/34F
Example:
modprobe u14-34f
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
This driver autoprobes the card, but not the 0x310 port. No BIOS is required.
15.3.30. ultrastor: low-level SCSI driver for UltraStor
Example:
modprobe ultrastor
There are no module parameters for the LKM, but if you bind this module into the base kernel, you can pass some parameters via the Linux boot parameters. See BootPrompt-HOWTO .
No comments:
Post a Comment