From owner-freebsd-hardware Fri Oct 4 13:05:20 1996 Return-Path: owner-hardware Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id NAA11013 for hardware-outgoing; Fri, 4 Oct 1996 13:05:20 -0700 (PDT) Received: from bluewhale.emergent.com (bluewhale.emergent.com [140.174.2.161]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id NAA10995 for ; Fri, 4 Oct 1996 13:05:15 -0700 (PDT) Received: (from curt@localhost) by bluewhale.emergent.com (8.6.11/8.6.12) id NAA10597 for freebsd-hardware@FreeBSD.org; Fri, 4 Oct 1996 13:05:13 -0700 Date: Fri, 4 Oct 1996 13:05:13 -0700 From: Curt Mayer Message-Id: <199610042005.NAA10597@bluewhale.emergent.com> To: freebsd-hardware@FreeBSD.org Subject: T4000S Sender: owner-hardware@FreeBSD.org X-Loop: FreeBSD.org Precedence: bulk I've been running the T4000S against 2.1.5 since I got the drive, and it streams pretty good. It requires a patch, since it does not support a density select. I've filed a bug, and just in case the bug-dudes don't integrate the fix, here's the patch. curt *** st.c Tue Aug 20 12:59:57 1996 --- /home/curt/st.c Fri Oct 4 12:39:44 1996 *************** *** 92,97 **** --- 92,98 ---- #define ST_Q_SNS_HLP 0x00008 /* must do READ for good MODE SENSE */ #define ST_Q_IGNORE_LOADS 0x00010 #define ST_Q_BLKSIZ 0x00020 /* variable-block media_blksiz > 0 */ + #define ST_Q_NOMODESEL 0x00040 /* no mode select - use defaults */ static struct rogues gallery[] = /* ends with an all-null entry */ { *************** *** 149,154 **** --- 150,164 ---- {0, ST_Q_FORCE_VAR_MODE, 0x13} /* minor 12,13,14,15 */ } }, + {"HP T4000s rev 1.05", "HP ", "T4000s", "1.05", + ST_Q_NOMODESEL, + { + {0, 0, 0}, /* minor 0,1,2,3 */ + {0, 0, 0}, /* minor 4,5,6,7 */ + {0, 0, 0}, /* minor 8,9,10,11 */ + {0, 0, 0} /* minor 12,13,14,15 */ + } + }, {(char *) 0} }; #endif /* NEW_SCSICONF */ *************** *** 718,730 **** return errno; } } ! #ifdef notdef ! if ( (errno = st_mode_select(unit, 0, NULL, 0)) ) { ! printf("st%ld: Cannot set selected mode", unit); ! return errno; } ! #endif ! scsi_prevent(sc_link, PR_PREVENT, 0); /* who cares if it fails? */ st->flags &= ~ST_NEW_MOUNT; st->flags |= ST_MOUNTED; sc_link->flags |= SDEV_MEDIA_LOADED; --- 728,741 ---- return errno; } } ! if (!(st->quirks & ST_Q_NOMODESEL)) { ! if ( (errno = st_mode_select(unit, 0, NULL, 0)) ) { ! printf("st%ld: Cannot set selected mode\n", unit); ! return errno; ! } } ! scsi_prevent(sc_link, PR_PREVENT, SCSI_SILENT); ! /* who cares if it fails? */ st->flags &= ~ST_NEW_MOUNT; st->flags |= ST_MOUNTED; sc_link->flags |= SDEV_MEDIA_LOADED; *************** *** 1278,1284 **** * drive. If not, put it back the way it was. */ if ( (errcode = st_mode_select(unit, 0, NULL, 0)) ) { /* put back as it was */ ! printf("st%d: Cannot set selected mode", unit); st->density = hold_density; st->blksiz = hold_blksiz; if (st->blksiz) { --- 1289,1295 ---- * drive. If not, put it back the way it was. */ if ( (errcode = st_mode_select(unit, 0, NULL, 0)) ) { /* put back as it was */ ! printf("st%d: Cannot set selected mode\n", unit); st->density = hold_density; st->blksiz = hold_blksiz; if (st->blksiz) {