Subversion Repositories Kolibri OS

Rev

Rev 5270 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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