]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - include/drm/drm_agpsupport.h
Merge remote-tracking branch 'drm/drm-next'
[karo-tx-linux.git] / include / drm / 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
12 struct drm_device;
13 struct drm_file;
14
15 struct 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
30 void drm_free_agp(struct agp_memory * handle, int pages);
31 int drm_bind_agp(struct agp_memory * handle, unsigned int start);
32 int drm_unbind_agp(struct agp_memory * handle);
33 struct 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
39 struct drm_agp_head *drm_agp_init(struct drm_device *dev);
40 void drm_agp_clear(struct drm_device *dev);
41 int drm_agp_acquire(struct drm_device *dev);
42 int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
43                           struct drm_file *file_priv);
44 int drm_agp_release(struct drm_device *dev);
45 int drm_agp_release_ioctl(struct drm_device *dev, void *data,
46                           struct drm_file *file_priv);
47 int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
48 int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
49                          struct drm_file *file_priv);
50 int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
51 int drm_agp_info_ioctl(struct drm_device *dev, void *data,
52                        struct drm_file *file_priv);
53 int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
54 int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
55                         struct drm_file *file_priv);
56 int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
57 int drm_agp_free_ioctl(struct drm_device *dev, void *data,
58                        struct drm_file *file_priv);
59 int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
60 int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
61                          struct drm_file *file_priv);
62 int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
63 int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
64                        struct drm_file *file_priv);
65
66 #else /* CONFIG_AGP */
67
68 static inline void drm_free_agp(struct agp_memory * handle, int pages)
69 {
70 }
71
72 static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
73 {
74         return -ENODEV;
75 }
76
77 static inline int drm_unbind_agp(struct agp_memory * handle)
78 {
79         return -ENODEV;
80 }
81
82 static 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
91 static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
92 {
93         return NULL;
94 }
95
96 static inline void drm_agp_clear(struct drm_device *dev)
97 {
98 }
99
100 static inline int drm_agp_acquire(struct drm_device *dev)
101 {
102         return -ENODEV;
103 }
104
105 static inline int drm_agp_release(struct drm_device *dev)
106 {
107         return -ENODEV;
108 }
109
110 static inline int drm_agp_enable(struct drm_device *dev,
111                                  struct drm_agp_mode mode)
112 {
113         return -ENODEV;
114 }
115
116 static inline int drm_agp_info(struct drm_device *dev,
117                                struct drm_agp_info *info)
118 {
119         return -ENODEV;
120 }
121
122 static inline int drm_agp_alloc(struct drm_device *dev,
123                                 struct drm_agp_buffer *request)
124 {
125         return -ENODEV;
126 }
127
128 static inline int drm_agp_free(struct drm_device *dev,
129                                struct drm_agp_buffer *request)
130 {
131         return -ENODEV;
132 }
133
134 static inline int drm_agp_unbind(struct drm_device *dev,
135                                  struct drm_agp_binding *request)
136 {
137         return -ENODEV;
138 }
139
140 static 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_ */