2000-01-23 12:25:19 +00:00
|
|
|
.\"
|
|
|
|
.\" Device driver optimized for the Symbios/LSI 53C896/53C895A/53C1010
|
2000-05-28 12:59:18 +00:00
|
|
|
.\" PCI SCSI controllers.
|
2000-01-23 12:25:19 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (C) 1999-2000 Gerard Roudier <groudier@club-internet.fr>
|
|
|
|
.\"
|
2000-05-28 12:59:18 +00:00
|
|
|
.\" This driver also supports the following Symbios/LSI PCI SCSI chips:
|
|
|
|
.\" 53C810A, 53C825A, 53C860, 53C875, 53C876, 53C885, 53C895,
|
|
|
|
.\" 53C810, 53C815, 53C825 and the 53C1510D is 53C8XX mode.
|
2000-01-23 12:25:19 +00:00
|
|
|
.\"
|
|
|
|
.\"
|
|
|
|
.\" This driver for FreeBSD-CAM is derived from the Linux sym53c8xx driver.
|
|
|
|
.\" Copyright (C) 1998-1999 Gerard Roudier
|
|
|
|
.\"
|
|
|
|
.\" The sym53c8xx driver is derived from the ncr53c8xx driver that had been
|
|
|
|
.\" a port of the FreeBSD ncr driver to Linux-1.2.13.
|
|
|
|
.\"
|
|
|
|
.\" The original ncr driver has been written for 386bsd and FreeBSD by
|
|
|
|
.\" Wolfgang Stanglmeier <wolf@cologne.de>
|
|
|
|
.\" Stefan Esser <se@mi.Uni-Koeln.de>
|
|
|
|
.\" Copyright (C) 1994 Wolfgang Stanglmeier
|
|
|
|
.\"
|
|
|
|
.\" The initialization code, and part of the code that addresses
|
|
|
|
.\" FreeBSD-CAM services is based on the aic7xxx driver for FreeBSD-CAM
|
|
|
|
.\" written by Justin T. Gibbs.
|
|
|
|
.\"
|
|
|
|
.\" Other major contributions:
|
|
|
|
.\"
|
|
|
|
.\" NVRAM detection and reading.
|
|
|
|
.\" Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
|
|
|
|
.\"
|
|
|
|
.\" ----------------------------------------------------------------------------
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\" 3. The name of the author may not be used to endorse or promote products
|
|
|
|
.\" derived from this software without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
|
|
|
|
.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
.\" SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
|
|
|
.Dd January 12, 2000
|
2001-02-20 11:07:27 +00:00
|
|
|
.Dt SYM 4
|
2001-07-10 15:31:11 +00:00
|
|
|
.Os
|
2000-01-23 12:25:19 +00:00
|
|
|
.Sh NAME
|
|
|
|
.Nm sym
|
2000-05-28 12:59:18 +00:00
|
|
|
.Nd NCR/Symbios/LSI Logic 53C8XX PCI SCSI host adapter driver
|
2000-01-23 12:25:19 +00:00
|
|
|
.Sh SYNOPSIS
|
|
|
|
For any number of cards:
|
2000-01-23 17:00:18 +00:00
|
|
|
.Cd device sym
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
|
|
|
To disable PCI parity checking (needed for broken bridges)
|
|
|
|
.Cd options SYM_SETUP_PCI_PARITY=<boolean>
|
|
|
|
.Pp
|
|
|
|
To control driver probing against HVD buses
|
|
|
|
.Cd options SYM_SETUP_SCSI_DIFF=<bit combination>
|
|
|
|
.Pp
|
|
|
|
To control chip attachment balancing between the ncr driver and this driver
|
|
|
|
.Cd options SYM_SETUP_LP_PROBE_MAP=<bit combination>
|
|
|
|
.Sh DESCRIPTION
|
2003-11-09 14:58:28 +00:00
|
|
|
This driver provides support for the following Symbios/LSI Logic
|
|
|
|
PCI SCSI controllers:
|
|
|
|
.Pp
|
|
|
|
.Bl -bullet -compact
|
|
|
|
.It
|
|
|
|
.Tn 53C810
|
|
|
|
.It
|
|
|
|
.Tn 53C810A
|
|
|
|
.It
|
|
|
|
.Tn 53C815
|
|
|
|
.It
|
|
|
|
.Tn 53C825
|
|
|
|
.It
|
|
|
|
.Tn 53C825A
|
|
|
|
.It
|
|
|
|
.Tn 53C860
|
|
|
|
.It
|
|
|
|
.Tn 53C875
|
|
|
|
.It
|
|
|
|
.Tn 53C876
|
|
|
|
.It
|
|
|
|
.Tn 53C895
|
|
|
|
.It
|
|
|
|
.Tn 53C895A
|
|
|
|
.It
|
|
|
|
.Tn 53C896
|
|
|
|
.It
|
|
|
|
.Tn 53C897
|
|
|
|
.It
|
|
|
|
.Tn 53C1000
|
|
|
|
.It
|
|
|
|
.Tn 53C1000R
|
|
|
|
.It
|
|
|
|
.Tn 53C1010-33
|
|
|
|
.It
|
|
|
|
.Tn 53C1010-66
|
|
|
|
.It
|
|
|
|
.Tn 53C1510D
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The SCSI controllers can be either embedded on a motherboard, or on
|
|
|
|
one of the following add-on boards:
|
|
|
|
.Pp
|
|
|
|
.Bl -bullet -compact
|
|
|
|
.It
|
|
|
|
ASUS SC-200, SC-896
|
|
|
|
.It
|
|
|
|
Data Technology DTC3130 (all variants)
|
|
|
|
.It
|
|
|
|
DawiControl DC2976UW
|
|
|
|
.It
|
|
|
|
Diamond FirePort (all)
|
|
|
|
.It
|
2003-11-09 22:36:04 +00:00
|
|
|
I-O DATA SC-UPCI (PC-98)
|
|
|
|
.It
|
|
|
|
Logitec LHA-521UA (PC-98)
|
|
|
|
.It
|
2003-11-09 14:58:28 +00:00
|
|
|
NCR cards (all)
|
|
|
|
.It
|
|
|
|
Symbios cards (all)
|
|
|
|
.It
|
|
|
|
Tekram DC390W, 390U, 390F, 390U2B, 390U2W, 390U3D, and 390U3W
|
|
|
|
.It
|
|
|
|
Tyan S1365
|
|
|
|
.El
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
2000-06-04 14:58:40 +00:00
|
|
|
Driver features include support for wide SCSI busses and fast10, fast20,
|
2000-01-23 12:25:19 +00:00
|
|
|
fast40 and fast80-dt synchronous data transfers depending on controller
|
2000-03-03 14:05:08 +00:00
|
|
|
capabilities.
|
2000-06-04 14:58:40 +00:00
|
|
|
It also provides generic SCSI features such as tagged command
|
2001-08-25 21:58:58 +00:00
|
|
|
queueing and auto-request sense.
|
2000-03-03 14:05:08 +00:00
|
|
|
This driver is configured by default
|
2000-01-23 12:25:19 +00:00
|
|
|
for a maximum of 446 outstanding commands per bus, 8 LUNs per target
|
2000-03-03 14:05:08 +00:00
|
|
|
and 64 tagged tasks per LUN.
|
2000-06-04 14:58:40 +00:00
|
|
|
These numbers are not so much limited by design
|
|
|
|
as they are considered reasonable values for current SCSI technology.
|
2000-01-23 12:25:19 +00:00
|
|
|
These values can be increased by changing appropriate
|
|
|
|
constants in driver header files (not recommended).
|
|
|
|
.Pp
|
2000-05-28 12:59:18 +00:00
|
|
|
This driver supports the entire Symbios 53C8XX family of PCI SCSI
|
|
|
|
controllers.
|
|
|
|
It also offers the advantage of architectural improvements available
|
|
|
|
only with newer chips.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
|
|
|
.Nm
|
2000-05-28 12:59:18 +00:00
|
|
|
notably handles phase mismatch from SCRIPTS for the 53C896, 53C895A,
|
|
|
|
and 53C1010 cores.
|
|
|
|
As a result, it guarantees that no more than 1 interrupt
|
|
|
|
per IO completion is delivered to the CPU, and that the SCRIPTS processor
|
|
|
|
is never stalled waiting for CPU attention in normal situations.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
|
|
|
.Nm
|
2000-05-28 12:59:18 +00:00
|
|
|
also uses LOAD/STORE SCRIPTS instructions for chips that support it.
|
|
|
|
Only the early 810, 815 and 825 NCR chips do not support LOAD/STORE.
|
|
|
|
Use of LOAD/STORE instead of MEMORY MOVE allows SCRIPTS to access IO
|
2000-06-04 14:58:40 +00:00
|
|
|
registers internal to the chip (no external PCI cycles).
|
2000-05-28 12:59:18 +00:00
|
|
|
As a result, the driver guarantees that no PCI self-mastering will occur
|
|
|
|
for chips that support LOAD/STORE.
|
|
|
|
.Pp
|
|
|
|
LOAD/STORE instructions are also faster than MEMORY MOVE because
|
2000-06-04 14:58:40 +00:00
|
|
|
they do not involve the chip DMA FIFO and are coded on 2 DWORDs
|
2000-05-28 12:59:18 +00:00
|
|
|
instead of 3.
|
|
|
|
.Pp
|
|
|
|
For the early NCR 810, 815 and 825 chips, the driver uses a separate
|
|
|
|
SCRIPTS set that uses MEMORY MOVE instructions for data movements.
|
|
|
|
This is because LOAD/STORE are not supported by these chips.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
2000-06-04 14:58:40 +00:00
|
|
|
HVD/LVD capable controllers (895, 895A, 896, and 897) report
|
|
|
|
the actual bus mode in the STEST4 chip IO registers.
|
2000-03-03 14:05:08 +00:00
|
|
|
This feature
|
2000-06-04 14:58:40 +00:00
|
|
|
allows the driver to safely probe against bus mode and to set up the chip
|
2000-03-03 14:05:08 +00:00
|
|
|
accordingly.
|
|
|
|
By default the driver only supports HVD for these chips.
|
2000-01-23 12:25:19 +00:00
|
|
|
For other chips that can support HVD but not LVD, the driver has to probe
|
|
|
|
implementation dependent registers (GPIO) in order to detect HVD bus mode.
|
2000-06-04 14:58:40 +00:00
|
|
|
Only HVD implementations that conform with Symbios Logic recommendations can
|
2000-03-03 14:05:08 +00:00
|
|
|
be detected by the driver.
|
|
|
|
When the
|
2000-01-23 12:25:19 +00:00
|
|
|
.Ar SYM_SETUP_SCSI_DIFF
|
2000-06-04 14:58:40 +00:00
|
|
|
kernel option is assigned
|
|
|
|
a value of 1, the driver will also probe against HVD for 825a, 875, 876 and
|
2000-01-23 12:25:19 +00:00
|
|
|
885 chips, assuming Symbios Logic compatible implementation of HVD.
|
|
|
|
.Pp
|
2000-06-04 14:58:40 +00:00
|
|
|
When the
|
2000-01-23 12:25:19 +00:00
|
|
|
.Ar SYM_SETUP_PCI_PARITY
|
2000-06-04 14:58:40 +00:00
|
|
|
is assigned a value of 0, the
|
|
|
|
driver will not enable PCI parity checking for 53C8XX devices.
|
2000-03-03 14:05:08 +00:00
|
|
|
PCI parity
|
2000-05-28 12:59:18 +00:00
|
|
|
checking should not be an option for PCI SCSI controllers, but some
|
2000-06-04 14:58:40 +00:00
|
|
|
systems have been reported to fail using 53C8XX chips, due to spurious or
|
2000-03-03 14:05:08 +00:00
|
|
|
permanent PCI parity errors detected.
|
|
|
|
This option is supplied for
|
2000-06-04 14:58:40 +00:00
|
|
|
convenience but it is neither recommended nor supported.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
2000-05-28 12:59:18 +00:00
|
|
|
The generic
|
2000-06-04 14:58:40 +00:00
|
|
|
.Xr ncr 4
|
2000-05-28 12:59:18 +00:00
|
|
|
driver also supports SYM53C8XX based PCI SCSI controllers,
|
2000-06-04 14:58:40 +00:00
|
|
|
except for the SYM53C1010, which is only supported by the
|
2000-05-28 12:59:18 +00:00
|
|
|
.Nm
|
|
|
|
driver.
|
|
|
|
.Pp
|
|
|
|
By default, when both the
|
2000-06-04 14:58:40 +00:00
|
|
|
.Xr ncr 4
|
2000-05-28 12:59:18 +00:00
|
|
|
and
|
|
|
|
.Nm
|
|
|
|
drivers are configured, the
|
|
|
|
.Nm
|
|
|
|
driver takes precedence over the
|
2000-06-04 14:58:40 +00:00
|
|
|
.Xr ncr 4
|
2000-05-28 12:59:18 +00:00
|
|
|
driver.
|
2000-06-04 14:58:40 +00:00
|
|
|
The user can indicate a balancing of chip types between the two drivers
|
2000-05-28 12:59:18 +00:00
|
|
|
by defining the
|
|
|
|
.Ar SYM_SETUP_LP_PROBE_MAP
|
|
|
|
kernel configuration option as follows:
|
2000-12-29 09:18:45 +00:00
|
|
|
.Bl -column "0x40"
|
|
|
|
.It Em "Bit Devices to be attached by ncr instead"
|
|
|
|
.It "0x01 53C810a, 53C860"
|
|
|
|
.It "0x02 53C825a, 53C875, 53C876, 53C885, 53C895"
|
|
|
|
.It "0x04 53C895a, 53C896, 53C897, 53C1510d"
|
|
|
|
.It "0x40 53C810, 53C815, 53C825"
|
2000-05-28 12:59:18 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
For example, if
|
|
|
|
.Ar SYM_SETUP_LP_PROBE_MAP
|
2000-06-04 14:58:40 +00:00
|
|
|
is supplied with the value 0x41, the
|
|
|
|
.Xr ncr 4
|
2000-05-28 12:59:18 +00:00
|
|
|
driver will attach to 53C810, 53C815, 53C825, 53C810a, and 53C860 based
|
2000-06-04 14:58:40 +00:00
|
|
|
controllers,
|
|
|
|
and the
|
2000-05-28 12:59:18 +00:00
|
|
|
.Nm
|
|
|
|
driver will attach to all other 53C8XX based controllers.
|
|
|
|
.Pp
|
|
|
|
When only the
|
|
|
|
.Nm
|
|
|
|
driver is configured, the
|
|
|
|
.Ar SYM_SETUP_LP_PROBE_MAP
|
|
|
|
option has no effect.
|
2000-06-04 14:58:40 +00:00
|
|
|
Thus, in this case, the
|
2000-05-28 12:59:18 +00:00
|
|
|
.Nm
|
|
|
|
driver will attach all 53C8XX based controllers present in the system.
|
|
|
|
.Pp
|
2000-06-04 14:58:40 +00:00
|
|
|
This driver offers other options
|
|
|
|
that are not currently exported to the user.
|
|
|
|
They are defined and documented in the
|
|
|
|
.Pa sym_conf.h
|
|
|
|
driver file.
|
|
|
|
Changing these options is not recommended unless absolutely necessary.
|
2000-03-03 14:05:08 +00:00
|
|
|
Some of these
|
2000-06-04 14:58:40 +00:00
|
|
|
options are planned to be exported through
|
|
|
|
.Xr sysctl 3
|
|
|
|
or an equivalent mechanism
|
|
|
|
in a future driver releases and therefore,
|
|
|
|
no compatibility is guaranteed.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
|
|
|
At initialization, the driver tries to detect and read user settings from
|
2000-03-03 14:05:08 +00:00
|
|
|
controller NVRAM.
|
|
|
|
The Symbios/Logic NVRAM layout and the Tekram NVRAM
|
|
|
|
layout are currently supported.
|
|
|
|
If the reading of the NVRAM succeeds, the
|
2000-01-23 12:25:19 +00:00
|
|
|
following settings are taken into account and reported to CAM:
|
|
|
|
.Pp
|
2000-12-29 09:18:45 +00:00
|
|
|
.Bl -column "SCSI parity checking" "Symbios"
|
|
|
|
.It Em "Host settings Symbios Tekram"
|
|
|
|
.It "SCSI parity checking Y N"
|
|
|
|
.It "Host SCSI ident Y Y"
|
|
|
|
.It "Verbose messages Y N"
|
|
|
|
.It "Scan targets hi-lo Y N"
|
|
|
|
.It "Avoid SCSI bus reset Y N"
|
2000-01-23 12:25:19 +00:00
|
|
|
.El
|
2000-12-29 09:18:45 +00:00
|
|
|
.Bl -column "Synchronous period" "Symbios"
|
|
|
|
.It Em "Device settings Symbios Tekram"
|
|
|
|
.It "Synchronous period Y Y"
|
|
|
|
.It "SCSI bus width Y Y"
|
|
|
|
.It "Queue tag enable Y Y"
|
|
|
|
.It "Number of tags NA Y"
|
|
|
|
.It "Disconnect enable Y Y"
|
|
|
|
.It "Scan at boot time Y N"
|
|
|
|
.It "Scan LUN Y N"
|
2000-01-23 12:25:19 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
Devices that are configured as disabled for 'scan' in the NVRAM are not
|
2000-03-03 14:05:08 +00:00
|
|
|
reported to CAM at system start-up.
|
|
|
|
They can be discovered later using
|
2000-01-23 12:25:19 +00:00
|
|
|
the
|
2000-06-04 14:58:40 +00:00
|
|
|
.Ql camcontrol rescan
|
2000-01-23 12:25:19 +00:00
|
|
|
command.
|
|
|
|
.Pp
|
|
|
|
The table below summarizes the main features and capabilities of the
|
2000-05-28 12:59:18 +00:00
|
|
|
NCR/Symbios/LSI Logic 53C8XX family of PCI SCSI controllers.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Pp
|
2000-12-29 09:18:45 +00:00
|
|
|
.Bl -column sym53c1510d "80MHz" "Width" "SRAM" "PCI64"
|
|
|
|
.It Em "Chip Sync Width SRAM PCI64 Supported"
|
|
|
|
.It "sym53c810 10MHz 8Bit N N Y"
|
|
|
|
.It "sym53c810a 10MHz 8Bit N N Y"
|
|
|
|
.It "sym53c815 10MHz 8Bit N N Y"
|
|
|
|
.It "sym53c825 10MHz 16Bit N N Y"
|
|
|
|
.It "sym53c825a 10MHz 16Bit 4KB N Y"
|
|
|
|
.It "sym53c860 20MHz 8Bit N N Y"
|
|
|
|
.It "sym53c875 20MHz 16Bit 4KB N Y"
|
|
|
|
.It "sym53c876 20MHz 16Bit 4KB N Y"
|
|
|
|
.It "sym53c885 20MHz 16Bit 4KB N Y"
|
|
|
|
.It "sym53c895 40MHz 16Bit 4KB N Y"
|
|
|
|
.It "sym53c895A 40MHz 16Bit 8KB N Y"
|
|
|
|
.It "sym53c896 40MHz 16Bit 8KB Y Y"
|
|
|
|
.It "sym53c897 40MHz 16Bit 8KB Y Y"
|
|
|
|
.It "sym53c1510D 40MHz 16Bit 4KB Y Y"
|
|
|
|
.It "sym53c1010 80MHz 16Bit 8KB Y Y"
|
2000-01-23 12:25:19 +00:00
|
|
|
.El
|
2003-04-20 22:13:50 +00:00
|
|
|
.Sh MISC
|
|
|
|
The DEC KZPCA-AA is a rebadged SYM8952U.
|
2000-01-23 12:25:19 +00:00
|
|
|
.Sh BUGS
|
|
|
|
No known bugs.
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr cd 4 ,
|
|
|
|
.Xr da 4 ,
|
|
|
|
.Xr ncr 4 ,
|
|
|
|
.Xr sa 4 ,
|
|
|
|
.Xr scsi 4 ,
|
|
|
|
.Xr camcontrol 8
|
|
|
|
.Sh AUTHORS
|
2000-11-22 09:35:58 +00:00
|
|
|
.An -nosplit
|
2000-01-23 12:25:19 +00:00
|
|
|
The
|
|
|
|
.Nm
|
2000-06-04 14:58:40 +00:00
|
|
|
driver was written by
|
|
|
|
.An Gerard Roudier
|
|
|
|
and is derived from the
|
2000-01-23 12:25:19 +00:00
|
|
|
Linux sym53c8xx driver from the same author.
|
2000-06-04 14:58:40 +00:00
|
|
|
The sym53c8xx driver is derived from the ncr53c8xx driver,
|
|
|
|
which was ported from the
|
2000-01-23 12:25:19 +00:00
|
|
|
.Fx
|
2000-06-04 14:58:40 +00:00
|
|
|
.Xr ncr 4
|
2000-01-23 12:25:19 +00:00
|
|
|
driver to Linux-1.2.13.
|
|
|
|
The original
|
2000-06-04 14:58:40 +00:00
|
|
|
.Xr ncr 4
|
2001-08-14 10:01:54 +00:00
|
|
|
driver was written for
|
|
|
|
.Bx 386
|
|
|
|
and
|
2000-01-23 12:25:19 +00:00
|
|
|
.Fx
|
2000-06-04 14:58:40 +00:00
|
|
|
by
|
|
|
|
.An Wolfgang Stanglmeier
|
|
|
|
and
|
|
|
|
.An Stefan Esser .
|
2000-01-23 12:25:19 +00:00
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
driver appeared in
|
|
|
|
.Fx 4.0 .
|