124 lines
3.3 KiB
C
124 lines
3.3 KiB
C
|
/*****************************************************************************
|
|||
|
*
|
|||
|
* COPYRIGHT (C) 1990-1992 COLORADO MEMORY SYSTEMS, INC.
|
|||
|
* COPYRIGHT (C) 1992-1994 HEWLETT-PACKARD COMPANY
|
|||
|
*
|
|||
|
******************************************************************************
|
|||
|
*
|
|||
|
* FILE: \SE\DRIVER\Q117CD\SRC\0X11058.C
|
|||
|
*
|
|||
|
* FUNCTION: cqd_SelectFormat
|
|||
|
*
|
|||
|
* PURPOSE: Issues a firmware SELECT_FORMAT command on 3010/3020 drives
|
|||
|
*
|
|||
|
* HISTORY:
|
|||
|
* $Log: J:\se.vcs\driver\q117cd\src\0x11058.c $
|
|||
|
*
|
|||
|
* Rev 1.3.1.0 29 Jan 1996 17:00:12 BOBLEHMA
|
|||
|
* Added wide tape support to the select format command for 3010 and 3020
|
|||
|
* drives.
|
|||
|
*
|
|||
|
* Rev 1.3 24 Jan 1996 10:58:44 BOBLEHMA
|
|||
|
* Changed the define QIC_FLEXIBLE_550 to QIC_FLEXIBLE_550_WIDE.
|
|||
|
*
|
|||
|
* Rev 1.2 15 May 1995 10:48:32 GaryKiwi
|
|||
|
* Phoenix merge from CBW95s
|
|||
|
*
|
|||
|
* Rev 1.1.1.0 11 Apr 1995 18:05:26 garykiwi
|
|||
|
* PHOENIX pass #1
|
|||
|
*
|
|||
|
* Rev 1.2 26 Jan 1995 14:59:36 BOBLEHMA
|
|||
|
* Added support for the Phoenix drive with QIC tape or WIDE tapes
|
|||
|
* using the defines SELECT_FORMAT_80 or SELECT_FORMAT_80W respectively.
|
|||
|
*
|
|||
|
* Rev 1.1 28 Nov 1994 08:01:44 SCOTTMAK
|
|||
|
* Added kdi_pub.h to include list.
|
|||
|
*
|
|||
|
* Rev 1.0 23 Nov 1994 10:13:00 MARKMILL
|
|||
|
* Initial revision.
|
|||
|
*
|
|||
|
*****************************************************************************/
|
|||
|
#define FCT_ID 0x11058
|
|||
|
#include "include\public\adi_api.h"
|
|||
|
#include "include\public\frb_api.h"
|
|||
|
#include "include\private\kdi_pub.h"
|
|||
|
#include "include\private\cqd_pub.h"
|
|||
|
#include "q117cd\include\cqd_defs.h"
|
|||
|
#include "q117cd\include\cqd_strc.h"
|
|||
|
#include "q117cd\include\cqd_hdr.h"
|
|||
|
|
|||
|
|
|||
|
/*endinclude*/
|
|||
|
|
|||
|
dStatus cqd_SelectFormat
|
|||
|
(
|
|||
|
/* INPUT PARAMETERS: */
|
|||
|
|
|||
|
CqdContextPtr cqd_context
|
|||
|
|
|||
|
/* UPDATE PARAMETERS: */
|
|||
|
|
|||
|
/* OUTPUT PARAMETERS: */
|
|||
|
|
|||
|
)
|
|||
|
/* COMMENTS: *****************************************************************
|
|||
|
*
|
|||
|
* This function issues a SELECT_FORMAT firmware command if the drive is
|
|||
|
* a QIC-3010 or QIC-3020 drive.
|
|||
|
*
|
|||
|
* DEFINITIONS: *************************************************************/
|
|||
|
{
|
|||
|
|
|||
|
/* DATA: ********************************************************************/
|
|||
|
|
|||
|
dUByte select_format_arg;
|
|||
|
dStatus status=DONT_PANIC;
|
|||
|
dBoolean esd_retry = dFALSE;
|
|||
|
|
|||
|
/* CODE: ********************************************************************/
|
|||
|
|
|||
|
switch (cqd_context->device_descriptor.drive_class) {
|
|||
|
|
|||
|
case QIC80W_DRIVE:
|
|||
|
if (cqd_context->floppy_tape_parms.tape_status.length == QIC_FLEXIBLE_550_WIDE) {
|
|||
|
select_format_arg = SELECT_FORMAT_80W;
|
|||
|
} else {
|
|||
|
select_format_arg = SELECT_FORMAT_80;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case QIC3010_DRIVE:
|
|||
|
select_format_arg = SELECT_FORMAT_3010;
|
|||
|
if (cqd_context->floppy_tape_parms.tape_status.length == QIC_FLEXIBLE_900_WIDE) {
|
|||
|
select_format_arg += 2;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case QIC3020_DRIVE:
|
|||
|
select_format_arg = SELECT_FORMAT_3020;
|
|||
|
if (cqd_context->floppy_tape_parms.tape_status.length == QIC_FLEXIBLE_900_WIDE) {
|
|||
|
select_format_arg += 2;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
select_format_arg = SELECT_FORMAT_UNSUPPORTED;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if( select_format_arg != SELECT_FORMAT_UNSUPPORTED ) {
|
|||
|
|
|||
|
if ((status = cqd_SendByte(cqd_context, FW_CMD_SELECT_SPEED)) == DONT_PANIC) {
|
|||
|
|
|||
|
kdi_Sleep(cqd_context->kdi_context, INTERVAL_CMD, dFALSE);
|
|||
|
|
|||
|
if ((status = cqd_SendByte(cqd_context,(dUByte)(select_format_arg + CMD_OFFSET))) == DONT_PANIC) {
|
|||
|
|
|||
|
status = cqd_WaitCommandComplete(cqd_context, INTERVAL_SPEED_CHANGE, dFALSE);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return status;
|
|||
|
}
|