Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _DRM_AGPSUPPORT_H_
3#define _DRM_AGPSUPPORT_H_
4
5#include <linux/agp_backend.h>
6#include <linux/kernel.h>
7#include <linux/list.h>
8#include <linux/mm.h>
9#include <linux/mutex.h>
10#include <linux/types.h>
11#include <uapi/drm/drm.h>
12
13struct drm_device;
14struct drm_file;
15
16struct drm_agp_head {
17 struct agp_kern_info agp_info;
18 struct list_head memory;
19 unsigned long mode;
20 struct agp_bridge_data *bridge;
21 int enabled;
22 int acquired;
23 unsigned long base;
24 int agp_mtrr;
25 int cant_use_aperture;
26 unsigned long page_mask;
27};
28
29#if IS_ENABLED(CONFIG_AGP)
30
31struct drm_agp_head *drm_agp_init(struct drm_device *dev);
32void drm_legacy_agp_clear(struct drm_device *dev);
33int drm_agp_acquire(struct drm_device *dev);
34int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
35 struct drm_file *file_priv);
36int drm_agp_release(struct drm_device *dev);
37int drm_agp_release_ioctl(struct drm_device *dev, void *data,
38 struct drm_file *file_priv);
39int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
40int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
41 struct drm_file *file_priv);
42int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
43int drm_agp_info_ioctl(struct drm_device *dev, void *data,
44 struct drm_file *file_priv);
45int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
46int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
47 struct drm_file *file_priv);
48int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
49int drm_agp_free_ioctl(struct drm_device *dev, void *data,
50 struct drm_file *file_priv);
51int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
52int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
53 struct drm_file *file_priv);
54int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
55int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
56 struct drm_file *file_priv);
57
58#else /* CONFIG_AGP */
59
60static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
61{
62 return NULL;
63}
64
65static inline void drm_legacy_agp_clear(struct drm_device *dev)
66{
67}
68
69static inline int drm_agp_acquire(struct drm_device *dev)
70{
71 return -ENODEV;
72}
73
74static inline int drm_agp_release(struct drm_device *dev)
75{
76 return -ENODEV;
77}
78
79static inline int drm_agp_enable(struct drm_device *dev,
80 struct drm_agp_mode mode)
81{
82 return -ENODEV;
83}
84
85static inline int drm_agp_info(struct drm_device *dev,
86 struct drm_agp_info *info)
87{
88 return -ENODEV;
89}
90
91static inline int drm_agp_alloc(struct drm_device *dev,
92 struct drm_agp_buffer *request)
93{
94 return -ENODEV;
95}
96
97static inline int drm_agp_free(struct drm_device *dev,
98 struct drm_agp_buffer *request)
99{
100 return -ENODEV;
101}
102
103static inline int drm_agp_unbind(struct drm_device *dev,
104 struct drm_agp_binding *request)
105{
106 return -ENODEV;
107}
108
109static inline int drm_agp_bind(struct drm_device *dev,
110 struct drm_agp_binding *request)
111{
112 return -ENODEV;
113}
114
115#endif /* CONFIG_AGP */
116
117#endif /* _DRM_AGPSUPPORT_H_ */