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