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 13 struct drm_device; 14 struct drm_file; 15 16 struct 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 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, 35 struct page **pages, 36 unsigned long num_pages, 37 uint32_t gtt_offset, 38 uint32_t type); 39 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); 66 67 #else /* CONFIG_AGP */ 68 69 static inline void drm_free_agp(struct agp_memory * handle, int pages) 70 { 71 } 72 73 static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start) 74 { 75 return -ENODEV; 76 } 77 78 static inline int drm_unbind_agp(struct agp_memory * handle) 79 { 80 return -ENODEV; 81 } 82 83 static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev, 84 struct page **pages, 85 unsigned long num_pages, 86 uint32_t gtt_offset, 87 uint32_t type) 88 { 89 return NULL; 90 } 91 92 static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev) 93 { 94 return NULL; 95 } 96 97 static inline void drm_legacy_agp_clear(struct drm_device *dev) 98 { 99 } 100 101 static inline int drm_agp_acquire(struct drm_device *dev) 102 { 103 return -ENODEV; 104 } 105 106 static inline int drm_agp_release(struct drm_device *dev) 107 { 108 return -ENODEV; 109 } 110 111 static inline int drm_agp_enable(struct drm_device *dev, 112 struct drm_agp_mode mode) 113 { 114 return -ENODEV; 115 } 116 117 static inline int drm_agp_info(struct drm_device *dev, 118 struct drm_agp_info *info) 119 { 120 return -ENODEV; 121 } 122 123 static inline int drm_agp_alloc(struct drm_device *dev, 124 struct drm_agp_buffer *request) 125 { 126 return -ENODEV; 127 } 128 129 static inline int drm_agp_free(struct drm_device *dev, 130 struct drm_agp_buffer *request) 131 { 132 return -ENODEV; 133 } 134 135 static inline int drm_agp_unbind(struct drm_device *dev, 136 struct drm_agp_binding *request) 137 { 138 return -ENODEV; 139 } 140 141 static inline int drm_agp_bind(struct drm_device *dev, 142 struct drm_agp_binding *request) 143 { 144 return -ENODEV; 145 } 146 147 #endif /* CONFIG_AGP */ 148 149 #endif /* _DRM_AGPSUPPORT_H_ */ 150
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.