diff options
Diffstat (limited to 'usr/src/lib/libbc/inc/include/sun/dkio.h')
| -rw-r--r-- | usr/src/lib/libbc/inc/include/sun/dkio.h | 361 |
1 files changed, 0 insertions, 361 deletions
diff --git a/usr/src/lib/libbc/inc/include/sun/dkio.h b/usr/src/lib/libbc/inc/include/sun/dkio.h deleted file mode 100644 index 3fe34e0f74..0000000000 --- a/usr/src/lib/libbc/inc/include/sun/dkio.h +++ /dev/null @@ -1,361 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -#ifndef _sun_dkio_h -#define _sun_dkio_h - -#pragma ident "%Z%%M% %I% %E% SMI" - -/* #include <sys/ioctl.h> not needed? */ -#include <sun/dklabel.h> - -/* - * Structures and definitions for disk io control commands - */ - -/* - * Structures used as data by ioctl calls. - */ - -/* - * Used for controller info - */ -struct dk_info { - int dki_ctlr; /* controller address */ - short dki_unit; /* unit (slave) address */ - short dki_ctype; /* controller type */ - short dki_flags; /* flags */ -}; - -#define DK_DEVLEN 16 /* device name max length, including */ - /* unit # & NULL (ie - "xyc1") */ -/* - * Used for configuration info - */ -struct dk_conf { - char dkc_cname[DK_DEVLEN]; /* controller name (no unit #) */ - u_short dkc_ctype; /* controller type */ - u_short dkc_flags; /* flags */ - short dkc_cnum; /* controller number */ - int dkc_addr; /* controller address */ - u_int dkc_space; /* controller bus type */ - int dkc_prio; /* interrupt priority */ - int dkc_vec; /* interrupt vector */ - char dkc_dname[DK_DEVLEN]; /* drive name (no unit #) */ - short dkc_unit; /* unit number */ - short dkc_slave; /* slave number */ -}; - -/* - * Controller types - */ -#define DKC_UNKNOWN 0 -/* 1 used to be Interphase 2180 */ -#define DKC_WDC2880 2 -/* 3 used to be Interphase 2181 */ -/* 4 used to be Xylogics 440 */ -#define DKC_DSD5215 5 -#define DKC_XY450 6 -#define DKC_ACB4000 7 -#define DKC_MD21 8 -/* 9 used to be Xylogics 751 */ -#define DKC_NCRFLOPPY 10 -/* #define DKC_XB1401 10 does not match dkinfo.c*/ -#define DKC_XD7053 11 -#define DKC_SMSFLOPPY 12 -#define DKC_SCSI_CCS 13 -#define DKC_INTEL82072 14 /* floppy ctlr on campus and hydra */ -#define DKC_PANTHER 15 -#define DKC_SUN_IPI1 DKC_PANTHER /* Sun Panther VME/IPI controller */ -#define DKC_MD 16 /* meta-disk (virtual-disk) driver */ -#define DKC_CDC_9057 17 /* CDC 9057-321 (CM-3) IPI String Controller */ -#define DKC_FJ_M1060 18 /* Fujitsu/Intellistor M1060 IPI-3 SC */ - -/* - * Flags - */ -#define DKI_BAD144 0x01 /* use DEC std 144 bad sector fwding */ -#define DKI_MAPTRK 0x02 /* controller does track mapping */ -#define DKI_FMTTRK 0x04 /* formats only full track at a time */ -#define DKI_FMTVOL 0x08 /* formats only full volume at a time */ -#define DKI_FMTCYL 0x10 /* formats only full cylinders at a time */ -#define DKI_HEXUNIT 0x20 /* unit number is printed as 3 hex digits */ - -/* - * Used for drive info - */ -struct dk_type { - u_short dkt_hsect; /* hard sector count (read only) */ - u_short dkt_promrev; /* prom revision (read only) */ - u_char dkt_drtype; /* drive type (ctlr specific) */ - u_char dkt_drstat; /* drive status (ctlr specific, ro) */ -}; - -/* - * Used for all partitions - */ -struct dk_allmap { - struct dk_map dka_map[NDKMAP]; -}; - -/* - * Used for bad sector map - */ -struct dk_badmap { - caddr_t dkb_bufaddr; /* address of user's map buffer */ -}; - -/* - * Definition of a disk's geometry - */ -struct dk_geom { - unsigned short dkg_ncyl; /* # of data cylinders */ - unsigned short dkg_acyl; /* # of alternate cylinders */ - unsigned short dkg_bcyl; /* cyl offset (for fixed head area) */ - unsigned short dkg_nhead; /* # of heads */ - unsigned short dkg_obs1; /* obsolete */ - unsigned short dkg_nsect; /* # of data sectors per track */ - unsigned short dkg_intrlv; /* interleave factor */ - unsigned short dkg_obs2; /* obsolete */ - unsigned short dkg_obs3; /* obsolete */ - unsigned short dkg_apc; /* alternates per cyl (SCSI only) */ - unsigned short dkg_rpm; /* revolutions per minute */ - unsigned short dkg_pcyl; /* # of physical cylinders */ - unsigned short dkg_extra[7]; /* for compatible expansion */ -}; -/* - * These defines are for historic compatibility with old drivers. - */ -#define dkg_bhead dkg_obs1 /* used to be head offset */ -#define dkg_gap1 dkg_obs2 /* used to be gap1 */ -#define dkg_gap2 dkg_obs3 /* used to be gap2 */ - -/* - * Used for generic commands - */ -struct dk_cmd { - u_short dkc_cmd; /* command to be executed */ - int dkc_flags; /* execution flags */ - daddr_t dkc_blkno; /* disk address for command */ - int dkc_secnt; /* sector count for command */ - caddr_t dkc_bufaddr; /* user's buffer address */ - u_int dkc_buflen; /* size of user's buffer */ -}; - -/* - * Execution flags. - */ -#define DK_SILENT 0x01 /* no error messages */ -#define DK_DIAGNOSE 0x02 /* fail if any error occurs */ -#define DK_ISOLATE 0x04 /* isolate from normal commands */ -#define DK_READ 0x08 /* read from device */ -#define DK_WRITE 0x10 /* write to device */ - -/* - * Used for disk diagnostics - */ -struct dk_diag { - u_short dkd_errcmd; /* most recent command in error */ - daddr_t dkd_errsect; /* most recent sector in error */ - u_char dkd_errno; /* most recent error number */ - u_char dkd_severe; /* severity of most recent error */ -}; - -/* - * Used for getting disk error log. - */ -struct dk_loghdr { - long dkl_entries; /* number of dk_log entries */ - long dkl_max_size; /* max. size of dk_log table */ - caddr_t dkl_logbfr; /* pointer to dk_log table */ -}; - -/* - * Disk error log table entry. - */ -struct dk_log { - daddr_t block; /* location of block in error */ - u_long count; /* number of failures */ - short type; /* type of error (e.g. soft error) */ - short err1; /* primary error code (e.g sense key) */ - short err2; /* secondary error code */ -}; - -/* - * Dk_log type flags. - * - * FIXME: Really should specify dkd_errno error codes. - * For some reason they're specified in the drivers - * instead of here?? Should also use those here for - * dk_log.type too. - */ -#define DKL_SOFT 0x01 /* recoverable erro */ -#define DKL_HARD 0x02 /* unrecoverable error */ - -/* - * Used for floppies - */ -struct fdk_char{ - u_char medium; /* medium type. Unused, why have it? history! */ - int transfer_rate; /* transfer rate */ - int ncyl; /* number of cylinders */ - int nhead; /* number of heads */ - int sec_size; /* sector size */ - int secptrack; /* sectors per track */ - int steps; /* number of steps per */ -}; - -struct fdk_state { - int fkc_bsec; /* bytes per sector */ - int fkc_strack; /* sectors per track */ - int fkc_step; /* step rate */ - int fkc_rate; /* data rate */ - int fkc_error; /* error returned by controller */ -}; - -struct fdk_cmd { /* used by generic command */ - struct dk_cmd dcmd; /* disk command info */ - struct fdk_state fstate; /* floppy state info */ -}; - -/* - * Floppy commands - */ -#define FKWRITE 1 -#define FKREAD 2 -#define FKSEEK 3 -#define FKREZERO 4 -#define FKFORMAT_UNIT 5 -#define FKFORMAT_TRACK 6 - -/* - * Used by FDKGETCHANGE, return state of the sense disk change bit. - */ -#define FDKGC_HISTORY 0x01 /* disk has changed since last call */ -#define FDKGC_CURRENT 0x02 /* current state of disk change */ - -/* - * Used by FDK{G, S}ETDRIVECHAR - */ -struct fdk_drive { - int fdd_ejectable; /* does the drive support eject? */ - int fdd_maxsearch; /* size of per-unit search table */ - - int fdd_writeprecomp; /* cyl to start write prcompensation */ - int fdd_writereduce; /* cyl to start recucing write current */ - int fdd_stepwidth; /* width of step pulse in 1 us units */ - int fdd_steprate; /* step rate in 100 us units */ - int fdd_headsettle; /* delay, in 100 us units */ - int fdd_headload; /* delay, in 100 us units */ - int fdd_headunload; /* delay, in 100 us units */ - int fdd_motoron; /* delay, in 100 ms units */ - int fdd_motoroff; /* delay, in 100 ms units */ - int fdd_precomplevel; /* bit shift, in nano-secs */ - int fdd_pins; /* defines meaning of pin 1, 2, 4, and 34 */ - int fdd_flags; /* TRUE READY, Starting Sector #, & Motor On */ -}; - -/* - * Used by FDK{G, S}ETSEARCH - */ -struct fdk_search { - int fdk_numentries; /* number of elements in the table */ - struct fdk_char *fdk_search; -}; - -/* - * Used by F_RAW - */ -struct fdraw { - char fr_cmd[10]; /* user-supplied command bytes */ - short fr_cnum; /* number of command bytes */ - char fr_result[10]; /* controller-supplied result bytes */ - short fr_nbytes; /* number to transfer if read/write command */ - char *fr_addr; /* where to transfer if read/write command */ -}; - -/* - * Floppy raw commands - */ -#define FRAW_SPECIFY 0x03 -#define FRAW_READID 0x0a -#define FRAW_SENSE_DRV 0x04 -#define FRAW_REZERO 0x07 -#define FRAW_SEEK 0x0f -#define FRAW_SENSE_INT 0x08 -#define FRAW_FORMAT 0x0d -#define FRAW_READTRACK 0x02 -#define FRAW_WRCMD 0x05 -#define FRAW_RDCMD 0x06 -#define FRAW_WRITEDEL 0x09 -#define FRAW_READDEL 0x0c - -/* - * Severity values - */ -#define DK_NOERROR 0 -#define DK_CORRECTED 1 -#define DK_RECOVERED 2 -#define DK_FATAL 3 - -/* - * Error types - */ -#define DK_NONMEDIA 0 /* not caused by a media defect */ -#define DK_ISMEDIA 1 /* caused by a media defect */ - - -/* - * Disk io control commands - */ -#define DKIOCGGEOM _IOR('d', 2, struct dk_geom) /* Get geometry */ -#define DKIOCSGEOM _IOW('d', 3, struct dk_geom) /* Set geometry */ -#define DKIOCGPART _IOR('d', 4, struct dk_map) /* Get partition info */ -#define DKIOCSPART _IOW('d', 5, struct dk_map) /* Set partition info */ -#define DKIOCINFO _IOR('d', 8, struct dk_info) /* Get info */ -#define DKIOCGCONF _IOR('d', 126, struct dk_conf) /* Get conf info */ -#define DKIOCSTYPE _IOW('d', 125, struct dk_type) /* Set drive info */ -#define DKIOCGTYPE _IOR('d', 124, struct dk_type) /* Get drive info */ -#define DKIOCSAPART _IOW('d', 123, struct dk_allmap) /* Set all partitions */ -#define DKIOCGAPART _IOR('d', 122, struct dk_allmap) /* Get all partitions */ -#define DKIOCSBAD _IOW('d', 121, struct dk_badmap) /* Set bad sector map */ -#define DKIOCGBAD _IOW('d', 120, struct dk_badmap) /* Get bad sector map */ -#define DKIOCSCMD _IOW('d', 119, struct dk_cmd) /* Set generic cmd */ -#define DKIOCGLOG _IOR('d', 118, struct dk_loghdr) /* Get error log */ -#define DKIOCGDIAG _IOR('d', 116, struct dk_diag) /* Get diagnostics */ -#define DKIOCWCHK _IOWR('d', 115, int) /* Toggle write check */ -#define FDKIOGCHAR _IOR('d', 114, struct fdk_char) /* GetCharacteristics */ -#define FDKIOSCHAR _IOW('d', 113, struct fdk_char) /* SetCharacteristics */ -#define FDKEJECT _IO('d', 112) /* Eject floppy disk */ -#define FDKGETCHANGE _IOR('d', 111, int) /* Get diskchng stat */ -#define FDKGETDRIVECHAR _IOR('d', 110, struct fdk_drive) /* Get drivechar */ -#define FDKSETDRIVECHAR _IOW('d', 109, struct fdk_drive) /* Set drivechar */ -#define FDKGETSEARCH _IOR('d', 108, struct fdk_search) /* Get search tbl */ -#define FDKSETSEARCH _IOW('d', 107, struct fdk_search) /* Set search tbl */ -#define FDKIOCSCMD _IOWR('d', 106, struct fdk_cmd) /* Floppy command */ -#define F_RAW _IOWR('d', 105, struct fdraw) /* ECDstyle genericcmd*/ - -#endif /* !_sun_dkio_h */ |
