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