linux/include/drm/drm_agpsupport.h
<<
>>
Prefs
   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
  15#define __OS_HAS_AGP (defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && \
  16                                              defined(MODULE)))
  17
  18struct drm_agp_head {
  19        struct agp_kern_info agp_info;
  20        struct list_head memory;
  21        unsigned long mode;
  22        struct agp_bridge_data *bridge;
  23        int enabled;
  24        int acquired;
  25        unsigned long base;
  26        int agp_mtrr;
  27        int cant_use_aperture;
  28        unsigned long page_mask;
  29};
  30
  31#if __OS_HAS_AGP
  32
  33void drm_free_agp(struct agp_memory * handle, int pages);
  34int drm_bind_agp(struct agp_memory * handle, unsigned int start);
  35int drm_unbind_agp(struct agp_memory * handle);
  36struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
  37                                struct page **pages,
  38                                unsigned long num_pages,
  39                                uint32_t gtt_offset,
  40                                uint32_t type);
  41
  42struct drm_agp_head *drm_agp_init(struct drm_device *dev);
  43void drm_agp_clear(struct drm_device *dev);
  44int drm_agp_acquire(struct drm_device *dev);
  45int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
  46                          struct drm_file *file_priv);
  47int drm_agp_release(struct drm_device *dev);
  48int drm_agp_release_ioctl(struct drm_device *dev, void *data,
  49                          struct drm_file *file_priv);
  50int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
  51int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
  52                         struct drm_file *file_priv);
  53int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
  54int drm_agp_info_ioctl(struct drm_device *dev, void *data,
  55                       struct drm_file *file_priv);
  56int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
  57int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
  58                        struct drm_file *file_priv);
  59int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
  60int drm_agp_free_ioctl(struct drm_device *dev, void *data,
  61                       struct drm_file *file_priv);
  62int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
  63int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
  64                         struct drm_file *file_priv);
  65int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
  66int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
  67                       struct drm_file *file_priv);
  68
  69#else /* __OS_HAS_AGP */
  70
  71static inline void drm_free_agp(struct agp_memory * handle, int pages)
  72{
  73}
  74
  75static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
  76{
  77        return -ENODEV;
  78}
  79
  80static inline int drm_unbind_agp(struct agp_memory * handle)
  81{
  82        return -ENODEV;
  83}
  84
  85static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
  86                                              struct page **pages,
  87                                              unsigned long num_pages,
  88                                              uint32_t gtt_offset,
  89                                              uint32_t type)
  90{
  91        return NULL;
  92}
  93
  94static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
  95{
  96        return NULL;
  97}
  98
  99static inline void drm_agp_clear(struct drm_device *dev)
 100{
 101}
 102
 103static inline int drm_agp_acquire(struct drm_device *dev)
 104{
 105        return -ENODEV;
 106}
 107
 108static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
 109                                        struct drm_file *file_priv)
 110{
 111        return -ENODEV;
 112}
 113
 114static inline int drm_agp_release(struct drm_device *dev)
 115{
 116        return -ENODEV;
 117}
 118
 119static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data,
 120                                        struct drm_file *file_priv)
 121{
 122        return -ENODEV;
 123}
 124
 125static inline int drm_agp_enable(struct drm_device *dev,
 126                                 struct drm_agp_mode mode)
 127{
 128        return -ENODEV;
 129}
 130
 131static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
 132                                       struct drm_file *file_priv)
 133{
 134        return -ENODEV;
 135}
 136
 137static inline int drm_agp_info(struct drm_device *dev,
 138                               struct drm_agp_info *info)
 139{
 140        return -ENODEV;
 141}
 142
 143static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data,
 144                                     struct drm_file *file_priv)
 145{
 146        return -ENODEV;
 147}
 148
 149static inline int drm_agp_alloc(struct drm_device *dev,
 150                                struct drm_agp_buffer *request)
 151{
 152        return -ENODEV;
 153}
 154
 155static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
 156                                      struct drm_file *file_priv)
 157{
 158        return -ENODEV;
 159}
 160
 161static inline int drm_agp_free(struct drm_device *dev,
 162                               struct drm_agp_buffer *request)
 163{
 164        return -ENODEV;
 165}
 166
 167static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data,
 168                                     struct drm_file *file_priv)
 169{
 170        return -ENODEV;
 171}
 172
 173static inline int drm_agp_unbind(struct drm_device *dev,
 174                                 struct drm_agp_binding *request)
 175{
 176        return -ENODEV;
 177}
 178
 179static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
 180                                       struct drm_file *file_priv)
 181{
 182        return -ENODEV;
 183}
 184
 185static inline int drm_agp_bind(struct drm_device *dev,
 186                               struct drm_agp_binding *request)
 187{
 188        return -ENODEV;
 189}
 190
 191static inline int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
 192                                     struct drm_file *file_priv)
 193{
 194        return -ENODEV;
 195}
 196
 197#endif /* __OS_HAS_AGP */
 198
 199#endif /* _DRM_AGPSUPPORT_H_ */
 200