add probe op
[unix-history] / usr / src / sys / tahoe / vba / vdreg.h
index a859a2b..64625cf 100644 (file)
@@ -1,4 +1,21 @@
-/*     vdreg.h 1.11    87/06/30        */
+/*
+ * Copyright (c) 1988 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ *     @(#)vdreg.h     7.4 (Berkeley) %G%
+ */
 
 /*
  * Versabus VDDC/SMDE disk controller definitions.
 
 /*
  * Versabus VDDC/SMDE disk controller definitions.
@@ -62,6 +79,9 @@ struct vddevice {
 #define        STA_DF  0x8             /* drive fault */
 #define        STA_WP  0x10            /* write protected */
 #define        STA_US  0x20            /* unit selected */
 #define        STA_DF  0x8             /* drive fault */
 #define        STA_WP  0x10            /* write protected */
 #define        STA_US  0x20            /* unit selected */
+#define        STA_TYPE        0x300   /* drive type: */
+#define        STA_SMD         0x000           /* SMD */
+#define        STA_ESDI        0x100           /* ESDI */
 
 /*
  * Interupt Control Field definitions.
 
 /*
  * Interupt Control Field definitions.
@@ -86,11 +106,12 @@ struct vddevice {
 #define        CCF_STS 0x1             /* sectors per track selectable */
 #define        CCF_EAV 0x2             /* enable auto vector */
 #define        CCF_ERR 0x4             /* enable reset register */
 #define        CCF_STS 0x1             /* sectors per track selectable */
 #define        CCF_EAV 0x2             /* enable auto vector */
 #define        CCF_ERR 0x4             /* enable reset register */
-#define CCF_DER 0x8            /* disable error recovery */
+#define CCF_RFE 0x8            /* recovery flag enable */
 #define        CCF_XMD 0x60            /* xmd transfer mode (bus size) */
 #define          XMD_8BIT  0x20        /*   do only 8 bit transfers */
 #define          XMD_16BIT 0x40        /*   do only 16 bit transfers */
 #define          XMD_32BIT 0x60        /*   do only 32 bit transfers */
 #define        CCF_XMD 0x60            /* xmd transfer mode (bus size) */
 #define          XMD_8BIT  0x20        /*   do only 8 bit transfers */
 #define          XMD_16BIT 0x40        /*   do only 16 bit transfers */
 #define          XMD_32BIT 0x60        /*   do only 32 bit transfers */
+#define        CCF_DIU 0x80            /* disable initial update of DCB @cmd start */
 #define        CCF_BSZ 0x300           /* burst size */
 #define          BSZ_16WRD 0x000       /*   16 word transfer burst */
 #define          BSZ_12WRD 0x100       /*   12 word transfer burst */
 #define        CCF_BSZ 0x300           /* burst size */
 #define          BSZ_16WRD 0x000       /*   16 word transfer burst */
 #define          BSZ_12WRD 0x100       /*   12 word transfer burst */
@@ -235,7 +256,7 @@ struct treset {
 /* ident trailer */
 struct trid {
        long    name;
 /* ident trailer */
 struct trid {
        long    name;
-       long    id;
+       long    rev;
        long    date;
 };
 
        long    date;
 };
 
@@ -251,7 +272,7 @@ struct dcb {
        char    devselect;      /* drive selection */
        char    trailcnt;       /* trailer Word Count */
        long    err_memadr;     /* error memory address */
        char    devselect;      /* drive selection */
        char    trailcnt;       /* trailer Word Count */
        long    err_memadr;     /* error memory address */
-       char    err_code;       /* error codes for SMD/E */
+       u_char  err_code;       /* error codes for SMD/E */
        char    fill2;          /* not used */
        short   err_wcount;     /* error word count */
        char    err_trk;        /* error track/sector */
        char    fill2;          /* not used */
        short   err_wcount;     /* error word count */
        char    err_trk;        /* error track/sector */
@@ -279,7 +300,7 @@ struct skdcb {
        char    devselect;      /* drive selection */
        char    trailcnt;       /* trailer Word Count */
        long    err_memadr;     /* error memory address */
        char    devselect;      /* drive selection */
        char    trailcnt;       /* trailer Word Count */
        long    err_memadr;     /* error memory address */
-       char    err_code;       /* error codes for SMD/E */
+       u_char  err_code;       /* error codes for SMD/E */
        char    fill2;          /* not used */
        short   err_wcount;     /* error word count */
        char    err_trk;        /* error track/sector */
        char    fill2;          /* not used */
        short   err_wcount;     /* error word count */
        char    err_trk;        /* error track/sector */
@@ -316,6 +337,7 @@ struct skdcb {
 #define        VDOP_CONFIG     0xe00           /* reset & configure drive */
 #define        VDOP_STATUS     0xf00           /* get drive status */
 #define        VDOP_IDENT      0x700           /* identify controller */
 #define        VDOP_CONFIG     0xe00           /* reset & configure drive */
 #define        VDOP_STATUS     0xf00           /* get drive status */
 #define        VDOP_IDENT      0x700           /* identify controller */
+#define        VDOP_PROBE      0x500           /* probe drives and update status */
 
 #define        VDOP_ABORT      0x80000000      /* abort current command */
 
 
 #define        VDOP_ABORT      0x80000000      /* abort current command */
 
@@ -403,3 +425,12 @@ typedef union {
 #define        VDUF    0x4000          /* User Fault 1=good sector */
 #define        VDALT   0x2000          /* Alternate Sector 1=alternate */
 #define        VDWPT   0x1000          /* Write Protect 1=Read Only Sector */
 #define        VDUF    0x4000          /* User Fault 1=good sector */
 #define        VDALT   0x2000          /* Alternate Sector 1=alternate */
 #define        VDWPT   0x1000          /* Write Protect 1=Read Only Sector */
+
+/* input register assignments for DIOCWFORMAT ioctl */
+#define        dk_op           df_reg[0]       /* opcode */
+#define        dk_althdr       df_reg[1]       /* alt. sect. header, in an int! */
+#define        dk_fmtflags     df_reg[2]       /* header format flags */
+
+/* output register assignments for DIOCWFORMAT ioctl */
+#define        dk_operrsta     df_reg[0]       /* dcb operrsta */
+#define        dk_ecode        df_reg[1]       /* smd-e err_code */