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_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_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_ */ 149