blob: 86a02188074bcec037714fdb1ea293dfb4ae3ebe [file] [log] [blame]
David Herrmann00fd78e2013-08-08 22:19:12 +02001#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
Daniel Vetterd2e546b2013-12-11 11:34:40 +010013void drm_free_agp(struct agp_memory * handle, int pages);
14int drm_bind_agp(struct agp_memory * handle, unsigned int start);
15int drm_unbind_agp(struct agp_memory * handle);
16struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
David Herrmann00fd78e2013-08-08 22:19:12 +020017 struct page **pages,
18 unsigned long num_pages,
19 uint32_t gtt_offset,
20 uint32_t type);
21
22struct drm_agp_head *drm_agp_init(struct drm_device *dev);
David Herrmann00fd78e2013-08-08 22:19:12 +020023void drm_agp_clear(struct drm_device *dev);
24int drm_agp_acquire(struct drm_device *dev);
25int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
26 struct drm_file *file_priv);
27int drm_agp_release(struct drm_device *dev);
28int drm_agp_release_ioctl(struct drm_device *dev, void *data,
29 struct drm_file *file_priv);
30int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
31int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
32 struct drm_file *file_priv);
33int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
34int drm_agp_info_ioctl(struct drm_device *dev, void *data,
35 struct drm_file *file_priv);
36int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
37int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
38 struct drm_file *file_priv);
39int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
40int drm_agp_free_ioctl(struct drm_device *dev, void *data,
41 struct drm_file *file_priv);
42int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
43int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
44 struct drm_file *file_priv);
45int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
46int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
47 struct drm_file *file_priv);
David Herrmann00fd78e2013-08-08 22:19:12 +020048#else /* __OS_HAS_AGP */
49
Daniel Vetterd2e546b2013-12-11 11:34:40 +010050static inline void drm_free_agp(struct agp_memory * handle, int pages)
David Herrmann00fd78e2013-08-08 22:19:12 +020051{
52}
53
Daniel Vetterd2e546b2013-12-11 11:34:40 +010054static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
David Herrmann00fd78e2013-08-08 22:19:12 +020055{
56 return -ENODEV;
57}
58
Daniel Vetterd2e546b2013-12-11 11:34:40 +010059static inline int drm_unbind_agp(struct agp_memory * handle)
David Herrmann00fd78e2013-08-08 22:19:12 +020060{
61 return -ENODEV;
62}
63
Daniel Vetterd2e546b2013-12-11 11:34:40 +010064static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
David Herrmann00fd78e2013-08-08 22:19:12 +020065 struct page **pages,
66 unsigned long num_pages,
67 uint32_t gtt_offset,
68 uint32_t type)
69{
70 return NULL;
71}
72
73static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
74{
75 return NULL;
76}
77
David Herrmann00fd78e2013-08-08 22:19:12 +020078static inline void drm_agp_clear(struct drm_device *dev)
79{
80}
81
82static inline int drm_agp_acquire(struct drm_device *dev)
83{
84 return -ENODEV;
85}
86
87static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
88 struct drm_file *file_priv)
89{
90 return -ENODEV;
91}
92
93static inline int drm_agp_release(struct drm_device *dev)
94{
95 return -ENODEV;
96}
97
98static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data,
99 struct drm_file *file_priv)
100{
101 return -ENODEV;
102}
103
104static inline int drm_agp_enable(struct drm_device *dev,
105 struct drm_agp_mode mode)
106{
107 return -ENODEV;
108}
109
110static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
111 struct drm_file *file_priv)
112{
113 return -ENODEV;
114}
115
116static inline int drm_agp_info(struct drm_device *dev,
117 struct drm_agp_info *info)
118{
119 return -ENODEV;
120}
121
122static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data,
123 struct drm_file *file_priv)
124{
125 return -ENODEV;
126}
127
128static inline int drm_agp_alloc(struct drm_device *dev,
129 struct drm_agp_buffer *request)
130{
131 return -ENODEV;
132}
133
134static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
135 struct drm_file *file_priv)
136{
137 return -ENODEV;
138}
139
140static inline int drm_agp_free(struct drm_device *dev,
141 struct drm_agp_buffer *request)
142{
143 return -ENODEV;
144}
145
146static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data,
147 struct drm_file *file_priv)
148{
149 return -ENODEV;
150}
151
152static inline int drm_agp_unbind(struct drm_device *dev,
153 struct drm_agp_binding *request)
154{
155 return -ENODEV;
156}
157
158static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
159 struct drm_file *file_priv)
160{
161 return -ENODEV;
162}
163
164static inline int drm_agp_bind(struct drm_device *dev,
165 struct drm_agp_binding *request)
166{
167 return -ENODEV;
168}
169
170static inline int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
171 struct drm_file *file_priv)
172{
173 return -ENODEV;
174}
David Herrmann00fd78e2013-08-08 22:19:12 +0200175#endif /* __OS_HAS_AGP */
176
177#endif /* _DRM_AGPSUPPORT_H_ */