xref: /linux/Documentation/scsi/advansys.rst (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
1cb322408SMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0
2cb322408SMauro Carvalho Chehab
3cb322408SMauro Carvalho Chehab=====================
4cb322408SMauro Carvalho ChehabAdvanSys Driver Notes
5cb322408SMauro Carvalho Chehab=====================
6cb322408SMauro Carvalho Chehab
7cb322408SMauro Carvalho ChehabAdvanSys (Advanced System Products, Inc.) manufactures the following
8cb322408SMauro Carvalho ChehabRISC-based, Bus-Mastering, Fast (10 Mhz) and Ultra (20 Mhz) Narrow
9cb322408SMauro Carvalho Chehab(8-bit transfer) SCSI Host Adapters for the ISA, EISA, VL, and PCI
10cb322408SMauro Carvalho Chehabbuses and RISC-based, Bus-Mastering, Ultra (20 Mhz) Wide (16-bit
11cb322408SMauro Carvalho Chehabtransfer) SCSI Host Adapters for the PCI bus.
12cb322408SMauro Carvalho Chehab
13cb322408SMauro Carvalho ChehabThe CDB counts below indicate the number of SCSI CDB (Command
14cb322408SMauro Carvalho ChehabDescriptor Block) requests that can be stored in the RISC chip
15cb322408SMauro Carvalho Chehabcache and board LRAM. A CDB is a single SCSI command. The driver
16cb322408SMauro Carvalho Chehabdetect routine will display the number of CDBs available for each
17cb322408SMauro Carvalho Chehabadapter detected. The number of CDBs used by the driver can be
18cb322408SMauro Carvalho Chehablowered in the BIOS by changing the 'Host Queue Size' adapter setting.
19cb322408SMauro Carvalho Chehab
20cb322408SMauro Carvalho ChehabLaptop Products:
21cb322408SMauro Carvalho Chehab  - ABP-480 - Bus-Master CardBus (16 CDB)
22cb322408SMauro Carvalho Chehab
23cb322408SMauro Carvalho ChehabConnectivity Products:
24cb322408SMauro Carvalho Chehab   - ABP510/5150 - Bus-Master ISA (240 CDB)
25cb322408SMauro Carvalho Chehab   - ABP5140 - Bus-Master ISA PnP (16 CDB)
26cb322408SMauro Carvalho Chehab   - ABP5142 - Bus-Master ISA PnP with floppy (16 CDB)
27cb322408SMauro Carvalho Chehab   - ABP902/3902 - Bus-Master PCI (16 CDB)
28cb322408SMauro Carvalho Chehab   - ABP3905 - Bus-Master PCI (16 CDB)
29cb322408SMauro Carvalho Chehab   - ABP915 - Bus-Master PCI (16 CDB)
30cb322408SMauro Carvalho Chehab   - ABP920 - Bus-Master PCI (16 CDB)
31cb322408SMauro Carvalho Chehab   - ABP3922 - Bus-Master PCI (16 CDB)
32cb322408SMauro Carvalho Chehab   - ABP3925 - Bus-Master PCI (16 CDB)
33cb322408SMauro Carvalho Chehab   - ABP930 - Bus-Master PCI (16 CDB)
34cb322408SMauro Carvalho Chehab   - ABP930U - Bus-Master PCI Ultra (16 CDB)
35cb322408SMauro Carvalho Chehab   - ABP930UA - Bus-Master PCI Ultra (16 CDB)
36cb322408SMauro Carvalho Chehab   - ABP960 - Bus-Master PCI MAC/PC (16 CDB)
37cb322408SMauro Carvalho Chehab   - ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
38cb322408SMauro Carvalho Chehab
39cb322408SMauro Carvalho ChehabSingle Channel Products:
40cb322408SMauro Carvalho Chehab   - ABP542 - Bus-Master ISA with floppy (240 CDB)
41cb322408SMauro Carvalho Chehab   - ABP742 - Bus-Master EISA (240 CDB)
42cb322408SMauro Carvalho Chehab   - ABP842 - Bus-Master VL (240 CDB)
43cb322408SMauro Carvalho Chehab   - ABP940 - Bus-Master PCI (240 CDB)
44cb322408SMauro Carvalho Chehab   - ABP940U - Bus-Master PCI Ultra (240 CDB)
45cb322408SMauro Carvalho Chehab   - ABP940UA/3940UA - Bus-Master PCI Ultra (240 CDB)
46cb322408SMauro Carvalho Chehab   - ABP970 - Bus-Master PCI MAC/PC (240 CDB)
47cb322408SMauro Carvalho Chehab   - ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
48cb322408SMauro Carvalho Chehab   - ABP3960UA - Bus-Master PCI MAC/PC Ultra (240 CDB)
49cb322408SMauro Carvalho Chehab   - ABP940UW/3940UW - Bus-Master PCI Ultra-Wide (253 CDB)
50cb322408SMauro Carvalho Chehab   - ABP970UW - Bus-Master PCI MAC/PC Ultra-Wide (253 CDB)
51cb322408SMauro Carvalho Chehab   - ABP3940U2W - Bus-Master PCI LVD/Ultra2-Wide (253 CDB)
52cb322408SMauro Carvalho Chehab
53cb322408SMauro Carvalho ChehabMulti-Channel Products:
54cb322408SMauro Carvalho Chehab   - ABP752 - Dual Channel Bus-Master EISA (240 CDB Per Channel)
55cb322408SMauro Carvalho Chehab   - ABP852 - Dual Channel Bus-Master VL (240 CDB Per Channel)
56cb322408SMauro Carvalho Chehab   - ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
57cb322408SMauro Carvalho Chehab   - ABP950UW - Dual Channel Bus-Master PCI Ultra-Wide (253 CDB Per Channel)
58cb322408SMauro Carvalho Chehab   - ABP980 - Four Channel Bus-Master PCI (240 CDB Per Channel)
59cb322408SMauro Carvalho Chehab   - ABP980U - Four Channel Bus-Master PCI Ultra (240 CDB Per Channel)
60cb322408SMauro Carvalho Chehab   - ABP980UA/3980UA - Four Channel Bus-Master PCI Ultra (16 CDB Per Chan.)
61cb322408SMauro Carvalho Chehab   - ABP3950U2W - Bus-Master PCI LVD/Ultra2-Wide and Ultra-Wide (253 CDB)
62cb322408SMauro Carvalho Chehab   - ABP3950U3W - Bus-Master PCI Dual LVD2/Ultra3-Wide (253 CDB)
63cb322408SMauro Carvalho Chehab
64cb322408SMauro Carvalho ChehabDriver Compile Time Options and Debugging
65cb322408SMauro Carvalho Chehab=========================================
66cb322408SMauro Carvalho Chehab
67cb322408SMauro Carvalho ChehabThe following constants can be defined in the source file.
68cb322408SMauro Carvalho Chehab
69cb322408SMauro Carvalho Chehab1. ADVANSYS_ASSERT - Enable driver assertions (Def: Enabled)
70cb322408SMauro Carvalho Chehab
71cb322408SMauro Carvalho Chehab   Enabling this option adds assertion logic statements to the
72cb322408SMauro Carvalho Chehab   driver. If an assertion fails a message will be displayed to
73cb322408SMauro Carvalho Chehab   the console, but the system will continue to operate. Any
74cb322408SMauro Carvalho Chehab   assertions encountered should be reported to the person
75cb322408SMauro Carvalho Chehab   responsible for the driver. Assertion statements may proactively
76cb322408SMauro Carvalho Chehab   detect problems with the driver and facilitate fixing these
77cb322408SMauro Carvalho Chehab   problems. Enabling assertions will add a small overhead to the
78cb322408SMauro Carvalho Chehab   execution of the driver.
79cb322408SMauro Carvalho Chehab
80cb322408SMauro Carvalho Chehab2. ADVANSYS_DEBUG - Enable driver debugging (Def: Disabled)
81cb322408SMauro Carvalho Chehab
82cb322408SMauro Carvalho Chehab   Enabling this option adds tracing functions to the driver and the
83cb322408SMauro Carvalho Chehab   ability to set a driver tracing level at boot time.  This option is
84cb322408SMauro Carvalho Chehab   very useful for debugging the driver, but it will add to the size
85cb322408SMauro Carvalho Chehab   of the driver execution image and add overhead to the execution of
86cb322408SMauro Carvalho Chehab   the driver.
87cb322408SMauro Carvalho Chehab
88cb322408SMauro Carvalho Chehab   The amount of debugging output can be controlled with the global
89cb322408SMauro Carvalho Chehab   variable 'asc_dbglvl'. The higher the number the more output. By
90cb322408SMauro Carvalho Chehab   default the debug level is 0.
91cb322408SMauro Carvalho Chehab
92cb322408SMauro Carvalho Chehab   If the driver is loaded at boot time and the LILO Driver Option
93cb322408SMauro Carvalho Chehab   is included in the system, the debug level can be changed by
94cb322408SMauro Carvalho Chehab   specifying a 5th (ASC_NUM_IOPORT_PROBE + 1) I/O Port. The
95cb322408SMauro Carvalho Chehab   first three hex digits of the pseudo I/O Port must be set to
96cb322408SMauro Carvalho Chehab   'deb' and the fourth hex digit specifies the debug level: 0 - F.
97cb322408SMauro Carvalho Chehab   The following command line will look for an adapter at 0x330
98cb322408SMauro Carvalho Chehab   and set the debug level to 2::
99cb322408SMauro Carvalho Chehab
100cb322408SMauro Carvalho Chehab      linux advansys=0x330,0,0,0,0xdeb2
101cb322408SMauro Carvalho Chehab
102cb322408SMauro Carvalho Chehab   If the driver is built as a loadable module this variable can be
103cb322408SMauro Carvalho Chehab   defined when the driver is loaded. The following insmod command
104cb322408SMauro Carvalho Chehab   will set the debug level to one::
105cb322408SMauro Carvalho Chehab
106cb322408SMauro Carvalho Chehab      insmod advansys.o asc_dbglvl=1
107cb322408SMauro Carvalho Chehab
108cb322408SMauro Carvalho Chehab   Debugging Message Levels:
109cb322408SMauro Carvalho Chehab
110cb322408SMauro Carvalho Chehab
111cb322408SMauro Carvalho Chehab      ==== ==================
112cb322408SMauro Carvalho Chehab      0    Errors Only
113cb322408SMauro Carvalho Chehab      1    High-Level Tracing
114cb322408SMauro Carvalho Chehab      2-N  Verbose Tracing
115cb322408SMauro Carvalho Chehab      ==== ==================
116cb322408SMauro Carvalho Chehab
117cb322408SMauro Carvalho Chehab   To enable debug output to console, please make sure that:
118cb322408SMauro Carvalho Chehab
119cb322408SMauro Carvalho Chehab   a. System and kernel logging is enabled (syslogd, klogd running).
120cb322408SMauro Carvalho Chehab   b. Kernel messages are routed to console output. Check
121cb322408SMauro Carvalho Chehab      /etc/syslog.conf for an entry similar to this::
122cb322408SMauro Carvalho Chehab
123cb322408SMauro Carvalho Chehab           kern.*                  /dev/console
124cb322408SMauro Carvalho Chehab
125cb322408SMauro Carvalho Chehab   c. klogd is started with the appropriate -c parameter
126cb322408SMauro Carvalho Chehab      (e.g. klogd -c 8)
127cb322408SMauro Carvalho Chehab
128*3010dfb0SRandy Dunlap   This will cause printk() messages to be displayed on the
129cb322408SMauro Carvalho Chehab   current console. Refer to the klogd(8) and syslogd(8) man pages
130cb322408SMauro Carvalho Chehab   for details.
131cb322408SMauro Carvalho Chehab
132cb322408SMauro Carvalho Chehab   Alternatively you can enable printk() to console with this
133cb322408SMauro Carvalho Chehab   program. However, this is not the 'official' way to do this.
134cb322408SMauro Carvalho Chehab
135cb322408SMauro Carvalho Chehab   Debug output is logged in /var/log/messages.
136cb322408SMauro Carvalho Chehab
137cb322408SMauro Carvalho Chehab   ::
138cb322408SMauro Carvalho Chehab
139cb322408SMauro Carvalho Chehab     main()
140cb322408SMauro Carvalho Chehab     {
141cb322408SMauro Carvalho Chehab             syscall(103, 7, 0, 0);
142cb322408SMauro Carvalho Chehab     }
143cb322408SMauro Carvalho Chehab
144cb322408SMauro Carvalho Chehab   Increasing LOG_BUF_LEN in kernel/printk.c to something like
145cb322408SMauro Carvalho Chehab   40960 allows more debug messages to be buffered in the kernel
146cb322408SMauro Carvalho Chehab   and written to the console or log file.
147cb322408SMauro Carvalho Chehab
148cb322408SMauro Carvalho Chehab3. ADVANSYS_STATS - Enable statistics (Def: Enabled)
149cb322408SMauro Carvalho Chehab
150cb322408SMauro Carvalho Chehab   Enabling this option adds statistics collection and display
151cb322408SMauro Carvalho Chehab   through /proc to the driver. The information is useful for
152cb322408SMauro Carvalho Chehab   monitoring driver and device performance. It will add to the
153cb322408SMauro Carvalho Chehab   size of the driver execution image and add minor overhead to
154cb322408SMauro Carvalho Chehab   the execution of the driver.
155cb322408SMauro Carvalho Chehab
156cb322408SMauro Carvalho Chehab   Statistics are maintained on a per adapter basis. Driver entry
157cb322408SMauro Carvalho Chehab   point call counts and transfer size counts are maintained.
158cb322408SMauro Carvalho Chehab   Statistics are only available for kernels greater than or equal
159cb322408SMauro Carvalho Chehab   to v1.3.0 with the CONFIG_PROC_FS (/proc) file system configured.
160cb322408SMauro Carvalho Chehab
161cb322408SMauro Carvalho Chehab   AdvanSys SCSI adapter files have the following path name format::
162cb322408SMauro Carvalho Chehab
163cb322408SMauro Carvalho Chehab      /proc/scsi/advansys/{0,1,2,3,...}
164cb322408SMauro Carvalho Chehab
165cb322408SMauro Carvalho Chehab   This information can be displayed with cat. For example::
166cb322408SMauro Carvalho Chehab
167cb322408SMauro Carvalho Chehab      cat /proc/scsi/advansys/0
168cb322408SMauro Carvalho Chehab
169cb322408SMauro Carvalho Chehab   When ADVANSYS_STATS is not defined the AdvanSys /proc files only
170cb322408SMauro Carvalho Chehab   contain adapter and device configuration information.
171cb322408SMauro Carvalho Chehab
172cb322408SMauro Carvalho ChehabDriver LILO Option
173cb322408SMauro Carvalho Chehab==================
174cb322408SMauro Carvalho Chehab
175cb322408SMauro Carvalho ChehabIf init/main.c is modified as described in the 'Directions for Adding
176cb322408SMauro Carvalho Chehabthe AdvanSys Driver to Linux' section (B.4.) above, the driver will
177cb322408SMauro Carvalho Chehabrecognize the 'advansys' LILO command line and /etc/lilo.conf option.
178cb322408SMauro Carvalho ChehabThis option can be used to either disable I/O port scanning or to limit
179cb322408SMauro Carvalho Chehabscanning to 1 - 4 I/O ports. Regardless of the option setting EISA and
180cb322408SMauro Carvalho ChehabPCI boards will still be searched for and detected. This option only
181cb322408SMauro Carvalho Chehabaffects searching for ISA and VL boards.
182cb322408SMauro Carvalho Chehab
183cb322408SMauro Carvalho ChehabExamples:
184cb322408SMauro Carvalho Chehab  1. Eliminate I/O port scanning:
185cb322408SMauro Carvalho Chehab
186cb322408SMauro Carvalho Chehab     boot::
187cb322408SMauro Carvalho Chehab
188cb322408SMauro Carvalho Chehab	linux advansys=
189cb322408SMauro Carvalho Chehab
190cb322408SMauro Carvalho Chehab     or::
191cb322408SMauro Carvalho Chehab
192cb322408SMauro Carvalho Chehab	boot: linux advansys=0x0
193cb322408SMauro Carvalho Chehab
194cb322408SMauro Carvalho Chehab  2. Limit I/O port scanning to one I/O port:
195cb322408SMauro Carvalho Chehab
196cb322408SMauro Carvalho Chehab     boot::
197cb322408SMauro Carvalho Chehab
198cb322408SMauro Carvalho Chehab	linux advansys=0x110
199cb322408SMauro Carvalho Chehab
200cb322408SMauro Carvalho Chehab  3. Limit I/O port scanning to four I/O ports:
201cb322408SMauro Carvalho Chehab
202cb322408SMauro Carvalho Chehab     boot::
203cb322408SMauro Carvalho Chehab
204cb322408SMauro Carvalho Chehab	linux advansys=0x110,0x210,0x230,0x330
205cb322408SMauro Carvalho Chehab
206cb322408SMauro Carvalho ChehabFor a loadable module the same effect can be achieved by setting
207cb322408SMauro Carvalho Chehabthe 'asc_iopflag' variable and 'asc_ioport' array when loading
208cb322408SMauro Carvalho Chehabthe driver, e.g.::
209cb322408SMauro Carvalho Chehab
210cb322408SMauro Carvalho Chehab      insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330
211cb322408SMauro Carvalho Chehab
212cb322408SMauro Carvalho ChehabIf ADVANSYS_DEBUG is defined a 5th (ASC_NUM_IOPORT_PROBE + 1)
213cb322408SMauro Carvalho ChehabI/O Port may be added to specify the driver debug level. Refer to
214cb322408SMauro Carvalho Chehabthe 'Driver Compile Time Options and Debugging' section above for
215cb322408SMauro Carvalho Chehabmore information.
216cb322408SMauro Carvalho Chehab
217cb322408SMauro Carvalho ChehabCredits (Chronological Order)
218cb322408SMauro Carvalho Chehab=============================
219cb322408SMauro Carvalho Chehab
220cb322408SMauro Carvalho ChehabBob Frey <bfrey@turbolinux.com.cn> wrote the AdvanSys SCSI driver
221cb322408SMauro Carvalho Chehaband maintained it up to 3.3F. He continues to answer questions
222cb322408SMauro Carvalho Chehaband help maintain the driver.
223cb322408SMauro Carvalho Chehab
224cb322408SMauro Carvalho ChehabNathan Hartwell <mage@cdc3.cdc.net> provided the directions and
225cb322408SMauro Carvalho Chehabbasis for the Linux v1.3.X changes which were included in the
226cb322408SMauro Carvalho Chehab1.2 release.
227cb322408SMauro Carvalho Chehab
228cb322408SMauro Carvalho ChehabThomas E Zerucha <zerucha@shell.portal.com> pointed out a bug
229cb322408SMauro Carvalho Chehabin advansys_biosparam() which was fixed in the 1.3 release.
230cb322408SMauro Carvalho Chehab
231cb322408SMauro Carvalho ChehabErik Ratcliffe <erik@caldera.com> has done testing of the
232cb322408SMauro Carvalho ChehabAdvanSys driver in the Caldera releases.
233cb322408SMauro Carvalho Chehab
234cb322408SMauro Carvalho ChehabRik van Riel <H.H.vanRiel@fys.ruu.nl> provided a patch to
235cb322408SMauro Carvalho ChehabAscWaitTixISRDone() which he found necessary to make the
236cb322408SMauro Carvalho Chehabdriver work with a SCSI-1 disk.
237cb322408SMauro Carvalho Chehab
238cb322408SMauro Carvalho ChehabMark Moran <mmoran@mmoran.com> has helped test Ultra-Wide
239cb322408SMauro Carvalho Chehabsupport in the 3.1A driver.
240cb322408SMauro Carvalho Chehab
241cb322408SMauro Carvalho ChehabDoug Gilbert <dgilbert@interlog.com> has made changes and
242cb322408SMauro Carvalho Chehabsuggestions to improve the driver and done a lot of testing.
243cb322408SMauro Carvalho Chehab
244cb322408SMauro Carvalho ChehabKen Mort <ken@mort.net> reported a DEBUG compile bug fixed
245cb322408SMauro Carvalho Chehabin 3.2K.
246cb322408SMauro Carvalho Chehab
247cb322408SMauro Carvalho ChehabTom Rini <trini@kernel.crashing.org> provided the CONFIG_ISA
248cb322408SMauro Carvalho Chehabpatch and helped with PowerPC wide and narrow board support.
249cb322408SMauro Carvalho Chehab
250cb322408SMauro Carvalho ChehabPhilip Blundell <philb@gnu.org> provided an
251cb322408SMauro Carvalho Chehabadvansys_interrupts_enabled patch.
252cb322408SMauro Carvalho Chehab
253cb322408SMauro Carvalho ChehabDave Jones <dave@denial.force9.co.uk> reported the compiler
254cb322408SMauro Carvalho Chehabwarnings generated when CONFIG_PROC_FS was not defined in
255cb322408SMauro Carvalho Chehabthe 3.2M driver.
256cb322408SMauro Carvalho Chehab
257cb322408SMauro Carvalho ChehabJerry Quinn <jlquinn@us.ibm.com> fixed PowerPC support (endian
258cb322408SMauro Carvalho Chehabproblems) for wide cards.
259cb322408SMauro Carvalho Chehab
260cb322408SMauro Carvalho ChehabBryan Henderson <bryanh@giraffe-data.com> helped debug narrow
261cb322408SMauro Carvalho Chehabcard error handling.
262cb322408SMauro Carvalho Chehab
263cb322408SMauro Carvalho ChehabManuel Veloso <veloso@pobox.com> worked hard on PowerPC narrow
264cb322408SMauro Carvalho Chehabboard support and fixed a bug in AscGetEEPConfig().
265cb322408SMauro Carvalho Chehab
266cb322408SMauro Carvalho ChehabArnaldo Carvalho de Melo <acme@conectiva.com.br> made
267cb322408SMauro Carvalho Chehabsave_flags/restore_flags changes.
268cb322408SMauro Carvalho Chehab
269cb322408SMauro Carvalho ChehabAndy Kellner <AKellner@connectcom.net> continued the Advansys SCSI
270cb322408SMauro Carvalho Chehabdriver development for ConnectCom (Version > 3.3F).
271cb322408SMauro Carvalho Chehab
272cb322408SMauro Carvalho ChehabKen Witherow for extensive testing during the development of version 3.4.
273