Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 =====================
0004 AdvanSys Driver Notes
0005 =====================
0006 
0007 AdvanSys (Advanced System Products, Inc.) manufactures the following
0008 RISC-based, Bus-Mastering, Fast (10 Mhz) and Ultra (20 Mhz) Narrow
0009 (8-bit transfer) SCSI Host Adapters for the ISA, EISA, VL, and PCI
0010 buses and RISC-based, Bus-Mastering, Ultra (20 Mhz) Wide (16-bit
0011 transfer) SCSI Host Adapters for the PCI bus.
0012 
0013 The CDB counts below indicate the number of SCSI CDB (Command
0014 Descriptor Block) requests that can be stored in the RISC chip
0015 cache and board LRAM. A CDB is a single SCSI command. The driver
0016 detect routine will display the number of CDBs available for each
0017 adapter detected. The number of CDBs used by the driver can be
0018 lowered in the BIOS by changing the 'Host Queue Size' adapter setting.
0019 
0020 Laptop Products:
0021   - ABP-480 - Bus-Master CardBus (16 CDB)
0022 
0023 Connectivity Products:
0024    - ABP510/5150 - Bus-Master ISA (240 CDB)
0025    - ABP5140 - Bus-Master ISA PnP (16 CDB)
0026    - ABP5142 - Bus-Master ISA PnP with floppy (16 CDB)
0027    - ABP902/3902 - Bus-Master PCI (16 CDB)
0028    - ABP3905 - Bus-Master PCI (16 CDB)
0029    - ABP915 - Bus-Master PCI (16 CDB)
0030    - ABP920 - Bus-Master PCI (16 CDB)
0031    - ABP3922 - Bus-Master PCI (16 CDB)
0032    - ABP3925 - Bus-Master PCI (16 CDB)
0033    - ABP930 - Bus-Master PCI (16 CDB)
0034    - ABP930U - Bus-Master PCI Ultra (16 CDB)
0035    - ABP930UA - Bus-Master PCI Ultra (16 CDB)
0036    - ABP960 - Bus-Master PCI MAC/PC (16 CDB)
0037    - ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
0038 
0039 Single Channel Products:
0040    - ABP542 - Bus-Master ISA with floppy (240 CDB)
0041    - ABP742 - Bus-Master EISA (240 CDB)
0042    - ABP842 - Bus-Master VL (240 CDB)
0043    - ABP940 - Bus-Master PCI (240 CDB)
0044    - ABP940U - Bus-Master PCI Ultra (240 CDB)
0045    - ABP940UA/3940UA - Bus-Master PCI Ultra (240 CDB)
0046    - ABP970 - Bus-Master PCI MAC/PC (240 CDB)
0047    - ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
0048    - ABP3960UA - Bus-Master PCI MAC/PC Ultra (240 CDB)
0049    - ABP940UW/3940UW - Bus-Master PCI Ultra-Wide (253 CDB)
0050    - ABP970UW - Bus-Master PCI MAC/PC Ultra-Wide (253 CDB)
0051    - ABP3940U2W - Bus-Master PCI LVD/Ultra2-Wide (253 CDB)
0052 
0053 Multi-Channel Products:
0054    - ABP752 - Dual Channel Bus-Master EISA (240 CDB Per Channel)
0055    - ABP852 - Dual Channel Bus-Master VL (240 CDB Per Channel)
0056    - ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
0057    - ABP950UW - Dual Channel Bus-Master PCI Ultra-Wide (253 CDB Per Channel)
0058    - ABP980 - Four Channel Bus-Master PCI (240 CDB Per Channel)
0059    - ABP980U - Four Channel Bus-Master PCI Ultra (240 CDB Per Channel)
0060    - ABP980UA/3980UA - Four Channel Bus-Master PCI Ultra (16 CDB Per Chan.)
0061    - ABP3950U2W - Bus-Master PCI LVD/Ultra2-Wide and Ultra-Wide (253 CDB)
0062    - ABP3950U3W - Bus-Master PCI Dual LVD2/Ultra3-Wide (253 CDB)
0063 
0064 Driver Compile Time Options and Debugging
0065 =========================================
0066 
0067 The following constants can be defined in the source file.
0068 
0069 1. ADVANSYS_ASSERT - Enable driver assertions (Def: Enabled)
0070 
0071    Enabling this option adds assertion logic statements to the
0072    driver. If an assertion fails a message will be displayed to
0073    the console, but the system will continue to operate. Any
0074    assertions encountered should be reported to the person
0075    responsible for the driver. Assertion statements may proactively
0076    detect problems with the driver and facilitate fixing these
0077    problems. Enabling assertions will add a small overhead to the
0078    execution of the driver.
0079 
0080 2. ADVANSYS_DEBUG - Enable driver debugging (Def: Disabled)
0081 
0082    Enabling this option adds tracing functions to the driver and the
0083    ability to set a driver tracing level at boot time.  This option is
0084    very useful for debugging the driver, but it will add to the size
0085    of the driver execution image and add overhead to the execution of
0086    the driver.
0087 
0088    The amount of debugging output can be controlled with the global
0089    variable 'asc_dbglvl'. The higher the number the more output. By
0090    default the debug level is 0.
0091 
0092    If the driver is loaded at boot time and the LILO Driver Option
0093    is included in the system, the debug level can be changed by
0094    specifying a 5th (ASC_NUM_IOPORT_PROBE + 1) I/O Port. The
0095    first three hex digits of the pseudo I/O Port must be set to
0096    'deb' and the fourth hex digit specifies the debug level: 0 - F.
0097    The following command line will look for an adapter at 0x330
0098    and set the debug level to 2::
0099 
0100       linux advansys=0x330,0,0,0,0xdeb2
0101 
0102    If the driver is built as a loadable module this variable can be
0103    defined when the driver is loaded. The following insmod command
0104    will set the debug level to one::
0105 
0106       insmod advansys.o asc_dbglvl=1
0107 
0108    Debugging Message Levels:
0109 
0110 
0111       ==== ==================
0112       0    Errors Only
0113       1    High-Level Tracing
0114       2-N  Verbose Tracing
0115       ==== ==================
0116 
0117    To enable debug output to console, please make sure that:
0118 
0119    a. System and kernel logging is enabled (syslogd, klogd running).
0120    b. Kernel messages are routed to console output. Check
0121       /etc/syslog.conf for an entry similar to this::
0122 
0123            kern.*                  /dev/console
0124 
0125    c. klogd is started with the appropriate -c parameter
0126       (e.g. klogd -c 8)
0127 
0128    This will cause printk() messages to be displayed on the
0129    current console. Refer to the klogd(8) and syslogd(8) man pages
0130    for details.
0131 
0132    Alternatively you can enable printk() to console with this
0133    program. However, this is not the 'official' way to do this.
0134 
0135    Debug output is logged in /var/log/messages.
0136 
0137    ::
0138 
0139      main()
0140      {
0141              syscall(103, 7, 0, 0);
0142      }
0143 
0144    Increasing LOG_BUF_LEN in kernel/printk.c to something like
0145    40960 allows more debug messages to be buffered in the kernel
0146    and written to the console or log file.
0147 
0148 3. ADVANSYS_STATS - Enable statistics (Def: Enabled)
0149 
0150    Enabling this option adds statistics collection and display
0151    through /proc to the driver. The information is useful for
0152    monitoring driver and device performance. It will add to the
0153    size of the driver execution image and add minor overhead to
0154    the execution of the driver.
0155 
0156    Statistics are maintained on a per adapter basis. Driver entry
0157    point call counts and transfer size counts are maintained.
0158    Statistics are only available for kernels greater than or equal
0159    to v1.3.0 with the CONFIG_PROC_FS (/proc) file system configured.
0160 
0161    AdvanSys SCSI adapter files have the following path name format::
0162 
0163       /proc/scsi/advansys/{0,1,2,3,...}
0164 
0165    This information can be displayed with cat. For example::
0166 
0167       cat /proc/scsi/advansys/0
0168 
0169    When ADVANSYS_STATS is not defined the AdvanSys /proc files only
0170    contain adapter and device configuration information.
0171 
0172 Driver LILO Option
0173 ==================
0174 
0175 If init/main.c is modified as described in the 'Directions for Adding
0176 the AdvanSys Driver to Linux' section (B.4.) above, the driver will
0177 recognize the 'advansys' LILO command line and /etc/lilo.conf option.
0178 This option can be used to either disable I/O port scanning or to limit
0179 scanning to 1 - 4 I/O ports. Regardless of the option setting EISA and
0180 PCI boards will still be searched for and detected. This option only
0181 affects searching for ISA and VL boards.
0182 
0183 Examples:
0184   1. Eliminate I/O port scanning:
0185 
0186      boot::
0187 
0188         linux advansys=
0189 
0190      or::
0191 
0192         boot: linux advansys=0x0
0193 
0194   2. Limit I/O port scanning to one I/O port:
0195 
0196      boot::
0197 
0198         linux advansys=0x110
0199 
0200   3. Limit I/O port scanning to four I/O ports:
0201 
0202      boot::
0203 
0204         linux advansys=0x110,0x210,0x230,0x330
0205 
0206 For a loadable module the same effect can be achieved by setting
0207 the 'asc_iopflag' variable and 'asc_ioport' array when loading
0208 the driver, e.g.::
0209 
0210       insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330
0211 
0212 If ADVANSYS_DEBUG is defined a 5th (ASC_NUM_IOPORT_PROBE + 1)
0213 I/O Port may be added to specify the driver debug level. Refer to
0214 the 'Driver Compile Time Options and Debugging' section above for
0215 more information.
0216 
0217 Credits (Chronological Order)
0218 =============================
0219 
0220 Bob Frey <bfrey@turbolinux.com.cn> wrote the AdvanSys SCSI driver
0221 and maintained it up to 3.3F. He continues to answer questions
0222 and help maintain the driver.
0223 
0224 Nathan Hartwell <mage@cdc3.cdc.net> provided the directions and
0225 basis for the Linux v1.3.X changes which were included in the
0226 1.2 release.
0227 
0228 Thomas E Zerucha <zerucha@shell.portal.com> pointed out a bug
0229 in advansys_biosparam() which was fixed in the 1.3 release.
0230 
0231 Erik Ratcliffe <erik@caldera.com> has done testing of the
0232 AdvanSys driver in the Caldera releases.
0233 
0234 Rik van Riel <H.H.vanRiel@fys.ruu.nl> provided a patch to
0235 AscWaitTixISRDone() which he found necessary to make the
0236 driver work with a SCSI-1 disk.
0237 
0238 Mark Moran <mmoran@mmoran.com> has helped test Ultra-Wide
0239 support in the 3.1A driver.
0240 
0241 Doug Gilbert <dgilbert@interlog.com> has made changes and
0242 suggestions to improve the driver and done a lot of testing.
0243 
0244 Ken Mort <ken@mort.net> reported a DEBUG compile bug fixed
0245 in 3.2K.
0246 
0247 Tom Rini <trini@kernel.crashing.org> provided the CONFIG_ISA
0248 patch and helped with PowerPC wide and narrow board support.
0249 
0250 Philip Blundell <philb@gnu.org> provided an
0251 advansys_interrupts_enabled patch.
0252 
0253 Dave Jones <dave@denial.force9.co.uk> reported the compiler
0254 warnings generated when CONFIG_PROC_FS was not defined in
0255 the 3.2M driver.
0256 
0257 Jerry Quinn <jlquinn@us.ibm.com> fixed PowerPC support (endian
0258 problems) for wide cards.
0259 
0260 Bryan Henderson <bryanh@giraffe-data.com> helped debug narrow
0261 card error handling.
0262 
0263 Manuel Veloso <veloso@pobox.com> worked hard on PowerPC narrow
0264 board support and fixed a bug in AscGetEEPConfig().
0265 
0266 Arnaldo Carvalho de Melo <acme@conectiva.com.br> made
0267 save_flags/restore_flags changes.
0268 
0269 Andy Kellner <AKellner@connectcom.net> continued the Advansys SCSI
0270 driver development for ConnectCom (Version > 3.3F).
0271 
0272 Ken Witherow for extensive testing during the development of version 3.4.