[BACK]Return to fdlink.h CVS log [TXT][DIR] Up to [local] / sys / dev / isa

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