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