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);
|
vm_size_t size, struct vm_object **obj_res, int nprot);
|
||||||
d_poll_t drm_poll;
|
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) */
|
/* Misc. IOCTL support (drm_ioctl.h) */
|
||||||
extern int drm_irq_by_busid(struct drm_device *dev, void *data,
|
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,
|
extern int drm_modeset_ctl(struct drm_device *dev, void *data,
|
||||||
struct drm_file *file_priv);
|
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) */
|
/* Stub support (drm_stub.h) */
|
||||||
extern int drm_setmaster_ioctl(struct drm_device *dev, void *data,
|
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;
|
struct ttm_buffer_object;
|
||||||
void ttm_bo_release_mmap(struct ttm_buffer_object *bo);
|
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 /* __KERNEL__ */
|
||||||
#endif
|
#endif
|
||||||
|
@ -38,6 +38,8 @@ __FBSDID("$FreeBSD$");
|
|||||||
|
|
||||||
#include <dev/drm2/drmP.h>
|
#include <dev/drm2/drmP.h>
|
||||||
|
|
||||||
|
#define vunmap(handle)
|
||||||
|
|
||||||
#if __OS_HAS_AGP
|
#if __OS_HAS_AGP
|
||||||
static void *agp_remap(unsigned long offset, unsigned long size,
|
static void *agp_remap(unsigned long offset, unsigned long size,
|
||||||
struct drm_device * dev)
|
struct drm_device * dev)
|
||||||
@ -50,8 +52,6 @@ static void *agp_remap(unsigned long offset, unsigned long size,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define vunmap(handle)
|
|
||||||
|
|
||||||
/** Wrapper around agp_free_memory() */
|
/** Wrapper around agp_free_memory() */
|
||||||
void drm_free_agp(DRM_AGP_MEM * handle, int pages)
|
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);
|
return (res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if __OS_HAS_MTRR
|
||||||
int
|
int
|
||||||
drm_mtrr_add(unsigned long offset, unsigned long size, unsigned int flags)
|
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));
|
strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner));
|
||||||
return (-mem_range_attr_set(&mrdesc, &act));
|
return (-mem_range_attr_set(&mrdesc, &act));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
drm_clflush_pages(vm_page_t *pages, unsigned long num_pages)
|
drm_clflush_pages(vm_page_t *pages, unsigned long num_pages)
|
||||||
|
@ -592,8 +592,10 @@ typedef struct drm_pci_id_list
|
|||||||
#define CONFIG_COMPAT
|
#define CONFIG_COMPAT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __arm__
|
||||||
#define CONFIG_AGP 1
|
#define CONFIG_AGP 1
|
||||||
#define CONFIG_MTRR 1
|
#define CONFIG_MTRR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CONFIG_FB 1
|
#define CONFIG_FB 1
|
||||||
extern const char *fb_mode_option;
|
extern const char *fb_mode_option;
|
||||||
|
@ -439,7 +439,8 @@ ttm_buffer_object_transfer(struct ttm_buffer_object *bo,
|
|||||||
vm_memattr_t
|
vm_memattr_t
|
||||||
ttm_io_prot(uint32_t caching_flags)
|
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)
|
if (caching_flags & TTM_PL_FLAG_WC)
|
||||||
return (VM_MEMATTR_WRITE_COMBINING);
|
return (VM_MEMATTR_WRITE_COMBINING);
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user