Allow DRM2 code to be built on platforms without AGP.
This patch is taken from original drm-3.8 code. Differential Revision: https://reviews.freebsd.org/D8454 MFC after: 3 weeks
This commit is contained in:
parent
53232c0d1d
commit
aa1f683bf3
@ -1204,17 +1204,6 @@ int drm_mmap_single(struct cdev *kdev, vm_ooffset_t *offset,
|
||||
vm_size_t size, struct vm_object **obj_res, int nprot);
|
||||
d_poll_t drm_poll;
|
||||
|
||||
/* Memory management support (drm_memory.h) */
|
||||
extern void drm_free_agp(DRM_AGP_MEM * handle, int pages);
|
||||
extern int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start);
|
||||
#ifdef FREEBSD_NOTYET
|
||||
extern DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev,
|
||||
struct page **pages,
|
||||
unsigned long num_pages,
|
||||
uint32_t gtt_offset,
|
||||
uint32_t type);
|
||||
#endif /* FREEBSD_NOTYET */
|
||||
extern int drm_unbind_agp(DRM_AGP_MEM * handle);
|
||||
|
||||
/* Misc. IOCTL support (drm_ioctl.h) */
|
||||
extern int drm_irq_by_busid(struct drm_device *dev, void *data,
|
||||
@ -1363,32 +1352,6 @@ extern void drm_vblank_post_modeset(struct drm_device *dev, int crtc);
|
||||
extern int drm_modeset_ctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* AGP/GART support (drm_agpsupport.h) */
|
||||
extern struct drm_agp_head *drm_agp_init(struct drm_device *dev);
|
||||
extern int drm_agp_acquire(struct drm_device *dev);
|
||||
extern int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_release(struct drm_device *dev);
|
||||
extern int drm_agp_release_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
|
||||
extern int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
|
||||
extern int drm_agp_info_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
|
||||
extern int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
|
||||
extern int drm_agp_free_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
|
||||
extern int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
|
||||
extern int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* Stub support (drm_stub.h) */
|
||||
extern int drm_setmaster_ioctl(struct drm_device *dev, void *data,
|
||||
@ -1814,5 +1777,175 @@ int ttm_bo_mmap_single(struct ttm_bo_device *bdev, vm_ooffset_t *offset,
|
||||
struct ttm_buffer_object;
|
||||
void ttm_bo_release_mmap(struct ttm_buffer_object *bo);
|
||||
|
||||
#if __OS_HAS_AGP
|
||||
/* Memory management support (drm_memory.h) */
|
||||
extern void drm_free_agp(DRM_AGP_MEM * handle, int pages);
|
||||
extern int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start);
|
||||
#ifdef FREEBSD_NOTYET
|
||||
extern DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev,
|
||||
struct page **pages,
|
||||
unsigned long num_pages,
|
||||
uint32_t gtt_offset,
|
||||
uint32_t type);
|
||||
#endif /* FREEBSD_NOTYET */
|
||||
extern int drm_unbind_agp(DRM_AGP_MEM * handle);
|
||||
|
||||
/* AGP/GART support (drm_agpsupport.h) */
|
||||
extern struct drm_agp_head *drm_agp_init(struct drm_device *dev);
|
||||
extern int drm_agp_acquire(struct drm_device *dev);
|
||||
extern int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_release(struct drm_device *dev);
|
||||
extern int drm_agp_release_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode);
|
||||
extern int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info);
|
||||
extern int drm_agp_info_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request);
|
||||
extern int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request);
|
||||
extern int drm_agp_free_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request);
|
||||
extern int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request);
|
||||
extern int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
#else
|
||||
|
||||
static inline void drm_free_agp(DRM_AGP_MEM * handle, int pages)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_unbind_agp(DRM_AGP_MEM * handle)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#ifdef FREEBSD_NOTYET
|
||||
static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev,
|
||||
struct page **pages,
|
||||
unsigned long num_pages,
|
||||
uint32_t gtt_offset,
|
||||
uint32_t type)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void drm_agp_clear(struct drm_device *dev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int drm_agp_acquire(struct drm_device *dev)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_release(struct drm_device *dev)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_enable(struct drm_device *dev,
|
||||
struct drm_agp_mode mode)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_info(struct drm_device *dev,
|
||||
struct drm_agp_info *info)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_alloc(struct drm_device *dev,
|
||||
struct drm_agp_buffer *request)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_free(struct drm_device *dev,
|
||||
struct drm_agp_buffer *request)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_unbind(struct drm_device *dev,
|
||||
struct drm_agp_binding *request)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_bind(struct drm_device *dev,
|
||||
struct drm_agp_binding *request)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int drm_agp_bind_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
#endif /* __OS_HAS_AGP */
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif
|
||||
|
@ -38,6 +38,8 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include <dev/drm2/drmP.h>
|
||||
|
||||
#define vunmap(handle)
|
||||
|
||||
#if __OS_HAS_AGP
|
||||
static void *agp_remap(unsigned long offset, unsigned long size,
|
||||
struct drm_device * dev)
|
||||
@ -50,8 +52,6 @@ static void *agp_remap(unsigned long offset, unsigned long size,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define vunmap(handle)
|
||||
|
||||
/** Wrapper around agp_free_memory() */
|
||||
void drm_free_agp(DRM_AGP_MEM * handle, int pages)
|
||||
{
|
||||
|
@ -347,6 +347,7 @@ dmi_check_system(const struct dmi_system_id *sysid)
|
||||
return (res);
|
||||
}
|
||||
|
||||
#if __OS_HAS_MTRR
|
||||
int
|
||||
drm_mtrr_add(unsigned long offset, unsigned long size, unsigned int flags)
|
||||
{
|
||||
@ -375,6 +376,7 @@ drm_mtrr_del(int handle __unused, unsigned long offset, unsigned long size,
|
||||
strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner));
|
||||
return (-mem_range_attr_set(&mrdesc, &act));
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
drm_clflush_pages(vm_page_t *pages, unsigned long num_pages)
|
||||
|
@ -592,8 +592,10 @@ typedef struct drm_pci_id_list
|
||||
#define CONFIG_COMPAT
|
||||
#endif
|
||||
|
||||
#ifndef __arm__
|
||||
#define CONFIG_AGP 1
|
||||
#define CONFIG_MTRR 1
|
||||
#endif
|
||||
|
||||
#define CONFIG_FB 1
|
||||
extern const char *fb_mode_option;
|
||||
|
@ -439,7 +439,8 @@ ttm_buffer_object_transfer(struct ttm_buffer_object *bo,
|
||||
vm_memattr_t
|
||||
ttm_io_prot(uint32_t caching_flags)
|
||||
{
|
||||
#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
|
||||
#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) || \
|
||||
defined(__arm__)
|
||||
if (caching_flags & TTM_PL_FLAG_WC)
|
||||
return (VM_MEMATTR_WRITE_COMBINING);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user