Files
seta75D 2e8a93c394 Init
2021-10-11 18:20:23 -03:00

202 lines
4.7 KiB
C

#ifndef lint
static char sccsid[] = "@(#)sc_conf.c 1.1 92/07/30 SMI";
#endif
/*
* Copyright (c) 1989 by Sun Microsystems, Inc.
*/
#define REL4 /* Enable Release 4.0 mods */
#include "sc.h"
#include "si.h"
#include "se.h"
#ifdef REL4
#include "sm.h" /* Sun 3/80 and Sun 4/330 support */
#include "sw.h" /* Sun 4/110 support */
#include "wds.h" /* Sun 386i support */
#endif REL4
#if ((NSC > 0) || (NSI > 0) || (NSE > 0) || (NSW > 0) || (NWDS > 0) || (NSM >0))
#ifndef REL4
#include "../h/types.h"
#include "../h/buf.h"
#include "../sun/dklabel.h"
#include "../sun/dkio.h"
#include "../sundev/screg.h"
#include "../sundev/sireg.h"
#include "../sundev/scsi.h"
#else REL4
#include <sys/types.h>
#include <sys/buf.h>
#include <sun/dklabel.h>
#include <sun/dkio.h>
#include <sundev/screg.h>
#include <sundev/sireg.h>
#include <sundev/scsi.h>
#endif REL4
/* generic scsi debug flag */
int scsi_debug = 0;
/* scsi disconnect/reconnect and synchronous support global enable flag */
int scsi_disre_enable = 2; /* =0, disconnect disabled */
/* =1, disconnect enabled */
/* =2, + synchronous */
/* scsi initiator host id. Note, not used by sc host adapter. */
/* FIXME: really should be put in eeprom like 4c does. */
#define HOST_ID 7
int scsi_host_id = 1 << HOST_ID; /* id 7 = 0x80 */
/* scsi reset recovery time */
int scsi_reset_delay = 1 *1000000; /* 1-2 Sec. delay (1 us units) */
/*
* scsi CDB op code to command length decode table.
*/
u_char sc_cdb_size[] = {
CDB_GROUP0, /* Group 0, 6 byte cdb */
CDB_GROUP1, /* Group 1, 10 byte cdb */
CDB_GROUP2, /* Group 2, ? byte cdb */
CDB_GROUP3, /* Group 3, ? byte cdb */
CDB_GROUP4, /* Group 4, ? byte cdb */
CDB_GROUP5, /* Group 5, ? byte cdb */
CDB_GROUP6, /* Group 6, ? byte cdb */
CDB_GROUP7 /* Group 7, ? byte cdb */
};
/*
* If host adaptors exist, declare structures for them here.
*/
#if NSC > 0
int nsc = NSC;
struct scsi_ctlr scctlrs[NSC];
struct mb_ctlr *scinfo[NSC];
#endif NSC
#if NSI > 0
int nsi = NSI;
struct scsi_ctlr sictlrs[NSI];
struct mb_ctlr *siinfo[NSI];
#endif NSI
#if NSE > 0
int nse = NSE;
struct scsi_ctlr se_ctlrs[NSE];
struct mb_ctlr *se_info[NSE];
#endif NSE
#if NSW > 0
int nsw = NSW;
struct scsi_ctlr swctlrs[NSW];
struct mb_ctlr *swinfo[NSW];
#endif NSW
#if NWDS > 0
int nwds = NWDS;
struct scsi_ctlr wdsctlrs[NWDS];
struct mb_ctlr *wdsinfo[NWDS];
#endif NWDS
#if NSM > 0
int nsm = NSM;
struct scsi_ctlr smctlrs[NSM];
struct mb_ctlr *sminfo[NSM];
#endif NSM
/*
* declare structures for top-level SCSI drivers, if present.
* (e.g. disks, tapes, and floppy disks)
*/
#include "sd.h"
#include "st.h"
#include "sr.h"
#if NSD > 0
int sd_repair = 3; /* =0, auto disk repair disabled
/* =1, rewrite soft errors (before reassign)
/* =2, reassign soft errors
/* =4, reassign hard errors
/* =3, rewrite/reassign soft errors only
/* =7, all of the above
*/
int nsdisk = NSD;
struct scsi_unit sdunits[NSD];
struct scsi_disk sdisk[NSD];
#ifdef DKIOCWCHK
/* XXX: Supports 8 partitions/unit max. */
u_char sdwchkmap[NSD] = { 0 }; /* write check enable map. */
#endif DKIOCWCHK
#endif NSD
#if NST > 0
#ifdef REL4
#include <sundev/streg.h>
#else REL4
#include "../sundev/streg.h"
#endif REL4
struct scsi_unit stunits[NST];
struct scsi_tape stape[NST];
struct st_drive_table st_drivetab[] = ST_DRIVE_INFO;
int st_drivetab_size = sizeof(st_drivetab)/sizeof(st_drivetab[0]);
int nstape = NST;
#endif NST
#if NSR > 0
struct scsi_unit srunits[NSR];
struct scsi_disk srdisk[NSR];
int ncdrom = NSR;
#endif NSR
struct mb_device *sdinfo[NSD + NST + NSR];
/*
* Device specific subroutines. Indexed by "flag" from the configuration
* file. Flag is is in mc_flag (e.g. Disk is 0, tape is 1).
*/
#if NSD > 0
int sdattach(), sdstart(), sdmkcdb(), sdintr(), sdunitptr();
#endif NSD > 0
#if NST > 0
int stattach(), ststart(), stmkcdb(), stintr(), stunitptr();
#endif NST > 0
#if NSR > 0
int srattach(), srstart(), srmkcdb(), srintr(), srunitptr();
#endif NSR > 0
struct scsi_unit_subr scsi_unit_subr[] = {
#if NSD > 0
{ sdattach, sdstart, sdmkcdb, sdintr, sdunitptr, "sd", },
#else
{ (int (*)())0, (int (*)())0, (int (*)())0, (int (*)())0, (int (*)())0,
(char *)0},
#endif NSD > 0
#if NST > 0
{ stattach, ststart, stmkcdb, stintr, stunitptr, "st", },
#else
{ (int (*)())0, (int (*)())0, (int (*)())0, (int (*)())0, (int (*)())0,
(char *)0},
#endif NST > 0
#if NSR > 0
{ srattach, srstart, srmkcdb, srintr, srunitptr, "sr", },
#else
{ (int (*)())0, (int (*)())0, (int (*)())0, (int (*)())0, (int (*)())0,
(char *)0},
#endif NSR > 0
};
/*
* Number of SCSI device driver types.
*/
int scsi_ntype = sizeof scsi_unit_subr / sizeof (struct scsi_unit_subr);
#endif ((NSC > 0) || (NSI > 0) || (NSE > 0) || (NSW > 0) || (NWDS > 0) || (NSM >0))