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  * SPDX-License-Identifier: BSD-3-Clause
    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  *      from: @(#)nec765.h      7.1 (Berkeley) 5/9/91
   32  * $FreeBSD: releng/12.0/sys/dev/ic/nec765.h 326022 2017-11-20 19:36:21Z pfg $
   33  */
   34 
   35 /*
   36  * Nec 765 floppy disc controller definitions
   37  */
   38 
   39 /* Main status register */
   40 #define NE7_DAB         0x01    /* Diskette drive A is seeking, thus busy */
   41 #define NE7_DBB         0x02    /* Diskette drive B is seeking, thus busy */
   42 #define NE7_CB          0x10    /* Diskette Controller Busy */
   43 #define NE7_NDM         0x20    /* Diskette Controller in Non Dma Mode */
   44 #define NE7_DIO         0x40    /* Diskette Controller Data register I/O */
   45 #define NE7_RQM         0x80    /* Diskette Controller ReQuest for Master */
   46 
   47 /* Status register ST0 */
   48 #define NE7_ST0BITS     "\020\010invld\007abnrml\006seek_cmplt\005equ_chck\004drive_notrdy\003top_head"
   49 
   50 #define NE7_ST0_IC      0xc0    /* interrupt completion code */
   51 
   52 #define NE7_ST0_IC_RC   0xc0    /* terminated due to ready changed, n/a */
   53 #define NE7_ST0_IC_IV   0x80    /* invalid command; must reset FDC */
   54 #define NE7_ST0_IC_AT   0x40    /* abnormal termination, check error stat */
   55 #define NE7_ST0_IC_NT   0x00    /* normal termination */
   56 
   57 #define NE7_ST0_SE      0x20    /* seek end */
   58 #define NE7_ST0_EC      0x10    /* equipment check, recalibrated but no trk0 */
   59 #define NE7_ST0_NR      0x08    /* not ready (n/a) */
   60 #define NE7_ST0_HD      0x04    /* upper head selected */
   61 #define NE7_ST0_DR      0x03    /* drive code */
   62 
   63 /* Status register ST1 */
   64 #define NE7_ST1BITS     "\020\010end_of_cyl\006bad_crc\005data_overrun\003sec_not_fnd\002write_protect\001no_am"
   65 
   66 #define NE7_ST1_EN      0x80    /* end of cylinder, access past last record */
   67 #define NE7_ST1_DE      0x20    /* data error, CRC fail in ID or data */
   68 #define NE7_ST1_OR      0x10    /* DMA overrun, DMA failed to do i/o quickly */
   69 #define NE7_ST1_ND      0x04    /* no data, sector not found or CRC in ID f. */
   70 #define NE7_ST1_NW      0x02    /* not writeable, attempt to violate WP */
   71 #define NE7_ST1_MA      0x01    /* missing address mark (in ID or data field)*/
   72 
   73 /* Status register ST2 */
   74 #define NE7_ST2BITS     "\020\007ctrl_mrk\006bad_crc\005wrong_cyl\004scn_eq\003scn_not_fnd\002bad_cyl\001no_dam"
   75 
   76 #define NE7_ST2_CM      0x40    /* control mark; found deleted data */
   77 #define NE7_ST2_DD      0x20    /* data error in data field, CRC fail */
   78 #define NE7_ST2_WC      0x10    /* wrong cylinder, ID field mismatches cmd */
   79 #define NE7_ST2_SH      0x08    /* scan equal hit */
   80 #define NE7_ST2_SN      0x04    /* scan not satisfied */
   81 #define NE7_ST2_BC      0x02    /* bad cylinder, cylinder marked 0xff */
   82 #define NE7_ST2_MD      0x01    /* missing address mark in data field */
   83 
   84 /* Status register ST3 */
   85 #define NE7_ST3BITS     "\020\010fault\007write_protect\006drdy\005tk0\004two_side\003side_sel\002"
   86 
   87 #define NE7_ST3_FT      0x80    /* fault; PC: n/a */
   88 #define NE7_ST3_WP      0x40    /* write protected */
   89 #define NE7_ST3_RD      0x20    /* ready; PC: always true */
   90 #define NE7_ST3_T0      0x10    /* track 0 */
   91 #define NE7_ST3_TS      0x08    /* two-sided; PC: n/a */
   92 #define NE7_ST3_HD      0x04    /* upper head select */
   93 #define NE7_ST3_US      0x03    /* unit select */
   94 
   95 /* Data Rate Select Register DSR (enhanced controller) */
   96 #define I8207X_DSR_SR   0x80    /* software reset */
   97 #define I8207X_DSR_LP   0x40    /* low power */
   98 #define I8207X_DSR_PS   0x1c    /* precompensation select */
   99 #define I8207X_DSR_RS   0x03    /* data rate select */
  100 
  101 /* Commands */
  102 /*
  103  * the top three bits -- where appropriate -- are set as follows:
  104  *
  105  * MT  - multi-track; allow both sides to be handled in single cmd
  106  * MFM - modified frequency modulation; use MFM encoding
  107  * SK  - skip; skip sectors marked as "deleted"
  108  */
  109 
  110 #define NE7CMD_MT       0x80    /* READ, WRITE, WRITEDEL, READDEL, SCAN* */
  111 #define NE7CMD_MFM      0x40    /* same as MT, plus READTRK, READID, FORMAT */
  112 #define NE7CMD_SK       0x20    /* READ, READDEL, SCAN* */
  113 
  114 #define NE7CMD_READTRK  0x02    /*  read whole track */
  115 #define NE7CMD_SPECIFY  0x03    /*  specify drive parameters - requires unit
  116                                  *  parameters byte */
  117 #define NE7CMD_SENSED   0x04    /*  sense drive - requires unit select byte */
  118 #define NE7CMD_WRITE    0x05    /*  write - requires eight additional bytes */
  119 #define NE7CMD_READ     0x06    /*  read - requires eight additional bytes */
  120 #define NE7CMD_RECAL    0x07    /*  recalibrate drive - requires
  121                                  *  unit select byte */
  122 #define NE7CMD_SENSEI   0x08    /*  sense controller interrupt status */
  123 #define NE7CMD_WRITEDEL 0x09    /*  write deleted data */
  124 #define NE7CMD_READID   0x0a    /*  read ID field */
  125 #define NE7CMD_READDEL  0x0c    /*  read deleted data */
  126 #define NE7CMD_FORMAT   0x0d    /*  format - requires five additional bytes */
  127 #define NE7CMD_SEEK     0x0f    /*  seek drive - requires unit select byte
  128                                  *  and new cyl byte */
  129 #define NE7CMD_VERSION  0x10    /*  get version */
  130 #define NE7CMD_SCNEQU   0x11    /*  scan equal */
  131 #define NE7CMD_SCNLE    0x19    /*  scan less or equal */
  132 #define NE7CMD_SCNGE    0x1d    /*  scan greater or equal */
  133 
  134 /*
  135  * Enhanced controller commands:
  136  */
  137 #define I8207X_DUMPREG  0x0e    /*  dump internal registers */
  138 #define I8207X_CONFIG   0x13    /*  configure enhanced features */
  139 
  140 /*
  141  * "specify" definitions
  142  *
  143  * acronyms (times are relative to a FDC clock of 8 MHz):
  144  * srt - step rate; PC usually 3 ms
  145  * hut - head unload time; PC usually maximum of 240 ms
  146  * hlt - head load time; PC usually minimum of 2 ms
  147  * nd  - no DMA flag; PC usually not set (0)
  148  */
  149 
  150 #define NE7_SPEC_1(srt, hut)    (((16 - (srt)) << 4) | (((hut) / 16)))
  151 #define NE7_SPEC_2(hlt, nd)     (((hlt) & 0xFE) | ((nd) & 1))

Cache object: dc0d4bfff0236e6b311c9a75febea653


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