Loading...
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
31void drm_free_agp(struct agp_memory * handle, int pages);
32int drm_bind_agp(struct agp_memory * handle, unsigned int start);
33int drm_unbind_agp(struct agp_memory * handle);
34
35struct drm_agp_head *drm_agp_init(struct drm_device *dev);
36void drm_legacy_agp_clear(struct drm_device *dev);
37int drm_agp_acquire(struct drm_device *dev);
38int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
39 struct drm_file *file_priv);
40int drm_agp_release(struct drm_device *dev);
41int drm_agp_release_ioctl(struct drm_device *dev, void *data,
42 struct drm_file *file_priv);
43int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
44int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
45 struct drm_file *file_priv);
46int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
47int drm_agp_info_ioctl(struct drm_device *dev, void *data,
48 struct drm_file *file_priv);
49int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
50int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
51 struct drm_file *file_priv);
52int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
53int drm_agp_free_ioctl(struct drm_device *dev, void *data,
54 struct drm_file *file_priv);
55int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
56int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
57 struct drm_file *file_priv);
58int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
59int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
60 struct drm_file *file_priv);
61
62#else /* CONFIG_AGP */
63
64static inline void drm_free_agp(struct agp_memory * handle, int pages)
65{
66}
67
68static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
69{
70 return -ENODEV;
71}
72
73static inline int drm_unbind_agp(struct agp_memory * handle)
74{
75 return -ENODEV;
76}
77
78static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
79{
80 return NULL;
81}
82
83static inline void drm_legacy_agp_clear(struct drm_device *dev)
84{
85}
86
87static inline int drm_agp_acquire(struct drm_device *dev)
88{
89 return -ENODEV;
90}
91
92static inline int drm_agp_release(struct drm_device *dev)
93{
94 return -ENODEV;
95}
96
97static inline int drm_agp_enable(struct drm_device *dev,
98 struct drm_agp_mode mode)
99{
100 return -ENODEV;
101}
102
103static inline int drm_agp_info(struct drm_device *dev,
104 struct drm_agp_info *info)
105{
106 return -ENODEV;
107}
108
109static inline int drm_agp_alloc(struct drm_device *dev,
110 struct drm_agp_buffer *request)
111{
112 return -ENODEV;
113}
114
115static inline int drm_agp_free(struct drm_device *dev,
116 struct drm_agp_buffer *request)
117{
118 return -ENODEV;
119}
120
121static inline int drm_agp_unbind(struct drm_device *dev,
122 struct drm_agp_binding *request)
123{
124 return -ENODEV;
125}
126
127static inline int drm_agp_bind(struct drm_device *dev,
128 struct drm_agp_binding *request)
129{
130 return -ENODEV;
131}
132
133#endif /* CONFIG_AGP */
134
135#endif /* _DRM_AGPSUPPORT_H_ */
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
12struct drm_device;
13struct drm_file;
14
15struct drm_agp_head {
16 struct agp_kern_info agp_info;
17 struct list_head memory;
18 unsigned long mode;
19 struct agp_bridge_data *bridge;
20 int enabled;
21 int acquired;
22 unsigned long base;
23 int agp_mtrr;
24 int cant_use_aperture;
25 unsigned long page_mask;
26};
27
28#if IS_ENABLED(CONFIG_AGP)
29
30void drm_free_agp(struct agp_memory * handle, int pages);
31int drm_bind_agp(struct agp_memory * handle, unsigned int start);
32int drm_unbind_agp(struct agp_memory * handle);
33struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
34 struct page **pages,
35 unsigned long num_pages,
36 uint32_t gtt_offset,
37 uint32_t type);
38
39struct drm_agp_head *drm_agp_init(struct drm_device *dev);
40void drm_legacy_agp_clear(struct drm_device *dev);
41int drm_agp_acquire(struct drm_device *dev);
42int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
43 struct drm_file *file_priv);
44int drm_agp_release(struct drm_device *dev);
45int drm_agp_release_ioctl(struct drm_device *dev, void *data,
46 struct drm_file *file_priv);
47int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
48int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
49 struct drm_file *file_priv);
50int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
51int drm_agp_info_ioctl(struct drm_device *dev, void *data,
52 struct drm_file *file_priv);
53int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
54int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
55 struct drm_file *file_priv);
56int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
57int drm_agp_free_ioctl(struct drm_device *dev, void *data,
58 struct drm_file *file_priv);
59int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
60int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
61 struct drm_file *file_priv);
62int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
63int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
64 struct drm_file *file_priv);
65
66#else /* CONFIG_AGP */
67
68static inline void drm_free_agp(struct agp_memory * handle, int pages)
69{
70}
71
72static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
73{
74 return -ENODEV;
75}
76
77static inline int drm_unbind_agp(struct agp_memory * handle)
78{
79 return -ENODEV;
80}
81
82static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
83 struct page **pages,
84 unsigned long num_pages,
85 uint32_t gtt_offset,
86 uint32_t type)
87{
88 return NULL;
89}
90
91static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
92{
93 return NULL;
94}
95
96static inline void drm_legacy_agp_clear(struct drm_device *dev)
97{
98}
99
100static inline int drm_agp_acquire(struct drm_device *dev)
101{
102 return -ENODEV;
103}
104
105static inline int drm_agp_release(struct drm_device *dev)
106{
107 return -ENODEV;
108}
109
110static inline int drm_agp_enable(struct drm_device *dev,
111 struct drm_agp_mode mode)
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_alloc(struct drm_device *dev,
123 struct drm_agp_buffer *request)
124{
125 return -ENODEV;
126}
127
128static inline int drm_agp_free(struct drm_device *dev,
129 struct drm_agp_buffer *request)
130{
131 return -ENODEV;
132}
133
134static inline int drm_agp_unbind(struct drm_device *dev,
135 struct drm_agp_binding *request)
136{
137 return -ENODEV;
138}
139
140static inline int drm_agp_bind(struct drm_device *dev,
141 struct drm_agp_binding *request)
142{
143 return -ENODEV;
144}
145
146#endif /* CONFIG_AGP */
147
148#endif /* _DRM_AGPSUPPORT_H_ */