xref: /netbsd-src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
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__
14 static inline void drm_free_agp(struct agp_bridge_data *, struct agp_memory *, int);
15 static inline int drm_bind_agp(struct agp_bridge_data *, struct agp_memory *, unsigned);
16 static inline int drm_unbind_agp(struct agp_bridge_data *, struct agp_memory *);
17 #else
18 void drm_free_agp(struct agp_memory * handle, int pages);
19 int drm_bind_agp(struct agp_memory * handle, unsigned int start);
20 int drm_unbind_agp(struct agp_memory * handle);
21 #endif
22 struct 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 
28 struct drm_agp_head *drm_agp_init(struct drm_device *dev);
29 void drm_agp_clear(struct drm_device *dev);
30 int drm_agp_acquire(struct drm_device *dev);
31 int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
32 			  struct drm_file *file_priv);
33 int drm_agp_release(struct drm_device *dev);
34 int drm_agp_release_ioctl(struct drm_device *dev, void *data,
35 			  struct drm_file *file_priv);
36 int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
37 int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
38 			 struct drm_file *file_priv);
39 int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
40 int drm_agp_info_ioctl(struct drm_device *dev, void *data,
41 		       struct drm_file *file_priv);
42 int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
43 int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
44 			struct drm_file *file_priv);
45 int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
46 int drm_agp_free_ioctl(struct drm_device *dev, void *data,
47 		       struct drm_file *file_priv);
48 int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
49 int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
50 			 struct drm_file *file_priv);
51 int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
52 int 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 
58 static inline void drm_free_agp(struct agp_memory * handle, int pages)
59 {
60 }
61 
62 static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
63 {
64 	return -ENODEV;
65 }
66 
67 static inline int drm_unbind_agp(struct agp_memory * handle)
68 {
69 	return -ENODEV;
70 }
71 
72 #endif
73 
74 static 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 
83 static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
84 {
85 	return NULL;
86 }
87 
88 static inline void drm_agp_clear(struct drm_device *dev)
89 {
90 }
91 
92 static inline int drm_agp_acquire(struct drm_device *dev)
93 {
94 	return -ENODEV;
95 }
96 
97 static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
98 					struct drm_file *file_priv)
99 {
100 	return -ENODEV;
101 }
102 
103 static inline int drm_agp_release(struct drm_device *dev)
104 {
105 	return -ENODEV;
106 }
107 
108 static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data,
109 					struct drm_file *file_priv)
110 {
111 	return -ENODEV;
112 }
113 
114 static inline int drm_agp_enable(struct drm_device *dev,
115 				 struct drm_agp_mode mode)
116 {
117 	return -ENODEV;
118 }
119 
120 static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
121 				       struct drm_file *file_priv)
122 {
123 	return -ENODEV;
124 }
125 
126 static inline int drm_agp_info(struct drm_device *dev,
127 			       struct drm_agp_info *info)
128 {
129 	return -ENODEV;
130 }
131 
132 static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data,
133 				     struct drm_file *file_priv)
134 {
135 	return -ENODEV;
136 }
137 
138 static inline int drm_agp_alloc(struct drm_device *dev,
139 				struct drm_agp_buffer *request)
140 {
141 	return -ENODEV;
142 }
143 
144 static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
145 				      struct drm_file *file_priv)
146 {
147 	return -ENODEV;
148 }
149 
150 static inline int drm_agp_free(struct drm_device *dev,
151 			       struct drm_agp_buffer *request)
152 {
153 	return -ENODEV;
154 }
155 
156 static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data,
157 				     struct drm_file *file_priv)
158 {
159 	return -ENODEV;
160 }
161 
162 static inline int drm_agp_unbind(struct drm_device *dev,
163 				 struct drm_agp_binding *request)
164 {
165 	return -ENODEV;
166 }
167 
168 static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
169 				       struct drm_file *file_priv)
170 {
171 	return -ENODEV;
172 }
173 
174 static inline int drm_agp_bind(struct drm_device *dev,
175 			       struct drm_agp_binding *request)
176 {
177 	return -ENODEV;
178 }
179 
180 static 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