xref: /onnv-gate/usr/src/lib/libbc/inc/include/sun/dkio.h (revision 722:636b850d4ee9)
10Sstevel@tonic-gate /*
20Sstevel@tonic-gate  * CDDL HEADER START
30Sstevel@tonic-gate  *
40Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
50Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
60Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
70Sstevel@tonic-gate  * with the License.
80Sstevel@tonic-gate  *
90Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
100Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
110Sstevel@tonic-gate  * See the License for the specific language governing permissions
120Sstevel@tonic-gate  * and limitations under the License.
130Sstevel@tonic-gate  *
140Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
150Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
160Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
170Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
180Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
190Sstevel@tonic-gate  *
200Sstevel@tonic-gate  * CDDL HEADER END
210Sstevel@tonic-gate  */
220Sstevel@tonic-gate /*
23*722Smuffin  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24*722Smuffin  * Use is subject to license terms.
250Sstevel@tonic-gate  */
260Sstevel@tonic-gate 
270Sstevel@tonic-gate #ifndef _sun_dkio_h
280Sstevel@tonic-gate #define	_sun_dkio_h
290Sstevel@tonic-gate 
30*722Smuffin #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*722Smuffin 
320Sstevel@tonic-gate /* #include <sys/ioctl.h> not needed? */
330Sstevel@tonic-gate #include <sun/dklabel.h>
340Sstevel@tonic-gate 
350Sstevel@tonic-gate /*
360Sstevel@tonic-gate  * Structures and definitions for disk io control commands
370Sstevel@tonic-gate  */
380Sstevel@tonic-gate 
390Sstevel@tonic-gate /*
400Sstevel@tonic-gate  * Structures used as data by ioctl calls.
410Sstevel@tonic-gate  */
420Sstevel@tonic-gate 
430Sstevel@tonic-gate /*
440Sstevel@tonic-gate  * Used for controller info
450Sstevel@tonic-gate  */
460Sstevel@tonic-gate struct dk_info {
470Sstevel@tonic-gate 	int	dki_ctlr;		/* controller address */
480Sstevel@tonic-gate 	short	dki_unit;		/* unit (slave) address */
490Sstevel@tonic-gate 	short	dki_ctype;		/* controller type */
500Sstevel@tonic-gate 	short	dki_flags;		/* flags */
510Sstevel@tonic-gate };
520Sstevel@tonic-gate 
530Sstevel@tonic-gate #define	DK_DEVLEN	16		/* device name max length, including */
540Sstevel@tonic-gate 					/* unit # & NULL (ie - "xyc1") */
550Sstevel@tonic-gate /*
560Sstevel@tonic-gate  * Used for configuration info
570Sstevel@tonic-gate  */
580Sstevel@tonic-gate struct dk_conf {
590Sstevel@tonic-gate 	char	dkc_cname[DK_DEVLEN];	/* controller name (no unit #) */
600Sstevel@tonic-gate 	u_short	dkc_ctype;		/* controller type */
610Sstevel@tonic-gate 	u_short	dkc_flags;		/* flags */
620Sstevel@tonic-gate 	short	dkc_cnum;		/* controller number */
630Sstevel@tonic-gate 	int	dkc_addr;		/* controller address */
640Sstevel@tonic-gate 	u_int	dkc_space;		/* controller bus type */
650Sstevel@tonic-gate 	int	dkc_prio;		/* interrupt priority */
660Sstevel@tonic-gate 	int	dkc_vec;		/* interrupt vector */
670Sstevel@tonic-gate 	char	dkc_dname[DK_DEVLEN];	/* drive name (no unit #) */
680Sstevel@tonic-gate 	short	dkc_unit;		/* unit number */
690Sstevel@tonic-gate 	short	dkc_slave;		/* slave number */
700Sstevel@tonic-gate };
710Sstevel@tonic-gate 
720Sstevel@tonic-gate /*
730Sstevel@tonic-gate  * Controller types
740Sstevel@tonic-gate  */
750Sstevel@tonic-gate #define	DKC_UNKNOWN	0
760Sstevel@tonic-gate /* 1 used to be Interphase 2180 */
770Sstevel@tonic-gate #define	DKC_WDC2880	2
780Sstevel@tonic-gate /* 3 used to be Interphase 2181 */
790Sstevel@tonic-gate /* 4 used to be Xylogics 440 */
800Sstevel@tonic-gate #define	DKC_DSD5215	5
810Sstevel@tonic-gate #define	DKC_XY450	6
820Sstevel@tonic-gate #define	DKC_ACB4000	7
830Sstevel@tonic-gate #define	DKC_MD21	8
840Sstevel@tonic-gate /* 9 used to be Xylogics 751 */
850Sstevel@tonic-gate #define	DKC_NCRFLOPPY	10
860Sstevel@tonic-gate /* #define	DKC_XB1401	10 does not match dkinfo.c*/
870Sstevel@tonic-gate #define	DKC_XD7053	11
880Sstevel@tonic-gate #define	DKC_SMSFLOPPY	12
890Sstevel@tonic-gate #define	DKC_SCSI_CCS	13
900Sstevel@tonic-gate #define	DKC_INTEL82072	14	/* floppy ctlr on campus and hydra */
910Sstevel@tonic-gate #define	DKC_PANTHER	15
920Sstevel@tonic-gate #define DKC_SUN_IPI1	DKC_PANTHER	/* Sun Panther VME/IPI controller */
930Sstevel@tonic-gate #define	DKC_MD		16	/* meta-disk (virtual-disk) driver */
940Sstevel@tonic-gate #define DKC_CDC_9057	17	/* CDC 9057-321 (CM-3) IPI String Controller */
950Sstevel@tonic-gate #define DKC_FJ_M1060	18	/* Fujitsu/Intellistor M1060 IPI-3 SC */
960Sstevel@tonic-gate 
970Sstevel@tonic-gate /*
980Sstevel@tonic-gate  * Flags
990Sstevel@tonic-gate  */
1000Sstevel@tonic-gate #define	DKI_BAD144	0x01	/* use DEC std 144 bad sector fwding */
1010Sstevel@tonic-gate #define	DKI_MAPTRK	0x02	/* controller does track mapping */
1020Sstevel@tonic-gate #define	DKI_FMTTRK	0x04	/* formats only full track at a time */
1030Sstevel@tonic-gate #define	DKI_FMTVOL	0x08	/* formats only full volume at a time */
1040Sstevel@tonic-gate #define	DKI_FMTCYL	0x10	/* formats only full cylinders at a time */
1050Sstevel@tonic-gate #define DKI_HEXUNIT	0x20	/* unit number is printed as 3 hex digits */
1060Sstevel@tonic-gate 
1070Sstevel@tonic-gate /*
1080Sstevel@tonic-gate  * Used for drive info
1090Sstevel@tonic-gate  */
1100Sstevel@tonic-gate struct dk_type {
1110Sstevel@tonic-gate 	u_short dkt_hsect;		/* hard sector count (read only) */
1120Sstevel@tonic-gate 	u_short dkt_promrev;		/* prom revision (read only) */
1130Sstevel@tonic-gate 	u_char	dkt_drtype;		/* drive type (ctlr specific) */
1140Sstevel@tonic-gate 	u_char	dkt_drstat;		/* drive status (ctlr specific, ro) */
1150Sstevel@tonic-gate };
1160Sstevel@tonic-gate 
1170Sstevel@tonic-gate /*
1180Sstevel@tonic-gate  * Used for all partitions
1190Sstevel@tonic-gate  */
1200Sstevel@tonic-gate struct dk_allmap {
1210Sstevel@tonic-gate 	struct dk_map	dka_map[NDKMAP];
1220Sstevel@tonic-gate };
1230Sstevel@tonic-gate 
1240Sstevel@tonic-gate /*
1250Sstevel@tonic-gate  * Used for bad sector map
1260Sstevel@tonic-gate  */
1270Sstevel@tonic-gate struct dk_badmap {
1280Sstevel@tonic-gate 	caddr_t dkb_bufaddr;		/* address of user's map buffer */
1290Sstevel@tonic-gate };
1300Sstevel@tonic-gate 
1310Sstevel@tonic-gate /*
1320Sstevel@tonic-gate  * Definition of a disk's geometry
1330Sstevel@tonic-gate  */
1340Sstevel@tonic-gate struct dk_geom {
1350Sstevel@tonic-gate 	unsigned short	dkg_ncyl;	/* # of data cylinders */
1360Sstevel@tonic-gate 	unsigned short	dkg_acyl;	/* # of alternate cylinders */
1370Sstevel@tonic-gate 	unsigned short	dkg_bcyl;	/* cyl offset (for fixed head area) */
1380Sstevel@tonic-gate 	unsigned short	dkg_nhead;	/* # of heads */
1390Sstevel@tonic-gate 	unsigned short	dkg_obs1;	/* obsolete */
1400Sstevel@tonic-gate 	unsigned short	dkg_nsect;	/* # of data sectors per track */
1410Sstevel@tonic-gate 	unsigned short	dkg_intrlv;	/* interleave factor */
1420Sstevel@tonic-gate 	unsigned short	dkg_obs2;	/* obsolete */
1430Sstevel@tonic-gate 	unsigned short	dkg_obs3;	/* obsolete */
1440Sstevel@tonic-gate 	unsigned short	dkg_apc;	/* alternates per cyl (SCSI only) */
1450Sstevel@tonic-gate 	unsigned short	dkg_rpm;	/* revolutions per minute */
1460Sstevel@tonic-gate 	unsigned short	dkg_pcyl;	/* # of physical cylinders */
1470Sstevel@tonic-gate 	unsigned short	dkg_extra[7];	/* for compatible expansion */
1480Sstevel@tonic-gate };
1490Sstevel@tonic-gate /*
1500Sstevel@tonic-gate  * These defines are for historic compatibility with old drivers.
1510Sstevel@tonic-gate  */
1520Sstevel@tonic-gate #define	dkg_bhead	dkg_obs1	/* used to be head offset */
1530Sstevel@tonic-gate #define	dkg_gap1	dkg_obs2	/* used to be gap1 */
1540Sstevel@tonic-gate #define	dkg_gap2	dkg_obs3	/* used to be gap2 */
1550Sstevel@tonic-gate 
1560Sstevel@tonic-gate /*
1570Sstevel@tonic-gate  * Used for generic commands
1580Sstevel@tonic-gate  */
1590Sstevel@tonic-gate struct dk_cmd {
1600Sstevel@tonic-gate 	u_short	dkc_cmd;		/* command to be executed */
1610Sstevel@tonic-gate 	int	dkc_flags;		/* execution flags */
1620Sstevel@tonic-gate 	daddr_t	dkc_blkno;		/* disk address for command */
1630Sstevel@tonic-gate 	int	dkc_secnt;		/* sector count for command */
1640Sstevel@tonic-gate 	caddr_t	dkc_bufaddr;		/* user's buffer address */
1650Sstevel@tonic-gate 	u_int	dkc_buflen;		/* size of user's buffer */
1660Sstevel@tonic-gate };
1670Sstevel@tonic-gate 
1680Sstevel@tonic-gate /*
1690Sstevel@tonic-gate  * Execution flags.
1700Sstevel@tonic-gate  */
1710Sstevel@tonic-gate #define	DK_SILENT	0x01		/* no error messages */
1720Sstevel@tonic-gate #define	DK_DIAGNOSE	0x02		/* fail if any error occurs */
1730Sstevel@tonic-gate #define	DK_ISOLATE	0x04		/* isolate from normal commands */
1740Sstevel@tonic-gate #define	DK_READ		0x08		/* read from device */
1750Sstevel@tonic-gate #define	DK_WRITE	0x10		/* write to device */
1760Sstevel@tonic-gate 
1770Sstevel@tonic-gate /*
1780Sstevel@tonic-gate  * Used for disk diagnostics
1790Sstevel@tonic-gate  */
1800Sstevel@tonic-gate struct dk_diag {
1810Sstevel@tonic-gate 	u_short	dkd_errcmd;		/* most recent command in error */
1820Sstevel@tonic-gate 	daddr_t	dkd_errsect;		/* most recent sector in error */
1830Sstevel@tonic-gate 	u_char	dkd_errno;		/* most recent error number */
1840Sstevel@tonic-gate 	u_char	dkd_severe;		/* severity of most recent error */
1850Sstevel@tonic-gate };
1860Sstevel@tonic-gate 
1870Sstevel@tonic-gate /*
1880Sstevel@tonic-gate  * Used for getting disk error log.
1890Sstevel@tonic-gate  */
1900Sstevel@tonic-gate struct dk_loghdr {
1910Sstevel@tonic-gate 	long	dkl_entries;		/* number of dk_log entries */
1920Sstevel@tonic-gate 	long	dkl_max_size;		/* max. size of dk_log table */
1930Sstevel@tonic-gate 	caddr_t	dkl_logbfr;		/* pointer to dk_log table */
1940Sstevel@tonic-gate };
1950Sstevel@tonic-gate 
1960Sstevel@tonic-gate /*
1970Sstevel@tonic-gate  * Disk error log table entry.
1980Sstevel@tonic-gate  */
1990Sstevel@tonic-gate struct dk_log {
2000Sstevel@tonic-gate 	daddr_t	block;			/* location of block in error */
2010Sstevel@tonic-gate 	u_long	count;			/* number of failures */
2020Sstevel@tonic-gate 	short	type;			/* type of error (e.g. soft error) */
2030Sstevel@tonic-gate 	short	err1;			/* primary error code (e.g sense key) */
2040Sstevel@tonic-gate 	short	err2;			/* secondary error code */
2050Sstevel@tonic-gate };
2060Sstevel@tonic-gate 
2070Sstevel@tonic-gate /*
2080Sstevel@tonic-gate  * Dk_log type flags.
2090Sstevel@tonic-gate  *
2100Sstevel@tonic-gate  * FIXME:  Really should specify dkd_errno error codes.
2110Sstevel@tonic-gate  *	For some reason they're specified in the drivers
2120Sstevel@tonic-gate  *	instead of here??  Should also use those here for
2130Sstevel@tonic-gate  *	dk_log.type too.
2140Sstevel@tonic-gate  */
2150Sstevel@tonic-gate #define	DKL_SOFT	0x01		/* recoverable erro */
2160Sstevel@tonic-gate #define	DKL_HARD	0x02		/* unrecoverable error */
2170Sstevel@tonic-gate 
2180Sstevel@tonic-gate /*
2190Sstevel@tonic-gate  * Used for floppies
2200Sstevel@tonic-gate  */
2210Sstevel@tonic-gate struct fdk_char{
2220Sstevel@tonic-gate 	u_char medium;		/* medium type. Unused, why have it? history! */
2230Sstevel@tonic-gate 	int transfer_rate;	/* transfer rate */
2240Sstevel@tonic-gate 	int ncyl;		/* number of cylinders */
2250Sstevel@tonic-gate 	int nhead;		/* number of heads */
2260Sstevel@tonic-gate 	int sec_size;		/* sector size */
2270Sstevel@tonic-gate 	int secptrack;		/* sectors per track */
2280Sstevel@tonic-gate 	int steps;		/* number of steps per  */
2290Sstevel@tonic-gate };
2300Sstevel@tonic-gate 
2310Sstevel@tonic-gate struct fdk_state {
2320Sstevel@tonic-gate 	int	fkc_bsec;		/* bytes per sector */
2330Sstevel@tonic-gate 	int 	fkc_strack;		/* sectors per track */
2340Sstevel@tonic-gate 	int	fkc_step;		/* step rate */
2350Sstevel@tonic-gate 	int	fkc_rate;		/* data rate */
2360Sstevel@tonic-gate 	int	fkc_error;		/* error returned by controller */
2370Sstevel@tonic-gate };
2380Sstevel@tonic-gate 
2390Sstevel@tonic-gate struct fdk_cmd {		/* used by generic command */
2400Sstevel@tonic-gate 	struct dk_cmd dcmd;	/* disk command info */
2410Sstevel@tonic-gate 	struct fdk_state fstate; /* floppy state info */
2420Sstevel@tonic-gate };
2430Sstevel@tonic-gate 
2440Sstevel@tonic-gate /*
2450Sstevel@tonic-gate  * Floppy commands
2460Sstevel@tonic-gate  */
2470Sstevel@tonic-gate #define	FKWRITE 	1
2480Sstevel@tonic-gate #define	FKREAD  	2
2490Sstevel@tonic-gate #define	FKSEEK		3
2500Sstevel@tonic-gate #define	FKREZERO 	4
2510Sstevel@tonic-gate #define	FKFORMAT_UNIT 	5
2520Sstevel@tonic-gate #define	FKFORMAT_TRACK 	6
2530Sstevel@tonic-gate 
2540Sstevel@tonic-gate /*
2550Sstevel@tonic-gate  * Used by FDKGETCHANGE, return state of the sense disk change bit.
2560Sstevel@tonic-gate  */
2570Sstevel@tonic-gate #define	FDKGC_HISTORY	0x01	/* disk has changed since last call */
2580Sstevel@tonic-gate #define	FDKGC_CURRENT	0x02	/* current state of disk change */
2590Sstevel@tonic-gate 
2600Sstevel@tonic-gate /*
2610Sstevel@tonic-gate  * Used by FDK{G, S}ETDRIVECHAR
2620Sstevel@tonic-gate  */
2630Sstevel@tonic-gate struct fdk_drive {
2640Sstevel@tonic-gate 	int fdd_ejectable;	/* does the drive support eject? */
2650Sstevel@tonic-gate 	int fdd_maxsearch;	/* size of per-unit search table */
2660Sstevel@tonic-gate 
2670Sstevel@tonic-gate 	int fdd_writeprecomp;	/* cyl to start write prcompensation */
2680Sstevel@tonic-gate 	int fdd_writereduce;	/* cyl to start recucing write current */
2690Sstevel@tonic-gate 	int fdd_stepwidth;	/* width of step pulse in 1 us units */
2700Sstevel@tonic-gate 	int fdd_steprate;	/* step rate in 100 us units */
2710Sstevel@tonic-gate 	int fdd_headsettle;	/* delay, in 100 us units */
2720Sstevel@tonic-gate 	int fdd_headload;	/* delay, in 100 us units */
2730Sstevel@tonic-gate 	int fdd_headunload;	/* delay, in 100 us units */
2740Sstevel@tonic-gate 	int fdd_motoron;	/* delay, in 100 ms units */
2750Sstevel@tonic-gate 	int fdd_motoroff;	/* delay, in 100 ms units */
2760Sstevel@tonic-gate 	int fdd_precomplevel;	/* bit shift, in nano-secs */
2770Sstevel@tonic-gate 	int fdd_pins;		/* defines meaning of pin 1, 2, 4, and 34 */
2780Sstevel@tonic-gate 	int fdd_flags;		/* TRUE READY, Starting Sector #, & Motor On */
2790Sstevel@tonic-gate };
2800Sstevel@tonic-gate 
2810Sstevel@tonic-gate /*
2820Sstevel@tonic-gate  * Used by FDK{G, S}ETSEARCH
2830Sstevel@tonic-gate  */
2840Sstevel@tonic-gate struct fdk_search {
2850Sstevel@tonic-gate 	int	fdk_numentries; /* number of elements in the table */
2860Sstevel@tonic-gate 	struct fdk_char *fdk_search;
2870Sstevel@tonic-gate };
2880Sstevel@tonic-gate 
2890Sstevel@tonic-gate /*
2900Sstevel@tonic-gate  * Used by F_RAW
2910Sstevel@tonic-gate  */
2920Sstevel@tonic-gate struct fdraw {
2930Sstevel@tonic-gate 	char	fr_cmd[10];	/* user-supplied command bytes */
2940Sstevel@tonic-gate 	short   fr_cnum;	/* number of command bytes */
2950Sstevel@tonic-gate 	char    fr_result[10];  /* controller-supplied result bytes */
2960Sstevel@tonic-gate 	short	fr_nbytes;	/* number to transfer if read/write command */
2970Sstevel@tonic-gate 	char	*fr_addr;	/* where to transfer if read/write command */
2980Sstevel@tonic-gate };
2990Sstevel@tonic-gate 
3000Sstevel@tonic-gate /*
3010Sstevel@tonic-gate  * Floppy raw commands
3020Sstevel@tonic-gate  */
3030Sstevel@tonic-gate #define	FRAW_SPECIFY	0x03
3040Sstevel@tonic-gate #define	FRAW_READID	0x0a
3050Sstevel@tonic-gate #define	FRAW_SENSE_DRV	0x04
3060Sstevel@tonic-gate #define	FRAW_REZERO	0x07
3070Sstevel@tonic-gate #define	FRAW_SEEK	0x0f
3080Sstevel@tonic-gate #define	FRAW_SENSE_INT	0x08
3090Sstevel@tonic-gate #define	FRAW_FORMAT	0x0d
3100Sstevel@tonic-gate #define	FRAW_READTRACK	0x02
3110Sstevel@tonic-gate #define	FRAW_WRCMD	0x05
3120Sstevel@tonic-gate #define	FRAW_RDCMD	0x06
3130Sstevel@tonic-gate #define	FRAW_WRITEDEL	0x09
3140Sstevel@tonic-gate #define	FRAW_READDEL	0x0c
3150Sstevel@tonic-gate 
3160Sstevel@tonic-gate /*
3170Sstevel@tonic-gate  * Severity values
3180Sstevel@tonic-gate  */
3190Sstevel@tonic-gate #define	DK_NOERROR	0
3200Sstevel@tonic-gate #define	DK_CORRECTED	1
3210Sstevel@tonic-gate #define	DK_RECOVERED	2
3220Sstevel@tonic-gate #define	DK_FATAL	3
3230Sstevel@tonic-gate 
3240Sstevel@tonic-gate /*
3250Sstevel@tonic-gate  * Error types
3260Sstevel@tonic-gate  */
3270Sstevel@tonic-gate #define	DK_NONMEDIA	0		/* not caused by a media defect */
3280Sstevel@tonic-gate #define	DK_ISMEDIA	1		/* caused by a media defect */
3290Sstevel@tonic-gate 
3300Sstevel@tonic-gate 
3310Sstevel@tonic-gate /*
3320Sstevel@tonic-gate  * Disk io control commands
3330Sstevel@tonic-gate  */
334*722Smuffin #define	DKIOCGGEOM	_IOR('d', 2, struct dk_geom)	/* Get geometry */
335*722Smuffin #define	DKIOCSGEOM	_IOW('d', 3, struct dk_geom)	/* Set geometry */
336*722Smuffin #define	DKIOCGPART	_IOR('d', 4, struct dk_map)	/* Get partition info */
337*722Smuffin #define	DKIOCSPART	_IOW('d', 5, struct dk_map)	/* Set partition info */
338*722Smuffin #define	DKIOCINFO	_IOR('d', 8, struct dk_info)	/* Get info */
339*722Smuffin #define	DKIOCGCONF	_IOR('d', 126, struct dk_conf)	/* Get conf info */
340*722Smuffin #define	DKIOCSTYPE	_IOW('d', 125, struct dk_type)	/* Set drive info */
341*722Smuffin #define	DKIOCGTYPE	_IOR('d', 124, struct dk_type)	/* Get drive info */
342*722Smuffin #define	DKIOCSAPART	_IOW('d', 123, struct dk_allmap)	/* Set all partitions */
343*722Smuffin #define	DKIOCGAPART	_IOR('d', 122, struct dk_allmap)	/* Get all partitions */
344*722Smuffin #define	DKIOCSBAD	_IOW('d', 121, struct dk_badmap)	/* Set bad sector map */
345*722Smuffin #define	DKIOCGBAD	_IOW('d', 120, struct dk_badmap)	/* Get bad sector map */
346*722Smuffin #define	DKIOCSCMD	_IOW('d', 119, struct dk_cmd)	/* Set generic cmd */
347*722Smuffin #define	DKIOCGLOG	_IOR('d', 118, struct dk_loghdr)	/* Get error log */
348*722Smuffin #define	DKIOCGDIAG	_IOR('d', 116, struct dk_diag)	/* Get diagnostics */
349*722Smuffin #define	DKIOCWCHK	_IOWR('d', 115, int)		/* Toggle write check */
350*722Smuffin #define	FDKIOGCHAR	_IOR('d', 114, struct fdk_char)	/* GetCharacteristics */
351*722Smuffin #define	FDKIOSCHAR	_IOW('d', 113, struct fdk_char)	/* SetCharacteristics */
352*722Smuffin #define	FDKEJECT	_IO('d', 112)			/* Eject floppy disk */
353*722Smuffin #define	FDKGETCHANGE	_IOR('d', 111, int)		/* Get diskchng stat */
354*722Smuffin #define	FDKGETDRIVECHAR	_IOR('d', 110, struct fdk_drive)	/* Get drivechar */
355*722Smuffin #define	FDKSETDRIVECHAR	_IOW('d', 109, struct fdk_drive)	/* Set drivechar */
356*722Smuffin #define	FDKGETSEARCH	_IOR('d', 108, struct fdk_search)	/* Get search tbl */
357*722Smuffin #define	FDKSETSEARCH	_IOW('d', 107, struct fdk_search)	/* Set search tbl */
358*722Smuffin #define	FDKIOCSCMD	_IOWR('d', 106, struct fdk_cmd)	/* Floppy command */
359*722Smuffin #define	F_RAW		_IOWR('d', 105, struct fdraw)	/* ECDstyle genericcmd*/
3600Sstevel@tonic-gate 
361*722Smuffin #endif /* !_sun_dkio_h */
362