The Linux Loadable Kernel Module How-To

man using laptop
pexels/public domain

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.

* License

* Loadable Kernel Module How-To Index

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 .