Print this page
10519 Convert fdio(7I) to mandoc

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man7i/fdio.7i
          +++ new/usr/src/man/man7i/fdio.7i
   1      -'\" te
   2    1  .\"  Copyright (c) 2001, Sun Microsystems, Inc.  All Rights Reserved
   3      -.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
   4      -.\" 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.
   5      -.\" 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]
   6      -.TH FDIO 7I "Apr 26, 2001"
   7      -.SH NAME
   8      -fdio \- floppy disk control operations
   9      -.SH SYNOPSIS
  10      -.LP
  11      -.nf
  12      -\fB#include <sys/fdio.h>\fR
  13      -.fi
  14      -
  15      -.SH DESCRIPTION
  16      -.sp
  17      -.LP
  18      -The Solaris floppy driver supports a set of \fBioctl\fR(2) requests for getting
  19      -and setting the floppy drive characteristics. Basic to these  \fBioctl\fR(\|)
  20      -requests are the definitions in \fB<sys/fdio.h>\fR\&.
  21      -.SH IOCTLS
  22      -.sp
  23      -.LP
  24      -The following \fBioctl\fR(\|) requests are available on the Solaris floppy
  25      -driver.
  26      -.sp
  27      -.ne 2
  28      -.na
  29      -\fB\fBFDDEFGEOCHAR\fR\fR
  30      -.ad
  31      -.RS 16n
  32      -x86 based systems:  This \fBioctl\fR(\|) forces the floppy driver to restore
        2 +.\"  Copyright (c) 2017, Joyent, Inc.
        3 +.\" The contents of this file are subject to the terms of the
        4 +.\" Common Development and Distribution License (the "License").
        5 +.\" You may not use this file except in compliance with the License.
        6 +.\"
        7 +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
        8 +.\" or http://www.opensolaris.org/os/licensing.
        9 +.\" See the License for the specific language governing permissions
       10 +.\" and limitations under the License.
       11 +.\"
       12 +.\" When distributing Covered Code, include this CDDL HEADER in each
       13 +.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
       14 +.\" If applicable, add the following below this CDDL HEADER, with the
       15 +.\" fields enclosed by brackets "[]" replaced with your own identifying
       16 +.\" information: Portions Copyright [yyyy] [name of copyright owner]
       17 +.Dd October 22, 2017
       18 +.Dt FDIO 7I
       19 +.Os
       20 +.Sh NAME
       21 +.Nm fdio
       22 +.Nd floppy disk control operations
       23 +.Sh SYNOPSIS
       24 +.In sys/fdio.h
       25 +.Sh DESCRIPTION
       26 +The Solaris floppy driver supports a set of
       27 +.Xr ioctl 2
       28 +requests for getting and setting the floppy drive characteristics.
       29 +Basic to these
       30 +.Xr ioctl 2
       31 +requests are the definitions in
       32 +.In sys/fdio.h .
       33 +.Sh IOCTLS
       34 +The following
       35 +.Xr ioctl 2
       36 +requests are available on the Solaris floppy driver.
       37 +.Bl -tag -width FDDEFGEOCHAR
       38 +.It Dv FDDEFGEOCHAR
       39 +x86 based systems:  This
       40 +.Xr ioctl 2
       41 +forces the floppy driver to restore
  33   42  the diskette and drive characteristics and geometry, and partition information
  34   43  to default values based on the device configuration.
  35      -.RE
  36      -
  37      -.sp
  38      -.ne 2
  39      -.na
  40      -\fB\fBFDGETCHANGE\fR\fR
  41      -.ad
  42      -.RS 16n
  43      -The argument is a pointer to an \fBint.\fR This \fBioctl\fR(\|) returns the
  44      -status of the diskette-changed signal from the floppy interface. The following
  45      -defines are provided for cohesion.
  46      -.RE
  47      -
  48      -.sp
  49      -.LP
  50      -Note: For x86 based systems, use \fBFDGC_DETECTED\fR (which is available only
  51      -on x86 based systems) instead of \fBFDGC_HISTORY.\fR
  52      -.sp
  53      -.in +2
  54      -.nf
       44 +.It Dv FDGETCHANGE
       45 +The argument is a pointer to an
       46 +.Vt int .
       47 +This
       48 +.Xr ioctl 2
       49 +returns the status of the diskette-changed signal from the floppy interface.
       50 +The following defines are provided for cohesion.
       51 +.El
       52 +.Pp
       53 +Note: For x86 based systems, use
       54 +.Dv FDGC_DETECTED
       55 +(which is available only on x86 based systems) instead of
       56 +.Dv FDGC_HISTORY .
       57 +.Bd -literal -offset 2n
  55   58  /*
  56   59   * Used by FDGETCHANGE, returned state of the sense disk change bit.
  57   60   */
  58      -#define FDGC_HISTORY  0x01       /* disk has changed since insertion or
  59      -                                  last FDGETCHANGE call */
  60      -#define FDGC_CURRENT  0x02       /* if set, indicates drive has floppy,
  61      ->                                 otherwise, drive is empty */
       61 +#define FDGC_HISTORY  0x01       /*
       62 +                                  * disk has changed since insertion or
       63 +                                  * last FDGETCHANGE call
       64 +                                  */
       65 +#define FDGC_CURRENT  0x02       /*
       66 +                                  * if set, indicates drive has floppy,
       67 +                                  * otherwise, drive is empty
       68 +                                  */
  62   69  #define FDGC_CURWPROT 0x10       /* current state of write protect */
  63   70  #define FDGC_DETECTED 0x20       /* previous state of DISK CHANGE */
  64      -.fi
  65      -.in -2
  66      -
  67      -.sp
  68      -.ne 2
  69      -.na
  70      -\fB\fBFDIOGCHAR\fR\fR
  71      -.ad
  72      -.RS 13n
  73      -The argument is a pointer to an \fBfd_char\fR structure (described below). This
  74      -\fBioctl\fR(\|) gets the characteristics of the floppy diskette from the floppy
  75      -controller.
  76      -.RE
  77      -
  78      -.sp
  79      -.ne 2
  80      -.na
  81      -\fB\fBFDIOSCHAR\fR\fR
  82      -.ad
  83      -.RS 13n
  84      -The argument is a pointer to an \fBfd_char\fR structure (described below). This
  85      -\fBioctl\fR(\|) sets the characteristics of the floppy diskette for the floppy
  86      -controller. Typical values in the  \fBfd_char\fR structure for a high density
  87      -diskette:
  88      -.sp
  89      -.in +2
  90      -.nf
  91      -field value
  92      -fdc_medium      0
  93      -fdc_transfer_rate       500
  94      -fdc_ncyl        80
  95      -fdc_nhead       2
  96      -fdc_sec_size    512
  97      -fdc_secptrack   18
  98      -fdc_steps       -1      { This field doesn't apply. }
  99      -.fi
 100      -.in -2
 101      -
 102      -.RE
 103      -
 104      -.sp
 105      -.in +2
 106      -.nf
       71 +.Ed
       72 +.Bl -tag -width FDIOGCHAR
       73 +.It Dv FDIOGCHAR
       74 +The argument is a pointer to an
       75 +.Vt fd_char
       76 +structure (described below).
       77 +This
       78 +.Xr ioctl 2
       79 +gets the characteristics of the floppy diskette from the floppy controller.
       80 +.It Dv FDIOSCHAR
       81 +The argument is a pointer to an
       82 +.Vt fd_char
       83 +structure (described below).
       84 +This
       85 +.Xr ioctl 2
       86 +sets the characteristics of the floppy diskette for the floppy controller.
       87 +Typical values in the
       88 +.Vt fd_char
       89 +structure for a high density diskette:
       90 +.Bl -column fdc_stransfer_rate value "{ This field doesn't apply. }"
       91 +.It Field Ta Value Ta
       92 +.It fdc_medium Ta 0 Ta
       93 +.It fdc_transfer_rate Ta 500 Ta
       94 +.It fdc_ncyl Ta 80 Ta
       95 +.It fdc_nhead Ta 2 Ta
       96 +.It fdc_sec_size Ta 512 Ta
       97 +.It fdc_secptrack Ta 18 Ta
       98 +.It fdc_steps Ta -1 Ta { This field doesn't apply. }
       99 +.El
      100 +.El
      101 +.Bd -literal -offset 2n
 107  102  /*
 108  103   * Floppy characteristics
 109  104   */
 110  105  struct fd_char {
 111      - uchar_t fdc_medium;     /* equals 1 if floppy is medium density format */
 112      - int fdc_transfer_rate;  /* transfer rate */
 113      - int fdc_ncyl;           /* number of cylinders */
 114      - int fdc_nhead;          /* number of heads */
 115      - int fdc_sec_size;       /* sector size */
 116      - int fdc_secptrack;      /* sectors per track */
 117      - int fdc_steps;          /* no. of steps per data track */
      106 + uchar_t fdc_medium;    /* equals 1 if floppy is medium density format */
      107 + int fdc_transfer_rate; /* transfer rate */
      108 + int fdc_ncyl;          /* number of cylinders */
      109 + int fdc_nhead;         /* number of heads */
      110 + int fdc_sec_size;      /* sector size */
      111 + int fdc_secptrack;     /* sectors per track */
      112 + int fdc_steps;         /* no. of steps per data track */
 118  113  };
 119      -.fi
 120      -.in -2
 121      -
 122      -.sp
 123      -.ne 2
 124      -.na
 125      -\fB\fBFDGETDRIVECHAR\fR\fR
 126      -.ad
 127      -.RS 18n
 128      -The argument to this \fBioctl\fR(\|) is a pointer to an \fBfd_drive\fR
 129      -structure (described below). This \fBioctl\fR(\|) gets the characteristics of
 130      -the floppy drive from the floppy controller.
 131      -.RE
 132      -
 133      -.sp
 134      -.ne 2
 135      -.na
 136      -\fB\fBFDSETDRIVECHAR\fR\fR
 137      -.ad
 138      -.RS 18n
 139      -x86 based systems:  The argument to this \fBioctl\fR(\|) is a pointer to an
 140      -\fBfd_drive\fR structure (described below). This \fBioctl\fR(\|) sets the
 141      -characteristics of the floppy drive for the floppy controller. Only
 142      -\fBfdd_steprate\fR, \fBfdd_headsettle\fR, \fBfdd_motoron\fR, and
 143      -\fBfdd_motoroff\fR are actually used by the floppy disk driver.
 144      -.RE
 145      -
 146      -.sp
 147      -.in +2
 148      -.nf
      114 +.Ed
      115 +.Bl -tag -width FDGETDRIVECHAR
      116 +.It Dv FDGETDRIVECHAR
      117 +The argument to this
      118 +.Xr ioctl 2
      119 +is a pointer to an
      120 +.Vt fd_drive
      121 +structure (described below).
      122 +This
      123 +.Xr ioctl 2
      124 +gets the characteristics of the floppy drive from the floppy controller.
      125 +.It Dv FDSETDRIVECHAR
      126 +x86 based systems:  The argument to this
      127 +.Xr ioctl 2
      128 +is a pointer to an
      129 +.Vt fd_drive
      130 +structure (described below).
      131 +This
      132 +.Xr ioctl 2
      133 +sets the characteristics of the floppy drive for the floppy controller.
      134 +Only
      135 +.Fa fdd_steprate ,
      136 +.Fa fdd_headsettle ,
      137 +.Fa fdd_motoron ,
      138 +and
      139 +.Fa fdd_motoroff
      140 +are actually used by the floppy disk driver.
      141 +.El
      142 +.Bd -literal -offset 2n
 149  143  /*
 150  144   * Floppy Drive characteristics
 151  145   */
 152  146  struct fd_drive {
 153      -        int     fdd_ejectable;    /* does the drive support eject? */
 154      -        int     fdd_maxsearch;    /* size of per-unit search table */
 155      -        int     fdd_writeprecomp; /* cyl to start write precompensation */
 156      -        int     fdd_writereduce;  /* cyl to start recucing write current */
 157      -        int     fdd_stepwidth;    /* width of step pulse in 1 us units */
 158      -        int     fdd_steprate;     /* step rate in 100 us units */
 159      -        int     fdd_headsettle;   /* delay, in 100 us units */
 160      -        int     fdd_headload;     /* delay, in 100 us units */
 161      -        int     fdd_headunload;   /* delay, in 100 us units */
 162      -        int     fdd_motoron;      /* delay, in 100 ms units */
 163      -        int     fdd_motoroff;     /* delay, in 100 ms units */
 164      -        int     fdd_precomplevel; /* bit shift, in nano-secs */
 165      -        int     fdd_pins;         /* defines meaning of pin 1, 2, 4 and 34 */
 166      -        int     fdd_flags;        /* TRUE READY, Starting Sector #, & Motor On */
      147 +    int fdd_ejectable;    /* does the drive support eject? */
      148 +    int fdd_maxsearch;    /* size of per-unit search table */
      149 +    int fdd_writeprecomp; /* cyl to start write precompensation */
      150 +    int fdd_writereduce;  /* cyl to start recucing write current */
      151 +    int fdd_stepwidth;    /* width of step pulse in 1 us units */
      152 +    int fdd_steprate;     /* step rate in 100 us units */
      153 +    int fdd_headsettle;   /* delay, in 100 us units */
      154 +    int fdd_headload;     /* delay, in 100 us units */
      155 +    int fdd_headunload;   /* delay, in 100 us units */
      156 +    int fdd_motoron;      /* delay, in 100 ms units */
      157 +    int fdd_motoroff;     /* delay, in 100 ms units */
      158 +    int fdd_precomplevel; /* bit shift, in nano-secs */
      159 +    int fdd_pins;         /* defines meaning of pin 1, 2, 4 and 34 */
      160 +    int fdd_flags;        /* TRUE READY, Starting Sector #, & Motor On */
 167  161  };
 168      -.fi
 169      -.in -2
 170      -
 171      -.sp
 172      -.ne 2
 173      -.na
 174      -\fB\fBFDGETSEARCH\fR\fR
 175      -.ad
 176      -.RS 15n
      162 +.Ed
      163 +.Bl -tag -width FDGETSEARCH
      164 +.It Dv FDGETSEARCH
 177  165  Not available.
 178      -.RE
 179      -
 180      -.sp
 181      -.ne 2
 182      -.na
 183      -\fB\fBFDSETSEARCH\fR\fR
 184      -.ad
 185      -.RS 15n
      166 +.It Dv FDSETSEARCH
 186  167  Not available.
 187      -.RE
 188      -
 189      -.sp
 190      -.ne 2
 191      -.na
 192      -\fB\fBFDEJECT\fR\fR
 193      -.ad
 194      -.RS 15n
 195      -SPARC:  This \fBioctl\fR(\|) requests the floppy drive to eject the diskette.
 196      -.RE
 197      -
 198      -.sp
 199      -.ne 2
 200      -.na
 201      -\fB\fBFDIOCMD\fR\fR
 202      -.ad
 203      -.RS 15n
 204      -The argument is a pointer to an \fBfd_cmd\fR structure (described below). This
 205      -\fBioctl\fR(\|) allows access to the floppy diskette using the floppy device
 206      -driver.  Only the \fBFDCMD_WRITE\fR, \fBFDCMD_READ\fR, and
 207      -\fBFDCMD_FORMAT_TRACK\fR commands are currently available.
 208      -.RE
 209      -
 210      -.sp
 211      -.in +2
 212      -.nf
      168 +.It Dv FDEJECT
      169 +SPARC:  This
      170 +.Xr ioctl 2
      171 +requests the floppy drive to eject the diskette.
      172 +.It Dv FDIOCMD
      173 +The argument is a pointer to an
      174 +.Vt fd_cmd
      175 +structure (described below).
      176 +This
      177 +.Xr ioctl 2
      178 +allows access to the floppy diskette using the floppy device driver.
      179 +Only the
      180 +.Dv FDCMD_WRITE ,
      181 +.Dv FDCMD_READ ,
      182 +and
      183 +.Dv FDCMD_FORMAT_TRACK
      184 +commands are currently available.
      185 +.El
      186 +.Bd -literal -offset 2n
 213  187  struct fd_cmd {
 214  188          ushort_t fdc_cmd;      /* command to be executed */
 215  189          int      fdc_flags;    /* execution flags (x86 only) */
 216  190          daddr_t  fdc_blkno;    /* disk address for command */
 217  191          int      fdc_secnt;    /* sector count for command */
 218  192          caddr_t  fdc_bufaddr;  /* user's buffer address */
 219  193          uint_t   fdc_buflen;   /* size of user's buffer */
 220  194  };
 221      -.fi
 222      -.in -2
 223      -
 224      -.sp
 225      -.LP
 226      -Please note that the \fBfdc_buflen\fR field is currently unused. The
 227      -\fBfdc_secnt\fR field is used to calculate the transfer size, and the buffer is
      195 +.Ed
      196 +.Pp
      197 +Please note that the
      198 +.Fa fdc_buflen
      199 +field is currently unused.
      200 +The
      201 +.Fa fdc_secnt
      202 +field is used to calculate the transfer size, and the buffer is
 228  203  assumed to be large enough to accommodate the transfer.
 229      -.sp
 230      -.in +2
 231      -.nf
 232      -{
      204 +.Bd -literal -offset 2n
 233  205  /*
 234      -* Floppy commands
      206 + * Floppy commands
 235  207   */
 236  208  #define FDCMD_WRITE     1
 237  209  #define FDCMD_READ      2
 238  210  #define FDCMD_SEEK      3
 239  211  #define FDCMD_REZERO    4
 240  212  #define FDCMD_FORMAT_UNIT       5
 241  213  #define FDCMD_FORMAT_TRACK      6
 242      -};
 243      -.fi
 244      -.in -2
 245      -
 246      -.sp
 247      -.ne 2
 248      -.na
 249      -\fB\fBFDRAW\fR\fR
 250      -.ad
 251      -.RS 9n
 252      -The argument is a pointer to an \fBfd_raw\fR structure (described below).
 253      -This \fBioctl\fR(\|) allows direct control of the floppy drive using the floppy
 254      -controller. Refer to the appropriate floppy-controller data sheet for full
 255      -details on required command bytes and returned result bytes. The following
 256      -commands are supported.
 257      -.RE
 258      -
 259      -.sp
 260      -.in +2
 261      -.nf
      214 +.Ed
      215 +.Bl -tag -width FDRAW
      216 +.It Dv FDRAW
      217 +The argument is a pointer to an
      218 +.Vt fd_raw
      219 +structure (described below).
      220 +This
      221 +.Xr ioctl 2
      222 +allows direct control of the floppy drive using the floppy controller.
      223 +Refer to the appropriate floppy-controller data sheet for full
      224 +details on required command bytes and returned result bytes.
      225 +The following commands are supported.
      226 +.El
      227 +.Bd -literal -offset 2n
 262  228  /*
 263      -* Floppy raw commands
 264      -*/
      229 + * Floppy raw commands
      230 + */
 265  231  #define FDRAW_SPECIFY   0x03
 266  232  #define FDRAW_READID    0x0a    (x86 only)
 267  233  #define FDRAW_SENSE_DRV 0x04
 268  234  #define FDRAW_REZERO    0x07
 269  235  #define FDRAW_SEEK      0x0f
 270  236  #define FDRAW_SENSE_INT 0x08    (x86 only)
 271  237  #define FDRAW_FORMAT    0x0d
 272  238  #define FDRAW_READTRACK 0x02
 273  239  #define FDRAW_WRCMD     0x05
 274  240  #define FDRAW_RDCMD     0x06
 275  241  #define FDRAW_WRITEDEL  0x09
 276  242  #define FDRAW_READDEL   0x0c
 277      -.fi
 278      -.in -2
 279      -
 280      -.sp
 281      -.LP
 282      -Please note that when using  \fBFDRAW_SEEK\fR or  \fBFDRAW_REZERO,\fR the
 283      -driver automatically issues a  \fBFDRAW_SENSE_INT\fR command to clear the
 284      -interrupt from the  \fBFDRAW_SEEK\fR or the  \fBFDRAW_REZERO.\fR The result
 285      -bytes returned by these commands are the results from the
 286      -\fBFDRAW_SENSE_INT\fR command.  Please see the floppy-controller data sheet for
 287      -more details on \fBFDRAW_SENSE_INT.\fR
 288      -.sp
 289      -.in +2
 290      -.nf
      243 +.Ed
      244 +.Pp
      245 +Please note that when using
      246 +.Dv FDRAW_SEEK
      247 +or
      248 +.Dv FDRAW_REZERO ,
      249 +the driver automatically issues a
      250 +.Dv FDRAW_SENSE_INT
      251 +command to clear the interrupt from the
      252 +.Dv FDRAW_SEEK
      253 +or the
      254 +.Dv FDRAW_REZERO .
      255 +The result bytes returned by these commands are the results from the
      256 +.Dv DRAW_SENSE_INT
      257 +command.
      258 +Please see the floppy-controller data sheet for
      259 +more details on
      260 +.Dv FDRAW_SENSE_INT .
      261 +.Bd -literal -offset 2n
 291  262  /*
 292  263   * Used by FDRAW
 293  264   */
 294  265  struct    fd_raw {
 295      - char     fdr_cmd[10];     /* user-supplied command bytes */
 296      - short    fdr_cnum;        /* number of command bytes */
 297      - char     fdr_result[10];  /* controller-supplied result bytes */
 298      - ushort_t fdr_nbytes;      /* number to transfer if read/write command */
 299      - char     *fdr_addr;       /* where to transfer if read/write command */
      266 +   char     fdr_cmd[10];   /* user-supplied command bytes */
      267 +   short    fdr_cnum;      /* number of command bytes */
      268 +   char     fdr_result[10];  /* controller-supplied result bytes */
      269 +   ushort_t fdr_nbytes;    /* number to transfer if read/write command */
      270 +   char     *fdr_addr;     /* where to transfer if read/write command */
 300  271  };
 301      -.fi
 302      -.in -2
 303      -
 304      -.SH SEE ALSO
 305      -.sp
 306      -.LP
 307      -\fBioctl\fR(2), \fBdkio\fR(7I), \fBfd\fR(7D), \fBhdio\fR(7I)
      272 +.Ed
      273 +.Sh SEE ALSO
      274 +.Xr ioctl 2 ,
      275 +.Xr fd 7D ,
      276 +.Xr dkio 7I ,
      277 +.Xr hdio 7I
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX