[BACK]Return to wdvar.h CVS log [TXT][DIR] Up to [local] / sys / dev / ata

Annotation of sys/dev/ata/wdvar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: wdvar.h,v 1.12 2007/06/06 17:15:13 deraadt Exp $      */
        !             2: /*     $NetBSD: wdvar.h,v 1.3 1998/11/11 19:38:27 bouyer Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1998, 2001 Manuel Bouyer.
        !             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. All advertising materials mentioning features or use of this software
        !            16:  *    must display the following acknowledgement:
        !            17:  *     This product includes software developed by Manuel Bouyer.
        !            18:  * 4. Neither the name of the University nor the names of its contributors
        !            19:  *    may be used to endorse or promote products derived from this software
        !            20:  *    without specific prior written permission.
        !            21:  *
        !            22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            32:  *
        !            33:  */
        !            34:
        !            35: #ifndef _DEV_ATA_WDVAR_H_
        !            36: #define _DEV_ATA_WDVAR_H_
        !            37:
        !            38: /* Params needed by the controller to perform an ATA bio */
        !            39: struct ata_bio {
        !            40:     volatile u_int16_t flags; /* cmd flags */
        !            41: #define ATA_NOSLEEP 0x0001 /* Can't sleep */
        !            42: #define ATA_POLL    0x0002 /* poll for completion */
        !            43: #define ATA_ITSDONE 0x0004 /* the transfer is as done as it gets */
        !            44: #define ATA_SINGLE  0x0008 /* transfer has to be done in single-sector mode */
        !            45: #define ATA_LBA     0x0010 /* transfer uses LBA addressing */
        !            46: #define ATA_READ    0x0020 /* transfer is a read (otherwise a write) */
        !            47: #define ATA_CORR    0x0040 /* transfer had a corrected error */
        !            48: #define ATA_LBA48   0x0080 /* transfer uses 48-bit LBA addressing */
        !            49:     int multi; /* number of blocks to transfer in multi-mode */
        !            50:     struct disklabel *lp; /* pointer to drive's label info */
        !            51:     daddr64_t blkno; /* block addr */
        !            52:     daddr64_t blkdone; /* number of blks transferred */
        !            53:     daddr64_t nblks; /* number of block currently transfering */
        !            54:     int     nbytes; /* number of bytes currently transfering */
        !            55:     long    bcount; /* total number of bytes */
        !            56:     char   *databuf; /* data buffer address */
        !            57:     volatile int error;
        !            58: #define NOERROR   0 /* There was no error (r_error invalid) */
        !            59: #define ERROR     1 /* check r_error */
        !            60: #define ERR_DF    2 /* Drive fault */
        !            61: #define ERR_DMA   3 /* DMA error */
        !            62: #define TIMEOUT   4 /* device timed out */
        !            63: #define ERR_NODEV 5 /* device bas been detached */
        !            64:     u_int8_t r_error; /* copy of error register */
        !            65:     daddr64_t badsect[127];    /* 126 plus trailing -1 marker */
        !            66:     struct wd_softc *wd;
        !            67: };
        !            68:
        !            69: /* drive states stored in ata_drive_datas */
        !            70: #define RECAL          0
        !            71: #define RECAL_WAIT     1
        !            72: #define PIOMODE        2
        !            73: #define PIOMODE_WAIT   3
        !            74: #define DMAMODE        4
        !            75: #define DMAMODE_WAIT   5
        !            76: #define GEOMETRY       6
        !            77: #define GEOMETRY_WAIT  7
        !            78: #define MULTIMODE      8
        !            79: #define MULTIMODE_WAIT 9
        !            80: #define READY          10
        !            81:
        !            82: int wdc_ata_bio(struct ata_drive_datas*, struct ata_bio*);
        !            83:
        !            84: void wddone(void *);
        !            85:
        !            86: #endif /* !_DEV_ATA_WDVAR_H_ */

CVSweb