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

Cache object: e9ca66948a0f1cccad0677e1217fb849


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