[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

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