From owner-freebsd-current Sat Dec 9 08:11:03 1995 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id IAA29342 for current-outgoing; Sat, 9 Dec 1995 08:11:03 -0800 (PST) Received: from eas.eas.slu.edu (eas.eas.slu.edu [165.134.8.188]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id IAA29336 for ; Sat, 9 Dec 1995 08:10:59 -0800 (PST) Received: (from ejh@localhost) by eas.eas.slu.edu (8.6.10/8.6.9) id KAA15578 for current@freebsd.org; Sat, 9 Dec 1995 10:10:26 -0600 Date: Sat, 9 Dec 1995 10:10:26 -0600 From: "Eric J. Haug" Message-Id: <199512091610.KAA15578@eas.eas.slu.edu> To: current@freebsd.org Subject: Exabyte 8505 mods to scsi system Sender: owner-current@freebsd.org Precedence: bulk These patches allow an Exabyte 8505 to be used in the four modes it is capable of. They were generated with respect to: * $Id: scsi_tape.h,v 1.14 1995/11/30 07:43:46 pst Exp $ * $Id: scsiconf.h,v 1.32 1995/12/05 07:14:25 julian Exp $ * $Id: st.c,v 1.49 1995/12/08 11:18:59 julian Exp $ Use requires mt to be used to set the densities as necessary: mt -f /dev/st0ctl.0 density 0x14 8200 mode mt -f /dev/st0ctl.1 density 0x15 8500 mode mt -f /dev/st0ctl.2 density 0x8c 8500 compressed mode mt -f /dev/st0ctl.3 density 0x90 8200 compressed mode The patches were applied to FreeBSD 2.1-STABLE (EJH) #2: Sat Dec 9 08:48:08 CST 1995 and tested. eric ejh@eas.slu.edu *** scsi_tape.h.orig Thu Nov 30 04:34:17 1995 --- scsi_tape.h Sat Dec 9 10:00:03 1995 *************** *** 308,311 **** --- 308,315 ---- #define DDS 0x13 #define DAT_1 0x13 + #define EXB_8200 0x14 /* from EXB-8505 Users Manual 510503-002 */ + #define EXB_8500 0x15 + #define EXB_8500C 0x8C + #define EXB_8200C 0x90 #define QIC_3080 0x29 #endif /* NEW_SCSICONF */ *** scsiconf.h.orig Tue Dec 5 05:54:42 1995 --- scsiconf.h Sat Dec 9 10:00:03 1995 *************** *** 241,245 **** /* 4*/ u_int32 blksiz; /* 6*/ u_int16 quirks; /* same definitions as in XXX */ ! /* 7*/ char density; /* 8*/ char spare[1]; }; --- 241,245 ---- /* 4*/ u_int32 blksiz; /* 6*/ u_int16 quirks; /* same definitions as in XXX */ ! /* 7*/ u_int8 density; /* 8*/ char spare[1]; }; *** st.c.orig Fri Dec 8 05:26:48 1995 --- st.c Sat Dec 9 10:00:04 1995 *************** *** 67,72 **** --- 67,76 ---- #define IS_CTLMODE(DEV) (MODE(DEV) == CTLMODE) + #ifdef EXB_8200C + #define SCSI_2_MAX_DENSITY_CODE EXB_8200C + #else #define SCSI_2_MAX_DENSITY_CODE 0x17 /* maximum density code specified * in SCSI II spec. */ + #endif #ifndef NEW_SCSICONF /* *************** *** 77,81 **** u_int32 blksiz; u_int32 quirks; /* same definitions as in rogues */ ! char density; char spare[3]; }; --- 81,85 ---- u_int32 blksiz; u_int32 quirks; /* same definitions as in rogues */ ! u_int8 density; char spare[3]; }; *************** *** 1366,1369 **** --- 1370,1379 ---- if (number > SCSI_2_MAX_DENSITY_CODE) { errcode = EINVAL; + /* ejh falling through here seems to be a bug + * we immediately call st_mode_select and reset + * errcode with the return value + * since st->density is probably a previous + * value or 0 this will most likely not fail + */ } else { st->density = number;