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