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