1.\" 2.\" Device driver optimized for the Symbios/LSI 53C896/53C895A/53C1010 3.\" PCI SCSI controllers. 4.\" 5.\" Copyright (C) 1999-2000 Gerard Roudier <groudier@club-internet.fr> 6.\" 7.\" This driver also supports the following Symbios/LSI PCI SCSI chips: 8.\" 53C810A, 53C825A, 53C860, 53C875, 53C876, 53C885, 53C895, 9.\" 53C810, 53C815, 53C825 and the 53C1510D is 53C8XX mode. 10.\" 11.\" 12.\" This driver for FreeBSD-CAM is derived from the Linux sym53c8xx driver. 13.\" Copyright (C) 1998-1999 Gerard Roudier 14.\" 15.\" The sym53c8xx driver is derived from the ncr53c8xx driver that had been 16.\" a port of the FreeBSD ncr driver to Linux-1.2.13. 17.\" 18.\" The original ncr driver has been written for 386bsd and FreeBSD by 19.\" Wolfgang Stanglmeier <wolf@cologne.de> 20.\" Stefan Esser <se@mi.Uni-Koeln.de> 21.\" Copyright (C) 1994 Wolfgang Stanglmeier 22.\" 23.\" The initialization code, and part of the code that addresses 24.\" FreeBSD-CAM services is based on the aic7xxx driver for FreeBSD-CAM 25.\" written by Justin T. Gibbs. 26.\" 27.\" Other major contributions: 28.\" 29.\" NVRAM detection and reading. 30.\" Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk> 31.\" 32.\" ---------------------------------------------------------------------------- 33.\" 34.\" Redistribution and use in source and binary forms, with or without 35.\" modification, are permitted provided that the following conditions 36.\" are met: 37.\" 1. Redistributions of source code must retain the above copyright 38.\" notice, this list of conditions and the following disclaimer. 39.\" 2. Redistributions in binary form must reproduce the above copyright 40.\" notice, this list of conditions and the following disclaimer in the 41.\" documentation and/or other materials provided with the distribution. 42.\" 3. The name of the author may not be used to endorse or promote products 43.\" derived from this software without specific prior written permission. 44.\" 45.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 46.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 47.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 48.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 49.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 50.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 51.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 52.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 53.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 54.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 55.\" SUCH DAMAGE. 56.\" 57.\" $FreeBSD$ 58.\" 59.Dd January 12, 2000 60.Dt SYM 4 61.Os 62.Sh NAME 63.Nm sym 64.Nd NCR/Symbios/LSI Logic 53C8XX PCI SCSI host adapter driver 65.Sh SYNOPSIS 66For any number of cards: 67.Cd device sym 68.Pp 69To disable PCI parity checking (needed for broken bridges) 70.Cd options SYM_SETUP_PCI_PARITY=<boolean> 71.Pp 72To control driver probing against HVD buses 73.Cd options SYM_SETUP_SCSI_DIFF=<bit combination> 74.Pp 75To control chip attachment balancing between the ncr driver and this driver 76.Cd options SYM_SETUP_LP_PROBE_MAP=<bit combination> 77.Sh DESCRIPTION 78This driver provides support for the following Symbios/LSI Logic 79PCI SCSI controllers: 80.Pp 81.Bl -bullet -compact 82.It 83.Tn 53C810 84.It 85.Tn 53C810A 86.It 87.Tn 53C815 88.It 89.Tn 53C825 90.It 91.Tn 53C825A 92.It 93.Tn 53C860 94.It 95.Tn 53C875 96.It 97.Tn 53C876 98.It 99.Tn 53C895 100.It 101.Tn 53C895A 102.It 103.Tn 53C896 104.It 105.Tn 53C897 106.It 107.Tn 53C1000 108.It 109.Tn 53C1000R 110.It 111.Tn 53C1010-33 112.It 113.Tn 53C1010-66 114.It 115.Tn 53C1510D 116.El 117.Pp 118The SCSI controllers can be either embedded on a motherboard, or on 119one of the following add-on boards: 120.Pp 121.Bl -bullet -compact 122.It 123ASUS SC-200, SC-896 124.It 125Data Technology DTC3130 (all variants) 126.It 127DawiControl DC2976UW 128.It 129Diamond FirePort (all) 130.It 131I-O DATA SC-UPCI (PC-98) 132.It 133Logitec LHA-521UA (PC-98) 134.It 135NCR cards (all) 136.It 137Symbios cards (all) 138.It 139Tekram DC390W, 390U, 390F, 390U2B, 390U2W, 390U3D, and 390U3W 140.It 141Tyan S1365 142.El 143.Pp 144Driver features include support for wide SCSI busses and fast10, fast20, 145fast40 and fast80-dt synchronous data transfers depending on controller 146capabilities. 147It also provides generic SCSI features such as tagged command 148queueing and auto-request sense. 149This driver is configured by default 150for a maximum of 446 outstanding commands per bus, 8 LUNs per target 151and 64 tagged tasks per LUN. 152These numbers are not so much limited by design 153as they are considered reasonable values for current SCSI technology. 154These values can be increased by changing appropriate 155constants in driver header files (not recommended). 156.Pp 157This driver supports the entire Symbios 53C8XX family of PCI SCSI 158controllers. 159It also offers the advantage of architectural improvements available 160only with newer chips. 161.Pp 162.Nm 163notably handles phase mismatch from SCRIPTS for the 53C896, 53C895A, 164and 53C1010 cores. 165As a result, it guarantees that no more than 1 interrupt 166per IO completion is delivered to the CPU, and that the SCRIPTS processor 167is never stalled waiting for CPU attention in normal situations. 168.Pp 169.Nm 170also uses LOAD/STORE SCRIPTS instructions for chips that support it. 171Only the early 810, 815 and 825 NCR chips do not support LOAD/STORE. 172Use of LOAD/STORE instead of MEMORY MOVE allows SCRIPTS to access IO 173registers internal to the chip (no external PCI cycles). 174As a result, the driver guarantees that no PCI self-mastering will occur 175for chips that support LOAD/STORE. 176.Pp 177LOAD/STORE instructions are also faster than MEMORY MOVE because 178they do not involve the chip DMA FIFO and are coded on 2 DWORDs 179instead of 3. 180.Pp 181For the early NCR 810, 815 and 825 chips, the driver uses a separate 182SCRIPTS set that uses MEMORY MOVE instructions for data movements. 183This is because LOAD/STORE are not supported by these chips. 184.Pp 185HVD/LVD capable controllers (895, 895A, 896, and 897) report 186the actual bus mode in the STEST4 chip IO registers. 187This feature 188allows the driver to safely probe against bus mode and to set up the chip 189accordingly. 190By default the driver only supports HVD for these chips. 191For other chips that can support HVD but not LVD, the driver has to probe 192implementation dependent registers (GPIO) in order to detect HVD bus mode. 193Only HVD implementations that conform with Symbios Logic recommendations can 194be detected by the driver. 195When the 196.Ar SYM_SETUP_SCSI_DIFF 197kernel option is assigned 198a value of 1, the driver will also probe against HVD for 825a, 875, 876 and 199885 chips, assuming Symbios Logic compatible implementation of HVD. 200.Pp 201When the 202.Ar SYM_SETUP_PCI_PARITY 203is assigned a value of 0, the 204driver will not enable PCI parity checking for 53C8XX devices. 205PCI parity 206checking should not be an option for PCI SCSI controllers, but some 207systems have been reported to fail using 53C8XX chips, due to spurious or 208permanent PCI parity errors detected. 209This option is supplied for 210convenience but it is neither recommended nor supported. 211.Pp 212The generic 213.Xr ncr 4 214driver also supports SYM53C8XX based PCI SCSI controllers, 215except for the SYM53C1010, which is only supported by the 216.Nm 217driver. 218.Pp 219By default, when both the 220.Xr ncr 4 221and 222.Nm 223drivers are configured, the 224.Nm 225driver takes precedence over the 226.Xr ncr 4 227driver. 228The user can indicate a balancing of chip types between the two drivers 229by defining the 230.Ar SYM_SETUP_LP_PROBE_MAP 231kernel configuration option as follows: 232.Bl -column "0x40" 233.It Em "Bit Devices to be attached by ncr instead" 234.It "0x01 53C810a, 53C860" 235.It "0x02 53C825a, 53C875, 53C876, 53C885, 53C895" 236.It "0x04 53C895a, 53C896, 53C897, 53C1510d" 237.It "0x40 53C810, 53C815, 53C825" 238.El 239.Pp 240For example, if 241.Ar SYM_SETUP_LP_PROBE_MAP 242is supplied with the value 0x41, the 243.Xr ncr 4 244driver will attach to 53C810, 53C815, 53C825, 53C810a, and 53C860 based 245controllers, 246and the 247.Nm 248driver will attach to all other 53C8XX based controllers. 249.Pp 250When only the 251.Nm 252driver is configured, the 253.Ar SYM_SETUP_LP_PROBE_MAP 254option has no effect. 255Thus, in this case, the 256.Nm 257driver will attach all 53C8XX based controllers present in the system. 258.Pp 259This driver offers other options 260that are not currently exported to the user. 261They are defined and documented in the 262.Pa sym_conf.h 263driver file. 264Changing these options is not recommended unless absolutely necessary. 265Some of these 266options are planned to be exported through 267.Xr sysctl 3 268or an equivalent mechanism 269in a future driver releases and therefore, 270no compatibility is guaranteed. 271.Pp 272At initialization, the driver tries to detect and read user settings from 273controller NVRAM. 274The Symbios/Logic NVRAM layout and the Tekram NVRAM 275layout are currently supported. 276If the reading of the NVRAM succeeds, the 277following settings are taken into account and reported to CAM: 278.Pp 279.Bl -column "SCSI parity checking" "Symbios" 280.It Em "Host settings Symbios Tekram" 281.It "SCSI parity checking Y N" 282.It "Host SCSI ident Y Y" 283.It "Verbose messages Y N" 284.It "Scan targets hi-lo Y N" 285.It "Avoid SCSI bus reset Y N" 286.El 287.Bl -column "Synchronous period" "Symbios" 288.It Em "Device settings Symbios Tekram" 289.It "Synchronous period Y Y" 290.It "SCSI bus width Y Y" 291.It "Queue tag enable Y Y" 292.It "Number of tags NA Y" 293.It "Disconnect enable Y Y" 294.It "Scan at boot time Y N" 295.It "Scan LUN Y N" 296.El 297.Pp 298Devices that are configured as disabled for 'scan' in the NVRAM are not 299reported to CAM at system start-up. 300They can be discovered later using 301the 302.Ql camcontrol rescan 303command. 304.Pp 305The table below summarizes the main features and capabilities of the 306NCR/Symbios/LSI Logic 53C8XX family of PCI SCSI controllers. 307.Pp 308.Bl -column sym53c1510d "80MHz" "Width" "SRAM" "PCI64" 309.It Em "Chip Sync Width SRAM PCI64 Supported" 310.It "sym53c810 10MHz 8Bit N N Y" 311.It "sym53c810a 10MHz 8Bit N N Y" 312.It "sym53c815 10MHz 8Bit N N Y" 313.It "sym53c825 10MHz 16Bit N N Y" 314.It "sym53c825a 10MHz 16Bit 4KB N Y" 315.It "sym53c860 20MHz 8Bit N N Y" 316.It "sym53c875 20MHz 16Bit 4KB N Y" 317.It "sym53c876 20MHz 16Bit 4KB N Y" 318.It "sym53c885 20MHz 16Bit 4KB N Y" 319.It "sym53c895 40MHz 16Bit 4KB N Y" 320.It "sym53c895A 40MHz 16Bit 8KB N Y" 321.It "sym53c896 40MHz 16Bit 8KB Y Y" 322.It "sym53c897 40MHz 16Bit 8KB Y Y" 323.It "sym53c1510D 40MHz 16Bit 4KB Y Y" 324.It "sym53c1010 80MHz 16Bit 8KB Y Y" 325.El 326.Sh MISC 327The DEC KZPCA-AA is a rebadged SYM8952U. 328.Sh BUGS 329No known bugs. 330.Sh SEE ALSO 331.Xr cd 4 , 332.Xr da 4 , 333.Xr ncr 4 , 334.Xr sa 4 , 335.Xr scsi 4 , 336.Xr camcontrol 8 337.Sh AUTHORS 338.An -nosplit 339The 340.Nm 341driver was written by 342.An Gerard Roudier 343and is derived from the 344Linux sym53c8xx driver from the same author. 345The sym53c8xx driver is derived from the ncr53c8xx driver, 346which was ported from the 347.Fx 348.Xr ncr 4 349driver to Linux-1.2.13. 350The original 351.Xr ncr 4 352driver was written for 353.Bx 386 354and 355.Fx 356by 357.An Wolfgang Stanglmeier 358and 359.An Stefan Esser . 360.Sh HISTORY 361The 362.Nm 363driver appeared in 364.Fx 4.0 . 365