The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/isa/fdreg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: fdreg.h,v 1.4 2003/09/23 21:36:08 mycroft Exp $        */
    2 
    3 /*-
    4  * Copyright (c) 1991 The Regents of the University of California.
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  * 3. Neither the name of the University nor the names of its contributors
   16  *    may be used to endorse or promote products derived from this software
   17  *    without specific prior written permission.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   29  * SUCH DAMAGE.
   30  *
   31  *      @(#)fdreg.h     7.1 (Berkeley) 5/9/91
   32  */
   33 
   34 /*
   35  * AT floppy controller registers and bitfields
   36  */
   37 
   38 /* uses NEC765 controller */
   39 #include <dev/ic/nec765reg.h>
   40 
   41 /* registers */
   42 #define fdout   0       /* Digital Output Register (W) */
   43 #define FDO_FDSEL       0x03    /*  floppy device select */
   44 #define FDO_FRST        0x04    /*  floppy controller reset */
   45 #define FDO_FDMAEN      0x08    /*  enable floppy DMA and Interrupt */
   46 #define FDO_MOEN(n)     ((1 << n) * 0x10)       /* motor enable */
   47 
   48 #define fdsts   2       /* NEC 765 Main Status Register (R) */
   49 #define FDS_DRVBUSY(n)  ((1 << n) * 0x01)       /* drive busy */
   50 
   51 #define fddata  3       /* NEC 765 Data Register (R/W) */
   52 
   53 #define fdctl   5       /* Control Register (W) */
   54 #define FDC_500KBPS     0x00    /* 500KBPS MFM drive transfer rate */
   55 #define FDC_300KBPS     0x01    /* 300KBPS MFM drive transfer rate */
   56 #define FDC_250KBPS     0x02    /* 250KBPS MFM drive transfer rate */
   57 #define FDC_125KBPS     0x03    /* 125KBPS FM drive transfer rate */
   58 
   59 #define fdin    5       /* Digital Input Register (R) */
   60 #define FDI_DCHG        0x80    /* diskette has been changed */
   61 
   62 #define FDC_BSIZE       512
   63 
   64 /*
   65  * This constant is a little misleading.  Historically, the floppy
   66  * controller is located at 0x3f0-0x3f7, but the actual registers
   67  * are 0x3f2, 0x3f3, 0x3f4, and 0x3f7.  This constant assumes the
   68  * historic range, but the offsets above reflect the `real' offsets.
   69  */
   70 #define FDC_NPORT       8
   71 
   72 /*
   73  * Copyright (C) 1992-1994 by Joerg Wunsch, Dresden
   74  * All rights reserved.
   75  *
   76  * Redistribution and use in source and binary forms, with or without
   77  * modification, are permitted provided that the following conditions
   78  * are met:
   79  * 1. Redistributions of source code must retain the above copyright
   80  *    notice, this list of conditions and the following disclaimer.
   81  * 2. Redistributions in binary form must reproduce the above copyright
   82  *    notice, this list of conditions and the following disclaimer in the
   83  *    documentation and/or other materials provided with the distribution.
   84  *
   85  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY
   86  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   87  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   88  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE
   89  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   90  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
   91  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   92  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   93  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   94  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
   95  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
   96  * DAMAGE.
   97  *
   98  * From: FreeBSD: Id: ioctl_fd.h,v 1.7 1994/10/30 19:17:39 joerg Exp 
   99  */
  100 
  101 #define FD_MAX_NSEC 36          /* highest known number of spt - allow for */
  102                                 /* 2.88 MB drives */
  103 
  104 struct ne7_fd_formb {
  105         int cyl, head;
  106         int transfer_rate;      /* fdreg.h: FDC_???KBPS */
  107 
  108         union {
  109                 struct fd_form_data {
  110                         /*
  111                          * DO NOT CHANGE THE LAYOUT OF THIS STRUCTS
  112                          * it is hardware-dependant since it exactly
  113                          * matches the byte sequence to write to FDC
  114                          * during its `format track' operation
  115                          */
  116                         u_char secshift; /* 0 -> 128, ...; usually 2 -> 512 */
  117                         u_char nsecs;   /* must be <= FD_MAX_NSEC */
  118                         u_char gaplen;  /* GAP 3 length; usually 84 */
  119                         u_char fillbyte; /* usually 0xf6 */
  120                         struct fd_idfield_data {
  121                                 /*
  122                                  * data to write into id fields;
  123                                  * for obscure formats, they mustn't match
  124                                  * the real values (but mostly do)
  125                                  */
  126                                 u_char cylno;   /* 0 thru 79 (or 39) */
  127                                 u_char headno;  /* 0, or 1 */
  128                                 u_char secno;   /* starting at 1! */
  129                                 u_char secsize; /* usually 2 */
  130                         } idfields[FD_MAX_NSEC]; /* 0 <= idx < nsecs used */
  131                 } structured;
  132                 u_char raw[1];  /* to have continuous indexed access */
  133         } format_info;
  134 };
  135 
  136 /* make life easier */
  137 # define fd_formb_secshift   format_info.structured.secshift
  138 # define fd_formb_nsecs      format_info.structured.nsecs
  139 # define fd_formb_gaplen     format_info.structured.gaplen
  140 # define fd_formb_fillbyte   format_info.structured.fillbyte
  141 /* these data must be filled in for(i = 0; i < fd_formb_nsecs; i++) */
  142 # define fd_formb_cylno(i)   format_info.structured.idfields[i].cylno
  143 # define fd_formb_headno(i)  format_info.structured.idfields[i].headno
  144 # define fd_formb_secno(i)   format_info.structured.idfields[i].secno
  145 # define fd_formb_secsize(i) format_info.structured.idfields[i].secsize

Cache object: 69c23463c2d0ac30276f83a32fcb8d99


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.