sym_hipd.c (105215) | sym_hipd.c (108470) |
---|---|
1/* 2 * Device driver optimized for the Symbios/LSI 53C896/53C895A/53C1010 3 * PCI-SCSI controllers. 4 * 5 * Copyright (C) 1999-2001 Gerard Roudier <groudier@free.fr> 6 * 7 * This driver also supports the following Symbios/LSI PCI-SCSI chips: 8 * 53C810A, 53C825A, 53C860, 53C875, 53C876, 53C885, 53C895, --- 41 unchanged lines hidden (view full) --- 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 | 1/* 2 * Device driver optimized for the Symbios/LSI 53C896/53C895A/53C1010 3 * PCI-SCSI controllers. 4 * 5 * Copyright (C) 1999-2001 Gerard Roudier <groudier@free.fr> 6 * 7 * This driver also supports the following Symbios/LSI PCI-SCSI chips: 8 * 53C810A, 53C825A, 53C860, 53C875, 53C876, 53C885, 53C895, --- 41 unchanged lines hidden (view full) --- 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 |
58/* $FreeBSD: head/sys/dev/sym/sym_hipd.c 105215 2002-10-16 08:48:39Z phk $ */ | 58/* $FreeBSD: head/sys/dev/sym/sym_hipd.c 108470 2002-12-30 21:18:15Z schweikh $ */ |
59 60#define SYM_DRIVER_NAME "sym-1.6.5-20000902" 61 62/* #define SYM_DEBUG_GENERIC_SUPPORT */ 63/* #define CAM_NEW_TRAN_CODE */ 64 65#include <sys/param.h> 66 --- 3956 unchanged lines hidden (view full) --- 4023 * SIST or DSTAT. Since the chip starts stacking once the 4024 * SIP or DIP flag is set, there is a small window of time 4025 * where the stacking does not occur. 4026 * 4027 * Typically, multiple interrupt conditions may happen in 4028 * the following situations: 4029 * 4030 * - SCSI parity error + Phase mismatch (PAR|MA) | 59 60#define SYM_DRIVER_NAME "sym-1.6.5-20000902" 61 62/* #define SYM_DEBUG_GENERIC_SUPPORT */ 63/* #define CAM_NEW_TRAN_CODE */ 64 65#include <sys/param.h> 66 --- 3956 unchanged lines hidden (view full) --- 4023 * SIST or DSTAT. Since the chip starts stacking once the 4024 * SIP or DIP flag is set, there is a small window of time 4025 * where the stacking does not occur. 4026 * 4027 * Typically, multiple interrupt conditions may happen in 4028 * the following situations: 4029 * 4030 * - SCSI parity error + Phase mismatch (PAR|MA) |
4031 * When an parity error is detected in input phase | 4031 * When a parity error is detected in input phase |
4032 * and the device switches to msg-in phase inside a 4033 * block MOV. 4034 * - SCSI parity error + Unexpected disconnect (PAR|UDC) 4035 * When a stupid device does not want to handle the 4036 * recovery of an SCSI parity error. 4037 * - Some combinations of STO, PAR, UDC, ... 4038 * When using non compliant SCSI stuff, when user is 4039 * doing non compliant hot tampering on the BUS, when --- 2073 unchanged lines hidden (view full) --- 6113 /* 6114 * Wide request message received. 6115 */ 6116 if (DEBUG_FLAGS & DEBUG_NEGO) { 6117 sym_print_msg(cp, "wide msgin", np->msgin); 6118 }; 6119 6120 /* | 4032 * and the device switches to msg-in phase inside a 4033 * block MOV. 4034 * - SCSI parity error + Unexpected disconnect (PAR|UDC) 4035 * When a stupid device does not want to handle the 4036 * recovery of an SCSI parity error. 4037 * - Some combinations of STO, PAR, UDC, ... 4038 * When using non compliant SCSI stuff, when user is 4039 * doing non compliant hot tampering on the BUS, when --- 2073 unchanged lines hidden (view full) --- 6113 /* 6114 * Wide request message received. 6115 */ 6116 if (DEBUG_FLAGS & DEBUG_NEGO) { 6117 sym_print_msg(cp, "wide msgin", np->msgin); 6118 }; 6119 6120 /* |
6121 * Is it an request from the device? | 6121 * Is it a request from the device? |
6122 */ 6123 if (INB (HS_PRT) == HS_NEGOTIATE) { 6124 OUTB (HS_PRT, HS_BUSY); 6125 if (cp->nego_status && cp->nego_status != NS_WIDE) 6126 goto reject_it; 6127 req = 0; 6128 } 6129 --- 4285 unchanged lines hidden --- | 6122 */ 6123 if (INB (HS_PRT) == HS_NEGOTIATE) { 6124 OUTB (HS_PRT, HS_BUSY); 6125 if (cp->nego_status && cp->nego_status != NS_WIDE) 6126 goto reject_it; 6127 req = 0; 6128 } 6129 --- 4285 unchanged lines hidden --- |