1#ifndef _DRM_AGPSUPPORT_H_
2#define _DRM_AGPSUPPORT_H_
3
4#include <linux/kernel.h>
5#include <linux/mm.h>
6#include <linux/mutex.h>
7#include <linux/types.h>
8#include <linux/agp_backend.h>
9#include <drm/drmP.h>
10
11#if __OS_HAS_AGP
12
13#ifdef __NetBSD__
14static inline void drm_free_agp(struct agp_bridge_data *, struct agp_memory *, int);
15static inline int drm_bind_agp(struct agp_bridge_data *, struct agp_memory *, unsigned);
16static inline int drm_unbind_agp(struct agp_bridge_data *, struct agp_memory *);
17#else
18void drm_free_agp(struct agp_memory * handle, int pages);
19int drm_bind_agp(struct agp_memory * handle, unsigned int start);
20int drm_unbind_agp(struct agp_memory * handle);
21#endif
22struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
23 struct page **pages,
24 unsigned long num_pages,
25 uint32_t gtt_offset,
26 uint32_t type);
27
28struct drm_agp_head *drm_agp_init(struct drm_device *dev);
29void drm_agp_clear(struct drm_device *dev);
30int drm_agp_acquire(struct drm_device *dev);
31int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
32 struct drm_file *file_priv);
33int drm_agp_release(struct drm_device *dev);
34int drm_agp_release_ioctl(struct drm_device *dev, void *data,
35 struct drm_file *file_priv);
36int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
37int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
38 struct drm_file *file_priv);
39int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
40int drm_agp_info_ioctl(struct drm_device *dev, void *data,
41 struct drm_file *file_priv);
42int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
43int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
44 struct drm_file *file_priv);
45int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
46int drm_agp_free_ioctl(struct drm_device *dev, void *data,
47 struct drm_file *file_priv);
48int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
49int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
50 struct drm_file *file_priv);
51int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
52int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
53 struct drm_file *file_priv);
54#else /* __OS_HAS_AGP */
55
56#if !defined(__NetBSD__)
57
58static inline void drm_free_agp(struct agp_memory * handle, int pages)
59{
60}
61
62static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
63{
64 return -ENODEV;
65}
66
67static inline int drm_unbind_agp(struct agp_memory * handle)
68{
69 return -ENODEV;
70}
71
72#endif
73
74static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
75 struct page **pages,
76 unsigned long num_pages,
77 uint32_t gtt_offset,
78 uint32_t type)
79{
80 return NULL;
81}
82
83static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
84{
85 return NULL;
86}
87
88static inline void drm_agp_clear(struct drm_device *dev)
89{
90}
91
92static inline int drm_agp_acquire(struct drm_device *dev)
93{
94 return -ENODEV;
95}
96
97static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
98 struct drm_file *file_priv)
99{
100 return -ENODEV;
101}
102
103static inline int drm_agp_release(struct drm_device *dev)
104{
105 return -ENODEV;
106}
107
108static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data,
109 struct drm_file *file_priv)
110{
111 return -ENODEV;
112}
113
114static inline int drm_agp_enable(struct drm_device *dev,
115 struct drm_agp_mode mode)
116{
117 return -ENODEV;
118}
119
120static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
121 struct drm_file *file_priv)
122{
123 return -ENODEV;
124}
125
126static inline int drm_agp_info(struct drm_device *dev,
127 struct drm_agp_info *info)
128{
129 return -ENODEV;
130}
131
132static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data,
133 struct drm_file *file_priv)
134{
135 return -ENODEV;
136}
137
138static inline int drm_agp_alloc(struct drm_device *dev,
139 struct drm_agp_buffer *request)
140{
141 return -ENODEV;
142}
143
144static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
145 struct drm_file *file_priv)
146{
147 return -ENODEV;
148}
149
150static inline int drm_agp_free(struct drm_device *dev,
151 struct drm_agp_buffer *request)
152{
153 return -ENODEV;
154}
155
156static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data,
157 struct drm_file *file_priv)
158{
159 return -ENODEV;
160}
161
162static inline int drm_agp_unbind(struct drm_device *dev,
163 struct drm_agp_binding *request)
164{
165 return -ENODEV;
166}
167
168static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
169 struct drm_file *file_priv)
170{
171 return -ENODEV;
172}
173
174static inline int drm_agp_bind(struct drm_device *dev,
175 struct drm_agp_binding *request)
176{
177 return -ENODEV;
178}
179
180static inline int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
181 struct drm_file *file_priv)
182{
183 return -ENODEV;
184}
185#endif /* __OS_HAS_AGP */
186
187#endif /* _DRM_AGPSUPPORT_H_ */
188