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/ic/nec765.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 /*-
    2  * Copyright (c) 1991 The Regents of the University of California.
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  * 3. All advertising materials mentioning features or use of this software
   14  *    must display the following acknowledgement:
   15  *      This product includes software developed by the University of
   16  *      California, Berkeley and its contributors.
   17  * 4. Neither the name of the University nor the names of its contributors
   18  *    may be used to endorse or promote products derived from this software
   19  *    without specific prior written permission.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31  * SUCH DAMAGE.
   32  *
   33  *      from: @(#)nec765.h      7.1 (Berkeley) 5/9/91
   34  * $FreeBSD: releng/5.2/sys/dev/ic/nec765.h 88010 2001-12-16 07:52:13Z joerg $
   35  */
   36 
   37 /*
   38  * Nec 765 floppy disc controller definitions
   39  */
   40 
   41 /* Main status register */
   42 #define NE7_DAB 0x01    /* Diskette drive A is seeking, thus busy */
   43 #define NE7_DBB 0x02    /* Diskette drive B is seeking, thus busy */
   44 #define NE7_CB  0x10    /* Diskette Controller Busy */
   45 #define NE7_NDM 0x20    /* Diskette Controller in Non Dma Mode */
   46 #define NE7_DIO 0x40    /* Diskette Controller Data register I/O */
   47 #define NE7_RQM 0x80    /* Diskette Controller ReQuest for Master */
   48 
   49 /* Status register ST0 */
   50 #define NE7_ST0BITS     "\020\010invld\007abnrml\006seek_cmplt\005equ_chck\004drive_notrdy\003top_head"
   51 
   52 #define NE7_ST0_IC      0xc0    /* interrupt completion code */
   53 
   54 #define NE7_ST0_IC_RC   0xc0    /* terminated due to ready changed, n/a */
   55 #define NE7_ST0_IC_IV   0x80    /* invalid command; must reset FDC */
   56 #define NE7_ST0_IC_AT   0x40    /* abnormal termination, check error stat */
   57 #define NE7_ST0_IC_NT   0x00    /* normal termination */
   58 
   59 #define NE7_ST0_SE      0x20    /* seek end */
   60 #define NE7_ST0_EC      0x10    /* equipment check, recalibrated but no trk0 */
   61 #define NE7_ST0_NR      0x08    /* not ready (n/a) */
   62 #define NE7_ST0_HD      0x04    /* upper head selected */
   63 #define NE7_ST0_DR      0x03    /* drive code */
   64 
   65 /* Status register ST1 */
   66 #define NE7_ST1BITS     "\020\010end_of_cyl\006bad_crc\005data_overrun\003sec_not_fnd\002write_protect\001no_am"
   67 
   68 #define NE7_ST1_EN      0x80    /* end of cylinder, access past last record */
   69 #define NE7_ST1_DE      0x20    /* data error, CRC fail in ID or data */
   70 #define NE7_ST1_OR      0x10    /* DMA overrun, DMA failed to do i/o quickly */
   71 #define NE7_ST1_ND      0x04    /* no data, sector not found or CRC in ID f. */
   72 #define NE7_ST1_NW      0x02    /* not writeable, attempt to violate WP */
   73 #define NE7_ST1_MA      0x01    /* missing address mark (in ID or data field)*/
   74 
   75 /* Status register ST2 */
   76 #define NE7_ST2BITS     "\020\007ctrl_mrk\006bad_crc\005wrong_cyl\004scn_eq\003scn_not_fnd\002bad_cyl\001no_dam"
   77 
   78 #define NE7_ST2_CM      0x40    /* control mark; found deleted data */
   79 #define NE7_ST2_DD      0x20    /* data error in data field, CRC fail */
   80 #define NE7_ST2_WC      0x10    /* wrong cylinder, ID field mismatches cmd */
   81 #define NE7_ST2_SH      0x08    /* scan equal hit */
   82 #define NE7_ST2_SN      0x04    /* scan not satisfied */
   83 #define NE7_ST2_BC      0x02    /* bad cylinder, cylinder marked 0xff */
   84 #define NE7_ST2_MD      0x01    /* missing address mark in data field */
   85 
   86 /* Status register ST3 */
   87 #define NE7_ST3BITS     "\020\010fault\007write_protect\006drdy\005tk0\004two_side\003side_sel\002"
   88 
   89 #define NE7_ST3_FT      0x80    /* fault; PC: n/a */
   90 #define NE7_ST3_WP      0x40    /* write protected */
   91 #define NE7_ST3_RD      0x20    /* ready; PC: always true */
   92 #define NE7_ST3_T0      0x10    /* track 0 */
   93 #define NE7_ST3_TS      0x08    /* two-sided; PC: n/a */
   94 #define NE7_ST3_HD      0x04    /* upper head select */
   95 #define NE7_ST3_US      0x03    /* unit select */
   96 
   97 /* Commands */
   98 /*
   99  * the top three bits -- where appropriate -- are set as follows:
  100  *
  101  * MT  - multi-track; allow both sides to be handled in single cmd
  102  * MFM - modified frequency modulation; use MFM encoding
  103  * SK  - skip; skip sectors marked as "deleted"
  104  */
  105 
  106 #define NE7CMD_MT       0x80    /* READ, WRITE, WRITEDEL, READDEL, SCAN* */
  107 #define NE7CMD_MFM      0x40    /* same as MT, plus READTRK, READID, FORMAT */
  108 #define NE7CMD_SK       0x20    /* READ, READDEL, SCAN* */
  109 
  110 #define NE7CMD_READTRK  2       /*  read whole track */
  111 #define NE7CMD_SPECIFY  3       /*  specify drive parameters - requires unit
  112                                  *  parameters byte */
  113 #define NE7CMD_SENSED   4       /*  sense drive - requires unit select byte */
  114 #define NE7CMD_WRITE    5       /*  write - requires eight additional bytes */
  115 #define NE7CMD_READ     6       /*  read - requires eight additional bytes */
  116 #define NE7CMD_RECAL    7       /*  recalibrate drive - requires
  117                                  *  unit select byte */
  118 #define NE7CMD_SENSEI   8       /*  sense controller interrupt status */
  119 #define NE7CMD_WRITEDEL 9       /*  write deleted data */
  120 #define NE7CMD_READID   0xa     /*  read ID field */
  121 #define NE7CMD_READDEL  0xc     /*  read deleted data */
  122 #define NE7CMD_FORMAT   0xd     /*  format - requires five additional bytes */
  123 #define NE7CMD_SEEK     0xf     /*  seek drive - requires unit select byte
  124                                  *  and new cyl byte */
  125 #define NE7CMD_SCNEQU   0x11    /*  scan equal */
  126 #define NE7CMD_SCNLE    0x19    /*  scan less or equal */
  127 #define NE7CMD_SCNGE    0x1d    /*  scan greater or equal */
  128 
  129 /*
  130  * Enhanced controller commands:
  131  */
  132 #define NE7CMD_VERSION  0x10    /*  version (ok for all controllers) */
  133 
  134 #define I8207X_CONFIGURE 0x13   /*  configure enhanced features */
  135 
  136 /*
  137  * "specify" definitions
  138  *
  139  * acronyms (times are relative to a FDC clock of 8 MHz):
  140  * srt - step rate; PC usually 3 ms
  141  * hut - head unload time; PC usually maximum of 240 ms
  142  * hlt - head load time; PC usually minimum of 2 ms
  143  * nd  - no DMA flag; PC usually not set (0)
  144  */
  145 
  146 #define NE7_SPEC_1(srt, hut) (((16 - (srt)) << 4) | (((hut) / 16)))
  147 #define NE7_SPEC_2(hlt, nd)  (((hlt) & 0xFE) | ((nd) & 1))

Cache object: 7d58d184ab3e3cca5f296cf5aab2e827


[ 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.