Annotation of sys/dev/isa/fdlink.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: fdlink.h,v 1.9 2007/04/10 17:47:55 miod Exp $ */
2:
3: /*-
4: * Copyright (c) 1993, 1994, 1995 Charles Hannum.
5: * Copyright (c) 1990 The Regents of the University of California.
6: * All rights reserved.
7: *
8: * This code is derived from software contributed to Berkeley by
9: * Don Ahn.
10: *
11: * Portions Copyright (c) 1993, 1994 by
12: * jc@irbs.UUCP (John Capo)
13: * vak@zebub.msk.su (Serge Vakulenko)
14: * ache@astral.msk.su (Andrew A. Chernov)
15: * joerg_wunsch@uriah.sax.de (Joerg Wunsch)
16: *
17: * Redistribution and use in source and binary forms, with or without
18: * modification, are permitted provided that the following conditions
19: * are met:
20: * 1. Redistributions of source code must retain the above copyright
21: * notice, this list of conditions and the following disclaimer.
22: * 2. Redistributions in binary form must reproduce the above copyright
23: * notice, this list of conditions and the following disclaimer in the
24: * documentation and/or other materials provided with the distribution.
25: * 3. Neither the name of the University nor the names of its contributors
26: * may be used to endorse or promote products derived from this software
27: * without specific prior written permission.
28: *
29: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39: * SUCH DAMAGE.
40: *
41: */
42:
43: /*
44: * The goo that binds the floppy controller to its devices.
45: */
46:
47: enum fdc_state {
48: DEVIDLE = 0,
49: MOTORWAIT,
50: DOSEEK,
51: SEEKWAIT,
52: SEEKTIMEDOUT,
53: SEEKCOMPLETE,
54: DOIO,
55: IOCOMPLETE,
56: IOTIMEDOUT,
57: DORESET,
58: RESETCOMPLETE,
59: RESETTIMEDOUT,
60: DORECAL,
61: RECALWAIT,
62: RECALTIMEDOUT,
63: RECALCOMPLETE
64: };
65:
66: enum fdc_type {
67: FDC_TYPE_TAPE,
68: FDC_TYPE_DISK
69: };
70:
71:
72: /* software state, per controller */
73: struct fd_softc;
74: struct fdc_fdlink {
75: struct fd_softc *sc_fd[4]; /* pointers to children */
76: TAILQ_HEAD(drivehead, fd_softc) sc_drives;
77: };
78:
79: struct ft_softc;
80: struct fdc_ftlink {
81: struct ft_softc *sc_ft[4]; /* pointers to children */
82: };
83:
84: struct fdc_softc {
85: struct device sc_dev; /* boilerplate */
86: struct isadev sc_id;
87: void *sc_ih;
88:
89: bus_space_tag_t sc_iot; /* ISA chipset identifier */
90: bus_space_handle_t sc_ioh; /* ISA io handle */
91: bus_space_handle_t sc_ioh_ctl; /* ISA io handle */
92:
93: int sc_drq;
94:
95: enum fdc_type sc_type[4]; /* type of device */
96: union {
97: struct fdc_fdlink fdlink;
98: struct fdc_ftlink ftlink;
99: } sc_link;
100: enum fdc_state sc_state;
101: int sc_errors; /* number of retries so far */
102: struct timeout fdcpseudointr_to;
103: u_char sc_status[7]; /* copy of registers */
104: };
105:
106: /*
107: * Arguments passed between fdcattach and f[dt]probe.
108: */
109: struct fdc_attach_args {
110: int fa_drive;
111: int fa_flags;
112: int fa_type; /* tape drive type */
113: struct fd_type *fa_deftype;
114: };
115:
116: /* Functions from fdc.c. */
117: int fdcresult(struct fdc_softc *);
118: int out_fdc(bus_space_tag_t, bus_space_handle_t, u_char);
119: void fdcstart(struct fdc_softc *);
120: void fdcstatus(struct device *, int, char *);
121: void fdcpseudointr(void *);
122:
123: /* Functions from fd.c. */
124: struct fd_type *fd_nvtotype(char *, int, int);
CVSweb