^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _DRM_AGPSUPPORT_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _DRM_AGPSUPPORT_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/agp_backend.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/kernel.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/list.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/mm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/mutex.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <uapi/drm/drm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct drm_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct drm_file;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct drm_agp_head {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) struct agp_kern_info agp_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) struct list_head memory;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) unsigned long mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct agp_bridge_data *bridge;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) int enabled;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) int acquired;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) unsigned long base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) int agp_mtrr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) int cant_use_aperture;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) unsigned long page_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #if IS_ENABLED(CONFIG_AGP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) void drm_free_agp(struct agp_memory * handle, int pages);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) int drm_bind_agp(struct agp_memory * handle, unsigned int start);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) int drm_unbind_agp(struct agp_memory * handle);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct drm_agp_head *drm_agp_init(struct drm_device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) void drm_legacy_agp_clear(struct drm_device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) int drm_agp_acquire(struct drm_device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) int drm_agp_release(struct drm_device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) int drm_agp_release_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) int drm_agp_info_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) int drm_agp_free_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) struct drm_file *file_priv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #else /* CONFIG_AGP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) static inline void drm_free_agp(struct agp_memory * handle, int pages)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) static inline int drm_bind_agp(struct agp_memory * handle, unsigned int start)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) static inline int drm_unbind_agp(struct agp_memory * handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) static inline void drm_legacy_agp_clear(struct drm_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) static inline int drm_agp_acquire(struct drm_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) static inline int drm_agp_release(struct drm_device *dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) static inline int drm_agp_enable(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) struct drm_agp_mode mode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) static inline int drm_agp_info(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) struct drm_agp_info *info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) static inline int drm_agp_alloc(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) struct drm_agp_buffer *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) static inline int drm_agp_free(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) struct drm_agp_buffer *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) static inline int drm_agp_unbind(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) struct drm_agp_binding *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) static inline int drm_agp_bind(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) struct drm_agp_binding *request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #endif /* CONFIG_AGP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #endif /* _DRM_AGPSUPPORT_H_ */