[BACK]Return to agpio.h CVS log [TXT][DIR] Up to [local] / sys / sys

Annotation of sys/sys/agpio.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: agpio.h,v 1.1 2002/07/12 20:17:03 mickey Exp $        */
        !             2:
        !             3: /*-
        !             4:  * Copyright (c) 2000 Doug Rabson
        !             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:  *
        !            16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
        !            17:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            18:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            19:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
        !            20:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            21:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            22:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            24:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            25:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            26:  * SUCH DAMAGE.
        !            27:  *
        !            28:  *     $FreeBSD: src/sys/sys/agpio.h,v 1.1 2000/06/09 16:04:30 dfr Exp $
        !            29:  */
        !            30:
        !            31: #ifndef _SYS_AGPIO_H_
        !            32: #define _SYS_AGPIO_H_
        !            33:
        !            34: #define        AGP_DEVICE              "/dev/ttyC0"
        !            35:
        !            36: /*
        !            37:  * The AGP gatt uses 4k pages irrespective of the host page size.
        !            38:  */
        !            39: #define AGP_PAGE_SIZE          4096
        !            40: #define AGP_PAGE_SHIFT         12
        !            41:
        !            42: /*
        !            43:  * Macros to manipulate AGP mode words.
        !            44:  */
        !            45: #define AGP_MODE_GET_RQ(x)             (((x) & 0xff000000U) >> 24)
        !            46: #define AGP_MODE_GET_SBA(x)            (((x) & 0x00000200U) >> 9)
        !            47: #define AGP_MODE_GET_AGP(x)            (((x) & 0x00000100U) >> 8)
        !            48: #define AGP_MODE_GET_4G(x)             (((x) & 0x00000020U) >> 5)
        !            49: #define AGP_MODE_GET_FW(x)             (((x) & 0x00000010U) >> 4)
        !            50: #define AGP_MODE_GET_RATE(x)           ((x) & 0x00000003U)
        !            51: #define AGP_MODE_SET_RQ(x,v)           (((x) & ~0xff000000U) | ((v) << 24))
        !            52: #define AGP_MODE_SET_SBA(x,v)          (((x) & ~0x00000200U) | ((v) << 9))
        !            53: #define AGP_MODE_SET_AGP(x,v)          (((x) & ~0x00000100U) | ((v) << 8))
        !            54: #define AGP_MODE_SET_4G(x,v)           (((x) & ~0x00000020U) | ((v) << 5))
        !            55: #define AGP_MODE_SET_FW(x,v)           (((x) & ~0x00000010U) | ((v) << 4))
        !            56: #define AGP_MODE_SET_RATE(x,v)         (((x) & ~0x00000003U) | (v))
        !            57: #define AGP_MODE_RATE_1x               0x00000001
        !            58: #define AGP_MODE_RATE_2x               0x00000002
        !            59: #define AGP_MODE_RATE_4x               0x00000004
        !            60:
        !            61: #define AGPIOC_BASE       'A'
        !            62: #define AGPIOC_INFO       _IOR (AGPIOC_BASE, 0, agp_info)
        !            63: #define AGPIOC_ACQUIRE    _IO  (AGPIOC_BASE, 1)
        !            64: #define AGPIOC_RELEASE    _IO  (AGPIOC_BASE, 2)
        !            65: #define AGPIOC_SETUP      _IOW (AGPIOC_BASE, 3, agp_setup)
        !            66: #if 0
        !            67: #define AGPIOC_RESERVE    _IOW (AGPIOC_BASE, 4, agp_region)
        !            68: #define AGPIOC_PROTECT    _IOW (AGPIOC_BASE, 5, agp_region)
        !            69: #endif
        !            70: #define AGPIOC_ALLOCATE   _IOWR(AGPIOC_BASE, 6, agp_allocate)
        !            71: #define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int)
        !            72: #define AGPIOC_BIND       _IOW (AGPIOC_BASE, 8, agp_bind)
        !            73: #define AGPIOC_UNBIND     _IOW (AGPIOC_BASE, 9, agp_unbind)
        !            74:
        !            75: typedef struct _agp_version {
        !            76:        u_int16_t major;
        !            77:        u_int16_t minor;
        !            78: } agp_version;
        !            79:
        !            80: typedef struct _agp_info {
        !            81:        agp_version version;    /* version of the driver        */
        !            82:        u_int32_t bridge_id;    /* bridge vendor/device         */
        !            83:        u_int32_t agp_mode;     /* mode info of bridge          */
        !            84:        off_t aper_base;        /* base of aperture             */
        !            85:        size_t aper_size;       /* size of aperture             */
        !            86:        size_t pg_total;        /* max pages (swap + system)    */
        !            87:        size_t pg_system;       /* max pages (system)           */
        !            88:        size_t pg_used;         /* current pages used           */
        !            89: } agp_info;
        !            90:
        !            91: typedef struct _agp_setup {
        !            92:        u_int32_t agp_mode;             /* mode info of bridge          */
        !            93: } agp_setup;
        !            94:
        !            95: #if 0
        !            96: /*
        !            97:  * The "prot" down below needs still a "sleep" flag somehow ...
        !            98:  */
        !            99: typedef struct _agp_segment {
        !           100:        off_t pg_start;         /* starting page to populate    */
        !           101:        size_t pg_count;        /* number of pages              */
        !           102:        int prot;               /* prot flags for mmap          */
        !           103: } agp_segment;
        !           104:
        !           105: typedef struct _agp_region {
        !           106:        pid_t pid;              /* pid of process               */
        !           107:        size_t seg_count;       /* number of segments           */
        !           108:        struct _agp_segment *seg_list;
        !           109: } agp_region;
        !           110: #endif
        !           111:
        !           112: typedef struct _agp_allocate {
        !           113:        int key;                /* tag of allocation            */
        !           114:        size_t pg_count;        /* number of pages              */
        !           115:        u_int32_t type;         /* 0 == normal, other devspec   */
        !           116:        u_int32_t physical;     /* device specific (some devices
        !           117:                                 * need a phys address of the
        !           118:                                 * actual page behind the gatt
        !           119:                                 * table)                        */
        !           120: } agp_allocate;
        !           121:
        !           122: typedef struct _agp_bind {
        !           123:        int key;                /* tag of allocation            */
        !           124:        off_t pg_start;         /* starting page to populate    */
        !           125: } agp_bind;
        !           126:
        !           127: typedef struct _agp_unbind {
        !           128:        int key;                /* tag of allocation            */
        !           129:        u_int32_t priority;     /* priority for paging out      */
        !           130: } agp_unbind;
        !           131:
        !           132: #endif /* !_SYS_AGPIO_H_ */

CVSweb