1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _DRM_AGPSUPPORT_H_
3 #define _DRM_AGPSUPPORT_H_
5 #include <linux/agp_backend.h>
6 #include <linux/kernel.h>
7 #include <linux/list.h>
9 #include <linux/mutex.h>
10 #include <linux/types.h>
11 #include <uapi/drm/drm.h>
17 struct agp_kern_info agp_info;
18 struct list_head memory;
20 struct agp_bridge_data *bridge;
25 int cant_use_aperture;
26 unsigned long page_mask;
29 #if IS_ENABLED(CONFIG_AGP)
31 void drm_free_agp(struct agp_memory * handle, int pages);
32 int drm_bind_agp(struct agp_memory * handle, unsigned int start);
33 int drm_unbind_agp(struct agp_memory * handle);
34 struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
36 unsigned long num_pages,
40 struct drm_agp_head *drm_agp_init(struct drm_device *dev);
41 void drm_legacy_agp_clear(struct drm_device *dev);
42 int drm_agp_acquire(struct drm_device *dev);
43 int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
44 struct drm_file *file_priv);
45 int drm_agp_release(struct drm_device *dev);
46 int drm_agp_release_ioctl(struct drm_device *dev, void *data,
47 struct drm_file *file_priv);
48 int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
49 int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
50 struct drm_file *file_priv);
51 int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
52 int drm_agp_info_ioctl(struct drm_device *dev, void *data,
53 struct drm_file *file_priv);
54 int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
55 int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
56 struct drm_file *file_priv);
57 int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
58 int drm_agp_free_ioctl(struct drm_device *dev, void *data,
59 struct drm_file *file_priv);
60 int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
61 int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
62 struct drm_file *file_priv);
63 int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
64 int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
65 struct drm_file *file_priv);
67 #else /* CONFIG_AGP */
69 static inline void drm_free_agp(struct agp_memory * handle, int pages)
73 static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
78 static inline int drm_unbind_agp(struct agp_memory * handle)
83 static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
85 unsigned long num_pages,
92 static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
97 static inline void drm_legacy_agp_clear(struct drm_device *dev)
101 static inline int drm_agp_acquire(struct drm_device *dev)
106 static inline int drm_agp_release(struct drm_device *dev)
111 static inline int drm_agp_enable(struct drm_device *dev,
112 struct drm_agp_mode mode)
117 static inline int drm_agp_info(struct drm_device *dev,
118 struct drm_agp_info *info)
123 static inline int drm_agp_alloc(struct drm_device *dev,
124 struct drm_agp_buffer *request)
129 static inline int drm_agp_free(struct drm_device *dev,
130 struct drm_agp_buffer *request)
135 static inline int drm_agp_unbind(struct drm_device *dev,
136 struct drm_agp_binding *request)
141 static inline int drm_agp_bind(struct drm_device *dev,
142 struct drm_agp_binding *request)
147 #endif /* CONFIG_AGP */
149 #endif /* _DRM_AGPSUPPORT_H_ */