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