Annotation of Net2/arch/i386/isa/wdreg.h, revision 1.1.1.2

1.1       root        1: /*-
                      2:  * Copyright (c) 1991 The Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * This code is derived from software contributed to Berkeley by
                      6:  * William Jolitz.
                      7:  *
                      8:  * Redistribution and use in source and binary forms, with or without
                      9:  * modification, are permitted provided that the following conditions
                     10:  * are met:
                     11:  * 1. Redistributions of source code must retain the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer.
                     13:  * 2. Redistributions in binary form must reproduce the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer in the
                     15:  *    documentation and/or other materials provided with the distribution.
                     16:  * 3. All advertising materials mentioning features or use of this software
                     17:  *    must display the following acknowledgement:
                     18:  *     This product includes software developed by the University of
                     19:  *     California, Berkeley and its contributors.
                     20:  * 4. Neither the name of the University nor the names of its contributors
                     21:  *    may be used to endorse or promote products derived from this software
                     22:  *    without specific prior written permission.
                     23:  *
                     24:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     25:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     26:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     27:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     28:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     29:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     30:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     31:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     32:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     33:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     34:  * SUCH DAMAGE.
                     35:  *
                     36:  *     @(#)wdreg.h     7.1 (Berkeley) 5/9/91
                     37:  */
                     38: 
                     39: /*
                     40:  * Disk Controller register definitions.
                     41:  */
                     42: #define        wd_data         0x0             /* data register (R/W - 16 bits) */
                     43: #define wd_error       0x1             /* error register (R) */
                     44: #define        wd_precomp      wd_error        /* write precompensation (W) */
                     45: #define        wd_seccnt       0x2             /* sector count (R/W) */
                     46: #define        wd_sector       0x3             /* first sector number (R/W) */
                     47: #define        wd_cyl_lo       0x4             /* cylinder address, low byte (R/W) */
                     48: #define        wd_cyl_hi       0x5             /* cylinder address, high byte (R/W)*/
                     49: #define        wd_sdh          0x6             /* sector size/drive/head (R/W)*/
                     50: #define        wd_command      0x7             /* command register (W)  */
                     51: #define        wd_status wd_command            /* immediate status (R)  */
                     52: 
                     53: #define        wd_altsts       0x206    /*alternate fixed disk status(via 1015) (R)*/
                     54: #define        wd_ctlr         0x206    /*fixed disk controller control(via 1015) (W)*/
1.1.1.2 ! root       55: #define  WDCTL_4BIT     0x8    /* use four head bits (wd1003) */
        !            56: #define  WDCTL_RST      0x4    /* reset the controller */
        !            57: #define  WDCTL_IDS      0x2    /* disable controller interrupts */
1.1       root       58: #define        wd_digin        0x207    /* disk controller input(via 1015) (R)*/
                     59: 
                     60: /*
                     61:  * Status Bits.
                     62:  */
                     63: #define        WDCS_BUSY       0x80            /* Controller busy bit. */
                     64: #define        WDCS_READY      0x40            /* Selected drive is ready */
                     65: #define        WDCS_WRTFLT     0x20            /* Write fault */
                     66: #define        WDCS_SEEKCMPLT  0x10            /* Seek complete */
                     67: #define        WDCS_DRQ        0x08            /* Data request bit. */
                     68: #define        WDCS_ECCCOR     0x04            /* ECC correction made in data */
                     69: #define        WDCS_INDEX      0x02            /* Index pulse from selected drive */
                     70: #define        WDCS_ERR        0x01            /* Error detect bit. */
                     71: 
                     72: #define WDCS_BITS      "\020\010busy\006rdy\006wrtflt\005seekdone\004drq\003ecc_cor\002index\001err"
                     73: 
                     74: #define WDERR_BITS     "\020\010badblk\007uncorr\006id_crc\005no_id\003abort\002tr000\001no_dam"
                     75: 
                     76: /*
                     77:  * Commands for Disk Controller.
                     78:  */
1.1.1.2 ! root       79: #define        WDCC_RESTORE    0x10            /* disk restore code -- resets cntlr */
        !            80: 
1.1       root       81: #define        WDCC_READ       0x20            /* disk read code */
                     82: #define        WDCC_WRITE      0x30            /* disk write code */
1.1.1.2 ! root       83: #define         WDCC__LONG      0x02            /* modifier -- access ecc bytes */
        !            84: #define         WDCC__NORETRY   0x01            /* modifier -- no retrys */
        !            85: 
1.1       root       86: #define        WDCC_FORMAT     0x50            /* disk format code */
1.1.1.2 ! root       87: #define        WDCC_DIAGNOSE   0x90            /* controller diagnostic */
        !            88: #define        WDCC_IDC        0x91            /* initialize drive command */
        !            89: 
        !            90: #define        WDCC_EXTDCMD    0xE0            /* send extended command */
        !            91: #define        WDCC_READP      0xEC            /* read parameters from controller */
        !            92: #define        WDCC_CACHEC     0xEF            /* cache control */
1.1       root       93: 
                     94: #define        WD_STEP         0               /* winchester- default 35us step */
                     95: 
                     96: #define        WDSD_IBM        0xa0            /* forced to 512 byte sector, ecc */
                     97: 
1.1.1.2 ! root       98: 
        !            99: #ifdef KERNEL
        !           100: /*
        !           101:  * read parameters command returns this:
        !           102:  */
        !           103: struct wdparams {
        !           104:        /* drive info */
        !           105:        short   wdp_config;             /* general configuration */
        !           106:        short   wdp_fixedcyl;           /* number of non-removable cylinders */
        !           107:        short   wdp_removcyl;           /* number of removable cylinders */
        !           108:        short   wdp_heads;              /* number of heads */
        !           109:        short   wdp_unfbytespertrk;     /* number of unformatted bytes/track */
        !           110:        short   wdp_unfbytes;           /* number of unformatted bytes/sector */
        !           111:        short   wdp_sectors;            /* number of sectors */
        !           112:        short   wdp_minisg;             /* minimum bytes in inter-sector gap*/
        !           113:        short   wdp_minplo;             /* minimum bytes in postamble */
        !           114:        short   wdp_vendstat;           /* number of words of vendor status */
        !           115:        /* controller info */
        !           116:        char    wdp_cnsn[20];           /* controller serial number */
        !           117:        short   wdp_cntype;             /* controller type */
        !           118: #define        WDTYPE_SINGLEPORTSECTOR 1        /* single port, single sector buffer */
        !           119: #define        WDTYPE_DUALPORTMULTI    2        /* dual port, multiple sector buffer */
        !           120: #define        WDTYPE_DUALPORTMULTICACHE 3      /* above plus track cache */
        !           121:        short   wdp_cnsbsz;             /* sector buffer size, in sectors */
        !           122:        short   wdp_necc;               /* ecc bytes appended */
        !           123:        char    wdp_rev[8];             /* firmware revision */
        !           124:        char    wdp_model[40];          /* model name */
        !           125:        short   wdp_nsecperint;         /* sectors per interrupt */
        !           126:        short   wdp_usedmovsd;          /* can use double word read/write? */
        !           127: };
        !           128: 
        !           129: /*
        !           130:  * wd driver entry points
        !           131:  */
        !           132: int wdprobe(struct isa_device *);
        !           133: int wdattach(struct isa_device *);
        !           134: int wdstrategy(struct buf *);
        !           135: void wdintr(struct intrframe);
        !           136: int wdopen(dev_t, int, int, struct proc *);
        !           137: int wdclose(dev_t dev, int flags, int fmt);
        !           138: int wdioctl(dev_t, int, caddr_t, int);
        !           139: /* int wdformat(struct buf *bp); */
        !           140: int wdsize(dev_t);
        !           141: int wddump(dev_t);
        !           142: 
        !           143: #endif KERNEL

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.